{"version":3,"sources":["vendor/ember-cli/app-prefix.js","tt4/adapters/-json-api.js","tt4/adapters/application.js","tt4/adapters/beta-clockcard.js","tt4/adapters/capi3.js","tt4/adapters/card.js","tt4/adapters/ccbutton.js","tt4/adapters/ccbuttonexecution.js","tt4/adapters/custom-export.js","tt4/adapters/dashboard-mobile.js","tt4/adapters/dashboard.js","tt4/adapters/form-adapter.js","tt4/adapters/form-field-setting.js","tt4/adapters/form-field.js","tt4/adapters/form-report-template.js","tt4/adapters/form-setting.js","tt4/adapters/form.js","tt4/adapters/help.js","tt4/adapters/my-site.js","tt4/adapters/report-template.js","tt4/adapters/rollocklog.js","tt4/adapters/row-setting.js","tt4/adapters/settings.js","tt4/adapters/ttapi-base.js","tt4/adapters/widget-anomalies-setting.js","tt4/adapters/workday-day.js","tt4/adapters/workday-overtime-rule.js","tt4/adapters/workday-week.js","tt4/app.js","tt4/authenticators/collector-auth.js","tt4/classes/collector.js","tt4/classes/localization.js","tt4/classes/validations.js","tt4/cldrs/en.js","tt4/cldrs/fi.js","tt4/cldrs/sv.js","tt4/component-managers/glimmer.js","tt4/components/-dynamic-element-alt.js","tt4/components/-dynamic-element.js","tt4/components/-ember-table-private/row-wrapper.js","tt4/components/-ember-table-private/simple-checkbox.js","tt4/components/addon/accordion.js","tt4/components/addon/accordion/item.ts","tt4/components/addon/bootstrap-container.js","tt4/components/addon/collector-error-message.ts","tt4/components/addon/date-range.ts","tt4/components/addon/field-container.ts","tt4/components/addon/fields/big-price.ts","tt4/components/addon/fields/checkbox.ts","tt4/components/addon/fields/checkboxgroup.ts","tt4/components/addon/fields/database-gps-force-field.ts","tt4/components/addon/fields/database.ts","tt4/components/addon/fields/databasearray.ts","tt4/components/addon/fields/date.ts","tt4/components/addon/fields/datetime.ts","tt4/components/addon/fields/decimal.js","tt4/components/addon/fields/dropdown-country.ts","tt4/components/addon/fields/dropdown-options.js","tt4/components/addon/fields/dropdown-userlevel.ts","tt4/components/addon/fields/dropdown-values.ts","tt4/components/addon/fields/gpslocation.ts","tt4/components/addon/fields/gpslocationmap.ts","tt4/components/addon/fields/hdfile.ts","tt4/components/addon/fields/hours.ts","tt4/components/addon/fields/minutes.ts","tt4/components/addon/fields/multiselect-after-options.js","tt4/components/addon/fields/multiselect.ts","tt4/components/addon/fields/not-supported.js","tt4/components/addon/fields/number.ts","tt4/components/addon/fields/password.ts","tt4/components/addon/fields/price.ts","tt4/components/addon/fields/radio.js","tt4/components/addon/fields/signature.ts","tt4/components/addon/fields/tag-input.ts","tt4/components/addon/fields/textarea-varchar.js","tt4/components/addon/fields/textarea.ts","tt4/components/addon/fields/textbox.ts","tt4/components/addon/fields/time.ts","tt4/components/addon/fields/timeclean-imei.ts","tt4/components/addon/fields/username.ts","tt4/components/addon/fields/weather.ts","tt4/components/addon/fields/work-permit-attachment.js","tt4/components/addon/form-add.ts","tt4/components/addon/form-add/buttons.js","tt4/components/addon/form-add/error.js","tt4/components/addon/form-add/fields.js","tt4/components/addon/form-add/saved.js","tt4/components/addon/form-report-filters.ts","tt4/components/addon/form-report.js","tt4/components/addon/form-report/action-bar.js","tt4/components/addon/form-report/actions.js","tt4/components/addon/form-report/add.js","tt4/components/addon/form-report/approve.js","tt4/components/addon/form-report/cell.js","tt4/components/addon/form-report/column-selector.js","tt4/components/addon/form-report/csv.js","tt4/components/addon/form-report/email-approval.js","tt4/components/addon/form-report/excel.js","tt4/components/addon/form-report/export-more.js","tt4/components/addon/form-report/export-pdf.js","tt4/components/addon/form-report/gps-location-map.js","tt4/components/addon/form-report/info.js","tt4/components/addon/form-report/inline-edit.js","tt4/components/addon/form-report/lock.js","tt4/components/addon/form-report/mass-edit.js","tt4/components/addon/form-report/more-row.js","tt4/components/addon/form-report/more.js","tt4/components/addon/form-report/no-content.js","tt4/components/addon/form-report/pdf-full.js","tt4/components/addon/form-report/pdf.js","tt4/components/addon/form-report/qr-code.js","tt4/components/addon/form-report/refresh.js","tt4/components/addon/form-report/remove.js","tt4/components/addon/form-report/report-template-selector.js","tt4/components/addon/form-report/row.js","tt4/components/addon/form-report/show-removed.js","tt4/components/addon/form-report/status.js","tt4/components/addon/form-report/table.js","tt4/components/addon/groupby-filter.ts","tt4/components/addon/icons/close.js","tt4/components/addon/loading-button.js","tt4/components/addon/modal.ts","tt4/components/addon/modal/body.js","tt4/components/addon/modal/footer.js","tt4/components/addon/modal/header.js","tt4/components/addon/pagi-nation.js","tt4/components/addon/party-parrot.ts","tt4/components/addon/report-template-wizard.js","tt4/components/addon/report-template-wizard/column-selector.js","tt4/components/addon/report-template-wizard/draggable-item.js","tt4/components/addon/report-template-wizard/filter-box.js","tt4/components/addon/report-template-wizard/page1.js","tt4/components/addon/report-template-wizard/page2.js","tt4/components/addon/report-template-wizard/page3.js","tt4/components/addon/report-template-wizard/page4.js","tt4/components/addon/value-format.ts","tt4/components/addon/wizard.ts","tt4/components/addon/wizard/buttons.ts","tt4/components/addon/wizard/content.js","tt4/components/addon/wizard/header.js","tt4/components/addon/wizard/steps.ts","tt4/components/address-info.js","tt4/components/all-clear-icon.js","tt4/components/api-report.js","tt4/components/area-chart.js","tt4/components/array-input.js","tt4/components/array-input2.js","tt4/components/bar-chart.js","tt4/components/basic-dropdown-content.js","tt4/components/basic-dropdown-optional-tag.js","tt4/components/basic-dropdown-trigger.js","tt4/components/basic-dropdown.js","tt4/components/billing-info.js","tt4/components/bootstrap-datepicker-inline.js","tt4/components/bootstrap-datepicker.js","tt4/components/bs-accordion.js","tt4/components/bs-accordion/item.js","tt4/components/bs-accordion/item/body.js","tt4/components/bs-accordion/item/title.js","tt4/components/bs-button-group.js","tt4/components/bs-button-group/button.js","tt4/components/bs-button.js","tt4/components/bs-collapse.js","tt4/components/bs-dropdown.js","tt4/components/bs-dropdown/button.js","tt4/components/bs-dropdown/menu.js","tt4/components/bs-dropdown/menu/divider.js","tt4/components/bs-dropdown/menu/item.js","tt4/components/bs-dropdown/menu/link-to.js","tt4/components/bs-dropdown/toggle.js","tt4/components/bs-modal.js","tt4/components/bs-modal/body.js","tt4/components/bs-modal/dialog.js","tt4/components/bs-modal/footer.js","tt4/components/bs-modal/header.js","tt4/components/bs-modal/header/close.js","tt4/components/bs-modal/header/title.js","tt4/components/cc-report.js","tt4/components/chart-comp.js","tt4/components/collector-field.js","tt4/components/copy-button.js","tt4/components/dash-board/widgets/timecard2.js","tt4/components/date-input.js","tt4/components/draggable_dropzone.js","tt4/components/draggable_item.js","tt4/components/drop-down-search-input.js","tt4/components/drop-down-search.js","tt4/components/drop-down.js","tt4/components/dump-dev.js","tt4/components/ember-modal-dialog-positioned-container.js","tt4/components/ember-modal-dialog/-basic-dialog.js","tt4/components/ember-modal-dialog/-in-place-dialog.js","tt4/components/ember-modal-dialog/-liquid-dialog.js","tt4/components/ember-modal-dialog/-liquid-tether-dialog.js","tt4/components/ember-modal-dialog/-tether-dialog.js","tt4/components/ember-popover.js","tt4/components/ember-popper-targeting-parent.js","tt4/components/ember-popper.js","tt4/components/ember-table.js","tt4/components/ember-tbody.js","tt4/components/ember-td.js","tt4/components/ember-tether.js","tt4/components/ember-tfoot.js","tt4/components/ember-th.js","tt4/components/ember-th/resize-handle.js","tt4/components/ember-th/sort-indicator.js","tt4/components/ember-thead.js","tt4/components/ember-tooltip.js","tt4/components/ember-tr.js","tt4/components/ember-wormhole.js","tt4/components/error-popup.js","tt4/components/export-selector-onselect.js","tt4/components/export-selector.js","tt4/components/fast-select.js","tt4/components/file-dropzone.js","tt4/components/file-upload.js","tt4/components/fileupload-preview.js","tt4/components/general-report-row.js","tt4/components/geo-chart.js","tt4/components/google-chart.js","tt4/components/gps-forced-dropdown.js","tt4/components/gps-location-map.js","tt4/components/gps-location.js","tt4/components/help-dialog.js","tt4/components/line-chart.js","tt4/components/loader-icon.js","tt4/components/mass-edit.js","tt4/components/maybe-in-element.js","tt4/components/menu-bar.js","tt4/components/message-board-forced.js","tt4/components/modal-array.js","tt4/components/modal-dialog.js","tt4/components/multi-buttons.js","tt4/components/notices-graph.js","tt4/components/notification-container.js","tt4/components/notification-message.js","tt4/components/object-input.js","tt4/components/pagi-nate.js","tt4/components/pie-chart.js","tt4/components/play-button.js","tt4/components/plus-menu.js","tt4/components/power-calendar-multiple.js","tt4/components/power-calendar-multiple/days.js","tt4/components/power-calendar-range.js","tt4/components/power-calendar-range/days.js","tt4/components/power-calendar.js","tt4/components/power-calendar/days.js","tt4/components/power-calendar/nav.js","tt4/components/power-select-multiple-with-create.js","tt4/components/power-select-multiple.js","tt4/components/power-select-multiple/trigger.js","tt4/components/power-select-with-create.js","tt4/components/power-select-with-create/suggested-option.js","tt4/components/power-select.js","tt4/components/power-select/before-options.js","tt4/components/power-select/no-matches-message.js","tt4/components/power-select/options.js","tt4/components/power-select/placeholder.js","tt4/components/power-select/power-select-group.js","tt4/components/power-select/search-message.js","tt4/components/power-select/trigger.js","tt4/components/project-help.js","tt4/components/project-info.js","tt4/components/promo-component.js","tt4/components/promo-messages.js","tt4/components/radio-button-input.js","tt4/components/radio-button.js","tt4/components/range-picker.js","tt4/components/record-comp-export.js","tt4/components/record-list.js","tt4/components/salary-period-adder.js","tt4/components/scatter-chart.js","tt4/components/select-comp.js","tt4/components/select-list.js","tt4/components/side-menu.js","tt4/components/sortable-group.js","tt4/components/sortable-handle.js","tt4/components/sortable-item.js","tt4/components/spin-button.js","tt4/components/spinner.js","tt4/components/stop-button.js","tt4/components/table-comp.js","tt4/components/tag-input.js","tt4/components/user-select.js","tt4/components/vertical-collection.js","tt4/components/week-report.js","tt4/components/x-toggle-label.js","tt4/components/x-toggle-switch.js","tt4/components/x-toggle.js","tt4/config.js","tt4/config/settings.js","tt4/controllers/application.js","tt4/controllers/array.js","tt4/controllers/changepassword.js","tt4/controllers/general-add.js","tt4/controllers/general-report.js","tt4/controllers/index.js","tt4/controllers/login.js","tt4/controllers/object.js","tt4/controllers/register/service.js","tt4/controllers/register/service/adddetails.js","tt4/controllers/register/service/amounts.js","tt4/controllers/register/service/done.js","tt4/controllers/register/service/products.js","tt4/controllers/saved.js","tt4/controllers/show.js","tt4/data-adapter.js","tt4/ember-gestures/recognizers/pan.js","tt4/ember-gestures/recognizers/pinch.js","tt4/ember-gestures/recognizers/press.js","tt4/ember-gestures/recognizers/rotate.js","tt4/ember-gestures/recognizers/swipe.js","tt4/ember-gestures/recognizers/tap.js","tt4/ember-gestures/recognizers/vertical-pan.js","tt4/ember-gestures/recognizers/vertical-swipe.js","tt4/ember-movenium/services/collector.ts","tt4/ember-movenium/services/error-handler.ts","tt4/ember-movenium/services/evented.ts","tt4/ember-movenium/services/forms.ts","tt4/ember-movenium/services/localstorage.ts","tt4/ember-movenium/services/need.ts","tt4/ember-movenium/utils/country.ts","tt4/ember-movenium/utils/file.ts","tt4/ember-movenium/utils/gui.ts","tt4/ember-movenium/utils/pdf-export.ts","tt4/ember-movenium/utils/save-the-children.ts","tt4/ember-movenium/utils/sort.ts","tt4/ember-movenium/utils/sumrow.ts","tt4/ember-movenium/utils/validations.ts","tt4/ember-movenium/utils/weather.ts","tt4/event_dispatcher.js","tt4/formats.js","tt4/helpers/$-gt.js","tt4/helpers/$-or.js","tt4/helpers/-clear-element.js","tt4/helpers/-element.js","tt4/helpers/add.js","tt4/helpers/and.js","tt4/helpers/api-image.js","tt4/helpers/app-version.js","tt4/helpers/append.js","tt4/helpers/assign.js","tt4/helpers/await.js","tt4/helpers/bs-contains.js","tt4/helpers/bs-eq.js","tt4/helpers/call.js","tt4/helpers/can-add-worktime.js","tt4/helpers/cancel-all.js","tt4/helpers/capitalize-translation.js","tt4/helpers/chunk.js","tt4/helpers/collector-field-list.js","tt4/helpers/collector-field-name.js","tt4/helpers/collector-field.js","tt4/helpers/collector-form-name.js","tt4/helpers/collector-format.js","tt4/helpers/collector-value-format.js","tt4/helpers/compact.js","tt4/helpers/compare-helper.js","tt4/helpers/compute.js","tt4/helpers/console-log.js","tt4/helpers/contains.js","tt4/helpers/country-flag.js","tt4/helpers/currency.js","tt4/helpers/currency_by_country.js","tt4/helpers/databasefield-options.js","tt4/helpers/date-diff.js","tt4/helpers/dec.js","tt4/helpers/dev-helper.js","tt4/helpers/drop.js","tt4/helpers/duration-clock.js","tt4/helpers/element.js","tt4/helpers/ember-power-calendar-day-classes.js","tt4/helpers/ember-power-select-is-group.js","tt4/helpers/ember-power-select-is-selected.js","tt4/helpers/ensure-safe-component.js","tt4/helpers/entries.js","tt4/helpers/eq.js","tt4/helpers/equal.js","tt4/helpers/file-queue.js","tt4/helpers/filter-by.js","tt4/helpers/filter.js","tt4/helpers/find-by.js","tt4/helpers/flag.js","tt4/helpers/flatten.js","tt4/helpers/format-date.js","tt4/helpers/format-hours.js","tt4/helpers/format-message.js","tt4/helpers/format-minutes.js","tt4/helpers/format-number.js","tt4/helpers/format-option.js","tt4/helpers/format-relative.js","tt4/helpers/format-time.js","tt4/helpers/from-entries.js","tt4/helpers/get-current-brand.js","tt4/helpers/group-by.js","tt4/helpers/gt.js","tt4/helpers/gte.js","tt4/helpers/has-next.js","tt4/helpers/has-permission.js","tt4/helpers/has-previous.js","tt4/helpers/highlight-helper.js","tt4/helpers/href-to.js","tt4/helpers/htmlsafe.ts","tt4/helpers/ignore-children.js","tt4/helpers/in-array.js","tt4/helpers/inc.js","tt4/helpers/includes.js","tt4/helpers/inline-text-2.js","tt4/helpers/inline-text.js","tt4/helpers/intersect.js","tt4/helpers/invoke.js","tt4/helpers/is-after.js","tt4/helpers/is-almost-equal.js","tt4/helpers/is-array.js","tt4/helpers/is-before.js","tt4/helpers/is-between.js","tt4/helpers/is-clipboard-supported.js","tt4/helpers/is-empty.js","tt4/helpers/is-equal-by-path.js","tt4/helpers/is-equal.js","tt4/helpers/is-fulfilled.js","tt4/helpers/is-last-element.js","tt4/helpers/is-not.js","tt4/helpers/is-nth.js","tt4/helpers/is-pending.js","tt4/helpers/is-rejected.js","tt4/helpers/is-same-or-after.js","tt4/helpers/is-same-or-before.js","tt4/helpers/is-same.js","tt4/helpers/is-sunday.js","tt4/helpers/is-weekend.js","tt4/helpers/join.js","tt4/helpers/json-stringify.js","tt4/helpers/keys.js","tt4/helpers/lt.js","tt4/helpers/lte.js","tt4/helpers/map-by.js","tt4/helpers/map.js","tt4/helpers/moment-add.js","tt4/helpers/moment-calendar.js","tt4/helpers/moment-diff.js","tt4/helpers/moment-duration.js","tt4/helpers/moment-format.js","tt4/helpers/moment-from-now.js","tt4/helpers/moment-from.js","tt4/helpers/moment-subtract.js","tt4/helpers/moment-to-date.js","tt4/helpers/moment-to-now.js","tt4/helpers/moment-to.js","tt4/helpers/moment-unix.js","tt4/helpers/moment.js","tt4/helpers/need.js","tt4/helpers/needs.js","tt4/helpers/next.js","tt4/helpers/noop.js","tt4/helpers/not-eq.js","tt4/helpers/not.js","tt4/helpers/now.js","tt4/helpers/number.js","tt4/helpers/object-at.js","tt4/helpers/object.js","tt4/helpers/on-document.js","tt4/helpers/on-window.js","tt4/helpers/on.js","tt4/helpers/optional.js","tt4/helpers/or.js","tt4/helpers/perform.js","tt4/helpers/pick.js","tt4/helpers/pipe-action.js","tt4/helpers/pipe.js","tt4/helpers/pluralize.js","tt4/helpers/power-calendar-format-date.js","tt4/helpers/previous.js","tt4/helpers/product.js","tt4/helpers/promise-all.js","tt4/helpers/promise-hash.js","tt4/helpers/promise-rejected-reason.js","tt4/helpers/purify-dom.js","tt4/helpers/query-helper.js","tt4/helpers/queue.js","tt4/helpers/random-mysite-image.js","tt4/helpers/randomize-color.js","tt4/helpers/range.js","tt4/helpers/read-path.js","tt4/helpers/reduce.js","tt4/helpers/reject-by.js","tt4/helpers/repeat.js","tt4/helpers/reverse.js","tt4/helpers/saldo-field-name.js","tt4/helpers/short-format.js","tt4/helpers/show-json.js","tt4/helpers/show-linefeeds.js","tt4/helpers/shuffle.js","tt4/helpers/singularize.js","tt4/helpers/slice.js","tt4/helpers/sort-by.js","tt4/helpers/sort-icon.js","tt4/helpers/sort.js","tt4/helpers/standard-icon.js","tt4/helpers/string-length.js","tt4/helpers/string-to-array.js","tt4/helpers/sum-field.js","tt4/helpers/svg-jar.js","tt4/helpers/t.js","tt4/helpers/take.js","tt4/helpers/task.js","tt4/helpers/to-array.js","tt4/helpers/toggle-action.js","tt4/helpers/toggle.js","tt4/helpers/translate-column.ts","tt4/helpers/union.js","tt4/helpers/unix.js","tt4/helpers/user-icon.js","tt4/helpers/user.js","tt4/helpers/utc.js","tt4/helpers/values.js","tt4/helpers/without.js","tt4/helpers/xor.js","tt4/initializers/add-modals-container.js","tt4/initializers/app-version.js","tt4/initializers/collector-service.js","tt4/initializers/component-styles.js","tt4/initializers/container-debug-adapter.js","tt4/initializers/csv.js","tt4/initializers/ember-cli-build-timestamp.js","tt4/initializers/ember-cli-mirage.js","tt4/initializers/ember-concurrency.js","tt4/initializers/ember-data-data-adapter.js","tt4/initializers/ember-data.js","tt4/initializers/ember-faker.js","tt4/initializers/ember-simple-auth.js","tt4/initializers/excel.js","tt4/initializers/export-application-global.js","tt4/initializers/googlemaps.js","tt4/initializers/load-bootstrap-config.js","tt4/initializers/metrics.js","tt4/initializers/user-agent.js","tt4/injections/services/analytics.js","tt4/injections/services/capi.js","tt4/injections/services/cdn.js","tt4/injections/services/collector-service.js","tt4/injections/services/collector.js","tt4/injections/services/error-handler.js","tt4/injections/services/evented.js","tt4/injections/services/forms.js","tt4/injections/services/initapp.js","tt4/injections/services/need.js","tt4/injections/services/sessionhelper.js","tt4/injections/services/surveys.js","tt4/injections/services/ttapi.js","tt4/instance-initializers/ember-data.js","tt4/instance-initializers/ember-gestures.js","tt4/instance-initializers/ember-href-to.js","tt4/instance-initializers/ember-simple-auth.js","tt4/instance-initializers/route-styles.js","tt4/locales/en/config.js","tt4/locales/en/translations.js","tt4/locales/fi/config.js","tt4/locales/fi/translations.js","tt4/locales/sv/config.js","tt4/locales/sv/translations.js","tt4/locales/xy/config.js","tt4/locales/xy/translations.js","tt4/metrics-adapters/firebase-analytics.js","tt4/mixins/avi.js","tt4/mixins/base-export.js","tt4/mixins/base-validation.js","tt4/mixins/clickelsewhere.js","tt4/mixins/collector-field.js","tt4/mixins/collector-validation.js","tt4/mixins/csv-export.js","tt4/mixins/export-file.js","tt4/mixins/filter-model.js","tt4/mixins/form-settings.js","tt4/mixins/general-report.js","tt4/mixins/get-back.js","tt4/mixins/init-controller.js","tt4/mixins/init-route.js","tt4/mixins/menu.js","tt4/mixins/pdf-export.js","tt4/mixins/product-post-add.js","tt4/mixins/reset-scroll.js","tt4/mixins/save-the-children.js","tt4/mixins/sitesafety-export.js","tt4/mixins/sitesafety-formatted-export.js","tt4/mixins/style-namespacing-extras.js","tt4/mixins/worksitediary_pdf.js","tt4/models/beta-clockcard.js","tt4/models/collector.js","tt4/models/company-info.js","tt4/models/custom-export.js","tt4/models/custom-inflector-rules.js","tt4/models/dashboard-mobile.js","tt4/models/dashboard.js","tt4/models/form-field-setting.js","tt4/models/form-field.js","tt4/models/form-report-template.js","tt4/models/form-setting.js","tt4/models/form.js","tt4/models/help.js","tt4/models/logo.js","tt4/models/messageboard.js","tt4/models/my-site.js","tt4/models/report-template.js","tt4/models/row-info.js","tt4/models/row-setting.js","tt4/models/user-activity-log.js","tt4/models/widget-anomalies-setting.js","tt4/modifiers/did-insert.js","tt4/modifiers/did-update.js","tt4/modifiers/focus-trap.js","tt4/modifiers/recognize-gesture.js","tt4/modifiers/ref.js","tt4/modifiers/sortable-group.js","tt4/modifiers/sortable-handle.js","tt4/modifiers/sortable-item.js","tt4/modifiers/style.js","tt4/modifiers/will-destroy.js","tt4/pods/abcenses/add-multiple/controller.js","tt4/pods/abcenses/add-multiple/route.js","tt4/pods/abcenses/add-multiple/template.js","tt4/pods/abcenses/add/abcense-record-comp/component.js","tt4/pods/abcenses/add/controller.js","tt4/pods/abcenses/add/route.js","tt4/pods/abcenses/add/template.js","tt4/pods/abcenses/edit/controller.js","tt4/pods/abcenses/edit/route.js","tt4/pods/abcenses/edit/template.js","tt4/pods/abcenses/gantt/controller.js","tt4/pods/abcenses/gantt/route.js","tt4/pods/abcenses/gantt/template.js","tt4/pods/abcenses/history/route.js","tt4/pods/abcenses/history/template.js","tt4/pods/abcenses/holiday-details-comp/component.js","tt4/pods/abcenses/holiday-details-comp/details-row-comp/component.js","tt4/pods/abcenses/holiday-details-comp/details-row-comp/template.js","tt4/pods/abcenses/holiday-details-comp/template.js","tt4/pods/abcenses/holidaypays/controller.js","tt4/pods/abcenses/holidaypays/route.js","tt4/pods/abcenses/holidaypays/template.js","tt4/pods/abcenses/holidays/controller.js","tt4/pods/abcenses/holidays/route.js","tt4/pods/abcenses/holidays/template.js","tt4/pods/abcenses/index/controller.js","tt4/pods/abcenses/index/route.js","tt4/pods/abcenses/index/template.js","tt4/pods/abcenses/loading/template.js","tt4/pods/abcenses/route.js","tt4/pods/abcenses/template.js","tt4/pods/admintool/billing/controller.js","tt4/pods/admintool/billing/route.js","tt4/pods/admintool/billing/template.js","tt4/pods/admintool/components/bill-comp/component.js","tt4/pods/admintool/components/bill-comp/template.js","tt4/pods/admintool/createservice/controller.js","tt4/pods/admintool/createservice/route.js","tt4/pods/admintool/createservice/template.js","tt4/pods/admintool/customer/charts/route.js","tt4/pods/admintool/customer/charts/template.js","tt4/pods/admintool/customer/controller.js","tt4/pods/admintool/customer/details/controller.js","tt4/pods/admintool/customer/details/route.js","tt4/pods/admintool/customer/details/template.js","tt4/pods/admintool/customer/devices/controller.js","tt4/pods/admintool/customer/devices/edit/controller.js","tt4/pods/admintool/customer/devices/edit/route.js","tt4/pods/admintool/customer/devices/edit/template.js","tt4/pods/admintool/customer/devices/route.js","tt4/pods/admintool/customer/devices/template.js","tt4/pods/admintool/customer/history/controller.js","tt4/pods/admintool/customer/history/route.js","tt4/pods/admintool/customer/history/template.js","tt4/pods/admintool/customer/overview/controller.js","tt4/pods/admintool/customer/overview/route.js","tt4/pods/admintool/customer/overview/template.js","tt4/pods/admintool/customer/reports/bills/controller.js","tt4/pods/admintool/customer/reports/bills/route.js","tt4/pods/admintool/customer/reports/bills/template.js","tt4/pods/admintool/customer/reports/controller.js","tt4/pods/admintool/customer/reports/route.js","tt4/pods/admintool/customer/reports/template.js","tt4/pods/admintool/customer/reports/users/controller.js","tt4/pods/admintool/customer/reports/users/route.js","tt4/pods/admintool/customer/reports/users/template.js","tt4/pods/admintool/customer/route.js","tt4/pods/admintool/customer/template.js","tt4/pods/admintool/customer/tt3tott4/controller.js","tt4/pods/admintool/customer/tt3tott4/route.js","tt4/pods/admintool/customer/tt3tott4/template.js","tt4/pods/admintool/reports/bi/controller.js","tt4/pods/admintool/reports/bi/findtimeclean/controller.js","tt4/pods/admintool/reports/bi/findtimeclean/template.js","tt4/pods/admintool/reports/bi/route.js","tt4/pods/admintool/reports/bi/template.js","tt4/pods/admintool/reports/bi/timecleanlog/controller.js","tt4/pods/admintool/reports/bi/timecleanlog/route.js","tt4/pods/admintool/reports/bi/timecleanlog/template.js","tt4/pods/admintool/reports/bi/timecleanlog/timeclean-row/component.js","tt4/pods/admintool/reports/bi/timecleanlog/timeclean-row/template.js","tt4/pods/admintool/reports/featureflags/controller.js","tt4/pods/admintool/reports/featureflags/route.js","tt4/pods/admintool/reports/featureflags/template.js","tt4/pods/admintool/route.js","tt4/pods/collector/add-modal/absence/component.js","tt4/pods/collector/add-modal/absence/template.js","tt4/pods/collector/add-modal/admintool/component.js","tt4/pods/collector/add-modal/card/component.js","tt4/pods/collector/add-modal/component.js","tt4/pods/collector/add-modal/presence/component.js","tt4/pods/collector/add-modal/template.js","tt4/pods/collector/add-modal/worktask/component.js","tt4/pods/collector/add-modal/worktime/component.js","tt4/pods/collector/add-modal/worktime/template.js","tt4/pods/collector/custom-filters-comp/component.js","tt4/pods/collector/custom-filters-comp/template.js","tt4/pods/collector/field-comp/component.js","tt4/pods/collector/field-comp/template.js","tt4/pods/collector/field-container/component.js","tt4/pods/collector/field-container/template.js","tt4/pods/collector/field-setting-comp/autokm-setting/component.js","tt4/pods/collector/field-setting-comp/autokm-setting/template.js","tt4/pods/collector/field-setting-comp/component.js","tt4/pods/collector/field-setting-comp/number-field/component.js","tt4/pods/collector/field-setting-comp/number-field/template.js","tt4/pods/collector/field-setting-comp/overtime-setting/component.js","tt4/pods/collector/field-setting-comp/overtime-setting/template.js","tt4/pods/collector/field-setting-comp/pause-setting/component.js","tt4/pods/collector/field-setting-comp/pause-setting/template.js","tt4/pods/collector/field-setting-comp/postpopulated-worktimes/component.js","tt4/pods/collector/field-setting-comp/postpopulated-worktimes/template.js","tt4/pods/collector/field-setting-comp/push-setting/component.js","tt4/pods/collector/field-setting-comp/push-setting/template.js","tt4/pods/collector/field-setting-comp/saldo-setting/component.js","tt4/pods/collector/field-setting-comp/saldo-setting/template.js","tt4/pods/collector/field-setting-comp/template.js","tt4/pods/collector/field-setting-comp/terms-setting/component.js","tt4/pods/collector/field-setting-comp/terms-setting/template.js","tt4/pods/collector/field-setting-comp/time-setting/component.js","tt4/pods/collector/field-setting-comp/time-setting/template.js","tt4/pods/collector/fields/base-field/component.js","tt4/pods/collector/fields/base-field/template.js","tt4/pods/collector/fields/checkbox-field/component.js","tt4/pods/collector/fields/checkbox-field/template.js","tt4/pods/collector/fields/checkboxgroup-field/component.js","tt4/pods/collector/fields/checkboxgroup-field/template.js","tt4/pods/collector/fields/database-field/component.js","tt4/pods/collector/fields/database-field/template.js","tt4/pods/collector/fields/database-gps-force-field/component.js","tt4/pods/collector/fields/database-gps-force-field/template.js","tt4/pods/collector/fields/databasearray-adder-field/component.js","tt4/pods/collector/fields/databasearray-adder-field/template.js","tt4/pods/collector/fields/databasearray-field/component.js","tt4/pods/collector/fields/databasearray-field/template.js","tt4/pods/collector/fields/date-field/component.js","tt4/pods/collector/fields/date-field/template.js","tt4/pods/collector/fields/datetime-field/component.js","tt4/pods/collector/fields/datetime-field/template.js","tt4/pods/collector/fields/dropdown-country-field/component.js","tt4/pods/collector/fields/dropdown-country-field/template.js","tt4/pods/collector/fields/dropdown-field/component.js","tt4/pods/collector/fields/dropdown-field/template.js","tt4/pods/collector/fields/dropdown-userlevel-field/component.js","tt4/pods/collector/fields/dropdown-userlevel-field/template.js","tt4/pods/collector/fields/fileupload-field-ver3/component.js","tt4/pods/collector/fields/fileupload-field-ver3/template.js","tt4/pods/collector/fields/gps-auto-km/component.js","tt4/pods/collector/fields/gps-auto-km/template.js","tt4/pods/collector/fields/gps-field/component.js","tt4/pods/collector/fields/gps-field/template.js","tt4/pods/collector/fields/hours-and-minutes-field/component.js","tt4/pods/collector/fields/hours-and-minutes-field/template.js","tt4/pods/collector/fields/label-field/component.js","tt4/pods/collector/fields/label-field/template.js","tt4/pods/collector/fields/month-dropdown-field/component.js","tt4/pods/collector/fields/month-dropdown-field/template.js","tt4/pods/collector/fields/multiselect-field/component.js","tt4/pods/collector/fields/multiselect-field/template.js","tt4/pods/collector/fields/number-field/component.js","tt4/pods/collector/fields/number-field/template.js","tt4/pods/collector/fields/password-field/component.js","tt4/pods/collector/fields/password-field/template.js","tt4/pods/collector/fields/power-database/component.js","tt4/pods/collector/fields/power-database/template.js","tt4/pods/collector/fields/radio-field/component.js","tt4/pods/collector/fields/radio-field/template.js","tt4/pods/collector/fields/search-field/component.js","tt4/pods/collector/fields/search-field/template.js","tt4/pods/collector/fields/signature-field/component.js","tt4/pods/collector/fields/signature-field/template.js","tt4/pods/collector/fields/status-field/component.js","tt4/pods/collector/fields/status-field/template.js","tt4/pods/collector/fields/tag-input-field/component.js","tt4/pods/collector/fields/tag-input-field/template.js","tt4/pods/collector/fields/text-field/component.js","tt4/pods/collector/fields/text-field/template.js","tt4/pods/collector/fields/textarea-field/component.js","tt4/pods/collector/fields/textarea-field/template.js","tt4/pods/collector/fields/time-field/component.js","tt4/pods/collector/fields/time-field/template.js","tt4/pods/collector/fields/timeclean-field/component.js","tt4/pods/collector/fields/timeclean-field/template.js","tt4/pods/collector/fields/timerlink-field/component.js","tt4/pods/collector/fields/timerlink-field/template.js","tt4/pods/collector/fields/toggle-field/component.js","tt4/pods/collector/fields/toggle-field/template.js","tt4/pods/collector/fields/username-field/component.js","tt4/pods/collector/fields/username-field/template.js","tt4/pods/collector/fields/weather-field/component.js","tt4/pods/collector/fields/weather-field/template.js","tt4/pods/collector/fields/work-permit-attachment/attachment-item/template.js","tt4/pods/collector/fields/work-permit-attachment/attachment-modal/attachments-section/template.js","tt4/pods/collector/fields/work-permit-attachment/attachment-modal/component.js","tt4/pods/collector/fields/work-permit-attachment/attachment-modal/modal-buttons/template.js","tt4/pods/collector/fields/work-permit-attachment/attachment-modal/template.js","tt4/pods/collector/fields/work-permit-attachment/component.js","tt4/pods/collector/fields/work-permit-attachment/confirm-modal/component.js","tt4/pods/collector/fields/work-permit-attachment/confirm-modal/template.js","tt4/pods/collector/fields/work-permit-attachment/template.js","tt4/pods/collector/fields/work-permit-attachment/vg-button/component.js","tt4/pods/collector/fields/work-permit-attachment/vg-button/template.js","tt4/pods/collector/filters-comp/component.js","tt4/pods/collector/filters-comp/template.js","tt4/pods/collector/form-add/buttons/component.js","tt4/pods/collector/form-add/buttons/template.js","tt4/pods/collector/form-add/component.js","tt4/pods/collector/form-add/error/template.js","tt4/pods/collector/form-add/field/component.js","tt4/pods/collector/form-add/field/template.js","tt4/pods/collector/form-add/fields/component.js","tt4/pods/collector/form-add/fields/template.js","tt4/pods/collector/form-add/forms/absence/component.js","tt4/pods/collector/form-add/forms/absence/template.js","tt4/pods/collector/form-add/forms/auto/component.js","tt4/pods/collector/form-add/forms/auto/template.js","tt4/pods/collector/form-add/forms/bankdeducter/component.js","tt4/pods/collector/form-add/forms/bankdeducter/template.js","tt4/pods/collector/form-add/forms/diary/component.js","tt4/pods/collector/form-add/forms/diary/template.js","tt4/pods/collector/form-add/forms/employer/component.js","tt4/pods/collector/form-add/forms/employer/template.js","tt4/pods/collector/form-add/forms/orientation/component.js","tt4/pods/collector/form-add/forms/orientation/template.js","tt4/pods/collector/form-add/forms/presence/component.js","tt4/pods/collector/form-add/forms/presence/template.js","tt4/pods/collector/form-add/forms/project/component.js","tt4/pods/collector/form-add/forms/project/template.js","tt4/pods/collector/form-add/forms/siteSafetyObservation/component.js","tt4/pods/collector/form-add/forms/siteSafetyObservation/template.js","tt4/pods/collector/form-add/forms/tooltype/component.js","tt4/pods/collector/form-add/forms/tooltype/template.js","tt4/pods/collector/form-add/forms/user/component.js","tt4/pods/collector/form-add/forms/user/template.js","tt4/pods/collector/form-add/forms/user/user-builder/component.js","tt4/pods/collector/form-add/forms/user/user-builder/template.js","tt4/pods/collector/form-add/forms/wageperiod/component.js","tt4/pods/collector/form-add/forms/wageperiod/template.js","tt4/pods/collector/form-add/forms/worksitediary/component.js","tt4/pods/collector/form-add/forms/worksitediary/template.js","tt4/pods/collector/form-add/forms/worktask/component.js","tt4/pods/collector/form-add/forms/worktask/template.js","tt4/pods/collector/form-add/forms/worktime/component.js","tt4/pods/collector/form-add/forms/worktime/template.js","tt4/pods/collector/form-add/forms/worktimegroupchange/component.js","tt4/pods/collector/form-add/forms/worktimegroupchange/pages/page1/component.js","tt4/pods/collector/form-add/forms/worktimegroupchange/pages/page1/template.js","tt4/pods/collector/form-add/forms/worktimegroupchange/pages/page2/template.js","tt4/pods/collector/form-add/forms/worktimegroupchange/pages/page3/component.js","tt4/pods/collector/form-add/forms/worktimegroupchange/pages/page3/template.js","tt4/pods/collector/form-add/forms/worktimegroupchange/template.js","tt4/pods/collector/form-add/saved/component.js","tt4/pods/collector/form-add/saved/template.js","tt4/pods/collector/form-add/template.js","tt4/pods/collector/form-add/template/component.js","tt4/pods/collector/form-add/template/subform/component.js","tt4/pods/collector/form-add/template/subform/template.js","tt4/pods/collector/form-add/template/template.js","tt4/pods/collector/form-modal/component.js","tt4/pods/collector/form-modal/template.js","tt4/pods/collector/form-report/action-bar/component.js","tt4/pods/collector/form-report/action-bar/template.js","tt4/pods/collector/form-report/actions/approve/component.js","tt4/pods/collector/form-report/actions/approve/template.js","tt4/pods/collector/form-report/actions/column-selector/component.js","tt4/pods/collector/form-report/actions/column-selector/template.js","tt4/pods/collector/form-report/actions/component.js","tt4/pods/collector/form-report/actions/export-more/component.js","tt4/pods/collector/form-report/actions/export-more/csv/component.js","tt4/pods/collector/form-report/actions/export-more/csv/template.js","tt4/pods/collector/form-report/actions/export-more/email-approval/component.js","tt4/pods/collector/form-report/actions/export-more/email-approval/template.js","tt4/pods/collector/form-report/actions/export-more/excel/component.js","tt4/pods/collector/form-report/actions/export-more/excel/template.js","tt4/pods/collector/form-report/actions/export-more/pdf-full/component.js","tt4/pods/collector/form-report/actions/export-more/pdf-full/template.js","tt4/pods/collector/form-report/actions/export-more/pdf/component.js","tt4/pods/collector/form-report/actions/export-more/pdf/template.js","tt4/pods/collector/form-report/actions/export-more/row/component.js","tt4/pods/collector/form-report/actions/export-more/row/template.js","tt4/pods/collector/form-report/actions/export-more/show-removed/component.js","tt4/pods/collector/form-report/actions/export-more/show-removed/template.js","tt4/pods/collector/form-report/actions/export-more/template.js","tt4/pods/collector/form-report/actions/export-pdf/component.js","tt4/pods/collector/form-report/actions/export-pdf/template.js","tt4/pods/collector/form-report/actions/gps-location-map/component.js","tt4/pods/collector/form-report/actions/gps-location-map/template.js","tt4/pods/collector/form-report/actions/inline-edit/component.js","tt4/pods/collector/form-report/actions/inline-edit/template.js","tt4/pods/collector/form-report/actions/more/component.js","tt4/pods/collector/form-report/actions/more/lock/component.js","tt4/pods/collector/form-report/actions/more/lock/template.js","tt4/pods/collector/form-report/actions/more/massedit/component.js","tt4/pods/collector/form-report/actions/more/massedit/template.js","tt4/pods/collector/form-report/actions/more/qr-code/component.js","tt4/pods/collector/form-report/actions/more/qr-code/template.js","tt4/pods/collector/form-report/actions/more/remove/component.js","tt4/pods/collector/form-report/actions/more/remove/template.js","tt4/pods/collector/form-report/actions/more/row/component.js","tt4/pods/collector/form-report/actions/more/row/template.js","tt4/pods/collector/form-report/actions/more/status/component.js","tt4/pods/collector/form-report/actions/more/status/template.js","tt4/pods/collector/form-report/actions/more/template.js","tt4/pods/collector/form-report/actions/refresh/component.js","tt4/pods/collector/form-report/actions/refresh/template.js","tt4/pods/collector/form-report/actions/template.js","tt4/pods/collector/form-report/add/component.js","tt4/pods/collector/form-report/add/template.js","tt4/pods/collector/form-report/cell/component.js","tt4/pods/collector/form-report/cell/template.js","tt4/pods/collector/form-report/component.js","tt4/pods/collector/form-report/ember-table/component.js","tt4/pods/collector/form-report/ember-table/template.js","tt4/pods/collector/form-report/filters/component.js","tt4/pods/collector/form-report/filters/template.js","tt4/pods/collector/form-report/no-content/component.js","tt4/pods/collector/form-report/no-content/template.js","tt4/pods/collector/form-report/template.js","tt4/pods/collector/history-comp/component.js","tt4/pods/collector/history-comp/template.js","tt4/pods/collector/history-modal/component.js","tt4/pods/collector/history-modal/template.js","tt4/pods/collector/image-modal/component.js","tt4/pods/collector/image-modal/template.js","tt4/pods/collector/linker-comp/component.js","tt4/pods/collector/linker-comp/template.js","tt4/pods/collector/nfc-comp/component.js","tt4/pods/collector/nfc-comp/template.js","tt4/pods/collector/record-comp/component.js","tt4/pods/collector/record-comp/template.js","tt4/pods/collector/record-custom-comp/component.js","tt4/pods/collector/record-custom-comp/template.js","tt4/pods/collector/record-view-comp/component.js","tt4/pods/collector/record-view-comp/template.js","tt4/pods/collector/report-comp/component.js","tt4/pods/collector/report-comp/template.js","tt4/pods/collector/rows-modal/component.js","tt4/pods/collector/rows-modal/template.js","tt4/pods/collector/setting-comp/component.js","tt4/pods/collector/setting-comp/template.js","tt4/pods/collector/value-format/component.js","tt4/pods/collector/value-format/template.js","tt4/pods/components/aggre-gated/component.js","tt4/pods/components/aggre-gated/rows/component.js","tt4/pods/components/aggre-gated/rows/template.js","tt4/pods/components/aggre-gated/template.js","tt4/pods/components/alarm-setter/component.js","tt4/pods/components/alarm-setter/template.js","tt4/pods/components/app-version-dialog/component.js","tt4/pods/components/app-version-dialog/template.js","tt4/pods/components/auto-modal/component.js","tt4/pods/components/auto-modal/content/component.js","tt4/pods/components/auto-modal/content/template.js","tt4/pods/components/auto-modal/open/component.js","tt4/pods/components/auto-modal/open/template.js","tt4/pods/components/auto-modal/template.js","tt4/pods/components/beta-toggle/template.js","tt4/pods/components/blocks-chart/component.js","tt4/pods/components/blocks-chart/template.js","tt4/pods/components/bootstrap-field/component.js","tt4/pods/components/bootstrap-field/template.js","tt4/pods/components/calendar-card-multi-day/component.js","tt4/pods/components/calendar-card-multi-day/content/component.js","tt4/pods/components/calendar-card-multi-day/content/template.js","tt4/pods/components/calendar-card-multi-day/template.js","tt4/pods/components/calendar-card-sum/component.js","tt4/pods/components/calendar-card-sum/template.js","tt4/pods/components/calendar-card-v2/component.js","tt4/pods/components/calendar-card-v2/template.js","tt4/pods/components/calendar-card/component.js","tt4/pods/components/calendar-card/template.js","tt4/pods/components/calendar-compact/component.js","tt4/pods/components/calendar-compact/days-header/component.js","tt4/pods/components/calendar-compact/days-header/template.js","tt4/pods/components/calendar-compact/months-header/component.js","tt4/pods/components/calendar-compact/months-header/template.js","tt4/pods/components/calendar-compact/row/cell/bar/component.js","tt4/pods/components/calendar-compact/row/cell/bar/template.js","tt4/pods/components/calendar-compact/row/cell/component.js","tt4/pods/components/calendar-compact/row/cell/long-bar/component.js","tt4/pods/components/calendar-compact/row/cell/long-bar/template.js","tt4/pods/components/calendar-compact/row/cell/plus-button/component.js","tt4/pods/components/calendar-compact/row/cell/plus-button/template.js","tt4/pods/components/calendar-compact/row/cell/popover-content-fields/component.js","tt4/pods/components/calendar-compact/row/cell/popover-content-fields/template.js","tt4/pods/components/calendar-compact/row/cell/template.js","tt4/pods/components/calendar-compact/row/component.js","tt4/pods/components/calendar-compact/row/template.js","tt4/pods/components/calendar-compact/row/title/component.js","tt4/pods/components/calendar-compact/row/title/template.js","tt4/pods/components/calendar-compact/template.js","tt4/pods/components/calendar-compact/weeks-header/component.js","tt4/pods/components/calendar-compact/weeks-header/template.js","tt4/pods/components/calendar-report-add-options/component.js","tt4/pods/components/calendar-report-add-options/template.js","tt4/pods/components/calendar-report-add/component.js","tt4/pods/components/calendar-report-add/template.js","tt4/pods/components/calendar-report-day/component.js","tt4/pods/components/calendar-report-day/template.js","tt4/pods/components/calendar-report/component.js","tt4/pods/components/calendar-report/template.js","tt4/pods/components/ccbutton/component.js","tt4/pods/components/ccbutton/template.js","tt4/pods/components/change-status/component.js","tt4/pods/components/change-status/template.js","tt4/pods/components/clockcard/clock/template.js","tt4/pods/components/clockcard/component.js","tt4/pods/components/clockcard/dining/template.js","tt4/pods/components/clockcard/edit/template.js","tt4/pods/components/clockcard/end/component.js","tt4/pods/components/clockcard/end/template.js","tt4/pods/components/clockcard/gps-indicator/template.js","tt4/pods/components/clockcard/pause/template.js","tt4/pods/components/clockcard/start/component.js","tt4/pods/components/clockcard/start/template.js","tt4/pods/components/clockcard/template.js","tt4/pods/components/company-info/component.js","tt4/pods/components/company-info/template.js","tt4/pods/components/competence-card/component.js","tt4/pods/components/competence-card/template.js","tt4/pods/components/custom-export-comp/component.js","tt4/pods/components/custom-export-comp/multi-select-amount/template.js","tt4/pods/components/custom-export-comp/order-by-select/template.js","tt4/pods/components/custom-export-comp/select-export/template.js","tt4/pods/components/custom-export-comp/template.js","tt4/pods/components/dash-board/base-widget/component.js","tt4/pods/components/dash-board/base-widget/template.js","tt4/pods/components/dash-board/component.js","tt4/pods/components/dash-board/empty-drop-zone/component.js","tt4/pods/components/dash-board/export/component.js","tt4/pods/components/dash-board/export/template.js","tt4/pods/components/dash-board/gantt/component.js","tt4/pods/components/dash-board/gantt/row-cell/component.js","tt4/pods/components/dash-board/gantt/row-cell/template.js","tt4/pods/components/dash-board/gantt/template.js","tt4/pods/components/dash-board/library/component.js","tt4/pods/components/dash-board/library/library-widget/component.js","tt4/pods/components/dash-board/library/library-widget/template.js","tt4/pods/components/dash-board/library/template.js","tt4/pods/components/dash-board/table/component.js","tt4/pods/components/dash-board/table/template.js","tt4/pods/components/dash-board/template.js","tt4/pods/components/dash-board/widget-spinner/component.js","tt4/pods/components/dash-board/widget-spinner/template.js","tt4/pods/components/dash-board/widgets/absence/component.js","tt4/pods/components/dash-board/widgets/absence/template.js","tt4/pods/components/dash-board/widgets/absentees/component.js","tt4/pods/components/dash-board/widgets/absentees/template.js","tt4/pods/components/dash-board/widgets/anomalities/component.js","tt4/pods/components/dash-board/widgets/anomalities/missing-worktimes/component.js","tt4/pods/components/dash-board/widgets/anomalities/missing-worktimes/template.js","tt4/pods/components/dash-board/widgets/anomalities/saldo/component.js","tt4/pods/components/dash-board/widgets/anomalities/saldo/template.js","tt4/pods/components/dash-board/widgets/anomalities/settings/abcense/component.js","tt4/pods/components/dash-board/widgets/anomalities/settings/abcense/template.js","tt4/pods/components/dash-board/widgets/anomalities/settings/common/common.js","tt4/pods/components/dash-board/widgets/anomalities/settings/component.js","tt4/pods/components/dash-board/widgets/anomalities/settings/ending-passes/component.js","tt4/pods/components/dash-board/widgets/anomalities/settings/ending-passes/template.js","tt4/pods/components/dash-board/widgets/anomalities/settings/missing-worktimes/component.js","tt4/pods/components/dash-board/widgets/anomalities/settings/missing-worktimes/template.js","tt4/pods/components/dash-board/widgets/anomalities/settings/template.js","tt4/pods/components/dash-board/widgets/anomalities/settings/unapproved-worktimes/component.js","tt4/pods/components/dash-board/widgets/anomalities/settings/unapproved-worktimes/template.js","tt4/pods/components/dash-board/widgets/anomalities/taxman-errors/component.js","tt4/pods/components/dash-board/widgets/anomalities/taxman-errors/template.js","tt4/pods/components/dash-board/widgets/anomalities/template.js","tt4/pods/components/dash-board/widgets/bank/component.js","tt4/pods/components/dash-board/widgets/bank/template.js","tt4/pods/components/dash-board/widgets/custom-help/component.js","tt4/pods/components/dash-board/widgets/custom-help/template.js","tt4/pods/components/dash-board/widgets/holiday/component.js","tt4/pods/components/dash-board/widgets/holiday/template.js","tt4/pods/components/dash-board/widgets/my-sites/component.js","tt4/pods/components/dash-board/widgets/my-sites/project-info/component.js","tt4/pods/components/dash-board/widgets/my-sites/project-info/template.js","tt4/pods/components/dash-board/widgets/my-sites/site-card/component.js","tt4/pods/components/dash-board/widgets/my-sites/site-card/template.js","tt4/pods/components/dash-board/widgets/my-sites/template.js","tt4/pods/components/dash-board/widgets/promo-messages/component.js","tt4/pods/components/dash-board/widgets/promo-messages/template.js","tt4/pods/components/dash-board/widgets/salary-sum/component.js","tt4/pods/components/dash-board/widgets/salary-sum/template.js","tt4/pods/components/dash-board/widgets/saldo/component.js","tt4/pods/components/dash-board/widgets/saldo/template.js","tt4/pods/components/dash-board/widgets/timecard/clock/template.js","tt4/pods/components/dash-board/widgets/timecard/component.js","tt4/pods/components/dash-board/widgets/timecard/edit-button/template.js","tt4/pods/components/dash-board/widgets/timecard/edit/template.js","tt4/pods/components/dash-board/widgets/timecard/end/template.js","tt4/pods/components/dash-board/widgets/timecard/gps-indicator/template.js","tt4/pods/components/dash-board/widgets/timecard/start/template.js","tt4/pods/components/dash-board/widgets/timecard/template.js","tt4/pods/components/dash-board/widgets/tv-status/component.js","tt4/pods/components/dash-board/widgets/tv-status/template.js","tt4/pods/components/dash-board/widgets/working-now/component.js","tt4/pods/components/dash-board/widgets/working-now/template.js","tt4/pods/components/dash-board/widgets/worktime-add/component.js","tt4/pods/components/dash-board/widgets/worktime-add/template.js","tt4/pods/components/dash-board/widgets/worktime-calendar/component.js","tt4/pods/components/dash-board/widgets/worktime-calendar/template.js","tt4/pods/components/database-multiple-filter/component.js","tt4/pods/components/database-multiple-filter/template.js","tt4/pods/components/date-range-picker/component.js","tt4/pods/components/date-range-picker/template.js","tt4/pods/components/du-de/component.js","tt4/pods/components/du-de/template.js","tt4/pods/components/error-message/component.js","tt4/pods/components/error-message/template.js","tt4/pods/components/export-modal/component.js","tt4/pods/components/export-modal/template.js","tt4/pods/components/famoco-editor/component.js","tt4/pods/components/famoco-editor/template.js","tt4/pods/components/fast-exporter/component.js","tt4/pods/components/fast-exporter/template.js","tt4/pods/components/field-info-bubble/component.ts","tt4/pods/components/field-info-bubble/template.js","tt4/pods/components/fields/time-minutes/component.js","tt4/pods/components/fields/time-minutes/template.js","tt4/pods/components/file-picker/component.js","tt4/pods/components/file-picker/template.js","tt4/pods/components/file-queue-notification/component.js","tt4/pods/components/file-queue-notification/template.js","tt4/pods/components/form-column-selector/component.js","tt4/pods/components/form-column-selector/template.js","tt4/pods/components/form-modal/component.js","tt4/pods/components/form-modal/template.js","tt4/pods/components/formeditor-rawsettings/component.js","tt4/pods/components/formeditor-rawsettings/template.js","tt4/pods/components/gauge-chart/component.js","tt4/pods/components/gauge-chart/template.js","tt4/pods/components/general-report/component.js","tt4/pods/components/general-report/template.js","tt4/pods/components/google-map/component.js","tt4/pods/components/google-map/template.js","tt4/pods/components/gps-auto-km/component.js","tt4/pods/components/gps-auto-km/template.js","tt4/pods/components/gps-icon/component.js","tt4/pods/components/gps-icon/template.js","tt4/pods/components/group-by-filter/component.js","tt4/pods/components/group-by-filter/template.js","tt4/pods/components/hamburger-menu/component.js","tt4/pods/components/hamburger-menu/template.js","tt4/pods/components/help-bubble-icon/component.js","tt4/pods/components/help-bubble-icon/template.js","tt4/pods/components/horizontal-field/component.js","tt4/pods/components/horizontal-field/template.js","tt4/pods/components/inline-edit-row/cell/component.js","tt4/pods/components/inline-edit-row/cell/template.js","tt4/pods/components/inline-edit-row/component.js","tt4/pods/components/inline-edit-row/template.js","tt4/pods/components/inline-edit/component.js","tt4/pods/components/inline-edit/template.js","tt4/pods/components/integration-info-popup/component.js","tt4/pods/components/integration-info-popup/template.js","tt4/pods/components/integration-settings/component.js","tt4/pods/components/integration-settings/fondion-settings/component.js","tt4/pods/components/integration-settings/fondion-settings/template.js","tt4/pods/components/integration-settings/nova-settings/component.js","tt4/pods/components/integration-settings/nova-settings/template.js","tt4/pods/components/integration-settings/payroll-settings/component.js","tt4/pods/components/integration-settings/payroll-settings/template.js","tt4/pods/components/integration-settings/template.js","tt4/pods/components/integrations-report/component.js","tt4/pods/components/integrations-report/template.js","tt4/pods/components/machine-map/component.js","tt4/pods/components/machine-map/template.js","tt4/pods/components/mobile-welcome-tour/component.js","tt4/pods/components/mobile-welcome-tour/template.js","tt4/pods/components/nice-modal/component.js","tt4/pods/components/nice-modal/template.js","tt4/pods/components/off-line/component.js","tt4/pods/components/off-line/template.js","tt4/pods/components/orientations/add-passes/component.js","tt4/pods/components/orientations/add-passes/template.js","tt4/pods/components/orientations/select-users/component.js","tt4/pods/components/orientations/select-users/template.js","tt4/pods/components/phone-number/component.js","tt4/pods/components/phone-number/template.js","tt4/pods/components/presence-clockcard/component.js","tt4/pods/components/presence-clockcard/template.js","tt4/pods/components/product-card/component.js","tt4/pods/components/product-card/template.js","tt4/pods/components/profile-modal/component.js","tt4/pods/components/profile-modal/template.js","tt4/pods/components/project-files/component.js","tt4/pods/components/project-files/template.js","tt4/pods/components/project-icon/component.js","tt4/pods/components/project-icon/template.js","tt4/pods/components/promo-ad/component.js","tt4/pods/components/promo-ad/template.js","tt4/pods/components/qr-code-generator/component.js","tt4/pods/components/qr-code-generator/template.js","tt4/pods/components/qrcode-reader/component.js","tt4/pods/components/qrcode-reader/template.js","tt4/pods/components/react/component.js","tt4/pods/components/react/template.js","tt4/pods/components/report-filters-v2/component.js","tt4/pods/components/report-filters-v2/template.js","tt4/pods/components/report-filters/component.js","tt4/pods/components/report-filters/template.js","tt4/pods/components/report-order/component.js","tt4/pods/components/report-order/template.js","tt4/pods/components/report-placeholder/component.js","tt4/pods/components/report-placeholder/template.js","tt4/pods/components/report-template-selector/component.js","tt4/pods/components/report-template-selector/template.js","tt4/pods/components/route-worktime-salary-category/component.js","tt4/pods/components/route-worktime-salary-category/template.js","tt4/pods/components/salary-category/component.js","tt4/pods/components/salary-category/salarytype-selector/component.js","tt4/pods/components/salary-category/salarytype-selector/template.js","tt4/pods/components/salary-category/settings/component.js","tt4/pods/components/salary-category/settings/template.js","tt4/pods/components/salary-category/summary/component.js","tt4/pods/components/salary-category/summary/template.js","tt4/pods/components/salary-category/table/component.js","tt4/pods/components/salary-category/table/edit/component.js","tt4/pods/components/salary-category/table/edit/template.js","tt4/pods/components/salary-category/table/header/anomaly/component.js","tt4/pods/components/salary-category/table/header/anomaly/template.js","tt4/pods/components/salary-category/table/header/component.js","tt4/pods/components/salary-category/table/header/template.js","tt4/pods/components/salary-category/table/row/component.js","tt4/pods/components/salary-category/table/row/template.js","tt4/pods/components/salary-category/table/template.js","tt4/pods/components/salary-category/table/week-table/component.js","tt4/pods/components/salary-category/table/week-table/template.js","tt4/pods/components/salary-category/template.js","tt4/pods/components/salary-periods-add/component.js","tt4/pods/components/salary-periods-add/many-periods/component.js","tt4/pods/components/salary-periods-add/many-periods/template.js","tt4/pods/components/salary-periods-add/single-periods/component.js","tt4/pods/components/salary-periods-add/single-periods/template.js","tt4/pods/components/salary-periods-add/submenu/component.js","tt4/pods/components/salary-periods-add/submenu/template.js","tt4/pods/components/salary-periods-add/template.js","tt4/pods/components/saldo-insights/component.js","tt4/pods/components/saldo-insights/saldo-insights-details/component.js","tt4/pods/components/saldo-insights/saldo-insights-details/template.js","tt4/pods/components/saldo-insights/saldo-insights-row/component.js","tt4/pods/components/saldo-insights/saldo-insights-row/template.js","tt4/pods/components/saldo-insights/template.js","tt4/pods/components/search-box/component.js","tt4/pods/components/search-box/template.js","tt4/pods/components/signature-modal/component.js","tt4/pods/components/signature-modal/template.js","tt4/pods/components/skeleton-component/component.js","tt4/pods/components/skeleton-component/template.js","tt4/pods/components/standard-icon-popover/component.js","tt4/pods/components/standard-icon-popover/template.js","tt4/pods/components/subtle-notifications/component.js","tt4/pods/components/subtle-notifications/template.js","tt4/pods/components/suggested-option/template.js","tt4/pods/components/sum-report/component.js","tt4/pods/components/sum-report/template.js","tt4/pods/components/tab-component/component.js","tt4/pods/components/tab-component/template.js","tt4/pods/components/term-inator/component.js","tt4/pods/components/term-inator/template.js","tt4/pods/components/test-typescript/component.ts","tt4/pods/components/test-typescript/template.js","tt4/pods/components/top-menu/component.js","tt4/pods/components/top-menu/template.js","tt4/pods/components/trial-period-icon/component.js","tt4/pods/components/trial-period-icon/template.js","tt4/pods/components/upgrade-icon/component.js","tt4/pods/components/upgrade-icon/template.js","tt4/pods/components/user-competences/card/component.js","tt4/pods/components/user-competences/card/template.js","tt4/pods/components/user-competences/component.js","tt4/pods/components/user-competences/template.js","tt4/pods/components/user-deletion/component.js","tt4/pods/components/user-deletion/template.js","tt4/pods/components/user-icon2/component.js","tt4/pods/components/user-icon2/template.js","tt4/pods/components/user-selector/component.js","tt4/pods/components/user-selector/template.js","tt4/pods/components/vismanet-signin/component.js","tt4/pods/components/vismanet-signin/template.js","tt4/pods/components/vismanet-sync/component.js","tt4/pods/components/vismanet-sync/template.js","tt4/pods/components/weather-component/component.js","tt4/pods/components/weather-component/template.js","tt4/pods/components/webhook-editor/component.js","tt4/pods/components/webhook-editor/template.js","tt4/pods/components/webhook-list/component.js","tt4/pods/components/webhook-list/template.js","tt4/pods/components/webhook-list/webhook/component.js","tt4/pods/components/webhook-list/webhook/template.js","tt4/pods/components/webhook-log/component.js","tt4/pods/components/webhook-log/row/component.js","tt4/pods/components/webhook-log/row/template.js","tt4/pods/components/webhook-log/template.js","tt4/pods/components/week-report2/component.js","tt4/pods/components/week-report2/template.js","tt4/pods/components/wizard-builder/billing/component.js","tt4/pods/components/wizard-builder/billing/page1/component.js","tt4/pods/components/wizard-builder/billing/page1/template.js","tt4/pods/components/wizard-builder/billing/page2/component.js","tt4/pods/components/wizard-builder/billing/page2/template.js","tt4/pods/components/wizard-builder/billing/template.js","tt4/pods/components/wizard-builder/component.js","tt4/pods/components/wizard-builder/dashboard-info-wizard/component.js","tt4/pods/components/wizard-builder/dashboard-info-wizard/page/component.js","tt4/pods/components/wizard-builder/dashboard-info-wizard/page/template.js","tt4/pods/components/wizard-builder/dashboard-info-wizard/template.js","tt4/pods/components/wizard-builder/help-wizard/component.js","tt4/pods/components/wizard-builder/help-wizard/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/radio-group/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/radio-group/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/setting-list/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/setting-list/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/setting-value-input/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/setting-value-input/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/header/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/header/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/row/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/row/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/info-button/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/info-button/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/text/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/text/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/toggle/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/toggle/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/header-icon/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/header-icon/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/header-text/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/header-text/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/header-title/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/header-title/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/flex-header/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/flex-header/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/mini-modal/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/mini-modal/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/onboarding-wizard-page/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/components/onboarding-wizard-page/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/summary/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/summary/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/component.js","tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.js","tt4/pods/components/wizard-builder/onboarding-wizard/template.js","tt4/pods/components/wizard-builder/template.js","tt4/pods/components/wizard-builder/test-wizard/component.js","tt4/pods/components/wizard-builder/test-wizard/page1/component.js","tt4/pods/components/wizard-builder/test-wizard/page1/template.js","tt4/pods/components/wizard-builder/test-wizard/page2/component.js","tt4/pods/components/wizard-builder/test-wizard/page2/template.js","tt4/pods/components/wizard-builder/test-wizard/template.js","tt4/pods/components/wizard-builder/vismanet-wizard/component.js","tt4/pods/components/wizard-builder/vismanet-wizard/page1/component.js","tt4/pods/components/wizard-builder/vismanet-wizard/page1/template.js","tt4/pods/components/wizard-builder/vismanet-wizard/page2/component.js","tt4/pods/components/wizard-builder/vismanet-wizard/page2/template.js","tt4/pods/components/wizard-builder/vismanet-wizard/page3/component.js","tt4/pods/components/wizard-builder/vismanet-wizard/page3/template.js","tt4/pods/components/wizard-builder/vismanet-wizard/template.js","tt4/pods/components/wizard-builder/welcome-wizard/component.js","tt4/pods/components/wizard-builder/welcome-wizard/template.js","tt4/pods/components/wizard-builder/wizard/buttons/component.js","tt4/pods/components/wizard-builder/wizard/buttons/template.js","tt4/pods/components/wizard-builder/wizard/centered-content/component.js","tt4/pods/components/wizard-builder/wizard/centered-content/template.js","tt4/pods/components/wizard-builder/wizard/component.js","tt4/pods/components/wizard-builder/wizard/content-header/component.js","tt4/pods/components/wizard-builder/wizard/content-header/template.js","tt4/pods/components/wizard-builder/wizard/content/component.js","tt4/pods/components/wizard-builder/wizard/content/template.js","tt4/pods/components/wizard-builder/wizard/steps/component.js","tt4/pods/components/wizard-builder/wizard/steps/template.js","tt4/pods/components/wizard-builder/wizard/template.js","tt4/pods/components/wootric-survey/component.js","tt4/pods/components/wootric-survey/template.js","tt4/pods/components/workday-days/component.js","tt4/pods/components/workday-days/template.js","tt4/pods/components/workday-summary/add-component/component.js","tt4/pods/components/workday-summary/add-component/template.js","tt4/pods/components/workday-summary/component.js","tt4/pods/components/workday-summary/copy-component/component.js","tt4/pods/components/workday-summary/copy-component/template.js","tt4/pods/components/workday-summary/copy-previous-day-component/component.js","tt4/pods/components/workday-summary/copy-previous-day-component/copy-previous-day-final-component/component.js","tt4/pods/components/workday-summary/copy-previous-day-component/copy-previous-day-final-component/template.js","tt4/pods/components/workday-summary/copy-previous-day-component/copy-previous-day-intermediate-component/component.js","tt4/pods/components/workday-summary/copy-previous-day-component/copy-previous-day-intermediate-component/template.js","tt4/pods/components/workday-summary/copy-previous-day-component/template.js","tt4/pods/components/workday-summary/edit-component/component.js","tt4/pods/components/workday-summary/edit-component/template.js","tt4/pods/components/workday-summary/template.js","tt4/pods/components/workpermit-modal/component.js","tt4/pods/components/workpermit-modal/template.js","tt4/pods/components/worksite-areas-report/logs/component.js","tt4/pods/components/worksite-areas-report/logs/template.js","tt4/pods/components/worksite-areas-report/passes/component.js","tt4/pods/components/worksite-areas-report/passes/template.js","tt4/pods/dashboard/controller.js","tt4/pods/dashboard/route.js","tt4/pods/dashboard/template.js","tt4/pods/development/cron/controller.js","tt4/pods/development/cron/route.js","tt4/pods/development/cron/template.js","tt4/pods/development/datacreator/route.js","tt4/pods/development/datacreator/template.js","tt4/pods/development/functions/controller.js","tt4/pods/development/functions/route.js","tt4/pods/development/functions/template.js","tt4/pods/development/import/controller.js","tt4/pods/development/import/create/controller.js","tt4/pods/development/import/create/route.js","tt4/pods/development/import/create/template.js","tt4/pods/development/import/field-mapper/component.js","tt4/pods/development/import/field-mapper/template.js","tt4/pods/development/import/file-reader/component.js","tt4/pods/development/import/file-reader/template.js","tt4/pods/development/import/index/controller.js","tt4/pods/development/import/index/route.js","tt4/pods/development/import/index/template.js","tt4/pods/development/import/map/controller.js","tt4/pods/development/import/map/route.js","tt4/pods/development/import/map/template.js","tt4/pods/development/import/route.js","tt4/pods/development/import/save/route.js","tt4/pods/development/import/save/template.js","tt4/pods/development/import/template.js","tt4/pods/development/import/value-mapper/component.js","tt4/pods/development/import/value-mapper/template.js","tt4/pods/development/index/controller.js","tt4/pods/development/index/route.js","tt4/pods/development/index/template.js","tt4/pods/development/integrations/controller.js","tt4/pods/development/integrations/route.js","tt4/pods/development/integrations/template.js","tt4/pods/development/notifications/component.js","tt4/pods/development/notifications/log-table/component.js","tt4/pods/development/notifications/log-table/template.js","tt4/pods/development/notifications/template.js","tt4/pods/development/ownreports/controller.js","tt4/pods/development/ownreports/route.js","tt4/pods/development/ownreports/template.js","tt4/pods/development/ownroles/controller.js","tt4/pods/development/ownroles/role/controller.js","tt4/pods/development/ownroles/role/route.js","tt4/pods/development/ownroles/role/template.js","tt4/pods/development/ownroles/route.js","tt4/pods/development/ownroles/template.js","tt4/pods/development/products/controller.js","tt4/pods/development/products/route.js","tt4/pods/development/products/template.js","tt4/pods/development/react/route.js","tt4/pods/development/react/template.js","tt4/pods/development/rollock/controller.js","tt4/pods/development/rollock/event-name/component.js","tt4/pods/development/rollock/event-name/template.js","tt4/pods/development/rollock/template.js","tt4/pods/development/route.js","tt4/pods/development/servicevalidator/controller.js","tt4/pods/development/servicevalidator/route.js","tt4/pods/development/servicevalidator/template.js","tt4/pods/development/smslogs/smslogs-table/component.js","tt4/pods/development/smslogs/smslogs-table/template.js","tt4/pods/development/smslogs/template.js","tt4/pods/development/template.js","tt4/pods/diary/calendar/controller.js","tt4/pods/diary/calendar/route.js","tt4/pods/diary/calendar/template.js","tt4/pods/diary/combo/controller.js","tt4/pods/diary/combo/route.js","tt4/pods/diary/combo/template.js","tt4/pods/diary/database-array/component.js","tt4/pods/diary/database-array/template.js","tt4/pods/diary/events/controller.js","tt4/pods/diary/events/route.js","tt4/pods/diary/events/template.js","tt4/pods/diary/index/controller.js","tt4/pods/diary/index/route.js","tt4/pods/diary/index/template.js","tt4/pods/diary/loading/template.js","tt4/pods/diary/report/controller.js","tt4/pods/diary/report/date/controller.js","tt4/pods/diary/report/date/loading/template.js","tt4/pods/diary/report/date/project/controller.js","tt4/pods/diary/report/date/project/route.js","tt4/pods/diary/report/date/project/template.js","tt4/pods/diary/report/date/route.js","tt4/pods/diary/report/date/template.js","tt4/pods/diary/report/route.js","tt4/pods/diary/report/template.js","tt4/pods/diary/route.js","tt4/pods/drivinglog/edit/controller.js","tt4/pods/drivinglog/edit/route.js","tt4/pods/drivinglog/edit/template.js","tt4/pods/drivinglog/index/controller.js","tt4/pods/drivinglog/index/route.js","tt4/pods/drivinglog/index/template.js","tt4/pods/drivinglog/toggle/confirm/controller.js","tt4/pods/drivinglog/toggle/confirm/template.js","tt4/pods/drivinglog/toggle/index/controller.js","tt4/pods/drivinglog/toggle/index/route.js","tt4/pods/drivinglog/toggle/index/template.js","tt4/pods/employers/add/controller.js","tt4/pods/employers/add/emp_id/template.js","tt4/pods/employers/add/emp_phone/template.js","tt4/pods/employers/add/route.js","tt4/pods/employers/add/template.js","tt4/pods/employers/add/tilaajavastuu/template.js","tt4/pods/employers/check/controller.js","tt4/pods/employers/check/route.js","tt4/pods/employers/check/template.js","tt4/pods/employers/edit/add-file/controller.js","tt4/pods/employers/edit/add-file/route.js","tt4/pods/employers/edit/add-file/template.js","tt4/pods/employers/edit/controller.js","tt4/pods/employers/edit/employer-files/controller.js","tt4/pods/employers/edit/employer-files/route.js","tt4/pods/employers/edit/employer-files/template.js","tt4/pods/employers/edit/index/controller.js","tt4/pods/employers/edit/index/route.js","tt4/pods/employers/edit/index/template.js","tt4/pods/employers/edit/route.js","tt4/pods/employers/edit/template.js","tt4/pods/employers/history/route.js","tt4/pods/employers/history/template.js","tt4/pods/employers/inactive/controller.js","tt4/pods/employers/inactive/route.js","tt4/pods/employers/inactive/template.js","tt4/pods/employers/index/controller.js","tt4/pods/employers/index/route.js","tt4/pods/employers/index/template.js","tt4/pods/employers/loading/template.js","tt4/pods/employers/removed/controller.js","tt4/pods/employers/removed/route.js","tt4/pods/employers/removed/template.js","tt4/pods/employers/route.js","tt4/pods/employers/saved/controller.js","tt4/pods/employers/saved/route.js","tt4/pods/employers/saved/template.js","tt4/pods/employers/tree/route.js","tt4/pods/employers/tree/template.js","tt4/pods/error/controller.js","tt4/pods/error/template.js","tt4/pods/firecards/add/controller.js","tt4/pods/firecards/add/route.js","tt4/pods/firecards/add/template.js","tt4/pods/firecards/edit/controller.js","tt4/pods/firecards/edit/route.js","tt4/pods/firecards/edit/template.js","tt4/pods/firecards/index/controller.js","tt4/pods/firecards/index/route.js","tt4/pods/firecards/index/template.js","tt4/pods/form-wizard/component.js","tt4/pods/form-wizard/custom-measurement/component.js","tt4/pods/form-wizard/custom-measurement/template.js","tt4/pods/form-wizard/template.js","tt4/pods/forms/controller.js","tt4/pods/forms/custom-report/route.js","tt4/pods/forms/custom-report/template.js","tt4/pods/forms/customer/edit/controller.js","tt4/pods/forms/customer/edit/route.js","tt4/pods/forms/customer/edit/template.js","tt4/pods/forms/customer/record-comp/component.js","tt4/pods/forms/form-add/controller.js","tt4/pods/forms/form-add/route.js","tt4/pods/forms/form-add/template.js","tt4/pods/forms/form-edit/controller.js","tt4/pods/forms/form-edit/route.js","tt4/pods/forms/form-edit/template.js","tt4/pods/forms/form-history/route.js","tt4/pods/forms/form-history/template.js","tt4/pods/forms/form-report/controller.js","tt4/pods/forms/form-report/route.js","tt4/pods/forms/form-report/template.js","tt4/pods/forms/form-view/controller.js","tt4/pods/forms/form-view/route.js","tt4/pods/forms/form-view/template.js","tt4/pods/forms/information/route.js","tt4/pods/forms/information/template.js","tt4/pods/forms/route.js","tt4/pods/forms/template.js","tt4/pods/gpslocation/controller.js","tt4/pods/gpslocation/route.js","tt4/pods/gpslocation/template.js","tt4/pods/groups/controller.js","tt4/pods/groups/route.js","tt4/pods/groups/template.js","tt4/pods/integrations/fondionerrors/route.js","tt4/pods/integrations/fondionerrors/template.js","tt4/pods/integrations/index/route.js","tt4/pods/integrations/index/template.js","tt4/pods/integrations/list/route.js","tt4/pods/integrations/list/template.js","tt4/pods/integrations/report/route.js","tt4/pods/integrations/report/template.js","tt4/pods/integrations/route.js","tt4/pods/integrations/template.js","tt4/pods/invite-users/controller.js","tt4/pods/invite-users/route.js","tt4/pods/invite-users/template.js","tt4/pods/logout/route.js","tt4/pods/logout/template.js","tt4/pods/machines/machine/controller.js","tt4/pods/machines/machine/route.js","tt4/pods/machines/machine/template.js","tt4/pods/machines/map/controller.js","tt4/pods/machines/map/route.js","tt4/pods/machines/map/template.js","tt4/pods/machines/prices/controller.js","tt4/pods/machines/prices/route.js","tt4/pods/machines/prices/template.js","tt4/pods/machines/route.js","tt4/pods/machines/transaction/add/controller.js","tt4/pods/machines/transaction/add/route.js","tt4/pods/machines/transaction/add/template.js","tt4/pods/machines/transaction/controller.js","tt4/pods/machines/transaction/move/controller.js","tt4/pods/machines/transaction/move/route.js","tt4/pods/machines/transaction/move/template.js","tt4/pods/machines/transaction/project/controller.js","tt4/pods/machines/transaction/project/selected/controller.js","tt4/pods/machines/transaction/project/selected/route.js","tt4/pods/machines/transaction/project/selected/template.js","tt4/pods/machines/transaction/project/selected/tool-group/component.js","tt4/pods/machines/transaction/project/selected/tool-group/template.js","tt4/pods/machines/transaction/project/selected/tool-item/component.js","tt4/pods/machines/transaction/project/selected/tool-item/template.js","tt4/pods/machines/transaction/project/template.js","tt4/pods/machines/transaction/template.js","tt4/pods/machines/transaction/tooltype/controller.js","tt4/pods/machines/transaction/tooltype/selected/controller.js","tt4/pods/machines/transaction/tooltype/selected/route.js","tt4/pods/machines/transaction/tooltype/selected/template.js","tt4/pods/machines/transaction/tooltype/template.js","tt4/pods/machines/transactions-history/controller.js","tt4/pods/machines/transactions-history/route.js","tt4/pods/machines/transactions-history/template.js","tt4/pods/machines/transactions/controller.js","tt4/pods/machines/transactions/route.js","tt4/pods/machines/transactions/template.js","tt4/pods/mapon/controller.js","tt4/pods/mapon/route.js","tt4/pods/mapon/template.js","tt4/pods/materiallog/groups/controller.js","tt4/pods/materiallog/groups/route.js","tt4/pods/materiallog/groups/template.js","tt4/pods/materiallog/list/controller.js","tt4/pods/materiallog/list/route.js","tt4/pods/materiallog/list/template.js","tt4/pods/materiallog/loading/template.js","tt4/pods/materiallog/report/controller.js","tt4/pods/materiallog/report/route.js","tt4/pods/materiallog/report/template.js","tt4/pods/materiallog/route.js","tt4/pods/mess-ages/component.ts","tt4/pods/mess-ages/template.js","tt4/pods/mess-ages/types/link-request/component.ts","tt4/pods/mess-ages/types/link-request/template.js","tt4/pods/mess-ages/types/message/component.ts","tt4/pods/mess-ages/types/message/template.js","tt4/pods/mess-ages/types/messageboard/component.ts","tt4/pods/mess-ages/types/messageboard/template.js","tt4/pods/mess-ages/types/promo/component.ts","tt4/pods/mess-ages/types/promo/template.js","tt4/pods/mess-ages/types/superior-replacement/component.ts","tt4/pods/mess-ages/types/superior-replacement/template.js","tt4/pods/mess-ages/types/taxman-validations/component.ts","tt4/pods/mess-ages/types/taxman-validations/template.js","tt4/pods/mess-ages/types/user-consent/component.ts","tt4/pods/mess-ages/types/user-consent/template.js","tt4/pods/messageboard/add/controller.js","tt4/pods/messageboard/add/template.js","tt4/pods/messageboard/history/route.js","tt4/pods/messageboard/history/template.js","tt4/pods/messageboard/index/controller.js","tt4/pods/messageboard/index/route.js","tt4/pods/messageboard/index/template.js","tt4/pods/messageboard/route.js","tt4/pods/messageboard/template.js","tt4/pods/messages/add/index/controller.js","tt4/pods/messages/add/index/route.js","tt4/pods/messages/add/index/template.js","tt4/pods/messages/add/message/controller.js","tt4/pods/messages/add/message/route.js","tt4/pods/messages/add/message/template.js","tt4/pods/messages/email-approvals/controller.js","tt4/pods/messages/email-approvals/route.js","tt4/pods/messages/email-approvals/template.js","tt4/pods/messages/list/controller.js","tt4/pods/messages/list/route.js","tt4/pods/messages/list/template.js","tt4/pods/messages/route.js","tt4/pods/multitask/loading/template.js","tt4/pods/multitask/report/controller.js","tt4/pods/multitask/report/route.js","tt4/pods/multitask/report/template.js","tt4/pods/multitask/route.js","tt4/pods/my-sites/add-image-component/component.js","tt4/pods/my-sites/add-image-component/template.js","tt4/pods/my-sites/controller.js","tt4/pods/my-sites/route.js","tt4/pods/my-sites/select-project/component.js","tt4/pods/my-sites/site-card/component.js","tt4/pods/my-sites/site-card/template.js","tt4/pods/my-sites/template.js","tt4/pods/nova-costcenters/route.js","tt4/pods/nova-costcenters/template.js","tt4/pods/orientations/add/add-passes/controller.js","tt4/pods/orientations/add/add-passes/template.js","tt4/pods/orientations/add/checkboxes/controller.js","tt4/pods/orientations/add/checkboxes/route.js","tt4/pods/orientations/add/checkboxes/template.js","tt4/pods/orientations/add/confirm/controller.js","tt4/pods/orientations/add/confirm/route.js","tt4/pods/orientations/add/confirm/template.js","tt4/pods/orientations/add/controller.js","tt4/pods/orientations/add/index/controller.js","tt4/pods/orientations/add/index/route.js","tt4/pods/orientations/add/index/template.js","tt4/pods/orientations/add/parent-selector/component.js","tt4/pods/orientations/add/parent-selector/template.js","tt4/pods/orientations/add/parent/controller.js","tt4/pods/orientations/add/parent/route.js","tt4/pods/orientations/add/parent/template.js","tt4/pods/orientations/add/route.js","tt4/pods/orientations/add/saved/controller.js","tt4/pods/orientations/add/saved/route.js","tt4/pods/orientations/add/saved/template.js","tt4/pods/orientations/add/signatures/controller.js","tt4/pods/orientations/add/signatures/route.js","tt4/pods/orientations/add/signatures/template.js","tt4/pods/orientations/add/sub/route.js","tt4/pods/orientations/add/template.js","tt4/pods/orientations/edit/route.js","tt4/pods/orientations/edit/template.js","tt4/pods/orientations/employeetree/controller.js","tt4/pods/orientations/employeetree/route.js","tt4/pods/orientations/employeetree/template.js","tt4/pods/orientations/history/route.js","tt4/pods/orientations/history/template.js","tt4/pods/orientations/inactive-passes/controller.js","tt4/pods/orientations/inactive-passes/route.js","tt4/pods/orientations/inactive-passes/template.js","tt4/pods/orientations/loading/template.js","tt4/pods/orientations/own-orientation/controller.js","tt4/pods/orientations/own-orientation/route.js","tt4/pods/orientations/own-orientation/template.js","tt4/pods/orientations/passes/controller.js","tt4/pods/orientations/passes/route.js","tt4/pods/orientations/passes/sync-timeclean-modal/component.js","tt4/pods/orientations/passes/sync-timeclean-modal/template.js","tt4/pods/orientations/passes/template.js","tt4/pods/orientations/reports/controller.js","tt4/pods/orientations/reports/route.js","tt4/pods/orientations/reports/template.js","tt4/pods/orientations/route.js","tt4/pods/orientations/template.js","tt4/pods/orientations/withoutori/controller.js","tt4/pods/orientations/withoutori/route.js","tt4/pods/orientations/withoutori/template.js","tt4/pods/pass/add/controller.js","tt4/pods/pass/add/route.js","tt4/pods/pass/add/template.js","tt4/pods/pass/index/controller.js","tt4/pods/pass/index/route.js","tt4/pods/pass/index/template.js","tt4/pods/pass/route.js","tt4/pods/password/index/controller.js","tt4/pods/password/index/route.js","tt4/pods/password/index/template.js","tt4/pods/password/recovery/controller.js","tt4/pods/password/recovery/route.js","tt4/pods/password/recovery/template.js","tt4/pods/password/route.js","tt4/pods/password/template.js","tt4/pods/presences/accident/controller.js","tt4/pods/presences/accident/route.js","tt4/pods/presences/accident/template.js","tt4/pods/presences/add/controller.js","tt4/pods/presences/add/route.js","tt4/pods/presences/add/template.js","tt4/pods/presences/avi/controller.js","tt4/pods/presences/avi/route.js","tt4/pods/presences/edit/controller.js","tt4/pods/presences/edit/route.js","tt4/pods/presences/edit/template.js","tt4/pods/presences/employer-sums/controller.js","tt4/pods/presences/employer-sums/route.js","tt4/pods/presences/employer-sums/template.js","tt4/pods/presences/history/route.js","tt4/pods/presences/history/template.js","tt4/pods/presences/index/controller.js","tt4/pods/presences/index/route.js","tt4/pods/presences/index/template.js","tt4/pods/presences/loading/template.js","tt4/pods/presences/location/controller.js","tt4/pods/presences/location/route.js","tt4/pods/presences/location/template.js","tt4/pods/presences/locationtree/controller.js","tt4/pods/presences/locationtree/route.js","tt4/pods/presences/locationtree/template.js","tt4/pods/presences/report/controller.js","tt4/pods/presences/report/route.js","tt4/pods/presences/report/template.js","tt4/pods/presences/route.js","tt4/pods/projects/add/controller.js","tt4/pods/projects/add/phone/template.js","tt4/pods/projects/add/route.js","tt4/pods/projects/add/skv_number/template.js","tt4/pods/projects/add/template.js","tt4/pods/projects/edit/add-file/controller.js","tt4/pods/projects/edit/add-file/route.js","tt4/pods/projects/edit/add-file/template.js","tt4/pods/projects/edit/card-list/controller.js","tt4/pods/projects/edit/card-list/route.js","tt4/pods/projects/edit/card-list/template.js","tt4/pods/projects/edit/contract_report/controller.js","tt4/pods/projects/edit/contract_report/template.js","tt4/pods/projects/edit/controller.js","tt4/pods/projects/edit/greenboxes/controller.js","tt4/pods/projects/edit/greenboxes/route.js","tt4/pods/projects/edit/greenboxes/template.js","tt4/pods/projects/edit/index/controller.js","tt4/pods/projects/edit/index/route.js","tt4/pods/projects/edit/index/template.js","tt4/pods/projects/edit/linked-users/controller.js","tt4/pods/projects/edit/linked-users/route.js","tt4/pods/projects/edit/linked-users/template.js","tt4/pods/projects/edit/loading/template.js","tt4/pods/projects/edit/notices/controller.js","tt4/pods/projects/edit/notices/route.js","tt4/pods/projects/edit/notices/template.js","tt4/pods/projects/edit/open-worktimes/controller.js","tt4/pods/projects/edit/open-worktimes/route.js","tt4/pods/projects/edit/open-worktimes/template.js","tt4/pods/projects/edit/overview/controller.js","tt4/pods/projects/edit/overview/route.js","tt4/pods/projects/edit/overview/template.js","tt4/pods/projects/edit/passes/controller.js","tt4/pods/projects/edit/passes/route.js","tt4/pods/projects/edit/passes/template.js","tt4/pods/projects/edit/project-files/controller.js","tt4/pods/projects/edit/project-files/route.js","tt4/pods/projects/edit/project-files/template.js","tt4/pods/projects/edit/project-users/controller.js","tt4/pods/projects/edit/project-users/route.js","tt4/pods/projects/edit/project-users/template.js","tt4/pods/projects/edit/rollocks/controller.js","tt4/pods/projects/edit/rollocks/route.js","tt4/pods/projects/edit/rollocks/template.js","tt4/pods/projects/edit/route.js","tt4/pods/projects/edit/subprojects/controller.js","tt4/pods/projects/edit/subprojects/route.js","tt4/pods/projects/edit/subprojects/template.js","tt4/pods/projects/edit/tasks/controller.js","tt4/pods/projects/edit/tasks/route.js","tt4/pods/projects/edit/tasks/template.js","tt4/pods/projects/edit/taxmanerrors/controller.js","tt4/pods/projects/edit/taxmanerrors/route.js","tt4/pods/projects/edit/taxmanerrors/template.js","tt4/pods/projects/edit/template.js","tt4/pods/projects/edit/trnotices/controller.js","tt4/pods/projects/edit/trnotices/route.js","tt4/pods/projects/edit/trnotices/template.js","tt4/pods/projects/edit/tv-status/controller.js","tt4/pods/projects/edit/tv-status/route.js","tt4/pods/projects/edit/tv-status/template.js","tt4/pods/projects/edit/working-now/controller.js","tt4/pods/projects/edit/working-now/route.js","tt4/pods/projects/edit/working-now/template.js","tt4/pods/projects/history/route.js","tt4/pods/projects/history/template.js","tt4/pods/projects/inactive-loading/template.js","tt4/pods/projects/inactive/controller.js","tt4/pods/projects/inactive/route.js","tt4/pods/projects/inactive/template.js","tt4/pods/projects/index/controller.js","tt4/pods/projects/index/route.js","tt4/pods/projects/index/template.js","tt4/pods/projects/loading/template.js","tt4/pods/projects/magickey/controller.js","tt4/pods/projects/magickey/route.js","tt4/pods/projects/magickey/template.js","tt4/pods/projects/removed/controller.js","tt4/pods/projects/removed/route.js","tt4/pods/projects/removed/template.js","tt4/pods/projects/report/controller.js","tt4/pods/projects/report/route.js","tt4/pods/projects/report/template.js","tt4/pods/projects/rfiddevices/controller.js","tt4/pods/projects/rfiddevices/route.js","tt4/pods/projects/rfiddevices/template.js","tt4/pods/projects/route.js","tt4/pods/projects/saved/controller.js","tt4/pods/projects/saved/route.js","tt4/pods/projects/saved/template.js","tt4/pods/projects/tasks/controller.js","tt4/pods/projects/tasks/route.js","tt4/pods/projects/tasks/template.js","tt4/pods/projects/template.js","tt4/pods/qrcode/controller.js","tt4/pods/qrcode/route.js","tt4/pods/qrcode/template.js","tt4/pods/register/controller.js","tt4/pods/register/index/route.js","tt4/pods/register/index/template.js","tt4/pods/register/route.js","tt4/pods/register/template.js","tt4/pods/register/user/code/route.js","tt4/pods/register/user/code/template.js","tt4/pods/register/user/company/controller.js","tt4/pods/register/user/company/route.js","tt4/pods/register/user/company/template.js","tt4/pods/register/user/confirm/controller.js","tt4/pods/register/user/confirm/route.js","tt4/pods/register/user/confirm/template.js","tt4/pods/register/user/controller.js","tt4/pods/register/user/done/controller.js","tt4/pods/register/user/done/route.js","tt4/pods/register/user/done/template.js","tt4/pods/register/user/id06/controller.js","tt4/pods/register/user/id06/route.js","tt4/pods/register/user/id06/template.js","tt4/pods/register/user/info/controller.js","tt4/pods/register/user/info/route.js","tt4/pods/register/user/info/template.js","tt4/pods/register/user/register-field-comp/component.js","tt4/pods/register/user/register-field-comp/template.js","tt4/pods/register/user/route.js","tt4/pods/register/user/sign-in/controller.js","tt4/pods/register/user/sign-in/route.js","tt4/pods/register/user/sign-in/template.js","tt4/pods/register/user/template.js","tt4/pods/resource-planning/gantt/template.js","tt4/pods/resource-planning/route.js","tt4/pods/resource-planning/week/template.js","tt4/pods/salary/controller.js","tt4/pods/salary/custom-export-ad/template.js","tt4/pods/salary/custom-export/route.js","tt4/pods/salary/custom-export/template.js","tt4/pods/salary/export-abcense/add/controller.js","tt4/pods/salary/export-abcense/add/route.js","tt4/pods/salary/export-abcense/add/template.js","tt4/pods/salary/export-abcense/index/controller.js","tt4/pods/salary/export-abcense/index/route.js","tt4/pods/salary/export-abcense/index/template.js","tt4/pods/salary/export-abcense/route.js","tt4/pods/salary/export-abcense/template.js","tt4/pods/salary/export-salary/add/controller.js","tt4/pods/salary/export-salary/add/route.js","tt4/pods/salary/export-salary/add/template.js","tt4/pods/salary/export-salary/index/controller.js","tt4/pods/salary/export-salary/index/route.js","tt4/pods/salary/export-salary/index/template.js","tt4/pods/salary/export-salary/route.js","tt4/pods/salary/export-salary/template.js","tt4/pods/salary/route.js","tt4/pods/salary/salaryperiods/controller.js","tt4/pods/salary/salaryperiods/route.js","tt4/pods/salary/salaryperiods/template.js","tt4/pods/salary/salarytypes/controller.js","tt4/pods/salary/salarytypes/route.js","tt4/pods/salary/salarytypes/template.js","tt4/pods/salary/template.js","tt4/pods/salary/workday-calendar/controller.js","tt4/pods/salary/workday-calendar/route.js","tt4/pods/salary/workday-calendar/template.js","tt4/pods/services/route.js","tt4/pods/services/template.js","tt4/pods/settings/activitylog/controller.js","tt4/pods/settings/activitylog/route.js","tt4/pods/settings/activitylog/template.js","tt4/pods/settings/billing/bill-comp/component.js","tt4/pods/settings/billing/bill-comp/template.js","tt4/pods/settings/billing/controller.js","tt4/pods/settings/billing/route.js","tt4/pods/settings/billing/template.js","tt4/pods/settings/company-profile/controller.js","tt4/pods/settings/company-profile/route.js","tt4/pods/settings/company-profile/template.js","tt4/pods/settings/controller.js","tt4/pods/settings/forms/controller.js","tt4/pods/settings/forms/form-activity-log/component.js","tt4/pods/settings/forms/form-activity-log/template.js","tt4/pods/settings/forms/form/controller.js","tt4/pods/settings/forms/form/field/controller.js","tt4/pods/settings/forms/form/field/route.js","tt4/pods/settings/forms/form/field/template.js","tt4/pods/settings/forms/form/removed-fields/controller.js","tt4/pods/settings/forms/form/removed-fields/route.js","tt4/pods/settings/forms/form/removed-fields/template.js","tt4/pods/settings/forms/form/route.js","tt4/pods/settings/forms/form/template.js","tt4/pods/settings/forms/route.js","tt4/pods/settings/forms/template.js","tt4/pods/settings/general-v2/components/auto-pause-setting/component.js","tt4/pods/settings/general-v2/components/auto-pause-setting/template.js","tt4/pods/settings/general-v2/components/autokm-setting/component.js","tt4/pods/settings/general-v2/components/autokm-setting/template.js","tt4/pods/settings/general-v2/components/company-info/address-comp/component.js","tt4/pods/settings/general-v2/components/company-info/address-comp/template.js","tt4/pods/settings/general-v2/components/company-info/billing-comp/component.js","tt4/pods/settings/general-v2/components/company-info/billing-comp/template.js","tt4/pods/settings/general-v2/components/company-info/info-comp/component.js","tt4/pods/settings/general-v2/components/company-info/info-comp/template.js","tt4/pods/settings/general-v2/components/company-info/logo-comp/component.js","tt4/pods/settings/general-v2/components/company-info/logo-comp/template.js","tt4/pods/settings/general-v2/components/edit-time-setting/component.js","tt4/pods/settings/general-v2/components/edit-time-setting/template.js","tt4/pods/settings/general-v2/components/holiday/component.js","tt4/pods/settings/general-v2/components/holiday/template.js","tt4/pods/settings/general-v2/components/km/component.js","tt4/pods/settings/general-v2/components/km/template.js","tt4/pods/settings/general-v2/components/notification-center/component.js","tt4/pods/settings/general-v2/components/notification-center/template.js","tt4/pods/settings/general-v2/components/number-field/component.js","tt4/pods/settings/general-v2/components/number-field/template.js","tt4/pods/settings/general-v2/components/overtime-comp/component.js","tt4/pods/settings/general-v2/components/overtime-comp/template.js","tt4/pods/settings/general-v2/components/pause-setting/component.js","tt4/pods/settings/general-v2/components/pause-setting/template.js","tt4/pods/settings/general-v2/components/perdiem/component.js","tt4/pods/settings/general-v2/components/perdiem/template.js","tt4/pods/settings/general-v2/components/postpopulated-worktimes/component.js","tt4/pods/settings/general-v2/components/postpopulated-worktimes/template.js","tt4/pods/settings/general-v2/components/salarytypes/absencetypes/component.js","tt4/pods/settings/general-v2/components/salarytypes/absencetypes/modal/template.js","tt4/pods/settings/general-v2/components/salarytypes/absencetypes/template.js","tt4/pods/settings/general-v2/components/salarytypes/component.js","tt4/pods/settings/general-v2/components/salarytypes/runAutomaticSalarytypes.js","tt4/pods/settings/general-v2/components/salarytypes/salaries/component.js","tt4/pods/settings/general-v2/components/salarytypes/salaries/modal/component.js","tt4/pods/settings/general-v2/components/salarytypes/salaries/modal/template.js","tt4/pods/settings/general-v2/components/salarytypes/salaries/template.js","tt4/pods/settings/general-v2/components/salarytypes/template.js","tt4/pods/settings/general-v2/components/salarytypes/worktypes/component.js","tt4/pods/settings/general-v2/components/salarytypes/worktypes/modal/component.js","tt4/pods/settings/general-v2/components/salarytypes/worktypes/modal/template.js","tt4/pods/settings/general-v2/components/salarytypes/worktypes/template.js","tt4/pods/settings/general-v2/components/saldo-setting/component.js","tt4/pods/settings/general-v2/components/saldo-setting/template.js","tt4/pods/settings/general-v2/components/terms-setting/component.js","tt4/pods/settings/general-v2/components/terms-setting/template.js","tt4/pods/settings/general-v2/components/time-setting/component.js","tt4/pods/settings/general-v2/components/time-setting/template.js","tt4/pods/settings/general-v2/components/worktimegroups/component.js","tt4/pods/settings/general-v2/components/worktimegroups/modal/component.js","tt4/pods/settings/general-v2/components/worktimegroups/modal/template.js","tt4/pods/settings/general-v2/components/worktimegroups/template.js","tt4/pods/settings/general-v2/container/component.js","tt4/pods/settings/general-v2/container/settings.js","tt4/pods/settings/general-v2/container/template.js","tt4/pods/settings/general-v2/controller.js","tt4/pods/settings/general-v2/helps/component.js","tt4/pods/settings/general-v2/helps/template.js","tt4/pods/settings/general-v2/main-settings/component.js","tt4/pods/settings/general-v2/main-settings/template.js","tt4/pods/settings/general-v2/radio-setting/component.js","tt4/pods/settings/general-v2/radio-setting/radio-button/template.js","tt4/pods/settings/general-v2/radio-setting/template.js","tt4/pods/settings/general-v2/setting-comp/component.js","tt4/pods/settings/general-v2/setting-comp/components/warnings/component.js","tt4/pods/settings/general-v2/setting-comp/components/warnings/template.js","tt4/pods/settings/general-v2/setting-comp/template.js","tt4/pods/settings/general-v2/sub-settings/component.js","tt4/pods/settings/general-v2/sub-settings/template.js","tt4/pods/settings/general-v2/template.js","tt4/pods/settings/history/controller.js","tt4/pods/settings/history/route.js","tt4/pods/settings/history/template.js","tt4/pods/settings/index/route.js","tt4/pods/settings/index/template.js","tt4/pods/settings/integrationcontroller/controller.js","tt4/pods/settings/integrationcontroller/route.js","tt4/pods/settings/integrationcontroller/template.js","tt4/pods/settings/integrations/controller.js","tt4/pods/settings/integrations/route.js","tt4/pods/settings/integrations/template.js","tt4/pods/settings/measurement_custom/controller.js","tt4/pods/settings/measurement_custom/route.js","tt4/pods/settings/measurement_custom/template.js","tt4/pods/settings/notificationpanel/controller.js","tt4/pods/settings/notificationpanel/notification-component/component.js","tt4/pods/settings/notificationpanel/notification-component/template.js","tt4/pods/settings/notificationpanel/route.js","tt4/pods/settings/notificationpanel/template.js","tt4/pods/settings/pl/controller.js","tt4/pods/settings/pl/route.js","tt4/pods/settings/pl/template.js","tt4/pods/settings/products/controller.js","tt4/pods/settings/products/disabled/component.js","tt4/pods/settings/products/disabled/template.js","tt4/pods/settings/products/route.js","tt4/pods/settings/products/template.js","tt4/pods/settings/route.js","tt4/pods/settings/template.js","tt4/pods/shift-planning/gantt/template.js","tt4/pods/shift-planning/route.js","tt4/pods/shift-planning/week/template.js","tt4/pods/site-safety/addnotice/index/controller.js","tt4/pods/site-safety/addnotice/index/route.js","tt4/pods/site-safety/addnotice/index/template.js","tt4/pods/site-safety/addnotice/mvr/controller.js","tt4/pods/site-safety/addnotice/mvr/route.js","tt4/pods/site-safety/addnotice/mvr/template.js","tt4/pods/site-safety/addnotice/template.js","tt4/pods/site-safety/addnotice/tr/controller.js","tt4/pods/site-safety/addnotice/tr/route.js","tt4/pods/site-safety/addnotice/tr/template.js","tt4/pods/site-safety/controller.js","tt4/pods/site-safety/loading/template.js","tt4/pods/site-safety/measurement/add/index/controller.js","tt4/pods/site-safety/measurement/add/index/route.js","tt4/pods/site-safety/measurement/add/index/template.js","tt4/pods/site-safety/measurement/add/measurement/controller.js","tt4/pods/site-safety/measurement/add/measurement/route.js","tt4/pods/site-safety/measurement/add/measurement/template.js","tt4/pods/site-safety/measurement/add/route.js","tt4/pods/site-safety/measurement/add/template.js","tt4/pods/site-safety/measurement/controller.js","tt4/pods/site-safety/measurement/data/controller.js","tt4/pods/site-safety/measurement/data/route.js","tt4/pods/site-safety/measurement/data/template.js","tt4/pods/site-safety/measurement/graphs/controller.js","tt4/pods/site-safety/measurement/graphs/route.js","tt4/pods/site-safety/measurement/graphs/template.js","tt4/pods/site-safety/measurement/loading/template.js","tt4/pods/site-safety/measurement/notice-component/component.js","tt4/pods/site-safety/measurement/notice-component/template.js","tt4/pods/site-safety/measurement/notices/controller.js","tt4/pods/site-safety/measurement/notices/route.js","tt4/pods/site-safety/measurement/notices/template.js","tt4/pods/site-safety/measurement/person-in-charge/component.js","tt4/pods/site-safety/measurement/route.js","tt4/pods/site-safety/measurement/row-component/component.js","tt4/pods/site-safety/measurement/row-component/template.js","tt4/pods/site-safety/measurement/template.js","tt4/pods/site-safety/observation/add/controller.js","tt4/pods/site-safety/observation/add/route.js","tt4/pods/site-safety/observation/add/template.js","tt4/pods/site-safety/observation/edit/controller.js","tt4/pods/site-safety/observation/edit/route.js","tt4/pods/site-safety/observation/edit/template.js","tt4/pods/site-safety/observation/template.js","tt4/pods/site-safety/report/event/controller.js","tt4/pods/site-safety/report/event/route.js","tt4/pods/site-safety/report/event/template.js","tt4/pods/site-safety/report/mvr/controller.js","tt4/pods/site-safety/report/mvr/data/controller.js","tt4/pods/site-safety/report/mvr/data/route.js","tt4/pods/site-safety/report/mvr/data/template.js","tt4/pods/site-safety/report/mvr/graphs/controller.js","tt4/pods/site-safety/report/mvr/graphs/route.js","tt4/pods/site-safety/report/mvr/graphs/template.js","tt4/pods/site-safety/report/mvr/notices/controller.js","tt4/pods/site-safety/report/mvr/notices/route.js","tt4/pods/site-safety/report/mvr/notices/template.js","tt4/pods/site-safety/report/observation/controller.js","tt4/pods/site-safety/report/observation/route.js","tt4/pods/site-safety/report/observation/template.js","tt4/pods/site-safety/report/tr/controller.js","tt4/pods/site-safety/report/tr/data/controller.js","tt4/pods/site-safety/report/tr/data/route.js","tt4/pods/site-safety/report/tr/data/template.js","tt4/pods/site-safety/report/tr/graphs/controller.js","tt4/pods/site-safety/report/tr/graphs/route.js","tt4/pods/site-safety/report/tr/graphs/template.js","tt4/pods/site-safety/report/tr/notices/controller.js","tt4/pods/site-safety/report/tr/notices/route.js","tt4/pods/site-safety/report/tr/notices/template.js","tt4/pods/site-safety/route.js","tt4/pods/site-safety/saved/controller.js","tt4/pods/site-safety/saved/route.js","tt4/pods/site-safety/saved/template.js","tt4/pods/site-safety/template.js","tt4/pods/skyddsronds/add/controller.js","tt4/pods/skyddsronds/add/route.js","tt4/pods/skyddsronds/add/template.js","tt4/pods/skyddsronds/dashboard/controller.js","tt4/pods/skyddsronds/dashboard/route.js","tt4/pods/skyddsronds/dashboard/template.js","tt4/pods/skyddsronds/notice-array/component.js","tt4/pods/skyddsronds/notice-array/template.js","tt4/pods/skyddsronds/notices/controller.js","tt4/pods/skyddsronds/notices/route.js","tt4/pods/skyddsronds/notices/template.js","tt4/pods/skyddsronds/report/controller.js","tt4/pods/skyddsronds/report/route.js","tt4/pods/skyddsronds/report/template.js","tt4/pods/skyddsronds/route.js","tt4/pods/skyddsronds/saved/controller.js","tt4/pods/skyddsronds/saved/route.js","tt4/pods/skyddsronds/saved/template.js","tt4/pods/taxman/archive/controller.js","tt4/pods/taxman/archive/route.js","tt4/pods/taxman/archive/template.js","tt4/pods/taxman/contract-list/add/controller.js","tt4/pods/taxman/contract-list/add/route.js","tt4/pods/taxman/contract-list/add/template.js","tt4/pods/taxman/contract-list/edit/controller.js","tt4/pods/taxman/contract-list/edit/route.js","tt4/pods/taxman/contract-list/edit/template.js","tt4/pods/taxman/contract-list/history/route.js","tt4/pods/taxman/contract-list/history/template.js","tt4/pods/taxman/contract-list/index/controller.js","tt4/pods/taxman/contract-list/index/route.js","tt4/pods/taxman/contract-list/index/template.js","tt4/pods/taxman/contract-list/loading/template.js","tt4/pods/taxman/route.js","tt4/pods/taxman/taxreport-component/component.js","tt4/pods/taxman/taxreport-component/template.js","tt4/pods/taxman/taxreport-contract/add/add-taxreport-comp/component.js","tt4/pods/taxman/taxreport-contract/add/controller.js","tt4/pods/taxman/taxreport-contract/add/route.js","tt4/pods/taxman/taxreport-contract/add/template.js","tt4/pods/taxman/taxreport-contract/index/controller.js","tt4/pods/taxman/taxreport-contract/index/route.js","tt4/pods/taxman/taxreport-contract/index/template.js","tt4/pods/taxman/taxreport-contract/route.js","tt4/pods/taxman/taxreport-contract/template.js","tt4/pods/taxman/taxreport/add/add-taxreport-comp/component.js","tt4/pods/taxman/taxreport/add/controller.js","tt4/pods/taxman/taxreport/add/route.js","tt4/pods/taxman/taxreport/add/template.js","tt4/pods/taxman/taxreport/index/controller.js","tt4/pods/taxman/taxreport/index/route.js","tt4/pods/taxman/taxreport/index/template.js","tt4/pods/taxman/taxreport/route.js","tt4/pods/taxman/taxreport/template.js","tt4/pods/taxman/template.js","tt4/pods/thereport/controller.js","tt4/pods/thereport/form-reporteditor/component.js","tt4/pods/thereport/form-reporteditor/template.js","tt4/pods/thereport/page/controller.js","tt4/pods/thereport/page/route.js","tt4/pods/thereport/page/template.js","tt4/pods/thereport/route.js","tt4/pods/thereport/settings/controller.js","tt4/pods/thereport/settings/route.js","tt4/pods/thereport/settings/template.js","tt4/pods/thereport/template.js","tt4/pods/timetracker/add/controller.js","tt4/pods/timetracker/add/gpsprojects/template.js","tt4/pods/timetracker/add/km_auto/template.js","tt4/pods/timetracker/add/project/template.js","tt4/pods/timetracker/add/route.js","tt4/pods/timetracker/add/template.js","tt4/pods/timetracker/addsaved/controller.js","tt4/pods/timetracker/addsaved/route.js","tt4/pods/timetracker/addsaved/template.js","tt4/pods/timetracker/aggregated/controller.js","tt4/pods/timetracker/aggregated/route.js","tt4/pods/timetracker/aggregated/rows/controller.js","tt4/pods/timetracker/aggregated/rows/loading/template.js","tt4/pods/timetracker/aggregated/rows/route.js","tt4/pods/timetracker/aggregated/rows/template.js","tt4/pods/timetracker/aggregated/template.js","tt4/pods/timetracker/anomalies/controller.js","tt4/pods/timetracker/anomalies/route.js","tt4/pods/timetracker/anomalies/settings-panel/component.js","tt4/pods/timetracker/anomalies/settings-panel/template.js","tt4/pods/timetracker/anomalies/template.js","tt4/pods/timetracker/approval/controller.js","tt4/pods/timetracker/approval/index/controller.js","tt4/pods/timetracker/approval/index/route.js","tt4/pods/timetracker/approval/index/template.js","tt4/pods/timetracker/approval/route.js","tt4/pods/timetracker/approval/site/controller.js","tt4/pods/timetracker/approval/site/route.js","tt4/pods/timetracker/approval/site/template.js","tt4/pods/timetracker/approval/site/user/controller.js","tt4/pods/timetracker/approval/site/user/route.js","tt4/pods/timetracker/approval/site/user/template.js","tt4/pods/timetracker/approval/template.js","tt4/pods/timetracker/avi/controller.js","tt4/pods/timetracker/avi/route.js","tt4/pods/timetracker/avi/template.js","tt4/pods/timetracker/bank/controller.js","tt4/pods/timetracker/bank/route.js","tt4/pods/timetracker/bank/settings-component/component.js","tt4/pods/timetracker/bank/settings-component/template.js","tt4/pods/timetracker/bank/template.js","tt4/pods/timetracker/bank_ad/template.js","tt4/pods/timetracker/calendar/controller.js","tt4/pods/timetracker/calendar/route.js","tt4/pods/timetracker/calendar/saldo-info/component.js","tt4/pods/timetracker/calendar/saldo-info/template.js","tt4/pods/timetracker/calendar/template.js","tt4/pods/timetracker/comp-report/controller.js","tt4/pods/timetracker/comp-report/route.js","tt4/pods/timetracker/comp-report/template.js","tt4/pods/timetracker/edit/controller.js","tt4/pods/timetracker/edit/route.js","tt4/pods/timetracker/edit/template.js","tt4/pods/timetracker/employer-sums/controller.js","tt4/pods/timetracker/employer-sums/route.js","tt4/pods/timetracker/employer-sums/template.js","tt4/pods/timetracker/history/route.js","tt4/pods/timetracker/history/template.js","tt4/pods/timetracker/loading/template.js","tt4/pods/timetracker/realtime/controller.js","tt4/pods/timetracker/realtime/route.js","tt4/pods/timetracker/realtime/template.js","tt4/pods/timetracker/route.js","tt4/pods/timetracker/salary-category/controller.js","tt4/pods/timetracker/salary-category/route.js","tt4/pods/timetracker/salary-category/template.js","tt4/pods/timetracker/saved/controller.js","tt4/pods/timetracker/saved/route.js","tt4/pods/timetracker/saved/template.js","tt4/pods/timetracker/timecard/add/controller.js","tt4/pods/timetracker/timecard/add/route.js","tt4/pods/timetracker/timecard/add/template.js","tt4/pods/timetracker/timecard/add/timecard-record-comp/component.js","tt4/pods/timetracker/timecard/template.js","tt4/pods/timetracker/week-report/controller.js","tt4/pods/timetracker/week-report/route.js","tt4/pods/timetracker/week-report/template.js","tt4/pods/timetracker/worktime-list/controller.js","tt4/pods/timetracker/worktime-list/route.js","tt4/pods/timetracker/worktime-list/template.js","tt4/pods/trnotices/edit/controller.js","tt4/pods/trnotices/edit/route.js","tt4/pods/trnotices/edit/template.js","tt4/pods/trnotices/history/route.js","tt4/pods/trnotices/history/template.js","tt4/pods/trnotices/route.js","tt4/pods/users/add/builder/controller.js","tt4/pods/users/add/builder/route.js","tt4/pods/users/add/builder/template.js","tt4/pods/users/add/controller.js","tt4/pods/users/add/id06/controller.js","tt4/pods/users/add/id06/route.js","tt4/pods/users/add/id06/template.js","tt4/pods/users/add/image/template.js","tt4/pods/users/add/index/controller.js","tt4/pods/users/add/index/route.js","tt4/pods/users/add/index/template.js","tt4/pods/users/add/phone/template.js","tt4/pods/users/add/route.js","tt4/pods/users/add/template.js","tt4/pods/users/card/controller.js","tt4/pods/users/card/route.js","tt4/pods/users/card/template.js","tt4/pods/users/cardregister/controller.js","tt4/pods/users/cardregister/route.js","tt4/pods/users/cardregister/template.js","tt4/pods/users/edit/activity/controller.js","tt4/pods/users/edit/activity/route.js","tt4/pods/users/edit/activity/template.js","tt4/pods/users/edit/changepassword/controller.js","tt4/pods/users/edit/changepassword/route.js","tt4/pods/users/edit/changepassword/template.js","tt4/pods/users/edit/changeusername/controller.js","tt4/pods/users/edit/changeusername/route.js","tt4/pods/users/edit/changeusername/template.js","tt4/pods/users/edit/competence/route.js","tt4/pods/users/edit/competence/template.js","tt4/pods/users/edit/controller.js","tt4/pods/users/edit/id06competence/controller.js","tt4/pods/users/edit/id06competence/route.js","tt4/pods/users/edit/id06competence/template.js","tt4/pods/users/edit/index/controller.js","tt4/pods/users/edit/index/route.js","tt4/pods/users/edit/index/template.js","tt4/pods/users/edit/loading/template.js","tt4/pods/users/edit/orientations/controller.js","tt4/pods/users/edit/orientations/route.js","tt4/pods/users/edit/orientations/template.js","tt4/pods/users/edit/permissions/route.js","tt4/pods/users/edit/permissions/template.js","tt4/pods/users/edit/route.js","tt4/pods/users/edit/saldo/calendar-card/component.js","tt4/pods/users/edit/saldo/calendar-card/template.js","tt4/pods/users/edit/saldo/controller.js","tt4/pods/users/edit/saldo/route.js","tt4/pods/users/edit/saldo/saldo-deducter/component.js","tt4/pods/users/edit/saldo/saldo-start/component.js","tt4/pods/users/edit/saldo/saldo-start/template.js","tt4/pods/users/edit/saldo/show-date/component.js","tt4/pods/users/edit/saldo/show-date/template.js","tt4/pods/users/edit/saldo/template.js","tt4/pods/users/edit/saldohistory/controller.js","tt4/pods/users/edit/saldohistory/route.js","tt4/pods/users/edit/saldohistory/template.js","tt4/pods/users/edit/saldos_ad/template.js","tt4/pods/users/edit/superior_replacements/template.js","tt4/pods/users/edit/template.js","tt4/pods/users/edit/userdata/controller.js","tt4/pods/users/edit/userdata/route.js","tt4/pods/users/edit/userdata/template.js","tt4/pods/users/history/route.js","tt4/pods/users/history/template.js","tt4/pods/users/inactive/controller.js","tt4/pods/users/inactive/route.js","tt4/pods/users/inactive/template.js","tt4/pods/users/index/controller.js","tt4/pods/users/index/route.js","tt4/pods/users/index/template.js","tt4/pods/users/linked/controller.js","tt4/pods/users/linked/route.js","tt4/pods/users/linked/template.js","tt4/pods/users/loading/template.js","tt4/pods/users/removed/controller.js","tt4/pods/users/removed/route.js","tt4/pods/users/removed/template.js","tt4/pods/users/route.js","tt4/pods/users/saldocalendar/controller.js","tt4/pods/users/saldocalendar/route.js","tt4/pods/users/saldocalendar/template.js","tt4/pods/users/saldohistory/controller.js","tt4/pods/users/saldohistory/route.js","tt4/pods/users/saldohistory/template.js","tt4/pods/users/saldos/controller.js","tt4/pods/users/saldos/route.js","tt4/pods/users/saldos/template.js","tt4/pods/users/saldos_ad/template.js","tt4/pods/users/saved/controller.js","tt4/pods/users/saved/route.js","tt4/pods/users/saved/template.js","tt4/pods/users/subcontractor/controller.js","tt4/pods/users/subcontractor/route.js","tt4/pods/users/subcontractor/template.js","tt4/pods/users/superior_replacements/template.js","tt4/pods/users/template.js","tt4/pods/users/worktimegroup_changes/controller.js","tt4/pods/users/worktimegroup_changes/template.js","tt4/pods/vismanetsignin/route.js","tt4/pods/vismanetsignin/template.js","tt4/pods/worksite-areas/log-report/template.js","tt4/pods/worksite-areas/report/template.js","tt4/pods/worksite-areas/template.js","tt4/pods/worksitediary/add/controller.js","tt4/pods/worksitediary/add/rating/template.js","tt4/pods/worksitediary/add/route.js","tt4/pods/worksitediary/add/template.js","tt4/pods/worksitediary/add/weather/template.js","tt4/pods/worksitediary/automation/controller.js","tt4/pods/worksitediary/automation/route.js","tt4/pods/worksitediary/automation/template.js","tt4/pods/worksitediary/calendar/controller.js","tt4/pods/worksitediary/calendar/diaryreport-calendar-item/component.js","tt4/pods/worksitediary/calendar/diaryreport-calendar-item/template.js","tt4/pods/worksitediary/calendar/route.js","tt4/pods/worksitediary/calendar/template.js","tt4/pods/worksitediary/edit/controller.js","tt4/pods/worksitediary/edit/route.js","tt4/pods/worksitediary/edit/template.js","tt4/pods/worksitediary/events/controller.js","tt4/pods/worksitediary/events/route.js","tt4/pods/worksitediary/events/template.js","tt4/pods/worksitediary/index/controller.js","tt4/pods/worksitediary/index/route.js","tt4/pods/worksitediary/index/template.js","tt4/pods/worksitediary/notes/controller.js","tt4/pods/worksitediary/notes/route.js","tt4/pods/worksitediary/notes/template.js","tt4/pods/worksitediary/offering-report/controller.js","tt4/pods/worksitediary/offering-report/route.js","tt4/pods/worksitediary/offering-report/template.js","tt4/pods/worksitediary/other-entries-report/controller.js","tt4/pods/worksitediary/other-entries-report/route.js","tt4/pods/worksitediary/other-entries-report/template.js","tt4/pods/worksitediary/report/add/at-site/controller.js","tt4/pods/worksitediary/report/add/at-site/route.js","tt4/pods/worksitediary/report/add/at-site/template.js","tt4/pods/worksitediary/report/add/base-route/route.js","tt4/pods/worksitediary/report/add/basic-info/controller.js","tt4/pods/worksitediary/report/add/basic-info/route.js","tt4/pods/worksitediary/report/add/basic-info/template.js","tt4/pods/worksitediary/report/add/completion-page/controller.js","tt4/pods/worksitediary/report/add/completion-page/route.js","tt4/pods/worksitediary/report/add/completion-page/template.js","tt4/pods/worksitediary/report/add/controller.js","tt4/pods/worksitediary/report/add/diary-events/controller.js","tt4/pods/worksitediary/report/add/diary-events/event-component/component.js","tt4/pods/worksitediary/report/add/diary-events/event-component/template.js","tt4/pods/worksitediary/report/add/diary-events/route.js","tt4/pods/worksitediary/report/add/diary-events/template.js","tt4/pods/worksitediary/report/add/diary-modal/component.js","tt4/pods/worksitediary/report/add/diary-modal/template.js","tt4/pods/worksitediary/report/add/extra/route.js","tt4/pods/worksitediary/report/add/extra/template.js","tt4/pods/worksitediary/report/add/material/controller.js","tt4/pods/worksitediary/report/add/material/route.js","tt4/pods/worksitediary/report/add/material/template.js","tt4/pods/worksitediary/report/add/notes-anmalan/controller.js","tt4/pods/worksitediary/report/add/notes-anmalan/route.js","tt4/pods/worksitediary/report/add/notes-besiktningar/controller.js","tt4/pods/worksitediary/report/add/notes-besiktningar/route.js","tt4/pods/worksitediary/report/add/notes-direktiv/controller.js","tt4/pods/worksitediary/report/add/notes-direktiv/route.js","tt4/pods/worksitediary/report/add/notes-direktiv/template.js","tt4/pods/worksitediary/report/add/notes-page-component/component.js","tt4/pods/worksitediary/report/add/notes-page-component/template.js","tt4/pods/worksitediary/report/add/notes-ritningar/controller.js","tt4/pods/worksitediary/report/add/notes-ritningar/route.js","tt4/pods/worksitediary/report/add/offering/controller.js","tt4/pods/worksitediary/report/add/offering/route.js","tt4/pods/worksitediary/report/add/offering/template.js","tt4/pods/worksitediary/report/add/ordered-changes/controller.js","tt4/pods/worksitediary/report/add/ordered-changes/route.js","tt4/pods/worksitediary/report/add/ordered-changes/template.js","tt4/pods/worksitediary/report/add/other-entries/controller.js","tt4/pods/worksitediary/report/add/other-entries/route.js","tt4/pods/worksitediary/report/add/other-entries/template.js","tt4/pods/worksitediary/report/add/required-extra/controller.js","tt4/pods/worksitediary/report/add/required-extra/route.js","tt4/pods/worksitediary/report/add/required-extra/template.js","tt4/pods/worksitediary/report/add/review-page/controller.js","tt4/pods/worksitediary/report/add/review-page/route.js","tt4/pods/worksitediary/report/add/review-page/template.js","tt4/pods/worksitediary/report/add/route.js","tt4/pods/worksitediary/report/add/signature/controller.js","tt4/pods/worksitediary/report/add/signature/route.js","tt4/pods/worksitediary/report/add/signature/template.js","tt4/pods/worksitediary/report/add/summary-page/controller.js","tt4/pods/worksitediary/report/add/summary-page/route.js","tt4/pods/worksitediary/report/add/summary-page/template.js","tt4/pods/worksitediary/report/add/supervisor-note/controller.js","tt4/pods/worksitediary/report/add/supervisor-note/route.js","tt4/pods/worksitediary/report/add/supervisor-note/template.js","tt4/pods/worksitediary/report/add/template.js","tt4/pods/worksitediary/report/first/controller.js","tt4/pods/worksitediary/report/first/template.js","tt4/pods/worksitediary/report/route.js","tt4/pods/worksitediary/report/template.js","tt4/pods/worksitediary/route.js","tt4/pods/worksitediary/supervisor-notes-report/controller.js","tt4/pods/worksitediary/supervisor-notes-report/route.js","tt4/pods/worksitediary/supervisor-notes-report/template.js","tt4/pods/worktasks/calendar/controller.js","tt4/pods/worktasks/calendar/route.js","tt4/pods/worktasks/calendar/template.js","tt4/pods/worktasks/confirm/controller.js","tt4/pods/worktasks/confirm/route.js","tt4/pods/worktasks/confirm/template.js","tt4/pods/worktasks/edit/controller.js","tt4/pods/worktasks/edit/route.js","tt4/pods/worktasks/edit/template.js","tt4/pods/worktasks/gantt/controller.js","tt4/pods/worktasks/gantt/route.js","tt4/pods/worktasks/gantt/template.js","tt4/pods/worktasks/history/template.js","tt4/pods/worktasks/list/controller.js","tt4/pods/worktasks/list/route.js","tt4/pods/worktasks/list/template.js","tt4/pods/worktasks/loading/template.js","tt4/pods/worktasks/report/controller.js","tt4/pods/worktasks/report/route.js","tt4/pods/worktasks/report/template.js","tt4/pods/worktasks/route.js","tt4/pods/worktasks/view/controller.js","tt4/pods/worktasks/view/route.js","tt4/pods/worktasks/view/template.js","tt4/router.js","tt4/routes/application.js","tt4/routes/changepassword.js","tt4/routes/general-add.js","tt4/routes/general-report.js","tt4/routes/index.js","tt4/routes/invalid.js","tt4/routes/login/register.js","tt4/routes/massedit.js","tt4/routes/my-sites.js","tt4/routes/register/service.js","tt4/routes/register/service/adddetails.js","tt4/routes/register/service/amounts.js","tt4/routes/register/service/done.js","tt4/routes/register/service/products.js","tt4/routes/saved.js","tt4/routes/send-skatteverket.js","tt4/routes/show.js","tt4/routes/token.js","tt4/sentry.js","tt4/serializers/-default.js","tt4/serializers/-json-api.js","tt4/serializers/-rest.js","tt4/serializers/application.js","tt4/serializers/beta-clockcard.js","tt4/serializers/card.js","tt4/serializers/ccbutton.js","tt4/serializers/ccbuttonexecution.js","tt4/serializers/custom-export.js","tt4/serializers/dashboard-mobile.js","tt4/serializers/dashboard.js","tt4/serializers/form-field-setting.js","tt4/serializers/form-field.js","tt4/serializers/form-report-template.js","tt4/serializers/form-setting.js","tt4/serializers/form.js","tt4/serializers/help.js","tt4/serializers/my-site.js","tt4/serializers/rollocklog.js","tt4/serializers/row-info.js","tt4/serializers/widget-anomalies-setting.js","tt4/services/-ensure-registered.js","tt4/services/-gestures.js","tt4/services/addon/collector.ts","tt4/services/admintool.js","tt4/services/ajax.js","tt4/services/analytics.ts","tt4/services/android-file.js","tt4/services/apiservice.ts","tt4/services/autopause-checker.js","tt4/services/aws.js","tt4/services/blocks.js","tt4/services/capi.js","tt4/services/cc.js","tt4/services/cdn.js","tt4/services/clock.js","tt4/services/collector-service.js","tt4/services/collector.js","tt4/services/cookies.js","tt4/services/country-lists.js","tt4/services/csv.js","tt4/services/customer-settings.js","tt4/services/dap.js","tt4/services/dialogs.js","tt4/services/error-handler.ts","tt4/services/error.js","tt4/services/evented.js","tt4/services/excel.js","tt4/services/export-file.js","tt4/services/file-exports.js","tt4/services/file-queue.js","tt4/services/flags.js","tt4/services/form-json.js","tt4/services/forms.ts","tt4/services/google-charts.js","tt4/services/google.js","tt4/services/gps-locator.js","tt4/services/gps.js","tt4/services/gps2.ts","tt4/services/gui.js","tt4/services/initapp.js","tt4/services/intl.js","tt4/services/load-translations.js","tt4/services/local-storage-wrapper.js","tt4/services/localstorage.js","tt4/services/menu.js","tt4/services/meta.js","tt4/services/metrics.js","tt4/services/modal-dialog.js","tt4/services/modal-scroller.js","tt4/services/model-creator.js","tt4/services/moment.js","tt4/services/my-sites.js","tt4/services/need.ts","tt4/services/needs.js","tt4/services/notifications.js","tt4/services/online-checker.js","tt4/services/own-cordova-service.js","tt4/services/power-calendar.js","tt4/services/promo-messages.js","tt4/services/push-notification.js","tt4/services/scroller.js","tt4/services/servicehandler.js","tt4/services/session-globals.js","tt4/services/session.js","tt4/services/sessionhelper.js","tt4/services/settings.js","tt4/services/skv-report.js","tt4/services/store.js","tt4/services/surveys.js","tt4/services/text-measurer.js","tt4/services/timecard-clock.js","tt4/services/tools.js","tt4/services/tour.js","tt4/services/trial-clock.js","tt4/services/ttapi.js","tt4/services/ttapi2.js","tt4/services/user-agent.js","tt4/services/user-settings.js","tt4/services/vastuu-group.js","tt4/services/weather.js","tt4/services/welcome-tour.js","tt4/services/wt-service.js","tt4/session-stores/application.js","tt4/templates/application.js","tt4/templates/changepassword.js","tt4/templates/components/address-info.js","tt4/templates/components/api-report.js","tt4/templates/components/array-input.js","tt4/templates/components/array-input2.js","tt4/templates/components/basic-dropdown-content.js","tt4/templates/components/basic-dropdown-optional-tag.js","tt4/templates/components/basic-dropdown-trigger.js","tt4/templates/components/basic-dropdown.js","tt4/templates/components/billing-info.js","tt4/templates/components/cc-report.js","tt4/templates/components/chart.js","tt4/templates/components/drop-down-search.js","tt4/templates/components/drop-down.js","tt4/templates/components/ember-popper-targeting-parent.js","tt4/templates/components/ember-popper.js","tt4/templates/components/error-popup.js","tt4/templates/components/fast-select.js","tt4/templates/components/fileupload-preview.js","tt4/templates/components/form-error-message.js","tt4/templates/components/general-report-row.js","tt4/templates/components/gps-forced-dropdown.js","tt4/templates/components/gps-location-map.js","tt4/templates/components/gps-location.js","tt4/templates/components/help-dialog.js","tt4/templates/components/loader-icon.js","tt4/templates/components/mass-edit.js","tt4/templates/components/message-board-forced.js","tt4/templates/components/modal-array.js","tt4/templates/components/multi-buttons.js","tt4/templates/components/notices-graph.js","tt4/templates/components/object-input.js","tt4/templates/components/pagi-nate.js","tt4/templates/components/plus-menu.js","tt4/templates/components/power-select-multiple.js","tt4/templates/components/power-select-multiple/trigger.js","tt4/templates/components/power-select.js","tt4/templates/components/power-select/before-options.js","tt4/templates/components/power-select/options.js","tt4/templates/components/power-select/placeholder.js","tt4/templates/components/power-select/power-select-group.js","tt4/templates/components/power-select/search-message.js","tt4/templates/components/power-select/trigger.js","tt4/templates/components/project-help.js","tt4/templates/components/project-info.js","tt4/templates/components/promo-component.js","tt4/templates/components/promo-messages.js","tt4/templates/components/range-picker.js","tt4/templates/components/record-list.js","tt4/templates/components/salary-period-adder.js","tt4/templates/components/select-comp.js","tt4/templates/components/select-list.js","tt4/templates/components/spin-button.js","tt4/templates/components/table-comp.js","tt4/templates/components/user-select.js","tt4/templates/components/week-report.js","tt4/templates/fields/array.js","tt4/templates/fields/checkbox.js","tt4/templates/fields/checkboxgroup.js","tt4/templates/fields/database.js","tt4/templates/fields/databasearray.js","tt4/templates/fields/date.js","tt4/templates/fields/dropdown.js","tt4/templates/fields/field.js","tt4/templates/fields/fields-main.js","tt4/templates/fields/file.js","tt4/templates/fields/gpslocation.js","tt4/templates/fields/gpslocationmap.js","tt4/templates/fields/hours.js","tt4/templates/fields/label.js","tt4/templates/fields/multiselect.js","tt4/templates/fields/notfound.js","tt4/templates/fields/notsupported.js","tt4/templates/fields/number.js","tt4/templates/fields/password.js","tt4/templates/fields/preview.js","tt4/templates/fields/radio.js","tt4/templates/fields/report.js","tt4/templates/fields/signature.js","tt4/templates/fields/textarea.js","tt4/templates/fields/textbox.js","tt4/templates/fields/time.js","tt4/templates/fields/timerlink.js","tt4/templates/fields/username.js","tt4/templates/fields/weather.js","tt4/templates/fields/work_permit_attachment.js","tt4/templates/header.js","tt4/templates/index.js","tt4/templates/loading.js","tt4/templates/login.js","tt4/templates/login/index.js","tt4/templates/login/register.js","tt4/templates/login/register/company-info.js","tt4/templates/login/register/products.js","tt4/templates/login/register/promo-title.js","tt4/templates/login/register/registrationdone.js","tt4/templates/login/register/summary.js","tt4/templates/login/register/userinfo.js","tt4/templates/massedit.js","tt4/templates/partials/general-add.js","tt4/templates/partials/saved.js","tt4/templates/register/service.js","tt4/templates/register/service/adddetails.js","tt4/templates/register/service/amounts.js","tt4/templates/register/service/done.js","tt4/templates/register/service/products.js","tt4/templates/saved.js","tt4/templates/send-skatteverket.js","tt4/templates/show.js","tt4/templates/side-menu.js","tt4/templates/token.js","tt4/transforms/boolean.js","tt4/transforms/date.js","tt4/transforms/number.js","tt4/transforms/obj.js","tt4/transforms/string.js","tt4/utils/businessid_validation.js","tt4/utils/calculate-position.js","tt4/utils/can-use-dom.js","tt4/utils/chatBot.js","tt4/utils/communityLink-util.js","tt4/utils/country.js","tt4/utils/custom-reports.js","tt4/utils/date-util.js","tt4/utils/file-util.js","tt4/utils/file.js","tt4/utils/format.js","tt4/utils/getScript.js","tt4/utils/gui.js","tt4/utils/intl/missing-message.js","tt4/utils/isDisabled.js","tt4/utils/object-transforms.js","tt4/utils/pdf-export.js","tt4/utils/qrcode-generator.js","tt4/utils/remove-from-dom.js","tt4/utils/render-classic-chart.js","tt4/utils/render-material-chart.js","tt4/utils/save-the-children.js","tt4/utils/snowplowinit.js","tt4/utils/sort.js","tt4/utils/status.js","tt4/utils/stonly.js","tt4/utils/sumrow-util.js","tt4/utils/sumrow.js","tt4/utils/validations.js","tt4/utils/version-info.js","tt4/utils/weather.js","tt4/utils/work-permit.js","vendor/ember-cli/app-config.js","vendor/ember-cli/app-boot.js"],"names":["define","_exports","_jsonApi","Object","defineProperty","value","enumerable","get","default","RESTAdapter","extend","DataAdapterMixin","onlineChecker","Ember","inject","service","dialogs","intl","session","flags","sessionhelper","init","this","_super","apply","arguments","handledErrors","ensureResponseAuthorized","status","headers","payload","requestData","error_description","expiredRecovery","concat","method","url","computed","isAuthenticated","data","authenticated","access_token","host","config","environment","test","collector","api_url","isSuccess","error","Array","from","includes","error_obj","responseText","statusText","error_msg","set","showErrorDialog","alert","t","normalizeErrorResponse","_typeof","run","throttle","errors","errorMeta","meta","isArray","title","details","generatedDetailedMessage","JSON","stringify","urlForQuery","query","modelName","form","field","endpoint","urlForUpdateRecord","id","snapshot","adapterOptions","validation","Capi3Adapter","DS","JSONAPIAdapter","APP","CAPI3","authorizer","namespace","TTAPI2","ApplicationAdapter","defaultSerializer","FormDefaultAdapter","ttapiBase","createNamespace","capi","find","_this","request","dataType","then","_data","TTAPI_HOST","message","path","TTAPI_FOLDER","slice","target","RSVP","resolve","_sentry","startSentry","App","modulePrefix","podModulePrefix","Resolver","TextSupport","reopen","attributeBindings","autocorrect","autocomplete","window","sessionStorage","getItem","app_override","parse","keys","forEach","key","Modernizr","localstorage","localStorage","devMode","dev","removeItem","console","info","setItem","Error","stackTraceLimit","_emberLoadInitializers","OAuth2PasswordGrantAuthenticator","serverTokenEndpoint","COLLECTOR_API_URL","clientId","makeRequest","client_id","restore","Promise","reject","response","typeOf","offline","trigger","later","location","href","rootURL","indexOf","create","forms_url","getFormSettings","createEmberModels","d","self","testing","createTestModels","$","Deferred","Authorization","ajax","datatype","tryCount","retryLimit","success","addCommonForms","create_models","reason","reload","promise","reparse_dropdown_options","forms","each","form_index","objects","obj_index","object","is_array","temp","type","options","prototype","toString","call","opt_index","option","empty_option","push","all_attributes","async_relations","rel_objects","updater","products","modules","tt3flag","index","form_name","model_attributes","classify","attribute_name","attributes_arr","attr","ref","ref1","relation","relation_fields","hasMany","async","belongsTo","inverse","toLowerCase","createWorkdayModels","models","attributes","name","Tt4","CollectorModel","CollectorValidationMixin","deleteModels","store","unloadAll","date","minutes","own","desc","country","absence_minutes","day","starttime","endtime","overtimerule","max_minutes","rules","workdayWeeks","worktimegroup","commonForms","rounding_rule","time_from","features","mandatory","time_to","time_result","privileges","add","edit","remove","logo","is_image","public","single_image","getPrivilege","privilege","getFormObjects","replace","getFormObject","obj","arr","obj_name","split","hasErrors","getErrors","localization","moment","updateLocale","weekdaysMin","weekdays","months","monthsShort","longDateFormat","L","LT","LL","llll","LTS","LLL","LLLL","l","ll","lll","week","dow","doy","formatHours","hours","format","real_hours","timeArr","parseInt","toLocaleString","locale","Math","sign","ceil","floor","abs","round","is","formatDaysAndHours","days","Helper","helper","_validate_unique","_defineProperty","_Ember$Object$create","validate_mandatory","model","_is_visible","ObjectProxy","ArrayProxy","isEmpty","i","is_visible","len","test_field","test_values","length","_value_is_in_list","list_string","found","list","negation","substring","validate_length","parsed","isJSON","validate_minLength","validate_maxLength","validate_number","isNaN","validate_forced_pause","diff","validate_multiPause","multipause","start","multiPauseStart","worktimeStart","worktimeEnd","worktimeGoesOvernight","isBefore","isBetween","end","multiPauseEnd","validate_multipleHours","formatMinutes","sameAs","row","formatted","leftover","sameas","validate_email","validate_birthdate","isAfter","subtract","returnAsPromise","validate_remote_email","changedAttributes","username","validate","contentType","validate_match","match","validate_digits","item","Number","validate_person_country","validate_employer_country","validate_PIN","nationality","toUpperCase","validate_id06_number","validate_username","check_username","back","validate_username_free","_this2","Em","error1","validate_password","attribute","hasChanged","isNew","disable_login","validate_positiveNumber","validate_date_not_past","validate_date_after","validate_date_correct","isValid","validate_phoneNumber","validate_skv_number","isFinite","regeneratorRuntime","mark","_callee","owner","form_plural","req","rows","wrap","_context","prev","next","abrupt","getOwner","lookup","constructor","_emberInflector","pluralize","camelize","_fetch","sent","json","count","getTranslationForColumn","stop","_x","_x2","_x3","_x4","_x5","pluralRuleFunction","n","ord","s","String","v0","t0","n10","n100","fields","year","displayName","relative","0","1","-1","relativeTime","future","one","other","past","year-short","month","month-short","day-short","hour","hour-short","minute","minute-short","second","second-short","numbers","decimal","long","short","2","-2","_emberComponentManager","Component","_rowWrapper","_simpleCheckbox","__COLOCATED_TEMPLATE__","HTMLBars","template","block","moduleName","_templateOnlyComponent","AccordionItemComponent","event","panel","nextElementSibling","active","style","maxHeight","scrollHeight","CollectorErrorMessageComponent","errorHandler","toError","args","errorToString","_this$parsedError","_this$parsedError$met","parsedError","hits","ids","join","sideload","_this$parsedError2","_this$parsedError2$me","_this$parsedError3","_this$parsedError3$me","_this$parsedError4","_ref2","userRestrictionsPrevent","projectRestrictionsPrevent","reasons","DateRangeComponent","_classCallCheck","_initializerDefineProperty","_assertThisInitialized","_descriptor","_descriptor2","_descriptor3","startDate","endDate","centerStart","Date","centerEnd","range","val","openEndDatePicker","queryRange","changeDate","changeEnd","picker","validInputValue","getInputAsDate","_moment","endRangeElement","document","querySelector","click","focus","select","keyCode","preventDefault","FieldContainerComponent","splitField","isPresent","prompt","_this$args$record","record","errorsFor","forceType","fieldType","component","componentExists","htmlSafe","sorts","componentName","hasRegistration","FieldsBigPriceComponent","FieldsPriceComponent","FieldsCheckboxComponent","showLabels","theme","size","disabled","fallback","primaryLocale","FieldsCheckboxgroupComponent","map","text","checked","box","ret","Set","has","delete","onChange","FieldsDatabaseGpsForceFieldComponent","_descriptor4","_descriptor5","_descriptor6","gps","evented","on","newPosition","hasPositionChanged","lockedPosition","reTriggerOptions","lastKnownLatitude","latitude","lastKnownLongitude","longitude","performSearch","_asyncToGenerator","_callee3","term","_this3","_context3","_get","_getPrototypeOf","_ref3","_callee2","normalProjects","forcedGpsProjects","_context2","getForcedGpsProjects","filter","project","getDistance","location_map","allowedDistance","groupName","toArray","undefined","params","force_location","limit","q","_i","_Object$keys","_callee4","_args4","_context4","DatabaseField","FieldsDatabaseComponent","setLastUsed","_this$args$features","lastUsed","_promisevalue","_promisevalue2","promisevalue","resolved","_this$args$setDisable","_this$args","_this$args$setDisable2","_this$args2","skipLastUsed","subform","do_not_preselect","firstObject","setDisabled","checkValueIsInOptions","debounce","peekRecord","saveLastUsed","createNew","showCreate","content","_this3$args$features","sortBy","_sort","subformFields","auto_select_only","getLastUsed","e","unshift","records","offset","_this$args$record2","hasDirtyAttributes","_this$args$setDisable4","_this$args4","_this$args$setDisable3","_this$args3","createQueryParams","useNormalDropdown","_gui","isMobile","forceNormalDropdown","useAsFilter","_callee5","_context5","recordIsDirty","opt","FieldsDatabasearrayComponent","_this$args$value","parentfields","fieldArray","findBy","taskname","_this$records","createRecord","autoSetHours","notifyPropertyChange","fieldName","deleteRecord","destroyRecord","work_hours","_this$args$record3","_this$args$record4","_this$args$record8","_this$args$record9","validate_check","_this$args$record5","_this$args$record6","_this$args$record7","_convertWorkHoursToMinutes","pause","addMinutes","sumBefore","lastOneMinutes","allAreTheSame","FieldsDateComponent","dateInterval","date_interval","splitted","dateOptions","sort","FieldsDatetimeComponent","_this$args$value2","time","FieldsDropdownCountryComponent","_countries","countries","_value","_dropdownValues","FieldsDropdownUserlevelComponent","dropdownOptions","parsedOptions","FieldsDropdownValuesComponent","getName","exists","realOptions","splitOptions","FieldsGpslocationComponent","sendLocationToForm","off","distance","distanceToProject","userLocation","setGpsDistanceToProject","projectLocation","findRecord","FieldsGpslocationmapComponent","FieldsHdfileComponent","isIE","isAndroid","capiURL","queueName","random","A","_this$args$features2","single_file","_this$args$features3","singleFile","isImageFile","file","fileObject","originalFile","name_on_hd","isImageType","s3thumb","base64ImageCache","previewFile","s3url","_file2","makeFileUrl","base64Cache","_file$name","fileExt","resizedImage","queue","resizedImageFile","notifications","autoClear","blackListFiles","FileQueue","files","removeObject","resizeImage","blob","File","fromDataURL","pushObject","uploadFile","vals","task","cancel","filePreview","source","allowEdit","targetWidth","targetHeight","quality","destinationType","Camera","DestinationType","FILE_URI","sourceType","PictureSourceType","PHOTOLIBRARY","CAMERA","mediaType","MediaType","PICTURE","correctOrientation","encodingType","navigator","camera","getPicture","imageData","resolveLocalFileSystemURL","fileEntry","uploadImage","policyUrl","base64Url","_base64Url","_args2","isPublic","fetch","upload","inputs","createThumb","readAsDataURL","s3file","addFile","fileName","policyResponse","resized","thumb","imageTypes","FieldsHoursAndMinutesComponent","parseFloat","FieldsMultiselectComponent","loadInitialSelection","_this$args$options","_this$args$options2","isRecord","internalSelected","fetchOptions","groupOptions","bind","allRecords","selectedIds","mapBy","selected","unselected","groups","selectAllOption","isSelectAll","_toConsumableArray","queryLimit","filterValue","isBlank","v","trim","_records$meta","metaCount","moreCount","idsString","parseIdsFromValue","selectedRecords","some","selectAll","FieldsNumberComponent","FieldsPasswordComponent","showPassword","currentUser","company_info","FieldsSignatureComponent","canvas","createElement","width","className","signaturePad","SignaturePad","_this$signaturePad","clear","_this$signaturePad2","toDataURL","showModal","FieldsTagInputComponent","tags","tag","addTagToList","removeAt","currentInputValue","queryBackend","tagObj","tagName","_validations","validateEmail","showDropdown","result","_textarea","FieldsTextareaComponent","_touchMoving","moving","touchMoving","activeElement","blur","FieldsTextBoxComponent","FieldsTimeComponent","tryToGuessTime","str","mins","exploded","FieldsTimecleanImeiComponent","tagAsNumber","class","FieldsUsernameComponent","FieldsWeatherComponent","wspeed","percent","shouldAutomaticallyFetchNewWeather","weatherLoading","position","weather","_weather","fetchWeather","CollectorFieldsWorkPermitAttachmentComponent","FormAddComponent","_descriptor7","_descriptor8","_descriptor9","_descriptor10","_descriptor11","_descriptor12","_descriptor13","_descriptor14","_descriptor15","_descriptor16","doTheseBeforeRenderingFields","setConditionalFieldProperties","setFilters","preserveRecordOnDestroy","rollbackAttributes","_field$features","_hide","stashed","_field$features2","onFieldChange","formAddFieldChanged","changeFilter","send","saveButtonDisabled","isRecordNew","_this$analytics$custo","firstErrorElement","saving","stateBeforeSave","currentState","stateName","scrollIntoView","behavior","_saveTheChildren","save_record","analytics","customData","category","trackEvent","action","label","storeEvent","showSaved","close","savedView","rowAdded","rowEdited","surveys","initializeAndRun","ExtraInfo","_this$analytics$custo2","_this$args$close","initCustomData","filteredFields","_field$features3","_field$features4","_field$features5","_field$features6","_field$features7","_field$features8","_field$features9","_this2$args$record","_this2$args$record2","only","hide","condition","hide_tt4","_field$options","_field$features10","useForcedGpsField","default_value","getDefaultValue","sortFields","a","b","need","fieldExists","_field$features11","defaultValue","filterBy","filters","parsedFilters","getFilters","with","_this4","assign","_this5","clone","_step","_iterator","_createForOfIteratorHelper","done","_field$features12","_step2","_iterator2","_field$options2","reloadfield","err","f","_field$features13","_field$features14","_this6","conditionalFields","_item$features","_item$features4","_item$features2","_item$features5","rule","_item$features3","ruleField","isVisible","_item$features6","FormReportFiltersComponent","onclick","showFilterOptions","parentClassList","classList","contains","localStorageKey","addedFilters","hiddenFilters","templateInUse","hideAdditionalFiltersButton","allowFilters","hide_filter","splitParams","custParams","getFilterValue","values","data_name","filterOptions","getDropdownFiltteringOptions","additionalFilters","additional","getAdditionalFilters","search","groupBy","locked","row_info_status","allFields","showColumns","removable","filterArr","newArr","removableFilters","filterOrder","getIndex","findIndex","checkSearchAndGroupBy","pushObjects","customField","change","filterChangeAction","clearFilters","filterChange","_loop","fieldArr","filterIndex","translated_name","customfield","dependencies","filterField","_filterField$features","_filterField$features2","Collector","getDropdownDepency","link","_filterField$options","_filterField$options2","reloadInCurrentField","reloadInOtherField","filtering","FormReportComponent","alias","_descriptor17","_descriptor18","_descriptor19","_descriptor20","_descriptor21","_descriptor22","_descriptor23","_descriptor24","_descriptor25","_descriptor26","_descriptor27","_descriptor28","_descriptor29","_descriptor30","_descriptor31","rowsPerPage","currentPage","rowActions","selectedRows","showRemoved","useMultiFilter","showFilters","showOnlySum","changeStatusForAllPagesParams","groupableColumns","columnSizes","filteredArr","defaultOrder","setVisibleColumns","fetchTemplates","activateTemplate","setDefaultLimit","setDefaultOrder","filterByValues","updateReport","oldTemplateFromLS","columnsChanged","allColumns","col","columns","external_type","metaRowCount","allPagesSelected","formFeatures","custom_queryparams","cachedRowCount","mergeFilters","jsonapi","setJsonapiParams","extraParams","skipCustomQueryParams","checkCustomQueryParams","createSortStringForJsonapi","order","createSortString","setParentFieldParamsAsArray","canEdit","testNeeds","savedSize","column","hide_column","hideCreatedColumn","valuePath","fieldOptions","only_options","statusTypes","showOverview","formaName","underscore","formattedValues","sums","sumType","userlevels","templateValues","setProperties","save","templateColumns","current","setTemplateValues","confirm","currentFormTemplate","deactivateTemplate","showLocationMap","setMapMarkers","cacheData","handleGroupBy","showForm","act","removeRow","restoreRow","copyRow","warning","lockOrUnlock","page","_callee6","_args6","_context6","layoutOption","fileExports","createPdfFull","selectedExportRows","createPdf","notify","finish","_callee7","_context7","queryParams","_callee8","_context8","getExportData","ext","createCsv","t1","_callee9","base64","includeAllPages","sumRow","excelJSON","_args9","_context9","addFiltersToPdf","addSumRow","getExcelSumRow","createExcelJSONFromForm","createBase64ExcelFromJSON","createExcelFromJSON","exportPdf","exportPdfFull","exportExcel","saveDirtyRecords","_callee10","reportElement","dirtyRecords","reloadPromises","newData","showInlineEdit","_context10","all","_callee11","closedToApprovedRows","_context11","setParamsForStatusChangeAllPages","setDatesForFastExporter","handleClosedToApprovedRows","statusChanged","showApprovalLink","_this7","_callee12","body","_iterator3","_step3","_row","_context12","unloadRecord","row_info.status","apiservice","_callee13","to","emailData","base64string","rowids","res","_context13","getPdfAttachmentForEmail","to_address","email","lang","includeApproval","header","dontAttachImages","ok","approvalLink","addHistoryForSentRows","RowsPerPage","localStorageWrapper","setUserSetting","defaultLimitKey","defaultSortKey","_callee14","_context14","saveColumnSizeForTemplate","existingSizeObject","_callee15","_iterator4","_step4","_context15","t2","newColumns","_this8","getOrder","selectedFields","sumData","_sumrow","getSums","sumValues","isHTMLSafe","string","formReportTemplates","filter[attributes.form]","_callee16","currentLsTemplate","dateRangeOptions","normalFilters","sumFields","_this9","_context16","currentSalaryPeriod","setCurrentPeriod","entries","returnDateValue","fIndex","p","sum","startOf","endOf","_callee17","salaryPeriods","currentDate","currentPeriods","_context17","peekAll","findAll","period","period_start_date","period_end_date","_callee18","projects","_context18","getProjectInfo","visibleRowIds","requestParams","rowCount","toStatus","showFastExporter","datesForFastExporter","_callee19","mode","columnsOnReport","settings","element","elements","filters_body","_args19","_context19","show_columns","createPdfElement","table","layout","_pdfExport","createPdfFromElements","cordova","openFile","_this10","filterKeys","filterValues","filterNameInPdf","setFilterNameInPdf","filterValueInPdf","_format_","_callee20","_context20","_this11","param","_this12","visibleList","reduce","acc","columnObject","limitfromLS","getUserSetting","sortfromLS","defaultSort","createSortArray","filterUnknownColumns","allowThese","merge","getIdifRecord","removeOrNot","_callee21","_context21","_callee22","newRecord","_context22","copyRecord","privilege_edit","privilege_remove","unshiftObject","_callee23","answer","_context23","_callee24","_context24","_this13","getRowInfoSortString","isAscending","_this14","errorArray","errorObj","_callee26","savePromises","_this15","_context26","_callee25","_context25","saveRecordAndCatchErrors","_x32","_x33","createErrorInfoNotifications","_callee27","_context27","showOrHideRemoved","parentField","_callee29","locs","totalLength","_this16","_context29","defer","_callee28","locationMapInfo","loc","_context28","end_location","getLocationMapInfo","wStartLoc","wEndLoc","wLabel","user","_x38","_this17","rowid","_history","FormReportActionBarComponent","showActions","hideEditStatus","isEditable","isRemovable","overrideAction","actionClicked","FormReportActionsComponent","readonly","canChangeStatus","_this$args$additional","additionalMeta","trimmed_query","FormReportColumnSelectorComponent","templates","_setCurrentTemplate","mappedCols","dropped","moveElementInArray","saveToLS","dir","setRowsPerPage","accumulator","newIndex","insertAt","sumReport","FormReportExportMoreComponent","FormReportInfoComponent","setInfoText","fileUrl","infoText","FormReportMoreRowComponent","FormReportQrCode","urls","ownUrl","editUrls","returnUrl","asHTML","w","getEditRouteUrls","getOwnUrl","getEditUrls","open","write","urlArr","editRoute","OWN_URL","editUrl","qrImageUrl","_qrcodeGenerator","generateQrCode","FormReportReportTemplateSelector","isPending","FormReportRowComponent","FormReportTableComponent","selectable","actions","isFixed","actionBarIsFixed","maxwidth","isSortable","isResizable","setSelectedRows","refreshReport","deselectAll","changeStatus","handleLock","handleRemove","rowInfo","modified","created","utc","unix","duration","asDays","created_diff","hideRule","validator","reloads","getReloads","fieldReloads","GroupbyFilterComponent","valueArr","chosenFields","unchosenFields","savedFields","indexOfField","splice","applyFilters","chosenFieldNames","toggleModal","ModalComponent","outsideClick","PagiNateComponent","gt","pageCount","limiter","middle","midpoint","pages","ref2","results","results1","j","union","k","ref3","fillCaps","queryLimitFull","hasNextPage","array","break_indexes","last","reverse","arr1","arr2","onlyUnique","sortNumber","pageChange","PartyParrotComponent","newVal","dur","ReportTemplateWizardComponent","submenus","defaultFilters","getDefaultFilters","sel","voluntary","objArray","what","spliceIndex","indexOfDeleted","_Object$entries","_Object$entries$_i","_slicedToArray","filterName","filterNameIndex","filtersArr","movingArr","fromEntries","ReportTemplateWizardColumnSelectorComponent","groupableColumnsList","groupByColumnsList","valueType","allowColumnsInSums","index1","index2","whatObj","setValues","ReportTemplateWizardDraggableItemComponent","draggableName","draggablename","dragClass","dataTransfer","setData","getData","ReportTemplateWizardFilterBoxComponent","ReportTemplateWizardPage1Component","collectValuesToObject","ReportTemplateWizardPage4Component","isOpen","showAll","advancedMode","getFilterValues","filterThese","filterObj","r","disclude","mandatoryFilters","fil","translation","filteredArray","showFilter","filName","anotherObj","filterForm","fieldData","dateRanges","splitValue","updatedValue","_sel$id","removeValuesFromObject","filterArray","reorderFilters","ValueFormatComponent","_this$fieldObj","_this$fieldObj2","fieldObj","WizardComponent","WizardButtonsComponent","skipCloseOnDone","WizardStepsComponent","pageNames","steps","showTooltip","admintool","countryLists","street","zip","town","hasError","specifier","billingtype","pdfExport","csvExport","translationPrefix","initData","observer","c","ttapi","len1","object_data","query_str_arr","firstRow","translatedColumns","translated_columns","asPdfElement","createPdfTableElement","asCsvElement","createCsvElement","showPagination","hasPreviousPage","catchActions","func","sendAction","nextPage","previousPage","changePage","export_pdf","qPart","addHeader","export_csv","createCsvFromElements","_areaChart","makeArray","setValue","once","setAddText","placeholderObjects","obs","obsPlacehoder","saveText","_emberIntl","addText","_barChart","_basicDropdownContent","_basicDropdownOptionalTag","_basicDropdownTrigger","_basicDropdown","didInsertElement","_jquery","addClass","showEinvoiceOption","getEinvoicingOperators","invoicingAddress","save_company_info","modal","copy_fields","setBillingType","btype","data_arr","BootstrapDatepickerInlineComponent","BootstrapDatepickerComponent","_bsAccordion","_item","_body","_title","_bsButtonGroup","_button","_bsButton","_bsCollapse","_bsDropdown","_menu","_divider","_linkTo","_toggle","_bsModal","_dialog","_footer","_header","_close","sessionGlobals","isChart","refreshSettings","getSettings","new_value","observes","isHtml","dataFromCC","ccapi","createUrl","requestMethod","chart_type","getFormattedData","chartComp","usecontainer","image","getImageURI","asCsvArray","csv_data","newrow","getDefaultQuery","param_arr","html","layoutName","datapoint","two_series","showExport","exports","fetch_data","drawChart","filter_arr","container","raw_data","parse_data","draw_single_chart","google_data","drawMultipleCharts","empty","subcontainer","appendTo","chart","colors_arr","linecolors","multiple_series","series","cssClassNames","tableCell","google","visualization","Table","chartArea","height","PieChart","events","addListener","selectedItem","getSelection","BarChart","ColumnChart","OrgChart","Gauge","getNumberOfColumns","colors","vAxes","legend","textStyle","fontSize","left","top","LineChart","view","selectionHandler","DataView","setColumns","draw","animation","startup","hAxis","maxValue","minValue","vAxis","default_type","get_google_chart_data","parse_single_table","arrayToDataTable","dk","drow","len2","m","real_rows","DataTable","assert","addColumn","addRows","setProperty","willDestroyElement","clearChart","redraw","save_pdf","assetsfolder","docDefinition","pageSize","pageOrientation","pageMargins","_getScript","getAssetFolder","getScriptsInOrder","download","gui","userId","external_errors","cust_value","feature","fieldExt","merged_values","oneWay","setDefaultValue","defValue","storeDefaultValue","tmp_value","unit","valuePreview","dropdowns","popoverContents","update","isDestroyed","isDestroying","static_content","month_count","new_option","real_options","useAjaxDropdown","gte","mainLayoutName","innerTemplateName","img_src","userlevelInfo","linkToCommunity","linkToCommunityOtta","getBrand","validatorClass","setting","hidden","_templateChanged","rerender","focusOut","focusIn","show","observeError","observeErrors","fieldRoute","map_visible","catch","_back$message","error_message","dateInputClicked","show_map","updatePopoverContents","getRecordArray","names","removeFile","check_id","isJson","item_arr","validator_key_arr","minLength","maxLength","number","birthdate","remote","date_after","digits","phoneNumber","positive","date_not_past","password","positiveNumber","fieldname","forced_pause","check","way","getCheckboxes","toggleProperty","bubbleChange","changeValue","customChangeValue","removeUserSetting","changeValueByDOMEvent","showSignModal","variable","becomeFocused","observeUsername","observeHomecountry","show_generated_password","password_observer","observeValue","checkboxes","options_arr","dropdown_date","_copyButton","DashBoardWidgetsTimecard2Component","TextField","isValueNull","inputtypes","showNativeControl","userAgent","nowDate","onChangeDate","startdate","getMonth","getDate","datepicker","language","autoclose","todayHighlight","clearBtn","disableTouchKeyboard","orientation","didReceiveAttrs","classNames","classNameBindings","dragLeave","dragOver","stopPropagation","dragEnter","drop","msie","setDataString","trident","draggable","dragStart","DropDownSearch","placeholder","showOptions","classes","_options","regexp","RegExp","touched","hasOption","autoclear","optionGroups","didRender","getElementsByTagName","showingRemoved","show_removed_arr","_positionedContainer","_basicDialog","_inPlaceDialog","_liquidDialog","_liquidTetherDialog","_tetherDialog","_emberPopover","_emberPopperTargetingParent","_emberPopper","_component","_emberTether","_emberTooltip","_emberWormhole","msg","translated","scrollTop","setTimeout","fadeOut","_exportSelectorOnselect","_exportSelector","renderOptions","optionid","first","append","prop","getContext","_empty","Image","onload","drawImage","src","fillStyle","fillRect","fieldSettings","report","editModal","dynamicEditParams","historyModal","showLock","canShow","canRemove","canRestore","rowColumns","cols","checkedClass","historyRoute","modified_class","modified_tooltip_format","clicked","openlock","con","form_camelcase","clickRowAction","_geoChart","_googleChart","markers","allMarkers","allCircles","allPaths","zoomLevel","skipPositionUpdate","insertMap","firstobj","lat","lng","styleArray","featureType","elementType","stylers","color","hue","saturation","lightness","geolocation","watchPosition","coords","maps","LatLng","panTo","setZoom","center","zoom","styles","disableDefaultUI","zoomControl","Map","placeMarkerAndPanTo","latLng","addWtMarkers","addProjectMarkers","observeMarkers","clearMarkers","clearCircles","clearPaths","observeProjectMarkers","setMap","objs","plat","platlng","plng","projectmarkers","placeMarkerWithDelay","endCoords","radius","wEndLat","wEndLatLng","wEndLng","wStartLat","wStartLatLng","wStartLng","wtmarkers","accuracy","placeLineWithDelay","delay","icon","marker","anchor","Point","Marker","Animation","DROP","Circle","strokeColor","strokeOpacity","strokeWeight","fillColor","fillOpacity","Polyline","geodesic","updateLocation","addressObserver","geocodeAddress","updateCenterPoint","pos","setCenter","locationObserver","geocoder","latlng","Geocoder","geocode","address","city","address_components","streetViewUrl","_fileUtil","getImageFromUrl","file_data","preview","GeocoderStatus","OK","geometry","notSupported","PromiseProxyMixin","projectCoords","lon","loadText","translation_key","show_help","removeModal","_lineChart","executing","recalculations","clearValueArray","die_signal","alldone","progress","progressStyle","locked_rows","acceptedFieldNames","acceptedFields","hideFields","remove_empty_selection","show_prompt","getChanges","execute_one","heap","changes","originals","popObject","goNext","serialize","recalculate","pushError","modelFields","clearValue","inModal","getback","valueChanged","_maybeInElement","LinkComponent","refreshMenu","role","menus","active_menu","menu_skeleton","menu_variables","variables","show_only_add","keyname","KIOSK","hide_leftmenu","comboreport","customLinks","links","hide_menus","link_param","sidebar","equal","sidr","closeSidr","editmode","invalidateSession","toggleMenuVisibility","saveMenuState","items","forcedArr","parseJSON","msgs","messageboards","tmp","forced","to_users","getNames","readed_users","getUserlevel","findByIds","user_obj","readed","closeAndMarkAsRead","_modalDialog","orderable","initValues","counter","updateValues","reorderButtons","button","btn","overdue","solved","pieHole","pieSliceTextStyle","pieSliceText","_notificationContainer","globals","NotificationMessage","icons","svgs","impersonate","substr","validateKeys","showCurrentpageOverLimit","_pieChart","menu","trackDropdownOpen","plusState","isAddPage","getAddLinks","addLinks","plusLinks","addLinksReversed","toggleplusMenu","closeplusMenu","toggleScroll","elmt","goToSkvLink","_powerCalendarMultiple","_days","_powerCalendarRange","_powerCalendar","_nav","_powerSelectMultipleWithCreate","_powerSelectMultiple","_trigger","_powerSelectWithCreate","_suggestedOption","_powerSelect","_beforeOptions","_noMatchesMessage","_placeholder","_powerSelectGroup","_searchMessage","helptext","projectidObs","processProjectChange","tr","testNeedsOne","tr_mean","mean","trs","calculateMean","getRatingColor","toFixed","mvr","mvr_mean","mvrs","total","event_fields","first_row","hasFields","openSkvLink","toggleMap","removeProjectModal","showMessage","router","promoMessages","checkmessages","closeModal","userlevel","getMessages","prods","new","read_msgs","subtle_msgs","ls_key","ls_sub_key","already_read","short_description","all_read","setItems","_radioButtonInput","_radioButton","timePicker","localeData","serverFormat","rangeText","opens","drops","separator","singleDatePicker","buttonClasses","applyClass","cancelClass","ranges","Today","Yesterday","Last 7 Days","Last 30 Days","This Month","Last Month","removeDropdownOnDestroy","cancelLabel","applyAction","cancelAction","customRangeLabel","momentEndDate","momentStartDate","autoUpdateInput","autoApply","linkedCalendars","dateLimit","alwaysShowCalendars","isEmptyObject","daterangepicker","ev","setStartDate","setEndDate","willDestroy","recordComp","cc","include_old_rows","callCC","queryParamsString","timeout","capi_url","ttapi_url","cc_url","token","exportName","getSalaryVersion","textStatus","jqXHR","downloadFile","file_url","appendChild","_errors","isTimeoutError","getFilename","default_name","given","given_arr","getResponseHeader","pdf_measurement_mixin","formatted_pdf_measurement_mixin","currentForm","export","this_fields","modelsArr","exportMeasurementPdf","createMeasurementPdf","_setLoaderFalse","filterFields","multi","amount","amount_options","period_options","promises","period_name","invoke","closeEditor","setmulti","recordSaved","_scatterChart","selectedIndex","selectedValue","objectAt","SelectList","skvReport","getAppVersion","getVersionNumber","version","skv_report","transition","saveLeftmenuHidings","logout","openLink","openFeedbackModal","sortableGroup","sortableHandle","sortableItem","spinIsLoading","saveButtonText","showDisable","showLoading","checkClass","rowAction","checkable","ch","noRows","_translatedColumns","lockedActions","filteredActions","actionSubString","notEditableActions","chk","defaultChangeStatus","btn_class","showDefaultChangeStatus","defaultChangeStatusAction","columnList","columnKey","subfields","_this$parseColumn2","parseColumn","_column$split2","canLock","showMassedit","getPdfFilters","pdf_filters_body","multisortColumns","columnClicked","sortColumns","currentOrder","checkAll","isNone","checkedActionClicked","mutateRows","mutation","lockRows","_tagInput","users","filterEmployer","previous","userid","nextUser","previousUser","gotoNextUser","gotoPreviousUser","setBreakpointObserver","removeBreakpointObserver","rowClicked","ENV","XToggle","defaultTheme","defaultOffLabel","defaultOnLabel","defaultShowLabels","defaultSize","staticMenus","needs","pdfHeaders","subroutes","showMobile","addLinkList","defaultFirstPages","route","savedCustomization","worktime","branding_needs","whitelist","product_page","blacklist","possibleFirstPages","generalSettings","productsOn","productsOff","secondary_setting","minVal","defaultVal","timetrackerSettings","groupEditable","groupEditableSettings","groupEditableIf","tt3valueOn","tt3valueOff","notGroupEditable","addition","tt3value","secondary_setting_name","taskSettings","drivingLogSettings","measurementSettings","pl_settings","admintoolSettings","saldoSettings","machineSettings","Controller","PushNotification","routing","initapp","welcomeTour","loadTranslations","trialClock","trialLength","useFormAdd","sessionOutDated","isSeasonTheme","modaltype","sideMenus","getMenus","sidemenuCheck","subMenus","getSubMenus","priceList","base","company","full_url","CDN_URL","communityLink","_communityLinkUtil","getCommunityLink","brand","initOnResume","showAppVersionWarning","initRequestNotificator","TRANSFORM_TYPES","jQuery","activeTransforms","ajaxSend","xhr","ajaxComplete","onbeforeunload","onfocus","onresume","addEventListener","tokenWillExpireIn","log","refresh","resumed","_browser","captureException","hide_sidebar","hide_topbar","userImage","img","ret_img","qrcoderead","code","transitionTo","buttonClicked","toggleSidebar","toggleHamburger","closeHamburger","closeBillingModal","transitionToRoute","bubbleTransition","guiAction","abort","reloadApp","removeTourModal","removeFeedbackModal","sendFeedback","sender","resp","closeAndRefresh","controller","changeLanguage","setTrialStatus","copyPartnerId","clipboard","writeText","isLoading","last_error","buttonText","showMySitesView","sublinks","toppath","additionalMainViewClasses","headerText","formName","routeObject","formExists","showBillingTypeSelection","billingtypeObs","test_passed","startTour","trialDaysLeft","billingInfo","trialMode","binfo","canSubscriptionBeCanceled","currentVersionTimeStamp","versions","version_timestamp","days_until_expires","brandLogo","_default","securedPassword","emailErrors","phoneErrors","showEmail","showPhone","showTitle","hideCross","history","saved","fieldtypes_not_to_show","error_types","parseFormErrors","observeExternalErrors","customization","setInitialFilters","submitted","setErrorMessage","setErrorMsg","detail","setOverlapMessage","setValidationMsg","worktimes","absences","validationMessage","custom_projects","stashed_fields","stashed_arr","reloadFields","setFiltersForField","setFilterOptionsByLinkings","reloadFieldName","reloadField","createFilterOptions","employerSelect","specialAction","show_stashed_fields","generalAddAction","FieldValueUpdated","reportmixin","initController","application","filterMode","init_functions","getFilterData","blackListFieldNames","whitelistMores","extra","ref4","ref5","ref6","dates","setAdditionalParamsForModel","additionalParamsForModel","foundItem","moreArr","filterChanged","sideload_field","LocalStorageWrapper","welcomeMessage","firstname","greeting","lastname","get_greeting","currentMobile","customerSettings","isTrackingAllowed","isIOS","askTrackingPermissions","isOtta","logoUrl","googlessourl","GOOGLESSOURL","vismassourl","VISMASSOURL","loginLink","showRegisterLink","showSavedUsername","getSavedUsername","observeIdentification","ls","setSavedUsername","mobile_devices","devices","re","mobile_links","device_identifier","isCordova","modal_title","fail","win","exec","create_account_link","userLanguage","vismassologin","authenticate","clearInit","getProperties","identification","responseJSON","setLowercased","testcaps","IS_MAC","capsLock","shiftKey","platform","originalEvent","initmixin","adddetailsController","productsController","applicationController","doneController","registerController","cdn","userinfo","selectedProducts","nextPageText","showBackButton","page_list","observePages","num","getProducts","continue","addDetailsController","setValidationErrors","hasOwnProperty","callServiceCreation","backFromServer","loginToService","updateAdmintool","partnerid","promocode","vatin","login_user_info_name","login_user_info_phone","login_user_info_email","no_trial_period","validationObject","promo_start","promo_end","setCountry","validations","remote_email","phone","validationstate","hide_all_buttons","modifyDomain","domain","domain_start","set_domain","skipThese","splitted_domain","splitted_email","setOKtoAllFields","hideCancelButton","text1","hide_title","text2","terms_url","termsAndConditions","fi","se","en","setValidationError","autofill","setFilled","validatePassword","clearErrors","observeAmounts","currency","price","product","product_list","getPlaceholder","pricetype","passwd","addWelcomeMessageForAdmin","setSetting","company_name","contact_person","email_content","email_country","email_header","receivers","login","obs_products","_products","pricetype_text","moreInfo","pdf_mixin","emailSent","customizations","configurations","obj2","customizeField","isHidden","temperature","windspeed","humidity","dew_point","getFieldName","afterSave","addPage","routeName","_routerMicrolib","recognizer","linkParam","showApprovalLinkSelection","getTtapiPdf","postParams","pdfExports","addSame","send_email","recipient","emails","export_fields","shownColumns","titles","pdf","GeneralAddController","_debug","Gesture","_tap","_verticalPan","_verticalSwipe","CollectorService","removed","getBestTranslation","testKeys","foundKey","jsonRecord","toJSON","_arr","eachRelationship","relationship","relKind","kind","hasManyArr","hasManyRecord","ErrorHandlerService","_capiError","_networkError","tryToTranslateMessage","strippedMessage","Service","Evented","FormsService","_forms","decamelize","formField","LocalstorageService","createKey","_this$session$current","currentuser","NeedsService","testOne","testUserlevel","testFormPrivilege","testFieldExistance","shortNordic","shortList","phoneList","startsWith","responseType","XMLHttpRequest","lastModifiedDate","onerror","keepAspectRatio","mime","reader","FileReader","dataURLtoBlob","onloadend","finalQuality","finalDownscaleFactor","scaleFactor","ctx","dataurl","filename","bstr","atob","u8arr","Uint8Array","charCodeAt","Blob","matchMedia","matches","device","modalUrl","encodeURIComponent","headerSize","exportParams","pdfContent","additionalHeaders","_iterator6","_step6","tableData","pdfDocGenerator","_pdfContent","getHeaders","putElementsInColumns","statusInfo","signature","widths","border","dateAndPlace","imgLocation","tryToExtractImages","footer","getFooter","tableHeader","bold","bigText","headertext","marginTop","margin","getStream","_maxWidth","sqrt","getBuffer","_ref","buffer","utf8","binaryArray","saveFile","_x7","getBase64","cell","fillingColumn","templateCols","additionalheaders","getLogo","fit","alignment","maxWidth","allImages","_el$firstObject","el","_step5","_iterator5","formsService","children","currentField","collectorService","child","fieldsInCommon","intersect","parentFields","childFields","isDeleted","commonField","saveRecordsInIsDeletedState","checkRowValidation","_internalModel","localeCompare","pdfSumrow","summableFieldTypes","summableFields","dropdownSums","isInteger","sumToFixed","visible","listString","valueIsInList","dewPoint","WEATHER_HISTORY_API","WEATHER_API","gestures","emberUseCapture","removeTracking","useFastPaths","EventDispatcher","useCapture","hhmmss","EUR","minimumFractionDigits","maximumFractionDigits","USD","or","_clearElement","_element","_and","and","apiImage","appVersion","_","hash","versionOnly","hideSha","shaOnly","hideVersion","showExtended","versionExtendedRegExp","versionRegExp","shaRegExp","_append","_assign","_await","_bsContains","bsContains","_bsEq","eq","_call","compute","canAddWorktime","_cancelAll","capitalizeTranslation","textToTranslate","charAt","_chunk","chunk","onlyTypes","_params$0$split2","fuckTheseImageModals","formatter","isImageModal","realField","realFieldForm","formatValue","include","recompute","empty_found","value_arr","subvalue","_compact","compare","isEqual","_compute","consoleLog","_contains","flag","currency_by_country","fieldRecord","date_diff","_dec","dec","devHelper","devModeOn","_drop","now","_momentTimezone","_emberPowerCalendarDayClasses","emberPowerCalendarDayClasses","_emberPowerSelectIsGroup","emberPowerSelectIsGroup","_emberPowerSelectIsSelected","emberPowerSelectIsSelected","_util","EnsureSafeComponentHelper","_entries","_equal","_fileQueue","_filterBy","_filter","_findBy","_flatten","flatten","_formatDate","negative","omitUnit","leadingZeros","fullHours","_formatMessage","showLeadingZeros","hideIcon","_formatNumber","formatOption","_formatRelative","_formatTime","_fromEntries","_groupBy","_gt","_gte","_hasNext","hasNext","hasPermission","check_levels","_hasPrevious","hasPrevious","_hrefTo","hrefTo","_ignoreChildren","ignoreChildren","inArray","_inc","inc","recordValue","lastIndexOf","_intersect","_invoke","_isAfter","_isArray","_isBefore","_isBetween","_isClipboardSupported","isClipboardSupported","_isEmpty","leftSide","rightSide","_isEqual","_isFulfilled","isLastElement","isNth","nth","_isPending","_isRejected","_isSameOrAfter","_isSameOrBefore","_isSame","isSunday","_date$","toLocaleDateString","weekday","isWeekend","isoWeekday","_join","_jsonStringify","jsonStringify","_keys","_lt","lt","_lte","lte","_mapBy","_map","_momentAdd","_momentCalendar","_momentDiff","_momentDuration","_momentFormat","_momentFromNow","_momentFrom","_momentSubtract","_momentToDate","_momentToNow","_momentTo","_unix","_need","_next","_noop","noop","_notEqual","notEq","_not","not","_now","NaN","_objectAt","_onDocument","_onWindow","_on","_optional","optional","_or","_perform","_pick","pick","_pipeAction","_pipe","pipe","_powerCalendarFormatDate","powerCalendarFormatDate","_previous","getProductByName","_promiseAll","_promiseHash","_promiseRejectedReason","getWithDefault","PurifyDOMHelper","_queue","randomizedColor","_range","_reduce","_rejectBy","_repeat","repeat","_reverse","formfield","shortFormat","showJson","showLinefeeds","_domPurify","sanitize","_shuffle","shuffle","singularize","_slice","_sortBy","sortIcon","sortClass","escaped","Handlebars","Utils","escapeExpression","_stringLength","stringLength","stringToArray","sumField","sumDropdownAndCheckbox","getInlineAsset","assetId","require","svgJar","svgAttrs","_makeSvg","_makeHelper","_t","_take","_task","_toggleAction","toggle","TranslateColumnHelper","_toArray","_union","inline","randomizeColor","fullname","getIcon","_utc","_values","_without","without","_xor","xor","initialize","_initializerFactory","StyleNamespacingExtras","app","register","ContainerDebugAdapter","_csv","timestamp","BUILD_TIMESTAMP","instantiate","singleton","_emberConcurrency","_setup","setupContainer","registry","baseURL","Configuration","load","_setupSession","_setupSessionService","_setupSessionRestoration","_excel","exportApplicationGlobal","theGlobal","global","globalName","GM_KEY","Config","_config$metricsAdapte","metricsAdapters","_config$environment","_userAgent","_analytics","_capi","_cdn","_collectorService","_collector","_errorHandler","_evented","_initapp","_needs","_sessionhelper","_surveys","_ttapi","initializeStoreService","instance","applicationInstance","FastBoot","hrefToClickHandler","closest","parentElement","closestLink","HrefTo","maybeHandle","removeEventListener","_routeStyles","pluralForm","rtl","general.offline","general.trynow","menu.users","BaseAdapter","toStringExtension","FirebasePlugin","logEvent","trackPage","setScreenName","Mixin","getAviData","getTable","len3","getTableFullFormat","col_ind","field_ind","tmpcell","getValidationRules","executeValidations","scope","getMessage","setError","validateThese","outsideClickHandler","onClickElsewhere","clickHandler","isDisabled","BaseValidator","defaultValidations","username_free","collectorFields","getFieldsToValidate","convertValidations","unique","multipleHours","hoursAndMinutes","baseExport","blobObj","csvString","csv_str","mapped_row","skip_headers","LocalFileSystem","requestFileSystem","PERSISTENT","fileSystem","root","getFile","entry","createWriter","writer","onwrite","evt","plugins","fileOpener2","toURL","msSaveOrOpenBlob","msSaveBlob","display","createMultiCsv","createMultiTableCsv","csv_multitable","mainHeader","exportFile","fullFileName","_exportLocalFile","_createExportLink","skip_params","filteredModel","filtered","_filterThese","all_ok","moreTestParam","testValue","remoteType","_filterModelTest","splitted_date","translatedName","camefrom","obsCameform","afterModel","init_already_run","_init_functions","setupController","staticMenu","staticMenuItems","dashboard","savedHideLeftMenus","translate","getOwnForms","needsOfArray","current_menu","normalizedRoute","matchRoutes","isMainMenuRoute","isSomeOfSubroutes","asAddingLinks","short_key","parseMeasurementName","access","totalPdfImages","pdf_content","_createDoc","spliced","headerRows","getWidths","createPdfTableElementRows","img_rows","row_ind","sub_ind","subrow","tables","text_rows","tmp_table","insertPageBreak","dontBreakRows","pageBreak","createPdfHeaderElement","getImageUriRotated","rotateImages","dataUrl","degrees","clearRect","rotate","PI","setAttribute","getImageUri","formatImagesToPdf","imgs","imgArr","formatImageToPdf","imageSize","imageObj","imageWidth","pdf_max_width","resize_factor","formatCollectorFieldsToPdfArray","return_fields","add_titles","whatAboutImages","tmpArr","incrementProperty","imgData","imgRow","imgTable","_formatDatabaseArray","_formatDatabaseCell","resolved_values","formatWeatherForPDF","exportCollectorPdf","localURL","createPdfListElements","postAddingMethods","adding_personalliggareandid06","main","emps","emp_id","adding_fivaldi_salary_csv","adding_nova_salary_csv","adding_fivaldi_salary_soap","adding_setting_absences","abcensetypes","activate","scrollTo","removeThese","removeObjects","saveParentRecord","arrayToTableFormat","row_data","row_index","extra_cols","extra_fields","extra_return_fields","formObjects","notice_ids","notices","translated_extra_cols","notice_data","row_array","notice","images","getHeaderLogo","currentModelNum","modelCount","lastModel","createPdfPage","tableMainHeader","tableSideHeader","bigTextOK","bigTextWarning","bigTextNotOk","smallTextOK","smallTextWarning","smallTextNotOk","minusArr","plusArr","uniqueFieldname","uniq","formatPdfPage","createNoticesTable","colSpan","createNoticeImages","getImageBase64","createSignaturesTable","signs","ind","sign_name","signatures","stack","createMainTable","dataArr","ext_base_arr","minus","partialIndex","plus","totalMin","totalPlus","partialIndexColor","ratingColor","rating","createMeasurementSumTable","addEmptySpace","createAveragePercentNumber","average","ratings","notice_images","createHeaders","headlineLevel","right_header","_styleNamespacingExtras","createWorksitediaryPdf","addCoverPage","addDiaryreportPages","getMinAndMaxDates","min","max","addDiaryReportPage","fetchNeededEventsFromBackend","getDiaryreportEvents","getDiaryreportMaterials","getDiaryreportTable","addDiaryreportBasicInfoSwe","addDiaryreportBasicInfo","getDiaryreportEventsOneType","getDiaryReportEvent","freetext","table_body","col1","col2","header_elems","texts","handleEventImage","imagedata","orders","getDiaryreportMaterial","order_elems","elem","subfield","translateField","boxedTable","hLineWidth","node","vLineWidth","hLineColor","vLineColor","Model","toggled","row_info","attrs","class_type","company_vatin","company_contact_person","company_phone","company_email","encoding","linebreak","quotes","integrationtype","absencetypes","onerowabsences","templateId","orderBy","absencesAfterWorktimes","Inflector","inflector","irregular","mobile","right","formSettings","editable","nro","schemaid","translatedType","disable","isLocked","dirtySettings","FormReportTemplateModel","_model","multirowlink","creatorid","last_logged","privilege_openlock","toid","owners","_didInsert","_didUpdate","_focusTrap","_recognizeGesture","_sortableGroup","_sortableHandle","_sortableItem","_style","_willDestroy","skip","modelAlias","Route","wtService","beforeModel","unlessOpenWt","showOpenWtError","retFields","fetchmultiday","fetchsingleday","_emberCopy","copy","fetchAbsenceDaysForMultiday","fecthWorkhoursForSingleDay","_fetchAbsenceDaysForMultiday","abcensesAlias","multipleDays","newRoute","GeneralAddRoute","controllerName","controllerFor","group","employer","superior","unFilteredModel","calendarRows","mapTeamData","mapAbsences","openAbsenceModal","enddate","openEditor","perDate","abcenses","_objectSpread","moment_date","new_date","refreshModel","userParams","allParams","queryString","showTeamCalendar","fetchTeamAbsences","userPromise","fetchAbsences","usersPromise","userIds","fetchBatch","allAbsences","startdate_enddate","batch","numberOfSeasons","userDetails","getUserDetails","showHistoryColumns","historyType","historyRowActions","showHolidayPayList","toggleAllSeasons","toggledSeasons","startYear","showDetailsForSeason","filterHistory","changeType","historyRowAction","_this4$removeRecord","_this4$editRecord","filteredHistoryData","removeRecord","editRecord","historyFilters","historydata","_historyData","historyData","holidayPays","getAbsenceRows","getHolidayPays","el1","el2","sortdate","absenceArr","absenceSeasonArray","abcensetype[usesholiday]","season","description","deducts","resFlag","newSeasons","years","rowR","_rowR$users$","_row$users$","holidayYear","historyrow","_Ember$get","oldArr","currentYear","currentArr","currentDays","oldDays","bookedOldDays","bookedCurrentDays","totalHolidays","totals","totalOldHolidays","totalCurrentHolidays","oldrow","currentRow","totals1","totals2","bookedSum1","bookedSum2","isHolidayReport","thisseason","lastseason","selectedYear","ignoreWhereNoDaysLeft","holidays","dateStart","nextHolidaySeason","asc","addHolidayPay","editHolidayPay","rec","removeHolidayPay","setSelectedYear","holidayPayRecord","deductsValue","checkedRows","selectedYears","importYear","selectedDelimiter","delimiterOptions","holidaysAlias","autoAssumedHolidays","showRecalculateButton","importField","usersWithHolidays","holiday","hideEmptyOnes","daysLeft","holidaySeasonChangeDate","isSameOrAfter","finalRet","perPage","recalculateHolidays","responses","setSelectedYears","editYear","currentHolidayRecord","openImportDialog","executeImport","import_file","has_header","delimiter","setFile","closeImportDialog","GeneralReportController","dateSelector","filter_fields","wagePeriods","bindto","rowSettings","massedit","sortByColumn","closeEditModal","GeneralReportRoute","excel","fetchBills","ADMINTOOLURL","bill","finally","AuthenticatedRouteMixin","resetController","isExiting","SettingsBillingBillCompComponent","getBillRows","customerid","bills","loading","products_fi","products_se","MAIN_TTAPI","setProducts","modelFor","defaultValues","init_stuff","customer","tcs","pcs","customerproduct","rfid_product","priceTypes","refreshListAndCloseModal","customerless_devices","save_and_add_bill","show_add_popup","select_device","add_device","addNewBill","changeCampaign","campaign","camp","edit_device","checkBilling","billtype","searchChanged","rcbillColumns","fixedlimitColumns","customercampaignColumns","customercampaign","fixedprice","fixedlimit","rcbill","tools","dirtyCustomer","customerSaving","price_disabled","calculated_from_promo","loginUserInfoId","loadingFixedPrices","fp","getAdminUsers","admins","getBillingStarted","billingStarted","salesmen","getCustomerProducts","customerProductsAll","customerProducts","getCampaigns","campaigns","getProductCampaigns","pCampaigns","currentCamp","getCustomersProductCampaigns","cpCampaigns","prodCamps","cp","cProd","def_camp","cmp","campaignTypes","allFixedLimits","fixedLimits","getAllProducts","camps","statuslist","contractTermOptions","billinginfo","recurringBillRows","billRows","tt3billing","tt3billRows","hasIntegrations","toggleFixedPrice","changedFixedPrice","saveFixedPrice","changeMainCampaign","found_camp","new_camp","changeContractTerm","clearCache","TT4CAPIURL","saveCampaigns","saveCustomer","changedSalesman","salesman","ENTRY_URL","forceBillingPopup","addRCBill","addFixedLimit","editBillinginfo","billingHash","btoa","tt3bills","oldMonths","showOldBills","searchObserver","doSearch","tt3service","tt3tott4","execute","report_saved_to","parent","rawoutput","ttapi2","imei","notInUse","registeredTo","commands","imeiOk","REALTTAPI","removeNow","notinuse","tagid","datetime","logs","_resolvePromise","stamps","parnterids","stamp","sendStamp","_showMessage","setRightType","cancelClicked","modalRecordSaved","returnField","taxnumber","_modal","storeRecord","recordCompComponent","addModal","currentHolidays","willInsertElement","hideMobileHeader","didDestroyElement","cleaningDone","showEmailModal","sendEmail","currentValues","updateMessage","tasks","filtered_tasks","record_id","formatted_hours","ori_site","ori_user","filterComp","_filters","types","getFilterObject","CollectorFieldCompComponent","currentValue","validated","_class","__class","_field","initValue","subFields","subForm","_useForcedProjectField","fieldComponent","observeValidationState","validateField","setModelAndValidate","wait","def","setModel","setComponent","reopenClass","positionalParams","CollectorFieldContainerComponent","fieldLabel","firstError","isMandatory","coordsString","checkSetting","no_back_forth","GetLocationByLatLng","_setAddress","saveSetting","full_address","GetLocationByAddress","_saveSettings","checkboxChanged","settingstr","checkboxChangedBackForth","settingObj","split1","split2","_successNotification","date_interval_setting","showSaveButton","configs","old_value","validateInput","servicehandler","fieldsToBeRemoved","salarytypes","stype","_overtime_types","daily_overtime","in_use","_50start","_100start","rule_creator","rule_parser","weekly_overtime","_week50start","_week100start","extrahours_overtime","_extrahours_start","_extrahours_end","time_based","_evening_start","_evening_end","_night_start","_night_end","do_not_calculate_if_overtime","_evening_checked","calculate_compensations_always","_calculate_compensations_always","_night_checked","time_based_se","alwaysOn","overtime_splitted","overtime_types","rejectBy","setRules","parseIfString","getGeneralRules","mixed","search_rule","stypes","types_arr","turnOn","setValuesForOvertimeType","getCustomFields","getCustomDayFields","daysArr","start_day","end_day","paths","paths_splitted","value_name","turnOff","updateNeededProducts","needed_products","unneeded_products","needed_product","addProduct","unneeded_product","removeProduct","searchFieldWithName","fieldKeys","onlyOneRuleForField","checkValues","value1","value2","addTimeBased","addDayBased","removeCustomTimeBased","removeCustomDayBased","createAndSaveRules","overtime_type","wt","wtypes","wtypesString","sameField","computerizeHumanInput","saveGeneralSettings","manipulateService","getSetting","setting_params","settingKey","projectSetting","projectField","changeProject","setting_default","use_missing_hours","utctime","skip_worktimegroups","minimum","maximum","dailymaximum","saldo_absence_id","auto_cut","split_basichours","isFiService","dirty","worktimegroupField","showAddSaldoAbsenceButton","createSaldoAbsence","recalculateOldSaldos","between","changeWorktimegroups","old_startdate","recalculationNeeded","changeSaldotype","terms","getTermsIndex","termsChanged","saveTermsIndex","settingSaved","second_time","field1Translation","field2Translation","collectorField","addModelObs","modelfield","updateValueFromModel","addObserver","modelChanged","modelfieldid","textInput","dropdownType","use_normal_dropdown_limit","ajax_search_limit","localStorage_size_limit","useBrowsersInternalDropdown","defaultValueForNormalDropdown","initAliases","initilizeDropdown","getSettingsFromLs","fetchFromDatabase","fetchRecordById","sendChange","use","setUseLocalStorage","loadMore","convertOptions","row_status","addFilterOptionsToParams","getText","getOptionsFromLocalStorage","setState","normalDropdownOptions","normalDropdownOptionsWithLastused","lastused","optionsForSearcheableDropdown","optionsForSearcheableDropdownWithLastused","ObserveSearch","obsValue","loadedValuesBy","modifyDatabaseItems","query_field","query_key","user_selected","add_option","_router","currentPath","modelfieldtext","option_id","option_text","orig_value","getRealOptionText","textArr","parsedid","pushToStore","saveSettingsToLs","addToLastused","used","removeFromLastUsed","setSessionRemoved","state","show_removed","clearOptions","touchMove","touchStart","touchEnd","closeOptions","normalSelect","toggleRemoved","fetchProjects","forced_params","projLoc","withinAcceptedDistance","normal_projects","parentform","show_fields","showFields","createAddRow","addRow","helperRow","loadValues","databaseField","addValue","baseField","updateDate","datevalue","timevalue","changeTime","tmpValue","fieldoptions","_Ember$Component$exte","is_image_file","base64imageCache","testQueue","fileObj","policyurl","_file","resizeImageToThumbnail","resizeMainImage","EncodingType","JPEG","Google","calcDist","user_address","calculateProjectDist","projectid","office_dist","project_address","project_dist","hasAddressSetting","calculateAddressSettingDist","routeDistanceAndTime","dist","finaldist","finaltime","showDistanceError","shortestFound","errorMsg","error_arr","fetchLocation","enableHighAccuracy","maximumAge","proj_loc","calculateDistance","errorKey","PERMISSION_DENIED","POSITION_UNAVAILABLE","TIMEOUT","removeWatch","clearWatch","locObs","projectObserver","distanceObs","loc1","loc2","loc1_latlng","loc1_parsed","loc2_latlng","loc2_parsed","spherical","computeDistanceBetween","project_loc","present_loc","dist_txt","pres_latlng","pres_loc","proj_latlng","_hours","_minutes","valarr","minute_options","hour_options","setHours","setMins","_labels","removeLabel","addLabel","selectedMonth","montharr","CollectorFieldsDropdownFieldComponent","selected_options","selected_option_ids","sel_ids","create_id_array","unselected_options","deselect","select_all","all_options","show_generated","changeFieldType","isopen","subformfields","_performSearch","_isDisabled","changeId","onchange","showOrHideCreate","createGroups","optionsUpdated","_createQueryParams","clearFieldIfResolvesEmpty","_this$model","_this$model2","offsetWidth","valueObserver","signature_pad","sig","signatureSrc","didinsert","addTag","removeTagAtIndex","queryForUser","tagListChanged","timefy","onInit","_record","_isRunning","_isStopped","giveFormattedDifference","_ticker","toggleButton","ms","asHours","onLabel","offLabel","fallbackOnLabel","getLocale","fallbackOffLabel","translations","gpsWeather","fetchByGPS","CollectorFieldsWorkPermitAttachmentModalComponent","attachments","initAttachments","valid_until","podNames","filePreviewCache","name_on_s3","formFields","allowedFields","permitTypeFields","permitType","viewOnly","shouldAbortCancel","onClose","downloadUrl","cache","URL","createObjectURL","removeChild","revokeObjectURL","_error$message","androidFile","captureImage","presignedUrls","workpermitid","reasoning","addFilePreviewToCache","every","permitTypes","initRecords","no_certificate_required","ori_employer","work_permit_type","noCertificateRequired","isLoadingRecords","loadRecords","Boolean","_this$user","workpermit_owner","_this$Collector","_this$Collector$copyR","editingOriginal","workingCopy","_record$attachments","id_type","document_number","editingType","createNewRecord","_this$workingCopy$unl","_this$workingCopy","_this$workingCopy$unl2","_this$workingCopy2","applyWorkingCopyChanges","markAsModified","hasUnsavedChanges","vastuuGroupId","isPrivilegedUser","shouldDisplayViewOnly","startEdit","isModalOpen","isConfirmModalOpen","cancelEdit","doneEdit","makeWorkingCopy","documents","doc","attachment","s3_object","_get2","discardUnsavedAttachments","_this$workingCopy$unl3","_this$workingCopy3","ConfirmModalComponent","getReasonFromLs","saveReasonToLs","onConfirm","OldReason","recordID","reasonObj","toISOString","VgButtonComponent","loadEmployer","_this$args$model","_this$args$model2","employerData","employerId","missing","emp_id_type","emp_homecountry","disabledReasonKeys","_this$args$existingRe","_this$args$existingRe2","_this$employer","_this$employer2","_response$documents","existingAttachments","successMessage","noDocumentsMessage","noNewDocumentsMessage","errorMessage","_e$payload","_e$payload$error","_errorMessage","_errorMessage2","existingRecords","org_id","org_id_country","homecountry","person_id","person_id_type","person_id_country","existing_attachments","onSuccess","refreshValues","sessionFilters","filter_field","itemArr","rangesPromise","use_index","periods","setDropdownFilterings","changeInField","setFilter","saveTheChildren","onlyArr","conditionalHides","setRecordDefaults","t3","t4","t5","setLsDefaults","setConditionalHides","addNew","fieldChanged","defaults","depends","fieldNameClass","fieldForFieldContainer","setFieldValue","formtype","fetchAbsenceDays","selectedComponent","customForms","abcense","wage_period","diary","worktask","worksitediary","presence","site_safety_observation","tooltype","preserveRecord","currentRouteName","retBanks","bank","CollectorFormAddFormsDiaryComponent","setWorkdayStrength","rowsForDate","strength","getWorkdayStrength","workforce_foremen","workforce_subcontractor","workforce_workers","presences","maincontractorId","foremen","subStrength","foremenStrength","workerStrength","uniqBy","maincontractor","CollectorFormAddFormsEmployerComponent","createEmployerRecord","businessIDError","_businessid_validation","validateBusinessId","hetuvalidation","empId","vastuuGroup","getReliablePartnerStatus","getFoundStatusMessage","getNotFoundStatusMessage","getFailedMessage","tvText","showInviteModal","showTvModal","emp_country","tv_status","messageClass","showTvReport","statusDescription","showInviteButton","loadingTvReport","getReliablePartnerHtmlreport","TvReport","CollectorFormAddFormsOrientationComponent","CollectorFormAddFormsPresenceComponent","presence_project","CollectorFormAddFormsProjectComponent","allProjects","getAllProjects","createProjectRecord","getDefaults","_defaults","biggestNumber","projectNumbers","maxNumber","CollectorFormAddFormsSiteSafetyObservationComponent","CollectorFormAddTooltypeComponent","generatePassword","workPermitUtils","getDefaultWorkPermitType","addUser","userInfo","addDefaults","generateUsername","getEmployerSuffix","t6","emp_relation","chars","generated_password","rnum","generatedName","employerSuffix","found_employers","not_found_employers","empArr","no_employers","userAlreadyExists","messageStatus","noEmployer","activeUser","fetchTax","_message","checkIfUserExists","id-country","id-type","id-value","handleRequestMessage","createUser","employers","employment_periods","address_in_home_country","post_code","post_area","contract_type","workpass","documentation_of_sent_employee","gov_org_ids","gov_org_id","addEmployer","emp_obj","emp","emp_firstname","employers_contact_person","contact_first_name","emp_lastname","contact_last_name","emp_phone","contact_phone","emp_email","contact_email","emp_address","emp_zip","emp_city","addUserToGroup","_post","setUserTaxnumber","setUserData","user_record","given_names","surnames","date_of_birth","gov_ids","gov_id","residences","getImage","setUserInfo","accessError","not_found","changeWorktimeGroup","saved_records","CollectorFormAddFormsWorksitediaryComponent","CollectorFormAddFormsWorktaskComponent","messageBox","est_hours","hoursAdding","pauseField","getStarttime","affects_overtime","currentMySite","endtimeField","_this$store$peekAll","sendWorktimeAdded","alertMissingOrientation","newRecords","descriptionSpecialValidation","storeEndtime","isSame","lastObject","CollectorFormAddFormsWorktimegroupChangeComponent","checkIfCanEdit","isSameOrBefore","destination","validationErrors","CollectorFormAddFormsWorktimegroupChangeHelpComponent","help","getHelp","Notification","requestPermission","helpText","CollectorFormAddFormsWorktimegroupChangePage3Component","worktypes","getWorktimegroupWorktypes","destinationWorktypes","getDestinationWorktypes","shouldShowMappings","getShouldShowMappings","mappedWorktypes","worktype","fieldsByName","closed","showHelp","showActionList","closeClicked","showHistory","showEdit","showRemove","showCopy","rowIsRemoved","showRestore","hiddenColumns","columnDropped","moveCol","hideColumn","showColumn","disabledClass","toggleInlineEdit","exportCsv","openExportModal","saveRows","transitionToMassedit","mappedIds","filtermodel","sortKey","updateOnDidReceiveAttrs","openGpsMap","updateSorts","filterDefaultValues","convertFilterToDefaultValues","_arguments","createExcel","handleExportActions","decrementProperty","closeShowChangeStatusForAllPages","_arguments2","_this18","_arguments3","_this19","_this20","_this21","_this22","_this23","_this24","_this25","_this26","_this27","dasherize","_this28","_ref4","_this29","allSelected","_columns","tableWidthConstraint","idsStr","_sumrowUtil","toggleSelectAll","custom_field","famoco","timeclean","getRows","formatted_data","crow","formatted_rows","parser","user_agent","user_agent_obj","UAParser","setUA","getResult","browser","engine","os","vendor","splittedMessage","old","toggleChanges","splittedUrl","whiteListUrls","getLinker","getLinks","linkIds","link_records","projField","store_records","pushPayload","linkto","showButtons","orig","removeAllLinks","link_form","recs","addLink","removeLink","saveLinks","projectChanged","link_ids","saved_links","schema_map_to_type","schema_map_to_exttype","nfcIsOn","rfid_device_id","raw_forms","hide_these_types","raw_fields","raw_form","skip_externals","tmp_types","buttonTypeChanged","buttonRow","raw_field","updateModel","buttonValueChanged","row_setting","actionBubblerA","actionBubblerB","actionBubblerC","actionBubblerD","actionBubblerE","actionBubblerF","changeButtonValueA","changeButtonValueB","changeButtonValueC","changeButtonValueD","changeButtonValueE","changeButtonValueF","projectSelected","buttons","letter","saveTheChildrenRawErrors","modalScroller","_mapFields","addNeededObservers","getFieldsToObserve","observe_field","conditions","setFieldVisibility","condition_array","areTheseMet","recordSetter","willClearRender","removeObserver","scrollIfErrors","scrollVertical","_fields","checked_rows","hide_columns","imagePromises","summableTypes","groupableColumnList","datefieldname","use_default_even_without_index","_this$getProperties","transformQuery","special_queryParams","getSideload","add_limits","pArr","newParams","formatData","pdf_formatted_data","csv_formatted_data","xls_formatted_data","calendar_formatted_data","asXlsArray","pdf_data_with_column_names","innerPromiseArray","resolved_pdf_arr","pdfRow","asPdfElementFull","pdfRows","isFulfilled","unformatted_row","date_is_set","formObj","formattedImages","formatted_cell","_this6$parseColumn2","database_value","imgPromise","getStatusChangedInfo","formatted_sumRow","formatSumRow","pdf_formatted_sumRow","field_arr","hide_columns_arr","show_columns_arr","_this$pdfSettings","pdfSettings","ret_arr","_this$getProperties2","subitem","_item$split2","_this$parseColumn4","_column$split4","formatSubfield","dateRange","rowId","statusrow","statusInfoRows","deleteChecked","restoreChecked","export_pdf_full","columnClickedMulti","colArr","sortCol","removeFieldFromOrder","rowHistory","removeHistoryModal","statusField","statusUtilRes","statusUtil","accepted","rejected","checkRow","parent_form","parent_rowid","parent_field","reloadChilds","modalHeader","main_columns","all_columns","typeIsArray","preformatted","addOptions","summableAbsenceFields","abFields","absencesByType","typeId","daySum","hideColumnFields","skipSumFields","sendFilterChange","worktimeColumns","absenceColumns","sendto","nameField","error_negative","showCustomField","showNameField","sendto_options","roles","_getProjectOwnerRole","alarmValue","_setAlarms","alarmOptions","alarm","before","saveAlarm","fieldTranslation","_delete","send_to","setDays","validateAndSetCustomDays","sendTo","projectFieldName","AppVersionDialogComponent","openModal","blocks","toDate","_setData","end_field","day_index","showRemoveIcon","css","hideRemoveIcon","boldArray","_Ember$get$split2","getRangeOfDates","fixedCellWidths","toDay","_dates","startDateField","endDateField","colorString","colorFields","hasRows","notEmpty","blockWidth","dayCount","widthInPixels","isFirst","onAdd","editRow","onEdit","isTopMenu","clickelsewhere","addableOptions","toggleOptions","addRecord","isToday","utcday","dateString","_dateString$split2","weekdayNames","_extractDates","startDay","endDay","weekNumbers","isoWeek","weekArrays","weekArray","_day","shift","formattedWeekArrays","weekObject","lastWeekNumber","weekNumber","fullScreen","toggleCustomFullScreen","togglefullScreen","toggleHideWeekend","CcbuttonComponent","integrations","running","attributes.state","started","ccbutton","_field$split2","blocking","rowHeap","fullHeapSize","numericalProgress","setStatusForAll","changeData","reqParams","array_row_ids","handled","row_ids","insert_history","changeStatusForAll","ClockcardComponent","cleanNewWorktimes","siteTooFar","getWorktimes","setMySite","_this$newWorktime","_this$openWorktime","newWorktime","openWorktime","validateFields","hide_field_on_clockcard_start","_this$worktimes$filte","seconds","_this$openWorktime2","pausesWithoutEnd","openPause","neverShow","neverShowType","neverShowFeature","hasDesiredFeature","show_field_on_clockcard_start","_this$newWorktime2","getLocation","checkIfSiteTooFar","updateWorktimes","saveAction","toStringAsyncHTML","pauseParams","pauseRecord","enforce_forced","_args5","overRideEditModalTitle","startNext","oldWorktime","createNewWorktime","closeNext","openNext","showNext","nextContainerOnTop","descriptionTooLong","setDefaultPause","force","_worktime$multipause","lockedLatitude","lockedLongitude","lockedAccuracy","_this$newWorktime3","ClockcardEndComponent","showWorktimeRoundedPopup","worktimeRoundedInfoText","ClockCardComponent","formOnchange","showAdminMode","refreshNeeded","valid","CustomExportComponent","latin1","lf","lfcr","showIntegration","loadExportList","createTemplateList","defaultsForCustomExport","absenceTypes","getAbsenceTypes","createColumnList","firstSave","isSaving","checkValidations","direction","originalIndex","dateFormatList","filterPreview","previewHasBeenLoaded","updatePreview","isLoadingPreview","fetchExport","isLoadingFile","periodDate","existing","somethingIsMissing","templateList","dateformat","static","whiteListTypes","absenceWhiteListTypes","blackListFields","dateField","getVersion","debug","debugShowIntegration","data-name","widgetPath","helpBubbleText","betaValue","removeMe","onremove","helpClicked","property","draggedWidgetType","itemType","_event$target$getBoun","getBoundingClientRect","y","pageY","scrollY","userSettings","widgets","wide","hidden_widgets","allWidgets","shownWidgets","widget_columns","isMobileOrEditingMobile","widget","dashboardMobile","mapWidgetsAndFilter","default_widgets","narrow_widgets","slice_from","dashboardView","autorefresh","doTheseBeforeRender","loadDashboard","projectFilterChange","dashboardProjectChanged","toggleEdit","editingDashboard","resetSidebar","widgetStrings","moveWidgets","saveDashboard","widgetDropped","dropTargetName","dropWidgetName","dropPlacement","changeView","refreshDebounce","moveWidget","currentWidget","currentIndex","widgetNames","disableScrolling","enableScrolling","addWidget","hasSaldos","setUserSettings","onResumed","getOntime","dashboards","storeDashboards","storeBoard","move","moveAt","lsWidgets","mobileLsWidgets","mapWidgetsToString","indexMove","x","scrollX","onscroll","translated_headers","GanttComponent","_this$args$range$spli2","containerWidth","getElementsByClassName","RowCellComponent","nonFixedMode","skeletonRows","firstLoad","didUpdateAttrs","getAbsences","onStoreEvent","absencetype","abcensetype","AbsenteesComponent","getFilter","hasMore","formattedData","setDateRanges","fetchAllAbsencesInBatches","formatAbsences","ganttData","absencesByuser","setFilterToLS","lsRange","getDateRanges","LSFilter","formatganttData","showOkAlso","tableLayout","missingWorktimesPerUser","anomalities","missing_dates","saldo","taxman_errors","loadAnomalities","setEditableSetting","closeCurrentSetting","changeLayout","gotoAnomality","anomality","query_params","saveSettings","saveSettingsAndReloadAnomalities","closeSettings","toggleCheckAll","toggleCheckRow","missingWorktimes","isEvery","sendNotificationToCheckedUsers","sendBy","getSendBySetting","getNoticeContent","sendNotice","showSettings","messageid","userids","hasSettings","isChecked","pass_end:pass_end","getDaterange","hideUserIds","selectedDateRange","unapproved_worktimes","ending_passes","missing_worktimes","recordShowOk","anomalitiesSettings","_params$project","own_settings","unSelectedUsers","showAddModal","over","under","saldos","toHoursAndMinutes","minutesLeft","_common","storeValue","settingsComponent","currentSetting","setCurrentSetting","sendMethods","showUsers","hiddenUsers","loadUsers","selectUser","deselectUser","loadProjects","projectSums","errorsByProject","addProtocol","totalDaysLeft","getHolidays","holidaySeason","isStartOfYear","totalDays","newGetHolidays","getMultiSeasonHolidays","daysleft","allDays","availableHolidayPays","yearsWithDaysLeft","siteCards","getMySites","mysites","addMysitesToCards","canWeUseThisWidget","getOpenWorktime","notifySiteCards","setRemovableIndexNull","onResumeEvent","mySitesArr","openWorktimes","proj","confirmPage","pausePage","commentPage","selectNew","isDashed","skipForcedGPS","worktimeOn","startDateAndTime","startWork","mysite","createWorktime","setEndtime","endWork","showPausePage","addPauseToWorktime","showCommentPage","addCommentToWorktime","addMySite","siteCardAlreadyAdded","removeMySite","site","cardData","WorkingNowComponent","subtle_key","selectedType","getFiltersFromLS","getUnreadMessages","markMessageAsRead","messageModalcontent","showMessageModal","setFiltersToLS","messages","formatMessageData","badgeText","subject","unReadMessages","LSfilters","readMessages","formattedSalaryData","total_hours","sortedArr","getSalarytypes","salaryData","calculateTotalHours","salarytype","accrual","percentA","percentB","userField","useSalarytypeV2","getPeriods","getSalaryData","_this6$date","allowEmptySalaryCodes","temptypes","getFieldType","salary","typeName","control","handleComp","dropdown","worktimeHours","getSaldoData","userSaldo","DashBoardWidgetsTimecardComponent","alwaysVisible","getLockedPosition","TvStatusComponent","pieData","getPieData","pieOptions","_response$employers","statusCounts","chartHeader","chartData","statuses","normalizedStatus","setHeaders","_this$data","in","workweek","capitalize","hoursToday","hourSum","loadWorktimeData","notifySaved","showWorktimeModal","minDate","getFullYear","maxDate","startOfMonth","endOfMonth","modalDate","navMonth","formattedDate","setAllData","changeCenter","changeMonth","newCenter","setMonth","selectDate","dayToBeCopied","getSpecialDays","getweekNumbersForMonth","absence","_absence$abcensetype","dayamount","exporttype","workdays","firstOfMonth","lastOfMonth","lastDate","weeksInMonth","weeks","mySites","linked_fields","show_deleted","salaryTypeFields","valueObs","filter_ids","promise_arr","selected_rows","filter_id","sel_opt","findFormRelations","rowobj","currentMySites","loadFromLocalStorage","projectFields","other_filter","real_field","findMysites","getEach","getOptionsWithSubheaders","randomId","hide_deleted","orderedOptions","filterOptionsArr","findRows","showIEPlaceholder","selectRow","searchRows","loader","closeDropdown","preventEnter","screenLimit","maximumDateIntervalInYears","datesArr","innerWidth","calendarWeeks","weekStart","startDateElement","endDateElement","changeDates","excludedField","setWagePeriods","formattedPeriods","currentPeriod","dateToday","periodEndDate","periodStartDate","lastPeriod","periodDates","setPeriod","today","dayOfWeek","lastMonday","lastWeeksMonday","color2","strokeWidth","styleStr","styleFill","styleFillColor2","viewBox","errorService","hittingWorktimes","hittingAbsences","hittingComps","pdfmixin","_pluralize","_this$get$t","formNameTranslation","_form","_pluralize2","hideTemplates","refreshRoute","recipients","useraddr","validRecipients","recipientsChanged","commandsUrl","COMMANDS_URL","reloadModules","clearBuffer","reloadEmber","getDebug","getLastToConsole","clearDevice","initial","getValue","persistValues","isChanged","tasksfield","pending","getState","setField","useTasks","loggedin","useform","getRefreshToken","clientid","addCommand","refresh_token","tasksChanged","selectedtasks","clearStorage","toggleTasks","onoff","sendCommands","projectId","getlast","notifyStarted","niceDate","export_description","export_name","exportid","throwErrors","triggerIntegration","notifyError","clearAll","notifyDone","UserlevelHelp","h","readFile","acceptedTypes","resize_data","api_format","queueObj","defaultColumns","extraColumns","globalHide","showColumnsFromLS","static_fields","supportForOldFormat","row_info.created","getTranslation","setLocalStorageColumns","clearModal","removeSetting","fullValue","isNegative","over100","tick","indexOf1","twentyfive","fifty","hundred","statusName","selectStatus","toggleClass","isEmptyArray","valuefromLS","filteredColumns","possiblyCalculateSumRow","unformatted_sumrow","customQueryparams","customQueryparamsKey","showShareLink","showPdfExport","showPdfExportFull","_currentTemplate","uses_mongo","groupObjects","_this$getGroupColumns2","getGroupColumns","columnsToExtra","columnsToShow","defaultColumnsToShow","compact","all_objects","sortByDate","unformatted_sumRow","calculateSumRow","hideFirstCheckbox","defaultfields","gpsfound","creator","setWorktimeMarkers","setProjectMarkers","topHeader","pdf_filters","get_status_info","pdf_output","pdf_output_last","report_name_text","templateColumnsNotInDefault","title_row","status_last_changed","title_text","clickable","statuspromise","statusrows","output","output_last","allRowsForExport","rowidList","sumTheseRows","sumrows","cb","export_special_pdf","littleBitUglyPdfExportMethod","exclude","getRawFilters","rawFilters","bubbleAction","_getParamsForFetchingRows","error_string","ownExportAction","show_error","sendColumns","sortDown","export_excel","csv_output","obj_columns","minus_field","output_row","getExportCols","format_export","export_share","toDataUrl","dataURL","showRemovedRows","showLockedRows","showNormalRows","showEmailDialog","filtersString","_addHistoryForSentRows","shareInputFocus","copy_success","copy_error","unsaved","last_promise","thereWereChangedRows","save_record_and_catch_errors","new_record","codes","mapMarkers","setMarker","setMarkers","setAccuracyCircle","setPosition","setRadius","mrk","bindTo","observeCenter","getClassNames","toolTipPosition","addField","removeField","HamburgerMenuComponent","mobileMenu","skvReportLink","closeHamburgerMenu","HelpBubbleIconComponent","vismaIcon","getInfoText","HorizontalFieldComponent","editing","findInput","input","modelValue","canAdd","mouseEnter","mouseLeave","sortedFields","cols2","cols2_ext","cols_ext","shown","reportComp","_setModalInfo","infoLink","nova_web_service","nova_salary_csv","netvisor_salary_rest","fivaldi_salary_soap","custom_export","infoButton","sendModalData","emailContent","basicContent","contentRow","emailContentForCustomer","productExists","integration","followupIDs","fivaldiSaveSettings","businessid","followupID","row1","row2","schema","setting_businessid","setting_followupID","setting_schema","netvisorSaveSettings","cid","customerID","setting_cid","setting_customerID","FondionSettingsComponent","nonblocking","fondion_client_id","setRecord","fondion_client_secret","fondion_tenant_id","NovaSettingsComponent","nova_url","nova_hash","customerIntegration","materialIntegration","taskIntegration","projectIntegration","costcenter","PayrollSettingsComponent","dim1","dim2","dim3","dim4","dim5","IntegrationsReportComponent","refreshRate","addMachines","getLatLng","machine","observeModel","biggest_amount","smallest_amount","scaleMultiplier","fontWeight","SymbolPath","CIRCLE","scale","currentStep","currentStepText","totalSteps","first_step","last_step","current_step_text","current_step_image","stepTexts","stepImages","go","current_step","initialMouseX","initialMouseY","initialElementX","initialElementY","scrollable","shouldShowHeaderOptions","toggleHeaderOptions","grabModal","pageX","draggedElement","offsetLeft","offsetTop","bindedHandleMouseMove","handleMouseMove","releaseModal","tryAgain","reconnecting","setTimer","reduceSeconds","reconnect","increaseTryAgain","reconnectNow","selected_users","lockPermissionField","selectedProject","unselectedUsers","selectedEmployer","preSelectedUsers","selectedUsers","PermissionsAdderAction","lockgroup","changeLockgroup","updateDateFields","pass_start","pass_end","updateUsers","confirmDiscardUnsavedChanges","alreadyOrientated","usersChanged","setupUserModel","changeUser","userEdited","userAdded","newUser","removeUserFromList","updateUserList","activateCardregister","activateCardRegister","numberCheckPattern","isInvalid","canBeEmpty","onValidate","setCountryCode","newValue","PresenceClockcardComponent","initPresence","out","inActive","outActive","checkPresenceOver16h","inoutLoading","saveRow","apiError","inDateTime","handleAutomaticCheckout","updateSecs","getIn","getOut","ProfileModalComponent","_versionInfo","initializeVersionInfo","trackAnalyticsEvent","devModeClicks","currentLanguage","dd","profileImg","setProject","image_url","shortText","noProject","PromoAdComponent","promoText","getPromoText","mail","sending","debug_email","more_info","email_message_sent","generate","own_url","editurls","urlParts","querySelectorAll","domrow","urlFor","_urls","qrUrl","return_url","video","stream","mediaDevices","getUserMedia","facingMode","_setStream","stopCamera","drawLine","begin","beginPath","moveTo","lineTo","lineWidth","strokeStyle","stroke","canvasElement","getElementById","readyState","HAVE_ENOUGH_DATA","imageBoxSize","ratio","videoWidth","videoHeight","crop","getImageData","_jsqr","inversionAttempts","parseCode","drawARbox","codeFound","getTime","requestAnimationFrame","drawScanner","topLeftCorner","topRightCorner","bottomRightCorner","bottomLeftCorner","middleTop","getMiddlePoint","middleBottom","shortLineTop","changeLength","p1","p2","shortLineBottom","middleLeft","middleRight","shortLineLeft","shortLineRight","multiplier","srcObject","getTracks","play","unmountMethod","reactComponents","render","comp","ollector","_mainDateFilter","groupByBox","showClickHere","novalues","toggleFilter","mainDateChanged","dateChanged","resetFilter","clearFilter","dateObs","onClearFilters","isDefaultOrder","orderFields","endsWith","placeholderIcon","formTemplates","templateAddingIsDisabled","saveTemplate","_setTemplate","openTemplateModal","closeTemplateModal","removeTemplate","_removeTemplate","selectTemplate","noSalarytypes","approveBtnDisabled","hiddenSalarytypes","defaultSalarytypes","getSalaryTypes","expandAll","acceptedRows","rejectedRows","userChanged","hideSalarytype","setLSsalarytypes","showSalarytype","salarytypeDropped","moveSalarytype","getSalarytypesFromLS","typesFromLS","newTypes","getFormFields","setDefaultSalarytypes","selectorTypes","reportTypes","getSalaryTypesForSelector","typesList","newList","typeValue","minimizeAll","openEditModal","formattedDay","anomaly","sumHours","sumHoursAlldays","toggleOpen","toggleChecked","shouldShow","sumValuesAlldays","showAdd","_PeriodsSaved","getRecord","saldoInsightsComponent","shownDetailsArr","showAllRows","insightsData","getInsightsData","dataStructure","saldodeducter","joined","deducters","absence_hours","item_order","order_arr","dataRows","manualEdits","datarow","shortage","dailymaxCut","cumulativeMaxCut","dataLoaded","getAllDataRows","getRowType","addhours","sortDetailsForWorktimes","hasSaldo","cut","workday_list","workday_length","saldoInsightsRowComponent","showDetails","saldoTotal","calsSaldoSum","hourFields","saldoInsightsDetailsComponent","toggleRowDetails","searchBarWidth","progressStyles","removeSearch","triggerSearchAction","incrementLoader","SignatureModalComponent","rowOrder","popperOptions","modifiers","preventOverflow","escapeWithReference","preventDropdownClose","showNotificationBadge","displayNotification","checkPromoMessages","dropdownOpen","toggleDropdown","openMessage","preventDropdownClosing","closeMessage","closeNotificationCard","markAsRead","clearAllMessages","ls_subtle_key","allowDropdownClosing","checkProps","summedRows","rowObj","summedRowsTotals","columnField","transitionAndClose","givenPassword","givenFullname","boldFullname","whiteListForms","removeData","nametest","terminate","_setHistory","_setErrorMessage","addHistory","formsAndDates","TestTypescriptComponent","TopMenuComponent","paddingPlusMarginForItem","debouncedResize","handleLocaleChange","scheduleOnce","currentLocale","padding","topMenu","TrialPeriodIconComponent","shouldShowModal","modalValues","getModalValues","daysUntilLock","showNumber","isCanceling","BILLING_URL","sub","UpgradeIconComponent","cardType","firstAid","item1","safety","item2","vehicle","item3","show_request_error","loadCompetences","setLastupdated","competence","editCompetence","userCountry","empCountry","_res$data","updated","UserDeletionComponent","isDeleting","shouldRedirect","startCountDownAndRedirect","countdown","setInterval","redirectTimeout","clearInterval","_fetchUsers","usersFromBackend","offsetPlusOne","fetchUsers","tryToGetOffsetFor","updateUser","showSelector","thereIsNextOne","thereIsPreviousOne","signin","wizard","syncstate","syncFromVismanet","syncok","syncfailed","fetchingWeather","getWeather","fetchWeatherByProject","updateWeather","calcDewPoint","toggleOverrideWeather","fetchWeatherPosition","changeWeatherType","actionList","selectedActions","jsonstr","hook","sideloads","long_help","delay_help","delay_seconds","delay_randomize","load_hook","createOnEnter","highlighted","searchText","choose","randomdelay","hooks","correct_form","is_webhook","formRecord","webhooks","logrows","shortUrl","totalAbsenceDays","totalAbsenceHours","totalWorkHours","saldosInUse","currentSaldo","WizardBuilderBillingComponent","subscribe","productName","savedErrors","validFields","name_on_card","foundError","complete","billingData","closeAndShowNotice","WizardBuilderBillingPage1Component","elementStyles","loaded","Stripe","getScript","stripe","STRIPE_KEY","fontSmoothing","::placeholder",":-webkit-autofill","invalid","cardElement","cardExpiryElement","cardCVCElement","mount","validateErrors","e_invoice_operator","e_invoice_address","invoice_ref","saveToStripeSecure","card_error","transitionToNextPage","paymentMethodId","subscription","_args3","clientSecret","confirmCardSetup","payment_method","card","billing_details","createOrUpdateSubscription","setupIntent","latest_invoice","payment_intent","confirmCardPayment","client_secret","updatePaymentMethod","WizardBuilderBillingPage2Component","transitionToOnboarding","closeAndTransitionToRoute","currentPageImage","ExportInfoWizardComponent","notfound","somethingHasBeenChanged","currentPageComponent","TranslatedCurrentPageHeader","hideNext","showStartButton","calculateIfOvertimeEvening","calculateIfOvertimeNight","daily50","daily100","dailyOvertime","editTime","eveningEnd","eveningStart","kilokm_typemeterProduct","nightEnd","nightStart","overtimeCalculateAlways","overtimeTimebased","overtimehours","perdiem","saldoAutocutter","saldoMaximum","saldoMinimum","saldoDailymaximum","saldoProduct","splitOvertimehours","timeAddingType","weeklyMaximum","weeklyOvertime","saldoStart","startWizard","collectSettingsToObject","executeSettings","executeTimetrackingPage","exucuteSalarySettingsPage","exucuteOvertimeSettingsPage","executeSaldoSettingsPage","startTourIfNeeded","closingWizard","currentPageName","addingTypes","startandend","hybrid","clockcard","setFormFieldSetting","perdiemProducts","km_typeProducts","km_type","none","meal","km","kmsade","kmandsade","evening","night","saldoAbsence","saldoSetOn","saldoSettingOK","saldoAbsences","setCapiProduct","settingName","showScroll","toggleable","tooltipDirection","splittedToggled","dailyToggled","weeklyToggled","timeBasedToggled","splitOvertimeHours","calculateAlways","projectRecord","contactPerson","_getProjects","openAddProjectModal","newProjectNumber","saveProject","projectsLength","maxProjectNumber","perdiemToggled","kmToggled","settingChanged","km_typeToggled","_removeRowIfcon","saldoAbsenceId","setSaldoSettings","checkIfSaldoAbsenceExists","customPause","customEditTime","startOnboardingWizard","checkNormalHoursSalarytypeIsOn","shortcut","turnOnNormalHoursSalaryTypeIfNotOn","turnOnNormalHoursSalaryType","inuse","partnerId","gotoSignIn","credentials","ONLY_CC_URL","signedIn","signinFailed","syncReady","syncFailed","mandatoryFields","termsAndConditionsLink","validation_error","companyPromise","prefillData","handlePhoneValidation","saveData","saveCompanyInfo","_handleError","saveUserInfo","sendToSns","valueUpdated","checkPasswords","validatePhone","validateAllAndSave","toggleError","cinfoObj","cinfo","_makeFirstEmployer","saveToAt2","userInfoObj","_returnFirstEmployer","_rejectEmployerData","first_emp","ytj_info","company_address","company_zip","company_city","_resolveData","_rejectData","arrowRight","arrowLeft","hidePrevious","lastPage","translatedPageNames","testMode","enabled","initWootric","_window","bo","browserString","wootric_survey_immediately","wootric_no_surveyed_cookie","wootricSettings","created_at","dashboard_language","modal_footprint","disclaimer","link_word","properties","surveyType","WootricSurvey","account_token","wootric_recommend_target","product_name","customMessages","followup_questions_list","detractor_question","passive_question","promoter_question","placeholder_texts_list","detractor_text","passive_text","promoter_text","event_name","workdayDays","midweekHolidayPayOn","filteredDays","specialDays","dayObj","selectDay","dayRule","showDayRule","changeYear","disableAdding","updateData","addClicked","needsForForms","permittedAddForms","addForms","selectedDayIsAllowedForCopy","selectedDayIsRestrictedForCopy","popupData","wtparams","abparams","_returnData","_notifyError","CopyComponent","findPreviousWorktime","worktimesArray","newestWorktime","canCopy","CopyPreviousDayComponent","selectedDay","showCopyPreviousDayModal","showCopyPreviousDayFinalModal","CopyPreviousDayFinalComponent","headerTitleFormatted","weekdayName","headerTitle","copiedWorktime","editableWorktimes","failed","CopyPreviousDayIntermediateComponent","selectedDate","getPreviousWorkingDay","daySelected","dayLabel","previousWorkingDay","selectedWorktimes","_this$session","selectedWorktimesTemp","selectedDateJS","selectedDayChanged","datePicked","disableEditing","WorkpermitModalComponent","loadRecord","recordId","parentRecordId","parentForm","parentRecord","showConfirmModal","showAttachmentModal","showOnlyErrorRows","filteredPermissions","showOnlyValid","currentLockGroup","lockgroups","filteredLocksPermission","locks","lock","endPass","toggleValidPasses","deleteLockGroup","lockgroupid","PermissionsEditAction","clearValues","endPermissions","editPermissions","changeCurrentLockGroup","deactivate","scripts","script","dateMemory","createProjects","createPLProjects","skv_number","createTasks","createWorktimes","starttimes","endtimes","getRandom","lastdate","createUsers","getRandomArbitrary","function","turnon","turnedon","functions","mappers","mainController","dontValidate","hasHeaderRow","_mappers$filterBy","pkMapper","shiftObject","mapper","rq","returnPromise","returnRecords","saveRecords","validateRecords","errorstr","setRecordValues","useAsPK","_schemaFields","schemaFields","_targetFields","targetFields","needle","usedFields","pkObserver","valueChangedTo","valueChangedFrom","valueChangedPk","obsSplitter","rawFile","splitname","filetype","processFile","readAsText","allTextLines","lines","_Array$from","line","splitter","tarr","_i2","_Array$from2","showFile","formOptions","headerRow","cfields","cf","froms","pk","addMapper","needle1","valueChangedMaps","removeMapper","overrideFlags","clearConsole","flagFilter","currentFlags","overrides","isDirty","allFlags","isOverriden","oldval","copyAccessToken","copyRefreshToken","overrideFlag","setAppOverride","clearAppOverride","sendToken","resetFlags","showToasts","getForms","getMe","capiFlags","getNeededSchema","getCurrentSchema","getCurrentUser","$E","storeToConsole","sessionToConsole","sessionhelperToConsole","collectorFormsObject","clearMemcache","clearPartnerMemcache","clearUserMemcache","redisInfo","redisDumpUser","redisDump","testAlarms","getFcmid","fcmid","export_salary_on","export_absence_on","export_salary_integrations","export_absence_integrations","turn_export_salary","turn","turn_export_absence","add_new_integration","save_integrations","cleanLogs","getLogsFromTtapi","channel","saveReport","removeReport","addNewReport","_refreshNeeded","userlevel_record","dropdown_options","selected_role","addOwnRole","nextUserLevel","renameRole","removeRole","hideDenyAccess","privilegeTypes","deny_access","deny_add","deny_edit","deny_remove","deny_approving","ownrows","link_to","ownrows_user","load_profile","formSettingsForRole","formFieldSettingsForRole","formFieldSettings","privilegeArray","isPrivilegeOn","setPrivilege","isFormPrivilegeOn","isFormFieldSettingOn","possible_fields","field_settings","_setPrivilege","setFormPrivilege","setFormFieldSettings","field_record","form_record","form_settings","willTransition","targetName","addproduct","productname","addproductname","removeproduct","selectProduct","reloadModel","eventCodesValue","eventCodeOptions","eventCodes","serials","filteredLogs","selectProject","rollocks","smslogsTableComponent","getLogs","filterModel","filteredEvents","eventFields","col_arr","addDiary","eventDropped","dropped_record","_event$split2","initRoute","diary_date","more","hideExports","hideActions","showColumnsWorktime","showColumnsPresence","linkedReports","mappedFilters","diaryFields","print","_print","wtPage","prPage","dorder","dpar","o","porder","ppar","worder","wpar","specialFormat","filteredItems","selectedItems","addItem","fullPdfSettings","dynamic","isWeatherLoading","weatherStringToObject","fetchNewWeather","transitionToEditRoute","dateController","projectController","GpsLocator","ownWeather","workforce_fields","workforce_by_names","getJSON","recordAdded","setWorkforceValue","parentParams","paramsFor","deviations","works","PromiseObject","presencePromise","worktimePromise","redirect","transitionToRightPage","drivinglog","hideColumns","toggleController","openDrive","distField","routeField","gaugeField","privateField","descField","setRoute","privateDrive","toggleRoute","toggleComment","gps_value","refresh_available","gps_error","directionsDisplay","directionsService","whenAvailable","callback","DirectionsRenderer","DirectionsService","positionChanged","showGauge","gauge_start","showProject","showPrivate","licenseField","startDrive","confirmDrive","end_m","start_m","endDrive","updateRoute","start_location","origin","travelMode","setDirections","routes","legs","start_address","end_address","create_new","location_end","onDriveQueried","drive","_getReliablePartnerData","VastuuGroup","modalTitle","showInviteDialog","messageButtonText","tilaajavastuuText","tilaajavastuuHiddenAddition","vgIsDisabled","reportRead","setNotChecked","setParentEmployer","setCustomization","date_checked","archive_code","codesByNumber","companyCountry","changeCountry","countrycode","getReliablePartnerData","iHaveReadIt","pdfReport","messageButtonAction","sendInviteTilaajavastuuEmail","showMessageButton","getReliablePartnerStatusAndReport","handleSuccessfulResponse","handleNotFoundResponse","handleErrorResponse","pdf_report","clearModelErrors","setMessageStatusByStatus","buildStatusMessage","showTVReport","errorFields","modelErrors","Ok","Seis","base64Report","getReliablePartnerPdfLink","tilaajavastuu_report","savedRoute","indexController","showLoader","filteredEmployers","updateReliablePartnerData","syncReliablePartnerData","AddController","employerFilesObserver","hideEdit","hideHistory","cancelRoute","_forceFetchTvPdf","_updateReliablePartnerData","_showSaveErrorNotification","_syncReliablePartnerData","emp_users_given","emp_users_given_options","autoChecked","prompt_text","_self","cdn_url","updateReliablePartnerStatusesAndReports","showSaveErrorNotification","prefix","rowIdentifier","fullMessage","forceFetchTvPdf","validItems","updateReliablePartnerPdfReport","showStatus","savedController","SavedRoute","templateName","gdata","promarr","getEventId","technicalErrorString","technicalError","insertLabel","configureScope","setTag","lastEventId","addPdfGenerate","_action","user_employer","customMeasurements","createBaseForm","base_fields","getMeasurementNumber","getSchemaidFor","fieldValues","removedMeasurement","addMeasurement","extClash","modelCreator","measurement_fields","makeid","possible","beforeSave","newName","rand","field_prefix","saveForm","removeForm","nopaginate","paginate","FormsFormAddController","FormsFormEditController","refreshQueries","initColSelecter","hasClass","removeClass","showMassEdit","showFiltersArr","ls_columns","saveColumnsToLS","hidden_columns","columnString","moreLinksClass","statusOptions","createComponent","formReport","renderer","_export_pdf","exportJoinedATReport","billing_columns","customer_columns","joined_columns","csvArr","setStatus","historyRow","viewRow","previewRow","lskey","loginToCustomer","thereIsCheckedRows","formContainsApprovedStatus","didTransition","toggleShowFields","errorState","searching","retry","IntegrationsReportRoute","IntegrationsIndexRoute","IntegrationsListRoute","IntegrationsRoute","pdfMixin","emailSending","smsSending","codeObs","projectObs","createInvitePDF","sms_placeholder","sms_number","email_address","smsnumObs","emailObs","currenturl","getLongUrl","writtenForm","longurl","ascii","character","characters","fromCharCode","projectname","longUrl","retarr","getTinyUrl","codeBlock","pdfElements","qr","getPDF","sendSms","titleid","setInviteType","unregister","invalidate","getDropdownValue","ownFields","export_print","exportData","sheetName","pojo","typeSelected","changeAddValue","savePojo","tooltypeRecord","save_these","old_row","new_amount","transaction","moveMachines","pojo_amount","old_project","found_project","old_amount","new_project","getSideloads","qp","transactions","to_fields","_this3$project","new_item","transactionid","amounts","machines","statusSearch","_resolveTransactions","tooltypes","toolgroup","_resolveTooltypes","freeAmount","handleButtons","handleInput","hideRemove","MaponController","maponPoC","unitInfo","since","lastUpdate","lastPosition","mapon_unit_id","getUnitData","unitdata","units","mileage","last_update","MaponRoute","unit_id","date_parsed","refreshRows","formReportDate","MessAgesComponent","appReady","fetchMessagesLoop","messageStack","currentMessage","local","fetchMessages","tokenHasExpired","MessAgesTypesLinkRequestComponent","MessAgesTypesMessageComponent","MessAgesTypesMessageboardComponent","_this$args$message","MessAgesTypesPromoComponent","external_height","MessAgesTypesSuperiorReplacementComponent","MessAgesTypesTaxmanValidationsComponent","MessAgesTypesUserConsentComponent","userform","popupArr","read","rowActionsObs","removeMessage","tab","selected_users_arr","selected_employer_count","selected_users_arr_formated","showColumnsUsersearch","translated_columns_userSearch","rowActionsUsersearch","showGroup","showEmployer","changeTab","userObject","addUserToList","addObject","addUsersToList","arrangedContent","addObjects","sendToAll","clearReceivers","addIndexController","users_without_phone","users_without_email","recobj","parseReceivers","recArr","receiver","message_length","multiple_sms","fillData","addController","send_sms","sticky_message","resetData","creator_name","created_date","appCtrl","hideSort","sticky","read_count","receiver_count","editMessage","autoFillData","sms_sent","true","email_sent","unstick","messageData","showRow","users_notread","users_read","receiver_row","project_image_observer","projectImage","updateImage","ersized","showAddSiteButton","serviceList","currentService","selectProjectField","isMySitesStored","showGpsButton","setNumberOfWorkersAtProjects","tmp_dict","project_ids_observer","updateSites","saveMySitesToLocalStorage","sites","getMySiteObject","addOwnedProjectsToMySites","add_these","loadEverythingToMySites","tmp_projects","saveToLocalStorage","changeService","change_service","setCurrentMySite","siteRecord","modelsite","doTransition","filteredSites","partnerids","services","linkings","currentlySelectedProjectForAddingMysite","openOverview","openFilesview","removeFilesModal","openAddSiteModalOn","addNewSiteFromMySites","mySitesProjects","found_projects","removeSiteFromMySites","removeAllSites","projectClicked","imageUpdated","site_id","addSiteNow","newsite","updateMySitesPicture","toggleEditMode","fetchNearest","getCurrentPosition","dialog_text","shortestDist","shortestProject","project_name","removeAll","localStorageId","all_sites","not_own_sites","own_sites","par","updated_own_projects","projs","proj_obj","getItemWithBackend","backend","more_sites","totalPlaceholderImgs","showEditLink","companyName","mySite","NovaCostcentersRoute","worksite","passesToBeSaved","firstGroup","lastGroup","previousGroup","nextGroup","toggleCheckbox","OrientationsSubRoute","group_key","_getPassDatesFromProject","_addNewPassPanel","_checkTVEmployerStatus","passBlockLoading","validPassBlocks","passDatesAlreadySet","fileField","placeHolder","userArray","areThereUnselectedUsers","areUserPassesValid","extras","extras_tmp","passStart","unvalid","setPassDates","setPassDatesTo","clearPassDates","checkTVEmployerStatus","removePassBlock","block_id","startDateChanged","endDateChanged","addNewPassPanel","getPassDatesFromProject","extra_info","addUserToPassBlock","dummy","oriuser","passData","queriedUsers","usersWithUniqueEmployers","getPassDataForUser","_result","oriProjId","contract_employer","reverseObjects","any","contract","contrProjId","u","_step7","_iterator7","skipZeroCheck","blocksWithoutUsers","userCount","signaturesController","checkbox_groups","selected_parents","place","disableLinks","projectHasLocks","hasLocks","mandatoryArr","showButtonNext","skip_users","userSelected","userAlreadyAdded","changeSelectedProject","orientations","users_oriented","users_oriented_obj","oris","ori","checkAllBoxes","_discardConfirmed","confirmed","parentChanged","parentSelected","selectedParentsStates","continueSaving","currentObj","oriWorkPermits","errorContext","savePasses","copyWorkPermits","passes","pass","workPermits","permit","permitCopy","unsavedRecords","sigController","signaturesMissing","checked_amount","extraFields","pdf_export","showSignatureModal","checkBoxes","subArr","addPhoto","openSignatureModal","changeSignature","ResetScrollMixin","parentName","isFoundAlready","dataWithoutLoops","nestedData","convertToNestedArray","lastindex","level","levelAsRange","trees","iteratedRows","loopParents","tempRows","levels","rowsCopied","iterate","levelsIterated","tree","nestRows","flattenStructure","breadCrumps","breadCrumpsArray","hasChildren","childrenCount","OrientationsInactivePassesController","singleselect","_this$model$count","_this$model3","rawData","passive_users","user_id","ori_id","_row$rows","yesterdayStr","oriIds","selectedRow","OrientationsInactivePassesRoute","has_errors","validate_fields","signatureField","ori_place","setSignature","addRoute","ori_date","special_warning","img_url","ActiveXObject","pass_ends_range","rollockIntegration","showMegaflexSyncDetails","limitedSyncFailedDetails","failedDetails","remainingErrorCount","syncModalHeader","syncType","syncExecutingMessage","timecleanProjects","showTimecleanModal","syncRollock","_initializeSync","accessToken","incrementProgress","syncMegaflex","processMegaflexSync","toggleErrorDetails","errorMessageKey","filteredRows","_showMegaflexSyncSummary","orientationId","orientation_id","_handlePersonSyncSuccess","_handlePersonSyncError","reason_key","message_key","rowAmount","successCount","failedCount","skipped","clearDuration","firstProject","syncTimeclean","completeSyncing","handleError","useAddonFormReport","daysBack","_this$flags$test","checkedActions","ids_array","lastprojectid","tmp_rows","userObjs","chooseUser","no_orientation","no_orientation_error","pass_start_error","pass_end_error","save_disabled","oriUserField","oriProjectField","overlap","handleData","updateDisabledButton","contracts","loadingMessage","okMessage","sendLink","callback_url","password_recovery_callbackurl","showPasswordChange","paramObs","checkHash","passwordObs","changePassword","showTable","mySiteSelected","projectDisabled","errorCode","translationKey","in_datetime","showEndLocation","worksitePresence","date_range","OrientationsAviController","OrientationsAviRoute","disableFields","cust","hideCheckbox","cget","exportShare","qParams","retArr","backendurl","beaconDataArr","user_params","usrs","wirepas","phone_imei","maxpause","scanlevel","resolution","beaconData","ownExports","export_skatteverket","contact_person_name","setContactPersonInfo","sharedAfterSave","ctrl","isUniqueAddress","isPromiseResolved","currentModel","ProjectCardListController","getTaxnumbers","showReport","_projectUsersCount","projectUsers","_taxnumbers","taxnumbers","ProjectCardListRoute","contract_project","showInfo","toggleInfo","updatePath","hiddenDashboardObjects","dashboardObjects","lsDbHide","tmp_hidden","pie_options","sensors","fetchSensorData","sensorList","core","selectedCores","selectedSensor","all_sensors","cores","getChartOptionsByType","chart_options","yellowFrom","yellowTo","redFrom","redTo","greenFrom","greenTo","transitionWithParams","targetRoute","removeDashboardObject","restoreDashboardObject","worktasks","pie_done","pie_overdue","pie_upcoming","worktask_pie","openWorktasks","fixedWorktasks","worktaskFields","pie_approved","pie_open","worktime_pie","approvedWorktimes","pie_total","presence_pie","taxmanerrors","contacts","contact","taxman_pie","contractTaxmanerrors","pie_alert","pie_check","pie_not_found","pie_ok","pie_stop","pie_waiting","tv_status_pie","as","projectFilesObserver","show_link","avi","queryObject","filterTypes","_afterSave","serialNumber","searchTerm","hasDirtyRecords","subproject","_subprojects","_setSavingFalse","changeNewSubprojectName","addSubproject","_refresh","confirm_text","_removeRecord","subprojectparams","recordid","subprojects","allSubProjects","show_linker_modal","hide_linker","tmp_links","all_links","openDialog","taxmanerror","taxmanKey","taxmanOptions","contactSet","moment_month","fetchErrors","statusFilter","formattedRows","formatTvStatus","tv_pdf","queryparams","sendMessage","prparams","getTypes","typesArr","contact_user","addSelfRegisteringHelp","addSmsHelp","addSafetyNoticeUrlCreation","safetyNoticeUrlCreationAction","projArr","projectids","qrCodeDataUrls","originalUrls","selfRegisteringHelp","smsHelpFunction","projectnumber","selfregister_url","createNewUserAndLogin","person_country","id06card","person_code","relative_name","relative_phone","id06valid","addSiteWithJustId","changeuser","change_user","add_project_with_magickey","magickey","addSite","hasRequiredFilters","absenceParams","showRemoteControl","magicKeyInit","getMagicKey","usersObs","preselected_users","groupusers","groupuser","tmpobj","forward","gotoProjectTasks","toggleUser","projectlink","cancelLinks","projecttask","coderead","RegisterServiceController","RegisterUserController","goToRegisterUrl","encoded_url","SELFONBOARDURL","registerUserController","gotoNextPage","isCompanyChanged","registerUser","replaceWith","setPersonInfo","toSignIn","toID06","registerUserId06Controller","registerUserInfoController","registerUserId06CompanyController","validate_all","allOk","verifyUser","applicationIndexController","forwardingStraightToService","customEmployer","employer_id","employer_name","employer_country","id06_number","setUserCountryByLang","schedule","countryByLang","setParams","verifyFromApi","card_id","emp_nationality","ID06_VERIFY_URL","personid","fetchCard","ID06_CARD_URL","status_code","card_holder_nationality","company_nationality","valueChangedPersonCountry","valueChangedCompanyCountry","changeEmployer","showRaksa","fetchUserWithTaxnumber","fetchUserWithBarcode","validateDuplicateTaxnumber","keyup","selectEmployer","resourcePlanningRoute","publishStartDate","CustomExportRoute","selectableIntegrations","selectedIntegration","fileCreated","toggleRowStatus","checkSettings","mapped","_integrations","getStandardIntegrations","custom","fivaldi_salary_csv","lon600_salary_xml","payroll_worktime_rest","payroll_worktime_csv","payroll_absence_csv","vismanet","showIntegrationModal","showAd","showTheseProducts","productsArr","post_add_actions","ShowSettings","addSingleButton","periodAdded","removeCheckedRows","preventUsage","devText","salarytypesText","absenceSettings","sortedModel","id_a","id_b","index_a","index_b","sortOrder","shortcuts","selectable_count","removeDuplicateFields","keysByName","useField","useName","plainFieldName","showSave","changedWorktimegroup","daily_checked","time_based_checked","customTimeBased","showDailyOvertime","sortedWeekdays","overtimeColumns","ownOvertimeColumns","worktimegroupfield","calculateSum","max_sum","calculateDayLength","asMinutes","getPause","fiveDayVacationWeekIsOn","mainSettingOn","vacation_week_length","defaultDayLength","midweek_holiday_pay","midweek_holiday_length","midwdeek_holiday_pay","closeWeekModal","editWeekRule","weekend","showOvertimeModal","closeOvertimeModal","saveOvertimeRule","weekRule","newYearParams","overtimeRules","rulejson","removeWeekRow","removeDayRow","insertRow","updateRow","ownerField","changeOwner","_creator","changeAction","billrows","showCurrency","last_month","billdate","fullPrice","currencyByCountry","_billrows","formatted_snapshot","formatSnapshot","snapshot_str","decodeURIComponent","csv","billing_desc","settingsController","updateLogo","saveLogo","currentLogo","formJson","settingsFormsFormController","adminMode","tt3Service","acceptedForms","callImportForm","import","something_was_added","formChanged","formid","exportForm","json_string","importForm","createForm","mappedLogs","modifiedData","showData","_id","field_info","formFieldController","formsController","selectedField","fieldController","hasCCFunction","ccfunctionload","hideWithExternal","hideWithSetting","hideWithType","filteredFormSettings","filteredFieldSettings","fieldIds","unsavedChanges","dirtyFields","generateExternalType","checkDuplicates","ret_name","saveField","saveDirtyForm","validateRecord","formSettingOptions","tt3ServiceAndDevMode","saveFields","toggleShowFormInfo","addSetting","reorderFields","itemModels","draggedModel","saveCCFunction","toggleSave","addCCFunctions","formController","fieldTypes","fieldSelectorFields","filteredSettings","nameDisabled","showRawOptions","EmberOptions","fieldString","splitOption","settableSettings","settingRecord","hdfile","hasDirtySettings","databaseFieldSelections","firstOption","formExternal_type","typesWhitelist","databaseFieldSelectionValues","observeDatabaseFieldSelectionValues","initDatabaseFieldSelectionValues","formFieldSettingOptions","selectedWorktimegroups","worktimegroups","turnOnSetting","turnOffSetting","saveMandatorySetting","mandatorySetting","saveFieldName","saveOptions","optionsString","hideForWorktimegroup","isAny","createSetting","removedField","productFields","customerFields","restoreField","markNotEditable","_restore","resetScroll","row_info_removed","_dec2","_dec3","_dec4","_dec5","_dec6","_applyDecoratedDescriptor","_obj","autoPauseOptions","pause_start_time","pause_length","min_workday_length","min_workday_length_hours","min_workday_length_minutes","oldPauseStartTime","oldPauseLength","oldMinWorkdayLength","_Ember$getProperties","newPauseStartTime","newPauseLength","newMinWorkdayLength","isValueCustom","pauseLengthAsString","fetchPauseSettings","_settings$pause_lengt","_settings$min_workday","extractHours","extractMinutes","changeHours","changeMinutes","savePromise","isCustom","getOwnPropertyDescriptor","GetFullObjectByAddress","_checkAndSave","_showError","formatted_address","_success","AddressCompComponent","validationErrorsFound","companyData","use_company_address","popup","getdata","BillingCompComponent","customerData","billingType","clearFields","checkMandatoryFields","getDataArray","addressInfo","InfoCompComponent","setCompanyInfo","LogoCompComponent","logoImage","saveButtonVisible","logoField","firstValue","secondValue","HolidayComponent","initvalue","isOn","loadingData","Content-Type","saveStartdate","post","NotificationCenterComponent","notificationSettings","getNotificationSettings","updateThese","channels","push_time","extraSettings","customTime","getNotificationChannels","getCustomTime","unaprrovedSetting","setCustomTime","saveNotification","notification","validationErrorTexts","settingType","customDayBased_saturday","customDayBased_sunday","customDayBased_normal","useNewOvertimeSettings","_50multiplier","_100multiplier","_50saldotype","_100saldotype","product_50saldotype","product_100saldotype","saldotype","dailymax","_week50multiplier","_week100multiplier","_week50saldotype","_week100saldotype","product_week50saldotype","product_week100saldotype","weeklyOverTimeStartsFrom","_extrahours_week_max","productsaldotype","week_max","_eveningmultiplier","_nightmultiplier","_eveningsaldotype","_nightsaldotype","product_eveningsaldotype","product_nightsaldotype","_evening_calculate_compensations_always","_night_calculate_compensations_always","overtime_period","_periodstart","_periodlength","_period50calculate_after_hours","_period100calculate_after_hours","_period50multiplier","_period100multiplier","_period50saldotype","_period100saldotype","product_period50saldotype","product_period100saldotype","period_length","calculate_after_hours","setAllSettings","toggleWeekend","bool","toggleCompCheck","rulename","toggleCustomCompCheck","saldoProductsNeeds","_i3","_Array$from3","foundRule","checkSaldoProductsNeeds","needed","unneeded","validateInputs","mid_week_holiday","customRule","validateInputsAction","disableComp","nightEnabled","eveningEnabled","allSettings","add_saturday","add_sunday","_i4","_i5","hasSplittedOvertimeRule","timeBasedNoRules","_i6","_Array$from4","_i7","pauseOptions","SalarytypesAbsencetypesComponent","showPassive","_runAutomaticSalarytypes","wtgroup","SalarytypesComponent","checkOldSalarytypes","ttapiPromise","allowrun","SalarytypesSalariesComponent","createTypes","_runAutomaticSalarytypes2","showTypes","cond","autoSalaryTypes","blackList","subcategory","getAutoSalarytypes","typesWithSaldo","mappedTypes","fieldtype","unformatted","salaryTypeNameError","worktimegroupError","isValidRecord","wortimeGroups","wg","SettingsGeneralV2ComponentsSalarytypesSalariesModalComponent","worktimeGroupLocked","SalarytypesWorktypesComponent","updateSalaryCalculationTypes","rawValues","calculations","recordToBeSavedAlso","validateSliders","foundRecord","loadingDefault","from_type","modelContentElement","scroller","animateElement","calculationTypes","cal","loadingCalculationTypes","_value$name$split2","isSaldoField","calculationsIncludesOvertimeSaldos","overlappingCalculation","calculation","translateOverlapCalc","calc","overlappingCalc","_calc$text$split2","SettingsGeneralV2ComponentsSalarytypesWorktypesModalComponent","saveCalled","WorktimeGroupSettingsComponent","selectedWorktimegroup","usersStillInGroup","showRemovingModal","removeWorktimegroupProducts","worktimegroupProducts","SettingsGeneralV2ComponentsWorktimeGroupModalComponent","autopauseChecker","isHelpContainerVisible","shouldHideHelp","currentSettingsPage","settingGroups","removedSettings","filteredGroups","currentSettings","mainGroups","subsettings","settingsJSON","_mainGroups","addGroup","subsettingTranslations","subgroupIndex","_filteredGroups","maingroup","subsetting","settingsPageSettings","allSettingsForThisPage","isActive","checkIfSettingIsOn","isThisSettingAvailable","isEditingDisabled","translatedSettings","cat","neededHelpTexts","worktimeGroupsOn","disableOnlyText","gotoSetting","toggleHelpContainerVisibility","showSavedNotice","toggleActive","_Ember$get2","_Ember$get3","handleMidweekHolidayPaySalarytype","callAutomaticSalarytypes","checkAndSetAutopause","donotRefreshAgain","searchSettings","setOpenSettingsPage","worktimegroupChanged","worktimegroupsettings","setCustomerSetting","isCustomerSettingOn","available","_unused","customTestNeeds","loadForms","_iterator8","_step8","is_addition_type","allok","isok","refreshAll","editingDisabledRules","_step9","_iterator9","checkWorktimegroupWarnings","hideSettingsFromWorktimegroups","dummySetting","hideHeader","hasReport","optionsForComponent","secondary_setting_on","setQParams","settingsPage","getFileData","toggleHelp","helpTexts","splittedTextArr","lastKeyOfArray","t7","t8","activeSetting","openSettings","dropdownSettings","optionGroupOptions","wtgroups","changeWorktimegroup","changeDropdownSetting","_value$split2","mainSetting","subSetting","clearSearch","resumeSearch","searchvalue","closeSearchResults","toggleSetting","settingname","openSubSettingsPage","settingsName","subsettingsName","refreshWarnings","settingIsLoading","filterByWorktimegroup","showSettingOptions","loadingState","showPlaceholder","showOverlay","showFormReport","showDisabledNotification","shouldShowOnlyDisable","editingDisabled","shouldCheckWarnings","getWarnings","fetchWarnings","filterSettingNeeds","negativeNeeds","WarningsComponent","hideAlertContent","hasSplitLabel","hasNonSplitLabel","settingsTitle","donotreload","formattedModel","getProductName","formList","getListOfProducts","subheader","productSettings","setting_name","option_name","worktime_fields","control_values","addrow","callIntegration","sendFile","notificationpanel","notificationGroups","saveCustomTime","service_has_products","inverseNeeds","toggleSettingShow","productPostAddMixin","number_of_boxes","delivery_street","delivery_city","delivery_zip","orderButtonArray","buyrent_options_rfid","buyrent_options_famoco","activeLevel","isSweService","servicetype","productCanBeTurnedOnNeeds","allProductNeedsAreMet","productNeedsArr","timetracker","rakentajanpaketti","rfid","productCanBeTurnedOn","fondion","rfid_modal_title","showRfidModal","sendInfoToCustomerService","updateExternal","PRODUCT_UPDATES_URL","serviceid","orderButton","c_info","rental","saveRfidData","customer_address","selectLevel","DisabledComponent","target_arr","force_refresh","projectString","userString","pic","project_obj","oldMeasurement","measurementName","measurements","_resolveMeasurement","measurementController","savedNotices","disableAutosave","eventListener","autosave","mc","parseFields","recalculateTotal","signatureFields","extrafields","skip_these","textClass","mval","pval","saveNotice","handleRequestError","timer","req_fields","autoSavePromise","markAsApproved","addToSavedNotices","cancelExtrainfoModal","saveExtrainfoModal","addParams","_setTransition","measurement","working","scaffolding","fall","electricity","garbage","dust","equipment","protection","road","helper_notices","key_arr","formattedMixin","addRowActions","createSpecialPdf","_Ember$Controller$ext","project_filter","data_rating","exportNewestPdf","customMeasurement","newest","isSaved","showDesc","fieldsObject","validateDesc","removeNotice","setUser","statusSelector","ObservePrompt","hasInfo","minusObserver","plusObserver","toggleNotice","addNotice","tmpRows","ntc","openInfo","disableStatus","mvrController","dataSetter","data_rating_pie","pie_over90under95","pie_over95","pie_under90","idx","tr_minus","tr_plus","handleSelection","charts","monthAgo","noticesSelected","not_solved","emailValid","emailNotValid","sentToEmails","extraData","self2","emailAction","emailsArr","pics","tmp_file","add_link","removeEmailModal","sendEmailAction","trController","average_rating","field_rating","totrating","trfieldkeys","trfields","toTop","sendNoticeEmail","userRecord","emailAddress","link_text","fixbydate","addToNoticeArray","closeNotice","destroy","default_values","transitionToSaved","by_date","date_obj","$utan_anm","$med_anm","$ej_akt","eachAttribute","pie_colors","skyddsrond","showNotices","export_month","launchProjectUpdate","field_obj","tmp_fields","flipped_options","contract_type_options","okToAdd","contractNumberSet","monthSet","projectSet","updateContract","contract_number","all_records","getLatestRecordEndDate","addNewContract","flipped_tax","first_worker","total_price","contract_start","contract_end","billed","missingFields","contract_record","currentContractMissingFields","contract_end_date","contract_first_worker","contract_flipped","contract_month","contract_total_price","contract_billed","contract_start_date","contract_description","removeContract","setEmployer","ccrep","rowsOnPage","errorPage","dataPage","_error","startswith","startsas","chartDataOnPage","validationsOnPage","datapages","errorpages","tzOffset","sendTaxmanFile","getApiUrl","deliveryId","projectFilter","contactNotSet","employerField","maincontractorChanged","refreshPreview","getTaxmanFile","date_start","generatingPdf","ownerChanged","rowsPerPageOptions","supportedForms","groupingIsOn","groupByColumns","saveValues","calendar","editorMode","half","columnsObserver","groupObserver","rowsPerPageObserver","group_columns","filterFieldTypes","allowedMoreFilters","baseForm","pageid","selectableFilters","moreFilterArr","field_key","queryDefinitions","addReport","date_field_found","field_name","form_fields","report_field","report_fields","reports","tmp_field","showAddReportButton","error_in_report","hideFullExportLink","useRowInfo","loadFilters","_showFilters","updateShowFilters","editorOn","editorOff","editFilters","excelArray","export_excel_page","getReportData","rep","createAdditionalPdfHeaders","headerElement","MAX_SAFE_INTEGER","addDefaultReport","defaultReport","newReport","checkedRowsChanged","report_index","ccReport","filtername","tmpFilter","defaultReports","report_prefix","_reports","allInUse","_userlevels","getUserlevels","onlyIcanSee","createdByCurrentuser","lvl","lvls","savedUserlevels","tmp_lvls","saveComboSettings","viewPermissions","rename","created_by_currentuser","useNewVersion","addNewLink","editNewLink","date_newer_warning","model_observer","date_observer","goBack","rowSaved","showSelfOrientationLink","absenceColorFrom","worktimeFields","absenceFields","dailyWorktimeSums","worktimeSums","absence_settings","showWarning","eventName","showRows","printAll","mappedData","raw","worktimeRows","showAllRowsByUser","absenceRows","printableData","_removerecord","aparams","split_date","worktime_page","absence_page","worktime_limit","absence_limit","aggregatedrows","form_status","absence_order","worktimeParams","parentFilters","setAfterSave","tests","tolerance","anomalies","showEditModal","updateTests","_reloadModel","toggleSettingsPanel","testParams","setTolerance","userSelector2","approvalController","dateinterval","project_id","userController","approvalIndexController","currentSite","previousSite","nextSite","_GeneralReportControl","sortByDates","parentModel","pushIndex","format_data","formatExport","make_pdf_export","make_csv_export","showWorkingNowRows","checked_data","use_checked_rows","showWorkingNow","avidata","FormatUtil","hideEmptyRows","historyDataLoading","newDeducterRecord","bankfields","historyOldestDate","historyAllLoaded","loadOlderHistory","accounts","userRows","usersWithBanks","reformatUserRow","account","banks","translated_columns2","earliestDate","clearAllFilters","deducterAdded","_queryParams","_queryParams2","closeEditManualEntry","onFilterHistoryChange","showDeducterModal","setBankDate","setAddhours","changeColumn","setDesc","showWorkBankHistoryModal","absencetypes_ids","existingHistoryData","getBankdeducter","getBankName","getWorkTime","getbanks","_banks","sortedNewData","combinedData","fromDate","bankf","absencetype_f","abcenserow","absencetype_id","ar","columnName","queryObj","worktimerows","accountcolumn","bankName","workrow","hoursInAccount","bankrow","_x6","closeHistoryModal","deleteBank","createNewBank","editBank","saveBank","excelHeaders","exportRows","newExportRows","reMigrateBanks","toggleHideEmptyRows","checkIfAbsenceTypeBelongsToBank","absensetype_id","bankwithAbsenceType","_loadModel","rawParams","hasFilter","queryParts","newDate","firstDate","absencetypefield","skipsaldo","showAdder","changeName","columnAlreadyInUse","editableBank","columnFound","columnError","userSelectorLimit","gantt","multiDayAbsenceFields","oneDayAbsenceFields","filteredAbsences","filteredAbsencesOneDay","filteredAbsencesManyDays","sumsByUser","absentDays","sumArray","workDays","_this$get$split2","workLog","ab","elementsIterated","absenceLog","absentdays","userSums","fetchSums","skipSumFieldsWorktimes","skipSumFieldsAbsences","saldoList","saldoEnddate","saldoStartdate","filteredStartDate","_getSideloadsWithExtras","_dateUtil","currentParams","positiveornegative","day_saldo","saldoHours","aborder","ab_row_info_status","abcenseSettings","abFilters","copy_filter","showColumnsWorktimes","showColumnsAbsences","tmp_users","filterToggler","filterVals","pdfColumns","setNewColumns","ab_params","general_params","worktime_params","timecardController","commentSaved","saveComment","clock","currentTime","isTogglerVisible","validForm","refreshing","dayStart","totalWorkRaw","resume","on_worksite","worktimeDuration","clockedTime","calculateTotalWorkingTime","tmp_totalwork","tmp_totalwork_hours","tmp_totalwork_mins","setMySitesProject","currentMySiteTooFar","sortProperties","WorkHoursObs","sorted_model","isForcedAndNotCloseEnough","projectMarker","projectMissing","calcAutoKm","showTasks","taskField","commentField","showExtrainfoModal","modalFields","db_record","value_from_ls","routeDistance","stopWorkAndSave","fieldValue","new_rec","new_worktime","change_task","emptyMySites","changeWeek","queryParam","currentWeek","sideloaded","worktimesArr","combined","filterReport","inlineEdit","typeofwork","project_owner","userSelector","_fetchTax","_fetchCardWithUID","veroApiInfoExists","birthday","birthdateField","rfid_tag_id","queryVeroApi","isNumber","InfoExists","TaxNumberMatchBirthday","CC_TVCARDIMAGE","setMessage","messageKey","setInitialValue","fetchPersonFromTaxApi","fetchCardWithUID","uid","CC_TVPERAPI","found_employer","veroApiUser","FirstName","LastName","call_cc","search_user_with_id06card","create_user_with_id06card","employerid","id06kortErrors","personidErrors","homecountryErrors","employerErrors","transitionToUserform","fetchID06Card","_getImage","_generalAddAction","addGetImageTilaajavastuu","hide_preview","getStatusFieldDefaultValue","statusDefaultValue","_statusFieldSettings$","statusFieldSettings","setting_wap_font_size","ea1card","ea2card","firecard","safetycard","onclick_default_value","disable_username_generation","username_observer","email_observer","employerPromise","generatedUsername","removeCompanyType","convertAccentedCharacters","validateAndGenerateUsername","pop","conversions","userResult","showCard","_this3$user","_this3$employer","activitycontroller","ago","fromNow","ChangePasswordController","password_changed","ChangePasswordRoute","username_changed","old_username","editingCurrentUser","change_username","new_username","replaceRoute","userIsNotAdmin","user_created","usersImage","refreshSaldo","sendTestNotification","errorText","id06kort","companyid","personalcode","showResetDialog","UsersAddIndexController","hasEmail","hasPhone","resetPsw","reset_and_send","psw","email_title","i_am_this_person","own_profile","orientations_on","showOriButton","orientate","filteredLinks","_forms$form$features","use_linker","returnLinkableFields","custom_name","linkers","linkableFields","_fields$field$feature","show_in_linker","profileImgClicked","scrollToAnchor","_this$paramsFor","emptyday","notStarted","notStartedText","notCalculatedYet","day_saldo_over_max","dailySaldoCut","saldo_settings","workday_hours","cumulative","cumulative_under_min","cumulative_over_max","dayClicked","openSaldostartModal","closeSaldostartModal","saveSaldostart","showError","_refreshRoute","bankDeducerColumns","_v","absences_for_date","fullday_absences","halfday_absences","saldo_absences","bankDeductionsSum","mark_sum_zero","max_saldo_over","tmp_sum","totalsum","bank_deductions","affects_overtime_info","reportFilter","showUserDataRemover","showUserRemover","userdata","get_data","all_forms","loopYearByYear","formDateFields","loopOnce","endYear","formUserFields","formname","_loopOnce","_setFormObject","_loop2","_loopYearByYear","outer_promise","columnsObject","formObject","formData","_setFormObjectData","_createCsv","recordArr","csvFull","csvHeaders","UsersInactiveController","UsersInactiveRoute","_fetchImagesFromTv","userStatuses","showUserSmsModal","showUserEmailModal","userSmsValidPhones","userSmsNotValidPhones","userEmailValid","userEmailNotValid","showId06Checker","addRowActionSetUserPrivileges","addRowActionCheckWithTaxnumber","addRowActionCheckID06","sendUserSms","sendUserEmail","selectProjectsModalTitle","sendInvitationTo","setUserInfoFromTilaajavastuu","not_found_user","fetchAllNeededEmployers","from_class","from_text","to_class","to_text","reason_code","need_to_be_fetched","projectsmultifield","statusAction","openSmsModal","openEmailModal","fetchImagesFromTv","verifyUsersTaxnumbers","id06CheckAction","reasonCode","removeSmsModal","removeSelectProjectsModal","removeId06CheckerModal","removeTvcardCheckerModal","inviteNow","project_info","link.projects","setInviteUser","callQueue","clearThese","caller","observeFilters","_superMultiSaver","all_users","yesterday","allUserRows","saldostart","unformattedSaldo","outOffLimitsUserRows","_rows","model_user","getSaldoFor","user_startdate","make_excel_export","get_rows_to_export","get_all_users_with_saldos","dataArray","fetchPage","getQueryParamsForExport","is_on","showSaldodeducter","hideSaldodeducter","hideandreload","superMultiSaver","defaultLimit","param_value","qparams","use_limits","orientationAddController","hideAddSame","showAddOrientation","email_send_status","email_error","phone_error","sms_send_status","reset","addOrientation","editingRow","return_data","currentData","tmpEmp","tmpuser","userData","changeFormat","newDates","newstartdate","newenddate","oldstartdate","oldenddate","worktimegroupChangeController","worktypeMappings","clearStoredValues","alertShown","notification_user","alertTimeout","transformedArray","mappings","showSlowAlert","clearTimeout","showNotification","giveThumb","json_weather","addedProjects","showTheseColumns","autodiary","saveItem","addProjects","addProject","updateRatingVisualization","tmp_weather","hideFromSaved","transitionToWizard","transitionToEvents","total_workforce","work_force","workforce","workforce_arr","splitted_item","this_field","amount_own","amount_ue","field_values","work_force_rest","updateField","openEdit","addWorkforceRow","baseRoute","ue","changeThings","link_from_last","last_day","firstController","added_completions","review_options","ratefield","phaseField","update_reviews","update_rate","rate","add_item","remove_item","display_previous","enable_next","filteredPages","hide_previous","hide_next","show_modal","started_event_list","current_event_list","completed_event_list","interrupted_event_list","additional_event_list","event_type","addStatusToRecord","event_id","edit_event","show_add_event_popup","closeModalNotes","setup","GetGPSCoords","giveThumbUp","giveThumbDown","hideCloseButtons","okButtonText","backdrop","ordered_material_list","received_material_list","event_type_options","material_settings","order_date","addMaterialToRecord","material","mat","direktivController","direktivRoute","pushToModel","removeFromModel","edit_record","add_record","setSearchOption","given_offers_list","ordered_changes_list","other_entries_list","required_extra_list","currentdate","datefield","added_reviews_and_inspections","update_date","changeOverseerSignature","changeSupervisorSignature","tmp_user","supervisor_note_list","goToNext","colorFrom","calFields","multiDayFields","filteredModelOneDay","filteredModelManyDays","openWorktaskModal","openEditorAbsence","_defaultDateRange","previousWeekStart","imagesField","photos","commentsField","hoursField","hasSignature","setFixed","cleanAndMoveOn","setImages","toggleSignature","setComment","filterOwnFields","mapTasks","queryUsers","fetchWorktasks","today_show","overdueTasks","todayTasks","futureTasks","manualFormat","notes","date_formatted","est_hours_formatted","Router","locationType","ApplicationRouteMixin","metaService","toRouteInfo","translateMetaTags","updateDescription","updateTitle","_returnAllSettled","_setThings","_setLang","into","outlet","disconnectOutlet","parentView","save_first_time_loader_text","aphorisms","greeting_arr","aphorisms_arr","greetings","aphorism","getUserServices","sessionInvalidated","sessionAuthenticated","allSettled","initCurrentMySite","again","currentPassword","newPassword","additional_fields","commonfield","after_save","paramsSet","ls_key_name","next_date","prev_date","toggleCalender","setupPermission","firstPageTransition","firstPage","pageInPossibleFirstPages","searchPage","warn","password_confirm","createService","getBack","validateOnInit","convertZohoLead","sendReport","getReport","secure","authenticator","expires_in","token_type","expires_at","sentry","release","EmberIntegration","onunhandledrejection","BrowserTracing","tracesSampleRate","beforeSend","hint","sentryIsEnabled","originalException","exception","stacktrace","frames","frame","publicUrl","culprit","_json","_rest","RESTSerializer","EmbeddedRecordsMixin","embedded","deserialize","isNewSerializerAPI","extractMeta","additional_meta","serializeIntoHash","normalizeQueryResponse","primaryModelClass","requestType","camelized","inPayload","JSONAPISerializer","keyForAttribute","_ensureRegistered","setRequestHeader","_ajax","AnalyticsService","snowplow","AndroidFileService","_args","buildCameraOptions","getCameraImage","processImageFile","resolveFileSystemURL","getFileFromEntry","ApiserviceService","backendName","callUrl","worktimeGroups","worktimeGroup","worktimeGroupId","_settings2","_settings","checkIfAutopauseIsOnForWorktimeGroup","worktimegroupId","settingParams","_ajaxRequest","processData","overrideMimeType","AjaxService","authToken","BLOCKS_URL","promiseObject","injectSideload","EmberRows","CC_URL","_clock","ttapiService","addProducts","service/product","old_prod","prods_now","moduleExists","module","split_need","need_array","debugText","addLoadProfilesForUserlevels","testFormFeature","testModuleControl","testFlag","testCurrentUserField","testServiceCountry","_need$split2","_fieldandsetting$spli2","addThese","trimmed","needed_module","module_controls","company_country","invertNeeds","preLoad","getRecords","child_ext","correctFields","div","endHTML","exe_types","filethumb","fileurl","formattedHours","formattedStatus","group_by_materialgroup","image_types","len4","len5","new_val","ref7","return_str","right_ext","startHTML","statusIcon","storeData","target_field","thisIsSignature","thumburl","translatedStatus","donotaddHTML","fuckTheseEmptyDivs","innerHTML","typeKey","Type","formattedValidUntilDate","validUntil","hoursWithClock","_row$get","subTask","materialgroup","formatDropdownSums","formatCheckboxSums","isImage","fullSrc","getModalUrl","thumbUrl","sub_value","addthis","minifyLong","formattedSums","pdfSums","translatedValue","parseDropdownSums","is_summing","summing_object","temp_arr","HTMLElement","crossOrigin","paramStr","column_name","subset","subsets","asObj","PromiseArray","formatParentFormResponse","error_name","found_key","test_keys","interval_arr","skip_levels","json_record","edit_mode","json_str","CookiesService","fullList","settingsArr","setContext","dap","setLanguageMethod","setUserContext","setCompanyContext","getCustomerProduct","get_language","getProduct","userParsedData","userCreated","valueOf","customProducts","companyParsedData","serviceType","serviceCreated","product_objects","_confirm","alertify","okBtn","cancelBtn","resolvedValue","addPossibleHitsToMessage","_vastuuGroupError","stripped_message","_error$payload","response_body","errorPrefix","product_family_id","product_plan_id","lastTimeResumed","isOffline","ontime","gpsLockedPositionChanged","formatAsNumbers","excelColumns","numFmt","formatModelToJSON","formattedRow","exportFormatted","createExportFromJSON","compressed","compressAndEncodeBase64","handleResponse","jsonString","encoder","uint8Array","compressionStream","compressedStream","chunks","_yield$reader$read","compressedArray","_chunks","binary","base64String","TextEncoder","encode","CompressionStream","pipeThrough","getReader","subarray","_arguments4","includeAllRows","formattedSumrow","getStatusInfoRows","_arguments5","testFlagFilters","variation","isBetaService","isABtesting","production","getENV","_this2$_config","clientSideId","_this2$_config$stream","streaming","NullClient","userrow","context","_config","LDClient","_initialize","resolveRegistration","launchDarkly","client","bootstrap","nonExistantFlagValue","_validateErrors","form_array","json_array","_getForm","_importForm","existing_form_array","this_is_a_new_form","_getNeededChanges","_getConfirmMessage","_addNeededRecords","_normalizeForm","_saveAllDirtyFormRecords","save_order","save_next_index","new_form","addChanges","new_features","new_fields","_testType","adds","_createRecordParams","feature_name","old_form","normalizedCurrent","normalizedNeeded","_array_diff","field_object","normalized","_encodeOptions","_getFormFields","_getFormFeatures","field_json","_getFormFieldFeatures","_decodeOptions","lenght","all_form_fields","field_ids","feature_json","formFeature","formFieldFeatures","formFieldFeature","_googleCharts","getMetadata","metadata","provideRouteAlternatives","minDist","drivingOptions","departureTime","lockAccuracy","inUse","startIfGpsIsOn","setLastError","showPosition","positionError","searchingLocation","lastError","currentLatitude","currentLongitude","currentAccuracy","resetPosition","showErrorTooltip","lastErrorHeader","lastErrorMessage","tryToLockLocation","isMapsLoaded","checkLocationChange","gloc1","gloc2","haversine","R","dLat","dLon","lat1","lat2","lon1","radians","_len","_key","deg","sin","cos","asin","iconClass","GpsService","lockLocation","mapsLoaded","errorShown","errorTooltipText","_window$google","_lastError","partialFullScreen","overlay_loader","breakpoints","md","stickyValue","showStickyNote","bp","breakPointGetter","documentElement","clientWidth","isBelowMd","isSafari","isAndroidBrowser","isMobileComputed","_format","isLogged","me2Promise","setDefaultLang","loadLangs","getMe2","createFromsAndSetInformation","initFlags","getCustomerSettings","configureSentry","configureChatBot","configureSnowPlow","allDoneMarkAppReady","addStonly","_snowplowinit","me2","zendesk_key","ZENDESK_KEY","_chatBot","_stonly","STONLY_WID","setExtra","handleAppLinks","globalInitAppServiceGotoRoute","gotoRoute","globalInitAppServiceGotoUrl","urlString","protocol","pathParts","createForms","pushCurrentUser","pushCompanyInfo","setSessionVariables","setAnalyticsContext","updateCachedUserOnSave","setTimezone","checkCompanyInfo","unsetStorage","createModels","alreadyResolved","getStorage","prevent_caching","_resolveGetMe2","updateDataFromMe2","includeId","setStorage","companyInfo","changeTimeZone","fetchSavedLanguageFromTtapi","acceptedLangs","setLang","setLocale","setAnalyticsCollectionEnabled","setUserProperty","_intl","lang_cache","use_cache","trans","makeWordChanges","makeBrandingWordChanges","formatTranslations","_addTranslations","termsSettingStr","termList","startsWithUppercase","newStr","addTranslations","syncing","hashed","getHashedKey","_namespacedKey","createId","setItemsWithBackend","obj_key","return_items","findBelongsTo","belongsToId","new_items","remove_flag","stringified","getBelongsToId","synchronize","promiseArray","synchronizeItem","when","data_to_server","sync","isFilter","resolveBelongsTo","belongsToItem","filter_array","isOneFilter","getId","json_data","realdata","MenuService","regenerateMenu","visibleItems","hiddenItems","elementSizeWithWithPaddingAndMargin","restToHidden","menuObject","getMenuObject","menuWidth","moreWidth","getTextWidth","moreIsActive","allItems","newMenuOrder","ottaMenuOrder","moveMenuOrder","reorderedItems","orderId","menuItems","font","measureText","mappedMenu","_item$link","menuItem","MetaService","metaDescription","textContent","_metrics","computedFromConfig","hasEmberTether","hasLiquidWormhole","hasLiquidTether","destinationElementId","Scroller","relationFields","asyncRelations","attributeNamesWithoutInverse","allAttributes","relationObjects","modelAttributes","attributeName","MomentService","defaultFormat","mySitesArray","loadFromLocalStorageWithBackend","hasMySites","projectimage","setToDefault","addSiteObject","setCurrentSite","_notifications","is_online","hasBeenCalled","StatusBar","backgroundColorByHexString","statusBarColor","overlaysWebView","styleLightContent","checkAppVersion","createFolder","InAppBrowser","fileSys","getDirectory","exclusive","directory","appDir","fileWrite","retWriter","onwriteend","truncate","conf","Android","img_alt","testFlags","msgFlags","permission","grantPermission","onTokenRefresh","onMessageReceived","tap","redirectRoute","redirectParams","getToken","animate","ease","getScrollableTop","getVerticalCoord","opts","fieldList","keyList","traverseList","firstKey","_modify","_getKeyType","_parseKey","_cleanKey","_isKeyNegation","fieldobj","isKeyOn","isFieldSettingOn","_turnOff","_turnOn","_turnOn_field","_turnOff_field","_turnOn_fieldSetting","_turnOff_fieldSetting","SessionService","refreshPromise","expiredRecoveryStarted","makeTokenOld","expiresIn","expiredRequest","currentRoute","captureMessage","SettingsService","clearCacheAndRefreshNeeded","SkvReport","_store","SurveysService","modules_array","_textMeasurer","Clock","interval","siteid","cleanUnneededQueryParams","_tour","TTAPI","clientv","_request","checkIfUserHasSaldos","userWorktimegroup","getSaldoSettings","linkToPdf","linkText","businessId","inviteCreator","vgCustomerId","getCustomerId","formatUrl","customer-identifier","getVgCustomerId","customerIdentifier","tour","plusButton","createTourSteps","showCancelLink","attachTo","highlightClass","copyStyles","addSteps","openWt","Adaptive","_private","BooleanTransform","DateTransform","NumberTransform","Transform","serialized","deserialized","StringTransform","hetu","uniquenum","checknum","concatted","checknumClaculated","nums","$1","checksum","$2","_calculatePosition","_canUseDom","_me2$userrow$user$","chat","lvchtarr","data-chat-id","zESettings","webWidget","departments","zE","readOnly","_country","invoices","comissions","activity","billinginfomissing","tos","invoicesat2Netvisor","invoicesat2","invoicesat1","invoicesat2legacy","invoicesat1legacy","shouldFormatHours","loadedScripts","head","applicationDirectory","locales","_objectTransforms","addData","make","createDataURL","_removeFromDom","_renderClassicChart","_renderMaterialChart","PLATFORM","context_customer","context_product","context_user","contexts","contextGenerator","g","GlobalSnowplowNamespace","parentNode","insertBefore","appId","snowPlow","app_id","webPage","performanceTiming","customer_name","organization_no","countryiso","business_unit","customfield_customer1","r12","user_type","registration_date","eventType","pseudoClicks","trackContent","minimumVisitLength","heartbeatDelay","notEditable","onlyOption","StonlyWidget","_api","scriptPath","apiPath","sPath","onreadystatechange","metaName","rawConfig","getAttribute","runningTests","defaultLocale","CRM_PATH","BEACONBACKENDURL","CC_TVEMP","CC_TVREP","CC_URL_TVPER","CC_URL_TVCARD"],"mappings":"AAAA;kvICAAA,OAAA,yBAAA,CAAA,UAAA,iCAAA,SAAAC,EAAAC,GAGAC,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAL,EAAAM;MCQeC,EAAAA,QAAYC,OAAOC,EAAAA,QAAkB,CAChDC,cAAeC,MAAAC,OAAAC,UACfC,QAASH,MAAAC,OAAAC,UACTE,KAAMJ,MAAAC,OAAAC,UACNG,QAASL,MAAAC,OAAAC,UACTI,MAAON,MAAAC,OAAAC,UACPK,cAAeP,MAAAC,OAAAC,UAGfM,KATgD,WAU5CC,KAAKC,OAALC,MAAAF,KAAeG,WACfH,KAAKI,cAAgB,CACjB,UACA,mBACA,cACA,4BAIRC,yBAnBgD,SAmBvBC,EAAQC,EAASC,EAASC,GAC/C,GACe,MAAXH,GAC8B,0CAA9BE,EAAQE,kBAIR,OAAOV,KAAKC,OAALC,MAAAF,KAAeG;AAFtBH,KAAKF,cAAca,gBAAnB,GAAAC,OAAsCH,EAAYI,OAAlD,KAAAD,OAA4DH,EAAYK,OAMhFP,QAAShB,MAAAwB,SAAS,2CAA2C,WACzD,IAAIR,EAAU;AAKd,OAJIP,KAAKJ,QAAQoB,kBAEbT,EAAO,cAAP,UAAAK,OAAqCZ,KAAKJ,QAAQqB,KAAKC,cAAcC,eAElEZ,KAGXa,KAAM7B,MAAAwB,SAAS,iCAAiC,WAC5C,MAA2B,gBAAvBM,EAAAA,QAAOC,aAAiC/B,MAAAN,IAAIe,KAAM,SAASuB,KAAK,YACzDhC,MAAAN,IAAIe,KAAM,SAASuB,KAAK,YACvBC,EAAAA,QAAUC,aAG1BC,UA7CgD,SA6CtCpB,EAAQC,EAASC,GACvB,IAAMJ,EAAgBb,MAAAN,IAAIe,KAAM;AAEhC,GAAIQ,GAAWA,EAAQmB,QAAUC,MAAMC,KAAKzB,GAAe0B,SAAStB,EAAQmB,OAAQ,CAChF,IAAMI,EAAY;AAClBA,EAAUC,aAAexB,EAAQmB,MACjCI,EAAUzB,OAASA,EACnByB,EAAUE,WAAazB,EAAQ0B,UAC/B3C,MAAA4C,IAAInC,KAAM,aAAc+B,GAG5B,OAAO/B,KAAKC,OAAOK,EAAQC,EAASC,IAGxC4B,gBA3DgD,WA4D5C,OAAO7C,MAAAN,IAAIe,KAAM,WAAWqC,MAAM9C,MAAAN,IAAIe,KAAM,QAAQsC,EAAE,kCAG1DC,uBA/DgD,SA+DzBjC,EAAQC,EAASC,GAuBpC,OAtBIA,GAA8B,WAAnBgC,EAAOhC,IAAwBA,EAAQmB,QAC5B,mBAAlBnB,EAAQmB,OACRpC,MAAAkD,IAAAC,SAAS1C,KAAM,kBAAmB,KAEtCQ,EAAQmC,OAAS,CACbhB,MAAOnB,EAAQmB,MACfO,UAAW1B,EAAQ0B,UACnBU,UAAWpC,EAAQqC,aAEhBrC,EAAQmB,aACRnB,EAAQ0B,iBACR1B,EAAQqC,MAEfrC,GAA8B,WAAnBgC,EAAOhC,IAAwBjB,MAAAuD,QAAQtC,EAAQmC,UAC1DnC,EAAQmC,OAAS,CACbhB,MAAOnB,EAAQmC,OAAO,GAAGI,MACzBb,UAAW1B,EAAQmC,OAAO,GAAGK,UAIrCxC,EAAQmC,OAAS,CAACnC,EAAQmC,QAEnB3C,KAAKC,OAAOK,EAAQC,EAASC,IAGxCyC,yBAzFgD,SAyFvB3C,EAAQC,EAASC,EAASC,GAC/C,OAAOT,KAAKC,OAAOK,EAAQC,EAAS2C,KAAKC,UAAU3C,EAAQmC,QAASlC,IAGxE2C,YA7FgD,SA6FpCC,EAAOC,GAOf,GANID,EAAME,MAAQF,EAAMG,QACpBF,EAAYD,EAAME,KAAO,IAAMF,EAAMG,aAC9BH,EAAME,YACNF,EAAMG,OAGbH,EAAMI,SAAU,CAChB,IAAMA,EAAWJ,EAAMI;AAEvB,cADOJ,EAAMI,SACNA,EAGX,OAAOzD,KAAKC,OAAOoD,EAAOC,IAG9BI,mBA7GgD,SA6G7BC,EAAIL,EAAWM,GAC9B,IAAI9C,EAAMd,KAAKC,OAAO0D,EAAIL,EAAWM;AAIrC,OAHIA,EAASC,gBAAyD,QAAvCD,EAASC,eAAeC,aACnDhD,GAAO,mBAEJA;;MCjIAiD,EAAAA,QAAa3E,OAAO;;MCIpB4E,EAAAA,QAAGC,eAAe7E,OAAOC,EAAAA,QAAkB,CACtDS,cAAeP,MAAAC,OAAAC,UACfI,MAAON,MAAAC,OAAAC,UAEPc,QAAShB,MAAAwB,SAAS,2CAA2C,WACzD,IAAIR,EAAU;AAKd,OAJIP,KAAKJ,QAAQoB,kBAEbT,EAAO,cAAP,UAAAK,OAAqCZ,KAAKJ,QAAQqB,KAAKC,cAAcC,eAElEZ,KAGXa,KAAMC,EAAAA,QAAO6C,IAAIC,MAEjB9D,yBAfsD,SAe7BC,EAAQC,EAASC,EAASC,GAC/C,GAAe,MAAXH,GAAoC,gBAAlBE,EAAQmB,MAG1B,OAAO3B,KAAKC,OAALC,MAAAF,KAAeG;AAFtBH,KAAKF,cAAca,gBAAnB,GAAAC,OAAsCH,EAAYI,OAAlD,KAAAD,OAA4DH,EAAYK;;MClBrEkD,EAAAA,QAAGC,eAAe7E,OAAOC,EAAAA,QAAkB,CACtDkB,QAAShB,MAAAwB,SAAS,2CAA2C,WACzD,IAAIR,EAAU;AAKd,OAJIP,KAAKJ,QAAQoB,kBAEbT,EAAO,cAAP,UAAAK,OAAqCZ,KAAKJ,QAAQqB,KAAKC,cAAcC,eAElEZ,KAGX6D,WAAY,yBACZC,UAAW,eACXjD,KAAMC,EAAAA,QAAO6C,IAAII;;MCfNP,EAAAA,QAAa3E,OAAO;;MCApB2E,EAAAA,QAAa3E,OAAO;;MCApB2E,EAAAA,QAAa3E,OAAO;;MCApB2E,EAAAA,QAAa3E,OAAO;;MCApB2E,EAAAA,QAAa3E,OAAO;;MCApBmF,EAAAA,QAAmBnF,OAAO,CACrCiF,UAAW,UACXG,kBAAmB;;MCFRC,EAAAA,QAAmBrF;;MCAnBqF,EAAAA,QAAmBrF;;MCAnB2E,EAAAA,QAAa3E,OAAO;;MCApBqF,EAAAA,QAAmBrF;;MCAnBqF,EAAAA,QAAmBrF;;MCAnB2E,EAAAA,QAAa3E,OAAO;;MCApB2E,EAAAA,QAAa3E,OAAO;;MCCpBsF,EAAAA,QAAUtF,OAAO,CAC5BiF,UAAW9E,MAAAwB,UAAS,WAChB,OAAOf,KAAK2E,kBAAoB;;MCHzBZ,EAAAA,QAAa3E,OAAO;;MCApBqF,EAAAA,QAAmBrF;;MCCnBG,MAAAV,OAAYO,OAAO,CAC9BwF,KAAMrF,MAAAC,OAAAC,UAENoF,KAH8B,WAGvB,IAAAC,EAAA9E;AACH,OAAOT,MAAAN,IAAIe,KAAM,QACZ+E,QAAQ,qBAAsB,CAC3BC,SAAU,SAEbC,MAAK,WAAA,OAAMH,EAAKI,YAEzBA,MAV8B,SAUxBjE,GACF,OAAOA;;MCNA+C,EAAAA,QAAG7E,YAAYC,OAAOC,EAAAA,QAAkB,CACnDQ,MAAON,MAAAC,OAAAC,UACPK,cAAeP,MAAAC,OAAAC,UAEfc,QAAShB,MAAAwB,SAAS,2CAA2C,WACzD,IAAIR,EAAU;AAKd,OAJIP,KAAKJ,QAAQoB,kBAEbT,EAAO,cAAP,UAAAK,OAAqCZ,KAAKJ,QAAQqB,KAAKC,cAAcC,eAElEZ,KAEXa,KAAM7B,MAAAwB,SAAS,gCAAiC,iBAAiB,WAC7D,MAA2B,gBAAvBM,EAAAA,QAAOC,aAAiCtB,KAAKH,MAAM0B,KAAK,aACjDvB,KAAKH,MAAM0B,KAAK,aAMpBF,EAAAA,QAAO6C,IAAIiB,cAEtBd,UAAW9E,MAAAwB,UAAS,WAKhB,OAAOf,KAAK2E,qBAGhBtE,yBA9BmD,SA8B1BC,EAAQC,EAASC,EAASC,GAC/C,GAAe,MAAXH,GAAsC,0CAApBE,EAAQ4E,QAG1B,OAAOpF,KAAKC,OAALC,MAAAF,KAAeG;AAFtBH,KAAKF,cAAca,gBAAnB,GAAAC,OAAsCH,EAAYI,OAAlD,KAAAD,OAA4DH,EAAYK,OAMhF6D,gBAtCmD,WAuC/C,IAAIU,EAAOhE,EAAAA,QAAO6C,IAAIoB;AAItB,MAHyB,MAArBD,EAAKE,MAAM,EAAG,KACdF,EAAOA,EAAKE,MAAM,IAEfF,GAGXhC,MA9CmD,WAgD/C,MAAsB,QAAlBhC,EAAAA,QAAOmE,OACAjG,MAAAkG,KAAAC,QAAQ,IAEZ1F,KAAKC,OAALC,MAAAF,KAAeG;;MCzDf4D,EAAAA,QAAa3E,OAAO;;MCCpBsF,EAAAA,QAAUtF,OAAO,CAC5BiF,UAAW9E,MAAAwB,UAAS,WAChB,OAAOf,KAAK2E,kBAAoB;;MCFzBD,EAAAA,QAAUtF,OAAO,CAC5BiF,UAAW9E,MAAAwB,UAAS,WAChB,OAAOf,KAAK2E,kBAAoB;;MCFzBD,EAAAA,QAAUtF,OAAO,CAC5BiF,UAAW9E,MAAAwB,UAAS,WAChB,OAAOf,KAAK2E,kBAAoB;;;;;;;;;;;qUCIxC,EAAAgB,EAAAC;IAEqBC;;;;;;8DACFxE,EAAAA,QAAOyE,uCACJzE,EAAAA,QAAO0E,mCACdC,EAAAA;AAWf,eARAzG,MAAM0G,YAAYC,OAAO,CAErBC,kBAAmB,CAAC,kBAEpBC,YAAa,MACbC,aAAc,QAGdC,OAAOC,gBAAkBA,eAAeC,QAAQ,OAAQ,CACxD,IAAIC,EAAevD,KAAKwD,MAAMH,eAAeC,QAAQ;AACrD3H,OAAO8H,KAAKF,GAAcG,SAAQ,SAAUC,GACxCxF,EAAAA,QAAO6C,IAAI2C,GAAOJ,EAAaI,MAInCC,UAAUC,cAAgBC,aAAaR,QAAQ,cAC/CjH,MAAA4C,IAAI5C,MAAO,aAAa,GAGxB8B,EAAAA,QAAO6C,IAAI+C,SACX1H,MAAA4C,IAAI5C,MAAO,aAAa,GAG5BA,MAAM2H,IAAM,YACwB,IAA5B3H,MAAAN,IAAIM,MAAO,cACPuH,UAAUC,cACVC,aAAaG,WAAW,aAE5BC,QAAQC,KAAK,uCACb9H,MAAA4C,IAAI5C,MAAO,aAAa,KAEpBuH,UAAUC,cACVC,aAAaM,QAAQ,YAAa,MAEtCF,QAAQC,KAAK,sCACb9H,MAAA4C,IAAI5C,MAAO,aAAa,KAIhCgI,MAAMC,gBAAkB,KAExB,EAAAC,EAAAvI,SAAiB2G,EAAKxE,EAAAA,QAAOyE;MC7Cd4B,EAAAA,QAAiCtI,OAAO,CACnDuI,oBAAqBtG,EAAAA,QAAO6C,IAAI0D,kBAAoB,SACpDC,SAAUxG,EAAAA,QAAOwG,SACjBC,YAHmD,SAGvChH,EAAKG,GAEb,OADAA,EAAK8G,UAAYxI,MAAAN,IAAIe,KAAM,YACpBA,KAAKC,OAAOa,EAAKG,IAG5B+G,QARmD,SAQ3C/G,GAAM,IAAA6D,EAAA9E;AACV,OAAO,IAAAT,MAAAkG,KAAAwC,SAAiB,SAACvC,EAASwC,GAC9B,OAAOpD,EAAK7E,OAAOgB,GAAMgE,KAAKS,GAAS,SAACyC,GAGX,UAArB5I,MAAA6I,OAAOD,IAEPlH,EAAKoH,SAAU,EACfvD,EAAKwD,QAAQ,qBAAsBrH,GAEnCyE,EAAQzE,KAERiH,IACA3I,MAAAkD,IAAA8F,MAAMzD,GAAM,WAAA,OAAO0D,SAASC,KAAOpH,EAAAA,QAAOqH,UAAU;;AC9BxE,IACIC,EAAU,GAAGA,UAcLpJ,MAAMV,OAAO+J,OAAO,CAG5BnH,QAAS,WACL,OAAOJ,EAAAA,QAAO6C,IAAI0D,mBAEtBiB,UAAW,SACXC,gBAAiB,WAIb,MAFe,0BACH5F,KAAKwD,MADF,4BAWnBqC,kBAAmB,SAAU5H,GACzB,IAAI6H,EAAGzI,EAAS0I;AAChB,OAAIjJ,KAAKkJ,QACElJ,KAAKmJ,oBAGhBH,EAAI,IAAII,EAAAA,QAAEC,SACVJ,EAAOjJ,KACPO,EAAU,KACNY,IACAZ,EAAU,CACN+I,cAAe,UAAYnI,IAGnCiI,EAAAA,QAAEG,KAAK,CACHzI,IAAKmI,EAAKxH,UAAYwH,EAAKJ,UAC3BW,SAAU,OACVjJ,QAASA,EAETkJ,SAAU,EACVC,WAAY,EAEZC,QAAS,SAAU1I,GAKf,OAFAA,EAAOgI,EAAKW,eAAe3I,GAC3BgI,EAAKY,cAAc5I,EAAMgI,GAClBD,EAAEtD,WAEb/D,MAAO,SAAUmI,GAGb,OAFA9C,aAAaG,WAAW,6BACxBqB,SAASuB,SACFf,EAAEd,OAAO4B,MAGjBd,EAAEgB,YAGbC,yBAA0B,SAAUC,GA0BhC,OAzBAd,EAAAA,QAAEe,KAAKD,GAAO,SAAUE,EAAY7G,GAChC,OAAO6F,EAAAA,QAAEe,KAAK5G,EAAK8G,SAAS,SAAUC,EAAWC,GAC7C,IAAIC,EAAUC;AACd,IACqB,oBAAhBF,EAAOG,MAA8C,qBAAhBH,EAAOG,OACnB,WAA1BlI,EAAO+H,EAAOI,SAgBd,OAdAF,EAAO,IAAI7I,MAAM,GACjB4I,EAA8D,mBAAnD3L,OAAO+L,UAAUC,SAASC,KAAKP,EAAOI,SACjDvB,EAAAA,QAAEe,KAAKI,EAAOI,SAAS,SAAUI,EAAWC,GACxC,IAAIrH;AACJ,OAAkB,IAAdoH,GAA8B,KAAXC,EACXd,EAAME,GAAYC,QAAQC,GAAWW,cAAe,GAE5DtH,EAAK6G,EAAWQ,EAASD,EAClBN,EAAKS,KAAK,CACbvH,GAAIA,EACJ5E,MAAOiM,QAIXd,EAAME,GAAYC,QAAQC,GAAWK,QAAUF,QAI5DP,GAEXL,cAAe,SAAU5I,EAAMgI,GAC3B,IAAIkC,EAAgBC,EAAiBC;AA6GrC,OA5GApC,EAAOjJ,MACFmC,IAAI,QAAS8G,EAAKgB,yBAAyBhJ,EAAKiJ,QACjC,MAAhBjJ,EAAKqK,SACLrC,EAAK9G,IAAI,WAAYlB,EAAKqK,QAAQC,UAElB,MAAhBtK,EAAKqK,SACLrC,EAAK9G,IAAI,UAAWlB,EAAKqK,QAAQE,SAErCvC,EAAK9G,IAAI,UAAWlB,EAAKwK,SAIzBN,EAAiB,GACjBE,EAAc,GACdD,EAAkB,CACd,mBACA,qBACA,gBACA,iBACA,iBACA,mBACA,gBAGJhC,EAAAA,QAAEe,KAAKlJ,EAAKiJ,OAAO,SAAUwB,EAAO3M,GAChC,IAAI4M,EAAWC;AA6Df,OAzDAD,EAAYD,EAAMG,WAClBD,EAAmB,GAEnBxC,EAAAA,QAAEe,KAAKpL,EAAMsL,SAAS,SAAUyB,EAAgBC,GAC5C,IAAIC,EAAMC,EAAKC,EAAMC,EAAUC;AAkD/B,OAhDAJ,EAAO,KACPI,EAAkB,CAAC,WAAY,gBAAiB,YAAa,0BAEvDH,EAAMF,EAAerB,KAAO/B,EAAQmC,KAAKsB,EAAiBH,IAAQ,GACpEF,EAAepB,SAEfwB,EAAWJ,EAAepB,QAAQpH,UAEG,IAA1B8H,EAAYc,KACnBd,EAAYc,GAAY,IAG5Bd,EAAYc,GAAUjB,KAAKS,GACC,kBAAxBI,EAAerB,MAAoD,2BAAxBqB,EAAerB,KAC1DsB,EAAOhI,EAAAA,QAAGqI,QAAQF,EAAU,CACxBG,OAAO,IAEe,WAAnBR,GAKmB,aAAnBA,EAJPE,EAAOhI,EAAAA,QAAGuI,UAAUJ,EAAU,CAC1BK,QAAS,KACTF,OAAO,IAOoB,MAAxBP,EAAeO,OAAiBP,EAAeO,MACtDN,EAAOhI,EAAAA,QAAGuI,UAAUJ,EAAU,CAC1BG,OAAO,KAGTJ,EAAOP,EAAUc,cAAgB,IAAMX,EAGzCE,EAFArD,EAAQmC,KAAKM,EAAiBc,IAAS,EAEhClI,EAAAA,QAAGuI,UAAUJ,EAAU,CAC1BG,OAAO,IAGJtI,EAAAA,QAAGuI,UAAUJ,EAAU,CAC1BG,OAAO,MAKfN,EAAOhI,EAAAA,QAAGgI,OAGNJ,EAAiBE,GAAkBE,KAGvCb,EAAeQ,GAAaC,KAExCT,EAAiBnL,KAAK0M,oBAAoBvB,EAAgBlK,EAAKiJ,OAE/Dd,EAAAA,QAAEe,KAAKkB,GAAa,SAAUM,EAAWgB,GACrC,IAAIC;AAEJ,GADAjB,EAAYA,EAAUE,YACjBV,EAAeQ,GAIhB,OAFAiB,EAAa,IACFC,KAAO7I,EAAAA,QAAGgI,OACbb,EAAeQ,GAAaiB,KAWrCxD,EAAAA,QAAEe,KAAKgB,GAAgB,SAAUQ,EAAWiB,GAC/C,OAAQE,IAAInB,GAAaoB,EAAAA,QAAe3N,OAAO4N,EAAAA,QAA0BJ,OAGjFK,aAAc,SAAUC,GAEpB,OAAO9D,EAAAA,QAAEe,KAAKnK,KAAKkK,OAAO,SAAUyB,EAAW5M,GAE3C,OAAOmO,EAAMC,UAAUxB,OAI/Be,oBAAqB,SAAUvB,EAAgBjB,GA4B3C,OA3BAiB,EAAc,WAAiB,CAC3BiC,KAAMpJ,EAAAA,QAAGgI,KAAK,UACdqB,QAASrJ,EAAAA,QAAGgI,KAAK,UACjBsB,IAAKtJ,EAAAA,QAAGgI,KAAK,WACbuB,KAAMvJ,EAAAA,QAAGgI,KAAK,UACdwB,QAASxJ,EAAAA,QAAGgI,KAAK,UACjByB,gBAAiBzJ,EAAAA,QAAGgI,KAAK,WAE7Bb,EAAc,YAAkB,CAC5BuC,IAAK1J,EAAAA,QAAGgI,KAAK,UACb2B,UAAW3J,EAAAA,QAAGgI,KAAK,UACnB4B,QAAS5J,EAAAA,QAAGgI,KAAK,UACjBqB,QAASrJ,EAAAA,QAAGgI,KAAK,UACjBsB,IAAKtJ,EAAAA,QAAGgI,KAAK,WACb6B,aAAc7J,EAAAA,QAAGuI,UAAU,uBAC3BuB,YAAa9J,EAAAA,QAAGgI,KAAK,UACrByB,gBAAiBzJ,EAAAA,QAAGgI,KAAK,WAE7Bb,EAAc,oBAA0B,CACpC0B,KAAM7I,EAAAA,QAAGgI,KAAK,UACd+B,MAAO/J,EAAAA,QAAGgI,KAAK,UACfgC,aAAchK,EAAAA,QAAGqI,QAAQ,gBAEzBnC,EAAM+D,gBACN9C,EAAc,WAAe8C,cAAgBjK,EAAAA,QAAGuI,UAAU,iBAC1DpB,EAAc,YAAgB8C,cAAgBjK,EAAAA,QAAGuI,UAAU,kBAExDpB,GAEXvB,eAAgB,SAAU3I,GACtB,IAAIiN,EAAa3K,EAAMsD;AAGvB,IAAKA,KADLqH,EAAclO,KAAKf,IAAI,eAEnBsE,EAAO2K,EAAYrH,GACnB5F,EAAI,MAAU4F,GAAOtD;AAEzB,OAAOtC,GAEXiN,YAAa,CACTC,cAAe,CACX9D,QAAS,CACL+D,UAAW,CACP1D,KAAM,WACN2D,SAAU,CACNC,WAAW,IAGnBC,QAAS,CACL7D,KAAM,WACN2D,SAAU,CACNC,WAAW,IAGnBE,YAAa,CACT9D,KAAM,WACN2D,SAAU,CACNC,WAAW,KAIvBG,WAAY,CACRC,KAAK,EACLC,MAAM,EACNC,QAAQ,IAGhBC,KAAM,CACFxE,QAAS,CACLwE,KAAM,CACFnE,KAAM,SACN2D,SAAU,CACNS,UAAU,EACVC,QAAQ,EACRC,cAAc,OAMlC7F,iBAAkB,WACd,IAAIH;AAMJ,OALAA,EAAI,IAAII,EAAAA,QAAEC,SACH,GACPrJ,KAAK6J,cAAc3G,KAAKwD,MADjB,IAC8B1G,MAErCgJ,EAAEtD,UACKsD,GAEXiG,aAAc,SAAU1L,EAAM2L,GAC1B,QAAKlP,KAAKkK,QAGQ,SAAdgF,IACIlP,KAAKkK,MAAM3G,KAMdvD,KAAKkK,MAAM3G,IAGTvD,KAAKkK,MAAM3G,GAAMkL,WAAWS,KAEvCC,eAAgB,SAAU5L,GAEtB,OADAA,EAAOA,EAAK6L,QAAQ,IAAK,OACpBpP,KAAKkK,UAGLlK,KAAKkK,MAAM3G,OAGXvD,KAAKkK,MAAM3G,GAAM8G,SAGfrK,KAAKkK,MAAM3G,GAAM8G,WAE5BgF,cAAe,SAAUC,GACrB,IAAIC,EAAKhM,EAAMiM;AAIf,OAFAjM,GADAgM,EAAMD,EAAIG,MAAM,MACL,GAAGL,QAAQ,IAAK,KAC3BI,EAAWD,EAAI,KACVvP,KAAKkK,UAGLlK,KAAKkK,MAAM3G,OAGXvD,KAAKkK,MAAM3G,GAAM8G,YAGjBrK,KAAKkK,MAAM3G,GAAM8G,QAAQmF,IAGvBxP,KAAKkK,MAAM3G,GAAM8G,QAAQmF,OAEpCE,UAAW,SAAUnM,GACjB,QAAKvD,KAAKkK,UAGLlK,KAAKkK,MAAM3G,MAGZvD,KAAKkK,MAAM3G,GAAMZ,SAKzBgN,UAAW,SAAUpM,GACjB,QAAKvD,KAAKkK,UAGLlK,KAAKkK,MAAM3G,OAGZvD,KAAKkK,MAAM3G,GAAMZ,QACV3C,KAAKkK,MAAM3G,GAAMZ;;6yIC7XpC,IAAIiN;kEAEJC,OAAOC,aAAa,KAAM,CACtBC,YAAa,uBAAuBN,MAAM,KAC1CO,SAAU,qEAAqEP,MAAM,KACrFQ,OAAQ,2GAA2GR,MAC/G,KAEJS,YAAa,uEAAuET,MAAM,KAC1FU,eAAgB,CACZC,EAAG,WACHC,GAAI,QACJC,GAAI,oBACJC,KAAM,oBACNC,IAAK,WACLC,IAAK,6BACLC,KAAM,mCACNC,EAAG,WACHC,GAAI,cACJC,IAAK,yBAETC,KAAM,CACFC,IAAK,EACLC,IAAK,KAIbnB,OAAOC,aAAa,KAAM,CACtBC,YAAa,uBAAuBN,MAAM,KAC1CO,SAAU,oDAAoDP,MAAM,KACpEQ,OAAQ,wFAAwFR,MAC5F,KAEJS,YAAa,kDAAkDT,MAAM,KACrEU,eAAgB,CACZC,EAAG,aACHC,GAAI,QACJC,GAAI,sBACJC,KAAM,sBACNC,IAAK,QACLC,IAAK,iBACLC,KAAM,uBAEVI,KAAM,CACFC,IAAK,EACLC,IAAK;MAIbpB,EAAerQ,MAAMV,OAAO+J,OACxB,CAMIqI,YAAa,SAAUC,EAAOC,GAC1B,IAAI9D,EAAS+D,EAAYC;AAKzB,MAJqB,iBAAVH,GAAsBA,EAAMvI,QAAQ,MAAQ,IACnD0I,EAAUH,EAAMzB,MAAM,KACtByB,EAAQI,SAASD,EAAQ,GAAI,IAAMC,SAASD,EAAQ,GAAI,IAAM,IAEnD,UAAXF,EACOD,EAAMK,eAAe1B,OAAO2B,UAExB,oBAAXL,EACOD,GAIPE,GADsB,IAAtBK,KAAKC,KAAKR,GACGO,KAAKE,KAAKT,GAEVO,KAAKG,MAAMV,GAGZ,MADhB7D,EAAUoE,KAAKI,IAAIJ,KAAKK,MAAyC,IAAlCZ,EAAQO,KAAKG,MAAMR,SAE9CA,IACA/D,EAAU,IAGTxO,OAAOkT,GAAGX,GAAa,GAAK,IAAM,IACnCA,EACA,KACC/D,EAAU,GAAK,IAAM,IACtBA,EACA,MAMR2E,mBAAoB,SAAUd,GAC1B,IAAIe,EAAM5E,EAASgE;AAMnB,MALqB,iBAAVH,GAAsBA,EAAMvI,QAAQ,MAAQ,IACnD0I,EAAUH,EAAMzB,MAAM,KACtByB,EAAQI,SAASD,EAAQ,GAAI,IAAMC,SAASD,EAAQ,GAAI,IAAM,IAElEhE,EAAUoE,KAAKK,MAAoC,IAA7BZ,EAAQO,KAAKG,MAAMV,KACrCA,EAAQ,IAERA,GAAuB,IADvBe,EAAOR,KAAKG,MAAMV,EAAQ,KAGtBe,EACA,KACAR,KAAKG,MAAMV,GACX,KACC7D,EAAU,GAAK,IAAM,IACtBA,EACA,KAGDoE,KAAKG,MAAMV,GAAS,KAAO7D,EAAU,GAAK,IAAM,IAAMA,EAAU,MAI/E9N,MAAM2S,OAAOC,OAAO,SAAS,SAAUjB,GACnC,OAAOtB,EAAaqB,YAAYC;;;ACpHxC,MAeYkB,EAdRzJ,EAAU,GAAGA,UAcLpJ,MAAMV,OAAO+J,QAAbyJ,EAAAC,EAAA,CAgCRC,mBAAoB,SAAUC,EAAOzT,EAAO4L,GAAS,IAAA7F,EAAA9E;AACjD,OAAO,IAAIT,MAAMkG,KAAKwC,SAAQ,SAACvC,GAO3B,OANKZ,EAAK2N,YAAYD,EAAO7H,IACzBjF,GAAQ,IAER3G,aAAiBQ,MAAMmT,aAAe3T,aAAiBQ,MAAMoT,cAC7D5T,EAAQA,EAAME,IAAI,YAEfyG,EAAQnG,MAAMqT,QAAQ7T,QAGrC0T,YAAa,SAAUD,EAAO7H,GAC1B,IAAIkI,EAAGC,EAAYC,EAAKxR,EAAMyR,EAAYC;AAC1C,GAAyB,WAAnBzQ,EAAOmI,GACT,OAAO;AAEX,IAAK6H,EACD,OAAO;AAGX,IADAM,GAAa,EACRD,EAAI,EAAGE,EAAMpI,EAAQuI,OAAQL,EAAIE,EAAKF,IAEvC,IAAKG,KADLzR,EAAOoJ,EAAQkI,GAEXI,EAAc1R,EAAKyR,GACfhT,KAAKmT,kBAAkBX,EAAMvT,IAAI+T,GAAaC,KAC9CH,GAAa;AAIzB,OAAOA,GAEXK,kBAAmB,SAAUpU,EAAOqU,GAChC,IAAIC,EAAOC,EAAMC;AAIjB,MAAoB,UAFpBH,EAAcA,EAAYvI,cAGlB9L,EAMY,UAAhBqU,GACIrU,GAMRwU,GAAW,EACyB,MAAhCH,EAAYI,UAAU,EAAG,KACzBJ,EAAcA,EAAYI,UAAU,GACpCD,GAAW,GAEfD,EAAOF,EAAY3D,MAAM,KACzB4D,EAAQ1K,EAAQmC,KAAKwI,EAAMvU,IAAU,EACjC4J,EAAQmC,KAAKwI,EAAM,YAAc,IACjCD,EAAQ9T,MAAAqT,QAAQ7T,IAEhBwU,GACQF,EAEDA,IAOfI,gBAAiB,SAAUjB,EAAOzT,EAAO4L,GACrC,IAAI3B,EAAGrH,EAAOkR,EAASE,EAAKW;AAG5B,GAFA1K,EAAI,IAAII,EAAAA,QAAEC,SACV1H,GAAQ,EACH5C,EAEE,GAAIiB,KAAK2T,OAAO5U,IAEnB,GADA2U,EAASxQ,KAAKwD,MAAM3H,GAChB6C,MAAMkB,QAAQ4Q,GACd,IAAKb,EAAI,EAAGE,EAAMW,EAAOR,OAAQL,EAAIE,EAAKF,IAC/Ba,EAAOb,GACLhI,WAAWqI,SAAWvI,IAC3BhJ,GAAQ,QAIb5C,EAAMmU,SAAWvI,IACxBhJ,GAAQ;KAZRA,GAAQ;AAqBZ,OAPIA,EACAqH,EAAEtD,QAAQ,CACNwN,OAAQvI,IAGZ3B,EAAEtD,UAECsD,GAEX4K,mBAAoB,SAAUpB,EAAOzT,EAAO4L,GACxC,IAAI3B;AASJ,OARAA,EAAI,IAAII,EAAAA,QAAEC,SACNtK,EAAMmU,OAASvI,EACf3B,EAAEtD,QAAQ,CACNwN,OAAQvI,IAGZ3B,EAAEtD,UAECsD,GAEX6K,mBAAoB,SAAUrB,EAAOzT,EAAO4L,GACxC,IAAI3B;AASJ,OARAA,EAAI,IAAII,EAAAA,QAAEC,SACNtK,GAASA,EAAMmU,OAASvI,EACxB3B,EAAEtD,QAAQ,CACNwN,OAAQvI,IAGZ3B,EAAEtD,UAECsD,GAEX8K,gBAAiB,SAAUtB,EAAOzT,EAAO4L,GACrC,IAAI3B;AAOJ,OANAA,EAAI,IAAII,EAAAA,QAAEC,SACN0K,MAAMhV,GACNiK,EAAEtD,SAAQ,GAEVsD,EAAEtD,UAECsD,GAEXgL,sBAAuB,SAAUxB,EAAOzT,EAAO4L,GAC3C,OAAO,IAAIpL,MAAMkG,KAAKwC,SAAQ,SAACvC,GAC3B,IAAI2H,EAASoC;AAiBb,OAhBK+C,EAAMvT,IAAI,UACXyG,IAGA8M,EAAMvT,IAAI,YACVoO,EAAUwC,OAAO2C,EAAMvT,IAAI,QAAU,IAAMuT,EAAMvT,IAAI,YAAYgV,KAC7DpE,OAAO2C,EAAMvT,IAAI,QAAU,IAAMuT,EAAMvT,IAAI,cAC3C,YAEU,IACVoO,GAAW,OAGfoC,EAAQ+C,EAAMvT,IAAI,cAAcwQ,MAAM,KACtCpC,EAAmC,GAAzBiE,SAAS7B,EAAM,GAAI,IAAW6B,SAAS7B,EAAM,GAAI,KAE3DpC,EAAU,KAAOmF,EAAMvT,IAAI,SAAW,GAC/ByG,GAAQ,GAEZA,QAGfwO,oBAAqB,SAAU1B,EAAOzT,EAAO4L,GACzC,OAAO,IAAIpL,MAAMkG,KAAKwC,SAAQ,SAACvC,GA6C3B,OA3CK8M,EAAMvT,IAAI,YAAeuT,EAAMvT,IAAI,cAAcyG,GAAQ,GAE1DnG,MAAAqT,QAAQJ,EAAMvT,IAAI,gBAAgByG,GAAQ,GAG9C8M,EAAMvT,IAAI,cAAc2H,SAAQ,SAACuN,GAC7B,GAAKA,EAAWC,MAAhB,CACA,IAAIC,EAAkBxE,OAAO,YAAcsE,EAAWC,MAAO,kBACzDE,EAAgBzE,OAAO,YAAc2C,EAAMvT,IAAI,aAAc;AAEjE,GAAIuT,EAAMvT,IAAI,WAAY,CACtB,IAAIsV,EAAc1E,OAAO,YAAc2C,EAAMvT,IAAI,WAAY,kBACvDuV,EAAwBD,EAAYE,SAASH;AAcnD,GAbIE,IAEIH,EAAgBI,SAASH,IACzBD,EAAgBI,SAASF,KAEzBF,EAAkBxE,OACd,YAAcsE,EAAWC,MACzB,mBAERG,EAAc1E,OAAO,YAAc2C,EAAMvT,IAAI,WAAY,mBAGxDoV,EAAgBK,UAAUJ,EAAeC,IAAc7O,GAAQ,GAChEyO,EAAWQ,IAAK,CAChB,IAAIC,EAAgB/E,OAAO,YAAcsE,EAAWQ,IAAK;AAErDH,GACAI,EAAcH,SAASH,IACvBM,EAAcH,SACV5E,OAAO,YAAc2C,EAAMvT,IAAI,WAAY,qBAG/C2V,EAAgB/E,OAAO,YAAcsE,EAAWQ,IAAK,mBAEpDC,EAAcF,UAAUJ,EAAeC,IAAc7O,GAAQ,SAE/D2O,EAAgBI,SAASH,IAChC5O,GAAQ,OAGTA,GAAQ,OAGvBmP,uBAAwB,SAAUrC,EAAOzT,EAAO4L,GAC5C,OAAO,IAAIpL,MAAMkG,KAAKwC,SAAQ,SAACvC,GAC3B,IAAIoP,EAAezH,EAAS0H;AAoC5B,OAnCKvC,EAAMvT,IAAI,YACXyG,IAEJ2H,EAAUwC,OAAO2C,EAAMvT,IAAI,QAAU,IAAMuT,EAAMvT,IAAI,YAAYgV,KAC7DpE,OAAO2C,EAAMvT,IAAI,QAAU,IAAMuT,EAAMvT,IAAI,cAC3C,WAEAuT,EAAMvT,IAAI,WACVoO,GAAWmF,EAAMvT,IAAI,UAErBoO,EAAU,IACVA,GAAW,MAEf0H,EAAS,EACThW,EAAM6H,SAAQ,SAACoO,GACX,IAAIvF;AACJ,MAAgC,iBAArBuF,EAAI/V,IAAI,UACfwQ,EAAQuF,EAAI/V,IAAI,SAASwQ,MAAM,KACvBsF,GAAmC,GAAzBzD,SAAS7B,EAAM,GAAI,IAAW6B,SAAS7B,EAAM,GAAI,KAChC,iBAArBuF,EAAI/V,IAAI,SACd8V,GAA6B,GAAnBC,EAAI/V,IAAI,cADvB,KAIX6V,EAAgB,SAACzH,GACb,IAAI4H,EAAWC;AACf,OAAK7H,GAGL4H,EAAYxD,KAAKG,MAAMvE,EAAU,IAEjC4H,GAAa,MADbC,EAAWzD,KAAKK,MAAMzE,EAAsB,GAAZ4H,IACD,GAAK,IAAM,IAAMC,GAJrC,GAOf7H,EAAUoE,KAAKK,MAAMzE,GACrB0H,EAAStD,KAAKK,MAAMiD,GACf1H,GAAW0H,IAAW1H,EAGhB3H,EAAQ,CACXwL,MAAO4D,EAAczH,GACrB8H,OAAQL,EAAcC,KAJnBrP,QASnB0P,eAAgB,SAAU5C,EAAOzT,EAAO4L,GACpC,IAAI3B;AAYJ,OAXAA,EAAI,IAAII,EAAAA,QAAEC,SAENtK,IACC,8FAA8FwC,KAC3FxC,GAGJiK,EAAEtD,SAAQ,GAEVsD,EAAEtD,UAECsD,GAIXqM,mBAAoB,SAAU7C,EAAOzT,EAAO4L,GACxC,OAAIkF,OAAO9Q,GAAOuW,QAAQzF,SAAS0F,SAAS,GAAI,UACrCvV,KAAKwV,iBAAgB,GAErBxV,KAAKwV,mBAGpBC,sBAAuB,SAAUjD,EAAOzT,EAAO4L,GAC3C,IAAI3B,EAAG/H,EAAMH;AAEb,OADAkI,EAAI,IAAII,EAAAA,QAAEC,SAC6B,mBAA5BmJ,EAAMkD,mBACTnW,MAAMqT,QAAQJ,EAAMkD,oBAAoBC,WACxC3M,EAAEtD,UACKsD,IAGflI,EAAMO,EAAAA,QAAO6C,IAAI0D,kBAAoB,kBACrC3G,EAAO,CACH2U,UAAU,IAEV,MAAY7W,EAChBqK,EAAAA,QAAEG,KAAK,CACHzI,IAAKA,EACLG,KAAMiC,KAAKC,UAAUlC,GACrByJ,KAAM,OACNmL,YAAa,qBACd5Q,MACC,WACI,OAAO+D,EAAEtD,aAEb,SAAU/D,GACN,OAAOqH,EAAEtD,SAAQ,MAGlBsD,IAEX8M,eAAgB,SAAUtD,EAAOzT,EAAO4L,GACpC,IAAI3B;AAOJ,OANAA,EAAI,IAAII,EAAAA,QAAEC,SACNmJ,EAAMvT,IAAI0L,EAAQoL,SAAWhX,EAC7BiK,EAAEtD,SAAQ,GAEVsD,EAAEtD,UAECsD,GAEXgN,gBAAiB,SAAUxD,EAAOzT,EAAO4L,GACrC,IAAI3B,EAAGrH,EAAOkR,EAAGoD,EAAMlD,EAAK9G;AAG5B,GAFAjD,EAAI,IAAII,EAAAA,QAAEC,SACV1H,GAAQ,EACJ5C,GAAS6C,MAAMkB,QAAQI,KAAKwD,MAAM3H,IAElC,IAAK8T,EAAI,EAAGE,GADZ9G,EAAM/I,KAAKwD,MAAM3H,IACKmU,OAAQL,EAAIE,EAAKF,IACnCoD,EAAOhK,EAAI4G,GACPqD,OAAOD,KAAU3E,SAAS2E,EAAM,MAChCtU,GAAQ;KAGT5C,GAASmX,OAAOnX,KAAWuS,SAASvS,EAAO,MAClD4C,GAAQ;AAOZ,OALIA,EACAqH,EAAEtD,SAAQ,GAEVsD,EAAEtD,UAECsD,GAEXmN,wBAAyB,SAAU3D,EAAOzT,EAAO4L,GAC7C,OAAc,OAAV5L,GAA4B,KAAVA,QAA0B,IAAVA,GAA8B,SAAVA,EAC/CiB,KAAKwV,iBAAgB,GAErBxV,KAAKwV,mBAGpBY,0BAA2B,SAAU5D,EAAOzT,EAAO4L,GAC/C,OAAc,OAAV5L,GAA4B,KAAVA,QAA0B,IAAVA,GAA8B,SAAVA,EAC/CiB,KAAKwV,iBAAgB,GAErBxV,KAAKwV,mBAGpBa,aAAc,SAAU7D,EAAOzT,EAAO4L,GAClC,IAAI2L;AAGJ,GAFAA,EAAc9D,EAAMvT,IAAI,gBAEnBF,EACD,OAAOiB,KAAKwV;AAGhB,IAAIc,EAGA,OAAOtW,KAAKwV;AAEhB,GAAoB,QAJhBc,EAAcA,EAAYC,eAIJ,CACtB,GAAqB,KAAjBxX,EAAMmU,QAAkC,KAAjBnU,EAAMmU,OAC7B,OAAOlT,KAAKwV,gBAAgB,CACxBhI,QAAS;AAGjB,IACK,uFAAuFjM,KACpFxC,GAGJ,OAAOiB,KAAKwV,gBAAgB,CACxBhI,QAAS,YAGd,GAAoB,OAAhB8I,IACF,iEAAiE/U,KAAKxC,GACvE,OAAOiB,KAAKwV,gBAAgB,CACxBhI,QAAS;AAIrB,OAAOxN,KAAKwV,mBAEhBgB,qBAAsB,SAAUhE,EAAOzT,EAAO4L,GAE1C,OAAK5L,EAGA,6CAA6CwC,KAAKxC,GAGhDiB,KAAKwV,kBAFDxV,KAAKwV,iBAAgB,GAHrBxV,KAAKwV,mBAOpBiB,kBAAmB,SAAUjE,EAAOzT,EAAO4L,GAEvC,OAAK5L,EAGA,oBAAoBwC,KAAKxC,GAGvBiB,KAAKwV,kBAFDxV,KAAKwV,iBAAgB,GAHrBxV,KAAKwV,mBAOpBkB,eAAgB,SAAUlE,EAAOzT,EAAO2G,GAGpC,OADU1F,KAAKyV,sBAAsBjD,EAAOzT,EAAO,MACpCkG,MAAK,SAAC0R,GACjB,OAAOjR,EAAQiR,OAGvBC,uBAAwB,SAAUpE,EAAOzT,EAAO4L,GAAS,IAAAkM,EAAA7W;AACrD,OAAKjB,IAIAyT,EAAMvT,IAAI,UACVuT,EAAMvT,IAAI,uBACXF,IAAUyT,EAAMvT,IAAI,aAIjB,IAAI6X,GAAGrR,KAAKwC,SAAQ,SAACvC,EAASwC,GAKjC,OAAO2O,EAAKH,eAAelE,EAAOzT,EAAO2G,MAdlC1F,KAAKwV,mBAiBpBA,gBAAiB,SAAUzW,GACvB,IAAIiK;AAGJ,OAFAA,EAAI,IAAII,EAAAA,QAAEC,UACR3D,QAAQ3G,GACHiK,GAEX2K,OAAQ,SAAU5U,GAEd,IAAKgV,MAAMhV,GACP,OAAO;AAEX,IACImE,KAAKwD,MAAM3H,GACb,MAAOgY,GAEL,OADIA,GACG,EAEX,OAAO,GAEXC,kBAAmB,SAAUxE,EAAOzT,EAAO4L,GACvC,IAAIsM,EAAoBC;AACxB,GAAc,YAAVnY,EACA,OAAOiB,KAAKwV;AAEhB,GAAIhD,EAAM2E,OAA0B,IAAjBpY,EAAMmU,OACrB,OAAOlT,KAAKwV;AAGhB,GAAIhD,EAAM4E,cACN,OAAOpX,KAAKwV;AAKhB,IAAKyB,KADLC,GAAa,EADH1E,EAAMkD,oBAGM,aAAduB,IACAC,GAAa;AAIrB,OAAIA,EACOlX,KAAK4T,mBAAmBpB,EAAOzT,EAAO,GAEtCiB,KAAKwV,mBAGpB6B,wBAAyB,SAAU7E,EAAOzT,EAAO4L,GAC7C,OAAI5L,EAAQ,EACDiB,KAAKwV,iBAAgB,GAEzBxV,KAAKwV,mBAEhB8B,uBAAwB,SAAU9E,EAAOzT,EAAO4L,GAC5C,OAAK6H,EAAMvT,IAAI,UAGX4Q,SAASyF,QAAQvW,EAAO,OACjBiB,KAAKwV,iBAAgB,GAHrBxV,KAAKwV,mBAOpB+B,oBAAqB,SAAU/E,EAAOzT,EAAO4L,GACzC,OAAI6H,EAAMvT,IAAI0L,GAAW5L,EACdiB,KAAKwV,iBAAgB,GAEzBxV,KAAKwV,mBAEhBgC,sBAAuB,SAAUhF,EAAOzT,EAAO4L,GAE3C,OADWkF,OAAO2C,EAAMvT,IAAI,QAAS,cAAc,GACzCwY,UAGHzX,KAAKwV,kBAFDxV,KAAKwV,iBAAgB,IAIpCkC,qBAAsB,SAAUlF,EAAOzT,EAAO4L,GAC1C,MACK,mKAAmKpJ,KAChKxC,GAKDiB,KAAKwV,kBAFDxV,KAAKwV,iBAAgB,IAIpCmC,oBAAqB,SAAUnF,EAAOzT,EAAO4L,GACzC,MAAK,mBAAmBpJ,KAAKxC,GAGtBiB,KAAKwV,kBAFDxV,KAAKwV,iBAAgB,KA1iB5B,gBA8iBM,SAAUhD,EAAOzT,EAAO4L,GAClC,GAAgB,OAAZA,EAAkB,CAClB,GAAqB,KAAjB5L,EAAMmU,QAAkC,KAAjBnU,EAAMmU,OAC7B,OAAOlT,KAAKwV,iBAAgB;AAEhC,IACK,iFAAiFjU,KAC9ExC,GAGJ,OAAOiB,KAAKwV,iBAAgB,QAE7B,GAAgB,OAAZ7K,IACF,iEAAiEpJ,KAAKxC,GACvE,OAAOiB,KAAKwV,iBAAgB;AAGpC,OAAOxV,KAAKwV,qBA/jBRnD,EAAAC,EAAA,2BAikBiB,SAAUE,EAAOzT,EAAO4L,GAC7C,OAAIiN,SAAS7Y,IACmB,IAAxBuS,SAASvS,EAAO,IACTiB,KAAKwV,iBAAgB,GAG7BxV,KAAKwV,qBAvkBRnD,EAAAC,EAAA,qBAAAuF,mBAAAC,MAykBS,SAAAC,EAAgBvF,EAAOzT,EAAO4L,EAASnH,EAAOwU,GAA9C,IAAAxW,EAAA5B,EAAA2D,EAAA0U,EAAAC,EAAAC,EAAAtL;AAAA,OAAAgL,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,GACRxZ,EADQ,CAAAsZ,EAAAE,KAAA;AAAA,MAAA,OAAAF,EAAAG,OAAA,UACM;AADN,KAAA,EAAA,OAGPhX,EAAYjC,MAAAkZ,SAAST,GAAOU,OAAO,4BACnC9Y,EAAUL,MAAAkZ,SAAST,GAAOU,OAAO,mBAEjCnV,EAAOiP,EAAMmG,YAAYrV,UACzB2U,GAAc,EAAAW,EAAAC,WAAUtV,GAAMuV,WAPvBT,EAAAE,KAAA,GAUK,EAAAQ,EAAA7Z,SAAA,GAAA0B,OACXS,EAAAA,QAAO6C,IAAI0D,kBADA,KAAAhH,OACqBqX,EADrB,KAAArX,OACoC4C,EADpC,KAAA5C,OAC6C7B,GAC3D,CACIwB,QAAS,CACL+I,cAAe,UAAY1J,EAAQqB,KAAKC,cAAcC;AAdrD,KAAA,EAAA,OAUP+W,EAVOG,EAAAW,KAAAX,EAAAE,KAAA,GAkBML,EAAIe;AAlBV,KAAA,GAAA,MAkBPd,EAlBOE,EAAAW,MAoBJE,MAAQ,GAAKhD,OAAOiC,EAAKF,GAAa,GAAGtU,MAAQuS,OAAO1D,EAAM7O,KApB1D,CAAA0U,EAAAE,KAAA;AAAA,MAAA,OAqBH1L,EAAOrL,EAAU2X,wBAAwB5V,EAAMC,GArB5C6U,EAAAG,OAAA,SAsBF,CAAEhV,MAAOqJ;AAtBP,KAAA,GAAA,OAAAwL,EAAAG,OAAA,UAyBN;AAzBM,KAAA,GAAA,IAAA,MAAA,OAAAH,EAAAe,UAAArB,MAzkBT3F;;uFAAA,SAAAiH,EAAAC,EAAAC,EAAAC,EAAAC,GAAA,OAAArH,EAAAlS,MAAAF,KAAAG,cAAAkS,EAAAC,EAAA,4BAqmBkB,SAAUE,EAAOzT,EAAO4L,GAE9C,GAAI5L,GAASA,EAAM8L,WAAW/I,SAAS,KAAM,CAEzC,IAAM2N,EAAQ1Q,EAAM0Q,MAAM,KACpByB,EAAQzB,EAAM;AAGpB,GAFgBA,EAAM,GAEVyD,OAAS,GAAKhC,EAAMgC,OAAS,EACrC,OAAOlT,KAAKwV,iBAAgB,GAIpC,OAAOxV,KAAKwV,iBAAgB,MAlnBxBlD;;MClBG,CAAC,CAACd,OAAS,KAAKkI,mBAAqB,SAASC,EAAEC,GAAK,IAAIC,EAAEC,OAAOH,GAAGlK,MAAM,KAAKsK,GAAIF,EAAE,GAAGG,EAAG9D,OAAO2D,EAAE,KAAKF,EAAEM,EAAID,GAAIH,EAAE,GAAGtU,OAAO,GAAG2U,EAAKF,GAAIH,EAAE,GAAGtU,OAAO;AAAG,OAAGqU,EAAgB,GAALK,GAAc,IAANC,EAAS,MAAW,GAALD,GAAc,IAANC,EAAS,MAAW,GAALD,GAAc,IAANC,EAAS,MAAM,QAAkB,GAAHP,GAAMI,EAAG,MAAM,SAASI,OAAS,CAACC,KAAO,CAACC,YAAc,OAAOC,SAAW,CAACC,EAAI,YAAYC,EAAI,YAAYC,KAAK,aAAaC,aAAe,CAACC,OAAS,CAACC,IAAM,cAAcC,MAAQ,gBAAgBC,KAAO,CAACF,IAAM,eAAeC,MAAQ,mBAAmBE,aAAa,CAACV,YAAc,MAAMC,SAAW,CAACC,EAAI,WAAWC,EAAI,WAAWC,KAAK,YAAYC,aAAe,CAACC,OAAS,CAACC,IAAM,aAAaC,MAAQ,cAAcC,KAAO,CAACF,IAAM,cAAcC,MAAQ,iBAAiBG,MAAQ,CAACX,YAAc,QAAQC,SAAW,CAACC,EAAI,aAAaC,EAAI,aAAaC,KAAK,cAAcC,aAAe,CAACC,OAAS,CAACC,IAAM,eAAeC,MAAQ,iBAAiBC,KAAO,CAACF,IAAM,gBAAgBC,MAAQ,oBAAoBI,cAAc,CAACZ,YAAc,MAAMC,SAAW,CAACC,EAAI,WAAWC,EAAI,WAAWC,KAAK,YAAYC,aAAe,CAACC,OAAS,CAACC,IAAM,aAAaC,MAAQ,cAAcC,KAAO,CAACF,IAAM,cAAcC,MAAQ,iBAAiBnN,IAAM,CAAC2M,YAAc,MAAMC,SAAW,CAACC,EAAI,QAAQC,EAAI,WAAWC,KAAK,aAAaC,aAAe,CAACC,OAAS,CAACC,IAAM,aAAaC,MAAQ,eAAeC,KAAO,CAACF,IAAM,cAAcC,MAAQ,kBAAkBK,YAAY,CAACb,YAAc,MAAMC,SAAW,CAACC,EAAI,QAAQC,EAAI,WAAWC,KAAK,aAAaC,aAAe,CAACC,OAAS,CAACC,IAAM,aAAaC,MAAQ,eAAeC,KAAO,CAACF,IAAM,cAAcC,MAAQ,kBAAkBM,KAAO,CAACd,YAAc,OAAOC,SAAW,CAACC,EAAI,aAAaG,aAAe,CAACC,OAAS,CAACC,IAAM,cAAcC,MAAQ,gBAAgBC,KAAO,CAACF,IAAM,eAAeC,MAAQ,mBAAmBO,aAAa,CAACf,YAAc,MAAMC,SAAW,CAACC,EAAI,aAAaG,aAAe,CAACC,OAAS,CAACC,IAAM,aAAaC,MAAQ,cAAcC,KAAO,CAACF,IAAM,cAAcC,MAAQ,iBAAiBQ,OAAS,CAAChB,YAAc,SAASC,SAAW,CAACC,EAAI,eAAeG,aAAe,CAACC,OAAS,CAACC,IAAM,gBAAgBC,MAAQ,kBAAkBC,KAAO,CAACF,IAAM,iBAAiBC,MAAQ,qBAAqBS,eAAe,CAACjB,YAAc,OAAOC,SAAW,CAACC,EAAI,eAAeG,aAAe,CAACC,OAAS,CAACC,IAAM,cAAcC,MAAQ,eAAeC,KAAO,CAACF,IAAM,eAAeC,MAAQ,kBAAkBU,OAAS,CAAClB,YAAc,SAASC,SAAW,CAACC,EAAI,OAAOG,aAAe,CAACC,OAAS,CAACC,IAAM,gBAAgBC,MAAQ,kBAAkBC,KAAO,CAACF,IAAM,iBAAiBC,MAAQ,qBAAqBW,eAAe,CAACnB,YAAc,OAAOC,SAAW,CAACC,EAAI,OAAOG,aAAe,CAACC,OAAS,CAACC,IAAM,cAAcC,MAAQ,eAAeC,KAAO,CAACF,IAAM,eAAeC,MAAQ,mBAAmBY,QAAU,CAACC,QAAU,CAACC,KAAO,CAAC,CAAC,IAAK,CAACf,IAAM,CAAC,aAAa,GAAGC,MAAQ,CAAC,aAAa,KAAK,CAAC,IAAM,CAACD,IAAM,CAAC,cAAc,GAAGC,MAAQ,CAAC,cAAc,KAAK,CAAC,IAAO,CAACD,IAAM,CAAC,eAAe,GAAGC,MAAQ,CAAC,eAAe,KAAK,CAAC,IAAQ,CAACD,IAAM,CAAC,YAAY,GAAGC,MAAQ,CAAC,YAAY,KAAK,CAAC,IAAS,CAACD,IAAM,CAAC,aAAa,GAAGC,MAAQ,CAAC,aAAa,KAAK,CAAC,IAAU,CAACD,IAAM,CAAC,cAAc,GAAGC,MAAQ,CAAC,cAAc,KAAK,CAAC,IAAW,CAACD,IAAM,CAAC,YAAY,GAAGC,MAAQ,CAAC,YAAY,KAAK,CAAC,KAAY,CAACD,IAAM,CAAC,aAAa,GAAGC,MAAQ,CAAC,aAAa,KAAK,CAAC,KAAa,CAACD,IAAM,CAAC,cAAc,GAAGC,MAAQ,CAAC,cAAc,KAAK,CAAC,KAAc,CAACD,IAAM,CAAC,aAAa,GAAGC,MAAQ,CAAC,aAAa,KAAK,CAAC,KAAe,CAACD,IAAM,CAAC,cAAc,GAAGC,MAAQ,CAAC,cAAc,KAAK,CAAC,KAAgB,CAACD,IAAM,CAAC,eAAe,GAAGC,MAAQ,CAAC,eAAe,MAAMe,MAAQ,CAAC,CAAC,IAAK,CAAChB,IAAM,CAAC,KAAK,GAAGC,MAAQ,CAAC,KAAK,KAAK,CAAC,IAAM,CAACD,IAAM,CAAC,MAAM,GAAGC,MAAQ,CAAC,MAAM,KAAK,CAAC,IAAO,CAACD,IAAM,CAAC,OAAO,GAAGC,MAAQ,CAAC,OAAO,KAAK,CAAC,IAAQ,CAACD,IAAM,CAAC,KAAK,GAAGC,MAAQ,CAAC,KAAK,KAAK,CAAC,IAAS,CAACD,IAAM,CAAC,MAAM,GAAGC,MAAQ,CAAC,MAAM,KAAK,CAAC,IAAU,CAACD,IAAM,CAAC,OAAO,GAAGC,MAAQ,CAAC,OAAO,KAAK,CAAC,IAAW,CAACD,IAAM,CAAC,KAAK,GAAGC,MAAQ,CAAC,KAAK,KAAK,CAAC,KAAY,CAACD,IAAM,CAAC,MAAM,GAAGC,MAAQ,CAAC,MAAM,KAAK,CAAC,KAAa,CAACD,IAAM,CAAC,OAAO,GAAGC,MAAQ,CAAC,OAAO,KAAK,CAAC,KAAc,CAACD,IAAM,CAAC,KAAK,GAAGC,MAAQ,CAAC,KAAK,KAAK,CAAC,KAAe,CAACD,IAAM,CAAC,MAAM,GAAGC,MAAQ,CAAC,MAAM,KAAK,CAAC,KAAgB,CAACD,IAAM,CAAC,OAAO,GAAGC,MAAQ,CAAC,OAAO;;MCAt/H,CAAC,CAACrJ,OAAS,KAAKkI,mBAAqB,SAASC,EAAEC,GAAK,IAA2BG,GAArBD,OAAOH,GAAGlK,MAAM,KAAW;AAAG,OAAGmK,EAAU,QAAkB,GAAHD,GAAMI,EAAG,MAAM,SAASI,OAAS,CAACC,KAAO,CAACC,YAAc,QAAQC,SAAW,CAACC,EAAI,cAAcC,EAAI,cAAcC,KAAK,gBAAgBC,aAAe,CAACC,OAAS,CAACC,IAAM,oBAAoBC,MAAQ,qBAAqBC,KAAO,CAACF,IAAM,mBAAmBC,MAAQ,uBAAuBE,aAAa,CAACV,YAAc,IAAIC,SAAW,CAACC,EAAI,SAASC,EAAI,SAASC,KAAK,WAAWC,aAAe,CAACC,OAAS,CAACC,IAAM,eAAeC,MAAQ,gBAAgBC,KAAO,CAACF,IAAM,eAAeC,MAAQ,kBAAkBG,MAAQ,CAACX,YAAc,WAAWC,SAAW,CAACC,EAAI,eAAeC,EAAI,cAAcC,KAAK,gBAAgBC,aAAe,CAACC,OAAS,CAACC,IAAM,uBAAuBC,MAAQ,wBAAwBC,KAAO,CAACF,IAAM,sBAAsBC,MAAQ,0BAA0BI,cAAc,CAACZ,YAAc,KAAKC,SAAW,CAACC,EAAI,WAAWC,EAAI,UAAUC,KAAK,YAAYC,aAAe,CAACC,OAAS,CAACC,IAAM,gBAAgBC,MAAQ,iBAAiBC,KAAO,CAACF,IAAM,gBAAgBC,MAAQ,mBAAmBnN,IAAM,CAAC2M,YAAc,QAAQC,SAAW,CAACC,EAAI,SAASC,EAAI,WAAWqB,EAAI,cAAcC,KAAK,iBAAiBrB,KAAK,SAASC,aAAe,CAACC,OAAS,CAACC,IAAM,oBAAoBC,MAAQ,qBAAqBC,KAAO,CAACF,IAAM,mBAAmBC,MAAQ,uBAAuBK,YAAY,CAACb,YAAc,KAAKC,SAAW,CAACC,EAAI,SAASC,EAAI,QAAQqB,EAAI,WAAWC,KAAK,WAAWrB,KAAK,SAASC,aAAe,CAACC,OAAS,CAACC,IAAM,gBAAgBC,MAAQ,iBAAiBC,KAAO,CAACF,IAAM,gBAAgBC,MAAQ,mBAAmBM,KAAO,CAACd,YAAc,QAAQC,SAAW,CAACC,EAAI,uBAAuBG,aAAe,CAACC,OAAS,CAACC,IAAM,oBAAoBC,MAAQ,qBAAqBC,KAAO,CAACF,IAAM,mBAAmBC,MAAQ,uBAAuBO,aAAa,CAACf,YAAc,IAAIC,SAAW,CAACC,EAAI,kBAAkBG,aAAe,CAACC,OAAS,CAACC,IAAM,eAAeC,MAAQ,gBAAgBC,KAAO,CAACF,IAAM,eAAeC,MAAQ,kBAAkBQ,OAAS,CAAChB,YAAc,WAAWC,SAAW,CAACC,EAAI,yBAAyBG,aAAe,CAACC,OAAS,CAACC,IAAM,sBAAsBC,MAAQ,uBAAuBC,KAAO,CAACF,IAAM,sBAAsBC,MAAQ,0BAA0BS,eAAe,CAACjB,YAAc,MAAMC,SAAW,CAACC,EAAI,oBAAoBG,aAAe,CAACC,OAAS,CAACC,IAAM,iBAAiBC,MAAQ,kBAAkBC,KAAO,CAACF,IAAM,iBAAiBC,MAAQ,oBAAoBU,OAAS,CAAClB,YAAc,UAAUC,SAAW,CAACC,EAAI,OAAOG,aAAe,CAACC,OAAS,CAACC,IAAM,sBAAsBC,MAAQ,uBAAuBC,KAAO,CAACF,IAAM,qBAAqBC,MAAQ,yBAAyBW,eAAe,CAACnB,YAAc,IAAIC,SAAW,CAACC,EAAI,OAAOG,aAAe,CAACC,OAAS,CAACC,IAAM,eAAeC,MAAQ,gBAAgBC,KAAO,CAACF,IAAM,eAAeC,MAAQ,mBAAmBY,QAAU,CAACC,QAAU,CAACC,KAAO,CAAC,CAAC,IAAK,CAACf,IAAM,CAAC,UAAU,GAAGC,MAAQ,CAAC,YAAY,KAAK,CAAC,IAAM,CAACD,IAAM,CAAC,aAAa,GAAGC,MAAQ,CAAC,aAAa,KAAK,CAAC,IAAO,CAACD,IAAM,CAAC,cAAc,GAAGC,MAAQ,CAAC,cAAc,KAAK,CAAC,IAAQ,CAACD,IAAM,CAAC,aAAa,GAAGC,MAAQ,CAAC,cAAc,KAAK,CAAC,IAAS,CAACD,IAAM,CAAC,eAAe,GAAGC,MAAQ,CAAC,eAAe,KAAK,CAAC,IAAU,CAACD,IAAM,CAAC,gBAAgB,GAAGC,MAAQ,CAAC,gBAAgB,KAAK,CAAC,IAAW,CAACD,IAAM,CAAC,aAAa,GAAGC,MAAQ,CAAC,cAAc,KAAK,CAAC,KAAY,CAACD,IAAM,CAAC,eAAe,GAAGC,MAAQ,CAAC,eAAe,KAAK,CAAC,KAAa,CAACD,IAAM,CAAC,gBAAgB,GAAGC,MAAQ,CAAC,gBAAgB,KAAK,CAAC,KAAc,CAACD,IAAM,CAAC,aAAa,GAAGC,MAAQ,CAAC,cAAc,KAAK,CAAC,KAAe,CAACD,IAAM,CAAC,eAAe,GAAGC,MAAQ,CAAC,eAAe,KAAK,CAAC,KAAgB,CAACD,IAAM,CAAC,gBAAgB,GAAGC,MAAQ,CAAC,gBAAgB,MAAMe,MAAQ,CAAC,CAAC,IAAK,CAAChB,IAAM,CAAC,SAAS,GAAGC,MAAQ,CAAC,SAAS,KAAK,CAAC,IAAM,CAACD,IAAM,CAAC,UAAU,GAAGC,MAAQ,CAAC,UAAU,KAAK,CAAC,IAAO,CAACD,IAAM,CAAC,WAAW,GAAGC,MAAQ,CAAC,WAAW,KAAK,CAAC,IAAQ,CAACD,IAAM,CAAC,YAAY,GAAGC,MAAQ,CAAC,YAAY,KAAK,CAAC,IAAS,CAACD,IAAM,CAAC,aAAa,GAAGC,MAAQ,CAAC,aAAa,KAAK,CAAC,IAAU,CAACD,IAAM,CAAC,cAAc,GAAGC,MAAQ,CAAC,cAAc,KAAK,CAAC,IAAW,CAACD,IAAM,CAAC,WAAW,GAAGC,MAAQ,CAAC,WAAW,KAAK,CAAC,KAAY,CAACD,IAAM,CAAC,YAAY,GAAGC,MAAQ,CAAC,YAAY,KAAK,CAAC,KAAa,CAACD,IAAM,CAAC,aAAa,GAAGC,MAAQ,CAAC,aAAa,KAAK,CAAC,KAAc,CAACD,IAAM,CAAC,YAAY,GAAGC,MAAQ,CAAC,YAAY,KAAK,CAAC,KAAe,CAACD,IAAM,CAAC,aAAa,GAAGC,MAAQ,CAAC,aAAa,KAAK,CAAC,KAAgB,CAACD,IAAM,CAAC,cAAc,GAAGC,MAAQ,CAAC,cAAc;;MCA7xI,CAAC,CAACrJ,OAAS,KAAKkI,mBAAqB,SAASC,EAAEC,GAAK,IAAIC,EAAEC,OAAOH,GAAGlK,MAAM,KAAKsK,GAAIF,EAAE,GAAGG,EAAG9D,OAAO2D,EAAE,KAAKF,EAAEM,EAAID,GAAIH,EAAE,GAAGtU,OAAO,GAAG2U,EAAKF,GAAIH,EAAE,GAAGtU,OAAO;AAAG,OAAGqU,EAAgB,GAALK,GAAa,GAALA,GAAe,IAANC,GAAgB,IAANA,EAAe,QAAN,MAAwB,GAAHP,GAAMI,EAAG,MAAM,SAASI,OAAS,CAACC,KAAO,CAACC,YAAc,KAAKC,SAAW,CAACC,EAAI,OAAOC,EAAI,WAAWC,KAAK,UAAUC,aAAe,CAACC,OAAS,CAACC,IAAM,YAAYC,MAAQ,aAAaC,KAAO,CAACF,IAAM,mBAAmBC,MAAQ,sBAAsBE,aAAa,CAACV,YAAc,KAAKC,SAAW,CAACC,EAAI,OAAOC,EAAI,WAAWC,KAAK,UAAUC,aAAe,CAACC,OAAS,CAACC,IAAM,YAAYC,MAAQ,aAAaC,KAAO,CAACF,IAAM,iBAAiBC,MAAQ,oBAAoBG,MAAQ,CAACX,YAAc,QAAQC,SAAW,CAACC,EAAI,cAAcC,EAAI,cAAcC,KAAK,iBAAiBC,aAAe,CAACC,OAAS,CAACC,IAAM,eAAeC,MAAQ,kBAAkBC,KAAO,CAACF,IAAM,sBAAsBC,MAAQ,2BAA2BI,cAAc,CAACZ,YAAc,IAAIC,SAAW,CAACC,EAAI,aAAaC,EAAI,aAAaC,KAAK,cAAcC,aAAe,CAACC,OAAS,CAACC,IAAM,cAAcC,MAAQ,eAAeC,KAAO,CAACF,IAAM,mBAAmBC,MAAQ,sBAAsBnN,IAAM,CAAC2M,YAAc,MAAMC,SAAW,CAACC,EAAI,QAAQC,EAAI,WAAWqB,EAAI,eAAeC,KAAK,YAAYrB,KAAK,SAASC,aAAe,CAACC,OAAS,CAACC,IAAM,aAAaC,MAAQ,gBAAgBC,KAAO,CAACF,IAAM,oBAAoBC,MAAQ,yBAAyBK,YAAY,CAACb,YAAc,MAAMC,SAAW,CAACC,EAAI,QAAQC,EAAI,WAAWqB,EAAI,eAAeC,KAAK,YAAYrB,KAAK,SAASC,aAAe,CAACC,OAAS,CAACC,IAAM,WAAWC,MAAQ,YAAYC,KAAO,CAACF,IAAM,kBAAkBC,MAAQ,qBAAqBM,KAAO,CAACd,YAAc,QAAQC,SAAW,CAACC,EAAI,eAAeG,aAAe,CAACC,OAAS,CAACC,IAAM,eAAeC,MAAQ,iBAAiBC,KAAO,CAACF,IAAM,sBAAsBC,MAAQ,0BAA0BO,aAAa,CAACf,YAAc,MAAMC,SAAW,CAACC,EAAI,eAAeG,aAAe,CAACC,OAAS,CAACC,IAAM,aAAaC,MAAQ,cAAcC,KAAO,CAACF,IAAM,oBAAoBC,MAAQ,uBAAuBQ,OAAS,CAAChB,YAAc,QAAQC,SAAW,CAACC,EAAI,eAAeG,aAAe,CAACC,OAAS,CAACC,IAAM,eAAeC,MAAQ,kBAAkBC,KAAO,CAACF,IAAM,sBAAsBC,MAAQ,2BAA2BS,eAAe,CAACjB,YAAc,MAAMC,SAAW,CAACC,EAAI,eAAeG,aAAe,CAACC,OAAS,CAACC,IAAM,aAAaC,MAAQ,cAAcC,KAAO,CAACF,IAAM,kBAAkBC,MAAQ,qBAAqBU,OAAS,CAAClB,YAAc,SAASC,SAAW,CAACC,EAAI,MAAMG,aAAe,CAACC,OAAS,CAACC,IAAM,gBAAgBC,MAAQ,mBAAmBC,KAAO,CAACF,IAAM,uBAAuBC,MAAQ,4BAA4BW,eAAe,CAACnB,YAAc,MAAMC,SAAW,CAACC,EAAI,MAAMG,aAAe,CAACC,OAAS,CAACC,IAAM,aAAaC,MAAQ,cAAcC,KAAO,CAACF,IAAM,gBAAgBC,MAAQ,oBAAoBY,QAAU,CAACC,QAAU,CAACC,KAAO,CAAC,CAAC,IAAK,CAACf,IAAM,CAAC,UAAU,GAAGC,MAAQ,CAAC,UAAU,KAAK,CAAC,IAAM,CAACD,IAAM,CAAC,WAAW,GAAGC,MAAQ,CAAC,WAAW,KAAK,CAAC,IAAO,CAACD,IAAM,CAAC,YAAY,GAAGC,MAAQ,CAAC,YAAY,KAAK,CAAC,IAAQ,CAACD,IAAM,CAAC,WAAW,GAAGC,MAAQ,CAAC,aAAa,KAAK,CAAC,IAAS,CAACD,IAAM,CAAC,YAAY,GAAGC,MAAQ,CAAC,cAAc,KAAK,CAAC,IAAU,CAACD,IAAM,CAAC,eAAe,GAAGC,MAAQ,CAAC,eAAe,KAAK,CAAC,IAAW,CAACD,IAAM,CAAC,YAAY,GAAGC,MAAQ,CAAC,cAAc,KAAK,CAAC,KAAY,CAACD,IAAM,CAAC,eAAe,GAAGC,MAAQ,CAAC,eAAe,KAAK,CAAC,KAAa,CAACD,IAAM,CAAC,gBAAgB,GAAGC,MAAQ,CAAC,gBAAgB,KAAK,CAAC,KAAc,CAACD,IAAM,CAAC,WAAW,GAAGC,MAAQ,CAAC,aAAa,KAAK,CAAC,KAAe,CAACD,IAAM,CAAC,cAAc,GAAGC,MAAQ,CAAC,cAAc,KAAK,CAAC,KAAgB,CAACD,IAAM,CAAC,eAAe,GAAGC,MAAQ,CAAC,eAAe,MAAMe,MAAQ,CAAC,CAAC,IAAK,CAAChB,IAAM,CAAC,OAAO,GAAGC,MAAQ,CAAC,OAAO,KAAK,CAAC,IAAM,CAACD,IAAM,CAAC,QAAQ,GAAGC,MAAQ,CAAC,QAAQ,KAAK,CAAC,IAAO,CAACD,IAAM,CAAC,SAAS,GAAGC,MAAQ,CAAC,SAAS,KAAK,CAAC,IAAQ,CAACD,IAAM,CAAC,OAAO,GAAGC,MAAQ,CAAC,OAAO,KAAK,CAAC,IAAS,CAACD,IAAM,CAAC,QAAQ,GAAGC,MAAQ,CAAC,QAAQ,KAAK,CAAC,IAAU,CAACD,IAAM,CAAC,SAAS,GAAGC,MAAQ,CAAC,SAAS,KAAK,CAAC,IAAW,CAACD,IAAM,CAAC,OAAO,GAAGC,MAAQ,CAAC,OAAO,KAAK,CAAC,KAAY,CAACD,IAAM,CAAC,QAAQ,GAAGC,MAAQ,CAAC,QAAQ,KAAK,CAAC,KAAa,CAACD,IAAM,CAAC,SAAS,GAAGC,MAAQ,CAAC,SAAS,KAAK,CAAC,KAAc,CAACD,IAAM,CAAC,OAAO,GAAGC,MAAQ,CAAC,OAAO,KAAK,CAAC,KAAe,CAACD,IAAM,CAAC,QAAQ,GAAGC,MAAQ,CAAC,QAAQ,KAAK,CAAC,KAAgB,CAACD,IAAM,CAAC,SAAS,GAAGC,MAAQ,CAAC,SAAS;eCDjrInc,OAAA,iCAAA,CAAA,UAAA,wDAAA,SAAAC,EAAAod,GAGAld,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA8c,EAAA7c;MCAeK,MAAAyc,UAAU5c;;MCAVG,MAAAyc,UAAU5c;eCTzBV,OAAA,kDAAA,CAAA,UAAA,gDAAA,SAAAC,EAAAsd,GAGApd,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAgd,EAAA/c,cCTAR,OAAA,sDAAA,CAAA,UAAA,oDAAA,SAAAC,EAAAud,GAGArd,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAid,EAAAhd;ACRA,IAAMid,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,qVAAAzZ,KAAA,CAAA0Z,WAAA,wEAGbhd,MAAAid;;;;;;;;;;;;;;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,w4BAAAzZ,KAAA,CAAA0Z,WAAA,6CAKPE;;;;;;qGAGjB,SAAyBC,GACrB,IACMC,EADSD,EAAMlX,OACAoX;AAChBD,IACL3c,KAAK6c,QAAU7c,KAAK6c,OAChBF,EAAMG,MAAMC,UACZJ,EAAMG,MAAMC,UAAY,KAExBJ,EAAMG,MAAMC,UAAYJ,EAAMK,aAAe,yCAXLhB,EAAAA,+GACd;0CADjBS;ACLrB,IAAMN,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,olCAAAzZ,KAAA,CAAA0Z,WAAA,kFAGbhd,MAAAid;;;;;;;;;;;;;;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,ygDAAAzZ,KAAA,CAAA0Z,WAAA,sDAaPU,0EAehB1d,MAAAwB,SAAS,iBAYTxB,MAAAwB,SAAS,iBAYTxB,MAAAwB,SAAS,iBAYTxB,MAAAwB,SAAS;;;;;;2JA9CV,WACI,OAAOf,KAAKkd,aAAaC,QAAQnd,KAAKod,KAAKzb,4BAG/C,WACI,OAAO3B,KAAKkd,aAAaG,cAAcrd,KAAKod,KAAKzb,qCAKrD,WACwD,IAAA2b,EAAAC;AACpD,MAAqC,cAAjC,QAAAD,EAAAtd,KAAKwd,mBAAL,IAAAF,GAAA,QAAAC,EAAAD,EAAkBza,YAAlB,IAAA0a,OAAA,EAAAA,EAAwBE,MACjBzd,KAAKkN,MAAM7J,MAAM,WAAY,CAChCM,GAAI3D,KAAKwd,YAAa3a,KAAK6a,IAAIC,KAAK,KACpCC,UAAU,IAGP,kCAIf,WACuD,IAAAC,EAAAC;AACnD,MAAqC,aAAjC,QAAAD,EAAA7d,KAAKwd,mBAAL,IAAAK,GAAA,QAAAC,EAAAD,EAAkBhb,YAAlB,IAAAib,OAAA,EAAAA,EAAwBL,MACjBzd,KAAKkN,MAAM7J,MAAM,UAAW,CAC/BM,GAAI3D,KAAKwd,YAAa3a,KAAK6a,IAAIC,KAAK,KACpCC,UAAU,IAGP,+BAIf,WACoD,IAAAG,EAAAC;AAChD,MAAqC,UAAjC,QAAAD,EAAA/d,KAAKwd,mBAAL,IAAAO,GAAA,QAAAC,EAAAD,EAAkBlb,YAAlB,IAAAmb,OAAA,EAAAA,EAAwBP,MACjBzd,KAAKkN,MAAM7J,MAAM,WAAY,CAChCM,GAAI3D,KAAKwd,YAAa3a,KAAK6a,IAAIC,KAAK,KACpCC,UAAU,IAGP,8BAIf,WACuC,IAAAK,EAEnCC,GAAgE,QAAAD,EAAAje,KAAKwd,mBAAL,IAAAS,OAAA,EAAAA,EAAkBpb,OAAQ,GAAlFsb,EAARD,EAAQC,wBAAyBC,EAAjCF,EAAiCE,2BAE3BC,EAAU;AAQhB,OANIF,GACAE,EAAQnT,KAAKlL,KAAKL,KAAK2C,EAAE,uCAEzB8b,GACAC,EAAQnT,KAAKlL,KAAKL,KAAK2C,EAAE,0CAEtB+b,qCAhE6CrC,EAAAA;0CAAvCiB;;;;;;;;;;;;;;ACbrB,IAAMd,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,yyEAAAzZ,KAAA,CAAA0Z,WAAA,yCAYP+B;;;AAKjB,SAAAA,EAAYtG,EAAgBoF,GAAkB,IAAAtY,gGAAAyZ,CAAAve,KAAAse,GAAAE,EAAAC,EAC1C3Z,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,IAD6B,cAAAsB,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,YAAA6Z,EAAAF,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,QAAA8Z,EAAAH,EAAA3Z;AAE1C,IAAM+Z,EAAY/Z,EAAKsY,KAAKre,MAAQ+F,EAAKsY,KAAKre,MAAM0Q,MAAM,KAAK,GAAK,KAC9DqP,EAAUha,EAAKsY,KAAKre,MAAQ+F,EAAKsY,KAAKre,MAAM0Q,MAAM,KAAK,GAAK;AAHxB,OAI1C3K,EAAKia,YAAcF,EAAY,IAAIG,KAAKH,GAAa,IAAIG,KACzDla,EAAKma,UAAYH,EAAU,IAAIE,KAAKF,GAAW,IAAIE,KALTla,sCAQ9C,WACI,IAAIsP,EAAQ;AAGZ,OAFIpU,KAAKod,KAAKre,QAAOqV,EAAQpU,KAAKod,KAAKre,MAAM0Q,MAAM,KAAK,IACpDzP,KAAKkf,MAAL,YAAyB9K,EAAQpU,KAAKkf,MAAL,WAC9B9K,EAAQ,IAAI4K,KAAK5K,GAAS,0BAGrC,WACI,IAAIO,EAAM;AAGV,OAFI3U,KAAKod,KAAKre,QAAO4V,EAAM3U,KAAKod,KAAKre,MAAM0Q,MAAM,KAAK,IAClDzP,KAAKkf,MAAL,UAAuBvK,EAAM3U,KAAKkf,MAAL,SAC1BvK,EAAM,IAAIqK,KAAKrK,GAAO,gCAGjC,SACmBwK,GACfnf,KAAKkf,MAAL,UAA0BC,EAAIxb,GAC9B3D,KAAKkf,MAAQlf,KAAKkf,MAClBlf,KAAKof,6CAGT,SACiBD,GACbnf,KAAKkf,MAAL,QACIlf,KAAKkf,MAAL,WAA2Blf,KAAKkf,MAAL,UAA0BC,EAAIxb,GACnD3D,KAAKkf,MAAL,UACAC,EAAIxb,GACT3D,KAAKkf,MAAL,YACDlf,KAAKkf,MAAL,UAA0Blf,KAAKod,KAAKre,MAC9BiB,KAAKod,KAAKre,MAAM0Q,MAAM,KAAK,GAC3BzP,KAAKkf,MAAL,SACVlf,KAAKkf,MAAQlf,KAAKkf;AAClB,IAAMG,EAAarf,KAAKkf,MAAL,UAA0B,IAAMlf,KAAKkf,MAAL;AAKnDlf,KAAKod,KAAKkC,WAAWD,oCAGzB,WAESrf,KAAKkf,MAAL,SACLlf,KAAKuf,UAAU,CAAE5b,GAAI3D,KAAKkf,MAAL,+CAQzB,SAC6BM,EAAgB9C,GACzC,IAAM3d,EAAQ2d,EAAMlX,OAAOzG;AACtBiB,KAAKyf,gBAAgB1gB,KACX,UAAXygB,GACAxf,KAAK+e,YAAc/e,KAAK0f,eAAe3gB,GACvCiB,KAAKkf,MAAL,WAA0B,EAAAS,EAAAzgB,SAAOc,KAAK+e,aAAa5N,OAAO,gBAE1DnR,KAAKif,UAAYjf,KAAK0f,eAAe3gB,GACrCiB,KAAKkf,MAAL,SAAwB,EAAAS,EAAAzgB,SAAOc,KAAKif,WAAW9N,OAAO,eAE1DnR,KAAKkf,MAAQlf,KAAKkf,wCAGtB,WAEI,GAAKlf,KAAKkf,MAAL,UAAL,CACA,IAAMU,EAAkBC,SAASC,cAC7B;AAEJF,EAAgBG,QAChBH,EAAgBI,QAChBJ,EAAgBK,oCAGpB,SACkBvD,GAEd,SADwB,CAAC,IAAK,IAAK,EAAG,GAAI,IAAK,GAAI,IAC/B5a,SAAS4a,EAAMwD,UAAanM,MAAM2I,EAAM7V,OACrD6V,EAAMyD,gDAGjB,SAAuBphB,GACnB,GAAIA,EAAM+C,SAAS,MAAQ/C,EAAM+C,SAAS,KAAM,CAC5C,IAAM2N,EAAQ1Q,EAAM+C,SAAS,KAAO/C,EAAM0Q,MAAM,KAAO1Q,EAAM0Q,MAAM;AACnE,OAAO1Q,EAAMmU,QAAU,GAAKnU,EAAMmU,QAAU,IAA0B,IAApBzD,EAAM,GAAGyD,OAE3D,OAAwB,IAAjBnU,EAAMmU,qCAIrB,SAAuBnU,GACnB,GAAIA,EAAM+C,SAAS,MAAQ/C,EAAM+C,SAAS,KAAM,CAC5C,IAAM2N,EAAQ1Q,EAAM+C,SAAS,KAAO/C,EAAM0Q,MAAM,KAAO1Q,EAAM0Q,MAAM,KAC7D/B,EAAM4D,SAAS7B,EAAM,GAAI,IACzBuL,EAAQ1J,SAAS7B,EAAM,GAAI,IAAM,EACjC2K,EAAO9I,SAAS7B,EAAM,GAAI;AAChC,OAAO,IAAIuP,KAAK5E,EAAMY,EAAOtN,GAE7B,IAAMA,EAAM4D,SAASvS,EAAMwG,MAAM,EAAG,GAAI,IAClCyV,EAAQ1J,SAASvS,EAAMwG,MAAM,EAAG,GAAI,IAAM,EAC1C6U,EAAO9I,SAASvS,EAAMwG,OAAO,GAAI;AACvC,OAAO,IAAIyZ,KAAK5E,EAAMY,EAAOtN,sCApHOsO,EAAAA,2SAGf;0CAHZsC;;;;;;;;;;;;;;ACZrB,IAAMnC,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,q6DAAAzZ,KAAA,CAAA0Z,WAAA,8CAoCP6D,6CAGhB7gB,MAAAC,OAAAC,QAAQ;;;AAGT,SAAA2gB,EAAYpI,EAAgBoF,GAA2B,IAAAtY,sGAAAyZ,CAAAve,KAAAogB,GAAA5B,EAAAC,EACnD3Z,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,IADsC,QAAAsB,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,QAAA6Z,EAAAF,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,YAAA8Z,EAAAH,EAAA3Z,MAAA2Z,EAAA3Z,UAAA,KAAA;AAYnD,IAAMub,EAAavb,EAAKsY,KAAK5Z,MAAMiM,MAAM;AACrC4Q,EAAWnN,OAAS,GAAM3T,MAAA+gB,UAAUxb,EAAKsY,KAAK7Z;AAMlD,IAAIC,EAAQ;AAEZ,GAAIsB,EAAKsY,KAAK5Z,QAAUsB,EAAKsY,KAAK7Z,KAC9BC,EAAQsB,EAAKoF,MAAM1G,MAAM6c,EAAW,GAAIA,EAAW;IAChD,CAAA,IAAIvb,EAAKsY,KAAK7Z,OAAQuB,EAAKsY,KAAK5Z,MAGnC,MAAM,IAAI+D,MAAM;AAFhB/D,EAAQsB,EAAKoF,MAAM1G,MAAMsB,EAAKsY,KAAK7Z,KAAMuB,EAAKsY,KAAK5Z,OAxBJ,OA6B/CsB,EAAKsY,KAAKre,QACVyE,EAAMzE,MAAQ+F,EAAKsY,KAAKre,OAExB+F,EAAKsY,KAAKmD,SACV/c,EAAM+c,OAASzb,EAAKsY,KAAKmD,QAG7Bzb,EAAKtB,MAAQA,EApCsCsB,mCA4CvD,WAAiB,IAAA0b,EACP7d,GAAS,QAAA6d,EAACxgB,KAAKod,KAAKqD,cAAX,IAAAD,OAAA,EAACA,EAAkB7d,SAAkB;AACpD,OAAOA,MAAAA,OAAP,EAAOA,EAAQ+d,UAAU1gB,KAAKwD,MAAMqJ,kCAwBxC,WACI,IAAK7M,KAAKwD,MAAO,OAAO;AACxB,GAAIxD,KAAKod,KAAKuD,UAAW,MAAO,gBAAkB3gB,KAAKod,KAAKuD;AAC5D,IAAIC,EAAY5gB,KAAKwD,MAAMkH,KAAK0E,QAAQ,KAAM;AAC5B,aAAdwR,IAA0BA,EAAY;AAE1C,IAAMC,EAAY,gBAAkBD;AAEpC,OAAO5gB,KAAK8gB,gBAAgBD,GAAaA,EAAY,qDAQzD,WACI,IAAMrd,EAAQxD,KAAKwD;AACnB,OAAOjE,MAAAua,OAAAiH,SAAS/gB,KAAKwB,UAAU2X,wBAAwB3V,EAAMD,KAAMC,EAAMqJ,0BAG7E,WACI,MAAO,oDAGX,WACI,OAAK7M,KAAKod,KAAK4D,OAEGniB,OAAO8H,KAAK3G,KAAKod,KAAK4D,OAC/Blf,SAAS9B,KAAKwD,MAAMqJ,MAClB7M,KAAKod,KAAK4D,MAAMhhB,KAAKwD,MAAMqJ,MAJT,oCAUjC,SAAgBoU,GACZ,OAAO1hB,MAAAkZ,SAASzY,MAAMkhB,gBAAf,aAAAtgB,OAA4CqgB,uCAjHNjF,EAAAA,8GACpB;0CADZoE;;;;;;;;;;;ACpCrB,IAAMjE,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,scAAAzZ,KAAA,CAAA0Z,WAAA,+CAGP4E;;;gEAAgCC,EAAAA;0CAAhCD;;;;;;;;;;;;;;ACHrB,IAAMhF,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,mVAAAzZ,KAAA,CAAA0Z,WAAA,8CAsBP8E;;;AAIjB,SAAAA,EAAYrJ,EAAgBoF,GAAiB,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAAqhB,GAAA7C,EAAAC,EACzC3Z,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,IAD4B,QAAAsB,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,OAAA6Z,EAAAF,EAAA3Z,IAAAA,iCAI7C,WACI,OAAO9E,KAAKod,KAAK7Z,uBAGrB,WACI,OAAOvD,KAAKod,KAAKvQ,6BAGrB,WACI,OAAgC,IAAzB7M,KAAKod,KAAKkE,8BAGrB,WACI,OAAOthB,KAAKod,KAAKmE,OAAS,6BAG9B,WACI,OAAOvhB,KAAKod,KAAKoE,MAAQ,8BAG7B,WACI,OAAOxhB,KAAKod,KAAKqE,WAAY,uBAGjC,WACI,IAAM5a,EAAM7G,KAAKuD,KAAO,IAAMvD,KAAK6M,KAAO,MACpC6U,EAAuC,OAA5B1hB,KAAKL,KAAKgiB,cAAyB9a,EAAM;AAC1D,OAAO7G,KAAKL,KAAK2C,EAAEuE,EAAK,CAAE3H,QAASwiB,0BAGvC,WACI,IAAM7a,EAAM7G,KAAKuD,KAAO,IAAMvD,KAAK6M,KAAO,OACpC6U,EAAuC,OAA5B1hB,KAAKL,KAAKgiB,cAAyB9a,EAAM;AAC1D,OAAO7G,KAAKL,KAAK2C,EAAEuE,EAAK,CAAE3H,QAASwiB,uCAzCU1F,EAAAA,8GAChB;0CADhBqF;;;;;;;;;;;;;;ACtBrB,IAAMlF,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,y2BAAAzZ,KAAA,CAAA0Z,WAAA,mDAaPqF;;;;;;qGAGjB,WAAiB,IAAA/K,EAAA7W;AACb,IAAKA,KAAKod,KAAKzS,QAAS,MAAO;AAE/B,IAAM5L,EAAQiB,KAAKod,KAAKre,OAAS;AAEjC,OAAOF,OAAO8H,KAAK3G,KAAKod,KAAKzS,SAASkX,KAAI,SAAChb,GACvC,IAAIib,EAAOjL,EAAKuG,KAAKzS,QAAQ9D;AAG7B,MAF6B,MAAzBib,EAAKtO,UAAU,EAAG,KAClBsO,EAAOjL,EAAKlX,KAAK2C,EAAEuU,EAAKuG,KAAK7Z,KAAO,KAAOsT,EAAKuG,KAAKvQ,KAAO,IAAMhG,IAC/D,CACHA,IAAAA,EACAib,KAAAA,EACAC,QAAShjB,EAAM+C,SAAS+E,EAAIgE,4CAKxC,SACuBmX,GACnB,IAAMtW,EAAQsW,EAAInb,IAAIgE,WAChBoX,EAAM,IAAIC,IAAIliB,KAAKod,KAAKre;AAC1BkjB,EAAIE,IAAIzW,GAAQuW,EAAIG,OAAO1W,GAC1BuW,EAAIvT,IAAIhD,GACb1L,KAAKod,KAAKiF,SAASzgB,MAAMC,KAAKogB,uCA1BoBjG,EAAAA;0CAArC4F;;;;;;;;;;;;;;;;;;ACbrB,IAAMzF,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,2hCAAAzZ,KAAA,CAAA0Z,WAAA,8DAoBP+F,sBAEhB/iB,MAAAC,OAAAC,QAAQ,oFAgCRF,MAAAwB,SAAS,UAAW,gBAAiB,cAAe;;;AAxBrD,SAAAuhB,EAAYtK,EAAYoF,GAAW,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAAsiB,GAAA9D,EAAAC,EAC/B3Z,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,IADkB,aAAAsB,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,MAAA6Z,EAAAF,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,UAAA8Z,EAAAH,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,mBAAAyd,EAAA9D,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,oBAAA0d,EAAA/D,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,qBAAA2d,EAAAhE,EAAA3Z,IAE/BA,EAAK4d,IAAItO,QAETtP,EAAK6d,QAAQC,GAAG,2BAAhBnE,EAAA3Z,IAAkD,SAAC+d,GAG3C/d,EAAKge,mBAAmBD,EAAYE,kBACpCje,EAAKke,kBAAoBle,EAAKke,iBAE9Ble,EAAKme,kBAAoBJ,EAAYE,eAAeG,SACpDpe,EAAKqe,mBAAqBN,EAAYE,eAAeK,cAX9Bte,iDAiBnC,SAA2B+d,GACvB,OACI7iB,KAAKijB,oBAAsBJ,EAAYK,UACvCljB,KAAKmjB,qBAAuBN,EAAYO,+BAIhD,WACqB,IAAAvM,EAAA7W;AACjB,OAAO,IAAIT,MAAAkG,KAAKwC,SAAQ,SAACvC,GACrBmR,EAAKwM,cAAc,KAAnB,WAAA,IAAAnF,EAAAoF,EAAAzL,mBAAAC,MAAyB,SAAAC,EAAOpN,GAAP,OAAAkN,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,OAAAF,EAAAG,OAAA,SACd9S,EAAQiF;AADM,KAAA,EAAA,IAAA,MAAA,OAAA0N,EAAAe,UAAArB;AAAzB,OAAA,SAAAsB,GAAA,OAAA6E,EAAAhe,MAAAF,KAAAG,YAAA,kEAMR,SAAAojB,EAA8BC,EAAW9d,GAAzC,IAAA+d,EAAAzjB;AAAA,OAAA6X,mBAAAO,MAAA,SAAAsL,GAAA,OAAA,OAAAA,EAAApL,KAAAoL,EAAAnL,MAAA,KAAA,EACIoL,EAAAC,EAAAtB,EAAA1X,WAAA,gBAAA5K,MAAA8K,KAAA9K,KAAoBwjB,EAApB,WAAA,IAAAK,EAAAP,EAAAzL,mBAAAC,MAA0B,SAAAgM,EAAOC,GAAP,IAAAC;AAAA,OAAAnM,mBAAAO,MAAA,SAAA6L,GAAA,OAAA,OAAAA,EAAA3L,KAAA2L,EAAA1L,MAAA,KAAA,EAAA,OAAA0L,EAAA1L,KAAA,EACQkL,EAAKS,qBAAqBV;AADlC,KAAA,GAClBQ,EADkBC,EAAAjL,QAIlBgL,EAAoBA,EAAkBG,QAAO,SAACC,GAC1C,OACIX,EAAKf,IAAI2B,YACLZ,EAAKf,IAAIK,eACT7f,KAAKwD,MAAM0d,EAAQE,eACnBb,EAAKf,IAAI6B,oBAKzB7e,EAAQ,CACJ,CACI8e,UAAWf,EAAK9jB,KAAK2C,EAAE,uBACvBqI,QAASqZ,EAAoBA,EAAkBS,UAAY,IAE/D,CACID,UAAWf,EAAK9jB,KAAK2C,EAAE,uBACvBqI,QAASoZ,EAAiBA,EAAeU,UAAY;AArBvC,KAAA,EAAA,IAAA,MAAA,OAAAR,EAAA7K,UAAA0K;AAA1B,OAAA,SAAAtK,GAAA,OAAAqK,EAAA3jB,MAAAF,KAAAG,YAAA;AADJ,KAAA,EAAA,IAAA,MAAA,OAAAujB,EAAAtK,UAAAmK,EAAAvjB,yFAmCA,WAA4D,IAAhCwjB,EAAgCrjB,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAzB,KAAMwD,EAAmBxD,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAd,KACpCwkB,EAAS,CACXphB,KAAMvD,KAAKuD,KACXC,MAAOxD,KAAK6M,KACZ+X,eAAgB,MAChBC,MAAO;AAMX,GAHIlhB,IAAIghB,EAAOhhB,GAAKA,GAChB6f,IAAMmB,EAAOG,EAAItB,GAEjBxjB,KAAKmkB,OACL,IAAA,IAAAY,EAAA,EAAAC,EAAkBnmB,OAAO8H,KAAK3G,KAAKmkB,QAAnCY,EAAAC,EAAA9R,OAAA6R,IAA4C,CAAvC,IAAMle,EAAGme,EAAAD;AACN/kB,KAAKmkB,OAAOtd,KACZ8d,EAAO9d,GAAO7G,KAAKmkB,OAAOtd,GAAKlD,IAK3C,OAAOghB,oEAGX,SAAAM,IAAA,IAAAzB,EAAAmB,EAAAO,EAAA/kB;AAAA,OAAA0X,mBAAAO,MAAA,SAAA+M,GAAA,OAAA,OAAAA,EAAA7M,KAAA6M,EAAA5M,MAAA,KAAA,EAAA,GAAmCiL,EAAnC0B,EAAAhS,OAAA,QAAAwR,IAAAQ,EAAA,GAAAA,EAAA,GAAyD,KAChDllB,KAAK0iB,IAAIK,eADlB,CAAAoC,EAAA5M,KAAA;AAAA,MAAA,OAAA4M,EAAA3M,OAAA,SACyC;AADzC,KAAA,EAAA,OAEUmM,EAAS,CACXC,eAAgB,KAChBN,aAAc,WACdO,MAAO,OAGPrB,IAAMmB,EAAOG,EAAItB,GARzB2B,EAAA3M,OAAA,SAUWxY,KAAKkN,MAAM7J,MAAM,UAAWshB;AAVvC,KAAA,EAAA,IAAA,MAAA,OAAAQ,EAAA/L,UAAA6L,EAAAjlB,wFApG8DolB,EAAAA,mHACb,4SAIZ,sHAEe,0HACC;0CARpC9C;;;;;;;;;;;;;;;;ACpBrB,IAAMnG,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,w1GAAAzZ,KAAA,CAAA0Z,WAAA,8CAmDP8I,6OA+GhB9lB,MAAAwB,SAAS,UAAW,gBAAiB;;;AA9FtC,SAAAskB,EAAYrN,EAAgBoF,GAAsB,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAAqlB,GAAA7G,EAAAC,EAC9C3Z,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,IADiC,WAAAsB,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,oBAAA6Z,EAAAF,EAAA3Z,IAAAuN,EAAAoM,EAAA3Z,GAAA,YAAA,GAAAuN,EAAAoM,EAAA3Z,GAAA,YAAA,GAAAuN,EAAAoM,EAAA3Z,GAAA,cAAA,GAAAuN,EAAAoM,EAAA3Z,GAAA,cAAA,GAAA0Z,EAAAC,EAAA3Z,GAAA,aAAA8Z,EAAAH,EAAA3Z,IAAAuN,EAAAoM,EAAA3Z,GAAA,kBAAA,GAAA0Z,EAAAC,EAAA3Z,GAAA,QAAAyd,EAAA9D,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,OAAA0d,EAAA/D,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,eAAA2d,EAAAhE,EAAA3Z,IAE9CA,EAAKwgB,cAFyCxgB,wEAKlD,SAAAiT,IAAA,IAAAwN,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC;AAAA,OAAAnO,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,IACQvY,KAAKod,KAAKre,MADlB,CAAAsZ,EAAAE,KAAA;AAAA,MAAA,OAAAF,EAAAG,OAAA;AAAA,KAAA,EAAA,IAEQxY,KAAKod,KAAK6I,aAFlB,CAAA5N,EAAAE,KAAA;AAAA,MAAA,OAAAF,EAAAG,OAAA;AAAA,KAAA,EAAA,IAGQxY,KAAKod,KAAKqD,OAHlB,CAAApI,EAAAE,KAAA;AAAA,MAAA,IAKYvY,KAAKod,KAAKqD,OAAO9c,GAL7B,CAAA0U,EAAAE,KAAA;AAAA,MAAA,OAAAF,EAAAG,OAAA;AAAA,KAAA,EAAA,OAAAH,EAAAE,KAAA,EAOqBvY,KAAKod,KAAKqD,OAAOzgB,KAAKkmB;AAP3C,KAAA,EAAA,GAAA7N,EAAA2B,KAAA3B,EAAAW,KAAAX,EAAA2B,GAAA,CAAA3B,EAAAE,KAAA;AAAA,MAAAF,EAAA2B,GAAA,QAAAuL,EAOwDvlB,KAAKod,KAAK/O,gBAPlE,IAAAkX,GAOwDA,EAAoBY;AAP5E,KAAA,GAAA,IAAA9N,EAAA2B,GAAA,CAAA3B,EAAAE,KAAA;AAAA,MAAA,OAAAF,EAAAG,OAAA;AAAA,KAAA,GAAA,KAScgN,EAAqBxlB,KAAK+G,aAAaP,QAAQ,YAAcxG,KAAKkmB,YACxDV,EAAS,GAVjC,CAAAnN,EAAAE,KAAA;AAAA,MAAA,OAAAF,EAAAE,KAAA,GAWsCvY,KAAKkN,MAAM7J,MAAMrD,KAAKkmB,QAAS,CACrDviB,GAAI6hB,EAAS,GACbjiB,KAAMvD,KAAKod,KAAK7Z,KAChBC,MAAOxD,KAAKod,KAAKvQ;AAdjC,KAAA,GAAA,GAWgB8Y,EAXhBtN,EAAAW,KAgBY2M,EAAY,QAAAF,EAAGE,SAAH,IAAAF,OAAA,EAAGA,EAAcW,YACgB,aAA7B,QAAZV,EAAAC,SAAA,IAAAD,OAAA,EAAAA,EAAczmB,IAAI,oBAjBlC,CAAAoZ,EAAAE,KAAA;AAAA,MAAA,OAAAF,EAAAE,KAAA,GAkBuCoN;AAlBvC,KAAA,GAAA,GAkBsBC,EAlBtBvN,EAAAW,MAmBoBhZ,KAAKod,KAAK+G,OAnB9B,CAAA9L,EAAAE,KAAA;AAAA,MAAA,OAoBoB,QAAAsN,GAAAC,EAAA9lB,KAAKod,MAAKiJ,mBAAV,IAAAR,GAAAA,EAAA/a,KAAAgb,GAAwB,GApB5CzN,EAAAE,KAAA,GAqB8BvY,KAAKsmB,sBAAsBtmB,KAAK2K,QAASib;AArBvE,KAAA,GAAA,IAAAvN,EAAAW,KAAA,CAAAX,EAAAE,KAAA;AAAA,MAsBwBvY,KAAKod,KAAKiF,SAASuD;AAtB3C,KAAA,GAuBoB,QAAAG,GAAAC,EAAAhmB,KAAKod,MAAKiJ,mBAAV,IAAAN,GAAAA,EAAAjb,KAAAkb,GAAwB,GAvB5C3N,EAAAE,KAAA;AAAA;AAAA,KAAA,GAyBoBvY,KAAKod,KAAKiF,SAASuD;AAzBvC,KAAA,GAAA,IAAA,MAAA,OAAAvN,EAAAe,UAAArB,EAAA/X,0EAiCA,WACI,OAAQA,KAAKod,KAAKzS,QAAsBpH,gCAG5C,WACI,OAAQvD,KAAKod,KAAKzS,QAAsBwP,gCAG5C,WACI,OAAOna,KAAKod,KAAKmD,OAASvgB,KAAKL,KAAK2C,EAAEtC,KAAKod,KAAKmD,QAAU,2BAK9D,SAAsBiD,GAAc,IAAA3M,EAAA7W;AAChC,OAAO,IAAIT,MAAAkG,KAAKwC,SAAQ,SAACvC,GACrBnG,MAAAkD,IAAA8jB,SAAS1P,EAAMA,EAAKwM,cAAeG,EAAM9d,EAAS,gCAI1D,SAAwBgX,GACO,YAAvBA,EAAMlX,OAAOzG,MAAqBiB,KAAKqiB,SAAS3F,EAAMlX,OAAOzG,OAC5DiB,KAAKqiB,SAASriB,KAAKkN,MAAMsZ,WAAWxmB,KAAKkmB,QAASxJ,EAAMlX,OAAOzG,gCAGxE,SAAwBA,GACC,iBAAVA,GAAoBiB,KAAKymB,aAAa1nB,GAC7CiB,KAAKod,KAAK5K,QAAOxS,KAAKod,KAAK5K,MAAMxS,KAAK6M,MAAS9N,GACnDiB,KAAKod,KAAKiF,SAAStjB,4BAGvB,WACI,OAAOiB,KAAKod,KAAKsJ,4CAGrB,WACI,OAAO1mB,KAAKod,KAAKuJ,2CAGrB,SAAgCnD,GAC5B,OAAOxjB,KAAKL,KAAK2C,EAAE,eAAiB,IAAMkhB,0BAG9C,SACmBzkB,GACf,OAAIA,aAAiBQ,MAAMmT,aAAe3T,aAAiBQ,MAAMoT,WACtD5T,EAAM6nB,QAEV7nB,uBAQX,WACmC,IAAA0kB,EAAAzjB;AAC/B,IACI,OAAO,IAAIT,MAAAkG,KAAKwC,SAAQ,SAACvC,GACrB+d,EAAKJ,cAAc,KAAnB,WAAA,IAAAnF,EAAAoF,EAAAzL,mBAAAC,MAAyB,SAAAgM,EAAOnZ,GAAP,IAAAkc,EAAArB;AAAA,OAAA3N,mBAAAO,MAAA,SAAA6L,GAAA,OAAA,OAAAA,EAAA3L,KAAA2L,EAAA1L,MAAA,KAAA,EAAA,GACjBkL,EAAKrG,KAAK0J,SACVnc,GAAU,EAAAoc,EAAAD,QAAOrD,EAAKrG,KAAK0J,OAAQnc,EAAS8Y,EAAKuD,gBAGjD,QAAAH,EAAApD,EAAKrG,KAAK/O,gBAAV,IAAAwY,GAAAA,EAAoBI,kBAAuC,IAAnBtc,EAAQuI,QAChDuQ,EAAKrG,KAAKiF,SAAS1X,EAAQyb,eAC3B3C,EAAKrG,KAAK+G,QAAUxZ,EAAQuI,OAAS,IAPpB,CAAA+Q,EAAA1L,KAAA;AAAA,MAAA,OAAA0L,EAAAzL,OAAA,SAO+B9S,EAAQiF;AAPvC,KAAA,EAAA,OAAAsZ,EAAA1L,KAAA,EASEkL,EAAKyD,YAAYvc;AATnB,KAAA,EAAA,KASf6a,EATevB,EAAAjL,MAAA,CAAAiL,EAAA1L,KAAA;AAAA,MAAA,OAAA0L,EAAAzL,OAAA,SAWA9S,EAAQ8f;AAXR,KAAA,EAAA,OAAAvB,EAAAzL,OAAA,SAYd9S,EAAQiF;AAZM,KAAA,GAAA,IAAA,MAAA,OAAAsZ,EAAA7K,UAAA0K;AAAzB,OAAA,SAAAzK,GAAA,OAAA6E,EAAAhe,MAAAF,KAAAG,YAAA,OAeN,MAAOgnB,GACL,MAAM,IAAI5f,MAAM4f,gCAIxB,SAAuB1G,GACnB,IACI+E,EAAWxlB,KAAK+G,aAAaP,QAAQ,YAAcxG,KAAKkmB;AACvDV,IAAUA,EAAW,IAE1BA,EAAS4B,QAAQ3G,EAASA,EAAO9c,GAAK,IACtC3D,KAAK+G,aAAaO,QACd,YAActH,KAAKkmB,QACnBtkB,MAAMC,KAAK,IAAIqgB,IAAIsD,IAAWjgB,MAAM,EAPlB,8DAW1B,SAAAge,EAA4B5Y,GAA5B,IAAA6a,EAAA6B;AAAA,OAAAxP,mBAAAO,MAAA,SAAAsL,GAAA,OAAA,OAAAA,EAAApL,KAAAoL,EAAAnL,MAAA,KAAA,EAAA,GACUiN,EAAWxlB,KAAK+G,aAAaP,QAAQ,YAAcxG,KAAKkmB,SADlE,CAAAxC,EAAAnL,KAAA;AAAA,MAAA,OAAAmL,EAAAlL,OAAA,UAE0B;AAF1B,KAAA,EAAA,OAAAkL,EAAAnL,KAAA,EAI0BvY,KAAKkN,MAAM7J,MAAMrD,KAAKkmB,QAAS,CACjDviB,GAAI6hB,EAASrB,QAAO,SAAChF,GAAD,OAAiBA,KAAKxB,KAAK,KAC/Cpa,KAAMvD,KAAKod,KAAK7Z,KAChBC,MAAOxD,KAAKod,KAAKvQ;AAPzB,KAAA,EAAA,OAIUwa,EAJV3D,EAAA1K,KAAA0K,EAAAlL,OAAA,SAUW,CACH,CAAEgM,UAAWxkB,KAAKL,KAAK2C,EAAE,0BAA2BqI,QAAS0c,EAAQ5C,WACrE,CAAED,UAAWxkB,KAAKL,KAAK2C,EAAE,cAAeqI,QAASA,EAAQ8Z;AAZjE,KAAA,EAAA,IAAA,MAAA,OAAAf,EAAAtK,UAAAmK,EAAAvjB,uFAuBA,WAA0F,IAA9DwjB,EAA8DrjB,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAxC,KAAMwD,EAAkCxD,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAd,KAClEwkB,EAAS,CACXphB,KAAMvD,KAAKod,KAAK7Z,KAChBC,MAAOxD,KAAKod,KAAKvQ,KACjBgY,MAAO,IACPyC,OAAQ;AAMZ,GAHI3jB,IAAIghB,EAAOhhB,GAAKA,GAChB6f,IAAMmB,EAAOG,EAAItB,GAEjBxjB,KAAKod,KAAK+G,OACV,IAAA,IAAAY,EAAA,EAAAC,EAAkBnmB,OAAO8H,KAAK3G,KAAKod,KAAK+G,QAAxCY,EAAAC,EAAA9R,OAAA6R,IAAiD,CAA5C,IAAMle,EAAGme,EAAAD;AACN/kB,KAAKod,KAAK+G,OAAOtd,KACjB8d,EAAO9d,GAC8B,iBAA1B7G,KAAKod,KAAK+G,OAAOtd,GAClB7G,KAAKod,KAAK+G,OAAOtd,GACjBtH,MAAAN,IAAIe,KAAKod,KAAK+G,OAAOtd,GAAM,OAKjD,OAAO8d,6BAIX,WAAqC,IAAAnE,EAAA+G;AACjC,QAAQ,QAAA/G,EAACxgB,KAAKod,KAAKqD,cAAX,IAAAD,IAACA,EAAkBrJ,UAAU,QAAAoQ,EAACvnB,KAAKod,KAAKqD,cAAX,IAAA8G,IAACA,EAAkBC,+EAG5D,SAAAvC,EAA8BzB,EAAW9d,GAAzC,IAAA+hB,EAAAC,EAAAC,EAAAC,EAAAjd;AAAA,OAAAkN,mBAAAO,MAAA,SAAA+M,GAAA,OAAA,OAAAA,EAAA7M,KAAA6M,EAAA5M,MAAA,KAAA,EAAA,OACQvY,KAAKod,KAAK+G,SAAWX,IACrBxjB,KAAKyhB,UAAW,EAChB,QAAAkG,GAAAC,EAAA5nB,KAAKod,MAAKiJ,mBAAV,IAAAsB,GAAAA,EAAA7c,KAAA8c,GAAwB,IAHhCzC,EAAA5M,KAAA,EAK0BvY,KAAKkN,MAAM7J,MAAMrD,KAAKkmB,QAASlmB,KAAK6nB,kBAAkBrE;AALhF,KAAA,EAAA,GAKU7Y,EALVwa,EAAAnM,KAOSwK,IACDxjB,KAAK8nB,sBACA,EAAAC,EAAAC,aAAcrd,EAAQuI,OAAS,IAC/BlT,KAAKod,KAAK6K,sBAAwBjoB,KAAKod,KAAK8K,cAVzD/C,EAAAnL,GAgBQha,KAAKod,KAAK+G,QACVnkB,KAAKod,KAAKre,OAjBlBomB,EAAAnL,GAAA,CAAAmL,EAAA5M,KAAA;AAAA,MAAA,OAAA4M,EAAA5M,KAAA,EAkBgBvY,KAAKsmB,sBAAsB3b,EAAS3K,KAAKod,KAAKre;AAlB9D,KAAA,EAAAomB,EAAAnL,IAAAmL,EAAAnM;AAAA,KAAA,GAAA,IAAAmM,EAAAnL,GAAA,CAAAmL,EAAA5M,KAAA;AAAA,MAoBQvY,KAAKod,KAAKiF,SAAS;AApB3B,KAAA,GAqBIriB,KAAKyhB,UAAW,EAChB,QAAAgG,GAAAC,EAAA1nB,KAAKod,MAAKiJ,mBAAV,IAAAoB,GAAAA,EAAA3c,KAAA4c,GAAwB,GACxBhiB,EAAQiF;AAvBZ,KAAA,GAAA,IAAA,MAAA,OAAAwa,EAAA/L,UAAA6L,EAAAjlB,2HA0BA,SAAAmoB,EAAsCxd,EAAc5L,GAApD,OAAA8Y,mBAAAO,MAAA,SAAAgQ,GAAA,OAAA,OAAAA,EAAA9P,KAAA8P,EAAA7P,MAAA,KAAA,EAAA,OAAA6P,EAAA7P,KAAA,EACkBxZ;AADlB,KAAA,EAAA,OACIA,EADJqpB,EAAApP,KAAAoP,EAAA7P,KAAA,EAEoB5N;AAFpB,KAAA,EAAA,GAEIA,EAFJyd,EAAApP,MAIQhZ,KAAKqoB,gBACLtpB,GACC4L,EAAQ9F,MAAK,SAACyjB,GAAD,OAAcA,EAAI3kB,KAAOpE,MAAAN,IAAIF,EAAkB,SANrE,CAAAqpB,EAAA7P,KAAA;AAAA,MAAA,OAAA6P,EAAA7P,KAAA,EASmCvY,KAAKkN,MAAM7J,MAClCrD,KAAKkmB,QACLlmB,KAAK6nB,kBAAkB,KAAMtoB,MAAAN,IAAIF,EAAkB;AAX/D,KAAA,EAAA,KAAAqpB,EAAApP,KAayB9F,OAAS,GAblC,CAAAkV,EAAA7P,KAAA;AAAA,MAAA,OAAA6P,EAAA5P,OAAA,UAcmB;AAdnB,KAAA,GAAA,OAAA4P,EAAA5P,OAAA,UAiBW;AAjBX,KAAA,GAAA,IAAA,MAAA,OAAA4P,EAAAhP,UAAA+O,EAAAnoB,2FAjOQgc,EAAAA,iHAG4B,sHACS,+GAKP;0CAVrBqJ;;;;;;;;;;;;;;ACnDrB,IAAMlJ,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,07GAAAzZ,KAAA,CAAA0Z,WAAA,mDAUPgM;;;AASjB,SAAAA,EAAYvQ,EAAgBoF,GAAuB,IAAAoL,EAAA1jB;AAAA,mGAAAyZ,CAAAve,KAAAuoB,GAAA/J,EAAAC,EAC/C3Z,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,IADkC,UAAAsB,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,QAAA6Z,EAAAF,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,QAAA8Z,EAAAH,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,MAAAyd,EAAA9D,EAAA3Z,MAAA2Z,EAAA3Z,UAAA,KAAA,kGAE/CA,EAAKuiB,QAAU,GACXviB,EAAKsY,KAAKre,OAAV,QAAAypB,EAAoB1jB,EAAKsY,KAAKre,aAA9B,IAAAypB,GAAmBA,EAAgCtV,SACnDpO,EAAKuiB,QAAWviB,EAAKsY,KAAKre,MACrBolB,QAAO,SAAClO,GACL,MAAgB,MAAZA,EAAKtS,MAGZ8gB,WAET3f,EAAKvB,KAAQuB,EAAKsY,KAAKzS,QAAsBpH,KAXEuB,mCAcnD,WACI,IAAM2jB,EAAezoB,KAAKkK,MAAMwe,WAAW1oB,KAAKod,KAAK7Z;AACrD,OAAOvD,KAAKkK,MACPwe,WAAW1oB,KAAKuD,MAChB4gB,QAAO,SAAC3gB,GAAD,OAA2BilB,EAAaE,OAAO,OAAQnlB,EAAMqJ,SACpEgV,KAAI,SAACre,GAAD,OAA0BA,EAAMqJ,QACpC8Q,KAAK,0BAId,WACI,OAAI3d,KAAKod,KAAK+G,SAEQ,cAAdnkB,KAAKuD,MAAwB1E,OAAO8H,KAAK3G,KAAKod,KAAK+G,QAAQriB,SAAS,YAKtD,cAAd9B,KAAKuD,MAAwB1E,OAAO8H,KAAK3G,KAAKod,KAAK+G,QAAQriB,SAAS,eAJ7D,CAAE8mB,SAAU5oB,KAAKod,KAAK+G,QAQ9B,4BAGX,WAC4B,IAAA0E,EAClBpI,EAASzgB,KAAKkN,MAAM4b,aAAa9oB,KAAKuD;AAC5C,QAAAslB,EAAA7oB,KAAKqnB,eAAL,IAAAwB,GAAAA,EAAc3d,KAAKuV,GACnBzgB,KAAK+oB,eACLxpB,MAAAypB,qBAAqBhpB,KAAM,mCAG/B,SACmBygB,EAAiBwI,EAAmBlqB,GACnD0hB,EAAOwI,GAAalqB,EACpBiB,KAAKod,KAAKiF,SAASriB,KAAKqnB,kCAG5B,SACoB5G,GAChBA,EAAOxhB,IAAI,SAAWwhB,EAAOyI,eAAiBzI,EAAO0I,gBAErDnpB,KAAKqnB,QAAUrnB,KAAKqnB,QAAQlD,QAAO,SAAClO,GAAD,OAAUA,IAASwK,KAEtDzgB,KAAKod,KAAKiF,SAASriB,KAAKqnB,mDAG5B,SAA2B+B,GACvB,GAA0B,iBAAfA,EACP,OAAoB,GAAbA;AAEP,IAAM3Z,EAAQ2Z,EAAW3Z,MAAM;AAC/B,OAAgC,GAAzB6B,SAAS7B,EAAM,GAAI,IAAW6B,SAAS7B,EAAM,GAAI,gCAIhE,WAAe,IAAA8V,EAAA/E,EAAA+G,EAAA8B,EAAAC,EAAAC,EAAAC,EAAA3S,EAAA7W;AACX,GAA2C,mBAAvC,QAAAulB,EAAAvlB,KAAKod,KAAK/O,gBAAV,IAAAkX,OAAA,EAAAA,EAAoBkE,gBAAxB,CAEA,IAYOC,EAAAC,EAAAC,EAZHvc,EAAU,EACVO,EAAU,QAAA4S,EAAAxgB,KAAKod,KAAKqD,cAAV,IAAAD,GAAAA,EAAkB5S,QAC1B5N,KAAKod,KAAKqD,OAAO7S,SACjB,EAAA+R,EAAAzgB,WAASiS,OAAO;AAkBtB,GARI9D,EANA,QAAAka,EAACvnB,KAAKod,KAAKqD,cAAX,IAAA8G,GAACA,EAAkB5Z,WACnB,QAAA0b,EAACrpB,KAAKod,KAAKqD,cAAX,IAAA4I,GAACA,EAAkBzb,SADnB,QAAA0b,EAEAtpB,KAAKod,KAAKqD,cAFV,IAAA6I,IAEAA,EAAkBF,YAIR,EAAAzJ,EAAAzgB,UAAO,QAAAwqB,EAAA1pB,KAAKod,KAAKqD,cAAV,IAAAiJ,OAAA,EAAAA,EAAkBtc,MAAO,IAAMQ,GAASqG,MACrD,EAAA0L,EAAAzgB,UAAO,QAAAyqB,EAAA3pB,KAAKod,KAAKqD,cAAV,IAAAkJ,OAAA,EAAAA,EAAkBvc,MAAO,KAAzB,QAAAwc,EAA+B5pB,KAAKod,KAAKqD,cAAzC,IAAAmJ,OAAA,EAA+BA,EAAkBjc,YACxD,WAJM3N,KAAK6pB,2BAA2B7pB,KAAKod,KAAKqD,OAAO2I,YAQ/D,QAAAG,EAAIvpB,KAAKod,KAAKqD,cAAd,IAAA8I,GAAIA,EAAkBO,QAAOzc,GAAO,QAAAmc,EAAIxpB,KAAKod,KAAKqD,cAAd,IAAA+I,OAAA,EAAIA,EAAkBM,OAErDzc,EAAL,CAEIA,EAAU,IAAGA,GAAW;AAE5B,IAGI0c,EAHAC,EAAY,EACZC,EAAiB,EACjBC,GAAgB;AAEpBlqB,KAAKqnB,QAAQzgB,SAAQ,SAACoO,GAClB,GAAyB,iBAAdA,EAAI9D,MAAoB,CAC/B,IAAMzB,EAAQuF,EAAI9D,MAAMzB,MAAM;AAC9Bsa,EAAsC,GAAzBzY,SAAS7B,EAAM,GAAI,IAAW6B,SAAS7B,EAAM,GAAI,QAC3D,CAAA,GAAyB,iBAAduF,EAAI9D,MAGlB;AAFA6Y,EAAyB,GAAZ/U,EAAI9D,MAIjB+Y,GAAkBA,IAAmBF,IAAYG,GAAgB,GACrED,EAAiBF,EACjBC,GAAaD,KAIbC,IAAc3c,GAAW6c,EACzBlqB,KAAKqnB,QAAQzgB,SAAQ,SAAC6Z,GAAD,OAAaA,EAAOvP,MAAQ7D,EAAUwJ,EAAKwQ,QAAQnU,OAAS,MAG5E7F,EAAU2c,IACfhqB,KAAKqnB,QAAQrnB,KAAKqnB,QAAQnU,OAAS,GAAGhC,OAAS7D,EAAU2c,GAAa,yCApIxBhO,EAAAA,+GACd;0CADvBuM;;;;;;;;;;;;;;ACVrB,IAAMpM,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,irBAAAzZ,KAAA,CAAA0Z,WAAA,0CAWP4N;;;;;;8JAKjB,WAAmB,IAAA5E;AACf,OAAOvlB,KAAKod,KAAKgN,eAAV,QAAA7E,EAA0BvlB,KAAKod,KAAK/O,gBAApC,IAAAkX,OAAA,EAA0BA,EAAoB8E,wCAGzD,WACI,IAAMD,EAAepqB,KAAKoqB;AAC1B,IAAKA,EAAc,OAAO;AAC1B,GAAqB,WAAjBA,EAA2B,MAAO;AAEtC,IAAM7a,EAAgB,GAEhB+a,GAAsB,GAAKF,GAAc3a,MAAM,KACjD2E,EAAgB,EAChBO,EAAc;AACd2V,EAASpX,OAAS,GAClBkB,GAA+B,EAAvB8B,OAAOoU,EAAS,IACxB3V,EAAMuB,OAAOoU,EAAS,MAEtBlW,EAAQ,EACRO,EAAMuB,OAAOkU;AAEjB,IAAK,IAAIvX,EAAIuB,EAAOvB,EAAI8B,EAAK9B,IAAK,CAC9B,IAAMzF,GAAO,EAAAuS,EAAAzgB,WAASqW,SAAS1C,EAAG;AAClCtD,EAAIrE,KAAKkC,EAAK+D,OAAO,eAGzB,OAAO5B,uBAMX,WACI,OAAKvP,KAAKuqB,aAA0C,iBAApBvqB,KAAKuqB,YAC9BvqB,KAAKuqB,YAAYC,OAAOxqB,KAAKuqB,YAAYrX,OAAS,GADY,kCAOzE,WACI,OAAKlT,KAAKuqB,aAA0C,iBAApBvqB,KAAKuqB,YAC9BvqB,KAAKuqB,YAAYC,OAAO,GADsC,gCAIzE,WACI,OAAO,EAAA7K,EAAAzgB,WAASiS,OAAO,6CAnDkB6K,EAAAA,iHAET,6GACS;0CAH5BmO;;;;;;;;;;;;;;ACXrB,IAAMhO,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,8bAAAzZ,KAAA,CAAA0Z,WAAA,8CAWPkO;;;qFACjB,WAA0B,IAAAjC;AACtB,OAAA,QAAAA,EAAOxoB,KAAKod,KAAKre,aAAjB,IAAAypB,OAAA,EAAOA,EAAiB/Y,MAAM,KAAK,qBAGvC,WAA0B,IAAAib;AACtB,OAAA,QAAAA,EAAO1qB,KAAKod,KAAKre,aAAjB,IAAA2rB,OAAA,EAAOA,EAAiBjb,MAAM,KAAK,6BAGvC,SACqBrC,GACjB,IAAMud,EAAO3qB,KAAK2qB,OAAQ,EAAAhL,EAAAzgB,WAASiS,OAAO;AAC1CnR,KAAKod,KAAKiF,SAASjV,EAAO,IAAMud,6BAGpC,SACqBA,GACjB,IAAMvd,EAAOpN,KAAKoN,OAAQ,EAAAuS,EAAAzgB,WAASiS,OAAO;AAC1CnR,KAAKod,KAAKiF,SAASjV,EAAO,IAAMud,sCAlBa3O,EAAAA;0CAAhCyO;ACXrB,IAAMtO,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,iQAAAzZ,KAAA,CAAA0Z,WAAA,6EAGbhd,MAAAid;;;;;;;;;;;;;;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,0VAAAzZ,KAAA,CAAA0Z,WAAA,sDAYPqO;;;AAIjB,SAAAA,EAAY5S,EAAgBoF,GAAuB,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAA4qB,GAC/C9lB,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,KADkCqB,EAAA3Z,KAAA,aAAA4Z,IAAAD,EAAA3Z,8JAAA2Z,EAAA3Z,KAFK,QAEL,oGAAAA,oCAInD,WACI,IAAI+lB,EAAaC,EAAAA;AAEjB,OADI9qB,KAAKod,KAAK0J,SAAQ+D,GAAa,EAAA9D,EAAAD,QAAO9mB,KAAKod,KAAK0J,OAAQ+D,IACrDA,qBAGX,WAAqB,IAAAhU,EAAA7W;AACjB,OAAIA,KAAKod,KAAKre,MACHiB,KAAK2K,QAAQ9F,MAAK,SAACyjB,GAAD,OAASA,EAAI3kB,KAAOkT,EAAKuG,KAAKre,SAC9CiB,KAAK+qB,QAAsB,UAG5C,SAAUhsB,GACNiB,KAAK+qB,OAAShsB,8BAGlB,SACoBA,GAChBiB,KAAKjB,MAAQA,EACbiB,KAAKod,KAAKiF,SAAStjB,EAAM4E,uCA3B2BqY,EAAAA,iHACX;0CAD5B4O,MCbrBlsB,OAAA,+CAAA,CAAA,UAAA,gDAAA,SAAAC,EAAAqsB,GAGAnsB,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA+rB,EAAA9rB;;;;;;;;;;;;;;ACRA,IAAMid,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,gZAAAzZ,KAAA,CAAA0Z,WAAA,wDAYP0O;;;AAIjB,SAAAA,EAAYjT,EAAgBoF,GAAuB,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAAirB,GAC/CnmB,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,KADkCqB,EAAA3Z,UAAA,KAAA,uGAAA2Z,EAAA3Z,KAAA,SAAA4Z,IAAAD,EAAA3Z,4JAE/CA,EAAK6F,QAAU7F,EAAKsY,KAAKzS,QAFsB7F,kCAKnD,WAAqC,IAAA+R,EAAA7W;AACjC,OAAIA,KAAKod,KAAKre,MACHiB,KAAKkrB,gBAAgBrmB,MACxB,SAACyjB,GAAD,OAASA,EAAI3kB,IAAMkT,EAAKuG,KAAKre,SAG9B,kCAGX,WAA0C,IAAA0kB,EAAAzjB,KAEhCmrB,EADUnrB,KAAK2K,QAC6BkX,KAAI,SAAC7W,GACnD,GAAIsG,SAAStG,EAAQ,IAAM,EACvB,MAAO,CACHrH,GAAI2N,SAAStG,EAAkB,IAC/B6B,KAAM7B,EAAOwI,UAAU;AAG3B,IAAM7P,EAAK2N,SAAStG,EAAQ;AAC5B,MAAO,CACHrH,GAAAA,EACAkJ,KAAM4W,EAAK9jB,KAAK2C,EAAEmhB,EAAKrG,KAAK7Z,KAAO,IAAMkgB,EAAKrG,KAAKvQ,KAAO,IAAMlJ,EAAI,CAChEzE,QAAS8L;AAMzB,OAAOhL,KAAKod,KAAK0J,QAAS,EAAAC,EAAAD,QAAO9mB,KAAKod,KAAK0J,OAAQqE,GAAiBA,0BAGxE,SACgBpsB,GACZiB,KAAKod,KAAKiF,SAAStjB,EAAM4E,uCA1C6BqY,EAAAA;0CAAzCiP;;;;;;;;;;;;;;ACZrB,IAAM9O,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,2rBAAAzZ,KAAA,CAAA0Z,WAAA,qDAcP6O;;;AAOjB,SAAAA,EAAYpT,EAAgBoF,GAAuB,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAAorB,GAAA/Y,EAAAoM,EAC/C3Z,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,IADkC,YAAA,GAAA/K,EAAAoM,EAAA3Z,GAAA,YAAA,GAAA0Z,EAAAC,EAAA3Z,GAAA,OAAA4Z,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,WAAA6Z,EAAAF,EAAA3Z,IAG/CA,EAAK+H,KAAO/H,EAAKsY,KAAKvQ,KACtB/H,EAAKvB,KAAOuB,EAAKsY,KAAK7Z,KAJyBuB,uCAOnD,SACgB/F,GACZiB,KAAKod,KAAKiF,SAAStjB,MAAAA,OAAnB,EAAmBA,EAAO4E,uBAG9B,WAA8B,IAAAkT,EAAA7W;AAC1B,OAAIA,KAAKod,KAAKre,MACHiB,KAAK2K,QAAQ9F,MAAK,SAACyjB,GAAD,OAAoBA,EAAI3kB,KAAOkT,EAAKuG,KAAKre,SAE/D,0BAIX,WAAwB,IAAA0kB,EAAAzjB,KACd2K,EAAU3K,KAAKod,KAAKzS;AAC1B,IAAKA,EAAS,MAAO;AAErB,IAAM0gB,EAAU,SAAC/C,GACb,OAAI7E,EAAK9jB,KAAK2rB,OAAO7H,EAAKlgB,KAAO,IAAMkgB,EAAK5W,KAAO,IAAMyb,GAC9C7E,EAAK9jB,KAAK2C,EAAEmhB,EAAKlgB,KAAO,IAAMkgB,EAAK5W,KAAO,IAAMyb,GAEhDA,GAIXiD,EAAc;AAGlB,GAAK5gB,EAAuB,GAAGhH,GAC3B4nB,EAAe5gB,EAAekX,KAAI,SAACyG,GAC/B,MAAO,CAAE3kB,GAAI2kB,EAAI3kB,GAAI5E,MAAOssB,EAAQ/C,EAAIvpB;IAEzC,CACH,IAAMysB,EAAgB7gB,EAAmB8E,MAAM;AAE/C8b,EAAcC,MAAAA,OAAH,EAAGA,EAAc3J,KAAI,SAACyG,GAC7B,MAAO,CAAE3kB,GAAI2kB,EAAKvpB,MAAOssB,EAAQ/C,OAIzC,OAAOtoB,KAAKod,KAAK0J,QAAS,EAAAC,EAAAD,QAAO9mB,KAAKod,KAAK0J,OAAQyE,GAAeA,qCAtDfvP,EAAAA,0MAIS;0CAJ/CoP;;;;;;;;;;;;;;;;ACdrB,IAAMjP,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,+kCAAAzZ,KAAA,CAAA0Z,WAAA,iDAePkP,KAChBlsB,MAAAC,OAAAC,QAAQ;;;AAMT,SAAAgsB,EAAYzT,EAAYoF,GAAoB,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAAyrB,GAAAjN,EAAAC,EACxC3Z,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,IAD2B,MAAAsB,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,QAAA6Z,EAAAF,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,UAAA8Z,EAAAH,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,oBAAAyd,EAAA9D,EAAA3Z,IAExCA,EAAK4d,IAAItO,QACTtP,EAAK6d,QAAQC,GAAG,sBAAhBnE,EAAA3Z,GAA6C,qBAC7CA,EAAK6d,QAAQC,GAAG,2BAAhBnE,EAAA3Z,GAAkD,oBAGlDA,EAAK4mB,mBAAmB5mB,EAAK4d,IAAIK,gBAPOje,0CAU5C,WACI9E,KAAK2iB,QAAQgJ,IAAI,sBAAuB3rB,KAAM,qBAC9CA,KAAK2iB,QAAQgJ,IAAI,2BAA4B3rB,KAAM,4DAGvD,WACI,IAAM4rB,EAAW5rB,KAAK6rB;AACtB,OAAID,EAAW,IAAana,KAAKK,MAAM8Z,EAAW,KAAQ,KAC9Cna,KAAKK,MAAM8Z,GAAY,oCAGvC,WACI5rB,KAAK0rB,mBAAmB1rB,KAAK0iB,IAAIK,iDAGrC,SAAkB4B,GACW,YAArBA,EAAOsE,WAAyBjpB,KAAK0rB,mBAAmB1rB,KAAK0iB,IAAIK,gFAGzE,SAAAhL,EAAiC+T,GAAjC,OAAAjU,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,GAESvY,KAAK0iB,IAAIK,eAFlB,CAAA1K,EAAAE,KAAA;AAAA,MAAA,OAAAF,EAAAG,OAAA;AAAA,KAAA,EAAA,OAAAH,EAAAE,KAAA,EAKUvY,KAAK+rB,wBAAwBD;AALvC,KAAA,EAAA,MAQ+B,iBAAhBA,IAA0BA,EAAe5oB,KAAKC,UAAU2oB,IARvEzT,EAAAG,OAAA,SAWWxY,KAAKod,KAAKiF,SAASyJ;AAX9B,KAAA,EAAA,IAAA,MAAA,OAAAzT,EAAAe,UAAArB,EAAA/X,2HAeA,SAAA8jB,EAAsCgI,GAAtC,IAAAtL,EAAA4D,EAAA4H;AAAA,OAAAnU,mBAAAO,MAAA,SAAA6L,GAAA,OAAA,OAAAA,EAAA3L,KAAA2L,EAAA1L,MAAA,KAAA,EAAA,GAAA,QAAAiI,EACSxgB,KAAKod,KAAKqD,cADnB,IAAAD,GACSA,EAAkB4D,QAD3B,CAAAH,EAAA1L,KAAA;AAAA,MAAA,OAAA0L,EAAAzL,OAAA;AAAA,KAAA,EAAA,MAGgC,iBAAjBsT,IAA2BA,EAAe5oB,KAAKwD,MAAMolB,IAHpE7H,EAAA1L,KAAA,EAK0BvY,KAAKkN,MAAM+e,WAAW,UAAWjsB,KAAKod,KAAKqD,OAAO2D,QAAQzgB,GAAI,CAChFoG,QAAQ;AANhB,KAAA,GAKUqa,EALVH,EAAAjL,OAQqBoL,EAAQE,cAMjB0H,EACgC,iBAAzB5H,EAAQE,aACTphB,KAAKwD,MAAM0d,EAAQE,cACnBF,EAAQE,aAElBwH,EAAaF,SAAW5rB,KAAK0iB,IAAI2B,YAAYyH,EAAcE,GAC3DhsB,KAAK6rB,kBAAoBC,EAAaF,WATtC5rB,KAAK6rB,kBAAoB,YAClBC,EAAaF;AAZ5B,KAAA,EAAA,IAAA,MAAA,OAAA3H,EAAA7K,UAAA0K,EAAA9jB,yFAnDoDgc,EAAAA,wYAKD;0CALlCyP;;;;;;;;;;;;;;ACfrB,gBAAMtP,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,skBAAAzZ,KAAA,CAAA0Z,WAAA,oDAQP2P;;;2FACjB,SAA2B1jB,GACvBxI,KAAKod,KAAKiF,SAASnf,KAAKC,UAAUqF,uCAFiBwT,EAAAA;0CAAtCkQ;;;;;;;;;;;;;;;;ACRrB,IAAM/P,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,23LAAAzZ,KAAA,CAAA0Z,WAAA,4CAqEP4P;;;AAgBjB,SAAAA,EAAYnU,EAAgBoF,GAAW,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAAmsB,GAAA9Z,EAAAoM,EACnC3Z,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,IADsB,YAAA,GAAA/K,EAAAoM,EAAA3Z,GAAA,YAAA,GAAA0Z,EAAAC,EAAA3Z,GAAA,OAAA4Z,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,UAAA6Z,EAAAF,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,gBAAA8Z,EAAAH,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,YAAAyd,EAAA9D,EAAA3Z,IAAAuN,EAAAoM,EAAA3Z,GAAA,iBAAA,GAAAuN,EAAAoM,EAAA3Z,GAAA,eAAA,GAAAuN,EAAAoM,EAAA3Z,GAAA,OANfsnB,EAAAA,MAMe/Z,EAAAoM,EAAA3Z,GAAA,YALVunB,EAAAA,WAKU7N,EAAAC,EAAA3Z,GAAA,mBAAA0d,EAAA/D,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,cAAA2d,EAAAhE,EAAA3Z,IAEnCA,EAAKwnB,QAAUjrB,EAAAA,QAAO6C,IAAI0D,kBAC1B9C,EAAKynB,UAAY9a,KAAK+a,SAAS3hB,SAAS,IAAI2I,UAAU,GAHnB1O,kCAMvC,WACI,OAAO9E,KAAKod,KAAKre,OAASQ,MAAAktB,EAAE,6BAGhC,WAAmC,IAAAlH;AAC/B,OAAQ,QAAAA,EAAAvlB,KAAKod,KAAK/O,gBAAV,IAAAkX,OAAA,EAAAA,EAAoBzW,YAAY,0BAG5C,WAAkC,IAAA4d;AAC9B,OAAQ,QAAAA,EAAA1sB,KAAKod,KAAK/O,gBAAV,IAAAqe,OAAA,EAAAA,EAAoBC,eAAe,wBAG/C,WAAgC,IAAAC;AAC5B,OAAQ,QAAAA,EAAA5sB,KAAKod,KAAK/O,gBAAV,IAAAue,OAAA,EAAAA,EAAoB7d,UAAU,6BAG1C,WACI,SAAI/O,KAAK6sB,YAAc7sB,KAAKjB,MAAMmU,OAAS,KAClClT,KAAKosB,gCAIlB,WACI,MAAkB,SAAdpsB,KAAKuD,KAAwBvD,KAAKL,KAAK2C,EAAE,YACpCtC,KAAK8sB,aAAe9sB,KAAKqsB,UACvBrsB,KAAKL,KAAK2C,EAAE,oCACdtC,KAAK8sB,YAAoB9sB,KAAKL,KAAK2C,EAAE,aAClCtC,KAAKL,KAAK2C,EAAE,kCAG5B,WAA+B,IAAAuU,EAAA7W;AAC3B,OAAKA,KAAKjB,MAIUiB,KAAKjB,MAAM0lB,UAAU5C,KAAI,SAACkL,GAC1C,IAAMC,EAAkB,CACpBngB,KAAMkgB,EAAKlgB,KACXnC,KAAMqiB,EAAKriB,KACXuiB,aAAcF,EACdG,WAAYH,EAAKG;AAerB,OAZIrW,EAAKsW,YAAYJ,EAAKriB,OAEtBsiB,EAAWI,QAAUL,EAAKK,SAAWvW,EAAKwW,iBAAiBN,EAAKG,YAChEF,EAAWM,YAAcN,EAAWI,SAC7BL,EAAKQ,MAEZP,EAAWM,YAAcP,EAAKQ,MACvBR,EAAKjsB,IACZksB,EAAWM,aAAc,EAAAE,EAAAC,aAAY5W,EAAKyV,QAAU,IAAKS,EAAKjsB,KAE9DksB,EAAWM,YAAczW,EAAK6W,YAAYX,EAAKG,YAE5CF,KAvBA,2BA6Bf,SACgBjuB,GACZ,OAAOiB,KAAKod,KAAKiF,SAAStjB,4DAG9B,SAAAgZ,EACyBgV,GADzB,IAAAY,EAAAC,EAAAC,EAAAC,EAAAC;AAAA,OAAAlW,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,KAEQwU,EAAKvL,KAAO,UAFpB,CAAAnJ,EAAAE,KAAA;AAAA,MAAA,OAAAF,EAAAG,OAAA,SAGexY,KAAKguB,cAAcrsB,MAAM3B,KAAKL,KAAK2C,EAAE,mCAAoC,CAC5E2rB,WAAW;AAJvB,KAAA,EAAA,GAQUL,EARV,QAAAD,EAQoBZ,EAAKlgB,YARzB,IAAA8gB,OAAA,EAQoBA,EAAWle,MAAM,KAAK,GAAGhD,gBACrC,EAAA+gB,EAAAU,kBAAiBpsB,SAAS,IAAM8rB,GATxC,CAAAvV,EAAAE,KAAA;AAAA,MAAA,OAUQvY,KAAKmuB,UAAUC,MAAMC,aAAatB,GAV1C1U,EAAAG,OAAA,SAWexY,KAAKguB,cAAcrsB,MAAM3B,KAAKL,KAAK2C,EAAE,qCAAsC,CAC9E2rB,WAAW;AAZvB,KAAA,EAAA,IAgBQjuB,KAAKmtB,YAAYJ,EAAKriB,MAhB9B,CAAA2N,EAAAE,KAAA;AAAA,MAAA,OAAAF,EAAAE,KAAA,GAiBmC,EAAAiV,EAAAc,aAAYvB,EAAKwB;AAjBpD,KAAA,EAiBcV,EAjBdxV,EAAAW,KAkBc8U,EAAQ9tB,KAAKmuB,UAAUtpB,KAAK7E,KAAKusB,WAEvCvsB,KAAKmuB,UAAUC,MAAMC,aAAatB,IAC5BgB,EAAmBS,EAAAA,QAAKC,YAAYZ,IACzBhhB,KAAOkgB,EAAKlgB,KAC7BkhB,EAAiBrjB,KAAOqiB,EAAKriB,KAC7B1K,KAAKmuB,UAAUC,MAAMM,WAAWX,GAChCD,EAAMM,MAAMM,WAAWX,GACvB/tB,KAAK2uB,WAAWZ,GAAkB,GA1B1C1V,EAAAE,KAAA;AAAA;AAAA,KAAA,GA4BQvY,KAAK2uB,WAAW5B;AA5BxB,KAAA,GAAA,IAAA,MAAA,OAAA1U,EAAAe,UAAArB,EAAA/X,2EAgCA,SACa+sB,GACT,IAAM6B,EAAO5uB,KAAKjB;AAClB6vB,EAAKP,aAAaruB,KAAKjB,MAAM4pB,OAAO,aAAcoE,EAAKG,aACvDH,EAAK8B,KAAKC,SACV9uB,KAAKod,KAAKiF,SAASuM,6BAGvB,SACkB7B,EAAarQ,GAC3BA,EAAMyD;AACN,IAAMyO,EAAO5uB,KAAKjB;AAClB6vB,EAAKP,aAAatB,GAClB/sB,KAAKod,KAAKiF,SAASuM,8BAGvB,SACmBG,GACfzoB,OAAOkC,SAASC,KAAOsmB,+BAG3B,WACmD,IAAAtL,EAAAzjB,KAA9BgvB,EAA8B7uB,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAN,KACnCwK,EAAU,CACZskB,WAAW,EACXC,YAAa,KACbC,aAAc,KACdC,QAAS,GACTC,gBAAiBC,OAAOC,gBAAgBC,SACxCC,WACe,YAAXT,EACMM,OAAOI,kBAAkBC,aACzBL,OAAOI,kBAAkBE,OACnCC,UAAWP,OAAOQ,UAAUC,QAC5BC,oBAAoB,EACpBC,aAAc;AAGlBC,UAAUC,OAAOC,YACb,SAACC,GACG/pB,OAAOgqB,0BACHD,GACA,SAACE,GACGA,EAAUxD,MAAK,SAACA,GACXA,EAAKriB,KAAO,aACRqiB,EAAKlgB,KAAOkgB,EAAKlgB,KAAKuC,QACnB,SACA,SAAU,EAAAuQ,EAAAzgB,WAASiS,OAAO,uBAAyB,KAE3DsS,EAAK+M,YAAY,CACbjC,KAAMxB,EACNlgB,KAAMkgB,EAAKlgB,KACXnC,KAAMqiB,EAAKriB,aAIvB,SAAC/I,GACG,MAAM,IAAI4F,MAAM5F,SAI5B,SAACyD,GACG,MAAM,IAAImC,MAAMnC,KAEpBuF,0BAGR,SACgBoiB,GACZ,IAAM6B,EAAO5uB,KAAKjB;AAClB6vB,EAAKF,WAAW,CACZ7hB,KAAMkgB,EAAKlgB,KACXqgB,WAAYH,EAAKG,WACjBxiB,KAAMqiB,EAAKriB,OAEf1K,KAAKod,KAAKiF,SAASuM,2DAGvB,SAAA9K,EAAyBiJ,GAAzB,IAAAI,EAAAsD,EAAAvY,EAAA/P,EAAA0mB,EAAA6B,EAAAC,EAAAC,EAAAzwB;AAAA,OAAA0X,mBAAAO,MAAA,SAAA6L,GAAA,OAAA,OAAAA,EAAA3L,KAAA2L,EAAA1L,MAAA,KAAA,EAAA,OAAsC4U,EAAtCyD,EAAA1d,OAAA,QAAAwR,IAAAkM,EAAA,IAAAA,EAAA,GACQH,EAAY,oBAAsB1D,EAAKlgB,KAAO,iBAC9C7M,KAAK6wB,WAAUJ,GAAa,gBAC5BtD,IAAasD,GAAa,eAHlCxM,EAAA3L,KAAA,EAAA2L,EAAA1L,KAAA,EAM0BuY,MAAM9wB,KAAKssB,QAAUmE,EAAW,CAC9ClwB,QAAS,CACL+I,cAAe,UAAYtJ,KAAKJ,QAAQqB,KAAKC,cAAcC;AAR3E,KAAA,EAAA,OAMc+W,EANd+L,EAAAjL,KAAAiL,EAAA1L,KAAA,GAWgCL,EAAIe;AAXpC,KAAA,GAAA,GAWc9Q,EAXd8b,EAAAjL,KAac6V,EAAO9B,EAAKgE,OAAO5oB,EAASrH,IAAM,CACpCG,KAAMkH,EAAS6oB,UAGf7D,EAjBZ,CAAAlJ,EAAA1L,KAAA;AAAA,MAAA,OAkBYvY,KAAKixB,YAAYlE,EAAKlgB,KAAMkgB,EAAKriB,KAAMqiB,EAAKwB,KAAMpmB,GAlB9D8b,EAAA1L,KAAA,GAmBoCwU,EAAKmE;AAnBzC,KAAA,GAmBkBR,EAnBlBzM,EAAAjL,KAoBYhZ,KAAKqtB,iBAAiBllB,EAASgpB,QAAUT,EApBrDzM,EAAA1L,KAAA;AAAA;AAAA,KAAA,GAAA,OAAA0L,EAAA1L,KAAA,GAsBoCwU,EAAKmE;AAtBzC,KAAA,GAsBkBR,EAtBlBzM,EAAAjL,KAuBYhZ,KAAK0tB,YAAYvlB,EAASgpB,QAAUT;AAvBhD,KAAA,GAAA,OAAAzM,EAAA1L,KAAA,GA0BcsW;AA1Bd,KAAA,GA2BQ9B,EAAK8B,KAAOA,EACZ9B,EAAKG,WAAa/kB,EAASgpB,OAE3BnxB,KAAKoxB,QAAQrE,GA9BrB9I,EAAA1L,KAAA;AAAA;AAAA,KAAA,GAAA0L,EAAA3L,KAAA,GAAA2L,EAAAjK,GAAAiK,EAAA,MAAA,GAgCQ5hB,MAAM;AAhCd,KAAA,GAAA,IAAA,MAAA,OAAA4hB,EAAA7K,UAAA0K,EAAA9jB,KAAA,CAAA,CAAA,EAAA,+GAoCA,SAAAujB,EACI8N,EACA3mB,EACA6jB,EACA+C,GAJJ,IAAAC,EAAAxD;AAAA,OAAAlW,mBAAAO,MAAA,SAAAsL,GAAA,OAAA,OAAAA,EAAApL,KAAAoL,EAAAnL,MAAA,KAAA,EAAA,OAAAmL,EAAAnL,KAAA,GAM0B,EAAAiV,EAAAc,aAAYC;AANtC,KAAA,EAAA,OAMUgD,EANV7N,EAAA1K,MAOU+U,EAAmBS,EAAAA,QAAKC,YAAY8C,IACzB1kB,KAAOwkB,EACxBtD,EAAiBrjB,KAAOA,EACxBqjB,EAAiBgD,OAAOO,EAAeE,MAAM1wB,IAAK,CAC9CG,KAAMqwB,EAAeE,MAAMR,SAXnCtN,EAAAlL,OAAA,SAaWuV;AAbX,KAAA,EAAA,IAAA,MAAA,OAAArK,EAAAtK,UAAAmK,oFAgBA,SAAoB7Y,GAChB,OAAO+mB,EAAAA,WAAW3vB,SAAS4I,sCA3PgBsR,EAAAA,6eAaN,gHACL;0CAdnBmQ;;;;;;;;;;;;;;ACrErB,IAAMhQ,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,20BAAAzZ,KAAA,CAAA0Z,WAAA,2CAUPmV;;;yFACjB,WACI,OAAO,EAAA3J,EAAAC,qCAIX,SACiBtL,GACEA,EAAMlX,OACdya,oCAGX,SACmBlhB,GACf,IAAIogB,EAAM7N,SAASvS,EAAO;AAEtBgV,MAAMoL,KAAMA,EAAM,GAElBA,EAAM,IAAGA,EAAM,GAEfA,EAAM,KACNpgB,EAAQ,IAAMogB;AAGlB,IAAM9R,EAAUrN,KAAKqN,SAAW;AAEhCrN,KAAKod,KAAKiF,SAAStjB,EAAQ,IAAMsO,GACjC9N,MAAAypB,qBAAqBhpB,KAAM,sCAG/B,SACqBjB,GACjB,IAAIogB,EAAM7N,SAASvS,EAAO;AAEtBgV,MAAMoL,KAAMA,EAAM,IAElBA,EAAM,GAAKA,EAAM,MAAIA,EAAM,GAE3BA,EAAM,KACNpgB,EAAQ,IAAMogB;AAGlB,IAAMjO,EAAQlR,KAAKkR,OAAS;AAE5BlR,KAAKod,KAAKiF,SAASnR,EAAQ,IAAMnS,GACjCQ,MAAAypB,qBAAqBhpB,KAAM,8BAG/B,WACI,OAAKA,KAAKod,KAAKre,MACXiB,KAAKod,KAAKre,MAAM8L,WAAW/I,SAAS,KACpC,QAAA0mB,EAAOxoB,KAAKod,KAAKre,aAAjB,IAAAypB,OAAA,EAAOA,EAAiB/Y,MAAM,KAAK,GAE5BgC,KAAKG,MAAMN,SAAStR,KAAKod,KAAKre,MAAO,KAAK8L,WAJxB;AACiB,IAAA2d,uBAOlD,WACI,IAAKxoB,KAAKod,KAAKre,MAAO,OAAO;AACiB,IAAA2rB;AAA9C,GAAI1qB,KAAKod,KAAKre,MAAM8L,WAAW/I,SAAS,KACpC,OAAA,QAAA4oB,EAAO1qB,KAAKod,KAAKre,aAAjB,IAAA2rB,OAAA,EAAOA,EAAiBjb,MAAM,KAAK;AAEnC,IAAMpC,EAAUoE,KAAKK,MAAO6f,WAAW3xB,KAAKod,KAAKre,OAAS,EAAK;AAC/D,OAAOsO,EAAU,GAAK,IAAMA,EAAQxC,WAAawC,EAAQxC,8CA/DTmR,EAAAA;0CAAvC0V;;;;;;;;;;;;ACVrB,IAAMvV,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,scAAAzZ,KAAA,CAAA0Z,WAAA,6CAGP4E;;;qFACjB,WACI,MAAO,yCAFsCC,EAAAA;0CAAhCD;ACHrB,IAAMhF,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,6SAAAzZ,KAAA,CAAA0Z,WAAA,+FAGbhd,MAAAid;;;;;;;;;;;;;;;;;;;;;;;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,svCAAAzZ,KAAA,CAAA0Z,WAAA,iDAuBPqV,uHAuCnBryB,MAAAwB,SAAS,UAAW,cAAe;;;AA7BpC,SAAA6wB,EAAY5Z,EAAYoF,GAA6B,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAA4xB,GAAApT,EAAAC,EACpD3Z,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,IADuC,QAAAsB,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,OAAA6Z,EAAAF,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,mBAAA8Z,EAAAH,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,WAAAyd,EAAA9D,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,SAAA0d,EAAA/D,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,YAAA2d,EAAAhE,EAAA3Z,IAEpDA,EAAK+sB,uBAF+C/sB,oCAKrD,WAAc,IAAAgtB;AACb,OAAO,QAAAA,EAAA9xB,KAAKod,KAAKzS,eAAV,IAAAmnB,OAAA,EAAAA,EAAmBvuB,OAAQ,8BAGnC,WAAoB,IAAAwuB;AACnB,OAAO,QAAAA,EAAA/xB,KAAKod,KAAKzS,eAAV,IAAAonB,OAAA,EAAAA,EAAmB5X,SAAU,4BAGrC,WACC,OAAOna,KAAKod,KAAKmD,OAASvgB,KAAKL,KAAK2C,EAAEtC,KAAKod,KAAKmD,QAAU,2BAG3D,WACC,IAAMxhB,EAAQiB,KAAKod,KAAKre;AAExB,OADsB6C,MAAMkB,QAAQ/D,IAAUQ,MAAA+gB,UAAUvhB,IAAUiB,KAAKgyB,SAASjzB,EAAM,IAC/DA,EAAQiB,KAAKiyB,yCAGrC,WACC,OAAO,yBAKR,WAEC,OAAOjyB,KAAKkyB,aAAa,MAAMjtB,KAAKjF,KAAKmyB,aAAaC,KAAKpyB,+BAG5D,SAASiW,GACR,MAAuB,WAAhBzT,EAAOyT,IAAqBA,GAAQ,OAAQA,8BAIpD,SAAaoR,GACZ,GAAKA,MAAAA,IAAAA,EAAS5C,QAAS,MAAO;AAE9B,IAAM4N,EAAahL,EAAQ5C,UACrB6N,EAActyB,KAAKiyB,iBAAiBM,MAAM,MAE1CC,EAAWH,EAAWlO,QAAO,SAAC1D,GAAD,OAAiB6R,EAAYxwB,SAAS2e,EAAO9c,OAC1E8uB,EAAaJ,EAAWlO,QAAO,SAAC1D,GAAD,OAAkB6R,EAAYxwB,SAAS2e,EAAO9c,OAE7E+uB,EAAS;AASf,GAPInzB,MAAA+gB,UAAUkS,IACbE,EAAOxnB,KAAK,CACXsZ,UAAWxkB,KAAKL,KAAK2C,EAAE,mBACvBqI,QAAS6nB,IAIPjzB,MAAA+gB,UAAUmS,GAAa,CAE1B,IAAME,EAAkB,CACvBhvB,GAAI,iBACJivB,aAAa,EACb9Q,KAAM9hB,KAAKL,KAAK2C,EAAE;AAGnBowB,EAAOxnB,KAAK,CACXsZ,UAAWxkB,KAAKL,KAAK2C,EAAE,qBACvBqI,QAAO,CAAGgoB,GAAH/xB,OAAAiyB,EAAuBJ,MAIhC,OAAOC,mCAGR,WAAwE,IAAA7b,EAAA7W,KAAtDwjB,EAAsDrjB,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAhC,KAAMwD,EAA0BxD,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAN,KAC3DwkB,EAAc,CACnBphB,KAAMvD,KAAKod,KAAK7Z,KAChBC,MAAOxD,KAAKod,KAAKvQ,KACjBgY,MAAO7kB,KAAK8yB,WACZxL,OAAQ;AAgBT,OAbI/nB,MAAA+gB,UAAU3c,KAAKghB,EAAOhhB,GAAKA,GAC3BpE,MAAA+gB,UAAUkD,KAAOmB,EAAOG,EAAItB,GAG5BjkB,MAAA+gB,UAAUtgB,KAAKod,KAAK+G,SACvBtlB,OAAO8H,KAAK3G,KAAKod,KAAK+G,QAAU,IAAIvd,SAAQ,SAACC,GAC5C,IAAMksB,GAAelc,EAAKuG,KAAK+G,QAAU,IAAItd;AACzCtH,MAAA+gB,UAAUyS,KACbpO,EAAO9d,GAA8B,iBAAhBksB,EAA2BA,EAAcxzB,MAAAN,IAAI8zB,EAAa,UAK3EpO,mCAIR,SAAkB5lB,GACjB,GAAIQ,MAAAyzB,QAAQj0B,GAAQ,OAAO;AAE3B,GAAI6C,MAAMkB,QAAQ/D,GAAQ,CACzB,IAAM2e,EAAM3e,EAAM8iB,KAAI,SAACoR,GAAD,OAAOnZ,OAAOmZ,GAAK,OAAK9O,OAAlC5kB,MAAA+gB;AACZ,OAAO5C,EAAIxK,OAASwK,EAAIC,KAAK,KAAO,KAGrC,MAAqB,iBAAV5e,EACHQ,MAAAyzB,QAAQj0B,EAAMm0B,QAAU,KAAOn0B,EAGhC,+DAGR,SAAAgZ,EAAmByL,GAAnB,IAAA2P,EAAA9L,EAAA+L;AAAA,OAAAvb,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,OACKvY,KAAKod,KAAK+G,SAAWX,IACxBxjB,KAAKyhB,UAAW,GAFlBpJ,EAAAE,KAAA,EAKuBvY,KAAKkN,MAAM7J,MAAMrD,KAAKkmB,QAASlmB,KAAK6nB,kBAAkBrE;AAL7E,KAAA,EAAA,OAKO6D,EALPhP,EAAAW,KAMOoa,EAAY/L,MAAAA,GANnB,QAAA8L,EAMmB9L,EAASxkB,YAN5B,IAAAswB,OAAA,EAMmBA,EAAeja,MACjClZ,KAAKqzB,UACJD,EAAYpzB,KAAK8yB,WACdM,EAAYpzB,KAAK8yB,WACjB,KACJ9yB,KAAKyhB,UAAW,EAXjBpJ,EAAAG,OAAA,SAaQ6O;AAbR,KAAA,EAAA,IAAA,MAAA,OAAAhP,EAAAe,UAAArB,EAAA/X,wHAgBA,SAAA8jB,IAAA,IAAA/kB,EAAAu0B,EAAAjM;AAAA,OAAAxP,mBAAAO,MAAA,SAAA6L,GAAA,OAAA,OAAAA,EAAA3L,KAAA2L,EAAA1L,MAAA,KAAA,EAAA,GACOxZ,EAAQiB,KAAKod,KAAKre,QAGpB6C,MAAMkB,QAAQ/D,IAAUQ,MAAA+gB,UAAUvhB,IAAUiB,KAAKgyB,SAASjzB,EAAM,KAJrE,CAAAklB,EAAA1L,KAAA;AAAA,MAAA,OAKEvY,KAAKiyB,iBAAmB1yB,MAAAktB,EAAE1tB,GAL5BklB,EAAAzL,OAAA;AAAA,KAAA,EAAA,GAUO8a,EAAYtzB,KAAKuzB,kBAAkBx0B,IACrCQ,MAAAyzB,QAAQM,GAXb,CAAArP,EAAA1L,KAAA;AAAA,MAAA,OAYEvY,KAAKiyB,iBAAmB1yB,MAAAktB,EAAE,IAZ5BxI,EAAAzL,OAAA;AAAA,KAAA,EAAA,OAAAyL,EAAA3L,KAAA,EAAA2L,EAAA1L,KAAA,GAiBwBvY,KAAKkN,MAAM7J,MAAMrD,KAAKkmB,QAASlmB,KAAK6nB,kBAAkB,KAAMyL;AAjBpF,KAAA,GAiBQjM,EAjBRpD,EAAAjL,KAkBEhZ,KAAKiyB,iBAAmB1yB,MAAAktB,EAAEpF,MAAAA,GAAAA,EAAS5C,QAAU4C,EAAQ5C,UAAY4C,GAlBnEpD,EAAA1L,KAAA;AAAA;AAAA,KAAA,GAAA0L,EAAA3L,KAAA,GAAA2L,EAAAjK,GAAAiK,EAAA,MAAA,GAoBEjkB,KAAKiyB,iBAAmB1yB,MAAAktB,EAAE;AApB5B,KAAA,GAAA,IAAA,MAAA,OAAAxI,EAAA7K,UAAA0K,EAAA9jB,KAAA,CAAA,CAAA,EAAA,2EAwBA,SACOwjB,GAAc,IAAAC,EAAAzjB;AACpB,OAAO,IAAIiI,SAAQ,SAACvC,GACnBnG,MAAAkD,IAAA8jB,SAAS9C,EAAMA,EAAKJ,cAAeG,EAAM9d,EAAS,mEAIpD,SAAA6d,EAAoBC,EAAc9d,GAAlC,IAAA2hB;AAAA,OAAAxP,mBAAAO,MAAA,SAAAsL,GAAA,OAAA,OAAAA,EAAApL,KAAAoL,EAAAnL,MAAA,KAAA,EAAA,OAAAmL,EAAAnL,KAAA,EACuBvY,KAAKkyB,aAAa1O;AADzC,KAAA,EACO6D,EADP3D,EAAA1K,KAECtT,EAAQ1F,KAAKmyB,aAAa9K;AAF3B,KAAA,EAAA,IAAA,MAAA,OAAA3D,EAAAtK,UAAAmK,EAAAvjB,+GAKA,SAAAilB,IAAA,IAAAoC;AAAA,OAAAxP,mBAAAO,MAAA,SAAA+M,GAAA,OAAA,OAAAA,EAAA7M,KAAA6M,EAAA5M,MAAA,KAAA,EAAA,OAAA4M,EAAA5M,KAAA,EACuBvY,KAAKkyB,aAAa;AADzC,KAAA,EAAA,OACO7K,EADPlC,EAAAnM,KAAAmM,EAAA3M,OAAA,SAEQ6O,EAAQ5C,QAAU4C,EAAQ5C,UAAY4C;AAF9C,KAAA,EAAA,IAAA,MAAA,OAAAlC,EAAA/L,UAAA6L,EAAAjlB,2GAKA,SAAAmoB,EACeppB,GADf,IAAAy0B,EAAA9V,EAAAld;AAAA,OAAAqX,mBAAAO,MAAA,SAAAgQ,GAAA,OAAA,OAAAA,EAAA9P,KAAA8P,EAAA7P,MAAA,KAAA,EAAA,IAGsB3W,MAAMkB,QAAQ/D,KAAUA,EAAM00B,MAAK,SAACxd,GAAD,OAAeA,EAAK2c,eAH7E,CAAAxK,EAAA7P,KAAA;AAAA,MAAA,OAAA6P,EAAA7P,KAAA,EAKgBvY,KAAK0zB;AALrB,KAAA,EAKE30B,EALFqpB,EAAApP;AAAA,KAAA,EAAA,OASOwa,EAAkB5xB,MAAMkB,QAAQ/D,GACnCA,EAAMolB,QAAO,SAAClO,GAAD,OAAgBA,EAAK2c,eAClC,GACH5yB,KAAKiyB,iBAAmB1yB,MAAAktB,EAAE+G,GAGpB9V,EAAM1d,KAAKiyB,iBAAiBM,MAAM,MAAMpO,OAAlC5kB,MAAA+gB,WACN9f,EAAUjB,MAAA+gB,UAAU5C,GAAOA,EAAM,KAEnC1d,KAAKod,KAAK5K,OAASxS,KAAKod,KAAKvQ,OAChC7M,KAAKod,KAAK5K,MAAMxS,KAAKod,KAAKvQ,MAAQrM,GAnBpC4nB,EAAA5P,OAAA,SAsBQxY,KAAKod,KAAKiF,SAAS7hB;AAtB3B,KAAA,GAAA,IAAA,MAAA,OAAA4nB,EAAAhP,UAAA+O,EAAAnoB,yFArLuDgc,EAAAA,4SAKtBzc,MAAAktB,EAAE,+GACf,2GACF,8GACkB;0CARhBmF;ACvBrB,IAAMzV,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,oOAAAzZ,KAAA,CAAA0Z,WAAA,mFAGbhd,MAAAid;;;;;;;;;;;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,6bAAAzZ,KAAA,CAAA0Z,WAAA,4CAGPoX;;;gEAA8B3X,EAAAA;0CAA9B2X;;;;;;;;;;;;ACHrB,gBAAMxX,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,mVAAAzZ,KAAA,CAAA0Z,WAAA,8CAOPqX;;;AAGjB,SAAAA,EAAY5b,EAAgBoF,GAAyB,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAA4zB,GACjD9uB,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,KADoCqB,EAAA3Z,KAAA,iBAAA4Z,IAAAD,EAAA3Z,4JAGjDA,EAAK+uB,eAAezW,EAAKre,MAAMmU,OAAS,GAAoB,YAAfkK,EAAKre,OAHD+F,YAHJkX,EAAAA,yHAChB;0CADhB4X;;;;;;;;;;;;;ACPrB,gBAAMzX,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,scAAAzZ,KAAA,CAAA0Z,WAAA,2CAIP6E;;;;;;kGAGjB,WACI,MAAsD,OAAlDphB,KAAKJ,QAAQk0B,YAAYC,aAAavmB,QAAyB,IACR,OAAlDxN,KAAKJ,QAAQk0B,YAAYC,aAAavmB,QAAyB,MAC5D,wCAN8BwO,EAAAA;0CAA7BoF;ACJrB,IAAMjF,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,wtDAAAzZ,KAAA,CAAA0Z,WAAA,2EAGbhd,MAAAid;;;;;;;;;;;;;;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,glEAAAzZ,KAAA,CAAA0Z,WAAA,+CAcPyX;;;AAKjB,SAAAA,EAAYhc,EAAgBoF,GAAuB,IAAAtY,wGAAAyZ,CAAAve,KAAAg0B,GAAA3hB,EAAAoM,EAC/C3Z,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,IADkC,eAJL,MAIK/K,EAAAoM,EAAA3Z,GAAA,cAAA,KAAA2Z,EAAA3Z,KAAA,cAAA4Z,IAAAD,EAAA3Z;AAE/C,IAAMmvB,EAASpU,SAASqU,cAAc;AAFS,OAG/CD,EAAOE,MAAQ,IACfF,EAAOG,UAAY,kCAEnBtvB,EAAKuvB,aAAe,IAAIC,EAAAA,QAAaL,GACrCnvB,EAAKmvB,OAASA,EAPiCnvB,yCAUnD,WAAkC,IAAAyvB;AAE9B,OADA,QAAAA,EAAAv0B,KAAKq0B,oBAAL,IAAAE,GAAAA,EAAmBC,QACdx0B,KAAKod,KAAKre,MACgB,iBAApBiB,KAAKod,KAAKre,MAA2BiB,KAAKod,KAAKre,MACjDQ,MAAAuD,QAAQ9C,KAAKod,KAAKre,OAChBsC,EAAAA,QAAO6C,IAAI0D,kBAAoB,IAAM5H,KAAKod,KAAKre,MAAM,GAAG+B,IACvDO,EAAAA,QAAO6C,IAAI0D,kBAAoB,IAAM5H,KAAKod,KAAKre,MAAM+B,IAJpC,0BAOjC,WACwB,IAAA2zB;AACpB,QAAAA,EAAAz0B,KAAKq0B,oBAAL,IAAAI,GAAAA,EAAmBD,4BAGvB,WAEQx0B,KAAKq0B,aAAczhB,UAAW5S,KAAKod,KAAKiF,SAAS,MAChDriB,KAAKod,KAAKiF,SAASriB,KAAKq0B,aAAcK,aAC3C10B,KAAK20B,WAAY,qCAjC6B3Y,EAAAA,kHAGV;0CAHvBgY;;;;;;;;;;;;;;ACdrB,IAAM7X,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,osCAAAzZ,KAAA,CAAA0Z,WAAA,+CAyBPqY;;;AAMjB,SAAAA,EAAY5c,EAAgBoF,GAAiB,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAA40B,GAAApW,EAAAC,EACzC3Z,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,IAD4B,eAAAsB,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,OAAA6Z,EAAAF,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,UAAA8Z,EAAAH,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,QAAAyd,EAAA9D,EAAA3Z,IAAAA,iCAI7C,WACI,OAAO9E,KAAKod,KAAK7Z,wBAGrB,WACI,OAAOvD,KAAKod,KAAK5Z,wBAGrB,WACI,OAAOxD,KAAKod,KAAKvQ,6BAGrB,SAAwBgoB,GACpB,OAAO70B,KAAKod,KAAKiF,SAASwS,yBAG9B,SAAsBC,GAClBv1B,MAAAkD,IAAA8jB,SAASvmB,KAAMA,KAAK+0B,aAAcD,EAAK,qCAG3C,SAAgCppB,GAC5B1L,KAAK60B,KAAKG,SAAStpB,GACnB1L,KAAKod,KAAKiF,SAASriB,KAAK60B,kCAG5B,SAA4BI,GACE,KAAtBA,GACJ11B,MAAAkD,IAAA8jB,SAASvmB,KAAMA,KAAKk1B,aAAcD,EAAmB,iCAGzD,SAAuBH,GACnB,IAAMK,EAAS,CACXC,QAASN,EACTnzB,QAAQ,EAAA0zB,EAAAC,eAAcR;AAE1B90B,KAAKu1B,cAAe,EACpBv1B,KAAK60B,KAAKnG,WAAWyG,GACrBn1B,KAAKqiB,SAASriB,KAAK60B,8DAGvB,SAAA9c,EAA2Bkd,GAA3B,IAAA5xB,EAAAwT,EAAA7W;AAAA,OAAA6X,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,GACIvY,KAAKu1B,cAAe,EACfv1B,KAAKuD,KAFd,CAAA8U,EAAAE,KAAA;AAAA,MAAA,OAAAF,EAAAG,OAAA;AAAA,KAAA,EAAA,OAGIxY,KAAK2K,QAAUpL,MAAAktB,EAAE,IAHrBpU,EAAAE,KAAA,EAIwBvY,KAAKkN,MAAM7J,MAAMrD,KAAKuD,KAAM,CAAEuhB,EAAGmQ;AAJzD,KAAA,EAIU5xB,EAJVgV,EAAAW,KAKIhZ,KAAKu1B,cAAe,EACpBlyB,EAAMuD,SAAQ,SAAC4uB,GACPA,EAAO3e,EAAKrT,QACZqT,EAAKlM,QAAQ+jB,WAAW8G,EAAO3e,EAAKrT;AARhD,KAAA,EAAA,IAAA,MAAA,OAAA6U,EAAAe,UAAArB,EAAA/X;;sKAlDiDgc,EAAAA,qHACT,yGACYzc,MAAAktB,EAAE,8GACNltB,MAAAktB,EAAE;0CAHjCmI,MC1BrBl2B,OAAA,+CAAA,CAAA,UAAA,yCAAA,SAAAC,EAAA82B,GAGA52B,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAw2B,EAAAv2B;;;;;;;;;;;;;;ACRA,IAAMid,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,+XAAAzZ,KAAA,CAAA0Z,WAAA,8CAKPmZ;;;;;;+DACe,2CAMhC,WACI,OAAO11B,KAAK21B,kBALhB,SAAgBC,GACZ51B,KAAK21B,aAAeC,iCAOxB,WAC4B,IAAA/e,EAAA7W;AACxBT,MAAAkD,IAAA8jB,SAASvmB,MAAM,WAAA,OAAO6W,EAAKgf,aAAc,IAAO,kCAGpD,WAEQ71B,KAAK61B,cACL71B,KAAK61B,aAAc,EAClBhW,SAASiW,cAA8BC,2CApBC/Z,EAAAA;0CAAhC0Z;;;;;;;;;;;;;;ACLrB,IAAMvZ,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,iYAAAzZ,KAAA,CAAA0Z,WAAA,6CAcPyZ;;;;;;+DACe,2CAMhC,WACI,OAAOh2B,KAAK21B,kBALhB,SAAgBC,GACZ51B,KAAK21B,aAAeC,iCAOxB,WAC4B,IAAA/e,EAAA7W;AACxBT,MAAAkD,IAAA8jB,SACIvmB,MACA,WACI6W,EAAKgf,aAAc,IAEvB,kCAIR,WAEQ71B,KAAK61B,cACL71B,KAAK61B,aAAc,EAClBhW,SAASiW,cAA8BC,2CA1BA/Z,EAAAA;0CAA/Bga;;;;;;;;;;;;;;ACdrB,IAAM7Z,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,+mBAAAzZ,KAAA,CAAA0Z,WAAA,0CAcP0Z;;;yFACjB,kCAKA,SACiBl3B,GACbiB,KAAKod,KAAKiF,SAASriB,KAAKk2B,eAAen3B,0BAG3C,WACI,OAAO,EAAAgpB,EAAAC,0CAYX,SAAuBmO,GACnB,IAAIjlB,EACAklB;AAEJ,GAAID,EAAIr0B,SAAS,KAAM,CACnB,IAAMu0B,EAAWF,EAAI1mB,MAAM;AAC3B2mB,EAAO9kB,SAAS+kB,EAAS,GAAI,IAC7BnlB,EAAQI,SAAS+kB,EAAS,GAAI,SAC3B,GAAIF,EAAIr0B,SAAS,KAAM,CAC1B,IAAMu0B,EAAWF,EAAI1mB,MAAM;AAC3B2mB,EAAO9kB,SAAS+kB,EAAS,GAAI,IAC7BnlB,EAAQI,SAAS+kB,EAAS,GAAI,SAC3B,GAAIF,EAAIjjB,QAAU,EACrBkjB,EAAO9kB,SAAS6kB,EAAI3iB,UAAU2iB,EAAIjjB,OAAS,EAAGijB,EAAIjjB,QAAS,IAC3DhC,EAAQI,SAAS6kB,EAAI3iB,UAAU,EAAG2iB,EAAIjjB,OAAS,GAAI;IAChD,CAAA,GAAY,KAARijB,EACP,MAAO;AAEPjlB,EAAQI,SAAS6kB,EAAK,IACtBC,EAAO,EAcX,OAXIriB,MAAM7C,KAAQA,EAAQ,GACtB6C,MAAMqiB,KAAOA,EAAO,GAEpBllB,EAAQ,IAAGA,IAAU,GACrBA,EAAQ,KAAIA,EAAQ,IACpBklB,EAAO,IAAGA,EAAO,GACjBA,EAAO,KAAIA,EAAO,IAElBllB,EAAQ,KAAIA,EAAQ,IAAMA,GAC1BklB,EAAO,KAAIA,EAAO,IAAMA,GAEhBllB,EAAQ,IAAMklB,qCAzDepa,EAAAA;0CAA5Bia;;;;;;;;;;;;;;ACdrB,IAAM9Z,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,moBAAAzZ,KAAA,CAAA0Z,WAAA,oDAMP+Z;;;;;;uDACS,8EAE1B,SAAwBzB,GACpB,OAAO70B,KAAKod,KAAKiF,SAASnf,KAAKC,UAAU0xB,4BAG7C,WACI,IAAIA,EAA6Bt1B,MAAAktB,EAAE;AAInC,MAH+B,iBAApBzsB,KAAKod,KAAKre,MAAoB81B,EAAOt1B,MAAAktB,EAAEvpB,KAAKwD,MAAM1G,KAAKod,KAAKre,QAC9DiB,KAAKod,KAAKre,QAAO81B,EAAOt1B,MAAAktB,EAAEzsB,KAAKod,KAAKre,QAC7CiB,KAAK60B,KAAOA,EACLA,uCAGX,SAAwCC,GACpC,IAAMyB,EAAcjlB,SAASwjB,EAAK;CAC7B/gB,MAAMwiB,IAAgB3e,SAAS2e,IAA+B,KAAfzB,EAAI5hB,SACpDlT,KAAK+0B,aAAaD,GACjBjV,SAASC,cAAc,IAAM9f,KAAKw2B,MAAQ,UAA+Bz3B,MAAQ,gCAI1F,SAAuB+1B,GACnB90B,KAAK60B,KAAKnG,WAAWoG,GACrB90B,KAAKqiB,SAASriB,KAAK60B,yCAzB+BD,EAAAA;0CAArC0B;;;;;;;;;;;ACNrB,IAAMna,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,2QAAAzZ,KAAA,CAAA0Z,WAAA,8CAEPka;;;gEAAgCza,EAAAA;0CAAhCya;;;;;;;;;;;;;;ACFrB,IAAMta,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,yyCAAAzZ,KAAA,CAAA0Z,WAAA,6CAgBPma,sBAIhBn3B,MAAAC,OAAAC,QAAQ;;;AAET,SAAAi3B,EAAY1e,EAAgBoF,GAAgB,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAA02B,GAAAlY,EAAAC,EACxC3Z,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,IAD2B,iBAAAsB,EAAAD,EAAA3Z,MAAA2Z,EAAA3Z,KAHnB,CAAE2F,KAAM,KAAMksB,OAAQ,MAAOC,QAAS,QAGnB,0GAAApY,EAAAC,EAAA3Z,GAAA,MAAA6Z,EAAAF,EAAA3Z,IAExCA,EAAK4d,IAAItO,QAF+BtP,uCAK5C,WAAkE,IAAA+R,EAAA7W;AAC9D,IAAqD,IAAjDA,KAAKod,KAAKyZ,mCACV,OAAO72B,KAAKod,KAAKre;AAIrB,GAAIiB,KAAK0iB,IAAIK,eAAgB,CACzB/iB,KAAK82B,gBAAiB;AACtB,IAAMC,EAAW/2B,KAAK0iB,IAAIK;AAE1B,OAAO,IAAI9a,QAAJ,WAAA,MAAAiW,KAAArG,mBAAAC,MAAY,SAAAC,EAAOrS,GAAP,IAAAsxB;AAAA,OAAAnf,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,OAAAF,EAAAE,KAAA,GACO,EAAA0e,EAAAC,cAAaH,EAAS7T,SAAU6T,EAAS3T;AADhD,KAAA,EACT4T,EADS3e,EAAAW,KAEfnC,EAAKigB,gBAAiB,EACtBjgB,EAAKuG,KAAKiF,SAAS2U,GACnBtxB,EAAQsxB;AAJO,KAAA,EAAA,IAAA,MAAA,OAAA3e,EAAAe,UAAArB;;;AAAZ,OAAA,SAAAsB,GAAA,OAAA6E,EAAAhe,MAAAF,KAAAG,YAAA,IAOP,OAAOH,KAAKod,KAAKre,yCA5BuBid,EAAAA,uHACN;0CADzB0a;;;;;;;;;;;AChBrB,IAAMva,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,+MAAAzZ,KAAA,CAAA0Z,WAAA,4DAGP4a;;;gEAAqDnb,EAAAA;0CAArDmb;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHrB,IAAMhb,GAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,+1FAAAzZ,KAAA,CAAA0Z,WAAA,uCAiFP6a,ySAmBhB73B,MAAAC,OAAAC,QAAQ,0EA2IRF,MAAAwB,SAAS,YAAa,YAAa,UAAW,iBA6M9CxB,MAAAwB,SAAS,qBAAsB,SAAU;;;AAtV1C,SAAAq2B,EAAYpf,EAAgBoF,GAAgB,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAAo3B,GAAA5Y,EAAAC,GACxC3Z,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,IAD2B,SAAAsB,EAAAD,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,QAAA6Z,EAAAF,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,kBAAA8Z,EAAAH,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,YAAAyd,EAAA9D,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,UAAA0d,EAAA/D,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,eAAA2d,EAAAhE,GAAA3Z,MAAA2Z,GAAA3Z,MAdf,KAce,wGAAA0Z,EAAAC,GAAA3Z,GAAA,OAAAuyB,EAAA5Y,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,qBAAAwyB,EAAA7Y,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,sBAAAyyB,EAAA9Y,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,QAAA0yB,EAAA/Y,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,QAAA2yB,EAAAhZ,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,OAAA4yB,EAAAjZ,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,UAAA6yB,EAAAlZ,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,UAAA8yB,EAAAnZ,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,YAAA+yB,EAAApZ,GAAA3Z,IAAA0Z,EAAAC,GAAA3Z,GAAA,MAAAgzB,EAAArZ,GAAA3Z,IAExCA,EAAKizB,+BAFmCjzB,yFAK5C,SAAAiT,IAAA,OAAAF,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,OACIvY,KAAKg4B,gCADT3f,EAAAE,KAAA,EAEUvY,KAAKi4B;AAFf,KAAA,EAII14B,MAAA4C,IAAInC,KAAM,uBAAuB;AAJrC,KAAA,EAAA,IAAA,MAAA,OAAAqY,EAAAe,UAAArB,EAAA/X,gFAOA,YAGSA,KAAKod,KAAK8a,yBAA2Bl4B,KAAKod,KAAKqD,QAAUzgB,KAAKod,KAAKqD,OAAOtJ,MAC3EnX,KAAKod,KAAKqD,OAAOyI,eAEhBlpB,KAAKod,KAAK8a,yBACVl4B,KAAKod,KAAKqD,OAAOtJ,QAClBnX,KAAKod,KAAKqD,OAAO+G,oBAEjBxnB,KAAKod,KAAKqD,OAAO0X,gDAIzB,WAGI,OADAn4B,KAAKg4B,gCACEh4B,KAAKma,OAAOgK,QAAO,SAAC3gB,GAAD,IAAA40B;AAAA,QAAwB50B,EAAM60B,OAAS,QAAAD,EAAC50B,EAAM6K,gBAAP,IAAA+pB,GAACA,EAAgBE,uCAGtF,WACI,OAAOt4B,KAAKma,OAAOgK,QAAO,SAAC3gB,GAAD,IAAA+0B;AAAA,OAAA,QAAAA,EAAuB/0B,EAAM6K,gBAA7B,IAAAkqB,OAAA,EAAuBA,EAAgBD,iEAGrE,SAAAxU,EACsBmF,EAAmBlqB,GADzC,IAAAyhB,EAAA7d;AAAA,OAAAkV,mBAAAO,MAAA,SAAA6L,GAAA,OAAA,OAAAA,EAAA3L,KAAA2L,EAAA1L,MAAA,KAAA,EAAA,YAIyB,IAAVxZ,IAAuBA,EAAQ,MAJ9CklB,EAAA1L,KAAA,EAQUvY,KAAKod,KAAKob,cAAcvP,EAAWlqB,EAAOiB,KAAKod,KAAKqD;AAR9D,KAAA,EAAA,OAWIzgB,KAAK2iB,QAAQ8V,oBAAoBxP,EAAWlqB,GAE5CiB,KAAK04B,aAAazP,EAAWlqB,GAbjCklB,EAAA1L,KAAA,EAiBWvY,KAAKod,KAAKqD;AAjBrB,KAAA,EAAAwD,EAAAjL,KAiB6B2f,KAAK,eAE1Bh2B,OADEA,EAlBV,QAAA6d,EAkBmBxgB,KAAKod,KAAKqD,cAlB7B,IAAAD,OAAA,EAkBmBA,EAAkB7d,SAC7BA,EAAQwf,IAAI8G,IAAclqB,GAAO4D,EAAOiM,OAAOqa,GACnDjpB,KAAKg4B,8BAA8B/O,GACnC1pB,MAAAypB,qBAAqBhpB,KAAM;AArB/B,KAAA,GAAA,IAAA,MAAA,OAAAikB,EAAA7K,UAAA0K,EAAA9jB,mFAwBA,SACmByhB,GACfzhB,KAAK44B,mBAAqBnX,oDAG9B,SAAA8B,IAAA,IAAA9C,EAAAoY,EAAAC,EAAAC;AAAA,OAAAlhB,mBAAAO,MAAA,SAAAsL,GAAA,OAAA,OAAAA,EAAApL,KAAAoL,EAAAnL,MAAA,KAAA,EAAA,OAEUkI,EAASzgB,KAAKod,KAAKqD,OAEzBzgB,KAAKg5B,QAAS,EACdh5B,KAAK2B,MAAQ,KACb3B,KAAKi5B,gBAAkBj5B,KAAKod,KAAKqD,OAAOyY,aAAaC,UACjDN,EAAc74B,KAAKod,KAAKqD,OAAOtJ,MAPvCuM,EAAApL,KAAA,EAAAoL,EAAAnL,KAAA,EAUckI,EAAO7K;AAVrB,KAAA,EAAA,GAYa6K,EAAOhJ,QAZpB,CAAAiM,EAAAnL,KAAA;AAAA,MAAA,OAakBwgB,EAAoBlZ,SAASC,cAAc,gBAC1BiZ,EAAkBK,eAAe,CAAEC,SAAU,WAdhF3V,EAAAlL,OAAA,SAeoBxY,KAAKg5B,QAAS;AAflC,KAAA,GAAA,OAAAtV,EAAAnL,KAAA,IAkBc,EAAA+gB,EAAAC,aAAY9Y,EAAQzgB;AAlBlC,KAAA,GAqBQ,QAAA84B,EAAI94B,KAAKw5B,UAAUC,kBAAnB,IAAAX,GAAIA,EAA2BY,UAC3B15B,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKw5B,UAAUC,WAAf,SACVG,OAAQ,gBACRC,MAAO75B,KAAKod,KAAK7Z,OAIzBvD,KAAK2iB,QAAQmX,WAAW,SAAU95B,KAAKod,KAAK7Z,KAAMkd,IAEtB,IAAxBzgB,KAAKod,KAAK2c,UACN/5B,KAAKod,KAAK4c,OAAOh6B,KAAKg6B,MAAM,aAEhCh6B,KAAKi6B,WAAY,EAGQ,oCAAzBj6B,KAAKi5B,gBACDj5B,KAAKod,KAAK8c,UAAUl6B,KAAKod,KAAK8c,SAASl6B,KAAKod,KAAKqD,QAEjDzgB,KAAKod,KAAK+c,WAAWn6B,KAAKod,KAAK+c,UAAUn6B,KAAKod,KAAKqD,QAG3DzgB,KAAKg5B,QAAS,EAEQ,YAAlBh5B,KAAKod,KAAK7Z,MAAsBs1B,GAChC74B,KAAKo6B,QAAQC,iBAAiB,kBA9C1C3W,EAAAnL,KAAA;AAAA;AAAA,KAAA,GAAAmL,EAAApL,KAAA,GAAAoL,EAAA1J,GAAA0J,EAAA,MAAA,GAiDQ1jB,KAAKg5B,QAAS,EACdh5B,KAAK2B,MAAL+hB,EAAA1J;AAlDR,KAAA,GAAA,IAAA,MAAA,OAAA0J,EAAAtK,UAAAmK,EAAAvjB,KAAA,CAAA,CAAA,EAAA,0EAsDA,SACas6B,GAAsB,IAAAC,EAAAC,EAAA1U;AAEb,cAAdwU,GACAt6B,KAAKod,KAAKqD,OAAO0X,qBAGrB,QAAAoC,EAAIv6B,KAAKw5B,UAAUC,kBAAnB,IAAAc,GAAIA,EAA2Bb,UAC3B15B,KAAKw5B,UAAUiB,iBAGnB,QAAAD,GAAA1U,EAAA9lB,KAAKod,MAAK4c,aAAV,IAAAQ,GAAAA,EAAA1vB,KAAAgb,EAAkBwU,uBAOtB,WACa,IAAAzjB,EAAA7W,KAEL06B,EADW16B,KAAKkK,MAAMwe,WAAW1oB,KAAKod,KAAK7Z,MACnB4gB,QAAO,SAAC3gB,GAAsB,IAAAm3B,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAUsBC,EAKEC;AAd9E,QAAItkB,EAAKuG,KAAKge,OAASvkB,EAAKuG,KAAKge,KAAK3rB,MAAM,KAAK3N,SAAS0B,EAAMqJ,QAG5D,QAAA8tB,EAAAn3B,EAAM6K,gBAAN,IAAAssB,IAAAA,EAAgBU,OAAQ97B,MAAAuD,QAAQU,EAAM6K,SAASgtB,SAE/C,QAAAT,EAAAp3B,EAAM6K,gBAAN,IAAAusB,GAAAA,EAAgBS,MACgB,WAAhC74B,EAAA,QAAAq4B,EAAOr3B,EAAM6K,gBAAb,IAAAwsB,OAAA,EAAOA,EAAgBQ,OADvB,QAAAP,EAEAt3B,EAAM6K,gBAFN,IAAAysB,GAEAA,EAAgBO,KAAKC,UAEjB,CAAC,aAAc,YAAYx5B,SAAS0B,EAAM6K,SAASgtB,KAAKC,WAEpD,QAAAJ,EAACrkB,EAAKuG,KAAKqD,cAAX,IAAAya,IAACA,EAAkB/jB,OAGvB,CAAC,cAAe,aAAarV,SAAS0B,EAAM6K,SAASgtB,KAAKC,YAErD,QAAAH,EAACtkB,EAAKuG,KAAKqD,cAAX,IAAA0a,GAACA,EAAkBhkB,MAKhC,QAAA4jB,EAAIv3B,EAAM6K,gBAAV,IAAA0sB,GAAIA,EAAgBM,MACpB,QAAAL,EAAIx3B,EAAM6K,gBAAV,IAAA2sB,GAAIA,EAAgBO,WAChB,QAAAN,EAAAz3B,EAAM6K,gBAAN,IAAA4sB,GAAAA,EAAgB3sB,YAAc/O,MAAAuD,QAAQU,EAAM6K,SAASC,aACrD9K,EAAM8K,UAAY9K,EAAM6K,SAASC,WAE9B;AA0BX,OAvBAosB,EAAiBA,EAAe7Y,KAAI,SAACre,GAAU,IAAAg4B,EAAAC;AAoB3C,MAnBmB,aAAfj4B,EAAMqJ,MAAsC,iBAAfrJ,EAAMqJ,OACnCrJ,EAAMmd,UAAY,eACH,iBAAfnd,EAAMqJ,OAAyBrJ,EAAMmd,UAAY,kBAElC,aAAfnd,EAAMkH,MACkB,aAAxB,QAAA8wB,EAAAh4B,EAAMmH,eAAN,IAAA6wB,OAAA,EAAAA,EAAej4B,OACfsT,EAAK6kB,kBAAkBl4B,KAEvBA,EAAMmd,UAAY,4BAGhB9J,EAAKuG,KAAKqD,QACV5J,EAAKuG,KAAKqD,OAAOtJ,OADnB,QAAAskB,EAEAj4B,EAAM6K,gBAFN,IAAAotB,GAEAA,EAAgBE,eACgB,MAAhC9kB,EAAKuG,KAAKqD,OAAOjd,EAAMqJ,OAEvBgK,EAAKwL,SAAS7e,EAAMqJ,KAAMgK,EAAK+kB,gBAAgBp4B,IAG5CA,KAGPxD,KAAKod,KAAKye,WAEHnB,EAAelQ,MAAK,SAACsR,EAAGC,GAC3B,OAAID,EAAEjvB,KAAOkvB,EAAElvB,MACH,EAED,KAIR6tB,mCAIf,SAA0Bl3B,GACtB,QAAKxD,KAAKg8B,KAAKz6B,KAAK,mBAEhBvB,KAAKkK,MAAM+xB,YAAY,UAAW,oBAClC,CAAC,WAAY,YAAYn6B,SAAS0B,EAAMD,sCAMhD,SAAwBC,GAAmB,IAAA04B,EACjCC,EAAY,QAAAD,EAAG14B,EAAM6K,gBAAT,IAAA6tB,OAAA,EAAGA,EAAgBP;AAErC,GAAmB,SAAfn4B,EAAMkH,KAAiB,CACvB,GAAqB,UAAjByxB,EACA,OAAO,EAAAxc,EAAAzgB,WAASiS,OAAO;AACpB,GAAqB,cAAjBgrB,EACP,OAAO,EAAAxc,EAAAzgB,WAASqW,SAAS,EAAG,OAAOpE,OAAO,cAGlD,MAA4B,WAAxB3O,EAAO25B,GACAA,EAAap9B,MAGjBo9B,0DAGX,SAAAlX,IAAA,IAAAmX,EAAAC,EAAAC,EAAA7Y,EAAAzjB;AAAA,OAAA6X,mBAAAO,MAAA,SAAA+M,GAAA,OAAA,OAAAA,EAAA7M,KAAA6M,EAAA5M,MAAA,KAAA,EAAA,OACU6jB,EAAWp8B,KAAKu8B,WAAWv8B,KAAKod,KAAK7Z,MACrC84B,EAAe,GAFzBlX,EAAA5M,KAAA,EAGUvY,KAAKod,KAAKqD;AAHpB,KAAA,EAII2b,EAASx1B,SAAQ,SAACqP,GACTomB,EAAQpmB,EAAKzS,SAAQ64B,EAAQpmB,EAAKzS,OAAS,IAChD64B,EAAQpmB,EAAKzS,OAAOyS,EAAKkO,QAAUV,EAAKrG,KAAKqD,OACvCgD,EAAKrG,KAAKqD,OAAOxK,EAAKumB,MACtB,QAGJF,EAAqB,GAC3Bz9B,OAAO8H,KAAK01B,GAASz1B,SAAQ,SAACC,GAC1By1B,EAAcz1B,GAAOw1B,EAAQx1B,MAGjCtH,MAAA4C,IAAInC,KAAM,UAAWs8B;AAhBzB,KAAA,EAAA,IAAA,MAAA,OAAAnX,EAAA/L,UAAA6L,EAAAjlB,6EAmBA,WAAiB,IAAAy8B,EAAAz8B;AAiBb,OAhBIA,KAAKod,KAAKif,SACVx9B,OAAO8H,KAAK3G,KAAKod,KAAKif,SAASz1B,SAAQ,SAACC,GAEhC41B,EAAKJ,QAAQx1B,GACbtH,MAAA4C,IACIs6B,EAEA,WAAa51B,EACbhI,OAAO69B,OAAOD,EAAKJ,QAAQx1B,GAAM41B,EAAKrf,KAAKif,QAAQx1B,KAIvDtH,MAAA4C,IAAIs6B,EAAM,WAAa51B,EAAK41B,EAAKrf,KAAKif,QAAQx1B,OAInD7G,KAAKq8B,oCAgBhB,SAAqB74B,EAAezE,GAAY,IAAA49B,EAAA38B;AACnBA,KAAKu8B,WAAWv8B,KAAKod,KAAK7Z,MAAM4gB,QACrD,SAAClO,GAAD,OAAeA,EAAKumB,OAASh5B,KAGhBoD,SAAQ,SAACqP,GACtB,IAAM2mB,EAAQ/9B,OAAO69B,OAAO,GAAIC,EAAKN,QAAQpmB,EAAKzS;AAClDo5B,EAAM3mB,EAAKkO,QAAUplB,EAErBQ,MAAA4C,IAAIw6B,EAAM,WAAa1mB,EAAKzS,MAAOo5B,gCAW3C,SAAmBr5B,GACf,IAD6Bs5B,EACvBR,EAAU,GADaS,EAAAC,EAEA/8B,KAAKkK,MAAMwe,WAAWnlB;AAFtB,IAG7B,IAAAu5B,EAAAjjB,MAAAgjB,EAAAC,EAAAnjB,KAAAqjB,MAA4B,CAAA,IAAAC,EAAjBz5B,EAAiBq5B,EAAA99B,MACpBgL,EAAM,QAAAkzB,EAAGz5B,EAAM6K,gBAAT,IAAA4uB,OAAA,EAAGA,EAAgBlzB;AAC7B,GAAIA,EAAQ,CACHxK,MAAAuD,QAAQiH,KAASA,EAAS,CAACA;AADxB,IAAAmzB,EAAAC,EAAAJ,EAGkBhzB;AAHlB,IAGR,IAAAozB,EAAAtjB,MAAAqjB,EAAAC,EAAAxjB,KAAAqjB,MAAyC,CAAA,IAAAI,EAA9BC,EAA8BH,EAAAn+B;AACrCs9B,EAAQnxB,KAAK,CAET1H,MAAO65B,EAGPlZ,OAAM,QAAAiZ,EAAE55B,EAAMmH,eAAR,IAAAyyB,OAAA,EAAEA,EAAe75B,KAEvBi5B,KAAMh5B,EAAMqJ,QAXZ,MAAAywB,GAAAH,EAAAhW,EAAAmW,GAAA,QAAAH,EAAAI,OALa,MAAAD,GAAAR,EAAA3V,EAAAmW,GAAA,QAAAR,EAAAS,IAsB7B,OAAOlB,iCAGX,WACI,OAAOr8B,KAAKma,OAAOgK,QAAO,SAAC3gB,GAAkB,IAAAg6B,EAAAC;AACzC,OACK,QAAAD,EAAAh6B,EAAM6K,gBAAN,IAAAmvB,OAAA,EAAAA,EAAgBnC,OAAQ97B,MAAAuD,QAAQU,EAAM6K,SAASgtB,QAC/C,QAAAoC,EAAAj6B,EAAM6K,gBAAN,IAAAovB,OAAA,EAAAA,EAAgBnvB,YAAa/O,MAAAuD,QAAQU,EAAM6K,SAASC,wCAOjE,WAEI,OAAOtO,KAAK44B,oBAAsB54B,KAAKod,KAAKqE,UAAYzhB,KAAKg5B,oDAiBjE,WAA6E,IAAA0E,EAAA19B,KAAvCwD,EAAuCrD,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,IAAAA,UAAA;AACzEH,KAAK29B,kBAAkB/2B,SAAQ,SAACqP,GAAS,IAAA2nB,EAAAC,EAEZC,EAUKC;AAV9B,QAAAH,EAAI3nB,EAAK5H,gBAAT,IAAAuvB,GAAIA,EAAevC,OACf,QAAAyC,EAAC7nB,EAAK5H,gBAAN,IAAAyvB,OAAA,EAACA,EAAezC,MAAcz0B,SAAQ,SAACo3B,GACnC,IAC2DC,EADvDC,EAAYr/B,OAAO8H,KAAKq3B,GAAM,GAAGvuB,MAAM,KAAK,IAC3CjM,GAAS06B,EAAUp8B,SAAS0B,KAAmBA,KAChDyS,EAAKoiB,QAAS,EAAAhD,EAAA8I,WAAUT,EAAKtgB,KAAKqD,OAApB,QAAAwd,EAA4BhoB,EAAK5H,gBAAjC,IAAA4vB,OAAA,EAA4BA,EAAe5C,UAMrE,QAAAwC,EAAI5nB,EAAK5H,gBAAT,IAAAwvB,GAAIA,EAAevvB,YACf,QAAAyvB,EAAC9nB,EAAK5H,gBAAN,IAAA0vB,OAAA,EAACA,EAAezvB,WAAmB1H,SAAQ,WAAM,IAAAw3B;AAC7C7+B,MAAA4C,IACI8T,EACA,aACA,EAAAof,EAAA8I,WAAUT,EAAKtgB,KAAKqD,OAApB,QAAA2d,EAA4BnoB,EAAK5H,gBAAjC,IAAA+vB,OAAA,EAA4BA,EAAe9vB,qDAhZrB0N,EAAAA,gHACjB,2GACD,uHACU,gHACG,4GACN,kHACQ,0GAGhB,yHACwB,yHACT;4CAXrBob;ACjFrB,IAAMjb,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,kuBAAAzZ,KAAA,CAAA0Z,WAAA,+EAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,oNAAAzZ,KAAA,CAAA0Z,WAAA,6EAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,ujEAAAzZ,KAAA,CAAA0Z,WAAA,8EAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,60FAAAzZ,KAAA,CAAA0Z,WAAA,6EAGbhd,MAAAid;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,4sKAAAzZ,KAAA,CAAA0Z,WAAA,kDA0BP8hB,kIAchB9+B,MAAAC,OAAAC,QAAQ,0FAIRF,MAAAC,OAAAC,QAAQ;;;AAET,SAAA4+B,EAAYrmB,EAAgBoF,GAA0B,IAAAtY;AAAA,mGAAAyZ,CAAAve,KAAAq+B,GAClDv5B,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,KADqCqB,EAAA3Z,KAhB1B,CAAC,oBAgByB,gHAAA0Z,EAAAC,EAAA3Z,GAAA,SAAA4Z,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,cAAA6Z,EAAAF,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,cAAA8Z,EAAAH,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,oBAAAyd,EAAA9D,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,gBAAA0d,EAAA/D,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,eAAA2d,EAAAhE,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,QAAAuyB,EAAA5Y,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,YAAAwyB,EAAA7Y,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,OAAAyyB,EAAA9Y,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,YAAA0yB,EAAA/Y,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,eAAA2yB,EAAAhZ,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,YAAA4yB,EAAAjZ,EAAA3Z,IAGlDwB,OAAOg4B,QAAU,SAAC5hB,GACd,GAAK5X,EAAKy5B,kBAAV,CACA,IAAMC,EAAkB9hB,EAAMlX,OAAOi5B;AAEjCD,EAAgBE,SAAS,uBACzBF,EAAgBE,SAAS,kBACzBF,EAAgBE,SAAS,eAG7B55B,EAAKy5B,mBAAoB,KAGzBz5B,EAAKiC,aAAaP,QAAQ1B,EAAKsY,KAAKuhB,gBAAkB,qBACtD75B,EAAK85B,aAAe95B,EAAKiC,aAAaP,QAClC1B,EAAKsY,KAAKuhB,gBAAkB,oBAjBc75B,iDAsBtD,WACI,OACI9E,KAAK6+B,cAAc3rB,SAClBlT,KAAKod,KAAK0hB,gBACV9+B,KAAKod,KAAK2hB,8CAInB,WACI,OAAO/+B,KAAKod,KAAK7Z,0BAGrB,WAA4B,IAAAsT,EAAA7W,KAClBg/B,EAAe,CACjB,OACA,WACA,kBACA,SACA,cACA,qBACA,gBACA,WACA,kBAGAtW,EAAa1oB,KAAKkK,MAAMwe,WAAW1oB,KAAKuD,MAAMse,KAAI,SAACre,GAGnD,MAFmB,aAAfA,EAAMkH,OAAqBlH,EAAMkH,KAAO,QAC5ClH,EAAMA,MAAQA,EAAMqJ,KACbrJ;AAGXklB,EAAaA,EAAWvE,QAAO,SAAC3gB,GAAsB,IAAA40B,EAAAoD;AAClD,SAAKwD,EAAal9B,SAAS0B,EAAMkH,OACjC,QAAA0tB,EAAI50B,EAAM6K,gBAAV,IAAA+pB,GAAIA,EAAgB6G,aACO,aAAvB,QAAAzD,EAAAh4B,EAAMmH,eAAN,IAAA6wB,OAAA,EAAAA,EAAej4B;AAIvB,IAAI27B,EAAmB;AACnBl/B,KAAKod,KAAK+hB,aACVD,EAAcl/B,KAAKod,KAAK+hB,WAAWr9B,SAAS,KACtC9B,KAAKod,KAAK+hB,WAAW1vB,MAAM,KAC3BzP,KAAKod,KAAK+hB,WAAW1vB,MAAM,MAGrCiZ,EAAW9hB,SAAQ,SAACqP,EAAMvK,GACjBnM,MAAAqT,QAAQssB,IAAgBA,EAAY,KAAOjpB,EAAKpJ,KAEhD6b,EAAWhd,GAAO3M,MAAQ8X,EAAKuoB,eAAenpB,EAAKpJ,MADpD6b,EAAWhd,GAAO3M,MAAQ8X,EAAKuG,KAAKiiB,OAAOxoB,EAAKuG,KAAK+hB,YAEzDzW,EAAWhd,GAAOmuB,MAAQhjB,EAAKrV,UAAU2X,wBAAwBtC,EAAKtT,KAAM0S,EAAKpJ,MACjF6b,EAAWhd,GAAO6U,OAAS1J,EAAKlX,KAAK2C,EAAE,cACvComB,EAAWhd,GAAO4zB,UAAYrpB,EAAK1S,KAAO,IAAM0S,EAAKpJ,KAErD6b,EAAWhd,GAAO6zB,cAAgB1oB,EAAK2oB,6BAA6BvpB,EAAMyS;AAG9E,IAAM+W,EAAoBz/B,KAAKod,KAAKsiB,WAC9B1/B,KAAK2/B,qBAAqB3/B,KAAKod,KAAKsiB,YACpC,GAEFE,EAAc,CACdl1B,KAAM,YACNmC,KAAM,IACNgtB,MAAO75B,KAAKL,KAAK2C,EAAE,kBACnBvD,MAAOiB,KAAKod,KAAKiiB,OAAOva,EAAI9kB,KAAKod,KAAKiiB,OAAOva,EAAI,KACjDvhB,KAAM,GACN+7B,UAAW,UAGXO,EAAe,CACfn1B,KAAM,UACNmC,KAAM,UACNgtB,MAAO75B,KAAKL,KAAK2C,EAAE,mBACnBvD,MAAOiB,KAAKod,KAAKiiB,OAAOQ,QAAU7/B,KAAKod,KAAKiiB,OAAOQ,QAAU,KAC7Dt8B,KAAMvD,KAAKod,KAAK7Z,KAChB+7B,UAAW,WAGXQ,EAAc,CACdp1B,KAAM,kBACNmC,KAAM,kBACNgtB,MAAO75B,KAAKL,KAAK2C,EAAE,kBACnBvD,MAAOiB,KAAKod,KAAKiiB,OAAOU,gBAAkB//B,KAAKod,KAAKiiB,OAAOU,gBAAkB,KAC7Ex8B,KAAMvD,KAAKod,KAAK7Z,KAChB+7B,UAAW,kBACX30B,QAAS,CACL,CAAEhH,GAAI,SAAU5E,MAAOiB,KAAKL,KAAK2C,EAAE,wBACnC,CAAEqB,GAAI,SAAU5E,MAAOiB,KAAKL,KAAK2C,EAAE,2BAEvCie,OAAQvgB,KAAKL,KAAK2C,EAAE;AAExBomB,EAAWxd,KAAK40B;AAEhB,IAAIE,EAAYtX;AAEZ1oB,KAAKod,KAAK6iB,cAEVvX,EAAaA,EAAWvE,QAAO,SAAClO,GAE5B,QAAIY,EAAKuG,KAAK6iB,YAAYxwB,MAAM,KAAK3N,SAASmU,EAAKpJ,QAE/CgK,EAAK+nB,aAAa98B,SAASmU,EAAKpJ,OAChCoJ,EAAKiqB,WAAY,GACV,QAFX,MAOClgC,KAAKod,KAAK6iB,YAAYxwB,MAAM,KAAK3N,SAAS,OAAM89B,EAAS,MAGzD5/B,KAAKod,KAAK6iB,YAAYxwB,MAAM,KAAK3N,SAAS,aAAY+9B,EAAU;AAGzE,IAAMM,EAAYzX,EAAW9nB,OAAO6+B,GAChCW,EAAc,GACdC,EAAwB;AAyB5B,OAxBIrgC,KAAKod,KAAKkjB,aAEVH,EAAUv5B,SAAQ,SAACpD,GACf,GAAIA,EAAM08B,UAAW,OAAQG,EAAiBxpB,EAAK0pB,SAAS/8B,EAAMqJ,OAASrJ;AAC3E,IAAMkI,EAAQmL,EAAKuG,KAAKkjB,YAAYE,WAChC,SAAC5mB,GACG,OAAOA,EAAI/M,OAASrJ,EAAMqJ,MAAQ+M,EAAIrW,OAASC,EAAMD;AAGzDmI,GAAS,EAAG00B,EAAO10B,GAASlI,EAC3B48B,EAAOl1B,KAAK1H,MAUzB48B,GAHAA,GAHAA,EAASpgC,KAAKygC,sBAAuBlhC,MAAAqT,QAAQwtB,GAAmBD,EAATC,EAAoBR,EAAQC,IAGnEa,YAAYL,IAGZlc,QAAO,SAACnP,GAAD,OAAcA,KAGrChV,KAAK6+B,cAAgBmB,EAAU7b,QAAO,SAAClO,GAAD,OAAgBmqB,EAAOzX,OAAO,OAAQ1S,EAAKpJ,SAC1EuzB,8BASX,SACoBO,EAAqB5hC,EAAYyE,IAC5CA,GAAUm9B,KACXA,IAAan9B,EAAQm9B,GACzB3gC,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,kBACtBq2B,OAAQp2B,EACRq2B,MAAO,qBAEP75B,KAAKod,KAAKwjB,QAAQ5gC,KAAKod,KAAKwjB,OAAO7hC,EAAOyE,GAC1CxD,KAAKod,KAAKyjB,oBACV7gC,KAAKod,KAAKyjB,mBAAmB9hC,EAAOyE,GAExCjE,MAAAypB,qBAAqBhpB,KAAM,wCAG/B,WACsB,IAAAyjB,EAAAzjB;AAClBA,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,kBACtBq2B,OAAQ,gBACRC,MAAO,qBAEP75B,KAAKod,KAAK0jB,cAAc9gC,KAAKod,KAAK0jB,eACtCvhC,MAAAypB,qBAAqBhpB,KAAM,WAC3BA,KAAKq8B,QAAQz1B,SAAQ,SAACud,GAClB,IAAMplB,EAAQolB,EAAOplB,MAAQolB,EAAOplB,MAAQ;AACxC0kB,EAAKrG,KAAKyjB,oBAAoBpd,EAAKrG,KAAKyjB,mBAAmB9hC,EAAOolB,EAAOtX,kCAIrF,SACiBsX,GACbnkB,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,4BACtBq2B,OAAQzV,EACR0V,MAAO,qBAEX75B,KAAK4+B,aAAalQ,WAAWvK,EAAOtX,MACpC7M,KAAK+G,aAAaO,QAAQtH,KAAKod,KAAKuhB,gBAAkB,kBAAmB3+B,KAAK4+B,cAC9Er/B,MAAAypB,qBAAqBhpB,KAAM,qCAG/B,SACkBmkB,GACVA,EAAOplB,OAAOiB,KAAK+gC,aAAa,GAAI,KAAM5c,EAAOtX,MACrD7M,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,6BACtBq2B,OAAQzV,EACR0V,MAAO,qBAEX75B,KAAK4+B,aAAavQ,aAAalK,EAAOtX,MACtC7M,KAAK+G,aAAaO,QAAQtH,KAAKod,KAAKuhB,gBAAkB,kBAAmB3+B,KAAK4+B,cAC9Er/B,MAAAypB,qBAAqBhpB,KAAM,+CAO/B,SAA4B0O,GAAa,IAAAmuB,EAAAJ,EAAAz8B,KAC/BiiB,EAAM,GADyB6a,EAAAC,EAEjBruB,EAAIe,MAAM;AAFO,IAAA,IAAAuxB,EAAA,WAAA,IAG3BC,EAH2BpE,EAAA99B,MAGV0Q,MAAM,KACvByxB,EAAcD,EAAS/tB,OAAS,EAAI,EAAI,EAExCiH,EAASsiB,EAAKvyB,MAAMwe,WAAWuY,EAAS,IAAI9c,QAAO,SAACoZ,GACtD,OAAOA,EAAE1wB,OAASo0B,EAASC,EAAc;AAE7C,GAAI3hC,MAAAqT,QAAQuH,GAAS,MAAA;AACrBA,EAAO,GAAG0f,MAAQ1f,EAAO,GAAGgnB,gBAC5BhnB,EAAO,GAAGinB,YAAcH,EAASC,GAAe,IAAMD,EAASC,EAAc,GAAK,IAClF/mB,EAAO,GAAGoG,OAASkc,EAAK98B,KAAK2C,EAAE,cAC/B6X,EAAO,GAAGmlB,UAAYnlB,EAAO,GAAG5W,KAAO,IAAM4W,EAAO,GAAGtN,KAEnD4vB,EAAKrf,KAAKiiB,OAAOllB,EAAO,GAAGinB,eAC3BjnB,EAAO,GAAGpb,MAAQ09B,EAAKrf,KAAKiiB,OAAOllB,EAAO,GAAGinB,cACjDnf,EAAI/W,KAAKiP,EAAO;AAfpB,IAAA2iB,EAAAjjB,MAAAgjB,EAAAC,EAAAnjB,KAAAqjB,MAAoCgE,IAFC,MAAA1D,GAAAR,EAAA3V,EAAAmW,GAAA,QAAAR,EAAAS,IAoBrC,OAAOtb,uCAGX,SAA8B1S,EAAUqwB,EAAmBC,GAGvD,OAFAtwB,EAAMqwB,EAASrwB,EAAI3O,OAAO,CAACg/B,IAAWrwB,EACtCA,EAAMswB,EAAUtwB,EAAI3O,OAAO,CAACi/B,IAAYtwB,0BAI5C,SAAiB0Z,GACb,OAAOjpB,KAAK4+B,aAAa4B,WAAU,SAACvqB,GAAD,OAAeA,IAASgT,mCAG/D,SAAuBzlB,GACnB,OAAIxD,KAAKod,KAAKiiB,OAAO77B,GAAexD,KAAKod,KAAKiiB,OAAO77B,GACjDxD,KAAKod,KAAKiiB,OAAO77B,EAAQ,QAAgBxD,KAAKod,KAAKiiB,OAAO77B,EAAQ,QAC7DxD,KAAKod,KAAKiiB,OAAO,qBAAuB77B,EAAQ,KAC9CxD,KAAKod,KAAKiiB,OAAO,qBAAuB77B,EAAQ,KAClDxD,KAAKod,KAAKiiB,OAAO,wBAA0B77B,EAAQ,aACjDxD,KAAKod,KAAKiiB,OAAO,wBAA0B77B,EAAQ,aAClD,iDAQhB,SACIA,EACA64B,GAC6B,IAAAM,EAAA38B,KACzBqhC,EAAoD,IACxDhF,EAAUA,EAAQz7B,OACdZ,KAAKod,KAAKsiB,WAAa1/B,KAAK2/B,qBAAqB3/B,KAAKod,KAAKsiB,YAAc,KAErE94B,SAAQ,SAAC06B,GAA4B,IAAAC,EAAAC,EAAAjJ,EAAAoC;AAE7BgC,EAAK8E,UAAUC,mBAAmBJ,EAAYz0B,MACpDgV,KAAI,SAAC8f,GAA4C,IAAAC;AAC/CD,EAAKn+B,QAAUA,EAAMqJ,MACrBw0B,EAAan2B,KAAK,CAAE1H,MAAO89B,EAAand,OAAM,QAAAyd,EAAEN,EAAY32B,eAAd,IAAAi3B,OAAA,EAAEA,EAAqBr+B;AAI7E,IAMgDs+B,EAN1CC,EACFviC,MAAA+gB,UAAA,QAAAihB,EAAUD,EAAYjzB,gBAAtB,IAAAkzB,OAAA,EAAUA,EAAsBx3B,UAChC,QAAAy3B,EAAAF,EAAYjzB,gBAAZ,IAAAmzB,OAAA,EAAAA,EAAsBz3B,SAAUvG,EAAMqJ,KAEpCk1B,EACFxiC,MAAA+gB,UAAA,QAAAiY,EAAU/0B,EAAM6K,gBAAhB,IAAAkqB,OAAA,EAAUA,EAAgBxuB,UAAW,QAAA4wB,EAAAn3B,EAAM6K,gBAAN,IAAAssB,OAAA,EAAAA,EAAgB5wB,SAAUu3B,EAAYz0B,MAC3Ei1B,GAAwBC,IACxBV,EAAan2B,KAAK,CAAE1H,MAAO89B,EAAand,OAAM,QAAA0d,EAAEP,EAAY32B,eAAd,IAAAk3B,OAAA,EAAEA,EAAqBt+B;AAI7E,IAAIoH,EAAe;AASnB,OARA02B,EAAaz6B,SAAQ,SAACo7B,GACmB,UAAjCziC,MAAA6I,OAAO45B,EAAUx+B,MAAMzE,OACvB4L,EAAQq3B,EAAU7d,QAAU6d,EAAUx+B,MAAMzE,MAAQijC,EAAUx+B,MAAMzE,MAAM4E,GAAK,KAE/EgH,EAAQq3B,EAAU7d,QAAU6d,EAAUx+B,MAAMzE,MAAQijC,EAAUx+B,MAAMzE,MAAQ,QAI7E4L,qCAhVHqR,EAAAA,8GAKsB,gHACA,gHACK,uHACM,iHACJ,iHACD;0CAXnBqiB;;;;;;;;;;;;;;;;;;;;;;;;;AC1BrB,IAAMliB,GAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,y0WAAAzZ,KAAA,CAAA0Z,WAAA,0CAmDP0lB,gJAOhB1iC,MAAAC,OAAAC,QAAQ,iEAGRF,MAAAC,OAAAC,QAAQ,4FAIRF,MAAAC,OAAAC,QAAQ,yBACRF,MAAAC,OAAAC,QAAQ,kRAqFRF,MAAAwB,SAAAmhC,MAAM,6BACN3iC,MAAAwB,SAAAmhC,MAAM;;;AArEP,SAAAD,IAAc,IAAAn9B;AA2BV,GA3BUyZ,GAAAve,KAAAiiC,GAAAzjB,GAAAC,GACV3Z,EAAA7E,EAAAC,MAAAF,KAASG,YADC,QAAAue,GAAAD,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,UAAA6Z,GAAAF,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,QAAA8Z,GAAAH,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,UAAAyd,GAAA9D,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,OAAA0d,GAAA/D,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,gBAAA2d,GAAAhE,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,QAAAuyB,GAAA5Y,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,aAAAwyB,GAAA7Y,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,SAAAyyB,GAAA9Y,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,YAAA0yB,GAAA/Y,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,YAAA2yB,GAAAhZ,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,sBAAA4yB,GAAAjZ,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,eAAA6yB,GAAAlZ,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,UAAA8yB,GAAAnZ,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,cAAA+yB,GAAApZ,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,UAAAgzB,GAAArZ,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,YAAAq9B,GAAA1jB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,UAAAs9B,GAAA3jB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,OAAAu9B,GAAA5jB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,UAAAw9B,GAAA7jB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,OAAAy9B,GAAA9jB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,sBAAA09B,GAAA/jB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,QAAA29B,GAAAhkB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,WAAA49B,GAAAjkB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,SAAA69B,GAAAlkB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,eAAA89B,GAAAnkB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,mBAAA+9B,GAAApkB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,uBAAAg+B,GAAArkB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,eAAAi+B,GAAAtkB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,eAAAk+B,GAAAvkB,GAAA3Z,IAAA0Z,GAAAC,GAAA3Z,GAAA,iBAAAm+B,GAAAxkB,GAAA3Z,IAGVA,EAAK6d,QAAQC,GAAG,aAAhBnE,GAAA3Z,GAAoC,gBACpCA,EAAKo+B,YAAc,GACnBp+B,EAAKq+B,YAAc,EAClBr+B,EAAKs+B,WAAa,+BAAkCt+B,EAAKu+B,aAAe,GACzEv+B,EAAKvB,KAAOuB,EAAKsY,KAAK7Z,KACtBuB,EAAKw+B,YAAcx+B,EAAKsY,KAAKkmB,cAAe,EAC5Cx+B,EAAKy+B,gBAAiBhkC,MAAA+gB,UAAUxb,EAAKsY,KAAKmmB,iBAAkBz+B,EAAKsY,KAAKmmB,eACtEz+B,EAAK0+B,YAAc1+B,EAAKsY,KAAKomB,aAAe,GAC5C1+B,EAAK26B,kBAAoB36B,EAAKsY,KAAKsiB,YAAc,GACjD56B,EAAK2+B,aAAc,EACnB3+B,EAAK4+B,8BAAgC,GACrC5+B,EAAK6+B,iBAAmB,CACpB,OACA,SACA,QACA,QACA,YACA,kBACA,oBAGJ7+B,EAAK65B,gBAAkB75B,EAAKsY,KAAKuhB,gBAAkB75B,EAAKsY,KAAKuhB,gBAAkB75B,EAAKvB,KACpFuB,EAAK8+B,YAAc9+B,EAAKiC,aAAaP,QAAQ1B,EAAK65B,gBAAkB,iBAAmB,GAEnF75B,EAAK0+B,YAAa,CAClB,IAAMrD,EAAYr7B,EAAK0+B,YAAY/zB,MAAM,KACnCo0B,EAAc1D,EAAUhc,QAAO,SAACoZ,GAAD,OAAOz4B,EAAKoF,MAAM+xB,YAAYn3B,EAAKvB,KAAMg6B;AAC9Ez4B,EAAKg/B,aAAeh/B,EAAKw7B,YAAcuD,EAAYhiB,KAAI,SAACsC,GAAD,OACnDrf,EAAKoF,MAAM1G,MAAMsB,EAAKvB,KAAM4gB,MA/B1B,OAkCVrf,EAAKi/B,oBACLj/B,EAAKk/B,iBAEDl/B,EAAKiC,aAAaP,QAAQ1B,EAAK65B,gBAAkB,qBACjD75B,EAAKm/B,iBACDn/B,EAAKiC,aAAaP,QAAQ1B,EAAK65B,gBAAkB,qBAAqB19B,OAG1E6D,EAAKo/B,kBACLp/B,EAAKq/B,kBAEAr/B,EAAKs/B,iBACNt/B,EAAKs/B,eAAiBt/B,EAAKsY,KAAKgnB,eAAiBt/B,EAAKsY,KAAKgnB,eAAiB,IAEhFt/B,EAAKu/B,eAGDv/B,EAAKiC,aAAaP,QAAQ1B,EAAK65B,gBAAkB,sBACjD75B,EAAKw/B,kBAAoBx/B,EAAKiC,aAAaP,QACvC1B,EAAK65B,gBAAkB,oBAE3B75B,EAAKy/B,eACDz/B,EAAK0/B,WAAWrgB,QAAO,SAACsgB,GAAD,OACnB3/B,EAAKw/B,kBAAkBI,QAAQj1B,MAAM,KAAK3N,SAAS2iC,EAAIE,qBAzD7D7/B,0CAgEd,WACI9E,KAAK2iB,QAAQgJ,IAAI,aAAc3rB,KAAM,8CAMzC,WACI,OACIA,KAAK4kC,aAAe5kC,KAAKqjC,aAAanwB,QACtClT,KAAKqjC,aAAanwB,SAAWlT,KAAKiB,KAAKiS,sCAI/C,WACI,OAAOlT,KAAK6kC,iBAAmB7kC,KAAK4kC,aAAe5kC,KAAKqjC,aAAanwB,yCAGzE,WACI,OAAOlT,KAAK0kC,QAAQ/b,OAAO,gBAAiB,kCAGhD,WACI,IAAMmc,EAAe9kC,KAAKkK,MAAMA,MAAMlK,KAAKod,KAAK7Z,MAAM8K;AAEtD,OAAKy2B,GAAiBA,EAAaC,mBAC5BD,EAAaC,mBAD0C,4BAIlE,WACI,OAAO/kC,KAAK4kC,cAAgB5kC,KAAKglC,gBAAkB,yBAGvD,WACI,IAAKhlC,KAAK4kC,eAAiB5kC,KAAKglC,eAAgB,OAAO;AACvD,IAAM9rB,EAAQlZ,KAAK4kC,aAAe5kC,KAAK4kC,aAAe5kC,KAAKglC;AAC3D,OAAOvzB,KAAKE,KAAKuH,EAAQlZ,KAAKkjC,sCAGlC,WACI,IAAIve,EAAS;AAsBb,OApBA3kB,KAAKilC,aAAatgB,EAAQ3kB,KAAKod,KAAK+G,QACpCnkB,KAAKilC,aAAatgB,EAAQ3kB,KAAKokC,gBAC3BpkC,KAAKod,KAAK8nB,UACVvgB,EAAS3kB,KAAKmlC,iBAAiBxgB,IAE/B3kB,KAAKod,KAAKgoB,aACVvmC,OAAO69B,OAAO/X,EAAQ3kB,KAAKod,KAAKgoB,aAEhCplC,KAAKod,KAAKioB,wBAAuB1gB,EAAS3kB,KAAKslC,uBAAuB3gB,IACtE3kB,KAAKghB,OAAShhB,KAAKghB,MAAM9N,SACrBlT,KAAKod,KAAK8nB,QAASvgB,EAAO6F,KAAOxqB,KAAKulC,2BAA2BvlC,KAAKghB,OACrE2D,EAAO6gB,MAAQxlC,KAAKylC,iBAAiBzlC,KAAKghB,QAEnD2D,EAAOE,MAAQ7kB,KAAKkjC,YACpBve,EAAO2C,OAAStnB,KAAKkjC,aAAeljC,KAAKmjC,YAAc,GACvDxe,EAAO/G,UAAW,EACd5d,KAAKsjC,cACL3e,EAAOob,gBAAkB,WAE7B//B,KAAK0lC,4BAA4B/gB,GAC1BA,0BAGX,WAAiB,IAAA9N,EAAA7W,KACP2lC,EAAU3lC,KAAKyhC,UAAUmE,UAAU,CACrC,IAAM5lC,KAAKuD,KAAO,UAClBvD,KAAKuD,KAAO,UAEZmhC,EAAU1kC,KAAKyhC,UAAU/Y,WAAW1oB,KAAKuD,MAAMse,KAAI,SAAC5L,GACpD,IAAM4vB,EAAYhvB,EAAK+sB,YAAYjb,OAAO,YAAa1S,EAAKpJ;AAU5D,OARAoJ,EAAI,QAAc0vB,EAClB1vB,EAAI,UAAgBA,EAAKpJ,KACzBoJ,EAAI,cAAoBA,EAAKpJ,KAGdoJ,EAAI,MAAf4vB,EAA2BtmC,MAAAN,IAAI4mC,EAAW,SACX,WAAd5vB,EAAKpJ,KAAoB,GAAK,GAE5CoJ;AA6BX,OA1BIjW,KAAKod,KAAK6iB,cACVyE,EAAUA,EAAQvgB,QAAO,SAAC2hB,GAAD,OACrBjvB,EAAKuG,KAAK6iB,YAAYxwB,MAAM,KAAK3N,SAASgkC,EAAOnB,mBAEzDD,EAAUA,EAAQvgB,QACd,SAAC2hB,GAAD,OACIA,EAAOz3B,WAAay3B,EAAOz3B,SAAS03B,cAAgBD,EAAOz3B,SAASktB,YAGvEv7B,KAAKod,KAAK4oB,mBACXtB,EAAQx5B,KAAK,CACT2B,KAAM,mBACNtJ,KAAMvD,KAAKuD,KACXohC,cAAe,mBACfsB,UAAW,mBACX9E,gBAAiBnhC,KAAKL,KAAK2C,EAAE,8BAEhCtC,KAAKod,KAAK4oB,mBACXtB,EAAQx5B,KAAK,CACT2B,KAAM,oBACNtJ,KAAMvD,KAAKuD,KACXohC,cAAe,oBACfsB,UAAW,oBACX9E,gBAAiBnhC,KAAKL,KAAK2C,EAAE,+BAG9BoiC,2BAGX,WAAkB,IAAAjhB,EAAAzjB;AACd,IAAKA,KAAKuD,KAAM,MAAO;AACvB,IAAKvD,KAAKkK,MAAM+xB,YAAYj8B,KAAKuD,KAAM,UAAW,MAAO;AAEzD,IAAIC,EAAQxD,KAAKkK,MAAM1G,MAAMxD,KAAKuD,KAAM,UACpC2iC,EAAe;AAOnB,OAJIA,EADA1iC,EAAM6K,SAAS83B,aACA3iC,EAAM6K,SAAS83B,aAAa12B,MAAM,KAElCjM,EAAMmH,SAGXu7B,EAAarkB,KAAI,SAAC7W,GAC5B,OAAIyY,EAAK9jB,KAAK2rB,OAAO,UAAYtgB,GACtB,CAAErH,GAAIqH,EAAQ6B,KAAM4W,EAAK9jB,KAAK2C,EAAE,UAAY0I,EAAS,UAErD,CAAErH,GAAIqH,EAAQ6B,KAAM4W,EAAK9jB,KAAK2C,EAAE,wBAA0B0I,MAL/C,iCAY9B,WACI,OAAIzL,MAAAqT,QAAQ5S,KAAKomC,cACVpmC,KAAKomC,YAAY7T,MAAM,MAAMzwB,SAAS,aAAe9B,KAAKqjC,aAAanwB,mCAGlF,WACI,IAAKlT,KAAKqmC,aAAc,OAAO;AAC/B,IAAIC,EAAYtmC,KAAKqmC,aAAa1tB,YAAYrV;AAC9C,OAAKgjC,EAAUxkC,SAAS,sBAEjB9B,KAAKkK,MAAMA,MAAMlK,KAAKuD,KAAKgjC,cAAc15B,KADrC7M,KAAKL,KAAK2C,EAAE,mBAAqBgkC,oCAIhD,WAEItmC,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,oBACtBq2B,OAAQ,mBACRC,MAAO,qBAEXt6B,MAAA4C,IAAInC,KAAM,iBAAkB,MAC5BT,MAAA4C,IAAInC,KAAM,gBAAgB,8DAG9B,SAAA+X,EACmBsnB,GADnB,IAAAhjB,EAAAmqB;AAAA,OAAA3uB,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,GAEIvY,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,oBACtBq2B,OAAQ,gBACRC,MAAO,qBAEPxd,EAAW,KAEXmqB,EAAkB,CAClB35B,KAAMwyB,EAAOxyB,KACbtJ,KAAMvD,KAAKuD,KACXshB,MAAOwa,EAAOxa,MAAQwa,EAAOxa,MAAQ,GACrC4hB,KAAMvjC,KAAKC,UAAUk8B,EAAOoH,MAC5B/B,QAASxhC,KAAKC,UAAUk8B,EAAOqF,SAC/BrI,QAASn5B,KAAKC,UAAUk8B,EAAOhD,SAC/BiE,YAAajB,EAAOiB,YAAcjB,EAAOiB,YAAc,GACvDoG,QAASrH,EAAOqH,QAChBC,WAAYtH,EAAOsH,aAGnB3mC,KAAK4mC,eArBb,CAAAvuB,EAAAE,KAAA;AAAA,MAsBQ8D,EAAWrc,KAAKkN,MAAMsZ,WAAW,uBAAwBxmB,KAAK4mC,eAAejjC,IAC7EpE,MAAAsnC,cAAcxqB,EAAUmqB,GACxBnqB,EAASyqB,OAxBjBzuB,EAAAE,KAAA;AAAA;AAAA,KAAA,EAAA,OAAAF,EAAAE,KAAA,GA0ByBvY,KAAKkN,MACjB4b,aAAa,uBAAwB0d,GACrCM;AA5Bb,KAAA,GA0BQzqB,EA1BRhE,EAAAW;AAAA,KAAA,GA+BIhZ,KAAKgkC,iBACLhkC,KAAKikC,iBAAiB5nB;AAhC1B,KAAA,GAAA,IAAA,MAAA,OAAAhE,EAAAe,UAAArB,EAAA/X,wFAmCA,WAEIA,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,oBACtBq2B,OAAQ,sBACRC,MAAO,qBAEX75B,KAAK+G,aAAaI,WAAWnH,KAAK2+B,gBAAkB,qBACpD3+B,KAAK+jC,oBACLxkC,MAAA4C,IAAInC,KAAM,iBAAkBA,KAAKod,KAAK+G,OAASnkB,KAAKod,KAAK+G,OAAS,IAClE5kB,MAAA4C,IAAInC,KAAM,cAAe,IACzBT,MAAA4C,IAAInC,KAAM,cAAeA,KAAKod,KAAKomB,aACnCjkC,MAAA4C,IAAInC,KAAM,oBAAqBA,KAAKod,KAAKsiB,YACzCngC,MAAA4C,IAAInC,KAAM,cAAeA,KAAK8jC,cAC9BvkC,MAAA4C,IAAInC,KAAM,eAAe,GACzBT,MAAAypB,qBAAqBhpB,KAAM,eAC3BA,KAAKqkC,eACLrkC,KAAKukC,eAAevkC,KAAK0kC,SACzBnlC,MAAA4C,IAAInC,KAAM,aAAa,GACvBT,MAAA4C,IAAInC,KAAM,sBAAuB,qEAGrC,SAAA8jB,EACuBzH,GADvB,IAAA0qB,EAAAtK,EAAAz8B;AAAA,OAAA6X,mBAAAO,MAAA,SAAA6L,GAAA,OAAA,OAAAA,EAAA3L,KAAA2L,EAAA1L,MAAA,KAAA,EAAA,OAEIvY,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,oBACtBq2B,OAAQ,oBACRC,MAAO,qBAGPxd,EAAS1Y,IACT3D,KAAK+G,aAAaO,QAAQtH,KAAK2+B,gBAAkB,oBAAqB,CAClE19B,KAAMob,EACN2qB,QAAS3qB,EAAS1Y,KAX9BsgB,EAAA1L,KAAA,EAcUvY,KAAKinC,kBAAkB5qB;AAdjC,KAAA,EAeIrc,KAAKqkC,eACC0C,EAAkB7jC,KAAKwD,MAAM2V,EAASqoB,SAASvgB,QACjD,SAACsgB,GAAD,OACIhI,EAAKvyB,MAAM+xB,YAAYQ,EAAKl5B,KAAMkhC,EAAIE,gBACtCF,EAAIwB,UAAUnkC,SAAS,gBAE/B9B,KAAKukC,eAAewC;AArBxB,KAAA,EAAA,IAAA,MAAA,OAAA9iB,EAAA7K,UAAA0K,EAAA9jB,kFAwBA,SACaqc,GACTrc,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,oBACtBq2B,OAAQ,gBACRC,MAAO,qBAEXt6B,MAAA4C,IAAInC,KAAM,iBAAkBqc,GAC5B9c,MAAA4C,IAAInC,KAAM,gBAAgB,gEAG9B,SAAAujB,EACqBlH,GADrB,OAAAxE,mBAAAO,MAAA,SAAAsL,GAAA,OAAA,OAAAA,EAAApL,KAAAoL,EAAAnL,MAAA,KAAA,EAAA,OAEIvY,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,oBACtBq2B,OAAQ,kBACRC,MAAO,qBALfnW,EAAAnL,KAAA,EAOsBvY,KAAKN,QAAQwnC,QAAQlnC,KAAKL,KAAK2C,EAAE;AAPvD,KAAA,EAAA,IAAAohB,EAAA1K,KAAA,CAAA0K,EAAAnL,KAAA;AAAA,MAAA,OASY8D,EAAS1Y,KAAO3D,KAAKmnC,qBAAqBnnC,KAAKonC,qBAT3D1jB,EAAAnL,KAAA,EAUc8D,EAAS8M;AAVvB,KAAA,EAYInpB,KAAKgkC,iBACLzkC,MAAAypB,qBAAqBhpB,KAAM;AAb/B,KAAA,GAAA,IAAA,MAAA,OAAA0jB,EAAAtK,UAAAmK,EAAAvjB,+GAgBA,SAAAilB,EACiBuN,GADjB,OAAA3a,mBAAAO,MAAA,SAAA+M,GAAA,OAAA,OAAAA,EAAA7M,KAAA6M,EAAA5M,MAAA,KAAA,EAAA,IAEQvY,KAAKqnC,gBAFb,CAAAliB,EAAA5M,KAAA;AAAA,MAAA,OAGQhZ,MAAA4C,IAAInC,KAAM,mBAAmB,GAC7BT,MAAA4C,IAAInC,KAAM,kBAAmB,IAC7BT,MAAA4C,IAAInC,KAAM,kBAAmB,IALrCmlB,EAAA3M,OAAA;AAAA,KAAA,EAAA,OAAA2M,EAAA3M,OAAA,SAQWxY,KAAKsnC,cAAc9U;AAR9B,KAAA,EAAA,IAAA,MAAA,OAAArN,EAAA/L,UAAA6L,EAAAjlB,oFAWA,SACe0kC,GAAS,IAAA/H,EAAA38B;AACpBT,MAAA4C,IAAInC,KAAM,UAAW0kC;AAGrB,IAAM6C,EAAYhoC,MAAAN,IAAIe,KAAM;AAC5BT,MAAA4C,IAAInC,KAAM,OAAQ,MAClBT,MAAAkD,IAAA8V,KAAKvY,MAAM,WAAA,OAAMT,MAAA4C,IAAIw6B,EAAM,OAAQ4K,kCAGvC,SACaxoC,EAAOyE,GACZA,IACAjE,MAAA4C,IAAInC,KAAM,cAAe,GACzBT,MAAA4C,IAAInC,KAAM,kBAAoBwD,EAAOzE,GAASA,EAAM4E,GAAK5E,EAAM4E,GAAK5E,GACtD,YAAVyE,GAAqBxD,KAAKwnC,cAAczoC,GAC5CQ,MAAAypB,qBAAqBhpB,KAAM,eAC3BA,KAAKqkC,4CAIb,SACa7gC,EAAOzE,GAChBiB,KAAKynC,SAASjkC,GAASzE,8BAG3B,WAEIQ,MAAA4C,IAAInC,KAAM,cAAe,GACzBA,KAAK+jC,oBACLxkC,MAAA4C,IAAInC,KAAM,aAAa,GACvBT,MAAA4C,IAAInC,KAAM,iBAAkBA,KAAKod,KAAK+G,OAASnkB,KAAKod,KAAK+G,OAAS,IAClE5kB,MAAAypB,qBAAqBhpB,KAAM,eAC3BA,KAAKqkC,iDAGT,SACmBtlC,EAAOyE,GAClBxD,KAAKod,KAAKyjB,oBAAoB7gC,KAAKod,KAAKyjB,mBAAmB9hC,EAAOyE,+DAG1E,SAAA2kB,EACoBuf,EAAK1yB,GADzB,OAAA6C,mBAAAO,MAAA,SAAAgQ,GAAA,OAAA,OAAAA,EAAA9P,KAAA8P,EAAA7P,MAAA,KAAA,EAAA,GAEIvY,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,sBACtBq2B,OAAQ8N,EACR7N,MAAO,qBAEXt6B,MAAA4C,IAAInC,KAAM,eAAe,GACd,QAAP0nC,GAAenoC,MAAA4C,IAAInC,KAAM,WAAYgV,GAC7B,YAAR0yB,GAAmBnoC,MAAA4C,IAAInC,KAAM,cAAegV,GACrC,UAAP0yB,GAAiB1nC,KAAK2nC,UAAU3yB,GACxB,YAAR0yB,GAAmB1nC,KAAK4nC,WAAW5yB,GAC3B,SAAR0yB,GAAgB1nC,KAAK6nC,QAAQ7yB,GACrB,WAAR0yB,EAbR,CAAAtf,EAAA7P,KAAA;AAAA,MAAA,GAcahZ,MAAAN,IAAI+V,EAAK,+BAdtB,CAAAoT,EAAA7P,KAAA;AAAA,MAAA,OAAA6P,EAAA5P,OAAA,SAemBxY,KAAKguB,cAAc8Z,QAAQ9nC,KAAKL,KAAK2C,EAAE,wBAAyB,CACnE2rB,WAAW;AAhB3B,KAAA,GAmBQjuB,KAAK+nC,aAAa/yB,EAAK;AAnB/B,KAAA,GAqBgB,aAAR0yB,IACK1nC,KAAKma,SAAQna,KAAKma,OAASna,KAAKkK,MAAMwe,WAAW1oB,KAAKuD,OAC3DvD,KAAKqmC,aAAerxB;AAvB5B,KAAA,GAAA,IAAA,MAAA,OAAAoT,EAAAhP,UAAA+O,EAAAnoB,2EA2BA,WAEI,IAAMq/B,EAASxgC,OAAO69B,OAAO,GAAIn9B,MAAAN,IAAIe,KAAM;AAC3CT,MAAA4C,IAAInC,KAAM,WAAYA,KAAKkN,MAAM4b,aAAa9oB,KAAKuD,KAAM87B,0BAG7D,WAEIr/B,KAAKqkC,yCAGT,SACW2D,GACPzoC,MAAA4C,IAAInC,KAAM,cAAegoC,GACzBhoC,KAAKqkC,uEAGT,SAAA4D,EACgBzV,GADhB,IAAA7N,EAAAujB,EAAA/nC;AAAA,OAAA0X,mBAAAO,MAAA,SAAA+vB,GAAA,OAAA,OAAAA,EAAA7vB,KAAA6vB,EAAA5vB,MAAA,KAAA,EAAA,GAC0BoM,EAD1BujB,EAAAh1B,OAAA,QAAAwR,IAAAwjB,EAAA,GAAAA,EAAA,GACmC,GAC/B3oC,MAAA4C,IAAInC,KAAM,cAAc,GACxBA,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,kBACtBq2B,OAAQ,aACRC,MAAO,qBANfsO,EAAA7vB,KAAA,EASoC,gBAAxBqM,EAAOyjB,aATnB,CAAAD,EAAA5vB,KAAA;AAAA,MAAA,OAAA4vB,EAAA5vB,KAAA,EAUkBvY,KAAKqoC,YAAYC,cACnBtoC,KAAKuD,KACLvD,KAAKuoC,mBACLvoC,KAAKokC,eACLpkC,KAAK0kC,QAAQnS,MAAM,iBAAiB5U,KAAK,KACzCgH,EACA;AAhBhB,KAAA,EAAAwjB,EAAA5vB,KAAA;AAAA;AAAA,KAAA,EAAA,OAAA4vB,EAAA5vB,KAAA,GAmBkBvY,KAAKwoC,UAAUhW,EAAU7N,EAAQ;AAnBnD,KAAA,GAAAwjB,EAAA5vB,KAAA;AAAA;AAAA,KAAA,GAAA4vB,EAAA7vB,KAAA,GAAA6vB,EAAAnuB,GAAAmuB,EAAA,MAAA,GAsBQnoC,KAAK2B,MAAM8mC,OAAXN,EAAAnuB;AAtBR,KAAA,GAAA,OAAAmuB,EAAA7vB,KAAA,GAwBQ/Y,MAAA4C,IAAInC,KAAM,cAAc,GAxBhCmoC,EAAAO,OAAA;AAAA,KAAA,GAAA,IAAA,MAAA,OAAAP,EAAA/uB,UAAA6uB,EAAAjoC,KAAA,CAAA,CAAA,EAAA,GAAA,GAAA,kHA4BA,SAAA2oC,EACoBhkB,GADpB,OAAA9M,mBAAAO,MAAA,SAAAwwB,GAAA,OAAA,OAAAA,EAAAtwB,KAAAswB,EAAArwB,MAAA,KAAA,EAAA,OAEIhZ,MAAA4C,IAAInC,KAAM,cAAc,GACxBA,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,kBACtBq2B,OAAQ,0BACRC,MAAO,qBANf+O,EAAAtwB,KAAA,EASY/Y,MAAAqT,QAAQ5S,KAAK6oC,YAAL,iBAAqC7oC,KAAK6oC,YAAL,QATzDD,EAAArwB,KAAA,EAUcvY,KAAKqoC,YAAYC,cACnBtoC,KAAKuD,KACLvD,KAAKuoC,mBACLvoC,KAAK6oC,YACL7oC,KAAK0kC,QAAQnS,MAAM,iBAAiB5U,KAAK,KACzCgH,EACA;AAhBZ,KAAA,EAAAikB,EAAArwB,KAAA;AAAA;AAAA,KAAA,EAAAqwB,EAAAtwB,KAAA,EAAAswB,EAAA5uB,GAAA4uB,EAAA,MAAA,GAmBQ5oC,KAAK2B,MAAM8mC,OAAXG,EAAA5uB;AAnBR,KAAA,GAAA,OAAA4uB,EAAAtwB,KAAA,GAqBQ/Y,MAAA4C,IAAInC,KAAM,cAAc,GArBhC4oC,EAAAF,OAAA;AAAA,KAAA,GAAA,IAAA,MAAA,OAAAE,EAAAxvB,UAAAuvB,EAAA3oC,KAAA,CAAA,CAAA,EAAA,EAAA,GAAA,8GAyBA,SAAA8oC,EACgBtW,GADhB,IAAAvxB,EAAAyjC;AAAA,OAAA7sB,mBAAAO,MAAA,SAAA2wB,GAAA,OAAA,OAAAA,EAAAzwB,KAAAywB,EAAAxwB,MAAA,KAAA,EAAA,GAEIhZ,MAAA4C,IAAInC,KAAM,cAAc,GACxBA,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,kBACtBq2B,OAAQ,aACRC,MAAO,qBANfkP,EAAAzwB,KAAA,EASsB/Y,MAAAqT,QAAQ4f,GAT9B,CAAAuW,EAAAxwB,KAAA;AAAA,MAAAwwB,EAAA/uB,GAS0CwY,EAT1CuW,EAAAxwB,KAAA;AAAA;AAAA,KAAA,EAAA,OAAAwwB,EAAAxwB,KAAA,EAS2DvY,KAAKgpC;AAThE,KAAA,EAAAD,EAAA/uB,GAAA+uB,EAAA/vB;AAAA,KAAA,GAAA,OASc/X,EATd8nC,EAAA/uB,GAUc0qB,EAAU1kC,KAAK0kC,QAAQ7iB,KAAI,SAAC4iB,GAC9B,MAAO,CAAE53B,KAAM43B,EAAItD,gBAAiB8H,IAAKxE,EAAI53B,KAAMyC,IAAKm1B,MAXpEsE,EAAAxwB,KAAA,GAacvY,KAAKqoC,YAAYa,UAAUlpC,KAAKuD,KAAMtC,EAAMyjC;AAb1D,KAAA,GAAAqE,EAAAxwB,KAAA;AAAA;AAAA,KAAA,GAAAwwB,EAAAzwB,KAAA,GAAAywB,EAAAI,GAAAJ,EAAA,MAAA,GAeQ/oC,KAAK2B,MAAM8mC,OAAXM,EAAAI;AAfR,KAAA,GAAA,OAAAJ,EAAAzwB,KAAA,GAiBQ/Y,MAAA4C,IAAInC,KAAM,cAAc,GAjBhC+oC,EAAAL,OAAA;AAAA,KAAA,GAAA,IAAA,MAAA,OAAAK,EAAA3vB,UAAA0vB,EAAA9oC,KAAA,CAAA,CAAA,EAAA,GAAA,GAAA,gHAqBA,SAAAopC,EACkBzkB,GADlB,IAAA0kB,EAAAC,EAAAjN,EAAAp7B,EAAAyjC,EAAA6E,EAAAC,EAAAC,EAAAtpC;AAAA,OAAA0X,mBAAAO,MAAA,SAAAsxB,GAAA,OAAA,OAAAA,EAAApxB,KAAAoxB,EAAAnxB,MAAA,KAAA,EAAA,GAC0B8wB,EAD1BI,EAAAv2B,OAAA,QAAAwR,IAAA+kB,EAAA,IAAAA,EAAA,GAC0CH,EAD1CG,EAAAv2B,OAAA,QAAAwR,IAAA+kB,EAAA,IAAAA,EAAA,GAEIlqC,MAAA4C,IAAInC,KAAM,cAAc,GACxBA,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,kBACtBq2B,OAAQ,eACRC,MAAO,qBANf6P,EAAApxB,KAAA,EASY+jB,EAAUr8B,KAAK2pC,kBAEdpqC,MAAAqT,QAAQ5S,KAAKuoC,qBAAwBe,EAXlD,CAAAI,EAAAnxB,KAAA;AAAA,MAAAmxB,EAAA1vB,GAYkBha,KAAKuoC,mBAZvBmB,EAAAnxB,KAAA;AAAA;AAAA,KAAA,GAAA,OAAAmxB,EAAAnxB,KAAA,GAawBvY,KAAKgpC;AAb7B,KAAA,GAAAU,EAAA1vB,GAAA0vB,EAAA1wB;AAAA,KAAA,GAAA,GAUY/X,EAVZyoC,EAAA1vB,GAcY0qB,EAAU1kC,KAAK0kC,QAAQ7iB,KAAI,SAAC4iB,GAC5B,MAAO,CAAE53B,KAAM43B,EAAItD,gBAAiB8H,IAAKxE,EAAI53B,KAAMyC,IAAKm1B,MAEtD8E,IAAS5kB,EAAOilB,WAAY5pC,KAAK6pC,eAAe5oC,GAClDuoC,EAAYxpC,KAAKqoC,YAAYyB,wBAC7B9pC,KAAKuD,KACLtC,EACAyjC,EACArI,EACAkN,IAEAF,EAzBZ,CAAAK,EAAAnxB,KAAA;AAAA,MAAA,OAAAmxB,EAAAnxB,KAAA,GAyBiCvY,KAAKqoC,YAAY0B,0BAA0BP;AAzB5E,KAAA,GAAA,OAAAE,EAAAlxB,OAAA,SAAAkxB,EAAA1wB;AAAA,KAAA,GAAA,OAAA0wB,EAAAnxB,KAAA,GA0BcvY,KAAKqoC,YAAY2B,oBAAoBR;AA1BnD,KAAA,GAAAE,EAAAnxB,KAAA;AAAA;AAAA,KAAA,GAAAmxB,EAAApxB,KAAA,GAAAoxB,EAAAP,GAAAO,EAAA,MAAA,GA4BQ1pC,KAAK2B,MAAM8mC,OAAXiB,EAAAP;AA5BR,KAAA,GAAA,OAAAO,EAAApxB,KAAA,GA8BQ/Y,MAAA4C,IAAInC,KAAM,cAAc,GA9BhC0pC,EAAAhB,OAAA;AAAA,KAAA,GAAA,IAAA,MAAA,OAAAgB,EAAAtwB,UAAAgwB,EAAAppC,KAAA,CAAA,CAAA,EAAA,GAAA,GAAA,yFAkCA,SACoB2kB,GAChB,OAAQA,EAAOja,MACX,IAAK,aACD1K,KAAKiqC,UAAUjqC,KAAKuoC,mBAAoB5jB;AACxC;AACJ,IAAK,kBACD3kB,KAAKkqC,cAAcvlB;AACnB;AACJ,IAAK,eACD3kB,KAAKmqC,YAAYxlB,GAGzBplB,MAAA4C,IAAInC,KAAM,mBAAmB,2BAGjC,WAEIA,KAAKoqC,kFAGT,SAAAC,IAAA,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAhN,EAAA19B;AAAA,OAAA6X,mBAAAO,MAAA,SAAAuyB,GAAA,OAAA,OAAAA,EAAAryB,KAAAqyB,EAAApyB,MAAA,KAAA,EAAA,GAEU+xB,EAAgBzqB,SAASC,cAAc,0BACzCvgB,MAAAN,IAAIe,KAAM,cAHlB,CAAA2qC,EAAApyB,KAAA;AAAA,MAAA,OAIQvY,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,sBACtBq2B,OAAQ,UACRC,MAAO,qBAGP0Q,EAAe,GACfC,EAAiB,GAX7BG,EAAApyB,KAAA,EAacvY,KAAKiB,KAAK2F,SAAQ,SAAC6Z,IAEjBlhB,MAAAN,IAAIwhB,EAAQ,uBACZlhB,MAAAN,IAAIwhB,EAAQ,WACXlhB,MAAAN,IAAIwhB,EAAQ,aAEb8pB,EAAar/B,KAAKuV;AAnBlC,KAAA,EAAA,GAwBalhB,MAAAqT,QAAQ23B,GAxBrB,CAAAI,EAAApyB,KAAA;AAAA,MAAA,OAAAoyB,EAAApyB,KAAA,GAyBgCvY,KAAKN,QAAQwnC,QAAQlnC,KAAKL,KAAK2C,EAAE;AAzBjE,KAAA,GAAA,GAAAqoC,EAAA3xB,KAAA,CAAA2xB,EAAApyB,KAAA;AAAA,MAAA,OAAAoyB,EAAAnyB,OAAA;AAAA,KAAA,GA6BY+xB,EAAa3jC,SAAQ,SAAC6Z,GAClBA,EAAO0X,qBACF54B,MAAAN,IAAIwhB,EAAQ,cAAc+pB,EAAet/B,KAAKuV,EAAO1W;AA/B1E,KAAA,GAAA,OAAA4gC,EAAApyB,KAAA,GAmCctQ,QAAQ2iC,IAAIJ;AAnC1B,KAAA,GAAA,OAAAG,EAAApyB,KAAA,GAsC4BhZ,MAAAN,IAAIe,KAAM,QAAQmkB,QAAO,SAAC1D,GAC1C,OAAIlhB,MAAAN,IAAIwhB,EAAQ,eACZid,EAAKsH,kBACE;AAzCvB,KAAA,GAsCYyF,EAtCZE,EAAA3xB,KA6CQzZ,MAAA4C,IAAInC,KAAM,OAAQyqC,GAElBlrC,MAAA4C,IAAInC,KAAM,cAAc,GAEpBsqC,GACAA,EAAc7L,UAAU7vB,OAAO,oCAlD3C+7B,EAAApyB,KAAA;AAAA;AAAA,KAAA,GAAA,GAqDYmyB,GAAiB,EAGI,KAArB1qC,KAAKkjC,YAxDjB,CAAAyH,EAAApyB,KAAA;AAAA,MAAA,OAAAoyB,EAAApyB,KAAA,GAyDmCvY,KAAKN,QAAQwnC,QAChClnC,KAAKL,KAAK2C,EAAE;AA1D5B,KAAA,GAyDYooC,EAzDZC,EAAA3xB;AAAA,KAAA,GA6DY0xB,IACA1qC,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,sBACtBq2B,OAAQ,SACRC,MAAO,qBAEX75B,KAAKqjC,aAAe,GAChBrjC,KAAK4kC,eAAiB5kC,KAAKglC,gBAC3BzlC,MAAA4C,IAAInC,KAAM,iBAAkBA,KAAK4kC,cACrCrlC,MAAA4C,IAAInC,KAAM,cAAc,GAIpBsqC,GACAA,EAAc7L,UAAU/vB,IAAI;AA3E5C,KAAA,GAAA,IAAA,MAAA,OAAAi8B,EAAAvxB,UAAAixB,EAAArqC,gHAiFA,SAAA6qC,EACmBrY,EAAUlyB,GAD7B,IAAAwqC,EAAAhO,EAAAD,EAAA7nB;AAAA,OAAA6C,mBAAAO,MAAA,SAAA2yB,GAAA,OAAA,OAAAA,EAAAzyB,KAAAyyB,EAAAxyB,MAAA,KAAA,EAAA,IAEQhZ,MAAAqT,QAAQ4f,GAFhB,CAAAuY,EAAAxyB,KAAA;AAAA,MAAA,OAAAwyB,EAAAvyB,OAAA;AAAA,KAAA,EAGIxY,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,uBACtBq2B,OAAQ,gBACRC,MAAO,qBAEP75B,KAAK4kC,aAAepS,EAAStf,QAAUsf,EAAStf,SAAWlT,KAAKiB,KAAKiS,QACrElT,KAAKgrC,iCAAiCxY,EAAUlyB,EAAQ,MAE5DN,KAAKirC,wBAAwB,SACzBH,EAAuB,GAZ/BhO,EAAAC,GAaoBvK,GAbpBuY,EAAAzyB,KAAA,EAAAwkB,EAAAjjB;AAAA,KAAA,EAAA,IAAAgjB,EAAAC,EAAAnjB,KAAAqjB,KAAA,CAAA+N,EAAAxyB,KAAA;AAAA,MAAA,GAaavD,EAbb6nB,EAAA99B,MAcQiB,KAAKirC,wBAAwBj2B,EAAI5H,MACd,WAAf4H,EAAI1U,QAAkC,aAAXA,EAfvC,CAAAyqC,EAAAxyB,KAAA;AAAA,MAAA,OAgBYuyB,EAAqB5/B,KAAK8J,GAhBtC+1B,EAAAvyB,OAAA,WAAA;AAAA,KAAA,GAAA,OAmBQjZ,MAAA4C,IAAI6S,EAAK,SAAU1U,GAnB3ByqC,EAAAzyB,KAAA,GAAAyyB,EAAAxyB,KAAA,GAqBkBvD,EAAI8xB;AArBtB,KAAA,GAsBY9xB,EAAIjL,SAtBhBghC,EAAAxyB,KAAA;AAAA;AAAA,KAAA,GAAAwyB,EAAAzyB,KAAA,GAAAyyB,EAAA/wB,GAAA+wB,EAAA,MAAA,IAwBY/qC,KAAK2B,MAAM8mC,OAAXsC,EAAA/wB,IACAhF,EAAImjB;AAzBhB,KAAA,GAAA4S,EAAAxyB,KAAA;AAAA;AAAA,KAAA,GAAAwyB,EAAAxyB,KAAA;AAAA;AAAA,KAAA,GAAAwyB,EAAAzyB,KAAA,GAAAyyB,EAAA5B,GAAA4B,EAAA,MAAA,GAAAjO,EAAA3V,EAAA4jB,EAAA5B;AAAA,KAAA,GAAA,OAAA4B,EAAAzyB,KAAA,GAAAwkB,EAAAS,IAAAwN,EAAArC,OAAA;AAAA,KAAA,GAAA,OAAAqC,EAAAxyB,KAAA,GA4BUvY,KAAKkrC,2BAA2BJ;AA5B1C,KAAA,GA6BI9qC,KAAKmrC,cAAc7qC;AA7BvB,KAAA,GAAA,IAAA,MAAA,OAAAyqC,EAAA3xB,UAAAyxB,EAAA7qC,KAAA,CAAA,CAAA,EAAA,GAAA,GAAA,IAAA,CAAA,GAAA,uFAgCA,SACgBwyB,EAAU9nB,GACtBnL,MAAA4C,IAAInC,KAAM,mBAAmB,GAC7BT,MAAA4C,IAAInC,KAAM,cAAc,GACxBT,MAAA4C,IAAInC,KAAM,iBAAkB0K,GAC5BnL,MAAA4C,IAAInC,KAAM,qBAAsBwyB,GAChCjzB,MAAA4C,IAAInC,KAAM,4BAA6BA,KAAKorC,4CAGhD,SACW5Y,EAAUkV,GAAK,IAAA2D,EAAArrC;AAClBT,MAAAqT,QAAQ4f,IACPxyB,KAAKyhC,UAAUmE,UAAU,CAAC,kBAE/B5lC,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,uBACtBq2B,OAAQ8N,EAAM,QACd7N,MAAO,qBAGP75B,KAAK4kC,aAAepS,EAAStf,QAAUsf,EAAStf,SAAWlT,KAAKiB,KAAKiS,QACrElT,KAAKgrC,iCAAiCxY,EAAU,KAAMkV,GAG1DlV,EAAS5rB,SAAQ,SAACoO,GACdq2B,EAAKtD,aAAa/yB,EAAK0yB,uDAI/B,WAEInoC,MAAA4C,IAAInC,KAAM,+BAA+B,oCAG7C,WAEQA,KAAKsjC,YACL/jC,MAAA4C,IAAInC,KAAM,eAAe,GAEzBT,MAAA4C,IAAInC,KAAM,eAAe,GAE7BA,KAAKqkC,0EAGT,SAAAiH,EACmB9Y,EAAUkV,GAD7B,IAAAvK,EAAAD,EAAAloB,EAAAiD,EAAAszB,EAAAC,EAAAC,EAAAC;AAAA,OAAA7zB,mBAAAO,MAAA,SAAAuzB,GAAA,OAAA,OAAAA,EAAArzB,KAAAqzB,EAAApzB,MAAA,KAAA,EAAA,IAEQhZ,MAAAqT,QAAQ4f,GAFhB,CAAAmZ,EAAApzB,KAAA;AAAA,MAAA,OAAAozB,EAAAnzB,OAAA;AAAA,KAAA,EAAA,GAGgB,WAARkvB,EAHR,CAAAiE,EAAApzB,KAAA;AAAA,MAAA,OAAAozB,EAAApzB,KAAA,EAIwBvY,KAAKN,QAAQwnC,QAAQlnC,KAAKL,KAAK2C,EAAE;AAJzD,KAAA,EAAA,IAAAqpC,EAAA3yB,KAAA,CAAA2yB,EAAApzB,KAAA;AAAA,MAAA4kB,EAAAJ,GAM4BvK,GAN5BmZ,EAAArzB,KAAA,EAAA6kB,EAAAtjB;AAAA,KAAA,GAAA,IAAAqjB,EAAAC,EAAAxjB,KAAAqjB,KAAA,CAAA2O,EAAApzB,KAAA;AAAA,MAAA,OAMqBvD,EANrBkoB,EAAAn+B,MAAA4sC,EAAApzB,KAAA,GAOsBvD,EAAImU;AAP1B,KAAA,GAAA,OAAAwiB,EAAApzB,KAAA,GAQsBvD,EAAI42B;AAR1B,KAAA,GAAAD,EAAApzB,KAAA;AAAA;AAAA,KAAA,GAAAozB,EAAApzB,KAAA;AAAA;AAAA,KAAA,GAAAozB,EAAArzB,KAAA,GAAAqzB,EAAA3xB,GAAA2xB,EAAA,MAAA,GAAAxO,EAAAhW,EAAAwkB,EAAA3xB;AAAA,KAAA,GAAA,OAAA2xB,EAAArzB,KAAA,GAAA6kB,EAAAI,IAAAoO,EAAAjD,OAAA;AAAA,KAAA,GAUY1oC,KAAKqkC;AAVjB,KAAA,GAAAsH,EAAApzB,KAAA;AAAA;AAAA,KAAA,GAAA,OAAAozB,EAAApzB,KAAA,GAawBvY,KAAKN,QAAQwnC,QAAQlnC,KAAKL,KAAK2C,EAAE;AAbzD,KAAA,GAAA,IAAAqpC,EAAA3yB,KAAA,CAAA2yB,EAAApzB,KAAA;AAAA,MAegBN,GAAc,EAAAW,EAAAC,WAAU7Y,KAAKuD,MAAMuV,YACnCyyB,EAAO,IACNvrC,KAAKuD,KAAKuV,YAAc,CAAE+yB,kBAAmB,UAjB9DL,EAAAzO,GAkB4BvK,GAlB5BmZ,EAAArzB,KAAA,GAAAkzB,EAAA3xB;AAAA,KAAA,GAAA,IAAA4xB,EAAAD,EAAA7xB,KAAAqjB,KAAA,CAAA2O,EAAApzB,KAAA;AAAA,MAAA,OAkBqBvD,EAlBrBy2B,EAAA1sC,MAAA4sC,EAAApzB,KAAA,GAmBsBvY,KAAK8rC,WAAW/mC,QAClB,OACA,IAAMkT,EAAc,IAAMjD,EAAIrR,GAAK,kBACnC,MACA4nC;AAvBpB,KAAA,GAAA,OAAAI,EAAApzB,KAAA,GAyBsBvD,EAAI42B;AAzB1B,KAAA,GAAAD,EAAApzB,KAAA;AAAA;AAAA,KAAA,GAAAozB,EAAApzB,KAAA;AAAA;AAAA,KAAA,GAAAozB,EAAArzB,KAAA,GAAAqzB,EAAAxC,GAAAwC,EAAA,MAAA,IAAAH,EAAArkB,EAAAwkB,EAAAxC;AAAA,KAAA,GAAA,OAAAwC,EAAArzB,KAAA,GAAAkzB,EAAAjO,IAAAoO,EAAAjD,OAAA;AAAA,KAAA,GA2BY1oC,KAAKqkC;AA3BjB,KAAA,GAAA,IAAA,MAAA,OAAAsH,EAAAvyB,UAAAkyB,EAAAtrC,KAAA,CAAA,CAAA,EAAA,GAAA,GAAA,IAAA,CAAA,GAAA,GAAA,GAAA,gHAgCA,SAAA+rC,EACgBC,EAAIjpC,EAAO6jB,EAASjC,GADpC,IAAAsnB,EAAAC,EAAAC,EAAAZ,EAAAa;AAAA,OAAAv0B,mBAAAO,MAAA,SAAAi0B,GAAA,OAAA,OAAAA,EAAA/zB,KAAA+zB,EAAA9zB,MAAA,KAAA,EAAA,OAEIhZ,MAAA4C,IAAInC,KAAM,cAAc,GACpBisC,EAAYjsC,KAAK6kC,iBAAmB7kC,KAAKgpC,gBAAkBhpC,KAAKuoC,mBAHxE8D,EAAA9zB,KAAA,EAI6BvY,KAAKssC,yBAAyB3nB,EAAQsnB;AAJnE,KAAA,EAAA,OAIQC,EAJRG,EAAArzB,KAKQmzB,EAASF,EAAYA,EAAUpqB,KAAI,SAAC5L,GAAD,OAAU1W,MAAAN,IAAIgX,EAAM,SAAS,GAC9Ds1B,EAAO,CACTgB,WAAYP,EACZQ,MAAON,EACPtlB,QAASA,EACT6lB,KAAMzsC,KAAKL,KAAKgiB,cAChB+qB,gBAAiBntC,MAAAN,IAAI0lB,EAAQ,gBAC7BhZ,UAAW3L,KAAKuD,KAChB4oC,OAAQA,EACRQ,OAAQ5pC,EACR2H,KAAMnL,MAAAN,IAAI0lB,EAAQ,QAClBioB,iBAAiD,eAA/BrtC,MAAAN,IAAI0lB,EAAQ,gBAhBtC0nB,EAAA9zB,KAAA,EAkBoBvY,KAAK8rC,WAAW/mC,QAAQ,QAAS,qBAAsB,OAAQwmC;AAlBnF,KAAA,GAkBQa,EAlBRC,EAAArzB,MAmBQ6zB,GAAKttC,MAAA4C,IAAInC,KAAM,aAAa,GAAQT,MAAA4C,IAAInC,KAAM,cAAc,GAE5D2kB,EAAOmoB,cAAgBV,EAAIS,IAAI7sC,KAAK+sC,sBAAsBf,EAAIhsC,KAAKuD,KAAM4oC,GAE7E5sC,MAAA4C,IAAInC,KAAM,cAAc;AAvB5B,KAAA,GAAA,IAAA,MAAA,OAAAqsC,EAAAjzB,UAAA2yB,EAAA/rC,0FA0BA,SACegtC,GACXhtC,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,wBACtBq2B,OAAQoT,EACRnT,MAAO,qBAEXt6B,MAAA4C,IAAInC,KAAM,cAAe,GACzBT,MAAA4C,IAAInC,KAAM,cAAegtC,GACzBhtC,KAAKitC,oBAAoBC,eAAeltC,KAAKmtC,gBAAiBH,GAC9DhtC,KAAKqkC,0CAGT,SACYrjB,GACJzhB,MAAAN,IAAI+hB,EAAO,gBACXhhB,KAAKw5B,UAAUG,WAAW,CACtBD,SAAU15B,KAAKuD,KAAO,yBACtBq2B,OAAQr6B,MAAAN,IAAI+hB,EAAO,eAAeilB,UAClCpM,MAAO,qBAEf75B,KAAKghB,MAAQA,EACbhhB,KAAKitC,oBAAoBC,eAAeltC,KAAKotC,eAAgBpsB,GAC7DhhB,KAAK+J,sEAGT,SAAAsjC,IAAA,OAAAx1B,mBAAAO,MAAA,SAAAk1B,GAAA,OAAA,OAAAA,EAAAh1B,KAAAg1B,EAAA/0B,MAAA,KAAA,EAAA,OAAA+0B,EAAA/0B,KAAA,EAEUvY,KAAK8rC,WAAW/mC,QAClB,QADE,wBAAAnE,OAEsBZ,KAAKuD,KAF3B,aAAA3C,OAE2CZ,KAAKwjC,aAClD;AALR,KAAA,EAOIxjC,KAAKgkC;AAPT,KAAA,EAAA,IAAA,MAAA,OAAAsJ,EAAAl0B,UAAAi0B,EAAArtC,mFAUA,WAEIA,KAAKynC,SAAStP,qBACdn4B,KAAKynC,SAAW,+BAGpB,SACWxxB,GAEP,IAAIjW,KAAKskC,kBAAT,CAGA,GAAItkC,KAAKmnC,oBAAqB,OAAOnnC,KAAKutC,0BAA0Bt3B;AAGpE,IAAMu3B,EAAqBxtC,KAAK4jC,YAAYjb,OAAO,YAAa1S,EAAKgwB;AACjEuH,EAAoBjuC,MAAA4C,IAAIqrC,EAAoB,QAASv3B,EAAKke,OACzDn0B,KAAK4jC,YAAYlV,WAAW,CAAEuX,UAAWhwB,EAAKgwB,UAAW9R,MAAOle,EAAKke,QAE1En0B,KAAK+G,aAAaO,QAAQtH,KAAK2+B,gBAAkB,eAAgB3+B,KAAK4jC,6CAG1E,SACgBzrB,GACZ5Y,MAAA4C,IAAInC,KAAM,eAAgBmY,GACtBnY,KAAKqnC,iBAAiBrnC,KAAKsnC,cAAcnvB,4EAGjD,SAAAs1B,EAAiCt1B,GAAjC,IAAAu1B,EAAAC,EAAA34B;AAAA,OAAA6C,mBAAAO,MAAA,SAAAw1B,GAAA,OAAA,OAAAA,EAAAt1B,KAAAs1B,EAAAr1B,MAAA,KAAA,EAAA,IACQhZ,MAAAqT,QAAQuF,GADhB,CAAAy1B,EAAAr1B,KAAA;AAAA,MAAA,OAAAq1B,EAAAp1B,OAAA;AAAA,KAAA,EAAA,IAGcjZ,MAAM2J,QAHpB,CAAA0kC,EAAAr1B,KAAA;AAAA,MAAAq1B,EAAA5zB,IAIU,EAJV4zB,EAAAr1B,KAAA;AAAA;AAAA,KAAA,EAAA,OAAAq1B,EAAAr1B,KAAA,EAKgBvY,KAAKN,QAAQwnC,QACflnC,KAAKL,KAAK2C,EAAE,oCAAqC,CAAE4W,MAAOf,EAAKjF;AAN7E,KAAA,EAAA06B,EAAA5zB,GAAA4zB,EAAA50B;AAAA,KAAA,EAAA,GAAA40B,EAAA5zB,GAAA,CAAA4zB,EAAAr1B,KAAA;AAAA,MAAA,OAAAq1B,EAAAp1B,OAAA;AAAA,KAAA,GAAAk1B,EAAA3Q,GAUoB5kB,GAVpBy1B,EAAAt1B,KAAA,GAAAo1B,EAAA7zB;AAAA,KAAA,GAAA,IAAA8zB,EAAAD,EAAA/zB,KAAAqjB,KAAA,CAAA4Q,EAAAr1B,KAAA;AAAA,MAAA,OAUavD,EAVb24B,EAAA5uC,MAWQQ,MAAA4C,IAAI6S,EAAK,SAAU,YAX3B44B,EAAAt1B,KAAA,GAAAs1B,EAAAr1B,KAAA,GAakBvD,EAAI8xB;AAbtB,KAAA,GAcY9xB,EAAIjL,SAdhB6jC,EAAAr1B,KAAA;AAAA;AAAA,KAAA,GAAAq1B,EAAAt1B,KAAA,GAAAs1B,EAAAzE,GAAAyE,EAAA,MAAA,IAgBY5tC,KAAK2B,MAAM8mC,OAAXmF,EAAAzE,IACAn0B,EAAImjB;AAjBhB,KAAA,GAAAyV,EAAAr1B,KAAA;AAAA;AAAA,KAAA,GAAAq1B,EAAAr1B,KAAA;AAAA;AAAA,KAAA,GAAAq1B,EAAAt1B,KAAA,GAAAs1B,EAAAC,GAAAD,EAAA,MAAA,IAAAF,EAAAvmB,EAAAymB,EAAAC;AAAA,KAAA,GAAA,OAAAD,EAAAt1B,KAAA,GAAAo1B,EAAAnQ,IAAAqQ,EAAAlF,OAAA;AAAA,KAAA,GAAA,IAAA,MAAA,OAAAkF,EAAAx0B,UAAAq0B,EAAAztC,KAAA,CAAA,CAAA,GAAA,GAAA,GAAA,IAAA,CAAA,GAAA,+FAsBA,SAA0BiW,GACtB,IAAIoG,EAAWrc,KAAKkN,MAAMsZ,WAAW,uBAAwBxmB,KAAKmnC,qBAE9D2G,EAAa5qC,KAAKwD,MAAM2V,EAASqoB;AACrCoJ,EAAWnlB,OAAO,YAAa1S,EAAKgwB,WAAW9R,MAAQle,EAAKke,MAE5D50B,MAAA4C,IAAIka,EAAU,UAAWnZ,KAAKC,UAAU2qC,IACxCzxB,EAASyqB,OAET9mC,KAAK+G,aAAaO,QAAQtH,KAAK2+B,gBAAkB,oBAAqB,CAClE19B,KAAMob,EACN2qB,QAAS3qB,EAAS1Y,kCAI1B,SAAc5E,GAAO,IAAAgvC,EAAA/tC;AAEjB,GADAT,MAAA4C,IAAInC,KAAM,uBAAwBA,KAAKguC,SAASjvC,IAC5CA,EAAO,CACPQ,MAAA4C,IAAInC,KAAM,aAAa;AACvB,IAAMiuC,EAAiBlvC,EAClB0Q,MAAM,KACNoS,KAAI,SAAC1C,GAAD,OAAS4uB,EAAKvJ,WAAW3/B,MAAK,SAAC4/B,GAAD,OAASA,EAAI53B,OAASsS;AAC7D5f,MAAA4C,IACInC,KACA,UACAiuC,EAAertC,OACXZ,KAAK0kC,QAAQvgB,QACT,SAACsgB,GAAD,OACIsJ,EAAKpK,iBAAiB7hC,SAAS2iC,EAAI/5B,QAClC3L,EAAM0Q,MAAM,KAAK3N,SAAS2iC,EAAI53B,gBAK/C7M,KAAK+jC,oBACLxkC,MAAA4C,IAAInC,KAAM,aAAa,2BAI/B,SAASjB,GACL,OAAIA,IACAiB,KAAKod,KAAK+G,QAAUnkB,KAAKod,KAAK+G,OAAV,MAAkCnkB,KAAKod,KAAK+G,OAAV,MACnD,4CAGX,SAAuBQ,GACnB,IAAK3kB,KAAKm/B,WAAY,OAAOxa;AAE7B,IAAMlV,EAAQzP,KAAKm/B,WAAWr9B,SAAS,KACjC9B,KAAKm/B,WAAW1vB,MAAM,KACtBzP,KAAKm/B,WAAW1vB,MAAM;AAM5B,OAJIlQ,MAAA+gB,UAAUqE,EAAOlV,EAAM,OACvBkV,EAAO3kB,KAAKm/B,YAAcxa,EAAOlV,EAAM,WAChCkV,EAAOlV,EAAM,KAEjBkV,gCAGX,SAAe1jB,GACX,IAAMitC,GAAU,EAAAC,EAAAC,SAAQntC,EAAMjB,KAAK0kC,QAAS1kC,KAAKuD,KAAMvD,KAAKyhC,UAAWzhC,KAAKkK,OAAO,GAC7EmkC,EAAYH,EAAQ,GAAKrvC,OAAOwgC,OAAO6O,EAAQ,IAAM;AAE3D,OADAG,EAAUjnB,QAAQ,IACXinB,EAAUxsB,KAAI,SAAC7M,GAAD,OAAUzV,MAAAua,OAAAw0B,WAAWt5B,GAAOA,EAAIu5B,OAASv5B,mCAGlE,WACIhV,KAAKwuC,oBAAsBxuC,KAAKkN,MAAM7J,MAAM,uBAAwB,CAChEorC,0BAA2BzuC,KAAKuD,uEAIxC,SAAAmrC,EAAwBryB,GAAxB,IAAAsyB,EAAAC,EAAAtS,EAAAmD,EAAAoP,EAAAC,EAAAC,EAAA/uC;AAAA,OAAA6X,mBAAAO,MAAA,SAAA42B,GAAA,OAAA,OAAAA,EAAA12B,KAAA02B,EAAAz2B,MAAA,KAAA,EAAA,GACUo2B,EAAoB3uC,KAAK+G,aAAaP,QACxCxG,KAAK2+B,gBAAkB,qBAErB3+B,KAAK+G,aAAaP,QAAQxG,KAAK2+B,gBAAkB,qBAAqBqI,QACtE,KACNznC,MAAA4C,IAAInC,KAAM,sBAAuB2uC,GAAwC,MACzEpvC,MAAA4C,IAAInC,KAAM,iBAAkB,KACxBqc,EAASggB,QARjB,CAAA2S,EAAAz2B,KAAA;AAAA,MAAA,GAScq2B,EAAmB,CACrB,YACA,YACA,aACA,aACA,YACA,YACA,qBAEEtS,EAAgBp5B,KAAKwD,MAAM2V,EAASggB,SACrCr8B,KAAKivC,oBAnBlB,CAAAD,EAAAz2B,KAAA;AAAA,MAAA,OAAAy2B,EAAAz2B,KAAA,EAmB6CvY,KAAKkvC;AAnBlD,KAAA,EAoBQrwC,OAAOswC,QAAQ7S,GAAe11B,SAAQ,SAACud,GACnC,IAAM4O,EAAc6b,EAAiB9sC,SAASqiB,EAAO,IAC/C4qB,EAAKK,gBAAgBjrB,EAAO,IAC5BA,EAAO;AAEb,GAAIA,EAAO,GAAGriB,SAAS,KAAM,CACzB,IAAMwoB,EAAWnG,EAAO,GAAG1U,MAAM,KAC7B4/B,EAAS/kB,EAASpX,OAAS,EAAI,EAAI;AACvC67B,EAAK3K,eAAe9Z,EAAS+kB,GAAU,IAAM/kB,EAAS+kB,EAAS,GAAK,KAChEtc,OAEJgc,EAAK3K,eAAejgB,EAAO,IAAM4O,KAGnC0M,EAAoB5gC,OAAO8H,KAAK21B,GAAenY,QAAO,SAACmrB,GAAD,OAAOA,EAAExtC,SAAS,QACxE+sC,EAAgBhwC,OAAO8H,KAAK21B,GAAenY,QAAO,SAACmrB,GAAD,OAAQA,EAAExtC,SAAS,QAE3EvC,MAAA4C,IAAInC,KAAM,cAAeqc,EAASikB,aAClC/gC,MAAA4C,IAAInC,KAAM,cAAe6uC,EAAclxB,KAAK,KAAO,cACnDpe,MAAA4C,IAAInC,KAAM,oBAAqBy/B,EAAkB9hB,KAAK;AAvC9D,KAAA,GAyCQtB,EAASwI,OAAOtlB,MAAA4C,IAAInC,KAAM,cAAeqc,EAASwI,OAClDxI,EAASoqB,OACHqI,EAAY5rC,KAAKwD,MAAM2V,EAASoqB,MACjC5kB,KAAI,SAAC0tB,GAAD,OAASA,EAAI1iC,QACjB8Q,KAAK,KACV3d,KAAKokC,eAAL,QAAiC0K,EACjC9uC,KAAKokC,eAAL,MAA+B0K,GAEnCvvC,MAAA4C,IAAInC,KAAM,cAAoC,YAArBqc,EAASqqB,SAClCnnC,MAAA4C,IAAInC,KAAM,YAAkC,UAArBqc,EAASqqB,SAChCnnC,MAAAypB,qBAAqBhpB,KAAM;AAnD/B,KAAA,GAAA,IAAA,MAAA,OAAAgvC,EAAA51B,UAAAs1B,EAAA1uC,qFAsDA,SAAgBjB,GACZ,OAAQA,GACJ,IAAK,YACD,OACI,EAAA4gB,EAAAzgB,WAASswC,QAAQ,WAAWr+B,OAAO,cACnC,KACA,EAAAwO,EAAAzgB,WAASuwC,MAAM,WAAWt+B,OAAO;AAEzC,IAAK,YACD,OACI,EAAAwO,EAAAzgB,WAASqW,SAAS,EAAG,QAAQi6B,QAAQ,WAAWr+B,OAAO,cACvD,KACA,EAAAwO,EAAAzgB,WAASqW,SAAS,EAAG,QAAQk6B,MAAM,WAAWt+B,OAAO;AAE7D,IAAK,aACD,OACI,EAAAwO,EAAAzgB,WAASswC,QAAQ,SAASr+B,OAAO,cACjC,KACA,EAAAwO,EAAAzgB,WAASuwC,MAAM,SAASt+B,OAAO;AAEvC,IAAK,aACD,OACI,EAAAwO,EAAAzgB,WAASqW,SAAS,EAAG,SAASi6B,QAAQ,SAASr+B,OAAO,cACtD,KACA,EAAAwO,EAAAzgB,WAASqW,SAAS,EAAG,SAASk6B,MAAM,SAASt+B,OAAO;AAE5D,IAAK,YACD,OACI,EAAAwO,EAAAzgB,WAASswC,QAAQ,QAAQr+B,OAAO,cAChC,KACA,EAAAwO,EAAAzgB,WAASuwC,MAAM,QAAQt+B,OAAO;AAEtC,IAAK,YACD,OACI,EAAAwO,EAAAzgB,WAASqW,SAAS,EAAG,QAAQi6B,QAAQ,QAAQr+B,OAAO,cACpD,KACA,EAAAwO,EAAAzgB,WAASqW,SAAS,EAAG,QAAQk6B,MAAM,QAAQt+B,OAAO;AAE1D,IAAK,oBACD,OAAOnR,KAAKivC;AAChB,QACI,OACI,EAAAtvB,EAAAzgB,WAASswC,QAAQ,WAAWr+B,OAAO,cACnC,KACA,EAAAwO,EAAAzgB,WAASuwC,MAAM,WAAWt+B,OAAO,8EAKjD,SAAAu+B,IAAA,IAAAC,EAAAC,EAAAC;AAAA,OAAAh4B,mBAAAO,MAAA,SAAA03B,GAAA,OAAA,OAAAA,EAAAx3B,KAAAw3B,EAAAv3B,MAAA,KAAA,EAAA,GACQo3B,EAAgB3vC,KAAKkN,MAAM6iC,QAAQ,gBACnCxwC,MAAAqT,QAAQ+8B,GAFhB,CAAAG,EAAAv3B,KAAA;AAAA,MAAA,OAAAu3B,EAAAv3B,KAAA,EAEsDvY,KAAKkN,MAAM8iC,QAAQ;AAFzE,KAAA,EAEgCL,EAFhCG,EAAA92B;AAAA,KAAA,EAAA,IAGQzZ,MAAAqT,QAAQ+8B,GAHhB,CAAAG,EAAAv3B,KAAA;AAAA,MAAA,OAAAu3B,EAAAt3B,OAAA,SAIgBxY,KAAKivC,qBACT,EAAAtvB,EAAAzgB,WAASswC,QAAQ,SAASr+B,OAAO,cACjC,KACA,EAAAwO,EAAAzgB,WAASuwC,MAAM,SAASt+B,OAAO;AAP3C,KAAA,EAAA,GASUy+B,GAAc,EAAAjwB,EAAAzgB,WAASiS,OAAO,cAC9B0+B,EAAiBF,EAAcxrB,QAAO,SAAC8rB,GACzC,OAAOA,EAAOC,mBAAqBN,GAAeK,EAAOE,iBAAmBP,MAE5ErwC,MAAAqT,QAAQi9B,GAbhB,CAAAC,EAAAv3B,KAAA;AAAA,MAAA,OAAAu3B,EAAAt3B,OAAA,SAcgBxY,KAAKivC,qBACT,EAAAtvB,EAAAzgB,WAASswC,QAAQ,SAASr+B,OAAO,cACjC,KACA,EAAAwO,EAAAzgB,WAASuwC,MAAM,SAASt+B,OAAO;AAjB3C,KAAA,GAmBInR,KAAKivC,oBACDY,EAAe,GAAGK,kBAAoB,IAAML,EAAe,GAAGM;AApBtE,KAAA,GAAA,IAAA,MAAA,OAAAL,EAAA12B,UAAAs2B,EAAA1vC,kHAuBA,SAAAowC,EAAqBhsB,GAArB,IAAAisB;AAAA,OAAAx4B,mBAAAO,MAAA,SAAAk4B,GAAA,OAAA,OAAAA,EAAAh4B,KAAAg4B,EAAA/3B,MAAA,KAAA,EAAA,OAAA+3B,EAAA/3B,KAAA,EACyBvY,KAAKkN,MAAM7J,MAAM,UAAW,CAAEM,GAAIygB,EAAQzgB;AADnE,KAAA,EAAA,OACQ0sC,EADRC,EAAAt3B,KAAAs3B,EAAA93B,OAAA,SAEWjZ,MAAAN,IAAIoxC,EAAU;AAFzB,KAAA,EAAA,IAAA,MAAA,OAAAC,EAAAl3B,UAAAg3B,EAAApwC,wFAKA,SAAmBgV,GACf,OAAIA,EAAIsP,aACGtP,EAAIsP,aACJtP,EAAIoP,QACJpkB,KAAKuwC,eAAev7B,EAAIoP,SAExB,qDAIf,SAAiCoO,GAAwC,IAA9BlyB,EAA8BH,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAArB,KAAMy5B,EAAez5B,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAN,KAC3DqwC,EAAgBhe,EAAS3Q,KAAI,SAAC7M,GAAD,OAASzV,MAAAN,IAAI+V,EAAK,SAC7C6zB,EAAc7oC,KAAK6oC;AACzBA,EAAW,MAAY,MACvBA,EAAW,UAAe,EAE1BtpC,MAAAsnC,cAAc7mC,KAAK0jC,8BAA+B,CAC9C8M,cAAeA,EACfC,cAAe5H,EACftlC,KAAMvD,KAAKuD,KACXjD,OAAQA,EACRs5B,OAAQA,EACR8W,SAAU1wC,KAAK4kC,eAEnBrlC,MAAA4C,IAAInC,KAAM,+BAA+B,gCAG7C,SAAc2wC,GAEO,aAAbA,GACA3wC,KAAKyhC,UAAUmE,UAAU,CAAC,wCACZ,aAAd5lC,KAAKuD,OAELvD,KAAK4wC,kBAAmB,GAIX,aAAbD,GADmB,CAAC,WAAY,WACY7uC,SAAS9B,KAAKuD,OAC1DvD,KAAKo6B,QAAQC,iBAAiB,uDAGtC,SAAwBjtB,GACpB,GAAa,UAATA,EACA,OAAQpN,KAAK6wC,qBAAuB,CAAEhvC,KAAM,KAAMmqC,GAAI;AAIrDhsC,KAAK6wC,qBAAqBhvC,QAC3B,EAAA8d,EAAAzgB,SAAOkO,GAAMqH,SAASzU,KAAK6wC,qBAAqBhvC,QAEhD7B,KAAK6wC,qBAAL,KAAoCzjC,GAGnCpN,KAAK6wC,qBAAqB7E,MAAM,EAAArsB,EAAAzgB,SAAOkO,GAAMkI,QAAQtV,KAAK6wC,qBAAqB7E,MAChFhsC,KAAK6wC,qBAAL,GAAkCzjC,2DAI1C,SAAA0jC,EAAgBte,EAAU7N,GAA1B,IAAAosB,EAAAzH,EAAA0H,EAAA/Q,EAAAgR,EAAAhwC,EAAAiwC,EAAAC,EAAAC,EAAArkB,EAAAskB,EAAAlxC;AAAA,OAAA0X,mBAAAO,MAAA,SAAAk5B,GAAA,OAAA,OAAAA,EAAAh5B,KAAAg5B,EAAA/4B,MAAA,KAAA,EAAA,OAAkCw4B,EAAlCM,EAAAn+B,OAAA,QAAAwR,IAAA2sB,EAAA,GAAAA,EAAA,GAAyC,WAAY/H,EAArD+H,EAAAn+B,OAAA,QAAAwR,IAAA2sB,EAAA,IAAAA,EAAA,GACUL,EAAkBhxC,KAAK0kC,QAAQ7iB,KAAI,SAAC4iB,GAAD,OAASA,EAAIE,iBAAehnB,KAAK,KACtEsiB,EAActb,EAAOtI,SACnB9c,MAAAN,IAAI0lB,EAAQ,oBACZqsB,GAEA,KACFC,EAAW,CAAE1tC,KAAMvD,KAAKuD,KAAMguC,aAActR,GAC5Ch/B,EAAOuxB,EAAStf,SAAWo2B,EAAkBtpC,KAAKiB,KAAOjB,KAAKgpC,gBARtEsI,EAAA/4B,KAAA,EASwBvY,KAAKqoC,YAAYmJ,iBACjCvwC,EACAuxB,EACAye,EACAjxC,KAAK0kC,QACL/f,EACA2kB;AAfR,KAAA,EAAA,OASQ4H,EATRI,EAAAt4B,KAiBQm4B,EAAW,CAACD,IACZE,EAAepxC,KAAK2pC,mBACPz2B,OAAS,GACtBi+B,EAAS/pB,QAAQ,CACbqqB,MAAO,CAAElG,KAAM6F,GACfM,OAAQ,cAtBpBJ,EAAA/4B,KAAA,IAyBqB,EAAAo5B,EAAAC,uBAAsB5xC,KAAMmxC,EAAUJ,EAAM,GAAI,EAAGpsB;AAzBxE,KAAA,GAAA,OAyBQoI,EAzBRukB,EAAAt4B,KA2BQ1S,OAAOurC,SACP7xC,KAAK6xC,QAAQC,SAAS/kB,EAAM,mBA5BpCukB,EAAA94B,OAAA,SA8BWuU;AA9BX,KAAA,GAAA,IAAA,MAAA,OAAAukB,EAAAl4B,UAAA03B,EAAA9wC,uFAiCA,WAAkB,IAAA+xC,EAAA/xC,KACVgyC,EAAanzC,OAAO8H,KAAK3G,KAAKokC;AAClC,OAAK4N,EACkBA,EAAWnwB,KAAI,SAAChb,GACnC,IAAIorC,EAAeF,EAAK3N,eAAev9B;AACvC,GAAKorC,GAAiBF,EAAK7nC,MAAM+xB,YAAY8V,EAAKxuC,KAAMsD,GAAxD,CACA,IAAIrD,EAAQuuC,EAAK7nC,MAAM1G,MAAMuuC,EAAKxuC,KAAMsD,GAEpCqrC,EAAkBH,EAAKI,mBAAmBtrC,GAC1CurC,EAAmB;AAkCvB,OAhCIH,EAAanwC,SAAS,MACtBmwC,EAAaxiC,MAAM,KAAK7I,SAAQ,SAAC7H,GAC7BqzC,GACIL,EAAKtQ,UAAU4Q,SACI,aAAf7uC,EAAMkH,KAAsB4G,SAASvS,GAASA,EAC9CgzC,EAAKxuC,KACLsD,EACA,MACAkrC,EAAK9wC,MACL,QAEZmxC,EAAmBA,EAAiB7sC,MAAM,GAAI,KAE9C0sC,EAA8B,aAAfzuC,EAAMkH,KAAsB4G,SAAS2gC,GAAgBA,EAChEprC,EAAI/E,SAAS,KACbswC,GAAoBL,EAAKtQ,UAAU4Q,SAC/BJ,EACAF,EAAKxuC,KACLsD,EAAI4I,MAAM,KAAK,GACf,MACAsiC,EAAK9wC,MAGTmxC,GAAoBL,EAAKtQ,UAAU4Q,SAC/BJ,EACAF,EAAKxuC,KACLsD,EACA,MACAkrC,EAAK9wC,OAIV,CAACixC,EAAkB,KAAOE,OAGbjuB,QAAO,SAAClO,GAAD,OAAUA,KA5CjB,qCA+C5B,SAAmBpP,GACf,IAAIrD,EAAQxD,KAAKkK,MAAMwe,WAAW1oB,KAAKuD,MAAMolB,OAAO,OAAQ9hB;AAE5D,OAAI7G,KAAKL,KAAK2rB,OAAOtrB,KAAKuD,KAAO,IAAMsD,GAC5B7G,KAAKL,KAAK2C,EAAEtC,KAAKuD,KAAO,IAAMsD,GAC9BrD,GAASA,EAAM29B,gBACf39B,EAAM29B,gBACNt6B,EAAI/E,SAAS,KAEhB9B,KAAKL,KAAK2C,EAAEtC,KAAKuD,KAAO,IAAMsD,EAAI4I,MAAM,KAAK,IAC7C,MACAzP,KAAKL,KAAK2C,EAAEtC,KAAKuD,KAAO,IAAMsD,EAAI4I,MAAM,KAAK,IAG1C5I,yEAIf,SAAAyrC,EAA+B3tB,EAAQ1jB,GAAvC,OAAA4W,mBAAAO,MAAA,SAAAm6B,GAAA,OAAA,OAAAA,EAAAj6B,KAAAi6B,EAAAh6B,MAAA,KAAA,EAAAg6B,EAAAv4B,GACY2K,EAAOja,KADnB6nC,EAAAh6B,KAEa,eAFbg6B,EAAAv4B,GAAA,EASa,oBATbu4B,EAAAv4B,GAAA,EAmBa,iBAnBbu4B,EAAAv4B,GAAA,GAAA;AAAA;AAAA,KAAA,EAAA,OAAAu4B,EAAAh6B,KAAA,EAGyBvY,KAAKwoC,UACdxoC,KAAKuoC,mBACL5jB,EACA,SACA3kB,KAAK6kC;AAPrB,KAAA,EAAA,OAAA0N,EAAA/5B,OAAA,SAAA+5B,EAAAv5B;AAAA,KAAA,EAAA,OAUgBzZ,MAAAqT,QAAQ5S,KAAK6oC,YAAL,iBAAqC7oC,KAAK6oC,YAAL,QAV7D0J,EAAAh6B,KAAA,EAWyBvY,KAAKqoC,YAAYC,cAC1BtoC,KAAKuD,KACLtC,EACAjB,KAAK6oC,YACL7oC,KAAKod,KAAK6iB,YACVtb,EACA;AAjBhB,KAAA,EAAA,OAAA4tB,EAAA/5B,OAAA,SAAA+5B,EAAAv5B;AAAA,KAAA,GAAA,OAAAu5B,EAAAh6B,KAAA,GAoByBvY,KAAKmqC,YAAYxlB,GAAQ,EAAM3kB,KAAK6kC;AApB7D,KAAA,GAAA,OAAA0N,EAAA/5B,OAAA,SAAA+5B,EAAAv5B;AAAA,KAAA,GAAA,IAAA,MAAA,OAAAu5B,EAAAn5B,UAAAk5B,EAAAtyC,wFAwBA,SAAiB2kB,GAAQ,IAAA6tB,EAAAxyC;AACrB,IAAK2kB,EAAQ,MAAO;AACpB,IAAI0X,EAAU;AAUd,OATAx9B,OAAOswC,QAAQxqB,GAAQ/d,SAAQ,SAAC6rC,GACvBA,EAAM,KAEQ,aADPD,EAAKtoC,MAAM1G,MAAMgvC,EAAKjvC,KAAMkvC,EAAM,IACpC/nC,KACN2xB,EAAQ,wBAA0BoW,EAAM,GAAK,aAAeA,EAAM,GAElEpW,EAAQ,qBAAuBoW,EAAM,GAAK,KAAOA,EAAM,OAGxDpW,mCAGX,WAAoB,IAAAqW,EAAA1yC,KACV2yC,EAAc3yC,KAAK+G,aAAaP,QAAQxG,KAAKuD,KAAO,mBACtDmhC,EAAO7R,GAAO7yB,KAAKwkC;AACnBmO,IACAjO,EAAUiO,EAAYC,QAAO,SAACC,EAAK/M,GAC/B,IAAIgN,EAAeJ,EAAKlO,WAAW3/B,MAC/B,SAAC0F,GAAD,OAAYA,EAAOo6B,gBAAkBmB;AAGzC,OADIgN,GAAcD,EAAI3nC,KAAK4nC,GACpBD,IACR,KAEPtzC,MAAA4C,IAAInC,KAAM,UAAW0kC,kCAGzB,WACI,IAAI79B,EAAM7G,KAAK2+B,gBAAkB3+B,KAAK2+B,gBAAkB,gBAAkB3+B,KAAKuD,KAAO;AAClFsD,GAAKtH,MAAA4C,IAAInC,KAAM,kBAAmB6G;AACtC,IAAIksC,EAAc/yC,KAAKitC,oBAAoB+F,eAAensC;AAC1DtH,MAAA4C,IAAInC,KAAM,cAAqC,GAAtB+yC,EAAY7/B,OAAc6/B,EAAc/yC,KAAKkjC,4CAG1E,WACIljC,KAAKotC,eAAiBptC,KAAK2+B,gBACrB3+B,KAAK2+B,gBAAkB,eACvB3+B,KAAKuD,KAAO;AAClB,IAAI0vC,EAAajzC,KAAKitC,oBAAoB+F,eAAehzC,KAAKotC;CAEzD6F,EAAW//B,QAAUlT,KAAKkzC,aAC3B3zC,MAAA4C,IAAInC,KAAM,QAASA,KAAKmzC,gBAAgBnzC,KAAKkzC,cAG7CD,EAAW//B,SAAQlT,KAAKghB,MAAQhhB,KAAKozC,qBAAqBH,wCAMlE,SAAqBjyB,GACjB,IAEMqyB,EADarzC,KAAKyhC,UAAU/Y,WAAW1oB,KAAKuD,MAAMse,KAAI,SAACia,GAAD,OAAOA,EAAEjvB,QACvCjM,OAFZ,CAAC,mBAAoB;AAKvC,OAFsBogB,EAAMmD,QAAO,SAACqG,GAAD,OAAU6oB,EAAWvxC,SAAS0oB,EAAKyb,0CAK1E,SAAa5J,EAASiX,GAClB,GAAKA,EACL,IAAK,IAAMzsC,KAAOysC,EAAO,CACrB,IAAMv0C,EAAQiB,KAAKuzC,cAAcD,EAAMzsC;AACnC9H,IAAOs9B,EAAQx1B,GAAO9H,iCAIlC,SAAcA,GACV,OAAOA,GAA0B,WAAjByD,GAAOzD,GAAqBQ,MAAAN,IAAIF,EAAO,MAAQA,2BAGnE,SAAUiW,GACNzV,MAAAN,IAAIe,KAAM,WACLknC,QAAQ3nC,MAAAN,IAAIe,KAAM,QAAQsC,EAAE,0BAC5B2C,KAAKjF,KAAKwzC,YAAYphB,KAAKpyB,KAAMgV,6DAG1C,SAAAy+B,EAAiBz+B,GAAjB,IAAAiD,EAAAszB;AAAA,OAAA1zB,mBAAAO,MAAA,SAAAs7B,GAAA,OAAA,OAAAA,EAAAp7B,KAAAo7B,EAAAn7B,MAAA,KAAA,EAAA,OACUN,GAAc,EAAAW,EAAAC,WAAU7Y,KAAKuD,MAAMuV,YACrCyyB,EAAO,IACNvrC,KAAKuD,KAAKuV,YAAc,CAAE+yB,kBAAmB,UAHtD6H,EAAAn7B,KAAA,EAIUvY,KAAK8rC,WAAW/mC,QAClB,OACA,IAAMkT,EAAc,IAAMjD,EAAIrR,GAAK,kBACnC,MACA4nC;AARR,KAAA,EAUIvrC,KAAKqkC,eACLrkC,KAAK2iB,QAAQmX,WAAW,UAAW95B,KAAKuD,KAAM;AAXlD,KAAA,EAAA,IAAA,MAAA,OAAAmwC,EAAAt6B,UAAAq6B,EAAAzzC,4GAcA,SAAA2zC,EAAc3+B,GAAd,IAAA4+B,EAAA3yC;AAAA,OAAA4W,mBAAAO,MAAA,SAAAy7B,GAAA,OAAA,OAAAA,EAAAv7B,KAAAu7B,EAAAt7B,MAAA,KAAA,EAAA,OACQq7B,EAAY5zC,KAAKyhC,UAAUqS,WAAW9+B,GAC1CzV,MAAA4C,IAAIyxC,EAAW,WAAY,CAAEG,gBAAgB,EAAMC,kBAAkB,IAFzEH,EAAAt7B,KAAA,EAGqBhZ,MAAAN,IAAIe,KAAM,QAAQykB;AAHvC,KAAA,GAGQxjB,EAHR4yC,EAAA76B,MAISi7B,cAAcL,GACnB5zC,KAAKglC,iBACLzlC,MAAA4C,IAAInC,KAAM,OAAQiB;AANtB,KAAA,EAAA,IAAA,MAAA,OAAA4yC,EAAAz6B,UAAAu6B,EAAA3zC,gHASA,SAAAk0C,EAAkBl/B,EAAKm/B,GAAvB,OAAAt8B,mBAAAO,MAAA,SAAAg8B,GAAA,OAAA,OAAAA,EAAA97B,KAAA87B,EAAA77B,MAAA,KAAA,EAAA,GACS47B,EADT,CAAAC,EAAA77B,KAAA;AAAA,MAAA,OAAA67B,EAAA57B,OAAA;AAAA,KAAA,EAAA,OAAA47B,EAAA77B,KAAA,EAEUvD,EAAImU;AAFd,KAAA,EAGInpB,KAAKqkC,eACLrkC,KAAK2iB,QAAQmX,WAAW,SAAU95B,KAAKuD,KAAM;AAJjD,KAAA,EAAA,IAAA,MAAA,OAAA6wC,EAAAh7B,UAAA86B,EAAAl0C,mHAOA,SAAAq0C,EAAmBr/B,EAAK4kB,GAAxB,IAAA3hB,EAAAhX;AAAA,OAAA4W,mBAAAO,MAAA,SAAAk8B,GAAA,OAAA,OAAAA,EAAAh8B,KAAAg8B,EAAA/7B,MAAA,KAAA,EAAA,OACQN,GAAc,EAAAW,EAAAC,WAAU7Y,KAAKuD,MAAMuV,YACnC7X,EAAO,IACNjB,KAAKuD,MAAmB,SAAXq2B,EAAoB,CAAEkG,QAAQ,GAAS,CAAEA,QAAQ,GAHvEwU,EAAAh8B,KAAA,EAAAg8B,EAAA/7B,KAAA,EAKcvY,KAAK8rC,WAAW/mC,QAClB,OACA,IAAMkT,EAAc,IAAMjD,EAAIrR,GAAK,kBACnC,MACA1C;AATZ,KAAA,EAWQ+T,EAAIjL,SAXZuqC,EAAA/7B,KAAA;AAAA;AAAA,KAAA,EAAA+7B,EAAAh8B,KAAA,EAAAg8B,EAAAt6B,GAAAs6B,EAAA,MAAA,GAaQt0C,KAAK2B,MAAM8mC,OAAX6L,EAAAt6B,IACAhF,EAAImjB;AAdZ,KAAA,GAAA,IAAA,MAAA,OAAAmc,EAAAl7B,UAAAi7B,EAAAr0C,KAAA,CAAA,CAAA,EAAA,mFAkBA,WACIT,MAAA4C,IAAInC,KAAM,eAAgB,IAC1BT,MAAA4C,IAAInC,KAAM,OAAQA,KAAKkN,MAAM7J,MAAMrD,KAAKuD,KAAMvD,KAAK6oC,8CAGvD,SAAiB7nB,GAAO,IAAAuzB,EAAAv0C;AACpB,OAAOghB,EACFa,KACG,SAAC5L,GAAD,OACKA,EAAKgwB,UAAUnkC,SAAS,aACnByyC,EAAKC,qBAAqBv+B,EAAKgwB,WAC/BhwB,EAAKgwB,YAAchwB,EAAKw+B,YAAc,IAAM,OAEzD92B,KAAK,+CAQd,SAA2BqD,GACvB,OAAOA,EACFa,KAAI,SAAC5L,GAAD,OAAWA,EAAKw+B,YAAc,IAAM,IAAM,cAAgBx+B,EAAKgwB,aACnEtoB,KAAK,yCAGd,SAAqB1H,GACjB,MAAY,oBAARA,EAAmC,KAC3B,qBAARA,EAAoC,oBACjCA,iCAGX,SAAgB+K,GACZ,GAAKA,EACL,OAAOA,EAAMvR,MAAM,KAAKoS,KAAI,SAAC5L,GACzB,MAAyB,KAAlBA,EAAK1Q,OAAO,GACb,CAAE0gC,UAAWhwB,EAAK1Q,MAAM,GAAI,GAAIkvC,aAAa,GAC7C,CAAExO,UAAWhwB,EAAMw+B,aAAa,kDAI9C,SAA6B9xC,GAAQ,IAAA+xC,EAAA10C,KAC3B20C,EAAa;AACnBhyC,EAAOiE,SAAQ,SAACguC,GACZA,EAASjyC,OAAOiE,SAAQ,SAACjF,GACrBgzC,EAAWjmB,WAAW,CAClBhjB,MAAOkpC,EAASlpC,MAChBlI,MAAO7B,EAAM6B,MACb4B,QAASzD,EAAMyD,gBAK3BuvC,EAAWpvC,MAAM,EAAG,GAAGqB,SAAQ,SAACjF,GAC5B,IAAM6B,EAAQkxC,EAAKxqC,MAAMwe,WAAWgsB,EAAKnxC,MAAMolB,OAAO,OAAQhnB,EAAM6B,OAC9D4B,EAAUsvC,EAAK/0C,KAAK2C,EAAE,oCAAqC,CAC7DoJ,MAAO/J,EAAM+J,MACblI,MAAOA,EAAM29B,gBACb/7B,QAASzD,EAAMyD;AAEnBsvC,EAAK1mB,cAAcrsB,MAAMyD,EAAS,CAC9B6oB,WAAW,OAIf0mB,EAAWzhC,OAAS,GACpBlT,KAAKguB,cAAcrsB,MACf3B,KAAKL,KAAK2C,EAAE,gCAAiC,CAAE4W,MAAOy7B,EAAWzhC,OAAS,IAC1E,CACI+a,WAAW,mEAM3B,SAAA4mB,IAAA,IAAA5zC,EAAA6zC,EAAAnyC,EAAAoyC,EAAA/0C;AAAA,OAAA6X,mBAAAO,MAAA,SAAA48B,GAAA,OAAA,OAAAA,EAAA18B,KAAA08B,EAAAz8B,MAAA,KAAA,EAAA,OAAAy8B,EAAAz8B,KAAA,EACuBhZ,MAAAN,IAAIe,KAAM;AADjC,KAAA,EAAA,GACUiB,EADV+zC,EAAAh8B,KAGQ87B,EAAev1C,MAAAktB,EAAE,IACjB9pB,EAASpD,MAAAktB,EAAE,IACfltB,MAAA4C,IAAInC,KAAM,SAAU2C,GAGpBmyC,EAAe7zC,EAAK4gB,IAAL,WAAA,IAAA3D,EAAAoF,GAAAzL,mBAAAC,MAAS,SAAAm9B,EAAOx0B,EAAQ/U,GAAf,OAAAmM,mBAAAO,MAAA,SAAA88B,GAAA,OAAA,OAAAA,EAAA58B,KAAA48B,EAAA38B,MAAA,KAAA,EAAA,IAChBhZ,MAAAN,IAAIwhB,EAAQ,sBADI,CAAAy0B,EAAA38B,KAAA;AAAA,MAAA,OAAA28B,EAAA38B,KAAA,EAEVkI,EAAO7K;AAFG,KAAA,EAAA,OAAAs/B,EAAA18B,OAAA,SAGTu8B,EAAKI,yBAAyB10B,EAAQ9d,EAAQ+I;AAHrC,KAAA,EAAA,IAAA,MAAA,OAAAwpC,EAAA97B,UAAA67B;AAAT,OAAA,SAAAG,EAAAC,GAAA,OAAAn3B,EAAAhe,MAAAF,KAAAG,YAAA,KAQXZ,MAAAqT,QAAQkiC,GAhBhB,CAAAE,EAAAz8B,KAAA;AAAA,MAAA,OAiBQvY,KAAKguB,cAAc8Z,QAAQ9nC,KAAKL,KAAK2C,EAAE,yBAA0B,CAC7D2rB,WAAW,IAlBvB+mB,EAAAx8B,OAAA;AAAA,KAAA,GAAA,OAAAw8B,EAAAz8B,KAAA,GAuBUtQ,QAAQ2iC,IAAIkK;AAvBtB,KAAA,GAyBQv1C,MAAAqT,QAAQjQ,GACR3C,KAAKguB,cAAcrkB,QAAQ3J,KAAKL,KAAK2C,EAAE,iBAAkB,CACrD2rB,WAAW,KAGf1uB,MAAA4C,IAAInC,KAAM,SAAU2C,GACpB3C,KAAKguB,cAAcrsB,MAAM3B,KAAKL,KAAK2C,EAAE,yBAA0B,CAC3D2rB,WAAW,IAEfjuB,KAAKs1C,6BAA6B3yC;AAlC1C,KAAA,GAAA,IAAA,MAAA,OAAAqyC,EAAA57B,UAAAy7B,EAAA70C,kFAsCA,WACI,IAAI2kB,EAASplB,MAAAN,IAAIe,KAAM;AAEvB,OADA2kB,EAAOE,MAAQ,MACR7kB,KAAKkN,MAAM7J,MAAMrD,KAAKuD,KAAMohB,0EAGvC,SAAA4wB,EAA+B90B,EAAQ9d,EAAQ+I,GAA/C,IAAAipC,EAAArX;AAAA,OAAAzlB,mBAAAO,MAAA,SAAAo9B,GAAA,OAAA,OAAAA,EAAAl9B,KAAAk9B,EAAAj9B,MAAA,KAAA,EAAA,GAAAi9B,EAAAl9B,KAAA,GAGY/Y,MAAAN,IAAIwhB,EAAQ,WAHxB,CAAA+0B,EAAAj9B,KAAA;AAAA,MAAA,OAAAi9B,EAAAj9B,KAAA,GAKyB,EAAA+gB,EAAAC,aAAY9Y,EAAQzgB;AAL7C,KAAA,EAAA,OAAAw1C,EAAAh9B,OAAA,SAAAg9B,EAAAx8B;AAAA,KAAA,EAOkB27B,EAAap1C,MAAAN,IAAIwhB,EAAQ,UAAUoB,KAAI,SAAClgB,GAC1C,MAAO,CAAE6B,MAAOjE,MAAAN,IAAI0C,EAAO,aAAcyD,QAAS7F,MAAAN,IAAI0C,EAAO,eAEjEgB,EAAO+rB,WAAW,CACdhjB,MAAOA,EAAQ,EACftG,QAAS7F,MAAAN,IAAIwhB,EAAQ,+BACrB9d,OAAQgyC;AAbxB,KAAA,EAAAa,EAAAj9B,KAAA;AAAA;AAAA,KAAA,GAAA,OAAAi9B,EAAAl9B,KAAA,GAAAk9B,EAAAx7B,GAAAw7B,EAAA,MAAA,IAiBclY,EAAMt9B,KAAK2B,MAAMwb,QAAXq4B,EAAAx7B,KACT,MAAYtO,EAAQ,EACvB/I,EAAO+rB,WAAW4O,GAnB1BkY,EAAAh9B,OAAA,SAoBe8kB;AApBf,KAAA,GAAA,IAAA,MAAA,OAAAkY,EAAAp8B,UAAAm8B,EAAAv1C,KAAA,CAAA,CAAA,EAAA,sFAwBA,SAAa2kB,IAEa,WAAlBA,EAAOiV,QACY,WAAlBjV,EAAOiV,QAAuBjV,EAAOja,OAAS1K,KAAKuD,OAEpDvD,KAAKqkC,eAEa,kBAAlB1f,EAAOiV,QAA8BjV,EAAOja,OAAS1K,KAAKuD,MAC1DvD,KAAKy1C,oBAEa,WAAlB9wB,EAAOiV,QAAuBjV,EAAOja,OAAS1K,KAAKuD,MAAQohB,EAAOlE,QAClEzgB,KAAK2nC,UAAUhjB,EAAOlE,QACJ,YAAlBkE,EAAOiV,QAAwBjV,EAAOja,OAAS1K,KAAKuD,MAAQohB,EAAOlE,QACnEzgB,KAAK4nC,WAAWjjB,EAAOlE,mDAO/B,SAA4BkE,GACxB9lB,OAAO8H,KAAKge,GAAQ/d,SAAQ,SAACC,GACzB,GAAIA,EAAI/E,SAAS,KAAM,CACnB,IAAM4zC,EAAc7uC,EAAI4I,MAAM,KAAK;AAC/BimC,KAAe/wB,IACfA,EAAO+wB,EAAc,QAAU/wB,EAAO+wB,UAC/B/wB,EAAO+wB,oEAK9B,SAAAC,EAAoBnjB,GAApB,IAAAra,EAAAnP,EAAA4sC,EAAA/iC,EAAAgjC,EAAAC,EAAA91C;AAAA,OAAA6X,mBAAAO,MAAA,SAAA29B,GAAA,OAAA,OAAAA,EAAAz9B,KAAAy9B,EAAAx9B,MAAA,KAAA,EAAA,GACQJ,EAAOqa,EAAStf,OAAS,EAAIsf,EAAWxyB,KAAKiB,KAAKwjB,UAD1D,CAAAsxB,EAAAx9B,KAAA;AAAA,MAAA,OAAAw9B,EAAAv9B,OAAA;AAAA,KAAA,EAAA,OAKQxP,EAAIzJ,MAAAkG,KAAAuwC,QACJJ,EAAO,GACP/iC,EAAI,EACJgjC,EAAc19B,EAAKjF,OAR3B6iC,EAAAx9B,KAAA,EASUtQ,QAAQ2iC,IACVzyB,EAAK0J,IAAL,WAAA,IAAAgC,EAAAP,GAAAzL,mBAAAC,MAAS,SAAAm+B,EAAOjhC,GAAP,IAAAkhC,EAAAC;AAAA,OAAAt+B,mBAAAO,MAAA,SAAAg+B,GAAA,OAAA,OAAAA,EAAA99B,KAAA89B,EAAA79B,MAAA,KAAA,EAAA,GACAvD,EAAIxM,UAAawM,EAAIqhC,cAAiBrhC,EAAIsP,aAD1C,CAAA8xB,EAAA79B,KAAA;AAAA,MAAA,OAEDs9B,IAFCO,EAAA59B,OAAA;AAAA,KAAA,EAAA,OAAA49B,EAAA79B,KAAA,EAMuBu9B,EAAKQ,mBAAmBthC;AAN/C,KAAA,EAMDkhC,EANCE,EAAAp9B,KAODm9B,EAAM,GAEND,IAEgC,WAA5B32C,MAAA6I,OAAO8tC,IACqB,aAA5B32C,MAAA6I,OAAO8tC,IAEPC,EAAI/xB,QAAUlhB,KAAKwD,MAAMwvC,EAAgB5xB,cACrC6xB,EAAI/xB,UAAS+xB,EAAI/xB,QAAQyV,MAAQt6B,MAAAN,IAAIi3C,EAAiB,WAE1DC,EAAI/xB,QAAUlhB,KAAKwD,MAAMwvC,GACzBC,EAAI/xB,QAAQyV,MAAQ7kB,EAAInI,KAAOmI,EAAInI,KAAO,OAG9CmI,EAAIxM,WAAU2tC,EAAII,UAAYrzC,KAAKwD,MAAMsO,EAAIxM,WAC7CwM,EAAIqhC,eAAcF,EAAIK,QAAUtzC,KAAKwD,MAAMsO,EAAIqhC,eACnDF,EAAIM,OAASzhC,EAAI0hC,KACXn3C,MAAAN,IAAI+V,EAAI0hC,KAAM,YAAc,IAAMn3C,MAAAN,IAAI+V,EAAI0hC,KAAM,aAChD,KAENd,EAAK1qC,KAAKirC,KAEJtjC,IAAMgjC,IACJ7gC,EAAIqhC,cAAgBrhC,EAAIxM,SACxBjJ,MAAA4C,IAAI2zC,EAAM,kBAAmBF,GAE7Br2C,MAAA4C,IAAI2zC,EAAM,kBAAmBF,GAGjC5sC,EAAEtD;AApCD,KAAA,GAAA,IAAA,MAAA,OAAA0wC,EAAAh9B,UAAA68B;AAAT,OAAA,SAAAU,GAAA,OAAA9yB,EAAA3jB,MAAAF,KAAAG,YAAA;AAVR,KAAA,EAAA,OAkDIZ,MAAA4C,IAAInC,KAAM,mBAAmB,GAlDjC+1C,EAAAv9B,OAAA,SAmDWxP;AAnDX,KAAA,GAAA,IAAA,MAAA,OAAA+sC,EAAA38B,UAAAu8B,EAAA31C,2FAsDA,SAAsBwsC,EAAOjpC,EAAM4oC,GAAQ,IAAAyK,EAAA52C,KACjC8hB,EAAO9hB,KAAKL,KAAK2C,EAAE,qCAAsC,CAAEkqC,MAAOA;AACxE,OAAOL,EAAOvlC,SAAQ,SAACiwC,GACnB,OAAOD,EAAKnV,UAAUl4B,KAAK,CACvB1I,OAAQ,MACRC,IAAKyC,EAAO,KAAOszC,EACnB51C,KAAMiC,KAAKC,UAAU,CAAE2zC,SAAUh1B,8CAvmDA9F,EAAAA;4CAA5BimB;;;;;;;;;;;;;;ACnDrB,IAAM9lB,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,0hOAAAzZ,KAAA,CAAA0Z,WAAA,qDAMPw6B;;;;;;8KAOjB,WACI,QAAK/2C,KAAKg8B,KAAKz6B,KAAK,CAACvB,KAAKod,KAAK7Z,KAAO,aACjCvD,KAAKod,KAAK45B,eACXh3C,KAAKod,KAAK65B,gBAAkBj3C,KAAKod,KAAK65B,gBAAkBj3C,KAAKod,KAAKpI,IAAI1U,WAErEN,KAAKod,KAAKpI,IAAIkiC,YACZl3C,KAAKod,KAAK45B,YAAYvnC,MAAM,KAAK3N,SAAS,iCAGrD,WACI,QAAK9B,KAAKod,KAAK45B,aACRh3C,KAAKod,KAAK45B,YAAYvnC,MAAM,KAAK3N,SAAS,mCAGrD,WACI,QAAK9B,KAAKg8B,KAAKz6B,KAAK,CAACvB,KAAKod,KAAK7Z,KAAO,eACjCvD,KAAKod,KAAK45B,eACVh3C,KAAKod,KAAKpI,IAAIkiC,cACdl3C,KAAKod,KAAKpI,IAAImiC,aACZn3C,KAAKod,KAAK45B,YAAYvnC,MAAM,KAAK3N,SAAS,oCAGrD,WACI,QAAK9B,KAAKod,KAAK45B,aACRh3C,KAAKod,KAAK45B,YAAYvnC,MAAM,KAAK3N,SAAS,kCAGrD,WACI,QAAK9B,KAAKg8B,KAAKz6B,KAAK,CAAC,IAAMvB,KAAKod,KAAK7Z,KAAO,UAAWvD,KAAKod,KAAK7Z,KAAO,+BAK5E,WACI,MAAiD,WAA1ChE,MAAAN,IAAIe,KAAKod,KAAKpI,IAAK,6CAG9B,WACI,MAAiD,YAA1CzV,MAAAN,IAAIe,KAAKod,KAAKpI,IAAK,iDAG9B,WACI,OACIzV,MAAAN,IAAIe,KAAKod,KAAKpI,IAAK,2BACnBhV,KAAKH,MAAM0B,KAAK,oDAIxB,SACQmmC,GACJ,IAAI0P,EAAiB1P,EAAM;AAC3B,GAAI1nC,KAAKod,KAAKg6B,GAAiB,OAAOp3C,KAAKod,KAAKg6B,GAAgBp3C,KAAKod,KAAKpI;AAEtEhV,KAAKod,KAAKi6B,eAAer3C,KAAKod,KAAKi6B,cAAc3P,EAAK1nC,KAAKod,KAAKpI,wCA5DlBgH,EAAAA;0CAArC+6B;;;;;;;;;;;;;;ACNrB,IAAM56B,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,80QAAAzZ,KAAA,CAAA0Z,WAAA,kDAKP+6B;;;;;;+HAIjB,WACI,OAAKt3C,KAAKod,KAAKoV,UACRxyB,KAAKod,KAAKoV,SAAStf,OAAS,EAAI,GADP,wCAIpC,WACI,QAAKlT,KAAKkK,MAAM+xB,YAAYj8B,KAAKod,KAAK7Z,KAAM,YAChCvD,KAAKkK,MAAM1G,MAAMxD,KAAKod,KAAK7Z,KAAM,UAE/B8K,SAASkpC,wCAG3B,WACI,QAAKv3C,KAAKw3C,iBACHx3C,KAAKod,KAAKgpB,YAAYzd,OAAO,KAAM,kCAG9C,WACI,OACI3oB,KAAKg8B,KAAKz6B,KAAK,CAACvB,KAAKod,KAAK7Z,KAAO,eACjCvD,KAAKg8B,KAAKz6B,KAAK,CAACvB,KAAKod,KAAK7Z,KAAO,gDAIzC,WAAuB,IAAAk0C;AACnB,QAAO,QAAAA,EAAAz3C,KAAKod,KAAKs6B,sBAAV,IAAAD,IAAAA,EAA0BE,gBAC3B33C,KAAKod,KAAKs6B,eAAeC,uCAInC,WAEQ33C,KAAKod,KAAK6sB,WAAWjqC,KAAKod,KAAK6sB,+CApCajuB,EAAAA;0CAAnCs7B;;ACLrB,IAAMn7B,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,2QAAAzZ,KAAA,CAAA0Z,WAAA,8EAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,sdAAAzZ,KAAA,CAAA0Z,WAAA,kFAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,8cAAAzZ,KAAA,CAAA0Z,WAAA,+EAGbhd,MAAAid;;;;;;;;;;;;;;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,6/JAAAzZ,KAAA,CAAA0Z,WAAA,0DAKPq7B;;;AAKjB,SAAAA,IAAc,IAAA9yC;AAAA,OAAAyZ,EAAAve,KAAA43C,GAAAp5B,EAAAC,EACV3Z,EAAA7E,EAAAC,MAAAF,KAASG,YADC,eAAAue,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,QAAA6Z,EAAAF,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,UAAA8Z,EAAAH,EAAA3Z,IAENA,EAAKsY,KAAKknB,mBACVx/B,EAAKoI,MACA7J,MAAM,iBAAkB,CAAEqzC,KAAM5xC,EAAKlF,QAAQk0B,YAAYnwB,KACzDsB,MAAK,SAAC4yC,GAAD,OACF/yC,EAAKgzC,oBAAoBD,EAAW/yC,EAAKsY,KAAKknB,kBAAkB3gC,OANlEmB,oCAWd,WACI,OAAO9E,KAAKod,KAAKsnB,mCAGrB,WACI,IAAMqT,EAAa/3C,KAAK0kC,QAAQ7iB,KAAI,SAAC4iB,GAAD,OAASA,EAAIE;AACjD,OAAO3kC,KAAKod,KAAKonB,WAAWrgB,QAAO,SAAC2hB,GAAD,OAAaiS,EAAWj2C,SAASgkC,EAAOnB,+CAG/E,SACcn/B,EAAQwyC,GACbA,GACDxyC,GAAUwyC,IACdh4C,KAAKi4C,mBAAmBj4C,KAAK0kC,QAAS1kC,KAAK0kC,QAAQsT,GAAUxyC,EAASwyC,GACtEh4C,KAAKod,KAAKmnB,eAAevkC,KAAK0kC,SAC9B1kC,KAAKk4C,SAASl4C,KAAK0kC,iCAGvB,SACQD,EAAK0T,GACTn4C,KAAKi4C,mBAAmBj4C,KAAK0kC,QAASD,EAAK0T,GAC3Cn4C,KAAKod,KAAKmnB,eAAevkC,KAAK0kC,SAC9B1kC,KAAKk4C,SAASl4C,KAAK0kC,mCAGvB,SACWD,GACPzkC,KAAK0kC,QAAQrW,aAAaoW,GAC1BzkC,KAAKod,KAAKmnB,eAAevkC,KAAK0kC,SAC9B1kC,KAAKk4C,SAASl4C,KAAK0kC,mCAGvB,SACWD,GACPzkC,KAAK0kC,QAAQhW,WAAW+V,GACxBzkC,KAAKod,KAAKmnB,eAAevkC,KAAK0kC,SAC9B1kC,KAAKk4C,SAASl4C,KAAK0kC,uCAGvB,SACesI,GACXhtC,KAAKod,KAAKg7B,eAAepL,qCAG7B,WACqB,IAAAn2B,EAAA7W,KAEX0kC,EADc1kC,KAAK+G,aAAaP,QAAQxG,KAAKod,KAAK7Z,KAAO,mBACnCqvC,QAAO,SAACC,EAAK/M,GACrC,IAAIgN,EAAej8B,EAAKuG,KAAKonB,WAAW3/B,MACpC,SAAC0F,GAAD,OAAYA,EAAOo6B,gBAAkBmB;AAGzC,OADIgN,GAAcD,EAAI3nC,KAAK4nC,GACpBD,IACR;AACH7yC,KAAK+G,aAAaI,WAAWnH,KAAKod,KAAKuhB,gBAAkB,oBACzD3+B,KAAKod,KAAKmnB,eAAeG,GACzBnlC,MAAA4C,IAAInC,KAAM,kBAAmB,sCAGjC,SACiBqc,GAAU,IAAAoH,EAAAzjB,KACjB0kC,EAAUroB,EAASqoB,QAAQj1B,MAAM,KAAKmjC,QAAO,SAACyF,EAAavS,GAC7D,IAAIgN,EAAervB,EAAKrG,KAAKonB,WAAW3/B,MACpC,SAAC0F,GAAD,OAAYA,EAAOo6B,gBAAkBmB;AAGzC,OADIgN,GAAcuF,EAAYntC,KAAK4nC,GAC5BuF,IACR;AACHr4C,KAAK+G,aAAaO,QAAQtH,KAAKod,KAAKuhB,gBAAkB,mBAAoB,CACtE+F,QAASroB,EAASqoB,QAClB73B,KAAMwP,EAASxP,KACflJ,GAAI0Y,EAAS1Y,KAEjB3D,KAAKod,KAAKmnB,eAAeG,qCAG7B,SAAmBp1B,EAAKm1B,EAAKnd,GACzB,IAAI5b,EAAQ4D,EAAI3G,QAAQ87B;AACxBn1B,EAAI+e,aAAaoW;AACjB,IAAI6T,EAAW5sC,EAAQ4b;AACvBgxB,EAAWA,EAAWhpC,EAAI4D,OAAS,EAAIolC,EAAW,EAAIhpC,EAAI4D,OAASolC,EACnEhpC,EAAIipC,SAASD,EAAU7T,2BAG3B,SAASC,GACD1kC,KAAK+G,aAAaP,QAAQxG,KAAKod,KAAK7Z,KAAO,sBAAwBvD,KAAKod,KAAKo7B,WAEjFx4C,KAAK+G,aAAaO,QACdtH,KAAKod,KAAK7Z,KAAO,kBACjBmhC,EAAQ7iB,KAAI,SAACikB,GAAD,OAAYA,EAAOnB,iBAAexgB,QAAO,SAAClO,GAAD,OAAUA,yCAIvE,SAAoB4hC,EAAWl0C,GAC3BpE,MAAA4C,IAAInC,KAAM,kBAAmB63C,EAAUzb,SAAS,KAAMz4B,GAAIyiB,gDA9GHpK,EAAAA;0CAA1C47B;ACLrB,IAAMz7B,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,+QAAAzZ,KAAA,CAAA0Z,WAAA,8EAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,iTAAAzZ,KAAA,CAAA0Z,WAAA,yFAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,yTAAAzZ,KAAA,CAAA0Z,WAAA,gFAGbhd,MAAAid;;;;;;;;;;;;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,wgGAAAzZ,KAAA,CAAA0Z,WAAA,sDAIPk8B;;;yFACjB,WACI,OAAO,EAAA1wB,EAAAC,+CAF4ChM,EAAAA;0CAAtCy8B;ACJrB,IAAMt8B,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,4wBAAAzZ,KAAA,CAAA0Z,WAAA,qFAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,oeAAAzZ,KAAA,CAAA0Z,WAAA,2FAGbhd,MAAAid;;;;;;;;;;;;;;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,qtBAAAzZ,KAAA,CAAA0Z,WAAA,+CAOPm8B;;;AAIjB,SAAAA,IAAc,IAAA5zC;AAAA,OAAAyZ,EAAAve,KAAA04C,GAAAl6B,EAAAC,EACV3Z,EAAA7E,EAAAC,MAAAF,KAASG,YADC,YAAAue,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,WAAA6Z,EAAAF,EAAA3Z,IAEVA,EAAK6zC,cAFK7zC,uCAKd,WACI9E,KAAKm+B,WAAan+B,KAAKm+B,iEAG3B,SAAApmB,IAAA,IAAAlR,EAAA+xC,EAAAzwC;AAAA,OAAA0P,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,OACU1R,EAAM,eAAiBgJ,OAAO2B,SAC9BonC,EAFV,8CAAAh4C,OAEkEiG,EAFlE,SAAAwR,EAAAE,KAAA,GAIyB,EAAAQ,EAAA7Z,SAAM05C,EAAS,CAAE5zC,SAAU;AAJpD,KAAA,EAAA,IAIQmD,EAJRkQ,EAAAW,MAKkB6zB,GALlB,CAAAx0B,EAAAE,KAAA;AAAA,MAAA,OAAAF,EAAAG,OAAA,SAK8BxY,KAAK64C,SAAL,wBAAAj4C,OAAwCiG;AALtE,KAAA,EAAA,OAAAwR,EAAA2B,GAAAza,MAAAua,OAAAzB,EAAAE,KAAA,GAOmCpQ,EAAS2Z;AAP5C,KAAA,GAAAzJ,EAAA8wB,GAAA9wB,EAAAW,KAOIhZ,KAAK64C,SAPTxgC,EAAA2B,GAAA+G,SAAAjW,KAAAuN,EAAA2B,GAAA3B,EAAA8wB;AAAA,KAAA,GAAA,IAAA,MAAA,OAAA9wB,EAAAe,UAAArB,EAAA/X;;qKAbiDgc,EAAAA;0CAAhC08B;ACPrB,IAAMv8B,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,o3BAAAzZ,KAAA,CAAA0Z,WAAA,sFAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,4nBAAAzZ,KAAA,CAAA0Z,WAAA,+EAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,4TAAAzZ,KAAA,CAAA0Z,WAAA,oFAGbhd,MAAAid;;;;;;;;;;;;;;ACHf,gBAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,2VAAAzZ,KAAA,CAAA0Z,WAAA,mDAIPu8B;;;kGACjB,WAEQ94C,KAAKod,KAAKwc,QAAQ55B,KAAKod,KAAKwc,4CAHgB5d,EAAAA;0CAAnC88B;ACJrB,IAAM38B,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,qgIAAAzZ,KAAA,CAAA0Z,WAAA,+EAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,2bAAAzZ,KAAA,CAAA0Z,WAAA,qFAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,4UAAAzZ,KAAA,CAAA0Z,WAAA,mFAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,kTAAAzZ,KAAA,CAAA0Z,WAAA,8EAGbhd,MAAAid;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,6TAAAzZ,KAAA,CAAA0Z,WAAA,kDASPw8B;;;AAIjB,SAAAA,IAAc,IAAAj0C;AAAA,OAAAyZ,EAAAve,KAAA+4C,GAAAv6B,EAAAC,EACV3Z,EAAA7E,EAAAC,MAAAF,KAASG,YADC,aAAAue,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,SAAA6Z,EAAAF,EAAA3Z,IAAAA,mEAQd,SAAAiT,IAAA,IAAAihC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC;AAAA,OAAAxhC,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,OAEQygC,EAAOh5C,KAAKs5C,mBACZL,EAASj5C,KAAKu5C,YACZL,EAAWl5C,KAAKw5C,YAAYP,EAAQD,GAJ9C3gC,EAAAE,KAAA,EAM4BvY,KAAK8rC,WAAW/mC,QAAQ,QAAS,YAAa,OAAQ,CAC1Ei0C,KAAME;AAPd,KAAA,EAAA,OAMUC,EANV9gC,EAAAW,KAAAX,EAAAE,KAAA,EASyB4gC,EAAUr3B;AATnC,KAAA,EAAA,GASUs3B,EATV/gC,EAAAW,KAWUqgC,EAAI/yC,OAAOmzC,KAAK,eAX1B,CAAAphC,EAAAE,KAAA;AAAA,MAAA,OAAAF,EAAAG,OAAA;AAAA,KAAA,GAcI6gC,EAAEx5B,SAAS45B,OACXJ,EAAEx5B,SAAS65B,MAAMN,GACjBC,EAAEx5B,SAASma;AAhBf,KAAA,GAAA,IAAA,MAAA,OAAA3hB,EAAAe,UAAArB,EAAA/X;;kKAqBA,WAAmB,IAAA6W,EAAA7W,KACT25C,EAAS;AAIf,OAHA35C,KAAKod,KAAKoV,SAAS5rB,SAAQ,SAACoO,GACxB2kC,EAAOzuC,KAAK2L,EAAKuG,KAAKw8B,UAAY5kC,EAAIrR,OAEnCg2C,2BAKX,WACI,MAA2B,gBAAvBt4C,EAAAA,QAAOC,aAAwD,SAAvBD,EAAAA,QAAOC,YACxC,4BAEiC,MAAjCD,EAAAA,QAAO6C,IAAI21C,QAAQt0C,OAAO,GAC3BlE,EAAAA,QAAO6C,IAAI21C,QACXx4C,EAAAA,QAAO6C,IAAI21C,QAAU,+BAInC,SAAYZ,EAAQD,GAChB,IADsBnc,EAChBttB,EAAMhQ,MAAAktB,EAAE,IADQqQ,EAAAC,EAEJic;AAFI,IAEtB,IAAAlc,EAAAjjB,MAAAgjB,EAAAC,EAAAnjB,KAAAqjB,MAAwB,CAAA,IACd8c,EAAUb,EAAS,IADLpc,EAAA99B,MAGdg7C,GAAa,EAAAC,EAAAC,gBAAeH;AAElCvqC,EAAImf,WAAW,CAAE5tB,IAAKi5C,KAPJ,MAAAzc,GAAAR,EAAA3V,EAAAmW,GAAA,QAAAR,EAAAS,IAStB,OAAOhuB,qCA9D+ByM,EAAAA;0CAAzB+8B;ACTrB,IAAM58B,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,0gBAAAzZ,KAAA,CAAA0Z,WAAA,kFAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,yxBAAAzZ,KAAA,CAAA0Z,WAAA,iFAGbhd,MAAAid;;;;;;;;;;;;;;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,86FAAAzZ,KAAA,CAAA0Z,WAAA,mEAIP29B;;;;;;gIAIjB,WACI,GAAIl6C,KAAKod,KAAKoxB,oBAAoB2L,UAAW,OAAO;AACpD,GAAIn6C,KAAKod,KAAK+pB,oBAAqB,CAC/B,IAAM9qB,EAAWrc,KAAKod,KAAKoxB,oBAAoB7lB,OAC3C,KACA3oB,KAAKod,KAAK+pB;AAEd,GAAI9qB,EAAU,OAAOA,EAASxP,KAElC,OAAO7M,KAAKL,KAAK2C,EAAE,mEAbmC0Z,EAAAA;0CAAzCk+B;;;;;;;;;;;;;ACJrB,gBAAM/9B,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,gPAAAzZ,KAAA,CAAA0Z,WAAA,8CAIP69B;;;kGACjB,WAEQp6C,KAAKod,KAAKwc,QAAQ55B,KAAKod,KAAKwc,4CAHY5d,EAAAA;0CAA/Bo+B;ACJrB,IAAMj+B,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,oqBAAAzZ,KAAA,CAAA0Z,WAAA,uFAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,ufAAAzZ,KAAA,CAAA0Z,WAAA,iFAGbhd,MAAAid;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,kqdAAAzZ,KAAA,CAAA0Z,WAAA,gDAYP89B,KAChB96C,MAAAC,OAAAC,QAAQ,wHAsERF,MAAAwB,SAAS;;;;;;kJAjED,+FAGT,WACI,OAAOf,KAAKod,KAAKk9B,6BAGrB,WACI,OAAOt6C,KAAKod,KAAKnc,MAAQ,4BAG7B,WACI,OAAOjB,KAAKiB,KAAKiS,SAAWlT,KAAKod,KAAKoV,SAAStf,6BAGnD,WACI,IAAIqnC,EAAU,CACV1tC,KAAM,GACNo5B,UAAW,WACXuU,QAASx6C,KAAKy6C,iBACdC,SAAU,GACVC,YAAY,EACZC,aAAa;AAYjB,OAVI56C,KAAKH,MAAM0B,KAAK,+BAChBg5C,EAAU,CACN1tC,KAAM,GACNo5B,UAAW,WACXuU,QAASx6C,KAAKy6C,iBACdtmB,MAAO,IACPwmB,YAAY,EACZC,aAAa,IAGd56C,KAAKod,KAAKsnB,QAAQ9jC,OAAO,CAAC25C,+BAGrC,WACI,OAAI,EAAAxyB,EAAAC,YAAmB,eACnBhoB,KAAKod,KAAK+pB,oBAA4B,aACnCnnC,KAAKod,KAAKsnB,QAAQxxB,OAAS,KAAOlT,KAAKod,KAAKwmB,YAAY1wB,OACzD,eACA,0CAGV,WACI,OAAOlT,KAAKod,KAAKsnB,QAAQxxB,OAAS,oCAGtC,WACI,OAAI,EAAA6U,EAAAC,aACGhoB,KAAKod,KAAKsnB,QAAQxxB,OAAS,GADX,gBACkC,mCAG7D,WACI,IAAIjS,EAAQ1B,MAAAqT,QAAQ5S,KAAKod,KAAKoV,UAAiCxyB,KAAKiB,KAA1BjB,KAAKod,KAAKoV;AAEpD,OAAKxyB,KAAKod,KAAKsnB,SAAY1kC,KAAKiB,MAEzB,EAAAktC,EAAAC,SAAQntC,EAAMjB,KAAKod,KAAKsnB,QAAS1kC,KAAKod,KAAK7Z,KAAMvD,KAAKwB,UAAWxB,KAAKkK,OAFhC,uBAQjD,WAEI,OAAOlK,KAAKod,KAAKoV,SAASD,MAAM,MAAM5U,KAAK,oCAG/C,WAEQpe,MAAAN,IAAIe,KAAM,eACVA,KAAKod,KAAKy9B,gBAAgB,IAE1B76C,KAAKod,KAAKy9B,gBAAgB76C,KAAKiB,KAAKwjB,sCAI5C,WAEIzkB,KAAKod,KAAKy9B,gBAAgB,iCAG9B,WAEQ76C,KAAKod,KAAK09B,eAAe96C,KAAKod,KAAK09B,gBACvC96C,KAAK+6C,0CAGT,SACavoB,EAAUlyB,GACfN,KAAKod,KAAK49B,cAAch7C,KAAKod,KAAK49B,aAAaxoB,EAAUlyB,GAC7DN,KAAK+6C,wCAGT,SACWvoB,EAAUkV,GACb1nC,KAAKod,KAAK69B,YAAYj7C,KAAKod,KAAK69B,WAAWzoB,EAAUkV,GACzD1nC,KAAK+6C,0CAGT,SACavoB,EAAUkV,GACf1nC,KAAKod,KAAK89B,cAAcl7C,KAAKod,KAAK89B,aAAa1oB,EAAUkV,GAC7D1nC,KAAK+6C,2CAIT,SACcI,GACV,IAAKA,EAAS,MAAO;AACrB,IAAK57C,MAAAN,IAAIk8C,EAAS,YAAa,MAAO;AAEtC,IAAMC,EAAW77C,MAAAN,IAAIk8C,EAAS,YACxBE,EAAU97C,MAAAN,IAAIk8C,EAAS,WAEvBlnC,EACFpE,EAAAA,QAAOyrC,MAAM9L,QAAQ,OAAO+L,OAAS1rC,EAAAA,QAAOyrC,IAAIF,GAAU5L,QAAQ,OAAO+L,OACvEtpC,EAAOpC,EAAAA,QAAO2rC,SAASvnC,EAAM,WAAWwnC,SAExCC,EACF7rC,EAAAA,QAAOyrC,IAAIF,GAAU5L,QAAQ,OAAO+L,OAAS1rC,EAAAA,QAAOyrC,IAAID,GAAS7L,QAAQ,OAAO+L;AAEpF,OAAqB,IADA1rC,EAAAA,QAAO2rC,SAASE,EAAc,WAAWD,SAEtDxpC,EAAO,EAAU,OACd,QAEPA,EAAO,GAAW,OACT,IAATA,EAAmB,IAChBA,+BAGX,WAEI1S,MAAA4C,IAAInC,KAAM,gBAAgB,GAC1BA,KAAK+6C,iDAGT,SACoBY,EAAU3mC,GAE1B,OADI2mC,GAAYp8C,MAAAuD,QAAQ64C,KAAWA,GAAYC,EAAAA,QAAUnpC,YAAYuC,EAAK2mC,IACnEA,oCAGX,SACmBl7B,EAAQjd,GACvB,IAAMq4C,EAAU77C,KAAK87C,aACfC,EAAe;AAKrB,OAJAF,EAAQj1C,SAAQ,SAACqP,GACTA,EAAKzS,QAAUA,IAAOu4C,EAAa9lC,EAAKkO,QAAU1D,EAASA,EAAOxK,EAAKumB,MAAQ,SAGhFuf,4BAGX,WACI,IADSlf,EACHgf,EAAU,GADP/e,EAAAC,EAEM/8B,KAAKkK,MAAMwe,WAAW1oB,KAAKod,KAAK7Z;AAFtC,IAGT,IAAAu5B,EAAAjjB,MAAAgjB,EAAAC,EAAAnjB,KAAAqjB,MAA4B,CAAA,IAAA5E,EAAjB50B,EAAiBq5B,EAAA99B,MACpBgL,EAAM,QAAAquB,EAAG50B,EAAM6K,gBAAT,IAAA+pB,OAAA,EAAGA,EAAgBruB;AAC7B,GAAIA,EAAQ,CACHxK,MAAAuD,QAAQiH,KAASA,EAAS,CAACA;AADxB,IAAAmzB,EAAAC,EAAAJ,EAGkBhzB;AAHlB,IAGR,IAAAozB,EAAAtjB,MAAAqjB,EAAAC,EAAAxjB,KAAAqjB,MAAkC,CAAA,IAAAxB,EAAvB6B,EAAuBH,EAAAn+B;AAC9B88C,EAAQ3wC,KAAK,CAET1H,MAAO65B,EAGPlZ,OAAM,QAAAqX,EAAEh4B,EAAMmH,eAAR,IAAA6wB,OAAA,EAAEA,EAAej4B,KAEvBi5B,KAAMh5B,EAAMqJ,QAXZ,MAAAywB,GAAAH,EAAAhW,EAAAmW,GAAA,QAAAH,EAAAI,OALP,MAAAD,GAAAR,EAAA3V,EAAAmW,GAAA,QAAAR,EAAAS,IAsBT,OAAOse,qCAxLuC7/B,EAAAA,wYAMzC,gMACmB;0CAPXq+B;;;;;;;;;;;;;;ACZrB,IAAMl+B,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,uyHAAAzZ,KAAA,CAAA0Z,WAAA,6CAgBPy/B;;;AAkBjB,SAAAA,EAAYhkC,EAAgBoF,GAAiB,IAAAtY,gGAAAyZ,CAAAve,KAAAg8C,GAAAx9B,EAAAC,EACzC3Z,EAAA7E,EAAA6K,KAAA9K,KAAMgY,EAAOoF,IAD4B,QAAAsB,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,eAAA6Z,EAAAF,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,iBAAA8Z,EAAAH,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,YAAAyd,EAAA9D,EAAA3Z;AAEzC,IAAMm3C,EAAWn3C,EAAKsY,KAAKre,MAAQ+F,EAAKsY,KAAKre,MAAM0Q,MAAM,KAAO;AAFvB,OAGzC3K,EAAKo3C,aAAeD,EAASp6B,KAAI,SAAC1C,GAC9B,OAAOra,EAAKqV,OAAOtV,MAAK,SAAC04B,GAAD,OAAmBA,EAAE1wB,OAASsS,QAE1Dra,EAAKq3C,eAAiBr3C,EAAKqV,OAAOgK,QAAO,SAAC3gB,GACtC,GAAmB,kBAAfA,EAAMkH,KACV,OAAQ5F,EAAKo3C,aAAar3C,MAAK,SAAC04B,GAAD,OAAmBA,EAAE1wB,OAASrJ,EAAMqJ,WAR9B/H,mCAX7C,WACI,OAAO9E,KAAKkK,MAAMwe,WAAW1oB,KAAKod,KAAK7Z,+BAG3C,WAAkB,IAAAsT,EAAA7W;AACd,OAAKA,KAAKod,KAAKre,MACRiB,KAAKod,KAAKre,MACZ0Q,MAAM,KACNoS,KAAI,SAAC1C,GAAD,OAAiBtI,EAAK3M,MAAM1G,MAAMqT,EAAKuG,KAAK7Z,KAAM4b,MAH9B,8BAkBjC,WAC8B,IAAAsE,EAAAzjB;AACtBA,KAAK20B,YACL30B,KAAKk8C,aAAel8C,KAAKo8C,YACzBp8C,KAAKm8C,eAAiBn8C,KAAKma,OAAOgK,QAAO,SAAC3gB,GACtC,GAAmB,kBAAfA,EAAMkH,KACV,OAAQ+Y,EAAKy4B,aAAar3C,MAAK,SAAC04B,GAAD,OAAmBA,EAAE1wB,OAASrJ,EAAMqJ,YAG3E7M,KAAK20B,WAAa30B,KAAK20B,kCAG3B,SACmBnxB,GACf,IAAM64C,EAAer8C,KAAKm8C,eAAexzC,QAAQnF;AACjDxD,KAAKm8C,eAAeG,OAAOD,EAAc,GACzCr8C,KAAKk8C,aAAahxC,KAAK1H,GACvBxD,KAAKm8C,eAAiBn8C,KAAKm8C,eAC3Bn8C,KAAKk8C,aAAel8C,KAAKk8C,wCAG7B,SACsB14C,EAAmB+4C,GACrC,IAAMF,EAAer8C,KAAKk8C,aAAavzC,QAAQnF;AAC/CxD,KAAKk8C,aAAaI,OAAOD,EAAc,GACvCr8C,KAAKm8C,eAAejxC,KAAK1H,GACzBxD,KAAKm8C,eAAiBn8C,KAAKm8C,eAC3Bn8C,KAAKk8C,aAAel8C,KAAKk8C,aACrBK,GAAcv8C,KAAKu8C,2CAG3B,WAEI,GAAKh9C,MAAAqT,QAAQ5S,KAAKk8C,cAIdl8C,KAAKod,KAAK2jB,aAAa;IAJM,CAC7B,IAAMyb,EAAmBx8C,KAAKk8C,aAAar6B,KAAI,SAACre,GAAD,OAAuBA,EAAMqJ;AAC5E7M,KAAKod,KAAK2jB,aAAayb,EAAiB7+B,KAAK,MAIjD3d,KAAKy8C,iDArEuCzgC,EAAAA,+MAGXzc,MAAAktB,EAAE,qHACAltB,MAAAktB,EAAE,gHACZ;0CALZuvB;AChBrB,IAAM7/B,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,+OAAAzZ,KAAA,CAAA0Z,WAAA,0EAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,01CAAAzZ,KAAA,CAAA0Z,WAAA,6EAGbhd,MAAAid;;;;;;;;;;;;;;;ACHf,gBAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,uxBAAAzZ,KAAA,CAAA0Z,WAAA,oCAQPmgC;;;qGACjB,SAC6BC,GACzB,GAAKA,EACL,OAAO38C,KAAKod,KAAK4c,2CAJmBhe,EAAAA;0CAAvB0gC;ACRrB,IAAMvgC,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,iOAAAzZ,KAAA,CAAA0Z,WAAA,yEAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,0NAAAzZ,KAAA,CAAA0Z,WAAA,2EAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,+gBAAAzZ,KAAA,CAAA0Z,WAAA,2EAGbhd,MAAAid;;;;;;;;;;;;;;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,s+DAAAzZ,KAAA,CAAA0Z,WAAA,0CAMPqgC,sBAQhBr9C,MAAAwB,SAAA87C,GAAG,cAAe,KAClBt9C,MAAAwB,SAAA87C,GAAG,iBAAkB;;;AARtB,SAAAD,IAAc,IAAA93C;AAAA,OAAAyZ,EAAAve,KAAA48C,GAAAp+B,EAAAC,EACV3Z,EAAA7E,EAAAC,MAAAF,KAASG,YADC,cAAAue,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,kBAAA6Z,EAAAF,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,iBAAA8Z,EAAAH,EAAA3Z,IAEVA,EAAKq+B,YAAc,EAFTr+B,sCAUd,WACI,OAAO9E,KAAKod,KAAK0/B,6BAGrB,WACI,IAAInoC,EAAKooC,EAASC,EAAQC,EAAUC,EAAOjxC,EAAKkxC,EAAMC,EAASC,EAAUjpC,EACrE0oC,EAAY98C,KAAK88C;AAwCrB,OApCA1oC,EAAQ,CAAC,EAAG,EAAG,EAAG,GAAG+P,OAHrB44B,EAAU,SAAU9mC,GAChB,OAAOA,GAAQ,GAAKA,GAAQ6mC,IAGhCnoC,EAAM,WACFyoC,EAAU;AACV,IACI,IAAIE,EAAKrxC,EAAM6wC,EAAY,EAAI5wC,EAAO4wC,EAAY,EAClD7wC,GAAOC,EAAOoxC,EAAIpxC,EAAOoxC,EAAIpxC,EAC7BD,GAAOC,EAAOoxC,IAAMA,IAEpBF,EAAQlyC,KAAKoyC;AAEjB,OAAOF,GAENl9C,MAAMF,MACNmkB,OAAO44B,GACZG,EAAQl9C,KAAKu9C,MAAMnpC,EAAOO,GAC1BsoC,EAAWj9C,KAAKmjC,YACZnjC,KAAKmjC,YAAc,IACnB8Z,EAAW,GAEXj9C,KAAKmjC,YAAc,EAAI2Z,IACvBG,EAAWH,EAAY,GAE3BE,EAAS,WACLK,EAAW;AACX,IACI,IAAIG,EAAKL,EAAOF,EAAW,EAAIQ,EAAOR,EAAW,EACjDE,GAAQM,EAAOD,EAAIC,EAAOD,EAAIC,EAC9BN,GAAQM,EAAOD,IAAMA,IAErBH,EAASnyC,KAAKsyC;AAElB,OAAOH,GAENn9C,MAAMF,MACNmkB,OAAO44B,GACZG,EAAQl9C,KAAKu9C,MAAML,EAAOF,GACnBh9C,KAAK09C,SAASR,yCAGzB,WACI,OAAOl9C,KAAK29C,gBAAkB39C,KAAKmjC,cAAgBnjC,KAAK88C,YAAc98C,KAAK49C,qCAG/E,WACI,OAAO59C,KAAKmjC,YAAcnjC,KAAK88C,kCAGnC,SAASe,GACL,IAAIC,EAAejrC,EAAGyqC,EAAGS,EAAMhrC,EAAK9G;AAUpC,IATA8xC,EAAO,EACPD,EAAgB,GAChBD,EAAMj3C,SAAQ,SAAUuY,EAAKtY,GAIzB,OAHIk3C,EAAO,IAAM5+B,GACb2+B,EAAc5yC,KAAK,CAACrE,EAAKk3C,EAAO,IAAM5+B,EAAM4+B,EAAO,EAAI,QAEnDA,EAAO5+B,KAGdm+B,EAAI,EAAGvqC,GADZ9G,EAAM6xC,EAAcE,WACE9qC,OAAQoqC,EAAIvqC,EAAKuqC,IACnCzqC,EAAI5G,EAAIqxC,GACRO,EAAMvB,OAAOzpC,EAAE,GAAI,EAAGA,EAAE;AAE5B,OAAOgrC,uBAGX,SAAMI,EAAMC,GACR,IAAIC,EAAYC;AAOhB,OANAD,EAAa,SAAUp/C,EAAO2M,EAAOzC,GACjC,OAAOA,EAAKN,QAAQ5J,KAAW2M,GAEnC0yC,EAAa,SAAUtiB,EAAGC,GACtB,OAAOD,EAAIC,GAERkiB,EAAKr9C,OAAOs9C,GAAM/5B,OAAOg6B,GAAY3zB,KAAK4zB,2BAGrD,WAGI,GADAp+C,KAAKmjC,YAAc7xB,SAAStR,KAAKmjC,YAAa,IAAM,EAChDnjC,KAAKod,KAAKihC,WACV,OAAOr+C,KAAKod,KAAKihC,WAAWr+C,KAAKmjC,yCAIzC,WAGI,GADAnjC,KAAKmjC,YAAc7xB,SAAStR,KAAKmjC,YAAa,IAAM,EAChDnjC,KAAKod,KAAKihC,WACV,OAAOr+C,KAAKod,KAAKihC,WAAWr+C,KAAKmjC,uCAIzC,SACW6E,GACP,GAAa,QAATA,EAKJ,OAFAhoC,KAAKmjC,YAAc6E,EAEfhoC,KAAKod,KAAKihC,WACHr+C,KAAKod,KAAKihC,WAAWr+C,KAAKmjC,kBADrC,qCAxHuCnnB,EAAAA;0CAA1B4gC;;;;;;;;;;;;;;ACNrB,IAAMzgC,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,szNAAAzZ,KAAA,CAAA0Z,WAAA,2CAKP+hC;;;;;;iIAIjB,SACyB5hC,GACrB,IAAM6hC,EAAS9sC,KAAKI,IAAI6K,EAAMlX,OAAOzG;AACrCiB,KAAKw+C,IAAM,KAAOD,EAAS,wCAPeviC,EAAAA,8GACX,yGACF;0CAFhBsiC;;;;;;;;;;;;;;;;;;;;;ACLrB,IAAMniC,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,wiDAAAzZ,KAAA,CAAA0Z,WAAA,qDASPkiC;;;AAyCjB,SAAAA,IAAc,IAAA35C;AAAAyZ,EAAAve,KAAAy+C,GAAAjgC,EAAAC,EACV3Z,EAAA7E,EAAAC,MAAAF,KAASG,YADC,OAAAue,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,QAAA6Z,EAAAF,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,UAAA8Z,EAAAH,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,cAAAyd,EAAA9D,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,SAAA0d,EAAA/D,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,UAAA2d,EAAAhE,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,UAAAuyB,EAAA5Y,EAAA3Z,IAEVA,EAAK45C,SAAW,CAAC,UAAW,OAAQ,UAAW,WAC/C55C,EAAKq+B,YAAc;AACnB,IAAMwb,EAAiB75C,EAAK85C,kBAAkB95C,EAAKsY,KAAK+G;AAJ9C,OAMNrf,EAAKsY,KAAKwpB,eACV9hC,EAAKu6B,OAAS,CACVxyB,KAAM/H,EAAKsY,KAAKwpB,eAAe/5B,KAC/BgY,MAAO/f,EAAKsY,KAAKwpB,eAAe/hB,MAChC4hB,KAAMvjC,KAAKwD,MAAM5B,EAAKsY,KAAKwpB,eAAeH,MAC1CC,QAAS5hC,EAAKsY,KAAKwpB,eAAeF,QAClChC,QAASxhC,KAAKwD,MAAM5B,EAAKsY,KAAKwpB,eAAelC,SAC7CrI,QAASn5B,KAAKwD,MAAM5B,EAAKsY,KAAKwpB,eAAevK,SAC7CsK,WAAY7hC,EAAKsY,KAAKwpB,eAAeD,YAGzC7hC,EAAKu6B,OAAS,CACVxyB,KAAM,KACNgY,MAAO,KACP4hB,KAAMlnC,MAAAktB,EAAE,IACRia,QAAS,QACThC,QAASnlC,MAAAktB,EAAE,IACX4P,QAASsiB,EACThY,WAAY,MAxBV7hC,iDA/Bd,WACI,MAAO,oCAAsC9E,KAAKmjC,kCAGtD,WACI,OAAO5jC,MAAAua,OAAAiH,SAAS/gB,KAAKL,KAAK2C,EAAE,8BAAgCtC,KAAKmjC,sCAGrE,WACI,OAAO5jC,MAAAqT,QAAQ5S,KAAKq/B,OAAOxyB,oCAG/B,WAAuB,IAAAgK,EAAA7W;AAGnB,OAFuBA,KAAKkK,MAAMwe,WAAW,QAAQC,OAAO,OAAQ,aAE9Che,QAAQkX,KAAI,SAAC7W,GAC/B,GAAIsG,SAAStG,EAAQ,IAAM,EACvB,MAAO,CACHrH,GAAI2N,SAAStG,EAAQ,IACrB6B,KAAM7B,EAAOwI,UAAU;AAG3B,IAAM7P,EAAK2N,SAAStG,EAAQ;AAC5B,MAAO,CACHrH,GAAAA,EACAkJ,KAAMgK,EAAKlX,KAAK2C,EAAE,kBAAoBqB,4CAmCtD,SACsBkJ,EAAM9N,GAAwB,IAAjByzB,EAAiBryB,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAN;AAC1C,OAAQ0M,GACJ,IAAK,UACD7M,KAAKq/B,OAAOqF,QAAQhW,WAAW3vB;AAC/B;AACJ,IAAK,OACDiB,KAAKq/B,OAAOoH,KAAK/X,WAAW3vB;AAC5B;AACJ,IAAK,UACGyzB,GACIjzB,MAAAuD,QAAQ0vB,KAAWA,EAAWA,EAAS3Q,KAAI,SAACg9B,GAAD,OAASA,EAAIl7C,MAAIga,KAAK,MACrE3d,KAAKq/B,OAAOhD,QAAQt9B,GAASyzB,EAAS7uB,GAAK6uB,EAAS7uB,GAAK6uB,GAEzDxyB,KAAKq/B,OAAOhD,QAAQt9B,GAAS;AAEjC;AACJ,IAAK,UACDQ,MAAA4C,IAAInC,KAAM,iBAAkBjB,GACd,UAAVA,GAAmBQ,MAAA4C,IAAInC,KAAM,cAAeT,MAAAktB,EAAE;AAClD;AACJ,QACIltB,MAAA4C,IAAInC,KAAM,UAAY6M,EAAM9N,GAEpCiB,KAAKq/B,OAASr/B,KAAKq/B,6CAGvB,SACuBxyB,EAAM9N,GACzB,OAAQ8N,GACJ,IAAK,UACD7M,KAAKq/B,OAAOqF,QAAQrW,aAAatvB;AACjC;AACJ,IAAK,OACDiB,KAAKq/B,OAAOoH,KAAKpY,aAAatvB;AAC9B;AACJ,IAAK,iBACMiB,KAAKq/B,OAAOhD,QAAQt9B;AAC3B;AACJ,QACIQ,MAAA4C,IAAInC,KAAM,UAAY6M,EAAM,MAEpC7M,KAAKq/B,OAASr/B,KAAKq/B,yCAGvB,SACmBoF,EAAKnd,GACpB,IAAI5b,EAAQ1L,KAAKq/B,OAAOqF,QAAQ/7B,QAAQ87B;AACxCzkC,KAAKq/B,OAAOqF,QAAQrW,aAAaoW;AACjC,IAAI6T,EAAW5sC,EAAQ4b;AACvBgxB,EACIA,EAAWt4C,KAAKq/B,OAAOqF,QAAQxxB,OACzB,EACAolC,EAAW,EACTt4C,KAAKq/B,OAAOqF,QAAQxxB,OACpBolC,EACZt4C,KAAKq/B,OAAOqF,QAAQ6T,SAASD,EAAU7T,GACvCzkC,KAAKq/B,OAASr/B,KAAKq/B,qCAGvB,SACeyf,EAAWxwC,GACtB,IAAMywC,EAAWlgD,OAAOwgC,OAAO/wB,GAAW1N,OAAO/B,OAAOwgC,OAAOyf,IAC3DtZ,EAAQ;AACZuZ,EAASn4C,SAAQ,SAACuR,GACdA,EAAKvR,SAAQ,SAACoO,GACVwwB,EAAM9W,WAAW,CAAEnrB,KAAMyR,EAAIzR,KAAMsJ,KAAMmI,EAAInI,aAGrDtN,MAAA4C,IAAInC,KAAM,qBAAsBwlC,4BAGpC,SACUnG,EAAQ30B,GACdnL,MAAA4C,IAAInC,KAAM,UAAY0K,EAAM20B,GAC5Br/B,KAAKq/B,OAASr/B,KAAKq/B,qCAGvB,SACe2f,EAAMhT,GAOjB,IANA,IAAIpW,EAAS,GAET/iB,EAAI,EACJosC,EAAc,KACdC,EAAiB,KAErBn6B,EAAA,EAAAo6B,EAAwCtgD,OAAOswC,QAAQnvC,KAAKq/B,OAAOhD,SAAnEtX,EAAAo6B,EAAAjsC,OAAA6R,IAA6E,CAAxE,IAAAq6B,EAAAC,EAAAF,EAAAp6B,GAAA,GAAOu6B,EAAPF,EAAA,GAAmBrsB,EAAnBqsB,EAAA,GACGG,EAAkBD,EAAW7vC,MAAM,KAAKyD,OAAS,EAAI,EAAI,GAGxDosC,EAAW32C,QAAQ,MAAQ,GAAK22C,EAAW7vC,MAAM,KAAK8vC,IAAoBvT,GACpE,WAANA,IAA+C,GAA5BsT,EAAW32C,QAAQ,OAAes2C,KAEtDA,EAAcpsC,IAIbysC,EAAW32C,QAAQ,MAAQ,GAAK22C,EAAW7vC,MAAM,KAAK8vC,IAAoBP,GAClE,WAARA,IAAiD,GAA5BM,EAAW32C,QAAQ,QAEzCitB,EAAO0pB,GAAcvsB,SACd/yB,KAAKq/B,OAAOhD,QAAQijB,GAC3BJ,EAAiBrsC,GAErBA,IAGJ,IAAI2sC,EAAa3gD,OAAOswC,QAAQnvC,KAAKq/B,OAAOhD,SACxCojB,EAAY5gD,OAAOswC,QAAQvZ,IAE/BqpB,EAAcC,EAAiBD,EAAcA,EAAc,EAAIA,GAC7C,IAAGA,EAAc,GAEnCO,EAAWlD,OAAXp8C,MAAAs/C,EAAU,CAAQP,EAAa,GAArBr+C,OAAAiyB,EAA2B4sB,KAGrCz/C,KAAKq/B,OAAOhD,QAAUx9B,OAAO6gD,YAAYF,GACzCx/C,KAAKq/B,OAASr/B,KAAKq/B,wCAGvB,SAAkBsf,GAAgB,IAAAl7B,EAAAzjB;AAC9B,OAAK2+C,GACL9/C,OAAO8H,KAAKg4C,GAAgB/3C,SAAQ,SAACud,GAC5BV,EAAKvZ,MAAM+xB,YAAYxY,EAAKrG,KAAK7Z,KAAM4gB,IAEzB,SADLV,EAAKvZ,MAAM1G,MAAMigB,EAAKrG,KAAK7Z,KAAM4gB,GACrCzZ,OAAiBi0C,EAAex6B,GAAU,gBAGjDw6B,GAPqB,sCA/LuB3iC,EAAAA;0CAAtCyiC;;;;;;;;;;;;;ACTrB,gBAAMtiC,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,+qHAAAzZ,KAAA,CAAA0Z,WAAA,qEAKPojC;;;wFACjB,WACI,OAAO3/C,KAAKod,KAAKspB,wCAGrB,WAAyB,IAAA5hC,EAAA9E,KACf4/C,EAAuB,CACzB,OACA,SACA,QACA,QACA,YACA,kBACA,mBACA,WAEEC,EAAqB,CAAC,WAAY,kBAAmB,mBAAoB;AAE/E,GAAqB,UAAjB7/C,KAAK0mC,SAA+C,YAAxB1mC,KAAKod,KAAK0iC,UAAyB,CAC/D,IAAMC,EAAqB//C,KAAKod,KAAKqpB,KAAK5kB,KAAI,SAAC4iB,GAAD,OAASA,EAAIE;AAC3D,OAAO3kC,KAAKod,KAAKsnB,QAAQvgB,QACrB,SAACsgB,GAAD,OACKsb,EAAmBj+C,SAAS2iC,EAAIE,gBAC7Bib,EAAqB99C,SAAS2iC,EAAI/5B,SACrC5F,EAAKsY,KAAKiiB,OAAO1W,OAAO,gBAAiB8b,EAAIE,kBAG1D,MAA4B,SAAxB3kC,KAAKod,KAAK0iC,UACH9/C,KAAKod,KAAKsnB,QAAQvgB,QACrB,SAAC2hB,GAAD,OACI+Z,EAAmB/9C,SAASgkC,EAAOp7B,QAClC5F,EAAKsY,KAAKiiB,OAAO1W,OAAO,gBAAiBmd,EAAOnB,kBAGzDplC,MAAAqT,QAAQ5S,KAAKod,KAAKiiB,QAAgBr/B,KAAKod,KAAKsnB,QACzC1kC,KAAKod,KAAKsnB,QAAQvgB,QACrB,SAAC2hB,GAAD,OAAahhC,EAAKsY,KAAKiiB,OAAO1W,OAAO,gBAAiBmd,EAAOnB,0CAIrE,WACI,MAC4B,SAAxB3kC,KAAKod,KAAK0iC,YACQ,UAAjB9/C,KAAK0mC,SAAwC,YAAjB1mC,KAAK0mC,gCAI1C,SACQsF,EAAIgT,GACR,IAAI3f,EAASr/B,KAAKod,KAAKiiB,OACnB2gB,EAAS3gB,EAAO12B,QAAQ02B,EAAO1W,OAAO,gBAAiBq2B,IACvDiB,EAAS5gB,EAAO12B,QAAQ02B,EAAO1W,OAAO,gBAAiBqjB,IACvDkU,EAAU7gB,EAAO1W,OAAO,gBAAiBq2B;AAC7C3f,EAAOid,OAAO0D,EAAQ,GACtB3gB,EAAOid,OAAO2D,EAAQ,EAAGC,GACzBlgD,KAAKod,KAAK+iC,UAAU9gB,EAAQr/B,KAAK0mC,4CAvDgC1qB,EAAAA;0CAApD2jC;;;;;;;;;;;;;;ACLrB,IAAMxjC,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,mhBAAAzZ,KAAA,CAAA0Z,WAAA,oEAKP6jC;;;AAIjB,SAAAA,IAAc,IAAAt7C;AAAA,OAAAyZ,EAAAve,KAAAogD,GAAA5hC,EAAAC,EACV3Z,EAAA7E,EAAAC,MAAAF,KAASG,YADC,YAAAue,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,YAAA6Z,EAAAF,EAAA3Z,IAEVA,EAAKu7C,cAAgBv7C,EAAKsY,KAAKkjC,cAC/Bx7C,EAAKy7C,UAAY,WAHPz7C,6CAMd,SACe4X,GACXA,EAAM8jC,aAAaC,QAAQ,YAAazgD,KAAKqgD,mCAGjD,SACK3jC,GACD1c,KAAKugD,UAAY;AACjB,IAAMt/C,EAAOyb,EAAM8jC,aAAaE,QAAQ;AACnCz/C,GAAQA,GAAQjB,KAAKqgD,eAC1BrgD,KAAKod,KAAK46B,QAAQh4C,KAAKqgD,cAAep/C,EAAMyb,4BAGhD,SACUA,GACNA,EAAMyD,iBACNngB,KAAKugD,UAAY,mCAGrB,SACS7jC,GACLA,EAAMyD,iBACNngB,KAAKugD,UAAY,kCAGrB,SACU7jC,GACNA,EAAMyD,oDArC0DnE,EAAAA;0CAAnDokC;;;;;;;;;;;ACLrB,IAAMjkC,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,28JAAAzZ,KAAA,CAAA0Z,WAAA,gEAGPokC;;;;;;oEACI,CAAC,8BAD0C3kC,EAAAA;0CAA/C2kC;;;;;;;;;;;;;;ACHrB,IAAMxkC,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,q7EAAAzZ,KAAA,CAAA0Z,WAAA,2DAMPqkC;;;;;;wGAGjB,SACSlkC,GACAA,EAAMlX,OAAOzG,OAClBiB,KAAKod,KAAKyjC,sBAAsB,QAASvvC,SAASoL,EAAMlX,OAAOzG,2CANPid,EAAAA;0CAA3C4kC;ACNrB,IAAMzkC,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,yfAAAzZ,KAAA,CAAA0Z,WAAA,2FAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,uhBAAAzZ,KAAA,CAAA0Z,WAAA,2FAGbhd,MAAAid;;;;;;;;;;;;;;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,6gHAAAzZ,KAAA,CAAA0Z,WAAA,2DAQPukC;;;AA0HjB,SAAAA,IAAc,IAAAh8C;AAAA,OAAAyZ,EAAAve,KAAA8gD,GAAAtiC,EAAAC,EACV3Z,EAAA7E,EAAAC,MAAAF,KAASG,YADC,OAAAue,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,QAAA6Z,EAAAF,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,QAAA8Z,EAAAH,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,UAAAyd,EAAA9D,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,eAAA0d,EAAA/D,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,eAAA2d,EAAAhE,EAAA3Z,IAEVA,EAAKi8C,OAAS,GACdj8C,EAAKk8C,SAAU,EACfl8C,EAAKm8C,cAAe,EACpBn8C,EAAKu3B,QAAUv3B,EAAKsY,KAAKiiB,OAAOhD,QAChCv3B,EAAKmtC,aAAentC,EAAKo8C,kBANfp8C,uCAjHd,WACI,MAAO,CACH,CAAEnB,GAAI,YAAakJ,KAAM7M,KAAKL,KAAK2C,EAAE,6BACrC,CAAEqB,GAAI,YAAakJ,KAAM7M,KAAKL,KAAK2C,EAAE,6BACrC,CAAEqB,GAAI,aAAckJ,KAAM7M,KAAKL,KAAK2C,EAAE,8BACtC,CAAEqB,GAAI,aAAckJ,KAAM7M,KAAKL,KAAK2C,EAAE,8BACtC,CAAEqB,GAAI,YAAakJ,KAAM7M,KAAKL,KAAK2C,EAAE,6BACrC,CAAEqB,GAAI,YAAakJ,KAAM7M,KAAKL,KAAK2C,EAAE,6BACrC,CAAEqB,GAAI,oBAAqBkJ,KAAM7M,KAAKL,KAAK2C,EAAE,+DAIrD,WAAkB,IAAAuU,EAAA7W,KACRmhD,EAAc,CAAC,kBAAmB,WAAY,OAAQ,UACxDC,EAAY,GACZ/kB,EAAUr8B,KAAKkK,MACdwe,WAAW1oB,KAAKod,KAAK7Z,MACrB4gB,QAAO,SAACoZ,GAAD,OAAO4jB,EAAYr/C,SAASy7B,EAAE7yB;AAC1C02C,EAAUl2C,KAAK,CACX2B,KAAM7M,KAAKod,KAAK7Z,KAChB49B,gBAAiBnhC,KAAKL,KAAK2C,EAAE,QAAUtC,KAAKod,KAAK7Z,MACjD4W,OAAQkiB,EAAQlY,QAAO,SAACk9B,GAAD,OAAOxqC,EAAKuG,KAAK7Z,OAAS89C,EAAEx0C;AAIvD,IAAMy0C,EAAW;AA6BjB,OA5BIthD,KAAKod,KAAKmkC,kBACV1iD,OAAO8H,KAAK3G,KAAKod,KAAKmkC,kBAAkB36C,SAAQ,SAAC46C,GAC7C,IAAMh+C,EAAQg+C,EAAI1/C,SAAS,KAAO0/C,EAAI/xC,MAAM,KAAK,GAAKoH,EAAKuG,KAAK7Z,KAC1D4gB,EAASq9B,EAAI1/C,SAAS,KAAO0/C,EAAI/xC,MAAM,KAAK,GAAK+xC;AACnDF,EAAS99C,GAAQ89C,EAAS99C,GAAO0H,KAAKiZ,GACrCm9B,EAAS99C,GAAS,CAAC2gB,MAIhCkY,EAAQz1B,SAAQ,SAAC46C,GACb,GAAiB,aAAbA,EAAI92C,KAAqB,CACzB,IAAM+2C,EAAc5qC,EAAKlX,KAAK2C,EAAE,UAAYuU,EAAKuG,KAAK7Z,KAAO,IAAMi+C,EAAI30C,MACnE60C,EAAgB7qC,EAAK3M,MACpBwe,WAAW84B,EAAI72C,QAAQpH,MACvB4gB,QAAO,SAACoZ,GAAD,OAAO1mB,EAAK8qC,WAAWpkB,EAAG4jB,EAAaK,EAAI30C;AACnDy0C,EAASE,EAAI30C,QACb60C,EAAgBA,EAAcv9B,QAAO,SAAClO,GAAD,OACjCqrC,EAASE,EAAI30C,MAAM/K,SAASmU,EAAKpJ,UAEpCtN,MAAAqT,QAAQ8uC,IACTN,EAAUl2C,KAAK,CACX2B,KAAM20C,EAAI30C,KACVs0B,gBAAiBsgB,EACjBtnC,OAAQunC,QAKjBN,4BAGX,SAAW7jB,EAAG4jB,EAAaS,GACvB,SAAI5hD,KAAKihD,eAAgBE,EAAYr/C,SAASy7B,EAAE7yB,UAC3C1K,KAAKihD,eAAgBjhD,KAAKod,KAAKqiB,kBAAkB39B,SAAS8/C,EAAU,IAAMrkB,EAAE1wB,sCAKrF,WAAkB,IAAA4W,EAAAzjB,KAEVsP,EAAM,GACNuyC,EAAa;AA2CjB,OAzCAhjD,OAAOswC,QAAQnvC,KAAKq8B,SAASz1B,SAAQ,SAAC22B,GAClC,IAAIpZ,EAASoZ,EAAE,GAAGz7B,SAAS,KAAOy7B,EAAE,GAAG9tB,MAAM,KAAO8tB,EAAE,GAClDh6B,EAAOhE,MAAAuD,QAAQqhB,GAAUA,EAAO,GAAKV,EAAKrG,KAAK7Z,KAC/CC,EAAQjE,MAAAuD,QAAQqhB,GAAWA,EAAOjR,OAAS,EAAIiR,EAAO,GAAKA,EAAO,GAAMoZ,EAAE,GAC1EukB,EAAaviD,MAAAuD,QAAQqhB,GACnBA,EAAOjR,OAAS,EACZiR,EAAO,GACPA,EAAO,GACXV,EAAKrG,KAAK7Z,KACZw+C,EAAYt+B,EAAKvZ,MAAM+xB,YAAY14B,EAAMC,GACvCigB,EAAKvZ,MAAM1G,MAAMD,EAAMC,GACvB;AACDu+C,IACLA,EAAUp3C,QACNo3C,EAAUp3C,SAA8B,oBAAnBo3C,EAAUr3C,KACzBq3C,EAAUp3C,QAAQ4nB,MAAM,MACxBwvB,EAAUp3C,QACG,SAAnBo3C,EAAUr3C,KACVq3C,EAAUvvB,SAAW/O,EAAKu+B,WAAWr5B,OAAO,KAAM4U,EAAE,IAC9C9Z,EAAKu+B,WAAWr5B,OAAO,KAAM4U,EAAE,IAC/BA,EAAE,GACkB,aAAnBwkB,EAAUr3C,MAAuB6yB,EAAE,IAAe,YAATA,EAAE,IAClDwkB,EAAUvvB,SAAW+K,EAAE,GAClB9tB,MAAM,KACNoS,KAAI,SAACle,GAAD,OAAQ8f,EAAKvW,MAAMsZ,WAAWu7B,EAAUp3C,QAAQpH,KAAMI,MAC3DJ,IAASkgB,EAAKrG,KAAK7Z,OAAMw+C,EAAUvvB,SAAWuvB,EAAUvvB,SAAS,KAClEuvB,EAAUvvB,SAAW+K,EAAE,GAC1B9Z,EAAKrG,KAAKmkC,kBACG1iD,OAAO8H,KAAK8c,EAAKrG,KAAKmkC,kBAC1Bz/C,SAASigD,EAAUl1C,OAASk1C,EAAUx+C,OAASkgB,EAAKrG,KAAK7Z,OAC9Dw+C,EAAUzzC,WAAY,GAG1ByzC,EAAUzzC,UACLuzC,EAAWC,GACXD,EAAWC,GAAY52C,KAAK62C,GADJF,EAAWC,GAAc,CAACC,GAGlDzyC,EAAIwyC,GACJxyC,EAAIwyC,GAAY52C,KAAK62C,GADJzyC,EAAIwyC,GAAc,CAACC,OAI1C,CAAEzzC,UAAWuzC,EAAY/C,UAAWxvC,6BAY/C,SACWzC,GACHtN,MAAAN,IAAIe,KAAK+gD,OAAQl0C,GACjBtN,MAAA4C,IAAInC,KAAM,UAAY6M,GAAM,GAE5BtN,MAAA4C,IAAInC,KAAM,UAAY6M,GAAM,iCAIpC,SACe9N,GAAwB,IAAjByzB,EAAiBryB,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAN,KACvB8hD,EAAaljD,EAAM0Q,MAAM;AAC3BwyC,EAAW,KAAOA,EAAW,KAC7BA,EAAW3F,OAAO,EAAG,GACrBv9C,EAAQkjD,EAAWtkC,KAAK;AAE5B,IAAMukC,EAAeD,EAAW,KAAOjiD,KAAKod,KAAK7Z,KAAO0+C,EAAW,GAAKljD;AACpEyzB,GACIjzB,MAAAuD,QAAQ0vB,KAAWA,EAAWA,EAAS3Q,KAAI,SAACg9B,GAAD,IAAAsD;AAAA,OAAA,QAAAA,EAAStD,EAAIl7C,UAAb,IAAAw+C,EAAAA,EAAmBtD,KAAKlhC,KAAK,MAC5E3d,KAAKq8B,QAAQ6lB,GAAgB1vB,EAAS7uB,GAAK6uB,EAAS7uB,GAAK6uB,GAEzDxyB,KAAKq8B,QAAQ6lB,GAAgB,KAGjCliD,KAAKiyC,aAAejyC,KAAKkhD,kBACzBlhD,KAAKod,KAAKyjC,sBAAsB,UAAWqB,EAAc1vB,gCAG7D,SACczzB,GACV,IAAMkjD,EAAaljD,EAAM0Q,MAAM;AAC3BwyC,EAAW,KAAOA,EAAW,KAC7BA,EAAW3F,OAAO,EAAG,GACrBv9C,EAAQkjD,EAAWtkC,KAAK;AAE5B,IAAMukC,EAAeD,EAAW,KAAOjiD,KAAKod,KAAK7Z,KAAO0+C,EAAW,GAAKljD;OAEjEiB,KAAKq8B,QAAQ6lB,GACpBliD,KAAKq8B,QAAUr8B,KAAKq8B,QAEpBr8B,KAAKod,KAAKglC,uBAAuB,UAAWF,GAE5CliD,KAAKiyC,aAAejyC,KAAKkhD,qDAG7B,SACoBniD,GAAO,IAAA09B,EAAAz8B;AACvBT,MAAA4C,IAAInC,KAAM,UAAWjB,GACrBiB,KAAKqiD,YAAYz7C,SAAQ,SAACqP,GACtB1W,MAAA4C,IAAIs6B,EAAM,UAAYxmB,EAAKpJ,KAAM9N,6BAIzC,SACQitC,EAAIgT,GACRh/C,KAAKod,KAAKklC,eAAetD,EAAMhT,GAC/BhsC,KAAKq8B,QAAUr8B,KAAKod,KAAKiiB,OAAOhD,QAChCr8B,KAAKiyC,aAAejyC,KAAKkhD,qDA5L+BllC,EAAAA;0CAA3C8kC;;;;;;;;;;;;;ACRrB,gBAAM3kC,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,kwFAAAzZ,KAAA,CAAA0Z,WAAA,2CAaPgmC;;;;;;uGAGjB,WAA2B,IAAAC,EAAAC;AACvB,MAA+B,mBAAxB,QAAAD,EAAAxiD,KAAK0iD,gBAAL,IAAAF,OAAA,EAAAA,EAAe93C,OAAoD,4BAAxB,QAAA+3C,EAAAziD,KAAK0iD,gBAAL,IAAAD,OAAA,EAAAA,EAAe/3C,gCAGrE,WACI,MAAwB,qBAApB1K,KAAKod,KAAK5Z,OAAoD,sBAApBxD,KAAKod,KAAK5Z,MAC7C,CAAEzE,MAAOiB,KAAKod,KAAKre,OAAQ,EAAA4gB,EAAAzgB,SAAOc,KAAKod,KAAKre,OAAOoS,OAAO,OAAS,MAEnE,2BAIf,WACI,OAAKnR,KAAKkK,MAAM+xB,YAAYj8B,KAAKod,KAAK7Z,KAAMvD,KAAKod,KAAK5Z,OAC/CxD,KAAKkK,MAAM1G,MAAMxD,KAAKod,KAAK7Z,KAAMvD,KAAKod,KAAK5Z,OADmB,wCAhB3BwY,EAAAA;0CAA7BumC;;;;;;;;;;;;;;ACbrB,IAAMpmC,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,2oCAAAzZ,KAAA,CAAA0Z,WAAA,qCAWPomC;;;;;;qIAIjB,SACkB3a,GACdhoC,KAAKmjC,YAAc6E,EACfhoC,KAAKod,KAAKihC,YAAYr+C,KAAKod,KAAKihC,WAAWrW,sCAPVhsB,EAAAA,oHAEH;0CAFrB2mC;;;;;;;;;;;;;;ACXrB,IAAMxmC,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,g9DAAAzZ,KAAA,CAAA0Z,WAAA,6CAmBPqmC;;;;;;yFAMWrjD,MAAAua,OAAAiH,SAAS,+EACVxhB,MAAAua,OAAAiH,SAAS,oGAEpC,WACI,OAAO/gB,KAAKod,KAAK+lB,aAAe,0BAGpC,WACI,OAAOnjC,KAAKod,KAAK+lB,cAAgBnjC,KAAKod,KAAK8/B,0BAG/C,WAEQl9C,KAAKod,KAAKihC,YAAYr+C,KAAKod,KAAKihC,WAAWr+C,KAAKod,KAAK+lB,YAAc,2BAG3E,WAEQnjC,KAAKod,KAAKihC,YAAYr+C,KAAKod,KAAKihC,WAAWr+C,KAAKod,KAAK+lB,YAAc,uBAG3E,WAEQnjC,KAAKod,KAAK4f,MAAMh9B,KAAKod,KAAK4f,OAC1Bh9B,KAAKod,KAAK4c,QAAUh6B,KAAKod,KAAKylC,iBAAiB7iD,KAAKod,KAAK4c,2CA7BzDhe,EAAAA;0CADS4mC;ACnBrB,IAAMzmC,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,iJAAAzZ,KAAA,CAAA0Z,WAAA,6EAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,2EAAAzZ,KAAA,CAAA0Z,WAAA,4EAGbhd,MAAAid;;;;;;;;;;;;;;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,g0EAAAzZ,KAAA,CAAA0Z,WAAA,2CAgBPumC;;;;;;2DACM,mEAGvB,WACI,IAAMxvC,EAAO,GACT4pC,EAAQ39C,MAAAuD,QAAQ9C,KAAKod,KAAK2lC,WAAa/iD,KAAKod,KAAK2lC,UAAU7vC,OAASlT,KAAKod,KAAK8/B;AAC7EA,IAAOA,EAAQ;AAEpB,IAAK,IAAIrqC,EAAI,EAAGA,GAAKqqC,EAAOrqC,IACxBS,EAAKpI,KAAK2H;AAEd,OAAOS,mCAGX,WACI,OAAItT,KAAKod,KAAK2lC,UACI/iD,KAAKod,KAAK2lC,UAAUlhC,KAAI,SAAChV,GACnC,MAAO,eAAiBA,KAIrB7M,KAAKgjD,mCAIpB,WAEIhjD,KAAKijD,aAAejjD,KAAKijD,+CA5BiBjnC,EAAAA,oHAEP;0CAFtB8mC;MCPEvjD,MAAMyc,UAAU5c,OAAO,CAC1CO,KAAMJ,MAAMC,OAAOC,UACnBG,QAASL,MAAMC,OAAOC,UACtByjD,UAAW3jD,MAAMC,OAAOC,UACxB0jD,aAAc5jD,MAAMC,OAAOC,UAC3BuuB,cAAezuB,MAAMC,OAAOC,UAC5BkD,OAAQmU,GAAGjY,OAAO+J,OAAO,CACrBw6C,QAAQ,EACRC,KAAK,EACLC,MAAM,EACN91C,SAAS,IAEb+sC,QAAS,CACL3Z,OAAQ,SAAUp9B,EAAOzE,GAIrB,OAHIiB,KAAKf,IAAI,oCACTe,KAAKmC,IAAI,eAAiBqB,EAAOzE,GAE9BiB,KAAKmC,IAAI,UAAYqB,GAAO,IAEvCsjC,KAAM,WAAY,IACVtjC,EAAO+/C,EAAU1wC,EAAGE,EAAc9G,EADxBnH,EAAA9E;AAId,IAFAujD,GAAW,EAEN1wC,EAAI,EAAGE,GADZ9G,EAAM,CAAC,SAAU,MAAO,OAAQ,YACViH,OAAQL,EAAIE,EAAKF,IACnCrP,EAAQyI,EAAI4G,GACP7S,KAAKf,IAAI,QAAUuE,IAAwC,KAA9BxD,KAAKf,IAAI,QAAUuE,GAIjDxD,KAAKmC,IAAI,UAAYqB,GAAO,IAH5BxD,KAAKmC,IAAI,UAAYqB,GAAO,GAC5B+/C,GAAW;AAKnB,IAAKA,EAaD,OAZUvjD,KAAKf,IAAI,aAAasK,KAAK,CACjCzI,IAAK,gBACLD,OAAQ,MACRI,KAAM,CACFmiD,OAAQpjD,KAAKf,IAAI,eACjBokD,IAAKrjD,KAAKf,IAAI,YACdqkD,KAAMtjD,KAAKf,IAAI,aACfuO,QAASxN,KAAKf,IAAI,gBAClBukD,UAAWxjD,KAAKf,IAAI,qBAIbgG,MAAK,WAEhB,OACIH,EAAK7F,IAAI,oCACmB,UAA5B6F,EAAK7F,IAAI,eAEC6F,EAAK7F,IAAI,aAAasK,KAAK,CACjCzI,IAAK,cACLD,OAAQ,MACRI,KAAM,CACFmiD,OAAQt+C,EAAK7F,IAAI,eACjBokD,IAAKv+C,EAAK7F,IAAI,YACdqkD,KAAMx+C,EAAK7F,IAAI,aACfuO,QAAS1I,EAAK7F,IAAI,gBAElBwkD,YAAa,WAGNx+C,MAAK,WAChB,OAAOH,EAAK7F,IAAI,iBAAiB0K,QAC7B7E,EAAK7F,IAAI,QAAQqD,EAAE,iBACnB,CACI2rB,WAAW,OAKhBnpB,EAAK7F,IAAI,iBAAiB0K,QAC7B7E,EAAK7F,IAAI,QAAQqD,EAAE,iBACnB,CACI2rB,WAAW;;ACpF3C,IAAM9R,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,w/KAAAzZ,KAAA,CAAA0Z,WAAA,uEAGbhd,MAAAid;;MCUMjd,MAAMyc,UAAU5c,OAAOskD,EAAAA,QAAWC,EAAAA,QAAW,CAC9DliB,UAAWliC,MAAMC,OAAOC,QAAQ,qBAChCyjD,UAAW3jD,MAAMC,OAAOC,QAAQ,aAChCyN,MAAO3N,MAAMC,OAAOC,UACpBE,KAAMJ,MAAMC,OAAOC,UACnBmkD,kBAAmB,KACnBv+C,KAAM,GACN69B,YAAa,GACb2gB,SAAUtkD,MAAMqjB,GACZ,OACArjB,MAAMukD,SAAS,QAAS,cAAe,OAAO,WAAY,IAClDC,EAAG/5C,EAD+ClF,EAAA9E;AAiCtD,OA/BA+jD,EAAI/jD,KAAKf,IAAI,cAET+K,EADAhK,KAAKf,IAAI,SAAgC,iBAArBe,KAAKf,IAAI,QACnBe,KAAKf,IAAI,aAAaA,IAAIe,KAAKf,IAAI,OAAQe,KAAKf,IAAI,UAEpD8kD,EAAEC,MAAM,CACdljD,IAAKd,KAAKf,IAAI,UAGdgG,MAAK,SAAChE,GACV,IAAI4R,EAAGyqC,EAAGz2C,EAAKkM,EAAKkxC,EAAM30C,EAAK40C,EAAaj4C,EAAKgW,EAAKjN;AAMtD,GALAlQ,EAAK3C,IAAI,OAAQlB,EAAKiY,OACjBpU,EAAK7F,IAAI,iBACV6F,EAAK3C,IAAI,YAAasP,KAAKE,KAAK1Q,EAAKiY,MAAQpU,EAAK7F,IAAI,iBAE1DgjB,EAAMhhB,EAAKA,KACPA,EAAKiY,MAAQ,GAAKjY,EAAKA,KAAK,aAAcW,MAAO,CAGjD,IAFAsiD,EAAc,GAETrxC,EAAI,EAAGE,GADZ9G,EAAMhL,EAAKA,MACWiS,OAAQL,EAAIE,EAAKF,IAAK,CAGxC,IADAvD,EAAM,GACDzI,EAAMy2C,EAAI,EAAG2G,GAFlBjvC,EAAM/I,EAAI4G,IAEmBK,OAAQoqC,EAAI2G,EAAMp9C,IAAQy2C,EACnDr8C,EAAO+T,EAAInO,GACXyI,EAAIzI,GAAO5F;AAEfijD,EAAYh5C,KAAKoE,GAErB2S,EAAMiiC,EAEV,OAAOp/C,EAAK3C,IAAI,OAAQ8f,MAErBjY,MAGf3G,MAAO9D,MAAMwB,SAASmhC,MAAM,WAC5BphC,IAAKvB,MAAMwB,SAAS,QAAS,cAAe,cAAe,QAAQ,WAC/D,IAAIsC,EAAO8gD,EAAejhB,EAAapiC;AAwBvC,OAvBAA,EAAMd,KAAKf,IAAI,SACfoE,EAAQrD,KAAKf,IAAI,YAEbklD,EAAgB,GAChB/6C,EAAAA,QAAEe,KAAK9G,GAAO,SAAUwD,EAAKoP,GACzB,GAAKA,EAAKlX,MAGV,OAAOolD,EAAcj5C,KAAK+K,EAAKpJ,KAAO,IAAMoJ,EAAKlX,UAErD+B,IAAQA,EAAIgB,SAAS,KAAO,IAAM,KAAOqiD,EAAcxmC,KAAK,MAE3D3d,KAAKf,IAAI,kBAEV6B,GAAO,WADPoiC,EAAcljC,KAAKf,IAAI,gBAEH,QAAhBikC,IACApiC,GAAO,WAAaoiC,GAAeljC,KAAKf,IAAI,eAAiB,MAI3C,IAAtB6B,EAAI6H,QAAQ,OACZ7H,EAAMA,EAAIsO,QAAQ,IAAK,MAEpBtO,KAEXG,KAAM6V,GAAG2V,EAAE,IACXiY,QAAS5tB,GAAG/V,SAAS,QAAQ,WACzB,IAAI2jC,EAAS0f;AACb,OAAKpkD,KAAKf,IAAI,UAGdmlD,EAAWpkD,KAAKf,IAAI,sBAIpBylC,EAAU5tB,GAAG2V,EAAE,IACfrjB,EAAAA,QAAEe,KAAKi6C,GAAU,SAAUv9C,EAAKoP,GAC5B,OAAOyuB,EAAQhW,WAAW7nB,MAEvB69B,GAVI5tB,GAAG2V,EAAE,OAYpB43B,kBAAmBvtC,GAAG/V,SAAS,WAAW,WACtC,IAAI2jC,EAAS/kC,EAAM2kD,EAAoBV;AAEvC,OADAA,EAAoB5jD,KAAKf,IAAI,uBAEzBylC,EAAU1kC,KAAKf,IAAI,WACnBU,EAAOK,KAAKf,IAAI,QAChBqlD,EAAqB,GACrBl7C,EAAAA,QAAEe,KAAKu6B,GAAS,SAAC79B,EAAKoP,GAClB,OAAOquC,EAAmBp5C,KAAKvL,EAAK2C,EAAEshD,EAAoB,IAAM3tC,OAE7DquC,GAEJtkD,KAAKf,IAAI,cAEpBslD,aAAchlD,MAAMwB,SAAS,UAAW,OAAQ,qBAAqB,WAAY,IAAA8V,EAAA7W;AAC7E,OAAO,IAAI8W,GAAGrR,KAAKwC,SAAQ,SAACvC,EAASwC,GAEjC,OADA2O,EAAK1U,IAAI,cAAe,OACjB0U,EAAKgtC,WAAW5+C,MAAK,WAExB,OADA4R,EAAK1U,IAAI,cAAe,IACjBuD,EACHmR,EAAK2tC,sBACD3tC,EAAK5X,IAAI,WACT4X,EAAK5X,IAAI,QACT4X,EAAK5X,IAAI,gCAM7BwlD,aAAcllD,MAAMwB,SAAS,UAAW,OAAQ,qBAAqB,WAAY,IAAA0iB,EAAAzjB;AAC7E,OAAO,IAAI8W,GAAGrR,KAAKwC,SAAQ,SAACvC,EAASwC,GAEjC,OADAub,EAAKthB,IAAI,cAAe,OACjBshB,EAAKogC,WAAW5+C,MAAK,WACxB,OAAOS,EACH+d,EAAKihC,iBACDjhC,EAAKxkB,IAAI,WACTwkB,EAAKxkB,IAAI,QACTwkB,EAAKxkB,IAAI,gCAW7BkkC,YAAa,EACbwhB,eAAgBplD,MAAMwB,SAAS87C,GAAG,YAAa,GAC/CK,MAAO39C,MAAMwB,SAAS,aAAa,WAE/B,OAAO+V,GAAG2V,EACN,WAEI,IADA,IAAI2wB,EAAU,GAENvqC,EAAI,EAAG5G,EAAMjM,KAAKf,IAAI,aAC1B,GAAKgN,EAAM4G,GAAK5G,EAAM4G,GAAK5G,EAC3B,GAAKA,EAAM4G,IAAMA,IAEjBuqC,EAAQlyC,KAAK2H;AAEjB,OAAOuqC,GACTl9C,MAAMF,UAGhB4kD,gBAAiBrlD,MAAMwB,SAAS87C,GAAG,cAAe,GAClDe,YAAar+C,MAAMwB,SAAS,cAAe,aAAa,WACpD,OAAOf,KAAKf,IAAI,eAAiBe,KAAKf,IAAI,gBAE9Cs7C,QAAS,CACLsK,aAAc,SAAUjrB,EAAQjV,GAC5B,MAAe,sBAAXiV,EACOjV,EAAOiV,OAAOkrB,KAAK1yB,KAAKpyB,KAAxB2kB,CAA8BA,EAAOxM,MAErCnY,KAAK+kD,WAAWnrB,EAAQjV,IAGvCqgC,SAAU,WACN,OAAOhlD,KAAKmC,IAAI,cAAenC,KAAKf,IAAI,eAAiB,IAE7DgmD,aAAc,WACV,OAAOjlD,KAAKmC,IAAI,cAAenC,KAAKf,IAAI,eAAiB,IAE7DimD,WAAY,SAAUld,GAClB,OAAOhoC,KAAKmC,IAAI,cAAe6lC,IAEnCmd,WAAY,WAAY,IAChBpB,EAAG96C,EAAMiE,EADOuvB,EAAAz8B;AAKpB,OAHAiJ,EAAOjJ,KACP+jD,EAAI/jD,KAAKf,IAAI,aACbiO,EAAQlN,KAAKf,IAAI,SACVe,KAAKf,IAAI,gBAAgBgG,MAAK,SAACisC,GAClC,OAAIjoC,EAAKhK,IAAI,gBACFgK,EAAKhK,IAAI,SAAS2H,SAAQ,SAAUw+C,GACvC,GAAIA,EAAK,OAAan8C,EAAKhK,IAAI,gBAC3B,OAAOiO,EACF+e,WAAWm5B,EAAK,KAAUA,EAAK,OAC/BngD,MAAK,SAAUhE,GACZ,IAAIokD;AAKJ,OAJAA,EACItB,EAAE5qC,wBAAwB,WAAYisC,EAAK,MAC3C,KACAnkD,EAAKhC,IAAI,QACNgK,EACF2oC,sBAAsB,CAACV,GAAU,WAAYmU,EAAW,IACxDpgD,MAAK,SAAU8nB,GACZ,GACuB,oBAAZ8kB,SACK,OAAZA,QAEA,OAAO5oC,EACFhK,IAAI,WACJ6yC,SAAS/kB,EAAM,4BAOzC0P,EAAKmV,sBAAsB,CAACV,IAAUjsC,MAAK,SAAU8nB,GACxD,GAAuB,oBAAZ8kB,SAAuC,OAAZA,QAClC,OAAO5oC,EAAKhK,IAAI,WAAW6yC,SAAS/kB,EAAM,0BAM9Du4B,WAAY,WAAY,IAAA3oB,EAAA38B;AACpB,OAAOA,KAAKf,IAAI,gBAAgBgG,MAAK,SAACisC,GAClC,OAAOvU,EAAK4oB,sBAAsBrU;eC1OlDxyC,OAAA,4BAAA,CAAA,UAAA,8CAAA,SAAAC,EAAA6mD,GAGA3mD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAumD,EAAAtmD;MCDsBK,MAAMyc,UAAU5c,OAAO,CACzCqmD,UAAW3uC,GAAG8L,GAAG,QAAQ,WACrB,IAAIrT,EAAKsD,EAAGoD,EAAMlD,EAAKhU;AAEvB,IADAA,EAAQiB,KAAKf,IAAI,YAEQ,iBAAVF,IACPA,EAAQmE,KAAKwD,MAAM1G,KAAKf,IAAI,WAE5B2C,MAAMkB,QAAQ/D,IAAQ,CAEtB,IADAwQ,EAAMuH,GAAG2V,EAAE,IACN5Z,EAAI,EAAGE,EAAMhU,EAAMmU,OAAQL,EAAIE,EAAKF,IACrCoD,EAAOlX,EAAM8T,GACbtD,EAAImf,WAAW,CACX3vB,MAAOuS,SAAS2E,EAAM;AAG9B,OAAOjW,KAAKmC,IAAI,QAASoN,OAIrCm2C,SAAU5uC,GAAGgtC,SAAS,WAAY,qBAAqB,WACnD,IAAIjxC,EAAGoD,EAAMlD,EAAK9G,EAAKlN;AAGvB,IAFAA,EAAQ,GAEH8T,EAAI,EAAGE,GADZ9G,EAAMjM,KAAKf,IAAI,UACOiU,OAAQL,EAAIE,EAAKF,IAEhB,MADnBoD,EAAOhK,EAAI4G,IACF9T,OACLA,EAAMmM,KAAK+K,EAAKlX;AAGxB,OAAOQ,MAAMkD,IAAIkjD,KAAK3lD,MAAM,WACxB,OAAOA,KAAKmC,IAAI,QAASe,KAAKC,UAAUpE,UAGhD6mD,WAAY9uC,GAAGgtC,SAAS,WAAW,WAC/B,IAAK9jD,KAAKf,IAAI,WACV,OAAOe,KAAKmC,IAAI,UAAW,kBAGnCo4C,QAAS,CACL7rC,IAAK,WAID,OAHK1O,KAAKf,IAAI,UACVe,KAAKmC,IAAI,QAAS2U,GAAG2V,EAAE,KAEpBzsB,KAAKf,IAAI,SAASyvB,WAAW,CAChC3vB,MAAO,MAGf6P,OAAQ,SAAUU,GACd,OAAOtP,KAAKf,IAAI,SAASovB,aAAa/e;;MC/C3B/P,MAAMyc,UAAU5c,OAAO,CAE1CiL,QAASyM,GAAG2V,EAAE,IAEdo5B,mBAAoB/uC,GAAG/V,SAAS,cAAc,WAC1C,IAAI8R,EAAGE,EAAKxI,EAAQF,EAASy7C;AAG7B,IAFAz7C,EAAUrK,KAAKf,IAAI,WACnB6mD,EAAMhvC,GAAG2V,EAAE,IACN5Z,EAAI,EAAGE,EAAM1I,EAAQ6I,OAAQL,EAAIE,EAAKF,IACvCtI,EAASF,EAAQwI,GACjBizC,EAAI56C,KAAK,CACLnM,MAAOwL;AAGf,OAAOu7C,KAEXC,cAAejvC,GAAGgtC,SAAS,kCAAkC,WACzD,IAAIjxC,EAAG2qC,EAAGzqC,EAAKzD,EAAKw2C,EAAK1I;AAGzB,IADAA,EAAU,GACLI,EAAI3qC,EAAI,EAAGE,GAFhB+yC,EAAM9lD,KAAKf,IAAI,uBAEWiU,OAAQL,EAAIE,EAAKyqC,IAAM3qC,EAC7CvD,EAAMw2C,EAAItI,GACVJ,EAAQlyC,KAAKlL,KAAKmC,IAAI,WAAaq7C,EAAGluC,EAAIvQ;AAE9C,OAAOq+C,KAGX4I,UAAU,EAAAC,EAAA3jD,GAAE,gBAEZ4jD,SAAS,EAAAD,EAAA3jD,GAAE,eAEXmf,UAAU,EACV84B,QAAS,CAEL7rC,IAAK,WACD,OAAO1O,KAAKf,IAAI,WAAWyvB,WAAW,KAG1C9f,OAAQ,SAAUU,EAAK5D,GACnB,OAAO1L,KAAKf,IAAI,WAAWovB,aAAa/e,EAAIvQ,QAGhD+nC,KAAM,WACF,GAAI9mC,KAAKf,IAAI,QACT,OAAOe,KAAK8mC,KAAK9mC,KAAKf,IAAI;eCtD1CP,OAAA,2BAAA,CAAA,UAAA,6CAAA,SAAAC,EAAAwnD,GAGAtnD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAknD,EAAAjnD,cCTAR,OAAA,wCAAA,CAAA,UAAA,2DAAA,SAAAC,EAAAynD,GAGAvnD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAmnD,EAAAlnD,cCTAR,OAAA,6CAAA,CAAA,UAAA,gEAAA,SAAAC,EAAA0nD,GAGAxnD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAonD,EAAAnnD,cCTAR,OAAA,wCAAA,CAAA,UAAA,2DAAA,SAAAC,EAAA2nD,GAGAznD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAqnD,EAAApnD;ACTAR,OAAA,gCAAA,CAAA,UAAA,mDAAA,SAAAC,EAAA4nD,GAGA1nD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAsnD,EAAArnD;MCGuBK,MAAMyc,UAAU5c,OAAO,CAC1CQ,QAASL,MAAMC,OAAOC,UACtByjD,UAAW3jD,MAAMC,OAAOC,UACxB0jD,aAAc5jD,MAAMC,OAAOC,UAC3BE,KAAMJ,MAAMC,OAAOC,UACnBuuB,cAAezuB,MAAMC,OAAOC,UAC5B+mD,iBAAkB,WACd,OAAO,EAAAC,EAAAvnD,SAAE,IAAMc,KAAKf,IAAI,gBAAgBynD,SAAS,OASrD/jD,OAAQpD,MAAMV,OAAO+J,OAAO,CACxBw6C,QAAQ,EACRC,KAAK,EACLC,MAAM,EACN91C,SAAS,IAEbm5C,mBAAoB7vC,GAAG/V,UAAS,WAE5B,MAA6D,OAAzDf,KAAKf,IAAI,+CAKjB2nD,uBAAwB9vC,GAAG8L,GAAG,QAAQ,WAWlC,IAAI3hB;AAuGJ,OAtGAA,EAAO,CACH,CACI0C,GAAI,OACJkJ,KAAM,oCAEV,CACIlJ,GAAI,UACJkJ,KAAM,mCAEV,CACIlJ,GAAI,cACJkJ,KAAM,8BAEV,CACIlJ,GAAI,MACJkJ,KAAM,+BAEV,CACIlJ,GAAI,cACJkJ,KAAM,8BAEV,CACIlJ,GAAI,OACJkJ,KAAM,0BAEV,CACIlJ,GAAI,WACJkJ,KAAM,2BAEV,CACIlJ,GAAI,OACJkJ,KAAM,uCAEV,CACIlJ,GAAI,UACJkJ,KAAM,0CAEV,CACIlJ,GAAI,UACJkJ,KAAM,mCAEV,CACIlJ,GAAI,SACJkJ,KAAM,qBAEV,CACIlJ,GAAI,WACJkJ,KAAM,8BAEV,CACIlJ,GAAI,KACJkJ,KAAM,+BAEV,CACIlJ,GAAI,OACJkJ,KAAM,+CAEV,CACIlJ,GAAI,SACJkJ,KAAM,yBAEV,CACIlJ,GAAI,MACJkJ,KAAM,yBAEV,CACIlJ,GAAI,WACJkJ,KAAM,0BAEV,CACIlJ,GAAI,QACJkJ,KAAM,+BAEV,CACIlJ,GAAI,cACJkJ,KAAM,uCAEV,CACIlJ,GAAI,SACJkJ,KAAM,2BAEV,CACIlJ,GAAI,UACJkJ,KAAM,6BAEV,CACIlJ,GAAI,cACJkJ,KAAM,0CAEV,CACIlJ,GAAI,QACJkJ,KAAM,4BAEV,CACIlJ,GAAI,QACJkJ,KAAM,+BAEV,CACIlJ,GAAI,iBACJkJ,KAAM,sCAGP7M,KAAKmC,IAAI,sBAAuBlB,MAE3CwiD,YAAa,QACboD,iBAAkB/vC,GAAG/V,UAAS,WAC1B,MAAO,CACHyrC,MAAOxsC,KAAKf,IAAI,iCAGxB6nD,kBAAmB,WAAY,IAAAhiD,EAAA9E;AAa3B,OAXUA,KAAKf,IAAI,aAAasK,KAAK,CACjCzI,IAAK,gBACLD,OAAQ,MACRI,KAAM,CACFmiD,OAAQpjD,KAAKf,IAAI,uBACjBokD,IAAKrjD,KAAKf,IAAI,oBACdqkD,KAAMtjD,KAAKf,IAAI,qBACfuO,QAASxN,KAAKf,IAAI,wBAClBukD,UAAWxjD,KAAKf,IAAI,6BAGbgG,MAAK,WAEhB,OAAIH,EAAK7F,IAAI,WACT,EAAAwnD,EAAAvnD,SAAE,UAAU6nD,MAAM,QACXjiD,EAAKk1B,SAELl1B,EAAK7F,IAAI,iBAAiB0K,QAAQ7E,EAAK7F,IAAI,QAAQqD,EAAE,iBAAkB,CAC1E2rB,WAAW,QAK3BssB,QAAS,CACLyM,YAAa,SAAUjlC,GACnB,GAAIA,EAIA,OAHA/hB,KAAKmC,IAAI,uBAAwBnC,KAAKf,IAAI,qBAC1Ce,KAAKmC,IAAI,wBAAyBnC,KAAKf,IAAI,sBAC3Ce,KAAKmC,IAAI,2BAA4BnC,KAAKf,IAAI,yBACvCe,KAAKmC,IAAI,0BAA2BnC,KAAKf,IAAI,yBAG5DgoD,eAAgB,SAAUC,GACtB,OAAOlnD,KAAKmC,IAAI,cAAe+kD,IAEnCv4C,KAAM,WAEF,OADA3O,KAAKmC,IAAI,YAAY,GACdnC,KAAK24B,KAAK,SAErBqB,MAAO,WAEH,IADA,EAAAysB,EAAAvnD,SAAE,UAAU6nD,MAAM,QACd/mD,KAAKf,IAAI,SACT,OAAOe,KAAKg6B,SAGpB8M,KAAM,WAAY,IACVqgB,EAAU3jD,EAAO+/C,EAAU1wC,EAAGE,EAAKlS,EAAiBoL,EAD1C4K,EAAA7W;AA8Cd,GA5CAmnD,EAAW,GAEPtmD,EADAb,KAAKf,IAAI,YACA,MAEA,OAEmB,aAA5Be,KAAKf,IAAI,gBACTe,KAAKmC,IAAI,yBAA0B,MACnCnC,KAAKmC,IAAI,uBAAwB,MACjCnC,KAAKmC,IAAI,wBAAyB,MAClCnC,KAAKmC,IAAI,2BAA4B,MACrCnC,KAAKmC,IAAI,0BAA2B,OACD,UAA5BnC,KAAKf,IAAI,gBAChBe,KAAKmC,IAAI,uBAAwB,MACjCnC,KAAKmC,IAAI,wBAAyB,MAClCnC,KAAKmC,IAAI,2BAA4B,MACrCnC,KAAKmC,IAAI,sCAAuC,MAChDnC,KAAKmC,IAAI,qCAAsC,OACZ,UAA5BnC,KAAKf,IAAI,iBAChBe,KAAKmC,IAAI,sCAAuC,MAChDnC,KAAKmC,IAAI,qCAAsC,MAC/CnC,KAAKmC,IAAI,yBAA0B,OAGnCnC,KAAKf,IAAI,yCACmB,UAA5Be,KAAKf,IAAI,gBAETkoD,EAAQ,OAAannD,KAAKf,IAAI,uBAC9BkoD,EAAQ,IAAUnnD,KAAKf,IAAI,oBAC3BkoD,EAAQ,KAAWnnD,KAAKf,IAAI,qBAC5BkoD,EAAQ,QAAcnnD,KAAKf,IAAI,0BAE/BkoD,EAAQ,OAAannD,KAAKf,IAAI,2BAC9BkoD,EAAQ,IAAUnnD,KAAKf,IAAI,wBAC3BkoD,EAAQ,KAAWnnD,KAAKf,IAAI,yBAC5BkoD,EAAQ,QAAcnnD,KAAKf,IAAI,6BAEnCkoD,EAAQ,YAAkBnnD,KAAKf,IAAI,eACnCkoD,EAAQ,MAAYnnD,KAAKf,IAAI,0BAC7BkoD,EAAQ,mBAAyBnnD,KAAKf,IAAI,uCAC1CkoD,EAAQ,kBAAwBnnD,KAAKf,IAAI,sCACzCkoD,EAAQ,YAAkBnnD,KAAKf,IAAI,gCACnCkoD,EAAQ,oBAA0BnnD,KAAKf,IAAI,wCAC3CskD,GAAW,EACqB,aAA5BvjD,KAAKf,IAAI,eAET,IAAK4T,EAAI,EAAGE,GADZ9G,EAAM,CAAC,SAAU,MAAO,OAAQ,YACViH,OAAQL,EAAIE,EAAKF,IACnCrP,EAAQyI,EAAI4G,GAEP7S,KAAKf,IACF,gBAAkBuE,GAASxD,KAAKf,IAAI,gBAAkBuE,GAAU,KAMpExD,KAAKmC,IAAI,UAAYqB,GAAO,IAH5BxD,KAAKmC,IAAI,UAAYqB,GAAO,GAC5B+/C,GAAW;AAMvB,IAAKA,EAMD,OALUvjD,KAAKf,IAAI,aAAasK,KAAK,CACjCzI,IAAK,cACLD,OAAQA,EACRI,KAAMkmD,IAEKliD,MAAK,WAEhB,OAAI4R,EAAK5X,IAAI,SACF4X,EAAKiwC,oBAERjwC,EAAK5X,IAAI,WACT,EAAAwnD,EAAAvnD,SAAE,UAAU6nD,MAAM,QACXlwC,EAAKmjB,SAELnjB,EAAK5X,IAAI,iBAAiB0K,QAC7BkN,EAAK5X,IAAI,QAAQqD,EAAE,iBACnB,CACI2rB,WAAW;;MChShCm5B,EAAAA;;MCAAC,EAAAA;eCFf3oD,OAAA,8BAAA,CAAA,UAAA,4CAAA,SAAAC,EAAA2oD,GAGAzoD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAqoD,EAAApoD,cCTAR,OAAA,mCAAA,CAAA,UAAA,iDAAA,SAAAC,EAAA4oD,GAGA1oD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAsoD,EAAAroD,cCTAR,OAAA,wCAAA,CAAA,UAAA,sDAAA,SAAAC,EAAA6oD,GAGA3oD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAuoD,EAAAtoD,cCTAR,OAAA,yCAAA,CAAA,UAAA,uDAAA,SAAAC,EAAA8oD,GAGA5oD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAwoD,EAAAvoD,cCTAR,OAAA,iCAAA,CAAA,UAAA,+CAAA,SAAAC,EAAA+oD,GAGA7oD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAyoD,EAAAxoD,cCTAR,OAAA,wCAAA,CAAA,UAAA,sDAAA,SAAAC,EAAAgpD,GAGA9oD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA0oD,EAAAzoD,cCTAR,OAAA,2BAAA,CAAA,UAAA,yCAAA,SAAAC,EAAAipD,GAGA/oD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA2oD,EAAA1oD,cCTAR,OAAA,6BAAA,CAAA,UAAA,2CAAA,SAAAC,EAAAkpD,GAGAhpD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA4oD,EAAA3oD,cCTAR,OAAA,6BAAA,CAAA,UAAA,2CAAA,SAAAC,EAAAmpD,GAGAjpD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA6oD,EAAA5oD,cCTAR,OAAA,oCAAA,CAAA,UAAA,kDAAA,SAAAC,EAAAgpD,GAGA9oD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA0oD,EAAAzoD,cCTAR,OAAA,kCAAA,CAAA,UAAA,gDAAA,SAAAC,EAAAopD,GAGAlpD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA8oD,EAAA7oD,cCTAR,OAAA,0CAAA,CAAA,UAAA,wDAAA,SAAAC,EAAAqpD,GAGAnpD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA+oD,EAAA9oD,cCTAR,OAAA,uCAAA,CAAA,UAAA,qDAAA,SAAAC,EAAA4oD,GAGA1oD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAsoD,EAAAroD,cCTAR,OAAA,0CAAA,CAAA,UAAA,wDAAA,SAAAC,EAAAspD,GAGAppD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAgpD,EAAA/oD,cCTAR,OAAA,oCAAA,CAAA,UAAA,kDAAA,SAAAC,EAAAupD,GAGArpD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAipD,EAAAhpD,cCTAR,OAAA,0BAAA,CAAA,UAAA,wCAAA,SAAAC,EAAAwpD,GAGAtpD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAkpD,EAAAjpD,cCTAR,OAAA,+BAAA,CAAA,UAAA,6CAAA,SAAAC,EAAA6oD,GAGA3oD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAuoD,EAAAtoD,cCTAR,OAAA,iCAAA,CAAA,UAAA,+CAAA,SAAAC,EAAAypD,GAGAvpD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAmpD,EAAAlpD,cCTAR,OAAA,iCAAA,CAAA,UAAA,+CAAA,SAAAC,EAAA0pD,GAGAxpD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAopD,EAAAnpD,cCTAR,OAAA,iCAAA,CAAA,UAAA,+CAAA,SAAAC,EAAA2pD,GAGAzpD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAqpD,EAAAppD,cCTAR,OAAA,uCAAA,CAAA,UAAA,qDAAA,SAAAC,EAAA4pD,GAGA1pD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAspD,EAAArpD,cCTAR,OAAA,uCAAA,CAAA,UAAA,qDAAA,SAAAC,EAAA8oD,GAGA5oD,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAwoD,EAAAvoD;MCWoBK,MAAMyc,UAAU5c,OAAOskD,EAAAA,QAAW,CAClDjiB,UAAWliC,MAAMC,OAAOC,QAAQ,qBAChC+oD,eAAgBjpD,MAAMC,OAAOC,UAE7BoH,IAAK,KAELxD,MAAO,KAEPolD,SAAS,EACTvlB,YAAa,GACbC,YAAa,EACbqjB,iBAAkB,WACd,OAAOxmD,KAAK0oD,mBAEhBA,gBAAiB,WACb,IAAIC,EAAa1/C,EAAMgoC;AAGvB,GAFA0X,EAAc,CAAC,MAAO,SACtB1X,EAAWjxC,KAAKf,IAAI,YAKpB,OADAgK,EAAOjJ,KACAoJ,EAAAA,QAAEe,KAAKw+C,GAAa,SAAU9hD,EAAKoP,GACtC,IAAI2yC;AACJ,MAAM3yC,KAASg7B,GAKf,OAFYhoC,EAAKhK,IAAIgX,MACrB2yC,EAAY3X,EAASh7B,IAEVhN,EAAK9G,IAAI8T,EAAM2yC,QAD1B,MAINC,SAAS,eAAgB,kBAC3BC,OAAQvpD,MAAMwB,SAAS,QAAQ,WAC3B,MAAO,SAAWf,KAAKf,IAAI,WAE/BgC,KAAM1B,MAAMwB,UAAS,eACrBgoD,WAAYxpD,MAAMqjB,GACd,OACArjB,MAAMukD,SAAS,QAAS,eAAe,WAAY,IAC3CC,EAAGl9C,EAAKmD,EADmClF,EAAA9E;AAG/C,OADA6G,EAAM7G,KAAKf,IAAI,SAIf8kD,EAAI/jD,KAAKf,IAAI,aACbe,KAAKmC,IAAI,WAAW,GACpBnC,KAAKmC,IAAI,SAAS,GAClBnC,KAAKmC,IAAI,oBAAqB,MAC9BnC,KAAKmC,IAAI,OAAQ,MACjBnC,KAAKmC,IAAI,YAAa,MACtBnC,KAAKmC,IAAI,WAAW,GACpBnC,KAAKmC,IAAI,OAAQ,OACjB6H,EAAU+5C,EAAEiF,MAAM,CACdloD,IAAKd,KAAKipD,YACVpoD,OAAQb,KAAKkpD,cAAgBlpD,KAAKkpD,cAAgB,SAE9CjkD,MAAK,SAAChE,GACV,IAAI48C,EAAOl8C;AAEX,GADAmD,EAAK3C,IAAI,WAAW,GACK,SAArB2C,EAAK7F,IAAI,QAAb,CAIA,IAAKgC,EAID,OAHA6D,EAAK3C,IAAI,OAAQ,IACjB2C,EAAK3C,IAAI,YAAa,WACtB2C,EAAK3C,IAAI,WAAW;AAGxB,IACI07C,EAAQ36C,KAAKwD,MAAMzF,GACrB,MAAO8V,GAIL,MAHApV,EAAQoV,EACRjS,EAAK3C,IAAI,QAAS,eAClB2C,EAAK3C,IAAI,oBAAqBlB,GACxB,IAAIsG,MACN,+CAAiDV,EAAM,IAAMlF,GAIrE,OADAmD,EAAK3C,IAAI,YAAasP,KAAKE,KAAKksC,EAAM3kC,MAAQpU,EAAK7F,IAAI,iBAC9B,UAArB4+C,EAAMsL,YACNrkD,EAAK3C,IAAI,OAAQ2C,EAAKskD,iBAAiBvL,EAAM58C,OAC7C6D,EAAK3C,IAAI,YAAa,MACf2C,EAAK3C,IAAI,WAAW,KAE3B2C,EAAK3C,IAAI,OAAQ,MACjB2C,EAAK3C,IAAI,YAAa07C,GACf/4C,EAAK3C,IAAI,WAAW,IA3B3B2C,EAAK3C,IAAI,OAAQ,IAAI5C,MAAMua,OAAOiH,SAAS9f,OA8B5C+I,GAhDI,SAmDnBu6C,aAAchlD,MAAMwB,UAAS,WAAY,IAAA8V,EAAA7W;AACrC,OAAO,IAAI8W,GAAGrR,KAAKwC,SAAQ,SAACvC,EAASwC,GAGjC,OADU2O,EAAKkyC,aACA9jD,MAAK,WAChB,IAAI4b;AACJ,OAAIhK,EAAK5X,IAAI,aACT4hB,EAAYwoC,EAAAA,QAAUzgD,OAAO,CACzBnH,QAASoV,EAAK5X,IAAI,OAClByL,KAAM,QACN4+C,cAAc,EAAA7C,EAAAvnD,SAAE,kBAEViD,IAAI,OAAQ0U,EAAK5X,IAAI,cACxByG,EAAQ,CACX6jD,MAAO1oC,EAAU5hB,IAAI,SAASuqD,cAC9Br1B,MAAO,OAGJzuB,EACHmR,EAAK2tC,sBAAsB3tC,EAAK5X,IAAI,WAAY4X,EAAK5X,IAAI,mBAM7EwqD,WAAYlqD,MAAMwB,UAAS,WAAY,IAAA0iB,EAAAzjB;AACnC,OAAO,IAAI8W,GAAGrR,KAAKwC,SAAQ,SAACvC,EAASwC,GACjC,IAAI8B,EAASmO;AAGb,OAFAnO,EAAUyZ,EAAKslC,aACf5wC,EAAO,GACAnO,EAAQ/E,MAAK,WAChB,IAAI6gC,EAAQpB,EAASglB,EAAU72C,EAAGyqC,EAAGvqC,EAAKkxC,EAAM0F,EAAQ30C;AAIxD,IAHAmD,EAAKjN,KAAKuY,EAAKxkB,IAAI,YACnByqD,EAAWjmC,EAAKxkB,IAAI,QACpBylC,EAAUjhB,EAAKxkB,IAAI,WACd4T,EAAI,EAAGE,EAAM22C,EAASx2C,OAAQL,EAAIE,EAAKF,IAAK,CAG7C,IAFAmC,EAAM00C,EAAS72C,GACf82C,EAAS,GACJrM,EAAI,EAAG2G,EAAOvf,EAAQxxB,OAAQoqC,EAAI2G,EAAM3G,IACzCxX,EAASpB,EAAQ4Y,GACjBqM,EAAOz+C,KAAK8J,EAAI8wB;AAEpB3tB,EAAKjN,KAAKy+C,GAEd,OAAOjkD,EAAQyS,YAK3B8wC,UAAW,WACP,IAAIp2C,EAAGoD,EAAMlD,EAAK1P,EAAO8gD,EAAerjD;AAExC,GADAA,EAAMd,KAAKf,IAAI,OACf,CAOA,IAJAoE,EAAQrD,KAAKf,IAAI,YAEboE,EAAQrD,KAAK4pD,mBAEbvmD,EAAO,CAEP,IADA8gD,EAAgB,GACXtxC,EAAI,EAAGE,EAAM1P,EAAM6P,OAAQL,EAAIE,EAAKF,IAAK,CAE1C,KADAoD,EAAO5S,EAAMwP,IACH9T,MACN;AAEJolD,EAAcj5C,KAAK+K,EAAKpJ,KAAO,IAAMoJ,EAAKlX,OAE9C+B,GAAO,IAAMqjD,EAAcxmC,KAAK,KAC3B3d,KAAKf,IAAI,aACV6B,GACI,UACAd,KAAKf,IAAI,eACT,WACAe,KAAKf,IAAI,gBAAkBe,KAAKf,IAAI,eAAiB,IAGjE,OAAO6B,IAEX8oD,gBAAiB,WACb,IAAInX,EAAOoX,EAAWllC;AACtB,IAAK3kB,KAAKf,IAAI,SAAU,CAWpB,IAAKwzC,KARL9tB,EAAS3kB,KAAKf,IAAI,kBAAkBA,IAAI,qBAAuB,IACnDmO,OACRuX,EAAOvX,KACHyC,SAAS2/B,QAAQ,WAAWr+B,OAAO,cACnC,IACAtB,SAASsB,OAAO,eAExB04C,EAAY/yC,GAAG2V,EAAE,IACH9H,EACN7N,GAAGwJ,UAAUqE,EAAO8tB,KACpBoX,EAAU3+C,KAAK,CACX2B,KAAM4lC,EACN1zC,MAAO4lB,EAAO8tB;AAI1B,OAAOoX,IAIfT,iBAAkB,SAAUnoD,GAAM,IAAAw7B,EAAAz8B;AAC9B,OAAOiB,EAAK4gB,KAAI,SAAC7M,GACb,IAAI1F;AA+BJ,OA9BAA,EAAM,GACNzQ,OAAOswC,QAAQn6B,GAAKpO,SAAQ,SAACuY,GACzB,IAAI2qC;AAEJ,OADAA,EAAO,GACHvqD,MAAAuD,QAAQqc,EAAI,KACZA,EAAI,GAAGvY,SAAQ,SAACmmB,GACZ,IAAIO;AACJ,OAAIP,EAAKK,QACG08B,GACJ,uDACA/8B,EAAKK,QACL,YACGL,EAAKjsB,KACZwsB,EAAcmP,EAAKx9B,IAAI,aAAawuB,YAChCjsB,EAAAA,QAAUC,UAAY,IACtBsrB,EAAKjsB,KAEDgpD,GACJ,gCACAx8B,EACA,IACAP,EAAKlgB,KACL,aAVD,KAaHyC,EAAI6P,EAAI,IAAM2qC,EAAOvqD,MAAAua,OAAAiH,SAAS+oC,GAAQ3qC,EAAI,IAE1C7P,EAAI6P,EAAI,IAAMA,EAAI,MAG3B7P,MAGfo1B,QAAS5tB,GAAG/V,SAAS,QAAQ,WACzB,IAAI2jC,EAAS0f;AACb,OAAKpkD,KAAKf,IAAI,UAGdmlD,EAAWpkD,KAAKf,IAAI,sBAIpBylC,EAAU5tB,GAAG2V,EAAE,IACfrjB,EAAAA,QAAEe,KAAKi6C,GAAU,SAAUv9C,EAAKoP,GAC5B,OAAOyuB,EAAQhW,WAAW7nB,MAEvB69B,GAVI5tB,GAAG2V,EAAE;;MCtPPltB,MAAMyc,UAAU5c,OAAO,CACpCO,KAAMJ,MAAMC,OAAOC,UACnBsqD,WAAY,mBACZl9C,KAAM,QACNlJ,GAAI,KACJ1C,KAAM,KAEN+oD,UAAW,KAEX3tB,QAAS,KACT4tB,YAAY,EACZ9E,YAAY,EACZ+E,WAAY3qD,MAAMwB,UAAS,WACvB,IAAIopD;AAKJ,OAJAA,EAAU,GACa,oBAAZtY,SAAuC,OAAZA,SAClCsY,EAAQj/C,KAAK,OAEVi/C,KAEX3D,iBAAkB,WACd,OAAIxmD,KAAKf,IAAI,aACFe,KAAKoqD,aAELpqD,KAAKqqD,aAGpBD,WAAY,WACR,IAAIJ,EAAWM,EAAYjuB,EAASpzB,EAAMnI;AAE1C,GADAkpD,EAAYhqD,KAAKf,IAAI,aAcrB,OAVAo9B,EAAUr8B,KAAKf,IAAI,WACnB6B,EAAMd,KAAKf,IAAI,WAAa+qD,EACxB3tB,IACAiuB,EAAa,GACbjuB,EAAQz1B,SAAQ,SAAUqP,GACtB,OAAOq0C,EAAWp/C,KAAK+K,EAAKpP,IAAM,IAAMoP,EAAKlX,UAEjD+B,GAAO,IAAMwpD,EAAW3sC,KAAK,MAEjC1U,EAAOjJ,KACAoJ,EAAAA,QAAEG,KAAK,CACVzI,IAAKA,EACL4J,KAAM,QAEPsyB,MAAK,SAAU/7B,GACd,OAAOgI,EAAK9G,IAAI,OAAQlB,OAE9B4nD,SAAS,YAAa,WAExBwB,UAAW,WACP,IAAIE,EAAWtpD,EAAMyS,EAAQ82C,EAAU9/C;AAKvC,GAHwB,iBADxB8/C,EAAWxqD,KAAKf,IAAI,WAEhBurD,EAAWtnD,KAAKwD,MAAM8jD,IAErBA,EAKL,OADAD,EAAYvqD,KAAKf,IAAI,kBAAmB,EAAAwnD,EAAAvnD,SAAE,YAAac,KAAKkxC,SACxD,eAAgBsZ,GAChB92C,EAAS1T,KAAKyqD,WAAWD,EAASvpD,KAAM,iBACxCjB,KAAK0qD,kBAAkBH,EAAUtrD,IAAI,GAAIurD,EAASrB,WAAYz1C,EAAOi3C,eAGzEjgD,EAAO1K,KAAKf,IAAI,SAChBgC,EAAOjB,KAAKyqD,WAAWD,EAAU9/C,IACxBiO,cAAgB/W,MACd5B,KAAK0qD,kBAAkBH,EAAUtrD,IAAI,GAAIyL,EAAMzJ,EAAK0pD,aAEpD3qD,KAAK4qD,mBAAmBL,EAAWtpD,KAEhD4nD,SAAS,QAEX+B,mBAAoB,SAAUL,EAAWtpD,GACrC,IAAIgI;AAGJ,OAFAA,EAAOjJ,KACPuqD,EAAUM,QACHzhD,EAAAA,QAAEe,KAAKlJ,GAAM,SAAU4F,EAAKoP,GAC/B,IAAI60C;AAQJ,OAPI70C,EAAK02B,QACL,EAAA8Z,EAAAvnD,SAAE,OAAS+W,EAAK02B,OAAS,SAASoe,SAASR,IAE3C,EAAA9D,EAAAvnD,SAAE,YAAY6rD,SAASR,IAE3BO,GAAe,EAAArE,EAAAvnD,SAAE,eAAiB2H,EAAM,aAC3BkkD,SAASR,GACfthD,EAAKyhD,kBAAkBI,EAAa7rD,IAAI,GAAIgX,EAAKvL,KAAMuL,EAAK00C,iBAI3ED,kBAAmB,SAAUH,EAAW7/C,EAAMzJ,GAAM,IAC5C+pD,EAAOC,EAAYvmB,EAAS7xB,EAAGq4C,EAAYC,EAAiBxgD,EAAS1B,EAAMmiD,EAD/BtmD,EAAA9E;AAEhD,OAAQ0K,GACJ,IAAK,QACDC,EAAU,CACN0gD,cAAe,CACXC,UAAW,eAGnBN,EAAQ,IAAIO,OAAOC,cAAcC,MAAMlB;AACvC;AACJ,IAAK,MAEG5/C,EADA3K,KAAKf,IAAI,WACCe,KAAKf,IAAI,WAET,CAENysD,UAAW,CACPv3B,MAAO,OACPw3B,OAAQ,QAEZA,OAAQ,KAGhBX,EAAQ,IAAIO,OAAOC,cAAcI,SAASrB,GACtCvqD,KAAKf,IAAI,aACTssD,OAAOC,cAAcK,OAAOC,YAAYd,EAAO,UAAU,WACrD,IAAIe,EAAef,EAAMgB,eAAe;AACxClnD,EAAK7F,IAAI,WAAT6F,CACIinD,EAAa/2C,IACblQ,EAAK7F,IAAI,QAAQ8sD,EAAa/2C,IAAM,GAAG;AAGnD;AACJ,IAAK,OACDrK,EAAU,CAGNghD,OAAQ,KAEZX,EAAQ,IAAIO,OAAOC,cAAcS,SAAS1B;AAC1C;AACJ,IAAK,SACD5/C,EAAU,CAGNghD,OAAQ,KAEZX,EAAQ,IAAIO,OAAOC,cAAcU,YAAY3B;AAC7C;AACJ,IAAK,OACDS,EAAQ,IAAIO,OAAOC,cAAcW,SAAS5B,GAC1C5/C,EAAU,CACN6W,KAAM;AAEV;AAEJ,IAAK,QACDwpC,EAAQ,IAAIO,OAAOC,cAAcY,MAAM7B,GAEnC5/C,EADA3K,KAAKf,IAAI,WACCe,KAAKf,IAAI,WAET,CACNk1B,MAAO,IACPw3B,OAAQ;AAGhB;AACJ,QAII,IAHAjnB,EAAU,GACV0mB,EAAS,GACTv4C,EAAI,EACGA,EAAI5R,EAAKorD,sBACZ3nB,EAAQx5B,KAAK2H,GACTA,EAAI,IACJu4C,EAAOv4C,EAAI,GAAK,IAEpBA;AAEJq4C,EAAa,CACT,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAGAvgD,EADA3K,KAAKf,IAAI,WACCe,KAAKf,IAAI,WAET,CACN0sD,OAAQ,IACRx3B,MAAO,OACPm4B,OAAQ,CACJ,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,YAIRtsD,KAAKf,IAAI,qBACTksD,EAAkBnrD,KAAKf,IAAI,mBAC3B0L,EAAQ4hD,MAAQpB,EAAgBoB,MAChC5hD,EAAQygD,OAASD,EAAgBC,OACjCzgD,EAAQ6hD,OAAS,CACbz1B,SAAU,MACV01B,UAAW,CACPC,SAAU,MAItB/hD,EAAQ+gD,UAAY,CAChBiB,KAAM,GACNC,IAAK,GACLz4B,MAAO,MACPw3B,OAAQ,OAEZX,EAAQ,IAAIO,OAAOC,cAAcqB,UAAUtC,GAC3CthD,EAAOjJ,KACPurD,OAAOC,cAAcK,OAAOC,YAAYd,EAAO,UAAU,WACrD,IAAIvmB,EAAKoa,EAAmBiO;AAC5B,GAAI7jD,EAAKhK,IAAI,oBACT,OAAOgK,EAAK8jD,iBAAiB/B,EAAMgB,iBAEnCnN,EAAMmM,EAAMgB,gBAEJ94C,OAAS,GAEM,OAAf2rC,EAAI,GAAG7pC,MACPyvB,EAAMoa,EAAI,GAAG/Y,OACmB,SAA5Bn7B,EAAQ2hD,OAAO7nB,EAAM,GACrB95B,EAAQ2hD,OAAO7nB,EAAM,GAAK,OAE1B95B,EAAQ2hD,OAAO7nB,EAAM,GAAKymB,EAAWzmB,EAAM,IAE/CqoB,EAAO,IAAIvB,OAAOC,cAAcwB,SAAS/rD,IACpCgsD,WAAWvoB,GAChBsmB,EAAMkC,KAAKJ,EAAMniD,OA6CzC,OAvCI3K,KAAKf,IAAI,oBACT0L,EAAQwiD,UAAY,GAEpBxiD,EAAQwiD,UADQ,WAATziD,EACa,CAChB0iD,SAAS,EACT5R,SAAU,KAGM,CAChB4R,SAAS,EACT5R,SAAU,KAGG,MAAjB7wC,EAAQ0iD,QACR1iD,EAAQ0iD,MAAQ,IAEhBrtD,KAAKf,IAAI,UACT0L,EAAQ0iD,MAAMC,SAAWttD,KAAKf,IAAI,SAElCe,KAAKf,IAAI,UACT0L,EAAQ0iD,MAAME,SAAWvtD,KAAKf,IAAI,SAEjB,MAAjB0L,EAAQ6iD,QACR7iD,EAAQ6iD,MAAQ,IAEhBxtD,KAAKf,IAAI,UACT0L,EAAQ6iD,MAAMF,SAAWttD,KAAKf,IAAI,SAElCe,KAAKf,IAAI,UACT0L,EAAQ6iD,MAAMD,SAAWvtD,KAAKf,IAAI,SAGlCe,KAAKf,IAAI,YACTgsD,EAAajrD,KAAKf,IAAI,UAAUwQ,MAAM,KACtC9E,EAAQ2hD,OAASrB,GAErBjrD,KAAKmC,IAAI,UAAWwI,GACpB3K,KAAKmC,IAAI,YAAalB,GACtB+pD,EAAMkC,KAAKjsD,EAAM0J,GACV3K,KAAKmC,IAAI,QAAS6oD,IAK7BP,WAAY,SAAUD,EAAUiD,GAC5B,IAAIxkD,EAAMwB;AACV,OAAI+/C,EAAS7xC,cAAgB/W,OAA0B,UAAjB6rD,EAC3BztD,KAAK0tD,sBAAsBD,EAAcjD,IAGpDvhD,EAAOjJ,KACPyK,EAAO,GACPrB,EAAAA,QAAEe,KAAKqgD,GAAU,SAAU9+C,EAAOuK,GAC9B,OAAOxL,EAAKS,KAAKjC,EAAKykD,sBAAsBD,EAAcx3C,OAEvDxL,IAGXijD,sBAAuB,SAAUD,EAAcjD,GAC3C,IAAIG,EAAajgD;AAOjB,OAJIigD,EADS,WADbjgD,EAAO,SAAU8/C,EAAWA,EAAS9/C,KAAO+iD,GAE1BztD,KAAK2tD,mBAAmBnD,GAExBe,OAAOC,cAAcoC,iBAAiBpD,GAEjD,CACH7d,OAAQ6d,EAAS7d,OACjBjiC,KAAMA,EACNigD,YAAaA,IAIrBgD,mBAAoB,SAAUnD,GAC1B,IAAIvpD,EAAM4sD,EAAIC,EAAM38C,EAAQmsC,EAAGE,EAAG7sC,EAAGoC,EAAKkxC,EAAM8J,EAAMC,EAAG3M,EAAG4M,EAAWhiD,EAAKC,EAAM8I,EAAK/L;AAgBvF,IAfAA,EAAOjJ,KACPiB,EAAO,IAAIsqD,OAAOC,cAAc0C,UAChC3uD,MAAM4uD,OAAO,iCAAkC3D,EAAS9lB,SACxDt7B,EAAAA,QAAEe,KAAKqgD,EAAS9lB,SAAS,SAAUh5B,EAAOuK,GACtC,IAAI3T;AAMJ,OAJIA,EADc,QAAd2T,EAAKvL,MAAgC,YAAduL,EAAKvL,KACxB,SAEAuL,EAAKvL,KAENzJ,EAAKmtD,UAAU9rD,EAAG2G,EAAKhK,IAAI,QAAQqD,EAAE,SAAW2T,EAAK6L,UAEhEviB,MAAM4uD,OAAO,8BAA+B3D,EAASryC,MACrD81C,EAAY,GAEPzQ,EAAIF,EAAI,EAAGvqC,GADhB9G,EAAMu+C,EAASryC,MACWjF,OAAQoqC,EAAIvqC,EAAKyqC,IAAMF,EAAG,CAIhD,IAHAtoC,EAAM/I,EAAIuxC,GACV6D,EAAI,GAECwM,EAAKl9C,EAAI,EAAGszC,GADjB/3C,EAAOs+C,EAAS9lB,SACaxxB,OAAQvC,EAAIszC,EAAM4J,IAAOl9C,EAEhC,YADlBm9C,EAAO5hD,EAAK2hD,IACHnjD,MAKgB,QAAdojD,EAAKpjD,KAJZ22C,EAAEwM,GAAM,CACJ56B,EAAGtB,WAAW3c,EAAI64C,IAClBtwB,EAAGvoB,EAAI64C,IAOU,YAAdC,EAAKpjD,MACZyG,EAAS,GACL6D,EAAI64C,KACJ18C,EAAS6D,EAAI64C,GAAM,MAEvBxM,EAAEwM,GAAM,CACJ56B,EAAGtB,WAAW3c,EAAI64C,IAClBtwB,EAAGpsB,IAGPkwC,EAAEwM,GAAM74C,EAAI64C;AAGpBI,EAAU/iD,KAAKm2C,GAGnB,IADApgD,EAAKotD,QAAQJ,GACRzQ,EAAIwQ,EAAI,EAAGD,EAAOE,EAAU/6C,OAAQ86C,EAAID,EAAMvQ,IAAMwQ,EACrDh5C,EAAMi5C,EAAUzQ,GAChBv8C,EAAKqtD,YAAY9Q,EAAG,EAAG,YAAa;AAExC,OAAOv8C,GAEXstD,mBAAoB,WAChB,GAAIvuD,KAAKf,IAAI,UAA2D,aAA/CM,MAAM6I,OAAOpI,KAAKf,IAAI,SAASuvD,YACpD,OAAOxuD,KAAKf,IAAI,SAASuvD,cAGjCjU,QAAS,CACLkU,OAAQ,WACJ,OAAOzuD,KAAKqqD,aAEhBqE,SAAU,SAAUjc,GAAO,IACnBkc,EAAc3D,EAAO4D,EADF/3C,EAAA7W;AAcvB,OAZAA,KAAKmC,IAAI,cAAc,GACvB6oD,EAAQhrD,KAAKf,IAAI,SACjB2vD,EAAgB,CACZhoC,QAAS,CACL2iC,MAAOyB,EAAMxB,cACbr1B,MAAO,KAEX06B,SAAU,KACVC,gBAAiB,YACjBC,YAAa,CAAC,EAAG,GAAI,EAAG,IAE5BJ,GAAe,EAAAK,EAAAC,gBAAe,WACvB,EAAAD,EAAAE,mBAAkB,CACrBP,EAAe,yBACfA,EAAe,6BAChB1pD,MAAK,WAEJ,OADAujC,UAAUomB,GAAeO,SAAS,cAC3Bt4C,EAAK1U,IAAI,cAAc;;ACtc9C,IACIwG,EAAU,GAAGA,QAYC1J,GAAQM,MAAlBkZ,SAAkBlZ,MAARN,OAEQM,MAAMyc,UAAU5c,OAAO,CAC7CO,KAAMJ,MAAMC,OAAOC,UACnBwtC,oBAAqBn2B,GAAGtX,OAAOC,UAC/BG,QAASkX,GAAGtX,OAAOC,UACnB2vD,IAAKt4C,GAAGtX,OAAOC,UACfgiC,UAAW3qB,GAAGtX,OAAOC,QAAQ,qBAC7B4vD,OAAQ9vD,MAAMwB,SAAS,0BAA0B,WAC7C,OAAOf,KAAKf,IAAI,6BAEpB8D,OAAO,EACPusD,gBAAiBx4C,GAAG2V,EAAE,IACtB1sB,KAAM,WAAY,IACVwvD,EACApzB,EACAR,EACAsN,EACAumB,EACAhsD,EACAisD,EACAt1C,EACAmjC,EACAz2C,EACA8J,EACAoC,EACAkxC,EACAyL,EACApsD,EACAuJ,EACAlC,EACAsB,EACAC,EACAixC,EACAM,EAEAt+B,EACApgB,EAxBU+F,EAAA9E;AA2Bd,GAFAA,KAAKC,SACLuD,EAAQxD,KAAKf,IAAI,SACjB,CAoEA,GA9DmC,cAA9BgN,EAAMhN,EAAIuE,EAAO,UAAmC,cAARyI,EAC7C1M,MAAMT,eACFkB,KACA,QACAT,MAAMwB,SAAS4uD,OAAO,SAAW3vD,KAAKf,IAAI,eAG9CM,MAAMT,eACFkB,KACA,QACAT,MAAMwB,SAASmhC,MAAM,SAAWliC,KAAKf,IAAI,gBAGjDgqC,EAAMjpC,KAAKf,IAAI,gBACsC,IAA1CgqC,EAAItgC,QAAQ,QAASsgC,EAAI/1B,OAAS,KACzCrG,EAAOo8B,EAAIz1B,UAAU,EAAGy1B,EAAI/1B,OAAS,GACrC3T,MAAMT,eAAekB,KAAM,OAAQT,MAAMwB,SAASmhC,MAAM,SAAWr1B,EAAO,UAC1EtN,MAAMT,eAAekB,KAAM,QAAST,MAAMwB,SAASmhC,MAAM,SAAWr1B,EAAO,WAC3E7M,KAAKmC,IAAI,aAAa,IAEd,aAAR8mC,GACAjpC,KAAKmC,IAAI,aAAc,eAEf,iBAAR8mC,GACAjpC,KAAKmC,IAAI,aAAc,eAEf,iBAAR8mC,GACAjpC,KAAKmC,IAAI,aAAc,kBAGf,YAAR8mC,GACAjpC,KAAKf,IAAI,UAC2B,WAApCM,MAAM6I,OAAOpI,KAAKf,IAAI,WAEtBe,KAAKmC,IAAI,QAASe,KAAKwD,MAAM1G,KAAKf,IAAI,WAEX,cAA3Be,KAAKf,IAAI,gBAEE,OADXkgB,EAAMnf,KAAKf,IAAI,WACIkgB,EAAIjM,OAAS,IAC5BiM,EAAMA,EAAI,IAEH,MAAPA,GAAeA,EAAIre,KACa,SAA5Bqe,EAAIre,IAAI0S,UAAU,EAAG,IACrBxT,KAAKmC,IAAI,YAAaX,EAAAA,QAAUC,UAAY,IAAM0d,EAAIre,MAInC,UAA3Bd,KAAKf,IAAI,gBACTqE,EAAYtD,KAAKwS,MAAMmG,YAAYrV,UACnCmsD,EAAWzvD,KAAKwD,MAAMylC,IAEI,WAAtBzmC,GADJmI,EAAU3K,KAAKf,IAAI,kBACA,MACf0L,EAAUA,EAAQkX,KAAI,SAAU1C,GAC5B,MAAO,CACHpgB,MAAOogB,EACP2C,KAAMxe,EAAY,IAAMmsD,EAAW,IAAMtwC,MAGjDnf,KAAKmC,IAAI,gBAAiBwI,KAI9B3K,KAAKf,IAAI,iCAAmCuE,EAAM6K,SAElD,IAAKmhD,KADLtjD,EAAO1I,EAAM6K,SAETtP,EAAQmN,EAAKsjD,GAGTxvD,KAAKf,IAAI,gCAAgCuwD,KAAazwD,QACA,IAAtDiB,KAAKf,IAAI,gCAAgCuwD,KAEzCE,EAAgB,GAGU,WAAtBltD,EAFJ+sD,EAAavvD,KAAKf,IAAI,gCAAgCuwD,IAGlDD,EAAW3oD,SAAQ,SAACuY,GAChB,OAAOuwC,EAAcxkD,KAAKiU,MAG9BuwC,EAAcxkD,KAAKqkD,GAGF,WAAjB/sD,EAAOzD,GACPA,EAAM6H,SAAQ,SAACuY,GACX,OAAOuwC,EAAcxkD,KAAKiU,MAG9BuwC,EAAcxkD,KAAKnM,GAEvByE,EAAM6K,SAASmhD,GAAWE;AAuCtC,GAjCIlsD,GACAA,EAAM6K,SAASstB,eACf37B,KAAKf,IAAI,gBACY,MAArBe,KAAKf,IAAI,WAET08B,EAAiB,WACb,OAAQn4B,EAAM6K,SAASstB,eACnB,IAAK,QACD,OAAO9rB,SAASsB,OAAO;AAC3B,QACI,OAAO3N,EAAM6K,SAASstB,eALjB,GAQE,oBAAfn4B,EAAMkH,OACNixB,EAAgBA,EAAc9wB,YAElC8wB,EAAuC,MAAvBA,EAAc58B,MAAgB48B,EAAc58B,MAAQ48B,EACpEp8B,MAAMkD,IAAI8V,KAAKvY,MAAM,WAGjB,OAFA8E,EAAK3C,IAAI,QAASw5B,GAClB72B,EAAK3C,IAAI,SAAW2C,EAAK7F,IAAI,aAAc08B,GACpC72B,EAAK6zB,KAAK,gBAKrB34B,KAAKf,IAAI,gBACTe,KAAKf,IAAI,qCACY,MAArBe,KAAKf,IAAI,WAETk9B,EAAen8B,KAAKf,IAAI,oCACxBe,KAAKmC,IAAI,QAASg6B,GAClBn8B,KAAKmC,IAAI,SAAWnC,KAAKf,IAAI,aAAck9B,IAE3C34B,GAA6C,WAApChB,EAAOgB,EAAM6K,SAASC,WAE/B,IAAKgvC,EAAI,EAAGvqC,GADZoqC,EAAO35C,EAAM6K,SAASC,WACC4E,OAAQoqC,EAAIvqC,EAAKuqC,IAEpC,IAAKz2C,KADLsT,EAASgjC,EAAKG,GAENnjC,EAAOtT,GACXtH,MAAMT,eAAekB,KAAM,cAAeT,MAAMwB,SAASmhC,MAAM,SAAWr7B;AAItF,GAAIrD,GAAwC,WAA/BhB,EAAOgB,EAAM6K,SAASgtB,MAE/B,IAAK1qB,EAAI,EAAGszC,GADZxG,EAAOj6C,EAAM6K,SAASgtB,MACEnoB,OAAQvC,EAAIszC,EAAMtzC,IAEtC,IAAK9J,KADLsT,EAASsjC,EAAK9sC,GAENwJ,EAAOtT,GACXtH,MAAMT,eACFkB,KACA,mBACAT,MAAMwB,SAASmhC,MAAM,SAAWr7B;AAmDhD,OA7CI7G,KAAKf,IAAI,6BACuC,WAAhDuD,EAAOxC,KAAKf,IAAI,+BAEhBe,KAAKmC,IAAI,cAAc,GAGY,qBAA3BnC,KAAKf,IAAI,eACRe,KAAKf,IAAI,kBACoC,KAA1Ce,KAAKf,IAAI,8BACkB,aAA3Be,KAAKf,IAAI,eACkB,oBAA3Be,KAAKf,IAAI,iBAIZe,KAAKf,IAAI,mBAAoBM,MAAMmT,aAChC1S,KAAKf,IAAI,mBAAoBM,MAAMoT,aACvCpT,MAAMqT,QAAQ5S,KAAKf,IAAI,oBACtBe,KAAKf,IAAI,QAENe,KAAKf,IAAI,UACTe,KAAK2C,OAAOuI,KAAKlL,KAAKwD,MAAMylC,KAE5BjpC,KAAK2C,OAAS,CAAC3C,KAAKwD,MAAMylC,KAEtB1pC,MAAM+gB,UAAUtgB,KAAKf,IAAI,WAAce,KAAKf,IAAI,UACpDe,KAAKf,IAAI,UACTe,KAAK2C,OAAOuI,KAAKlL,KAAKwD,MAAMylC,KAE5BjpC,KAAK2C,OAAS,CAAC3C,KAAKwD,MAAMylC,QAKX,mBAA3BjpC,KAAKf,IAAI,eACTe,KAAKmC,IAAI,aAAc,oBAEvBnC,KAAKf,IAAI,mCACTe,KAAKmC,IAAI,SAAS,GAElBnC,KAAKf,IAAI,4BAA8Be,KAAKf,IAAI,iBAChDe,KAAKmC,IAAI,QAAQ,GAEjBnC,KAAKf,IAAI,yBAA2Be,KAAKf,IAAI,UAC7Ce,KAAK24B,KAAK,aAEU,mBAAb34B,KAAKf,IAAqBe,KAAKf,IAAI,wBAAqB,GACxDe,KAAKf,IAAI,mBAAmBu1B,aADvC,IAIJo7B,gBAAiB94C,GAAG8L,GAChB,OACA9L,GAAGgtC,SAAS,0BAA0B,WAAY,IAC1C+L,EAD0Ch5C,EAAA7W;AAE9C,GACIgH,eACChH,KAAKf,IAAI,WACTe,KAAKf,IAAI,mBACTe,KAAKf,IAAI,mBAGV,OADOe,KACCA,KAAKf,IAAI,eACb,IAAK,WAKD,GAJA4wD,EAAW7vD,KAAKf,IAAI,uBAAuB+zC,eACvChzC,KAAKf,IAAI,wBAEb4wD,EAAWv+C,SAASu+C,EAAU,MAG1B7vD,KAAKf,IAAI,iBACRe,KAAKf,IAAI,UACTe,KAAKf,IAAI,mCAGV,OAAOe,KAAKyhC,UAAUxiC,IAAI,SACrBgtB,WAAWjsB,KAAKf,IAAI,sBAAuB4wD,EAAU,CAClD9lD,QAAQ,IAEX9E,MACG,SAAC+P,GACG,OAAOzV,MAAMkD,IAAI8V,KAAK1B,GAAM,WACxB,GAAmC,YAA/B7B,EAAI/V,IAAI,mBAER,OADA4X,EAAK1U,IAAI,QAAS6S,GACX6B,EAAK8hB,KAAK,kBAI7B,SAAC7uB,GACG,OAAO+M,EAAK5X,IAAI,uBAAuBiuC,eACnCr2B,EAAK5X,IAAI,sBACT,cASxC6wD,kBAAmB,WACf,IAAI7jD,EAAK8jD,EAAWhxD;AACpB,GAAIiI,cAAgBhH,KAAKf,IAAI,SACzB,OAAQe,KAAKf,IAAI,eACb,IAAK,WAOD,OANAF,EAAQiB,KAAKf,IAAI,SAEb8wD,EADkC,YAA/B9jD,EAAM1M,MAAM6I,OAAOrJ,KAAgC,WAARkN,EAClClN,EAAME,IAAI,MAEVF,EAETiB,KAAKf,IAAI,uBAAuBiuC,eACnCltC,KAAKf,IAAI,sBACTqS,SAASy+C,MAK7BljD,KAAMtN,MAAMwB,SAAS,eAAe,WAEhC,MAA+B,kBAA3Bf,KAAKf,IAAI,cACFe,KAAKf,IAAI,cACVe,KAAKf,IAAI,cACTe,KAAKf,IAAI,QAAQqD,EACbtC,KAAKf,IAAI,+BAAiC,KAAOe,KAAKf,IAAI,cAIpEe,KAAKf,IAAI,+BAA+B6C,SAAS,sBAC1C9B,KAAKf,IAAI,cACVe,KAAKf,IAAI,cACTe,KAAKf,IAAI,QAAQqD,EAAE,MAAatC,KAAKf,IAAI,cAG/Ce,KAAKf,IAAI,mCAEFM,MAAAua,OAAAiH,SAAS/gB,KAAKf,IAAI,QAAQqD,EAAEtC,KAAKf,IAAI,qCAE5Ce,KAAKf,IAAI,qBACFM,MAAAua,OAAAiH,SAAS/gB,KAAKf,IAAI,QAAQqD,EAAEtC,KAAKf,IAAI,uBAEzCM,MAAAua,OAAAiH,SACH/gB,KAAKf,IAAI,eACLe,KAAKf,IAAI,QAAQqD,EACbtC,KAAKf,IAAI,+BAAiC,IAAMe,KAAKf,IAAI,kBAIzE+wD,KAAMzwD,MAAMwB,UAAS,WACjB,OAAQf,KAAKf,IAAI,eACb,IAAK,UACD,MAAO;AACX,IAAK,QACD,MAA6D,OAAzDe,KAAKf,IAAI,4CACF,MAEA;AAGf,IAAK,YACD,MAAO;AACX,QACI,OAAOe,KAAKf,IAAI,qBAG5BgxD,aAAc1wD,MAAMwB,SAAS,QAAS,eAAe,WACjD,IAAImvD,EAAWjkD,EAAKlN;AAwBpB,OAvBAA,EAAQiB,KAAKyhC,UAAUtwB,OACnBnR,KAAKf,IAAI,SACTe,KAAKf,IAAI,SACT,KACAe,KAAKf,IAAI,UAETe,KAAKf,IAAI,eACTixD,EAAY,CAAC,mBAETnxD,IAAUiB,KAAKf,IAAI,UACQ,aAA3Be,KAAKf,IAAI,eACkB,WAA3Be,KAAKf,IAAI,cAETF,EAAQiB,KAAKf,IAAI,YAATe,CAAsBA,KAAKf,IAAI,aAAce,KAAKf,IAAI,SAAUe,OAC/DiM,EAAMjM,KAAKf,IAAI,cAAgB0J,EAAQmC,KAAKolD,EAAWjkD,IAAQ,IACxElN,EAAQiB,KAAKf,IAAI,YAATe,CACJA,KAAKf,IAAI,aACTe,KAAKf,IAAI,SACTe,KACAjB,MAILA,KAEXoxD,gBAAiB,MACjB5vC,OAAQhhB,MAAMwB,SAAS,eAAe,WAClC,OAAOf,KAAKf,IAAI,QAAQqD,EAAE,4BAE9B8tD,OAAQ7wD,MAAMukD,SAAS,SAAS,WAAY,IAAArgC,EAAAzjB;AACxC,GAA+B,kBAA3BA,KAAKf,IAAI,eAAgE,2BAA3Be,KAAKf,IAAI,cAG3D,OAAOM,MAAMkD,IAAI8V,MAAK,WAClB,IAAI4d;AAEJ,GAAiD,uBAA7C1S,EAAKxkB,IAAI,kCAGTwkB,EAAK4sC,cAAe5sC,EAAK6sC,aAO7B,OAJAn6B,EAAM,SAAW1S,EAAKxkB,IAAI,aAE1BwkB,EAAKshC,WAAW,oBAAqBthC,EAAKxkB,IAAI,aAAcwkB,EAAKxkB,IAAI,UAE9DwkB,EAAKthB,IAAIg0B,EAAK1S,EAAKxkB,IAAI,gBAGtCsxD,eAAgBhxD,MAAMwB,SAAS,eAAe,WAC1C,IAAIu8C,EAAG3sC,EAAGoC,EAAKkxC,EAAMuM,EAAaC,EAAYnhD,EAAKtE,EAAQL,EAAS+lD;AAEpE,GADAA,EAAe,GACgB,qBAA3B1wD,KAAKf,IAAI,cACTyxD,EAAe1wD,KAAKf,IAAI;KACrB,GAA+B,uBAA3Be,KAAKf,IAAI,eAKhB,IAJA0L,EAAU3K,KAAKf,IAAI,iBACW,WAA1BM,MAAM6I,OAAOuC,KAAmD,IAA1BA,EAAQhC,QAAQ,OACtDgC,EAAUA,EAAQ8E,MAAM,MAEvB6tC,EAAI,EAAGvqC,EAAMpI,EAAQuI,OAAQoqC,EAAIvqC,EAAKuqC,IAEvC,GADAtyC,EAASL,EAAQ2yC,GACL,CAOR,GANsB,WAAlB96C,EAAOwI,MACPylD,EAAa,IACF9sD,GAAKqH,EAChBA,EAASylD,GAIe,IAAxBn/C,SAAStG,EAAOrH,KAChB2N,SAAStR,KAAKf,IAAI,kCAAoC,EAEtD;AAEAqS,SAAStG,EAAOrH,IAAM,GACtBqH,EAAOjM,MAAQiM,EAAOrH,GAAG6P,UAAU,GACnCxI,EAAOrH,GAAK2N,SAAStG,EAAOrH,IAAIkH,YAEhCG,EAAOjM,MAAQiB,KAAKf,IAAI,QAAQqD,EAC5BtC,KAAKf,IAAI,+BACL,IACAe,KAAKf,IAAI,aACT,IACA+L,EAAOrH,IAGnB+sD,EAAaxlD,KAAKF,SAGvB,GAA+B,mBAA3BhL,KAAKf,IAAI,cAEhB,IADAuxD,EAAc,EACPA,EAAc,IACjBlhD,EAAM,CACF3L,GAAIkM,SAAS0F,SAASi7C,EAAa,UAAUr/C,OAAO,WACpDpS,MAAO8Q,SAAS0F,SAASi7C,EAAa,UAAUr/C,OAAO,cAE3Du/C,EAAaxlD,KAAKoE,GAClBkhD;KAIJ,GADA7lD,EAAU3K,KAAKf,IAAI,iBAEf,IAAK0R,EAAI,EAAGszC,EAAOt5C,EAAQuI,OAAQvC,EAAIszC,EAAMtzC,KACzC3F,EAASL,EAAQgG,MAES,WAAlBnO,EAAOwI,MACPylD,EAAa,IACF9sD,GAAKqH,EAChBA,EAASylD,GAEP,SAAUzwD,KAAKf,IAAI,UAA6B,MAAhB+L,EAAOjM,OAErCiB,KAAKf,IAAI,QAAQqsB,OACbtrB,KAAKf,IAAI,+BACL,IACAe,KAAKf,IAAI,aACT,IACA+L,EAAOrH,MAGfqH,EAAOjM,MAAQiB,KAAKf,IAAI,QAAQqD,EAC5BtC,KAAKf,IAAI,+BACL,IACAe,KAAKf,IAAI,aACT,IACA+L,EAAOrH,KAIvB+sD,EAAaxlD,KAAKF;AAKlC,OAAO0lD,KAEXC,gBAAiBpxD,MAAMwB,SAAS6vD,IAAI,oBAAqB,IACzD7G,WAAY,eACZ8G,eAAgBtxD,MAAMwB,SAAS,eAAgB,QAAS,QAAQ,WAC5D,OAAIf,KAAKf,IAAI,oBACF,iBACAe,KAAKf,IAAI,qBAAuBe,KAAKf,IAAI,QACzC,gBAEJ,wBAEX6xD,kBAAmBvxD,MAAMwB,SAAS,eAAgB,QAAQ,WACtD,GAAIf,KAAKf,IAAI,sBAAwBe,KAAKf,IAAI,QAC1C,MAAO;AAEX,GAAIe,KAAKf,IAAI,gCACT,OAAOe,KAAKf,IAAI;AAEpB,OAAQe,KAAKf,IAAI,eACb,IAAK,kBACL,IAAK,mBACL,IAAK,qBACL,IAAK,mBACL,IAAK,oBACL,IAAK,iBACD,MAAO;AACX,IAAK,WACD,MAAO;AACX,IAAK,UACL,IAAK,WACL,IAAK,SACD,MAAO;AACX,IAAK,SAEL,IAAK,UACD,MAAO;AACX,IAAK,QACD,MAAO;AACX,IAAK,WACD,MAAO;AACX,IAAK,mBAEL,IAAK,WACD,MAAO;AACX,IAAK,QACD,MAAO;AACX,IAAK,QACD,MAAO;AACX,IAAK,YAEL,IAAK,UACD,MAAO;AACX,IAAK,WACD,MAAO;AACX,IAAK,OACD,MAAO;AACX,IAAK,gBACD,MAAO;AACX,IAAK,SACD,MAAO;AACX,IAAK,WACD,MAAO;AACX,IAAK,WACD,MAAO;AACX,IAAK,iBACD,MAAO;AACX,IAAK,cACD,MAAO;AACX,IAAK,iBACD,MAAO;AACX,IAAK,cACD,MAAO;AACX,IAAK,YACD,MAAO;AACX,IAAK,QACD,MAAO;AACX,IAAK,UACD,MAAO;AACX,IAAK,aACL,IAAK,aACL,IAAK,UACL,IAAK,SACD,MAAO;AACX,IAAK,gBACD,MAAO;AACX,IAAK,YACD,MAAO;AACX,IAAK,yBACD,MAAO,gCAEf,MAAO,qBAEX8xD,QAASxxD,MAAMwB,UAAS,WACpB,GAAIf,KAAKf,IAAI,aACT,OAAOuC,EAAAA,QAAUC,UAAY,IAAMzB,KAAKf,IAAI,gBAGpD+xD,cAAezxD,MAAMwB,UAAS,WAC1B,IAAIkwD,EAA0CC;AAC9C,MAAgC,OAA5BlxD,KAAKL,KAAKgiB,cACH,MAGP,mEACJuvC,EAAsBlxD,KAAKf,IAAI,QAAQqD,EAAE,qCAKrC2uD,EADU,SAHAhyD,EAAIe,KAAM,OAAOmxD,WAITD,EANlB,mEAUG3xD,MAAAua,OAAAiH,SACH/gB,KAAKL,KAAK2C,EAAE,sBAAuB,CAC/Bq/B,KACI,YACAsvB,EACA,KACAjxD,KAAKL,KAAK2C,EAAE,4BACZ,2DAIhBgM,UAAW/O,MAAMwB,SAAS,aAAc,eAAe,WACnD,IAAI4B,EAAQwX,EAAQzO,EAAO4C,EAAWrC,EAAKC;AAC3C,GAAIlM,KAAKf,IAAI,cACT,OAAOe,KAAKf,IAAI;AAEpB,IAAKe,KAAKf,IAAI,mBAAoB,CAE9B,KADAkb,EAASna,KAAKf,IAAI,6BAEd;AAEJ,MAAsB,kBAAXkb,EACAA,GAEX7L,EAAY8iD,EAAAA,QAAe3+C,YACvBzS,KAAKf,IAAI,SACTe,KAAKf,IAAI,6BAEb0D,EAAS3C,KAAK2C,QACV2L,GAAetO,KAAKf,IAAI,UAAkC,OAAtBe,KAAKf,IAAI,UAS7CM,MAAMkD,IAAIkjD,KAAK3lD,MAAM,WACjB,OAAOA,KAAKmC,IAAI,QAAS,SAEzBQ,IACMuJ,EAAOlM,KAAKf,IAAI,aAAe0J,EAAQmC,KAAKnI,EAAQuJ,IAAS,KAC/DR,EAAQ/I,EAAOgG,QAAQ3I,KAAKwD,MAAMylC,OACrB,GACTtmC,EAAO25C,OAAO5wC,EAAO,GAEzB1L,KAAKmC,IAAI,SAAUQ,MAjBvBA,GACMsJ,EAAMjM,KAAKf,IAAI,aAAe0J,EAAQmC,KAAKnI,EAAQsJ,GAAO,GAC5DjM,KAAK2C,OAAOuI,KAAKlL,KAAKwD,MAAMylC,MAGhCjpC,KAAK2C,OAAS,CAAC3C,KAAKwD,MAAMylC,KAgB3B36B,OAGf+sB,KAAM97B,MAAMwB,SAAS,mBAAoB,qBAAqB,WAC1D,IAAIyC,EAAkB6tD;AACtB,GAAsC,wBAAlCrxD,KAAKf,IAAI,qBACT,OAAO;AAEX,GAAsC,oBAAlCe,KAAKf,IAAI,qBACT,OAAO;AAEX,IAAKe,KAAKf,IAAI,mBAAoB,CAE9B,GADAuE,EAAQxD,KAAKf,IAAI,SACbe,KAAKf,IAAI,4BACT,OAAO;AACJ,IAA6C,IAAzCe,KAAKf,IAAI,4BAChB,OAAO;AAEX,GAAIe,KAAKf,IAAI,0BAA6D,WAAjCuD,EAAOgB,EAAM6K,SAASijD,QAC3D,OAAO;AAEX,GAAItxD,KAAKf,IAAI,4BAAiD,WAAnBuD,EAAO6uD,GAC9C,OAAO;AAIX,GAFAA,EAAUpyD,EAAIuE,EAAO,iBACTxD,KAAKf,IAAI,cAChBoyD,EACD;AAEJ,GAAuB,kBAAZA,EACP,OAAOA;AAEX,GAAIA,GAA8B,WAAnB7uD,EAAO6uD,IAAwBpyD,EAAIoyD,EAAS,aAAc,CACrE,GAAkC,aAA9BpyD,EAAIoyD,EAAS,eAAgCrxD,KAAKf,IAAI,eACtD,OAAO;AAEX,GAAkC,gBAA9BA,EAAIoyD,EAAS,cAAkCrxD,KAAKf,IAAI,eACxD,OAAO,EAGf,OAAQmyD,EAAAA,QAAe3+C,YAAYzS,KAAKf,IAAI,SAAUoyD,OAG9DE,iBAAkBhyD,MAAMukD,SAAS,cAAc,WAC3C,OAAO9jD,KAAKwxD,cAEhBC,SAAU,SAAU/0C,GAEhB,GADA1c,KAAK24B,KAAK,YACN34B,KAAKf,IAAI,QACT,OAAOe,KAAK24B,KAAK,SAGzB+4B,QAAS,SAAUh1C,GACf,OAAO1c,KAAKmC,IAAI,SAAS,IAE7BwvD,KAAMpyD,MAAMwB,UAAS,WACjB,OAAOf,KAAKf,IAAI,oBAEpB2yD,aAAc96C,GAAGgtC,SAAS,SAAS,WAC/B,IAAInhD,EAAQa,EAAOyI,EAAKC;AAExB,GADAvJ,EAAS3C,KAAKf,IAAI,UACde,KAAKf,IAAI,SAAU,CAGnB,GAFAe,KAAKmC,IAAI,MAAM,GACfnC,KAAKmC,IAAI,QAAQ,IACbnC,KAAKf,IAAI,UAKT,OAAOM,MAAM4C,IAAInC,KAAM,SAAU,CAACA,KAAKf,IAAI;AAJ3C,GAAMgN,EAAMjM,KAAKf,IAAI,aAAe0J,EAAQmC,KAAK9K,KAAKf,IAAI,UAAWgN,GAAO,EACxE,OAAOjM,KAAK2C,OAAOuI,KAAKlL,KAAKwD,MAAMylC,UAS3C,GAHIjpC,KAAKf,IAAI,8BACTe,KAAKmC,IAAI,MAAM,GAEfQ,IACMuJ,EAAOlM,KAAKf,IAAI,aAAe0J,EAAQmC,KAAKnI,EAAQuJ,IAAS,GAG/D,OAFA1I,EAAQxD,KAAKf,IAAI,aACjB0D,EAAO0rB,aAAa7qB,GACbjE,MAAM4C,IAAInC,KAAM,SAAU2C,MAKjDkvD,cAAetyD,MAAMukD,SAAS,SAAU,QAAQ,WAC5C,IAAI73C;AACJ,GAAIjM,KAAKf,IAAI,YAEHgN,EAAMjM,KAAKf,IAAI,aAAe0J,EAAQmC,KAAK9K,KAAKf,IAAI,UAAWgN,IAAQ,GACzEjM,KAAKf,IAAI,SAET,OAAOe,KAAK24B,KAAK,eAI7Bm5B,WAAYh7C,GAAG/V,SAAS,QAAS,SAAS,WACtC,IAAIkL,EAAK8jD,EAAWhxD;AAgBpB,OAJIgxD,GAXJhxD,EAAQiB,KAAKf,IAAI,UAKuB,YAA/BgN,EAAM1M,MAAM6I,OAAOrJ,KACZ,WAARkN,GACQ,WAARA,GACQ,UAARA,EAGQlN,EAAME,IAAI,MAEVF,EAXA,KAaT,CACHwE,KAAMvD,KAAKf,IAAI,+BACfyL,KAAM1K,KAAKf,IAAI,cACfF,MAAOgxD,EACP1hD,SAAUrO,KAAKf,IAAI,kBACnB4N,KAAM7M,KAAKf,IAAI,aACf0L,QAAS3K,KAAKf,IAAI,iBAClBsgC,cAAev/B,KAAKf,IAAI,2BAGhC8yD,aAAa,EACbr7C,eAAgB,WAAY,IACpBzV,EAAM+I,EADcyyB,EAAAz8B;AAexB,OAbAiB,EAAO,CACH2U,UAAU,IAEV,MAAY5V,KAAKf,IAAI,UACzB+K,EAAUhK,KAAKyhC,UAAUl4B,KAAK,CAC1BzI,IAAK,gBACLD,OAAQ,OACRI,KAAMA,KAEFgE,MAAK,SAAC0R,GAEV,OADA8lB,EAAKt6B,IAAI,MAAM,GACRs6B,EAAKt6B,IAAI,QAAQ,MAErB6H,EAAQgoD,OAAM,SAACr7C,GAAS,IAAAs7C;AAC3Bx1B,EAAKt6B,IAAI,QAAQ;AAUjB,IAAI+vD,EAAgB;AAMpB,OAJI,QAAAD,EAACt7C,MAAAA,OAAD,EAACA,EAAMvR,eAAP,IAAA6sD,EAAAA,EAAkB,IAAInwD,SAAS,uCAC/BowD,EAAgB,mCAGbz1B,EAAKt6B,IAAI,QAASs6B,EAAKx9B,IAAI,QAAQqD,EAAE4vD,QAGpD3X,QAAS,CACL4X,iBAAkB,SAAUpzD,GACxB,GAAIiB,KAAKf,IAAI,2CAA6CF,QAAmB,IAAVA,GAC/D,OAAOiB,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,0CAG1CmzD,SAAU,WAGN,OAAoB,IADNpyD,KAAKf,IAAI,eAEZe,KAAKmC,IAAI,eAAe,GAExBnC,KAAKmC,IAAI,eAAe,IAGvCkwD,sBAAuB,WAAY,IAC3BtO,EAAGxgD,EAAMma,EADkBif,EAAA38B;AAO/B,OAJA+jD,EAAI/jD,KAAKf,IAAI,aACbsE,EAAOvD,KAAKf,IAAI,sBAChBye,EAAM1d,KAAKf,IAAI,SACL8kD,EAAEuO,eAAe/uD,EAAMma,GAAK,GACvBzY,MAAK,SAACsK,GACjB,IAAIgjD;AAEJ,OADAA,EAAQz7C,GAAG2V,EAAEld,GAAKgjB,MAAM,QACjBoK,EAAKx6B,IAAI,kBAAmBowD,EAAM50C,KAAK,aAGtD60C,WAAY,WAER,OADAxyD,KAAKmC,IAAI,UAAW,MACbnC,KAAKmC,IAAI,QAAS,WAE7ByT,SAAU,WACN,IAAIrG,EACAkjD,EAEAC,EACAz8C,EACA08C,EACArV,EACA3sC,EACAoC,EACAkxC,EACA8J,EACAC,EACA3gD,EACAiJ,EACArK,EACAC,EACAixC,EACAM,EACAx0C,EACAwG,EACAmsC,EACAgX,EACA7zD;AAOJ,GANIiB,KAAKf,IAAI,YACHgN,EAAMjM,KAAKf,IAAI,aAAe0J,EAAQmC,KAAK9K,KAAKf,IAAI,UAAWgN,IAAQ,GACzEjM,KAAKmC,IAAI,SAAS,IAItBnC,KAAKf,IAAI,iCAET,GADA28C,EAAY,GACRh6C,MAAMkB,QAAQ9C,KAAKf,IAAI,kCAEvB,IAAKq+C,EAAI,EAAGvqC,GADZ7G,EAAOlM,KAAKf,IAAI,kCACOiU,OAAQoqC,EAAIvqC,EAAKuqC,IAEP,eAD7BrnC,EAAO/J,EAAKoxC,IACH9pC,UAAU,EAAG,KAClBm/C,EAAW18C,EAAKxG,MAAM,KACtBmsC,EAAU1oC,OAAS5B,SAASqhD,EAAS,GAAI,KAEhB,cAAzB18C,EAAKzC,UAAU,EAAG,KAClBm/C,EAAW18C,EAAKxG,MAAM,KACtBmsC,EAAUiX,UAAYvhD,SAASqhD,EAAS,GAAI,KAEnB,cAAzB18C,EAAKzC,UAAU,EAAG,KAClBm/C,EAAW18C,EAAKxG,MAAM,KACtBmsC,EAAUkX,UAAYxhD,SAASqhD,EAAS,GAAI,KAEnC,WAAT18C,IACA2lC,EAAUmX,QAAS,GAEV,UAAT98C,IACA2lC,EAAUpP,OAAQ,GAET,cAATv2B,IACA2lC,EAAUoX,WAAY,GAEG,WAAzB/8C,EAAKzC,UAAU,EAAG,KAGE,oBAFpBm/C,EAAW18C,EAAKxG,MAAM,MAET,IACTzP,KAAKmC,IAAI,yBAAyB,GAEtCy5C,EAAUqX,OAASN,EAAS,IAEH,UAAzB18C,EAAKzC,UAAU,EAAG,KAClBm/C,EAAW18C,EAAKxG,MAAM,KACtBmsC,EAAU7lC,MAAQ48C,EAAS,IAED,eAA1B18C,EAAKzC,UAAU,EAAG,MAClBm/C,EAAW18C,EAAKxG,MAAM,KACtBmsC,EAAUsX,WAAaP,EAAS,IAEvB,WAAT18C,IACA2lC,EAAUuX,QAAS,GAEV,gBAATl9C,IACA2lC,EAAUwX,aAAc,GAEf,mBAATn9C,IACA2lC,EAAUyX,UAAW,GAEZ,kBAATp9C,IACA2lC,EAAU0X,eAAgB,GAEjB,aAATr9C,IACA2lC,EAAU2X,UAAW;KAI7B3X,EAAU57C,KAAKf,IAAI,mCAAoC;AAqB/D,GAlBAe,KAAKmC,IAAI,QAAS,MACdnC,KAAKf,IAAI,eACJM,MAAM+gB,UAAUtgB,KAAKf,IAAI,WAGzBe,KAAKf,IAAI,mBAAoBM,MAAMmT,aAChC1S,KAAKf,IAAI,mBAAoBM,MAAMoT,aACvCpT,MAAMqT,QAAQ5S,KAAKf,IAAI,mBAEvBe,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,0BANrCtC,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,gCAUV,IAA/BtC,KAAKf,IAAI,mBACTe,KAAKf,IAAI,SAAWe,KAAKf,IAAI,mBAE7Be,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,qCAErCs5C,GAAaA,EAAU1oC,OAAQ,CAC/Bw/C,GAAS,EACT3zD,EAAQiB,KAAKf,IAAI;AACjB,IACIiE,KAAKwD,MAAM3H,GACX2zD,GAAS,EACX,MAAO/wD,GACDA,EACJ+wD,GAAS,EAEb,GAAIA,GAAU9wD,MAAMkB,QAAQI,KAAKwD,MAAM3H,IAEnC,IAAK4R,EAAI,EAAGszC,GADZ9G,EAAOj6C,KAAKwD,MAAM3H,IACMmU,OAAQvC,EAAIszC,EAAMtzC,KACtCsF,EAAOknC,EAAKxsC,IACH9F,WAAWqoB,OAAOhgB,SAAW0oC,EAAU1oC,QAC5ClT,KAAKmC,IACD,QACAnC,KAAKf,IAAI,QAAQqD,EAAE,qBAAsB,CACrC4Q,OAAQ0oC,EAAU1oC;KAK3BnU,GAASA,EAAMm0B,OAAOhgB,SAAW0oC,EAAU1oC,QAClDlT,KAAKmC,IACD,QACAnC,KAAKf,IAAI,QAAQqD,EAAE,qBAAsB,CACrC4Q,OAAQ0oC,EAAU1oC,eAIvB0oC,IAAyD,IAA5C/8C,OAAO8H,KAAKi1C,GAAW,GAAGjzC,QAAQ,OACtDiqD,EAAoB/zD,OAAO8H,KAAKi1C,GAAW,GAAGnsC,MAAM,MACpDmsC,EAAY,IACFgX,EAAkB,IAAMthD,SAASshD,EAAkB;AAmDjE,GAhDIhX,GACAA,EAAUkX,WACV9yD,KAAKf,IAAI,gBAAkB28C,EAAUkX,WAErC9yD,KAAKmC,IACD,QACAnC,KAAKf,IAAI,QAAQqD,EAAE,wBAAyB,CACxC4Q,OAAQ0oC,EAAUkX,aAK1BlX,GACAA,EAAUiX,WACV7yD,KAAKf,IAAI,gBAAkB28C,EAAUiX,WAErC7yD,KAAKmC,IACD,QACAnC,KAAKf,IAAI,QAAQqD,EAAE,wBAAyB,CACxC4Q,OAAQ0oC,EAAUiX,aAI1BjX,GAAaA,EAAUmX,QAAUh/C,MAAM/T,KAAKf,IAAI,WAChDe,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,uBAGrCs5C,GACAA,EAAUpP,OACVxsC,KAAKf,IAAI,WACR,8FAA8FsC,KAC3FvB,KAAKf,IAAI,WAGbe,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,sBAGrCs5C,GACAA,EAAUoX,WACVnjD,OAAO7P,KAAKf,IAAI,UAAUqW,QAAQzF,SAAS0F,SAAS,GAAI,WAExDvV,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,0BAErCs5C,GAAaA,EAAU7lC,OACnB/V,KAAKf,IAAI,SAAW28C,EAAU7lC,SAAW/V,KAAKf,IAAI,UAClDe,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,yBAGzCs5C,GAAaA,EAAUuX,OACvB,GAAIvxD,MAAMkB,QAAQI,KAAKwD,MAAM1G,KAAKf,IAAI,WAElC,IAAK+uD,EAAI,EAAGD,GADZtQ,EAAOv6C,KAAKwD,MAAM1G,KAAKf,IAAI,WACHiU,OAAQ86C,EAAID,EAAMC,IACtC/3C,EAAOwnC,EAAKuQ,GACR93C,OAAOD,KAAU3E,SAAS2E,EAAM,KAChCjW,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE;KAGtC4T,OAAOlW,KAAKf,IAAI,YAAcqS,SAAStR,KAAKf,IAAI,SAAU,KACjEe,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE;AAuL7C,OApLIs5C,GAAaA,EAAU4X,gBAAkBxzD,KAAKf,IAAI,SAAW,GAC7De,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,yBAGrCs5C,GACAA,EAAU0X,eACVzjD,SAASyF,QAAQtV,KAAKf,IAAI,SAAU,QAEpCe,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,8BAGrCs5C,GACAA,EAAU2X,UACVvzD,KAAKf,IAAI,gBAAkB,GACE,IAA7Be,KAAKf,IAAI,iBACoB,IAA7Be,KAAKf,IAAI,iBAETe,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,yBAErCs5C,GAAaA,EAAUsX,YACnBlzD,KAAKf,IAAI,SAAW28C,EAAUsX,YAAclzD,KAAKf,IAAI,UACrDe,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,2BAId,aAA3BtC,KAAKf,IAAI,eACTe,KAAKf,IAAI,WACR,kBAAkBsC,KAAKvB,KAAKf,IAAI,WAEjCe,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,oCAGrCtC,KAAKf,IAAI,UAAY28C,GAAa,eAAgBA,IAC7C,mBAAmBr6C,KAAKvB,KAAKf,IAAI,WAClCe,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,oBAEzCtC,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,SAASsX,gBAIpCvW,KAAKf,IAAI,UACTe,KAAKf,IAAI,kCACTe,KAAKf,IAAI,mBAIe,iBAFxBwzD,EAAWzyD,KAAKf,IAAI,mCAGa,SAA7BwzD,EAASj/C,UAAU,EAAG,IACtBxT,KAAKf,IAAI,uBAGW,QADpBqX,EAActW,KAAKf,IAAI,qBAAqBsX,gBAEP,KAA7BvW,KAAKf,IAAI,SAASiU,QAA8C,KAA7BlT,KAAKf,IAAI,SAASiU,QACrDlT,KAAKmC,IACD,QACAnC,KAAKf,IAAI,QAAQqD,EAAE,yCAItB,iFAAiFf,KAC9EvB,KAAKf,IAAI,WAGbe,KAAKmC,IACD,QACAnC,KAAKf,IAAI,QAAQqD,EAAE,0CAGJ,OAAhBgU,IAEF,iEAAiE/U,KAC9DvB,KAAKf,IAAI,WAGbe,KAAKmC,IACD,QACAnC,KAAKf,IAAI,QAAQqD,EAAE,0CAI/BtC,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,SAASsX,gBAIxCvW,KAAKf,IAAI,UAAY28C,GAAa,gBAAiBA,IAC9C,6CAA6Cr6C,KAAKvB,KAAKf,IAAI,WAC5De,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,4BAEzCtC,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,SAASsX,gBAGpCvW,KAAKf,IAAI,UAAY28C,GAAa,mBAAoBA,GAClDhkC,SAAS5X,KAAKf,IAAI,WACsB,IAApCqS,SAAStR,KAAKf,IAAI,SAAU,KAC5Be,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,+BAK7CtC,KAAKf,IAAI,UAAsC,UAA1Be,KAAKf,IAAI,eAEzB,mKAAmKsC,KAChKvB,KAAKf,IAAI,WAGbe,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,8BAGzCs5C,GAAaA,EAAUwX,aAAepzD,KAAKf,IAAI,WAE1C,mKAAmKsC,KAChKvB,KAAKf,IAAI,WAGbe,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,+BAGxCtC,KAAKf,IAAI,UAAYe,KAAKf,IAAI,0BAA4Be,KAAKf,IAAI,WACpEe,KAAKmC,IAAI,QAAQ,GACjBnC,KAAKmC,IAAI,MAAM,GACf8G,EAAOjJ,MACPuP,EAAM,IACFvP,KAAKf,IAAI,cAAgBe,KAAKf,IAAI,SACtCe,KAAKyhC,UAAUxiC,IAAI,SACdoE,MAAMrD,KAAKf,IAAI,+BAAgCsQ,GAC/CtK,MAAK,SAAUkT,GACZ,IAAIs7C;AAkBJ,OAjBAA,EAAYl0D,MAAMua,OAAOw0B,WAAWrlC,EAAKhK,IAAI,SACvCgK,EAAKhK,IAAI,QAAQsvC,OACjBtlC,EAAKhK,IAAI,QAEXkZ,EAAKlZ,IAAI,UAAY,GACrBkZ,EAAKlZ,IAAI,oBAAsBgK,EAAKhK,IAAI,YAExCgK,EAAK9G,IACD,QACA8G,EAAKhK,IAAI,QAAQqD,EAAE,qBAAsB,CACrCkB,MAAOiwD,EAAUhnD,cACjB1N,MAAOkK,EAAKhK,IAAI,YAIxBgK,EAAK9G,IAAI,MAAM,GAEZ8G,EAAK9G,IAAI,QAAQ,QAI/BnC,KAAKf,IAAI,UAAY28C,GAAkC,aAArBA,EAAUqX,SAC7CjzD,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,mBACtBe,KAAKf,IAAI,UAGVe,KAAKmC,IAAI,MAAM,GACf2U,GAAGrU,IAAI8jB,SAASvmB,KAAMA,KAAK0W,eAAgB,MAH3C1W,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,2BAMzCs5C,GAAaA,EAAU8X,cACnB1zD,KAAKf,IAAI,iBAELe,KAAKf,IAAI,kBACToO,EAAUwC,OACN7P,KAAKf,IAAI,cAAgB,IAAMe,KAAKf,IAAI,kBAC1CgV,KACEpE,OAAO7P,KAAKf,IAAI,cAAgB,IAAMe,KAAKf,IAAI,oBAC/C,YAEU,IACVoO,GAAW,OAGfoC,EAAQzP,KAAKf,IAAI,oBAAoBwQ,MAAM,KAC3CpC,EAAmC,GAAzBiE,SAAS7B,EAAM,GAAI,IAAW6B,SAAS7B,EAAM,GAAI,KAE3DpC,EAAU,KAAOrN,KAAKf,IAAI,eAAiB,IAC3Ce,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,QAAQqD,EAAE,mCAK1CtC,KAAK8vD,qBAEhB6D,MAAO,SAAU9sD,EAAK+sD,GAalB,OAZKA,EAUD5zD,KAAKf,IAAI,SAAWe,KAAKf,IAAI,cAAcovB,aAAaxnB,GARL,OAA/C7G,KAAKf,IAAI,SAAWe,KAAKf,IAAI,eACiB,MAA9Ce,KAAKf,IAAI,SAAWe,KAAKf,IAAI,cAE7Be,KAAKmC,IAAI,SAAWnC,KAAKf,IAAI,aAAc6X,GAAG2V,EAAE,CAAC5lB,KAEjD7G,KAAKf,IAAI,SAAWe,KAAKf,IAAI,cAAcyvB,WAAW7nB,GAKvD7G,KAAKmC,IAAI,aAAcnC,KAAK6zD,kBAEvCllD,KAAM,WAEF,GADA3O,KAAKmC,IAAI,UAAU,IACfnC,KAAKf,IAAI,uBAGb,OAAQe,KAAKf,IAAI,eACb,IAAK,aACL,IAAK,WACL,IAAK,aACL,IAAK,UACL,IAAK,SACL,IAAK,cACL,IAAK,YACD;AACJ,QACI,OAAOe,KAAK8zD,eAAe,UAGvChlC,OAAQ,WAEJ,OADA9uB,KAAKf,IAAI,SAASk5B,qBACXn4B,KAAKmC,IAAI,QAAQ,IAE5B2kC,KAAM,WACF,IAAIt0B,EAAgBvJ;AAGpB,GAFAA,EAAOjJ,KACPA,KAAK24B,KAAK,cACJ34B,KAAKf,IAAI,iBAAmB,GAE9B,OADAuT,EAAQxS,KAAKf,IAAI,UACPA,IAAI,sBACAuT,EAAMs0B,OACD7hC,MAAK,WAChB,OAAOgE,EAAK9G,IAAI,QAAQ,MAGrB8G,EAAK9G,IAAI,QAAQ,IAIpCw2B,KAAM,SAAUjuB,EAAM+nC,GAClB,OAAOzyC,KAAK+kD,WAAW,mBAAoBr6C,EAAM+nC,IAErDshB,aAAc,SAAUh1D,EAAOkqB,GAC3B,OAAOjpB,KAAKmC,IAAI,SAAW8mB,EAAWlqB,IAE1Ci1D,YAAa,SAAUj1D,EAAOkqB,GAAW,IAAAyU,EAAA19B;AAErC,OADAA,KAAKmC,IAAI,QAASpD,GACbA,EAIMiB,KAAKyhC,UAAUxiC,IAAI,SACrBgtB,WAAWjsB,KAAKf,IAAI,sBAAuBF,GAC3CkG,MAAK,SAAC+P,GAGH,OAFA0oB,EAAKv7B,IAAI,SAAWu7B,EAAKz+B,IAAI,aAAc+V,GAC3C0oB,EAAKv7B,IAAI,QAAS6S,GACX0oB,EAAK/E,KAAK,gBARzB34B,KAAKmC,IAAI,SAAWnC,KAAKf,IAAI,aAAc,MACpCe,KAAK24B,KAAK,cAWzBs7B,kBAAmB,SAAUl1D,EAAOkqB,GAChC,IAAIjpB,KAAKf,IAAI,mBAWb,OARAe,KAAKmC,IAAI,SAAWnC,KAAKf,IAAI,aAAcF,GAC3CiB,KAAKmC,IAAI,QAASpD,GAClBQ,MAAMkD,IAAI8V,KAAKvY,MAAM,WACjB,OAAOA,KAAK24B,KAAK,eAEU,aAA3B34B,KAAKf,IAAI,eAAiCM,MAAM+gB,UAAUvhB,IAC1DiB,KAAKf,IAAI,uBAAuBi1D,kBAAkBl0D,KAAKf,IAAI,uBAExDe,KAAK+kD,WAAW,mBAAoBhmD,EAAOkqB,IAEtDkrC,sBAAuB,SAAUz3C,GAC7B,IAAI3d;AAKJ,OAJAA,EAAQ2d,EAAMlX,OAAOzG,MACrBiB,KAAKmC,IAAI,SAAWnC,KAAKf,IAAI,aAAcF,GAC3CiB,KAAKmC,IAAI,QAASpD,GAClBiB,KAAK24B,KAAK,YACH34B,KAAK+kD,WAAW,mBAAoBhmD,EAAOiB,KAAKf,IAAI,eAG/Dm1D,cAAe,SAAUvnD,EAAM2F,EAAO6hD,GAClC,OAAOr0D,KAAK+kD,WAAW,SAAUl4C,EAAM2F,EAAO6hD,KAGtDC,cAAe/0D,MAAMqjB,GAAG,aAAa,WACjC,GAAK5iB,KAAKf,IAAI,QAGd,OAAOmK,EAAE,eAAgBpJ,KAAKkxC,SAASlxB,WAE3Cu0C,gBAAiBz9C,GAAG8L,GAChB,OACA9L,GAAGgtC,SAAS,kBAAkB,WAC1B,GAA+B,aAA3B9jD,KAAKf,IAAI,eAAgCe,KAAKf,IAAI,kBAClD,OAAOe,KAAK24B,KAAK,gBAI7B67B,mBAAoBj1D,MAAMukD,SAAS,qBAAqB,WACpD,IAAI2O;AACJ,GAAIzyD,KAAKf,IAAI,kCAAoCe,KAAKf,IAAI,mBAE9B,iBADxBwzD,EAAWzyD,KAAKf,IAAI,mCAC6C,SAA7BwzD,EAASj/C,UAAU,EAAG,GACtD,OAAOxT,KAAK24B,KAAK,eAI7B87B,yBAAyB,EACzBC,kBAAmB59C,GAAGgtC,SAAS,kBAAkB,WAC7C,GAAI9jD,KAAKf,IAAI,kBACT,OAAOe,KAAKmC,IAAI,2BAA2B,MAGnDwyD,aAAcp1D,MAAMukD,SAAS,SAAS,WAClC,IAAItxC;AAEJ,KADAA,EAAQxS,KAAKf,IAAI,UACPA,IAAI,cAA8B,MAAduT,EAAMmmB,KAGpC,OAAOnmB,EAAMmmB,KAAK,kBAEtBK,QAAQ,EACR47B,WAAYr1D,MAAMwB,SAAS,cAAc,WACrC,IAAI6zD;AAKJ,OAJAA,EAAa99C,GAAG2V,EAAE,IACa,kBAA3BzsB,KAAKf,IAAI,gBACT21D,EAAa50D,KAAK6zD,iBAEfe,KAEXf,cAAe,WACX,IAAI9xC,EAASlb,EAAKguD,EAAa5oD,EAAK6V,EAAM/iB;AAG1C,IAAK8H,KAFLguD,EAAct1D,MAAMktB,EAAE,IACtBxgB,EAAMjM,KAAKf,IAAI,iBAEXF,EAAQkN,EAAIpF,GACZkb,GAAU,EACNngB,MAAMkB,QAAQ9C,KAAKf,IAAI,SAAWe,KAAKf,IAAI,gBACvC0J,EAAQmC,KAAK9K,KAAKf,IAAI,SAAWe,KAAKf,IAAI,cAAe4H,IAAQ,IACjEkb,GAAU,IAGlBD,EAC8B,MAA1B/iB,EAAMyU,UAAU,EAAG,GACbxT,KAAKf,IAAI,QAAQqD,EACbtC,KAAKf,IAAI,+BACL,KACAe,KAAKf,IAAI,aACT,IACA4H,GAER9H,KACGA,GAASiB,KAAKf,IAAI,QAAQqsB,OAAOvsB,KAC1C+iB,EAAO9hB,KAAKf,IAAI,QAAQqD,EAAEvD,IAE9B81D,EAAYnmC,WACRnvB,MAAMV,OAAO+J,OAAO,CAChBmZ,QAASA,EACTlb,IAAKA,EACLib,KAAMA;AAIlB,OAAO+yC,GAEXpzC,SAAU3K,GAAG/V,SAAS,QAAS,SAAS,WACpC,IAAIu6B,EAAWgiB,EAAGE,EAAGzqC,EAAK9G,EAAKC,EAAM/J,EAAK8wB;AAC1C,GACIh0B,EAAIe,KAAM,WACTf,EAAIe,KAAM,gBACXf,EAAIe,KAAM,6BAGV,IAAKs9C,EAAI,EAAGvqC,GADZ9G,EAAMhN,EAAIe,KAAM,8BACMkT,OAAQoqC,EAAIvqC,EAAKuqC,IAEnC,IAAKE,KADLr7C,EAAM8J,EAAIqxC,GAGN,GADArqB,EAAI9wB,EAAIq7C,GACFtxC,EAAOjN,EAAIe,KAAM,SAAWw9C,GAAK70C,EAAQmC,KAAKmoB,EAAExjB,MAAM,KAAMvD,IAAS,EACvE,OAAO;AAKvB,GAAmD,WAA/C1J,EAAOxC,KAAKf,IAAI,4BAAyC,CAEzD,IADAq8B,EAAYt7B,KAAKf,IAAI,uCAGjBq8B,EAAU3yB,QAAQ,aAAe,IACa,IAA9C3I,KAAKf,IAAI,mCACqB,IAA9Be,KAAKf,IAAI,oBACuB,IAA/Bq8B,EAAU3yB,QAAQ,SAA4C,cAA1B3I,KAAKf,IAAI,cAE9C,OAAO;AACJ,IAC2C,IAA9Ce,KAAKf,IAAI,mCACRe,KAAKf,IAAI,qCAEV,OAAO,OAER,GAAIe,KAAKf,IAAI,2BAChB,OAAO;AAEX,OAAO,KAEX61D,cAAev1D,MAAMwB,UAAS,WAC1B,IAAIwO,EAAKnC,EAAMid,EAAe1V,EAAK9B,EAAGyqC,EAAGrxC,EAAKC,EAAMoe,EAAUlW;AAE9D,KADAiW,EAAgBrqB,KAAKf,IAAI,iCAErB,OAAO;AAMX,GAHIe,KAAKf,IAAI,gBACTe,KAAKmC,IAAI,QAAS0N,SAASsB,OAAO,eAEhB,WAAlBkZ,EACA,MAAO;AAWX,IATA9a,EAAMuH,GAAG2V,KACTnC,GAAY,GAAKD,GAAe5a,MAAM,MACzByD,OAAS,GAClBkB,GAAuB,EAAfkW,EAAS,GACjB3V,EAAM2V,EAAS,KAEflW,EAAQ,EACRO,EAAM0V,GAGNxX,EAAIyqC,EAAIrxC,EAAMmI,EAAOlI,EAAOyI,EAC5B1I,GAAOC,EAAOoxC,EAAIpxC,EAAOoxC,EAAIpxC,EAC7B2G,EAAI5G,GAAOC,IAASoxC,IAAMA,EAE1BlwC,EAAOyC,SAAS0F,SAAS1C,EAAG,QAC5BtD,EAAIrE,KACA3L,MAAMV,OAAO+J,OAAO,CAChBjF,GAAIyJ,EAAK+D,OAAO,cAChBtE,KAAMO,EAAK+D,OAAO;AAI9B,OAAO5B,KAEXskB,aAAct0B,MAAMwB,SAAS,SAAS,WAClC,SAAIf,KAAKf,IAAI,4BAAoD,YAAtBe,KAAKf,IAAI,WAGnB,YAAtBe,KAAKf,IAAI,YAGxB6rB,UAAW,CACP,CACInnB,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,aAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,sBAEX,CACI4E,GAAI,KACJ5E,MAAO,eAEX,CACI4E,GAAI,KACJ5E,MAAO,iBAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,kBAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,cAEX,CACI4E,GAAI,KACJ5E,MAAO,uBAEX,CACI4E,GAAI,KACJ5E,MAAO,aAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,aAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,cAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,cAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,mCAEX,CACI4E,GAAI,KACJ5E,MAAO,oCAEX,CACI4E,GAAI,KACJ5E,MAAO,0BAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,iBAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,kCAEX,CACI4E,GAAI,KACJ5E,MAAO,qBAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,gBAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,cAEX,CACI4E,GAAI,KACJ5E,MAAO,kBAEX,CACI4E,GAAI,KACJ5E,MAAO,4BAEX,CACI4E,GAAI,KACJ5E,MAAO,QAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,oBAEX,CACI4E,GAAI,KACJ5E,MAAO,2BAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,yCAEX,CACI4E,GAAI,KACJ5E,MAAO,gBAEX,CACI4E,GAAI,KACJ5E,MAAO,cAEX,CACI4E,GAAI,KACJ5E,MAAO,iBAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,QAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,kBAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,sBAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,eAEX,CACI4E,GAAI,KACJ5E,MAAO,qBAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CAGI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,+BAEX,CACI4E,GAAI,KACJ5E,MAAO,iBAEX,CACI4E,GAAI,KACJ5E,MAAO,QAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,iBAEX,CACI4E,GAAI,KACJ5E,MAAO,oBAEX,CACI4E,GAAI,KACJ5E,MAAO,+BAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,aAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,aAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,cAEX,CACI4E,GAAI,KACJ5E,MAAO,QAEX,CACI4E,GAAI,KACJ5E,MAAO,aAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,iBAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,qCAEX,CACI4E,GAAI,KACJ5E,MAAO,iCAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,aAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,aAEX,CACI4E,GAAI,KACJ5E,MAAO,6BAEX,CACI4E,GAAI,KACJ5E,MAAO,QAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,eAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,cAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,0CAEX,CACI4E,GAAI,KACJ5E,MAAO,sBAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,cAEX,CACI4E,GAAI,KACJ5E,MAAO,oCAEX,CAGI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,0BAEX,CACI4E,GAAI,KACJ5E,MAAO,iBAEX,CAGI4E,GAAI,KACJ5E,MAAO,cAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,8CAEX,CACI4E,GAAI,KACJ5E,MAAO,cAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,QAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,oBAEX,CACI4E,GAAI,KACJ5E,MAAO,cAEX,CACI4E,GAAI,KACJ5E,MAAO,cAEX,CACI4E,GAAI,KACJ5E,MAAO,aAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,mCAEX,CACI4E,GAAI,KACJ5E,MAAO,wBAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,cAEX,CACI4E,GAAI,KACJ5E,MAAO,cAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,cAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,eAEX,CACI4E,GAAI,KACJ5E,MAAO,iBAEX,CACI4E,GAAI,KACJ5E,MAAO,eAEX,CACI4E,GAAI,KACJ5E,MAAO,aAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,QAEX,CACI4E,GAAI,KACJ5E,MAAO,kBAEX,CACI4E,GAAI,KACJ5E,MAAO,4BAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,QAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,mCAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,oBAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,QAEX,CACI4E,GAAI,KACJ5E,MAAO,eAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CAGI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,eAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CAGI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,oBAEX,CACI4E,GAAI,KACJ5E,MAAO,gDAEX,CACI4E,GAAI,KACJ5E,MAAO,yBAEX,CACI4E,GAAI,KACJ5E,MAAO,eAEX,CACI4E,GAAI,KACJ5E,MAAO,8BAEX,CACI4E,GAAI,KACJ5E,MAAO,6BAEX,CACI4E,GAAI,KACJ5E,MAAO,oCAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,cAEX,CACI4E,GAAI,KACJ5E,MAAO,yBAEX,CACI4E,GAAI,KACJ5E,MAAO,gBAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,cAEX,CACI4E,GAAI,KACJ5E,MAAO,gBAEX,CACI4E,GAAI,KACJ5E,MAAO,aAEX,CACI4E,GAAI,KACJ5E,MAAO,6BAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,mBAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,gBAEX,CACI4E,GAAI,KACJ5E,MAAO,gDAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,aAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,0BAEX,CACI4E,GAAI,KACJ5E,MAAO,aAEX,CAGI4E,GAAI,KACJ5E,MAAO,eAEX,CACI4E,GAAI,KACJ5E,MAAO,wBAEX,CACI4E,GAAI,KACJ5E,MAAO,6BAEX,CACI4E,GAAI,KACJ5E,MAAO,cAEX,CACI4E,GAAI,KACJ5E,MAAO,gCAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,eAEX,CACI4E,GAAI,KACJ5E,MAAO,QAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,wBAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,gBAEX,CACI4E,GAAI,KACJ5E,MAAO,4BAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,wBAEX,CACI4E,GAAI,KACJ5E,MAAO,kBAEX,CACI4E,GAAI,KACJ5E,MAAO,iBAEX,CACI4E,GAAI,KACJ5E,MAAO,wCAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,cAEX,CACI4E,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,sBAEX,CACI4E,GAAI,KACJ5E,MAAO,qCAEX,CACI4E,GAAI,KACJ5E,MAAO,YAEX,CACI4E,GAAI,KACJ5E,MAAO,2BAEX,CACI4E,GAAI,KACJ5E,MAAO,wBAEX,CACI4E,GAAI,KACJ5E,MAAO,qBAEX,CACI4E,GAAI,KACJ5E,MAAO,kBAEX,CACI4E,GAAI,KACJ5E,MAAO,SAEX,CACI4E,GAAI,KACJ5E,MAAO,UAEX,CACI4E,GAAI,KACJ5E,MAAO;eCz+EnBL,OAAA,6BAAA,CAAA,UAAA,+CAAA,SAAAC,EAAAo2D,GAGAl2D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA81D,EAAA71D;;;;;;;;;;;;ICPqB81D;;;gEAA2Ch5C,EAAAA;;MCQ3Czc,MAAM01D,UAAU71D,OAAO,CACxCg2B,QAAS,QACTjvB,kBAAmB,CAAC,OAAQ,OAC5BuE,KAAM,OACNwqD,YAAa31D,MAAMwB,SAAS,SAAS,WACjC,GAA0B,OAAtBf,KAAKf,IAAI,WAAsB6H,UAAUquD,WAAW/nD,KACpD,OAAO,EAAAq5C,EAAAvnD,SAAEc,KAAKkxC,SAAS/xB,IAAI,OAGnCi2C,kBAAmB71D,MAAMwB,SAAS,QAAS,CACvC9B,IAAK,WACD,OAAIe,KAAK+qB,OACE/qB,KAAK+qB,SAEZzkB,OAAO4pB,UAAUmlC,UAAU1sD,QAAQ,SAAW,IAG3C7B,UAAUquD,WAAW/nD,MAEhCjL,IAAK,SAAU0E,EAAK9H,GAChB,OAAQiB,KAAK+qB,OAAShsB,KAG9BynD,iBAAkB,WACd,IAAI8O,EAASC,EAActsD,EAAMusD;AACjC,IAAKx1D,KAAKf,IAAI,qBAaV,OAXAgK,EAAOjJ,KACPu1D,EAAe,SAAUpuC,GACrB,OAAOle,EAAK9G,IAAI,QAAS0N,OAAOsX,EAAE/Z,MAAM+D,OAAO,gBAEnDqkD,EAAY,GACRx1D,KAAKf,IAAI,aACTu2D,EAAY,IAAIx2C,KAAKhf,KAAKf,IAAI,eAE9Bq2D,EAAU,IAAIt2C,KACdw2C,EAAY,IAAIx2C,KAAK,OAAQs2C,EAAQG,WAAYH,EAAQI,UAAW,EAAG,EAAG,EAAG,KAE1E,EAAAjP,EAAAvnD,SAAEc,KAAKkxC,SACTykB,WAAW,CACRxkD,OAAQ,aACRykD,SAAU5uD,aAAaylC,KACvBopB,WAAW,EACXC,gBAAgB,EAChBj3C,UAAW22C,EACXO,UAAU,EACVC,sBAAsB,EACtBC,YAAa,WAEhBrzC,GAAG,aAAc2yC,IAG9BW,gBAAiB,WAIb,GAHIl2D,KAAKf,IAAI,sBACTe,KAAKmC,IAAI,OAAQ,QAEjBnC,KAAKf,IAAI,aACT,OAAOe,KAAKmC,IAAI,MAAOnC,KAAKf,IAAI;;MC3DfM,MAAMyc,UAAU5c,OAAO,CAChD+2D,WAAY,CAAC,sBACbC,kBAAmB,CAAC,aACpB7V,UAAW,cACXp6C,kBAAmB,CAAC,cACpBkwD,UAAW,SAAU35C,GAEjB,OADAA,EAAMyD,iBACCngB,KAAKmC,IAAI,YAAa,gBAEjCm0D,SAAU,SAAU55C,GAGhB,OAFAA,EAAM65C,kBACNv2D,KAAKmC,IAAI,YAAa,cACf,GAEXq0D,UAAW,SAAU95C,GAEjB,OADAA,EAAM65C,mBACC,GAEXE,KAAM,SAAU/5C,GACZ,IAAIzb,EAAMy1D,EAAMC,EAAeC,EAASvB;AAaxC,GAZAr1D,KAAKmC,IAAI,YAAa,eAEtBu0D,GADArB,EAAY/uD,OAAO4pB,UAAUmlC,WACZ1sD,QAAQ,SACzBiuD,EAAUvB,EAAU1sD,QAAQ,YAExBguD,EADAD,EAAO,GAAKE,EAAU,EACN,OAEA,YAGpB31D,EAAOyb,EAAM8jC,aAAaE,QAAQiW,GAE9B32D,KAAKf,IAAI,WACT,OAAOe,KAAKg4C,QAAQ/2C,EAAMyb;;MCjCbnd,MAAMyc,UAAU5c,OAAO,CAC5C+2D,WAAY,CAAC,kBACbhwD,kBAAmB,CAAC,aACpB0wD,UAAW,OACXC,UAAW,SAAUp6C,GACjB,IAAIg6C,EAAMC,EAAeC,EAASvB;AAUlC,OAPAqB,GADArB,EAAY/uD,OAAO4pB,UAAUmlC,WACZ1sD,QAAQ,SACzBiuD,EAAUvB,EAAU1sD,QAAQ,YAExBguD,EADAD,EAAO,GAAKE,EAAU,EACN,OAEA,YAEbl6C,EAAM8jC,aAAaC,QAAQkW,EAAe32D,KAAKf,IAAI;;MCbnC83D,EAAAA,QAAe33D,OAAO,CACjD2qD,WAAY,8BACZiN,YAAa,0BACbzc,QAAS,CACLkX,SAAU,WACN,OAAOzxD,KAAKmC,IAAI,eAAe;;MCLjB5C,MAAMyc,UAAU5c,OAAO,CAE7C63D,aAAa,EAEbl4D,MAAO,KAEPm4D,QAAS,eAETvsD,QAAS,GACTgqD,aAAcp1D,MAAMukD,SAAS,SAAS,WAClC,OAAI9jD,KAAKf,IAAI,gBACFe,KAAK+kD,WAAW,SAAU/kD,KAAKf,IAAI,iBAEnCe,KAAK+kD,WAAW,SAAU/kD,KAAKf,IAAI,aAIlDk4D,SAAU53D,MAAMwB,SAAS,UAAW,SAAS,WACzC,IAAIq2D;AACJ,OAAIp3D,KAAKf,IAAI,UACTm4D,EAAS,IAAIC,OAAOr3D,KAAKf,IAAI,SAAU,KAChCe,KAAKf,IAAI,WAAWklB,QAAO,SAAUlO,GACxC,MAAoB,WAAhBzT,EAAOyT,GACAmhD,EAAO71D,KAAK0U,EAAKpJ,MAErBuqD,EAAO71D,KAAK0U,OAGhBjW,KAAKf,IAAI,cAGxBymD,SAAU5uC,GAAG8L,GACT,OACA9L,GAAGgtC,SAAS,SAAS,WACjB,GAAK9jD,KAAKf,IAAI,SAGd,OAAI2C,MAAMkB,QAAQ9C,KAAKf,IAAI,WAAW,IAC3Be,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,WAAW4F,KAAK7E,KAAKf,IAAI,WAEpDe,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,WAAW0pB,OAAO,KAAM3oB,KAAKf,IAAI,UAAU4N,UAIzF0tC,QAAS,CACLmX,QAAS,WACL,OAAO1xD,KAAKmC,IAAI,eAAe,IAEnCm1D,QAAS,aAET7F,SAAU,WAEN,OADAzxD,KAAKmC,IAAI,eAAe,GACjBnC,KAAK24B,KAAK,cAErB1Y,OAAQ,SAAUjV,GACd,IAAIjM;AAcJ,OAbA,EAAA0nD,EAAAvnD,SAAE,QAASc,KAAKkxC,SAASnb,OACrB/qB,GAEIjM,EADc,MAAdiM,EAAO/L,IACC+L,EAAO/L,IAAI,QACZ+L,EAAOrH,GACNqH,EAAO6B,KAEP7B,EAEZhL,KAAKmC,IAAI,QAASpD,IAElBiB,KAAKmC,IAAI,QAAS,MAEfnC,KAAK+kD,WAAW,eAAgB/5C,IAE3CusD,UAAW,WACP,IAAI1M,EAAOh4C,EAAGE,EAAK/H,EAAQL,EAASwU;AAMpC,IALA0rC,GAAQ,EAEe,KADvBlgD,EAAU3K,KAAKf,IAAI,aACPiU,SACR23C,GAAQ,GAEPh4C,EAAI,EAAGE,EAAMpI,EAAQuI,OAAQL,EAAIE,EAAKF,IAEvCsM,GADAnU,EAASL,EAAQkI,IACJlP,GAAKqH,EAAO6B,KAAO7B,EAC5BhL,KAAKf,IAAI,YAAckgB,EACvB0rC,GAAQ,EAER7qD,KAAK+kD,WAAW,eAAgB/5C;AAGxC,GAAI6/C,EACA,OAAO7qD,KAAKmC,IAAI,QAAS;;MC1FrB5C,MAAMyc,UAAU5c,OAAO,CACvCopD,eAAgBjpD,MAAMC,OAAOC,UAK7BV,MAAO,KAEPwhB,OAAQ,KACRi3C,WAAW,EAKX7sD,QAAS,KAETusD,QAAS,eACTO,aAAc,KACdh2C,UAAU,EACVi2C,UAAW,WAIP,OADS13D,KAAKkxC,QAAQymB,qBAAqB,UAAU,GACtC54D,MAAQiB,KAAKf,IAAI,SAAWe,KAAKf,IAAI,SAAW,IAEnE24D,eAAgB9gD,GAAG/V,SAAS,SAAS,WACjC,IAAI82D;AACJ,GAAI73D,KAAKf,IAAI,eAET,UADA44D,EAAmB73D,KAAKf,IAAI,kBAAkBA,IAAI,mBAC1B44D,EAAiB73D,KAAKf,IAAI,mBAU1Ds7C,QAAS,CAELt6B,OAAQ,SAAUtc,GAAI,IAAAmB,EAAA9E;AAElB,OAAIA,KAAKf,IAAI,gBACE,iBAAP0E,GACA3D,KAAKmC,IAAI,kBAAkB,GAEpB,iBAAPwB,GACA3D,KAAKmC,IAAI,kBAAkB,QAE/BnC,KAAK+kD,WAAW,eAAgBphD,KAGzB,iBAAPA,GAAgC,iBAAPA,GACzB3D,KAAKmC,IAAI,QAASwB,GAGlB3D,KAAKf,IAAI,eACTe,KAAKmC,IAAI,gBAAgB,GACzB2U,GAAGrU,IAAI8F,MACHvI,MACA,WAEI,OADA8E,EAAK3C,IAAI,QAAS,MACX2C,EAAK3C,IAAI,gBAAgB,KAEpC,MAGDnC,KAAK+kD,WAAW,eAAgBphD;;AC3EnD,IAAMwY,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,8NAAAzZ,KAAA,CAAA0Z,WAAA,iEAGbhd,MAAAid;eCJf9d,OAAA,yDAAA,CAAA,UAAA,uDAAA,SAAAC,EAAAm5D,GAGAj5D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA64D,EAAA54D,cCTAR,OAAA,kDAAA,CAAA,UAAA,+CAAA,SAAAC,EAAAo5D,GAGAl5D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA84D,EAAA74D,cCTAR,OAAA,qDAAA,CAAA,UAAA,kDAAA,SAAAC,EAAAq5D,GAGAn5D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA+4D,EAAA94D,cCTAR,OAAA,mDAAA,CAAA,UAAA,gDAAA,SAAAC,EAAAs5D,GAGAp5D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAg5D,EAAA/4D,cCTAR,OAAA,0DAAA,CAAA,UAAA,uDAAA,SAAAC,EAAAu5D,GAGAr5D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAi5D,EAAAh5D,cCTAR,OAAA,mDAAA,CAAA,UAAA,gDAAA,SAAAC,EAAAw5D,GAGAt5D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAk5D,EAAAj5D,cCTAR,OAAA,+BAAA,CAAA,UAAA,4CAAA,SAAAC,EAAAy5D,GAGAv5D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAm5D,EAAAl5D,cCTAR,OAAA,+CAAA,CAAA,UAAA,0DAAA,SAAAC,EAAA05D,GAGAx5D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAo5D,EAAAn5D,cCTAR,OAAA,8BAAA,CAAA,UAAA,yCAAA,SAAAC,EAAA25D,GAGAz5D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAq5D,EAAAp5D,cCTAR,OAAA,6BAAA,CAAA,UAAA,iDAAA,SAAAC,EAAA45D,GAGA15D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAs5D,EAAAr5D,cCTAR,OAAA,6BAAA,CAAA,UAAA,iDAAA,SAAAC,EAAA45D,GAGA15D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAs5D,EAAAr5D,cCTAR,OAAA,0BAAA,CAAA,UAAA,8CAAA,SAAAC,EAAA45D,GAGA15D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAs5D,EAAAr5D,cCTAR,OAAA,8BAAA,CAAA,UAAA,yCAAA,SAAAC,EAAA65D,GAGA35D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAu5D,EAAAt5D,cCTAR,OAAA,6BAAA,CAAA,UAAA,iDAAA,SAAAC,EAAA45D,GAGA15D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAs5D,EAAAr5D,cCTAR,OAAA,0BAAA,CAAA,UAAA,8CAAA,SAAAC,EAAA45D,GAGA15D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAs5D,EAAAr5D,cCTAR,OAAA,wCAAA,CAAA,UAAA,4DAAA,SAAAC,EAAA45D,GAGA15D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAs5D,EAAAr5D,cCTAR,OAAA,yCAAA,CAAA,UAAA,6DAAA,SAAAC,EAAA45D,GAGA15D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAs5D,EAAAr5D,cCTAR,OAAA,6BAAA,CAAA,UAAA,iDAAA,SAAAC,EAAA45D,GAGA15D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAs5D,EAAAr5D,cCTAR,OAAA,+BAAA,CAAA,UAAA,4CAAA,SAAAC,EAAA85D,GAGA55D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAw5D,EAAAv5D,cCTAR,OAAA,0BAAA,CAAA,UAAA,8CAAA,SAAAC,EAAA45D,GAGA15D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAs5D,EAAAr5D,cCTAR,OAAA,gCAAA,CAAA,UAAA,6CAAA,SAAAC,EAAA+5D,GAGA75D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAy5D,EAAAx5D;MCCsBK,MAAMyc,UAAU5c,OAAO,CACzCO,KAAMJ,MAAMC,OAAOC,UACnB+mD,iBAAkB,WACd,OAAO,EAAAC,EAAAvnD,SAAE,cAAcm8B,QAE3Bn5B,UAAW3C,MAAMwB,SAAS,SAAS,WAC/B,IAAIqE,EAASuzD,EAAKC;AAgBlB,OAfA,EAAAnS,EAAAvnD,SAAE,cAAcyyD,OAChBgH,EAAM34D,KAAKf,IAAI,uBAEf,EAAAwnD,EAAAvnD,SAAE2gB,UAAUg5C,UAAU,GAGlBzzD,GAFJwzD,EAAa54D,KAAKf,IAAI,QAAQqD,EAAE,UAAYq2D,IAC7BpqB,QAAiD,wBAAvCqqB,EAAWrqB,OAAO/6B,UAAU,EAAG,IAC1ColD,EAAWrqB,OAGjBoqB,EAAM,IAAM34D,KAAKf,IAAI,oBAAsB,KAAOe,KAAKf,IAAI,gBAAkB,IAGrF65D,YAAW,WACP,OAAO,EAAArS,EAAAvnD,SAAE,cAAc65D,QAAQ,UAChC,KACI3zD;;AChCf1G,OAAA,0CAAA,CAAA,UAAA,8DAAA,SAAAC,EAAAq6D,GAGAn6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA+5D,EAAA95D,cCTAR,OAAA,iCAAA,CAAA,UAAA,qDAAA,SAAAC,EAAAs6D,GAGAp6D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAg6D,EAAA/5D;MCCsBK,MAAMyc,UAAU5c,OAAO,CACzConD,iBAAkB,WACd,IAAIv9C;AAGJ,OAFAA,EAAOjJ,KACPA,KAAKk5D,iBACE,EAAAzS,EAAAvnD,SAAE,SAAUc,KAAKkxC,SAAStQ,QAAO,WACpC,IAAIu4B;AAEJ,OADAA,GAAW,EAAA1S,EAAAvnD,SAAEc,MAAM6E,KAAK,mBAAmB5F,IAAI,GAAG0E,GAC3CsF,EAAK9G,IAAI,QAASg3D,OAGjCD,cAAe,WACX,IAAItyC,EAASwyC,EAAO74C,EAAQN,EAAclhB;AAsB1C,OArBOiB,KACP4mB,EAAU5mB,KAAKf,IAAI,WACnBghB,GAAS,EAAAwmC,EAAAvnD,SAAE,SAAUc,KAAKkxC,SAC1B3wB,EAASvgB,KAAKf,IAAI,UAClBF,EAAQiB,KAAKf,IAAI,SACbshB,GACAN,EAAOo5C,OAAO,iBAAmB94C,EAAS,cAG9C64C,EAAQxyC,EAAQ3nB,IAAI,qBAGhBm6D,EAAQxyC,EAAQ3nB,IAAI,uBAGnBm6D,IACDA,EAAQxyC,EAAQ3nB,IAAI,gBAEnBshB,GAAWxhB,GAlBTiB,KAmBEmC,IAAI,QAASi3D,GAEfxyC,EAAQhgB,SAAQ,SAAUqP,GAC7B,OAAKA,EAAKtS,GAaCsc,EAAOo5C,OACV,eACIpjD,EAAKtS,GACL,KACC5E,GAASA,IAAUkX,EAAKtS,GAAK,uBAAyB,IACvD,IACAsS,EAAKlX,MACL,aAnBDkhB,EAAOo5C,OACV,eACIpjD,EACA,MACClX,GAAUA,IAAUkX,GAAQlX,IAAUkX,EAAKs4B,OAEtC,GADA,wBAEN,IACAt4B,EACA,iBAepBigD,gBAAiB,WACb,IAAKl2D,KAAKf,IAAI,SACV,OAAIe,KAAKf,IAAI,mBACFe,KAAKmC,IAAI,QAAS,6BAElBnC,KAAKmC,IAAI,QAAS,iBAIrC2jD,IAAK,WACD,IAAI7lC;AAEJ,GADAA,GAAS,EAAAwmC,EAAAvnD,SAAE,SAAUc,KAAKkxC,SAEtB,OAAOjxB,EAAOpb,KAAK,cAAgB7E,KAAKf,IAAI,SAAW,MAAMq6D,KAAK,YAAY,IAEpFzQ,SAAS;eCrFfnqD,OAAA,+BAAA,CAAA,UAAA,yDAAA,SAAAC,EAAA45D,GAGA15D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAs5D,EAAAr5D,cCTAR,OAAA,6BAAA,CAAA,UAAA,uDAAA,SAAAC,EAAA45D,GAGA15D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAs5D,EAAAr5D;MCD6BK,MAAMyc,UAAU5c,OAAO,CAChDg2B,QAAS,SACTjvB,kBAAmB,CAAC,QAAS,UAC7BqgD,iBAAkB,WACd,IAAIvyB;AAIJ,OAHAA,EAASj0B,KAAKf,IAAI,WAAWs6D,WAAW,MACxCv5D,KAAKmC,IAAI,SAAU8xB,GACnBj0B,KAAKw5D,OAAOvlC,GACLj0B,KAAKktD,QAEhBA,KAAM,WACF,IAAIj5B,EAAQs1B,EAAOtgD;AASnB,OARAA,EAAOjJ,KACPi0B,EAASj0B,KAAKf,IAAI,UAClBe,KAAKw5D,OAAOvlC,IACZs1B,EAAQ,IAAIkQ,OACNC,OAAS,WAEX,OADAzlC,EAAShrB,EAAKhK,IAAI,WACJ06D,UAAUpQ,EAAO,EAAG,EAAGA,EAAMp1B,MAAOo1B,EAAMoC,SAEpDpC,EAAMqQ,IAAM55D,KAAKf,IAAI,SAC/B4pD,SAAS,QACX2Q,OAAQ,SAAUvlC,GACd,GAAIA,EAEA,OADAA,EAAO4lC,UAAY,OACZ5lC,EAAO6lC,SAAS,EAAG,EAAG95D,KAAKf,IAAI,SAAUe,KAAKf,IAAI;;MCnBzCM,MAAMyc,UAAU5c,OAAO,CAC/CM,QAASH,MAAMC,OAAOC,UACtBE,KAAMJ,MAAMC,OAAOC,UACnB+5B,UAAWj6B,MAAMC,OAAOC,UACxBoQ,OAAQtQ,MAAMC,OAAOC,UACrBmF,KAAMrF,MAAMC,OAAOC,UACnB21B,QAAS,KACTghC,kBAAmB,CAAC,YACpB2D,cAAejjD,GAAG2V,EAAE,CAChButC,QAAQ,EACRj3D,OAAO,IAEXk3D,UAAW16D,MAAMwB,SAAS,OAAQ,SAAS,WACvC,MAAO,CAACf,KAAKf,IAAI,QAASe,KAAKf,IAAI,gBAEvCi7D,kBAAmB36D,MAAMwB,SAAS,OAAQ,SAAS,WAAY,IACvDoZ,EAAQwK,EAD+C7f,EAAA9E;AAY3D,OAVAma,EAASna,KAAKf,IAAI,oBAClB0lB,EAAS,CAAC3kB,KAAKf,IAAI,oBACnBkb,EAAOvT,SAAQ,SAACpD,GACZ,IAAIzE;AAKJ,OAJAA,EAAQ+F,EAAK7F,IAAI,SAAWuE,GACA,aAAxBjE,MAAM6I,OAAOrJ,KACbA,EAAQA,EAAME,IAAI,OAEf0lB,EAAOzZ,KAAKnM,MAEhB4lB,KAEXw1C,aAAc56D,MAAMwB,SAAS,OAAQ,SAAS,WAC1C,MAAO,CAACf,KAAKf,IAAI,QAASe,KAAKf,IAAI,YAAa,cAEpD8gB,MAAO,WACH,OAAO/f,KAAK+kD,WAAW,YAAa/kD,KAAKf,IAAI,WAEjDm7D,SAAU76D,MAAMwB,SAAS,OAAQ,WAAW,WACxC,MAA0C,WAAtCf,KAAKf,IAAI,2BAAiE,IAAxBe,KAAKf,IAAI,cAMnEsE,KAAM,KACNijD,iBAAkB,WACd,OAAOxmD,KAAKmC,IAAI,OAAQnC,KAAKf,IAAI,iCAGrC0mC,QAASpmC,MAAMwB,SAAS,OAAQ,cAAc,WAE1C,OAAIf,KAAKf,IAAI,kBAKTe,KAAKf,IAAI,2BACTe,KAAKf,IAAI,kBAAoBe,KAAKf,IAAI,8BAIhC,GACNe,KAAKf,IAAI,uBAILuC,EAAAA,QAAUyN,aAAajP,KAAKf,IAAI,QAAS,SAAWe,KAAKf,IAAI,0BAIzEo7D,QAAS96D,MAAMwB,SAAS,WAAW,WAC/B,OAA4B,IAAxBf,KAAKf,IAAI,aACDe,KAAKf,IAAI,wBAIzBq7D,UAAW/6D,MAAMwB,SAAS,OAAQ,cAAc,WAC5C,OAAIf,KAAKf,IAAI,gBAGRe,KAAKf,IAAI,wBAA2BuC,EAAAA,QAAUkO,UAAU1P,KAAKf,IAAI,cAAtE,EAEQuC,EAAAA,QAAUyN,aAAajP,KAAKf,IAAI,QAAS,WAAae,KAAKf,IAAI,yBAI3Es7D,WAAYh7D,MAAMwB,SAAS,QAAQ,WAC/B,GAA8B,YAA1Bf,KAAKf,IAAI,eAA+BuC,EAAAA,QAAUkO,UAAU1P,KAAKf,IAAI,SACrE,OAAO,KAGfu7D,WAAYj7D,MAAMqjB,GACd,OACArjB,MAAMukD,SAAS,aAAc,QAAS,aAAc,QAAQ,WACxD,IAAIrf,EAAKg2B,EAAMtgD,EAAQtH,EAAGE,EAAK9G;AAI/B,GAHOjM,KACPma,EAASrD,GAAG2V,EAAE,IACdguC,EAAOz6D,KAAKf,IAAI,WAChB,CAGA,IAAK4T,EAAI,EAAGE,EAAM0nD,EAAKvnD,OAAQL,EAAIE,EAAKF,IACpC4xB,EAAMg2B,EAAK5nD,GACXtT,MAAM4C,IAAIsiC,EAAK,UAAWA,EAAIwE,KAC9B1pC,MAAM4C,IACFsiC,EACA,gBACyB,iBAAxBx4B,EAAMw4B,EAAIn1B,IAAI5E,OAAmC,kBAARuB,GAE9CkO,EAAOuU,WAAW+V,EAAIn1B;AAE1B,OAAOtP,KAAKmC,IAAI,SAAUgY,QAGlCugD,aAAc,YACd34C,QAAS,WACL,IAAI9Y;AAIJ,GAHAA,EAAOjJ,KACPA,KAAKmC,IAAI,aAAa,GACtBnC,KAAKmC,IAAI,eAAgB,aACpBnC,KAAKf,IAAI,cAGd,OAAOe,KAAKf,IAAI,cAAc2H,SAAQ,SAAUqP,GAK5C,GAJgB,MAAZA,EAAKhX,MAELgX,EAAO1W,MAAMV,OAAO+J,OAAOqN,IAE3BA,EAAKhX,IAAI,QAAUgK,EAAKhK,IAAI,YAE5B,OADAgK,EAAK9G,IAAI,eAAgB,WAClB8G,EAAK9G,IAAI,aAAa,OAGvC0mD,SAAS,iBACXjP,UAAWr6C,MAAMwB,SAAS,sBAAsB,WAC5C,IAAIkwC;AAEJ,OAAgB,OADhBA,EAAWjxC,KAAKf,IAAI,cAEZgyC,EAAShyC,IAAI,aACNgyC,EAAShyC,IAAI,aAGrBe,KAAKf,IAAI,QAAU,YAE9B07D,aAAcp7D,MAAMwB,SAAS,yBAAyB,WAClD,IAAIkwC;AAEJ,OAAgB,OADhBA,EAAWjxC,KAAKf,IAAI,cAEZgyC,EAAShyC,IAAI,gBACNgyC,EAAShyC,IAAI,gBAGrBe,KAAKf,IAAI,QAAU,eAE9B27D,eAAgB9jD,GAAG/V,SAAS,2BAA2B,WACnD,IAAkB26C,EAAczpC,EAAMgC;AACtC,QAAKjU,KAAKf,IAAI,6BAGdgV,EACIpE,OAAOyrC,MAAM9L,QAAQ,OAAO+L,OAC5B1rC,OAAOyrC,IAAIt7C,KAAKf,IAAI,4BAA4BuwC,QAAQ,OAAO+L,OACnEtpC,EAAOpC,OAAO2rC,SAASvnC,EAAM,WAAWwnC,SAExCC,EACI7rC,OAAOyrC,IAAIt7C,KAAKf,IAAI,4BAA4BuwC,QAAQ,OAAO+L,OAC/D1rC,OAAOyrC,IAAIt7C,KAAKf,IAAI,2BAA2BuwC,QAAQ,OAAO+L,OAE7C,IADN1rC,OAAO2rC,SAASE,EAAc,WAAWD,WAEhDxpC,EAAO,IAGJ,iDAEPA,EAAO,KAGJ,0CAA4CA,MAEvD4oD,wBAAyB/jD,GAAG/V,SAAS,kBAAkB,WACnD,MAAmC,iDAA/Bf,KAAKf,IAAI,kBACF,KAEA,OAGfs7C,QAAS,CACLugB,QAAS,SAAUt3D,GACf,IAAIyI;AACJ,GAA6B,iBAAtBA,EAAMzI,EAAMkH,OAAmC,kBAARuB,EAG9C,OAAOjM,KAAK+kD,WAAW,mBAAoB,CACvClc,YAAa,CACTke,MAAO,CAAC,YAAa/mD,KAAKf,IAAI,QAAU,IAAMuE,EAAMylC,IAAKjpC,KAAKf,IAAI,iBAI9E87D,SAAU,SAAU/lD,GAAK,IACjBzR,EAAM0U,EAAazF,EADFqE,EAAA7W;AAGrB,IADAwS,EAAQxS,KAAKf,IAAI,UACNA,IAAI,+BAKf,OAFAsE,EAAOvD,KAAKf,IAAI,QAChBgZ,GAAc,EAAAW,EAAAC,WAAU7Y,KAAKf,IAAI,SAAS6Z,WACnC9Y,KAAKf,IAAI,WACXioC,QAAQlnC,KAAKf,IAAI,QAAQqD,EAAE,4BAC3B2C,MAAK,SAAC+1D,GACH,IAAI/5D;AACJ,GAAI+5D,EAKA,OAJA/5D,EAAO,IACFsC,GAAQ,CACTu8B,QAAQ,GAELjpB,EAAK5X,IAAI,QACX8F,QAAQ,IAAMkT,EAAc,IAAMjD,EAAI/V,IAAI,MAAQ,kBAAmB,CAClE+F,SAAU,OACV0F,KAAM,MACNzJ,KAAMiC,KAAKC,UAAUlC,KAExBgE,MAAK,WAOF,OANAuN,EAAMrQ,IAAI,gBAAiB,IAC3BqQ,EAAMrQ,IAAI,iBAAkB,IAC5BqQ,EAAMrQ,IAAI,2BAA2B,GACrCqQ,EAAMrQ,IAAI,6BAA6B,GACvCqQ,EAAMrQ,IAAI,kBAAmB,UAC7BqQ,EAAMrQ,IAAI,qBAAqB,GACxBqQ,EAAMs0B,cAKrC1kB,OAAQ,SAAUpN,GAAK,IAAAyO,EAAAzjB;AACnB,IAAIwB,EAAAA,QAAUkO,UAAU1P,KAAKf,IAAI,SAGjC,OAAOe,KAAKf,IAAI,WACXioC,QAAQlnC,KAAKf,IAAI,QAAQqD,EAAE,0BAC3B2C,MAAK,SAAC+1D,GACH,GAAIA,EACA,OAAOhmD,EAAImU,gBAAgBlkB,MAAK,SAACgd,GAE7B,GADAjN,EAAI42B,gBACAnoB,EAAK4sC,cAAe5sC,EAAK6sC,aAG7B,OAAO7sC,EAAKshC,WAAW,eAAgB,SAAU/vC,UAYrEhN,QAAS,SAAUgN,GAAK,IACVimD,EAAgBhjD,EADNwkB,EAAAz8B;AAEpB,IAAIwB,EAAAA,QAAUkO,UAAU1P,KAAKf,IAAI,SAMjC,OAHOe,KAAKf,IAAI,QAChBgZ,GAAc,EAAAW,EAAAC,WAAU7Y,KAAKf,IAAI,SAAS6Z,WAC1CmiD,EAAiBj7D,KAAKf,IAAI,QAAQ6Z,WAC3B9Y,KAAKf,IAAI,WACXioC,QAAQlnC,KAAKf,IAAI,QAAQqD,EAAE,2BAC3B2C,MAAK,SAAC+1D,GACH,GAAIA,EACA,OAAOv+B,EAAKx9B,IAAI,QACX8F,QAAQ,IAAMkT,EAAc,IAAMjD,EAAIrR,GAAK,kBAAmB,CAC3DqB,SAAU,OACV0F,KAAM,MACNzJ,KAAM,KAAOg6D,EAAiB,oCAEjCh2D,MAAK,WACF,OAAO+P,EAAI42B,sBAKnC9E,KAAM,WACF,IAAI79B;AAEJ,OADAA,EAAOjJ,KACHwB,EAAAA,QAAUkO,UAAU1P,KAAKf,IAAI,UAC7Be,KAAKmC,IAAI,QAAQ,QACjBnC,KAAKf,IAAI,SAASk5B,sBAGfn4B,KAAKf,IAAI,SACX6nC,OACA7hC,MAAK,WACF,OAAOgE,EAAK9G,IAAI,QAAQ,OAGpCwxD,MAAO,WACH,OAAI3zD,KAAKf,IAAI,cACTe,KAAKmC,IAAI,eAAgB,aAClBnC,KAAKf,IAAI,cAAcovB,aAAaruB,KAAKf,IAAI,YAEpDe,KAAKmC,IAAI,eAAgB,WAClBnC,KAAKf,IAAI,cAAcyvB,WAAW1uB,KAAKf,IAAI,YAG1Di8D,eAAgB,SAAUxwD,GACtB,OAAO1K,KAAKf,IAAI,aAAa06B,WAAW,CACpCD,SAAU15B,KAAKuD,KAAO,sBACtBq2B,OAAQlvB,EACRmvB,MAAO;eCjUvBn7B,OAAA,2BAAA,CAAA,UAAA,6CAAA,SAAAC,EAAAw8D,GAGAt8D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAk8D,EAAAj8D,cCTAR,OAAA,8BAAA,CAAA,UAAA,gDAAA,SAAAC,EAAAy8D,GAGAv8D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAm8D,EAAAl8D;MCCoBK,MAAMyc,UAAU5c,OAAO,CACvC8N,MAAO3N,MAAMC,OAAOC,UACpBy3D,QAAS,0BACT3c,QAAS,CACLyZ,YAAa,SAAUj1D,GACnB,OAAOiB,KAAK+kD,WAAW,SAAUhmD,EAAO;;MCH1BQ,MAAMyc,UAAU5c,OAAO,CAC7C8N,MAAO3N,MAAMC,OAAOC,UACpB8rD,OAAQhsD,MAAMC,OAAOC,UACrBoiB,IAAK,KAELw5C,QAAS,GACTC,WAAYxkD,GAAG2V,EAAE,IACjB8uC,WAAYzkD,GAAG2V,EAAE,IACjB+uC,SAAU1kD,GAAG2V,EAAE,IACfgvC,UAAW,EACXC,oBAAoB,EAEpBC,UAAW7kD,GAAG8L,GAAG,oBAAoB,WACjC,IAAI2nC,EAAWqR,EAAUC,EAAKC,EAAK3lB,EAAKt0B,EAAKlX,EAAS1B,EAAM8yD;AAqG5D,OApGAxR,GAAY,EAAA9D,EAAAvnD,SAAE,cAAec,KAAKkxC,SAAS,GAC3C6qB,EAAa,CACT,CACIC,YAAa,OACbC,YAAa,gBACbC,QAAS,CACL,CACIC,MAAO,aAInB,CACIH,YAAa,QACbE,QAAS,CACL,CACIE,IAAK,WAET,CACIC,YAAa,MAIzB,CACIL,YAAa,YACbE,QAAS,CACL,CACIE,IAAK,WAET,CACIC,YAAa,IAEjB,CACIC,UAAW,MAIvB,CACIJ,QAAS,CACL,CACII,UAAW,IAEf,CACID,YAAa,OAK7BpzD,EAAOjJ,KACHA,KAAKf,IAAI,UACTk3C,EAAMjzC,KAAKwD,MAAM1G,KAAKf,IAAI,UAC1B48D,EAAM1lB,EAAIjzB,SACV44C,EAAM3lB,EAAI/yB,WACHpjB,KAAKf,IAAI,cAAgBe,KAAKf,IAAI,oCACzC28D,EAAW57D,KAAKf,IAAI,mCACpB48D,EAAMD,EAAS14C,SACf44C,EAAMF,EAASx4C,WACRpjB,KAAKf,IAAI,cAAgBe,KAAKf,IAAI,kCACzC28D,EAAW57D,KAAKf,IAAI,iCACpB48D,EAAMD,EAAS14C,SACf44C,EAAMF,EAASx4C,WACRpjB,KAAKf,IAAI,mBAAqBe,KAAKf,IAAI,uCAC9C28D,EAAW57D,KAAKf,IAAI,sCACpB48D,EAAMD,EAAS14C,SACf44C,EAAMF,EAASx4C,YAEfy4C,EAAM,UACNC,EAAM,UACF5rC,UAAUqsC,aACVrsC,UAAUqsC,YAAYC,eAAc,SAAUh0D,GAC1C,IAAIotC;AAKJ,OAJAimB,EAAMrzD,EAASi0D,OAAOv5C,SACtB44C,EAAMtzD,EAASi0D,OAAOr5C,UACtBwyB,EAAO,IAAItvC,OAAOilD,OAAOmR,KAAKC,OAAOd,EAAKC,GAC1Cj6C,EAAI+6C,MAAMhnB,GACH/zB,EAAIg7C,QAAQ,QAI/BlyD,EAAU,CACNmyD,OAAQ,IAAIx2D,OAAOilD,OAAOmR,KAAKC,OAAOd,EAAKC,GAC3CiB,KAAM9zD,EAAKhK,IAAI,aACf+9D,OAAQjB,EACRkB,kBAAkB,EAClBC,aAAa,GAEjBr7C,EAAM,IAAIvb,OAAOilD,OAAOmR,KAAKS,IAAI5S,EAAW5/C,GACxC3K,KAAKf,IAAI,UACTgK,EAAKm0D,oBAAoB,IAAI92D,OAAOilD,OAAOmR,KAAKC,OAAOd,EAAKC,GAAMj6C,GAElE7hB,KAAKf,IAAI,gBACT4iB,EAAIiqC,YAAY,SAAS,SAAU3kC,GAC/B,OAAOle,EAAKm0D,oBAAoBj2C,EAAEk2C,OAAQx7C,MAG9C7hB,KAAKf,IAAI,cACTe,KAAKs9D,aAAaz7C,GAElB7hB,KAAKf,IAAI,mBACTe,KAAKu9D,kBAAkB17C,GAEpB7hB,KAAKmC,IAAI,MAAO0f,MAE3B27C,eAAgB1mD,GAAGgtC,SAAS,gBAAgB,WAIxC,OAHA9jD,KAAKy9D,eACLz9D,KAAK09D,eACL19D,KAAK29D,aACE39D,KAAKs9D,aAAat9D,KAAKf,IAAI,WAEtC2+D,sBAAuB9mD,GAAGgtC,SAAS,qBAAqB,WAGpD,OAFA9jD,KAAKy9D,eACLz9D,KAAK29D,aACE39D,KAAKu9D,kBAAkBv9D,KAAKf,IAAI,WAE3Cw+D,aAAc,WAEV,OADAz9D,KAAK69D,OAAO,KAAM79D,KAAKf,IAAI,eACpBe,KAAKmC,IAAI,aAAc2U,GAAG2V,EAAE,MAEvCixC,aAAc,WAEV,OADA19D,KAAK69D,OAAO,KAAM79D,KAAKf,IAAI,eACpBe,KAAKmC,IAAI,aAAc2U,GAAG2V,EAAE,MAEvCkxC,WAAY,WAER,OADA39D,KAAK69D,OAAO,KAAM79D,KAAKf,IAAI,aACpBe,KAAKmC,IAAI,WAAY2U,GAAG2V,EAAE,MAErCoxC,OAAQ,SAAUh8C,EAAKi8C,GACnB,IAAIjrD,EAAGE,EAAKzD,EAAK+tC;AAEjB,IADAA,EAAW,GACNxqC,EAAI,EAAGE,EAAM+qD,EAAK5qD,OAAQL,EAAIE,EAAKF,IACpCvD,EAAMwuD,EAAKjrD,GACXwqC,EAASnyC,KAAKoE,EAAIuuD,OAAOh8C;AAE7B,OAAOw7B,GAGXkgB,kBAAmB,SAAU17C,GACzB,IAAI3I,EAAOrG,EAAGgnB,EAAO9mB,EAAKi7C,EAAG+P,EAAMC,EAASC,EAAMhyD,EAAKoxC;AAKvD,IAJOr9C,KACPkZ,EAAQ,EAERmkC,EAAW,GACNxqC,EAAI,EAAGE,GAFZ9G,EAAMjM,KAAKk+D,gBAEWhrD,OAAQL,EAAIE,EAAKF,IAEnCkrD,GADA/P,EAAI/hD,EAAI4G,IACCuR,QAAQlB,SACjB+6C,EAAOjQ,EAAE5pC,QAAQhB,UACjB46C,EAAU,IAAI13D,OAAOilD,OAAOmR,KAAKC,OAAOoB,EAAME,GAC9CpkC,EAAQm0B,EAAE5pC,QAAQyV,MATf75B,KAUEm+D,qBAAqB,UAAWH,EAASn8C,EAAa,IAAR3I,EAAa2gB,GAChEwjB,EAASnyC,KAAKgO;AAElB,OAAOmkC,GAGXigB,aAAc,SAAUz7C,GACpB,IAAI46C,EACAvjD,EACAklD,EACAvrD,EACAE,EACAi7C,EACA+P,EACAC,EACAC,EACAI,EACApyD,EACAoxC,EAEAihB,EACAC,EACAC,EACAC,EACAC,EACAC;AAKJ,IAJO3+D,KACPkZ,EAAQ,EAERmkC,EAAW,GACNxqC,EAAI,EAAGE,GAFZ9G,EAAMjM,KAAK4+D,WAEW1rD,OAAQL,EAAIE,EAAKF,KACnCm7C,EAAI/hD,EAAI4G,IAEF0jC,YACFkoB,EAAYzQ,EAAEzX,UAAUrzB,SACxBy7C,EAAY3Q,EAAEzX,UAAUnzB,UACxBs7C,EAAe,IAAIp4D,OAAOilD,OAAOmR,KAAKC,OAAO8B,EAAWE,IAExD3Q,EAAExX,UACF8nB,EAAUtQ,EAAExX,QAAQtzB,SACpBs7C,EAAUxQ,EAAExX,QAAQpzB,UACpBm7C,EAAa,IAAIj4D,OAAOilD,OAAOmR,KAAKC,OAAO2B,EAASE,IAGxDH,EAAS,EACLrQ,EAAEzX,WAAayX,EAAEzX,UAAUsoB,SAAW,KAAS7Q,EAAEzX,UAAUsoB,SAAW,MACtER,EAASrQ,EAAEzX,UAAUsoB,UAErB7Q,EAAEzX,WAAayX,EAAExX,SAtBlBx2C,KAuBMm+D,qBAAqB,cAAeI,EAAY18C,EAAa,IAAR3I,EAAa80C,EAAEvX,QAvB1Ez2C,KAwBMm+D,qBACD,gBACAO,EACA78C,EACQ,IAAR3I,EACA80C,EAAEvX,OACF4nB,KAEIrQ,EAAEzX,WAAayX,EAAExX,QAhC1Bx2C,KAiCMm+D,qBAAqB,WAAYI,EAAY18C,EAAa,IAAR3I,EAAa80C,EAAEvX,QAjCvEz2C,KAmCMm+D,qBACD,WACAO,EACA78C,EACQ,IAAR3I,EACA80C,EAAEvX,OACF4nB,GAGRnlD,IAEI80C,EAAE5pC,SAEF25C,EAAO/P,EAAE5pC,QAAQlB,SACjB+6C,EAAOjQ,EAAE5pC,QAAQhB,UACjB46C,EAAU,IAAI13D,OAAOilD,OAAOmR,KAAKC,OAAOoB,EAAME,GAlD/Cj+D,KAmDMm+D,qBAAqB,UAAWH,EAASn8C,EAAa,IAAR3I,EAAa80C,EAAE5pC,QAAQyV,OAC1E4iC,EAAS,CAACiC,EAAcV,GApDzBh+D,KAqDM8+D,mBAAmBrC,EAAQ56C,EAAa,IAAR3I,GACrCklD,EAAY,CAACG,EAAYP,GAtD1Bh+D,KAuDM8+D,mBAAmBV,EAAWv8C,EAAa,IAAR3I,GACxCmkC,EAASnyC,KAAKgO,MAEdmkC,EAASnyC,UAAK;AAGtB,OAAOmyC,GAGX8gB,qBAAsB,SAAUzzD,EAAM2yD,EAAQx7C,EAAKk9C,EAAOllC,GAAmB,IAAA/0B,EAAA9E,KAAZq+D,EAAYl+D,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAH;AACtE,OAAOZ,MAAMkD,IAAI8F,OAAM,WACnB,IAAIy2D,EAAMC;AAoCV,MAnCa,aAATv0D,EACAs0D,EAAO,2BACS,kBAATt0D,EACPs0D,EAAO,CACHl+D,IAAK,eACLo+D,OAAQ,IAAI3T,OAAOmR,KAAKyC,MAAM,GAAI,KAEtB,gBAATz0D,EACPs0D,EAAO,CACHl+D,IAAK,eACLo+D,OAAQ,IAAI3T,OAAOmR,KAAKyC,MAAM,GAAI,KAEtB,YAATz0D,IACPs0D,EAAO,+BAEXC,EAAS,IAAI34D,OAAOilD,OAAOmR,KAAK0C,OAAO,CACnCroC,SAAUsmC,EACVx7C,IAAKA,EACLm9C,KAAMA,EACN7R,UAAW5B,OAAOmR,KAAK2C,UAAUC,KACjCv8D,MAAO82B,IAEPwkC,EAAS,IACTA,EAAS,IAAI9S,OAAOmR,KAAK6C,OAAO,CAC5BC,YAAa,UACbC,cAAe,GACfC,aAAc,EACdC,UAAW,UACXC,YAAa,GACb/9C,IAAKA,EACLi7C,OAAQO,EACRgB,OAAQA,IAEZv5D,EAAK7F,IAAI,cAAcyvB,WAAW2vC,IAE/Bv5D,EAAK7F,IAAI,cAAcyvB,WAAWuwC,KAC1CF,IAGPD,mBAAoB,SAAUrC,EAAQ56C,EAAKk9C,GAAO,IAAAloD,EAAA7W;AAC9C,OAAOT,MAAMkD,IAAI8F,OAAM,WACnB,IAAIlD;AASJ,OARAA,EAAO,IAAIkmD,OAAOmR,KAAKmD,SAAS,CAC5Bx6D,KAAMo3D,EACNqD,UAAU,EACVN,YAAa,UACbC,cAAe,EACfC,aAAc,KAEb7B,OAAOh8C,GACLhL,EAAK5X,IAAI,YAAYyvB,WAAWrpB,KACxC05D,IAGP3B,oBAAqB,SAAUC,EAAQx7C,GACnC,IAAIhP,EAAGE,EAAKojC,EAAQ8oB,EAAQhzD;AAE5B,IAAK4G,EAAI,EAAGE,GADZ9G,EAAMjM,KAAKf,IAAI,YACOiU,OAAQL,EAAIE,EAAKF,IAC/B5G,EAAI4G,GACNgrD,OAAO;AAab,OAXA79D,KAAKmC,IAAI,UAAW,IACpB88D,EAAS,IAAI34D,OAAOilD,OAAOmR,KAAK0C,OAAO,CACnCroC,SAAUsmC,EACVx7C,IAAKA,IAET7hB,KAAKf,IAAI,WAAWiM,KAAK+zD,IAEzB9oB,EAAM,IACFjzB,SAAW+7C,EAAOloC,SAAS8kC,MAC/B1lB,EAAI/yB,UAAY67C,EAAOloC,SAAS+kC,MAChC97D,KAAKmC,IAAI,QAASe,KAAKC,UAAUgzC,IAC1Bt0B,EAAI+6C,MAAMS,IAErB0C,gBAAgB,EAEhBC,gBAAiBzgE,MAAMukD,SAAS,gBAAiB,YAAa,cAAc,WAExE,GAAI9jD,KAAKf,IAAI,kBACT,OAAOM,MAAMkD,IAAI8jB,SAASvmB,KAAMA,KAAKigE,eAAgB,SAG7DC,kBAAmB,WACf,IAAIr+C,EAAKs+C,EAAKphE;AACd8iB,EAAM7hB,KAAKf,IAAI,OACfF,EAAQmE,KAAKwD,MAAM1G,KAAKf,IAAI,UAC5BkhE,EAAM,IAAI75D,OAAOilD,OAAOmR,KAAKC,OAAO59D,EAAMmkB,SAAUnkB,EAAMqkB,WAC1DvB,EAAIu+C,UAAUD,GACdngE,KAAKo9D,oBAAoB+C,EAAKt+C,GAC9BA,EAAIg7C,QAAQ,KAGhBwD,iBAAkB9gE,MAAMukD,SAAS,SAAS,WACtC,IAAIwc,EAAUC,EAAQt3D,EAAMlK;AAO5B,GALAwhE,EAAS,CACL1E,KAFJ98D,EAAQmE,KAAKwD,MAAM1G,KAAKf,IAAI,WAEbikB,SACX44C,IAAK/8D,EAAMqkB,WAGVpjB,KAAKf,IAAI,SASd,OAFAqhE,EAAW,IAAIh6D,OAAOilD,OAAOmR,KAAK8D,SAClCv3D,EAAOjJ,KACAsgE,EAASG,QACZ,CACIj4D,SAAU+3D,IAEd,SAAUnjB,EAAS98C,GACf,IAAIogE,EAASC,EAAM7/D,EAAKuiD;AACxB,GAAe,OAAX/iD,EAwCJ,OArC6C,IAAzC88C,EAAQ,GAAGwjB,mBAAmB1tD,QAC9BwtD,EAAUtjB,EAAQ,GAAGwjB,mBAAmB,GAA9B,UACVvd,EAAMjG,EAAQ,GAAGwjB,mBAAmB,GAA9B,WACND,EAAOvjB,EAAQ,GAAGwjB,mBAAmB,GAA9B,YACyC,IAAzCxjB,EAAQ,GAAGwjB,mBAAmB1tD,QACrCwtD,EACItjB,EAAQ,GAAGwjB,mBAAmB,GAA9B,UACA,IACAxjB,EAAQ,GAAGwjB,mBAAmB,GAA9B,WAEJvd,EAAMjG,EAAQ,GAAGwjB,mBAAmB,GAA9B,WACND,EAAOvjB,EAAQ,GAAGwjB,mBAAmB,GAA9B,YACyC,IAAzCxjB,EAAQ,GAAGwjB,mBAAmB1tD,QACrCwtD,EACItjB,EAAQ,GAAGwjB,mBAAmB,GAA9B,UACA,IACAxjB,EAAQ,GAAGwjB,mBAAmB,GAA9B,WAEJvd,EAAMjG,EAAQ,GAAGwjB,mBAAmB,GAA9B,WACND,EAAOvjB,EAAQ,GAAGwjB,mBAAmB,GAA9B,YACyC,IAAzCxjB,EAAQ,GAAGwjB,mBAAmB1tD,QACrCwtD,EACItjB,EAAQ,GAAGwjB,mBAAmB,GAA9B,UACA,IACAxjB,EAAQ,GAAGwjB,mBAAmB,GAA9B,WACJvd,EAAMjG,EAAQ,GAAGwjB,mBAAmB,GAA9B,WACND,EAAOvjB,EAAQ,GAAGwjB,mBAAmB,GAA9B,WACP33D,EAAK9G,IAAI,kBAAkB,KAE3Bu+D,EACItjB,EAAQ,GAAGwjB,mBAAmB,GAA9B,UACA,IACAxjB,EAAQ,GAAGwjB,mBAAmB,GAA9B,WACJvd,EAAMjG,EAAQ,GAAGwjB,mBAAmB,GAA9B,WACND,EAAOvjB,EAAQ,GAAGwjB,mBAAmB,GAA9B,YAEX33D,EAAK9G,IAAI,kBAAkB,GACvB8G,EAAKhK,IAAI,YACiB,mBAAbgK,EAAKhK,IAAqBgK,EAAKhK,IAAI,oBAAiB,KAC7D6B,EAAMmI,EAAKhK,IAAI,UAAU4hE,cAAc9hE,IACvC,EAAA+hE,EAAAC,iBAAgBjgE,GAAKmE,MAAK,SAAC8nB,GACvB,IAAIi0C;AAGJ,OAFAA,EAAY,IACFn0D,KAAO,QACV,EAAAi0D,EAAAxyC,aAAYvB,EAAM,IAAK,IAAK,IAAI9nB,MAAK,SAACssB,GAEzC,OADAyvC,EAAUj0C,KAAOwE,GACV,EAAAuvC,EAAAxyC,aAAYiD,EAAS,IAAK,IAAK,IAAItsB,MAAK,SAACssB,GAE5C,OADAyvC,EAAUC,QAAU1vC,EACbtoB,EAAK9G,IAAI,cAAe,CAAC6+D,eAKtB,mBAAb/3D,EAAKhK,IAAqBgK,EAAKhK,IAAI,sBAAmB,IAC/DgK,EAAK9G,IAAI,gBAAiBu+D,IAEJ,mBAAbz3D,EAAKhK,IAAqBgK,EAAKhK,IAAI,kBAAe,IAC3DgK,EAAK9G,IAAI,YAAakhD,KAEA,mBAAbp6C,EAAKhK,IAAqBgK,EAAKhK,IAAI,mBAAgB,IACrDgK,EAAK9G,IAAI,aAAcw+D,QAvBtC;CAtDmC,IAAnC3gE,KAAKf,IAAI,uBACT6X,GAAGrU,IAAI8jB,SAASvmB,KAAMA,KAAKkgE,kBAAmB,SAmF1DD,eAAgB,WACZ,IAAIS,EAAmBz3D;AAEvB,GADAA,EAAOjJ,KACHA,KAAKf,IAAI,kBAAoBe,KAAKf,IAAI,cAGtC,OAFAyhE,EAAU1gE,KAAKf,IAAI,iBAAmB,KAAOe,KAAKf,IAAI,eAC3C,IAAIqH,OAAOilD,OAAOmR,KAAK8D,UAClBC,QACZ,CACIC,QAASA,IAEb,SAAUtjB,EAAS98C,GACf,IAAIuhB;AACJ,GAAIvhB,IAAWgG,OAAOilD,OAAOmR,KAAKwE,eAAeC,GAI7C,OAHAt/C,EAAM5Y,EAAKhK,IAAI,QACXmhE,UAAUhjB,EAAQ,GAAGgkB,SAAS54D,UAClCS,EAAKm0D,oBAAoBhgB,EAAQ,GAAGgkB,SAAS54D,SAAUqZ,GAChDA,EAAIg7C,QAAQ;;MCzcpBt9D,MAAMyc,UAAU5c,OAAO,CAC1CsjB,IAAKnjB,MAAMC,OAAOC,UAClByN,MAAO3N,MAAMC,OAAOC,UACpB4hE,aAAc9hE,MAAMwB,SAASmhC,MAAM,iBACnCnf,eAAgBxjB,MAAMwB,SAClB,qBACA,qBACA,sBACA,sBACA,WAAY,IACJg2B,EADIjyB,EAAA9E;AAER,OAAKA,KAAKf,IAAI,uBAMV83B,EAAW,CACP7T,SAAUljB,KAAKf,IAAI,sBACnBmkB,UAAWpjB,KAAKf,IAAI,uBACpB4/D,SAAU7+D,KAAKf,IAAI,uBAEvBM,MAAMkD,IAAI8V,KAAKvY,MAAM,WACjB,OAAO8E,EAAK3C,IAAI,QAASe,KAAKC,UAAU4zB,OAErCA,IAbPx3B,MAAMkD,IAAI8V,KAAKvY,MAAM,WACjB,OAAO8E,EAAK3C,IAAI,QAAS,SAEtB,SAcnBypB,SAAUrsB,MAAMwB,SAAS,mBAAoB,kBAAkB,WAAY,IAAA8V,EAAA7W;AACvE,OAAOT,MAAMmT,YAAYtT,OAAOG,MAAM+hE,mBAAmB14D,OAAO,CAC5DoB,QAAS,IAAIzK,MAAMkG,KAAKwC,SAAQ,SAACvC,GAC7B,OAAOmR,EAAK5X,IAAI,SACXoE,MACG,UACA,CACIM,GAAIkT,EAAK5X,IAAI,qBAEjB,CACI8K,QAAQ,IAGf9E,MAAK,SAACmf,GACH,IAAIwH,EAAU21C;AACd,GAAKn9C,EAAQnlB,IAAI,gBAiBjB,OAXAsiE,EAAgBr+D,KAAKwD,MAAM0d,EAAQnlB,IAAI,iBACvC2sB,EAAW/U,EAAK5X,IAAI,OAAOolB,YACvB,CACIw3C,IAAK0F,EAAcr+C,SACnBs+C,IAAKD,EAAcn+C,WAEvB,CACIy4C,IAAKhlD,EAAK5X,IAAI,2BACduiE,IAAK3qD,EAAK5X,IAAI,8BAGfyG,EAAQ,CACX3G,MAAO0S,KAAKK,MAAM8Z,GAAY;AAjB9BlmB,EAAQ,CACJ3G,MAAO;;MChDjBQ,MAAMyc,UAAU5c,OAAO,CACzCO,KAAMJ,MAAMC,OAAOC,UACnBgiE,SAAU,WAAY,IAAA38D,EAAA9E;AAUlB,OARUA,KAAKf,IAAI,aAAa+kD,MAAM,CAClCnjD,OAAQ,MACRC,IAAK,kBACLG,KAAM,CACFygE,gBAAiB1hE,KAAKf,IAAI,mBAC1BwtC,KAAMzsC,KAAKf,IAAI,yBAGRgG,MAAK,SAAC0R,GACjB,OAAO7R,EAAK3C,IAAI,UAAW,IAAI5C,MAAMua,OAAOiH,SAASpK,EAAK43B,aAGlEgM,QAAS,CACLonB,UAAW,WAEP,OADA3hE,KAAKyhE,WACEzhE,KAAKmC,IAAI,eAAe,IAEnCy/D,YAAa,WAET,OADAx4D,EAAE,UAAU29C,MAAM,QACX/mD,KAAKmC,IAAI,eAAe;eC/B3CzD,OAAA,4BAAA,CAAA,UAAA,8CAAA,SAAAC,EAAAkjE,GAGAhjE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA4iE,EAAA3iE;MCDsBK,MAAMyc,UAAU5c;;ACJtC,IACIuJ,EAAU,GAAGA,UAIGpJ,MAAMyc,UAAU5c,OAAO,CACvCqiC,UAAWliC,MAAMC,OAAOC,QAAQ,qBAChCyN,MAAO3N,MAAMC,OAAOC,UACpBE,KAAMJ,MAAMC,OAAOC,UACnBG,QAASL,MAAMC,OAAOC,UACtBC,QAASoX,GAAGtX,OAAOC,UACnBkjB,QAAS7L,GAAGtX,OAAOC,UACnBI,MAAOiX,GAAGtX,OAAOC,UACjBy2D,gBAAiB,WACb,IAAO/7C,EAAQtH,EAAGoD,EAAMlD,EAAKqqC;AAM7B,IALAp9C,KAAKC,OAALC,MAAAF,KAAeG,WACfH,KAAKmC,IAAI,SAAU,IAGnBi7C,EAAU,GACLvqC,EAAI,EAAGE,GAFZoH,EADIna,KAAKf,IAAI,aACFypB,WAAW1oB,KAAKf,IAAI,UAENiU,OAAQL,EAAIE,EAAKF,IACtCoD,EAAOkE,EAAOtH,GACdtT,MAAM4C,IAAI8T,EAAK5H,SAAU,YAAY,IACL,IAA5B4H,EAAK5H,SAASC,UACd8uC,EAAQlyC,KAAK3L,MAAM4C,IAAI8T,EAAK5H,SAAU,oBAAoB,IAE1D+uC,EAAQlyC,UAAK;AAGrB,OAAOkyC,GAEX0kB,WAAW,EACXC,eAAgBxiE,MAAMwB,UAAS,WAC3B,IAAIuS;AA8BJ,OA7BAA,EAAO,GAEkB,aAArBtT,KAAKf,IAAI,SACTe,KAAKf,IAAI,aAAa2mC,UAAU,CAAC,uBAEjCtyB,EAAKpI,KAAK,CACNnM,MAAO,WACP+iB,KAAM,kCAIW,aAArB9hB,KAAKf,IAAI,SACTe,KAAKf,IAAI,aAAa2mC,UAAU,CAAC,oBAEjCtyB,EAAKpI,KAAK,CACNnM,MAAO,QACP+iB,KAAM,+BAIV9hB,KAAKf,IAAI,SAASsC,KAAK,0BACF,aAArBvB,KAAKf,IAAI,SACTe,KAAKf,IAAI,aAAa2mC,UAAU,CAAC,wBAEjCtyB,EAAKpI,KAAK,CACNnM,MAAO,YACP+iB,KAAM,mCAGPxO,KAEX0uD,gBAAiB,CAAC,OAAQ,sBAE1BC,YAAY,EACZC,SAAS,EACT7iC,OAAQ,GACR8iC,SAAU5iE,MAAMwB,SAAS,qBAAqB,WAC1C,OAAOf,KAAKf,IAAI,qBAAuB,QAE3CmjE,cAAe7iE,MAAMwB,SAAS,YAAY,WACtC,OAAOxB,MAAMua,OAAOiH,SAAS,UAAY/gB,KAAKf,IAAI,qBAAuB,QAE7Eye,IAAKne,MAAMwB,SAAS,UAAU,WAC1B,OAAOf,KAAKf,IAAI,UAAUwQ,MAAM,QAEpCihC,SAAUnxC,MAAMwB,UAAS,WACrB,IAAmB2c;AAQnB,OAPAA,EAAM1d,KAAKf,IAAI,OAOR,EANAe,KAAKf,IAAI,SAAS8wC,QAAQ/vC,KAAKf,IAAI,SACrBklB,QAAO,SAACnP,GACzB,GAAI0I,EAAI/U,QAAQqM,EAAI/V,IAAI,QAAU,GAAoC,WAA/B+V,EAAI/V,IAAI,mBAC3C,OAAO,KAGUA,IAAI,aAEjCojE,YAAavrD,GAAG/V,UAAS,WACrB,IAAI2c;AAQJ,OAPAA,EAAM1d,KAAKf,IAAI,OACRe,KAAKf,IAAI,SAAS8wC,QAAQ/vC,KAAKf,IAAI,SACvBklB,QAAO,SAACnP,GACvB,GAAI0I,EAAI/U,QAAQqM,EAAI/V,IAAI,QAAU,GAAoC,WAA/B+V,EAAI/V,IAAI,mBAC3C,OAAO,KAGIiU,UAEvBiH,OAAQ5a,MAAMwB,SAAS,QAAQ,WAAY,IACnCuhE,EAAoBC,EAAgBxe,EAAWye,EAAY7iE,EADxBmF,EAAA9E;AA6CvC,OA3CA+jD,EAAI/jD,KAAKf,IAAI,aACbU,EAAOK,KAAKf,IAAI,QAChBsjE,EAAiB,CACb,kBACA,WACA,OACA,SACA,qBACA,cACA,WACA,gBACA,mBACA,QACA,UACA,WACA,QACA,UACA,YAEJD,EAAqB,CAAC,gBAAiB,iBAAkB,eACzDE,EAAa,CAAC,oBAAqB,qBAC1Bze,EAAEr7B,WAAW1oB,KAAKf,IAAI,SACTklB,QAAO,SAAC3gB,GAC1B,IAAIyI,EAAKC,EAAMixC;AACf,OAAMlxC,EAAMzI,EAAMqJ,KAAOlE,EAAQmC,KAAKw3D,EAAoBr2D,IAAQ,IAG9DzI,EAAM6K,SAASoT,aAIfje,EAAM6K,SAASgtB,MAA0C,cAAlC73B,EAAM6K,SAASgtB,KAAKC,aAIzCpvB,EAAOpH,EAAK7F,IAAI,QAAU,IAAMuE,EAAMqJ,OAAOlE,EAAQmC,KAAK03D,EAAYt2D,IAAS,KAI/EixC,EAAO35C,EAAMkH,KAAO/B,EAAQmC,KAAKy3D,EAAgBplB,IAAS,QAAhE,QAIgBt7B,KAAI,SAAU5L,GAC9B,IAAItL;AAoBJ,OAnBAsL,EAAKsK,OAAS5gB,EAAK2C,EAAE,qBACjB2T,EAAK5H,SAASo0D,yBACdxsD,EAAKysD,aAAc,GAEL,aAAdzsD,EAAKvL,OACLC,EAAU,CACN,CACIhH,GAAI,IACJ5E,MAAOY,EAAK2C,EAAE,gBAElB,CACIqB,GAAI,IACJ5E,MAAOY,EAAK2C,EAAE,gBAGtB2T,EAAKtL,QAAUA,EACfsL,EAAKvL,KAAO,kBACZnL,MAAM4C,IAAI8T,EAAK5H,SAAU,oBAAoB,IAE1C4H,QAGf0sD,WAAY,WACR,IAAI97D,EAAKoF,EAAKgW,EAAKljB;AAGnB,IAAK8H,KAFLob,EAAM,GACNhW,EAAMjM,KAAKf,IAAI,UAGG,aADdF,EAAQkN,EAAIpF,IAERob,EAAI/W,KAAK,CACLrE,IAAKA,EACL9H,MAAO,OAGP+X,GAAGwJ,UAAUvhB,IACbkjB,EAAI/W,KAAK,CACLrE,IAAKA,EACL9H,MAAOA;AAKvB,OAAOkjB,GAEX2gD,YAAa,SAAUC,EAAM3pD,GAAO,IAC5B0nB,EAAQkiC,EAASv/D,EAAMsP,EAAGlP,EAAIoP,EAAKgwD,EAAoBtiD,EAAQvT,EAAOmiD,EAD1Cx4C,EAAA7W;AAIhC,GAFA2D,EAAKk/D,EAAKG,YACV3T,EAASrvD,KAAKf,IAAI,0BACb0E,EAAL,CAOA,GAJAuJ,EAAQlN,KAAKf,IAAI,SACjBsE,EAAOvD,KAAKf,IAAI,QAGsB,YAFtCwhB,EAASvT,EAAMsZ,WAAWjjB,EAAMI,IAErB1E,IAAI,mBACX,OAAOe,KAAKijE,OAAOJ,EAAM3pD;AAKzB,IAHA4pD,EAAU9iE,KAAK2iE,cACfI,EAAY,IACFtiD,EAAOxhB,IAAI,OAASwhB,EAAOyiD,YAChCrwD,EAAI,EAAGE,EAAM+vD,EAAQ5vD,OAAQL,EAAIE,EAAKF,IAEpB,eADnB+tB,EAASkiC,EAAQjwD,IACNhM,KAAuBlD,IAAO0rD,GAAmB,SAAT9rD,EAI/Ckd,EAAOte,IAAIy+B,EAAO/5B,IAAK+5B,EAAO7hC,OAH9BiB,KAAKf,IAAI,WAAWoD,MAAMrC,KAAKf,IAAI,QAAQqD,EAAE;AAYrD,OANItC,KAAKf,IAAI,0BACTwhB,EAAOte,IAAI,WAAY,CACnBghE,YAAanjE,KAAKf,IAAI,2BAGpBwhB,EAAOqmB,OACF7hC,MACX,WACI,OAAO4R,EAAKosD,OAAOJ,EAAM3pD,MAE7B,SAACiO,GAEG,OADAtQ,EAAKusD,UAAU3iD,EAAQ0G,EAAG47C,GACnBlsD,EAAKosD,OAAOJ,EAAM3pD,QAKzCkqD,UAAW,SAAU3iD,EAAQ0G,EAAG47C,GAC5B,IAAI/2D,EAAM+3C,EAAGvgD,EAAOqD,EAAKoF;AAIzB,IAAKpF,KAHLk9C,EAAI/jD,KAAKf,IAAI,aACbgN,EAAM82D,EAAUtiD,EAAOxhB,IAAI,OAGvB+M,EAAOC,EAAIpF,GACC,aAARA,IAIe,cADnBrD,EAAQugD,EAAEvgD,MAAMid,EAAOxhB,IAAI,yBAA0B4H,IAC3C6D,MAAuBsB,EAC7ByU,EAAOte,IAAI0E,EAAK7G,KAAKf,IAAI,SAASunB,WAAWhjB,EAAMmH,QAAQpH,KAAMyI,IAEjEyU,EAAOte,IAAI0E,EAAKmF;AAIxB,OADAyU,EAAO0X,qBACAn4B,KAAKf,IAAI,UAAUyvB,WACtBnvB,MAAMV,OAAO+J,OAAO,CAChBoM,IAAKyL,EACL9e,MAAOwlB,MAInBk8C,YAAa9jE,MAAMwB,SAAS,QAAQ,WAChC,OAAOf,KAAKf,IAAI,aAAaypB,WAAW1oB,KAAKf,IAAI,YAErDgkE,OAAQ,SAAUJ,EAAM3pD,GAUpB,OATAlZ,KAAKmC,IAAI,oBAAqBsP,KAAKG,OAAQsH,EAAQ2pD,EAAK3vD,QAAUgG,EAAS,KAAQ,IAC/D,IAAhB2pD,EAAK3vD,SACLlT,KAAK2iB,QAAQmX,WAAW,SAAU95B,KAAKuD,KAAM,MAC7CvD,KAAKmC,IAAI,WAAW,GACpBnC,KAAKmC,IAAI,SAAU,IACfnC,KAAKg6B,OAASh6B,KAAK2C,OAAOuQ,OAAS,GACnClT,KAAKg6B,SAGTh6B,KAAKf,IAAI,eACToD,MAAM,wBACNrC,KAAKmC,IAAI,WAAW,QACpBnC,KAAKmC,IAAI,SAAU,KAGhBnC,KAAK4iE,YAAYC,EAAM3pD,IAElCqhC,QAAS,CACL+oB,WAAY,SAAU/4D,GAClB,OAAIhL,MAAMN,IAAIsL,EAAO8D,SAAU,aAC3B9O,MAAM4C,IAAIoI,EAAO8D,SAAU,YAAY,GAChC9O,MAAM4C,IAAInC,KAAM,UAAYuK,EAAOsC,KAAM,QAEhDtN,MAAM4C,IAAIoI,EAAO8D,SAAU,YAAY,GAChC9O,MAAM4C,IAAInC,KAAM,UAAYuK,EAAOsC,KAAM,aAGxDuH,MAAO,WACH,IAAIyuD;AAKJ,OAJA7iE,KAAKmC,IAAI,aAAa,GACtBnC,KAAKmC,IAAI,SAAU2U,GAAG2V,KACtBzsB,KAAKmC,IAAI,oBAAqB,GAC9B0gE,EAAO/rD,GAAG2V,EAAEzsB,KAAKf,IAAI,QACde,KAAK4iE,YAAYC,EAAMA,EAAK3vD,SAEvC4b,OAAQ,WACJ,OAAO9uB,KAAKmC,IAAI,cAAc,IAElCwU,KAAM,WACF,GAAI3W,KAAKujE,SACL,GAAIvjE,KAAKg6B,MACL,OAAOh6B,KAAKg6B,aAGhB,GAAIh6B,KAAKwjE,QACL,OAAOxjE,KAAKwjE,WAIxBC,aAAc,SAAU1kE,EAAOkqB,GAC3B,OAAO1pB,MAAM4C,IAAInC,KAAM,UAAYipB,EAAWlqB;eC9T1DL,OAAA,kCAAA,CAAA,UAAA,uDAAA,SAAAC,EAAA+kE,GAGA7kE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAykE,EAAAxkE;ACLA,IACIyJ,EAAU,GAAGA;AAQjBpJ,MAAMokE,cAAcz9D,OAAO,CACvBC,kBAAmB,CAAC;MAGR5G,MAAMyc,UAAU5c,OAAO,CACnCqiC,UAAWliC,MAAMC,OAAOC,QAAQ,qBAChCG,QAASL,MAAMC,OAAOC,UACtBE,KAAMJ,MAAMC,OAAOC,UACnBsqD,WAAY,OACZ30B,QAAS,KACT+gC,WAAY,CAAC,OACbC,kBAAmB,CAAC,iCACpBjwD,kBAAmB,CAAC,QACpBy9D,aAAa,EACbC,KAAMtkE,MAAMwB,UAAS,WACjB,GAAIf,KAAKf,IAAI,YACT,MAAO,aAIf6kE,MAAOvkE,MAAMwB,SACT,SACA,WACA,qBACA,cACA,uBACA,WACI,IAAIgjE,EAAahgB,EAAGigB,EAAeC,EAAgBh7D,EAAMwB;AA6BzD,OA5BAxB,EAAOjJ,KACPgkE,EAAgBhkE,KAAKf,IAAI,YACzBglE,EAAiBjkE,KAAKf,IAAI,aAC1B8kE,EAAc/jE,KAAKf,IAAI,UACvB8kD,EAAI/jD,KAAKf,IAAI,aACbwL,EAAOlL,MAAMktB,EAAE,IACfrjB,EAAAA,QAAEe,KAAK65D,GAAe,SAAU/tD,GAC5B,IAAIiuD;AACJ,GAAID,EAAehuD,KAAUguD,EAAehuD,GAAMkuD,iBAC9CD,EAAYD,EAAehuD,IACjBmuD,QAAUnuD,GAEhBzU,EAAAA,QAAUyN,aAAai1D,EAAU3gE,KAAM2gE,EAAUtqC,SACjDv4B,EAAAA,QAAO6C,IAAImgE,SAEX9kE,MAAM4C,IAAI+hE,EAAW,SAAUjuD,IAAS8tD,IAClCG,EAAUI,gBAAiBr7D,EAAKhK,IAAI,gBACtC,OAAOwL,EAAKS,KAAKg5D,MAK7BngB,EAAEne,UAAU,CAAC,cACbn7B,EAAKS,KAAK+4D,EAAeM,aAExBljE,EAAAA,QAAO6C,IAAImgE,QACZ55D,EAAOzK,KAAKwkE,YAAY/5D,IAErBA,KAGf+5D,YAAa,SAAUC,GACnB,IAAIv6D,EAAOw6D,EAAYz7D;AAGvB,OAFAA,EAAOjJ,MACPkK,EAAQlK,KAAKyhC,UAAUv3B,UAIvBw6D,EAAa,GACT19D,cAAgBA,aAAa09D,aAC7BA,EAAaxhE,KAAKwD,MAAMM,aAAa09D,aAEzCt7D,EAAAA,QAAEe,KAAKD,GAAO,SAAUrD,EAAKoP,GACzB,IAAIolB,EAAMxuB;AAKV,GAJAwuB,GAAO,EACH1yB,EAAQmC,KAAK45D,EAAY79D,IAAQ,IACjCw0B,GAAO,IAEPA,IAAQpyB,EAAKhK,IAAI,cAGrB,GAA6B,gBAAzB4H,EAAI2M,UAAU,EAAG,KACjB,GAAIhS,EAAAA,QAAUyN,aAAapI,EAAK,OAK5B,OAJAgG,EAAOhG,EAAI2M,UAAU,IAAI/G,cACR,MAAbwJ,EAAKpJ,OACLA,EAAOoJ,EAAKpJ,MAET43D,EAAMv5D,KACT4L,GAAGjY,OAAO+J,OAAO,CACb+4B,KAAM,iCACNgjC,WAAY99D,EAAI2M,UAAU,IAAI/G,cAC9BuyD,KAAM,mBACNl9C,KAAMjV,EACNy3D,cAAejpC,EACf+oC,QAASv9D,UAIlB,GAAiB,MAAboP,EAAKpJ,KAEZ,OADAA,EAAOoJ,EAAKpJ,KACL43D,EAAMv5D,KACT4L,GAAGjY,OAAO+J,OAAO,CACb+4B,KAAM,oBACNgjC,WAAY99D,EACZm4D,KAAM,mBACNl9C,KAAMjV,EACNy3D,cAAejpC,EACf+oC,QAASv9D,QAKlB49D,GA9CIA,GAoDfC,WAAY5tD,GAAG2V,EAAE,IACjBm4C,QAASrlE,MAAMwB,SAAS8jE,MAAM,OAAQ,WACtCC,KAAMvlE,MAAMwB,SAAS8jE,MAAM,OAAQ,QACnCtqB,QAAS,CACLwqB,UAAW,WAEP,OADA/kE,KAAKmC,IAAI,YAAY,GACdiH,EAAAA,QAAE07D,KAAK,UAElBE,SAAU,WACN,OAAOhlE,KAAK8zD,eAAe,aAE/BmR,kBAAmB,WAGf,cAFOj+D,aAAa,8BACpBA,aAAaG,WAAW,6BACjBqB,SAASuB,UAEpBm7D,qBAAsB,SAAUjvD,GAC5B,OAAOA,EAAK69C,eAAe,kBAE/BqR,cAAe,SAAUC,GACrB,IAAItpC;AAKJ,OAJAA,EAAIspC,EAAMhpC,SAAS,iBAAiB,GAAM7J,MAAM,WAChDvyB,KAAKmC,IAAI,aAAc2U,GAAG2V,EAAEqP,IAC5B90B,aAAaM,QAAQ,aAAcpE,KAAKC,UAAU24B,IAClD97B,KAAK8zD,eAAe,eACb9zD,KAAK24B,KAAK;;MC1ICp5B,MAAMyc,UAAU5c,OAAO,CACjDQ,QAASL,MAAMC,OAAOC,UACtBukD,MAAOzkD,MAAMC,OAAOC,UACpB4lE,UAAWvuD,GAAG2V,EAAE,IAChB+5B,iBAAkB,WACd,IAAIv9C;AAGJ,GAFAA,EAAOjJ,MAEHA,KAAKf,IAAI,+CAGb,OAAOmK,EAAAA,QAAEG,KAAK,CACVzI,IAAKmI,EAAKhK,IAAI,SAASmC,KAAO,uBAC9BsJ,KAAM,MACNnK,QAAS,CACL+I,cAAe,UAAYL,EAAKhK,IAAI,+CAExC0K,QAAS,SAAU1I,GACf,IAAWgY;AAEX,GAAY,MAARhY,EAAc,CACd,IACQ,iBAAoBA,IACpBgY,EAAO7P,EAAAA,QAAEk8D,UAAUrkE,IAEzB,MAAO8V,GAEL,MADQA,EACF,IAAIxX,MAAMgI,MAAM,0CAA4CtG,GAEtE,GAAIgY,EACA,OAAO1Z,MAAMkD,KAAI,WACb,IAAS8iE;AAET,GAA0B,OAD1BA,EAAOhmE,MAAMV,OAAO+J,OAAOqQ,IAClBusD,cAIT,OADMD,EAAKC,cACA5+D,SAAQ,SAAU6+D,GACzB,GAAIA,EAAIC,OACJ,OAAOz8D,EAAKo8D,UAAU32C,WAAW+2C;;MC3C/ClmE,MAAMyc,UAAU5c,OAAO,CACzCQ,QAASL,MAAMC,OAAOC,UACtBukD,MAAOzkD,MAAMC,OAAOC,UACpB21B,QAAS,GACTuwC,SAAU7uD,GAAG2V,EAAE,IACf+5B,iBAAkB,WACd,GAAIxmD,KAAKf,IAAI,qBAGT,OAFAe,KAAKmC,IAAI,iBAAkBnC,KAAKf,IAAI,sBACpCe,KAAK4lE,YACE,EAAAnf,EAAAvnD,SAAE,gBAAgB6nD,MAAM,SAGvC6e,SAAU,WACN,IAAIC,EAAc58D,EAAMrJ;AAExB,KADAA,EAAUI,KAAKf,IAAI,aAE8B,IAAzCe,KAAKyhC,UAAUqkC,aAAalmE,GAMpC,OAFAqJ,EAAOjJ,KACP6lE,EAAe7lE,KAAKf,IAAI,yBACjBe,KAAKf,IAAI,SACX8mE,UAAU,OAAQ/lE,KAAKf,IAAI,sBAC3BgG,MAAK,SAAUsK,GACZ,IAAIsD,EAAGE,EAAK4yD,EAAUjvB,EAAMsvB;AAE5B,IADAL,EAAW,GACN9yD,EAAI,EAAGE,EAAMxD,EAAI2D,OAAQL,EAAIE,EAAKF,IACnC6jC,EAAOnnC,EAAIsD,IACXmzD,EAAW,IACFn5D,KAAO6pC,EAAKz3C,IAAI,YAAc,IAAMy3C,EAAKz3C,IAAI,aAElC,MAAhB4mE,IAC8C,IAA1CA,EAAal9D,QAAQ+tC,EAAKz3C,IAAI,SAC9B+mE,EAASC,QAAS,GAG1BN,EAASz6D,KAAK86D;AAElB,OAAO/8D,EAAK9G,IAAI,WAAYwjE,OAGxCprB,QAAS,CACL2rB,mBAAoB,SAAUlxD,GAC1B,IAAIzF,EAAKoV;AAWT,IATAA,EAAS,IACFkyB,MAAQ7hC,EAAIrR,GACnB3D,KAAKf,IAAI,SAAS8F,QAAQ,YAAa,CACnC2F,KAAM,OACNzJ,KAAM0jB,KAEVpV,EAAMvP,KAAKf,IAAI,UACX+1B,SAAS,GACbh1B,KAAKmC,IAAI,iBAAkBnC,KAAKf,IAAI,sBACjB,IAAfsQ,EAAI2D,OACJ,OAAO,EAAAuzC,EAAAvnD,SAAE,gBAAgB6nD,MAAM;eCpE/CroD,OAAA,8BAAA,CAAA,UAAA,+CAAA,SAAAC,EAAAwnE,GAGAtnE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAknE,EAAAjnE;MCCwBK,MAAMyc,UAAU5c,OAAO,CAE3CwnB,QAAS,KACTw/C,WAAW,EACXC,WAAY9mE,MAAMqjB,GAAG,OAAQ,mBAAoB,WAAY,IACrDgE,EAAS0/C,EAASjnC,EADmCv6B,EAAA9E;AAIzD,OAFAq/B,EAASr/B,KAAKf,IAAI,UAClB2nB,EAAU5mB,KAAKf,IAAI,WACfogC,GACAinC,EAAU,EACHl9D,EAAAA,QAAEe,KAAKk1B,GAAQ,SAACx4B,EAAKoP,GACxB,IAAI1L;AAIJ,GAHAA,EAASqc,EAAQ/hB,MAAK,SAAUtD,GAC5B,OAAOA,EAAKoC,KAAOsS,KAMvB,OADA1L,EAAOpI,IAAI,UAAU,GACjB2C,EAAK7F,IAAI,aACFsL,EAAOpI,IAAI,QAASmkE,UAD/B,MAKG/mE,MAAMkD,IAAI8V,KAAKvY,MAAM,WACxB,OAAOA,KAAKmC,IAAI,SAAU2U,GAAG2V,EAAE,WAI3C85C,aAAc,WACV,IAAI3/C,EAASyY;AAQb,OAPAA,EAASvoB,GAAG2V,EAAE,IACd7F,EAAU5mB,KAAKf,IAAI,WACnBmK,EAAAA,QAAEe,KAAKyc,EAAQE,OAAO,UAAU,SAACjgB,EAAKoP,GAClC,GAAIA,EAAKhX,IAAI,UACT,OAAOogC,EAAO3Q,WAAWzY,EAAKhX,IAAI,UAGnCM,MAAMkD,IAAI8V,KAAKvY,MAAM,WACxB,OAAOA,KAAKmC,IAAI,SAAUk9B,OAGlCmnC,eAAgB,WACZ,IAAI5/C,EAAS0/C;AAGb,OAFA1/C,EAAU5mB,KAAKf,IAAI,WACnBqnE,EAAU,EACHl9D,EAAAA,QAAEe,KAAKyc,EAAQE,OAAO,UAAU,SAACjgB,EAAKoP,GACzC,GAAIA,EAAKhX,IAAI,UACT,OAAOgX,EAAK9T,IAAI,QAASmkE,SAIrC/rB,QAAS,CACLx6B,MAAO,SAAU0mD,GACb,IAAIpnC;AACJ,OAAIr/B,KAAKf,IAAI,qBACTe,KAAKf,IAAI,WAAW2H,SAAQ,SAAC8/D,GACzB,OAAOA,EAAIvkE,IAAI,UAAU,MAE7BskE,EAAOtkE,IAAI,UAAU,QACrBnC,KAAKumE,iBAGTlnC,EAASr/B,KAAKf,IAAI,UACdwnE,EAAOxnE,IAAI,WACXwnE,EAAOtkE,IAAI,QAAS,MACpBskE,EAAOtkE,IAAI,UAAU,GACjBnC,KAAKf,IAAI,cACTe,KAAKwmE,mBAGLxmE,KAAKf,IAAI,cACTwnE,EAAOtkE,IAAI,QAASk9B,EAAOnsB,OAAS,GAExCuzD,EAAOtkE,IAAI,UAAU,IAElBnC,KAAKumE;;MC9EAhnE,MAAMyc,UAAU5c,OAAO,CAC3CO,KAAMJ,MAAMC,OAAOC,UACnB02D,WAAY,CAAC,2BAEbl1D,KAAM1B,MAAMwB,SAAS,MAAO,WAAW,WACnC,IAAI6pC,EAAKjrC,EAAMgnE,EAASC;AAKxB,OAJAjnE,EAAOK,KAAKf,IAAI,QAChB2rC,EAAM5qC,KAAKf,IAAI,OACf0nE,EAAU3mE,KAAKf,IAAI,WACnB2nE,EAASh8B,EAAM5qC,KAAKf,IAAI,cACjB,CACH,CAAC,QAAS,SACV,CAACU,EAAK2C,EAAE,sCAAuCsoC,GAC/C,CAACjrC,EAAK2C,EAAE,uCAAwCskE,GAChD,CAACjnE,EAAK2C,EAAE,wCAAyCqkE,OAIzDra,OAAQ,0BAER3hD,QAAS,CACLk8D,QAAS,GACTnb,UAAW,CACPv3B,MAAO,MACPw3B,OAAQ,OAEZA,OAAQ,IACRx3B,MAAO,IACP2yC,kBAAmB,CACf3K,MAAO,QACPzP,SAAU,IAEdqa,aAAc;eCxCtBroE,OAAA,wCAAA,CAAA,UAAA,8DAAA,SAAAC,EAAAqoE,GAGAnoE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA+nE,EAAA9nE;ACLA,IAAM+nE,EAAU5lE,EAAAA,QAAO,4BAA8B,KAEtC6lE,EAAAA,QAAoB9nE,OAAO,CACxCW,KADwC,WAEtCC,KAAKC,OAALC,MAAAF,KAAeG,WACfH,KAAKmnE,MAAQF,EAAQE,OAAS,MAC9BnnE,KAAKonE,KAAO,CACRz9D,QAAW,UACXm+B,QAAW,UACXzgC,KAAQ,OACR1F,MAAS;;MCJMpC,MAAMyc,UAAU5c,OAAO,CAE1CiL,QAASyM,GAAG2V,EAAE,IACd7sB,QAASkX,GAAGtX,OAAOC,UACnBE,KAAMmX,GAAGtX,OAAOC,UAChB4nE,YAAavwD,GAAG/V,UAAS,WACrB,OAAOf,KAAKf,IAAI,kDAGpB4mD,mBAAoB/uC,GAAG/V,SAAS,cAAc,WAC1C,IAAI8R,EAAGE,EAAK+sB,EAAQv1B,EAAQF,EAASy7C;AAGrC,IAFAz7C,EAAUrK,KAAKf,IAAI,WACnB6mD,EAAMhvC,GAAG2V,EAAE,IACN5Z,EAAI,EAAGE,EAAM1I,EAAQ6I,OAAQL,EAAIE,EAAKF,IAGnCitB,EADiB,MADrBv1B,EAASF,EAAQwI,IACP,GAKVizC,EAAI56C,KAAK,CACL2B,KAAMtC,EAAM,KACZ5G,GAAI4G,EAAM,GACVu1B,OAAQA,EACR2yB,SAAUhhD,KAAK+a,SAAS3hB,SAAS,IAAIy8D,OAAO;AAGpD,OAAOxhB,KAGXE,SAAU,KAEVE,QAAS,KAETzkC,UAAU,EACV84B,QAAS,CAEL7rC,IAAK,WACD,OAAO1O,KAAKf,IAAI,sBAAsByvB,WAAW,CAC7C/qB,GAAI,GACJkJ,KAAM,MAId+B,OAAQ,SAAUU,GAEd,OADAtP,KAAKf,IAAI,sBAAsBovB,aAAa/e,GACrCtP,KAAK24B,KAAK,SAGrBmO,KAAM,WACF,IAAIv3B,EAAKsD,EAAG2qC,EAAGzqC,EAAKzD,EAAKrD;AAIzB,IAFAsD,EAAM,GAEDiuC,EAAI3qC,EAAI,EAAGE,GADhB9G,EAAMjM,KAAKf,IAAI,uBACWiU,OAAQL,EAAIE,EAAKyqC,IAAM3qC,EAC7CvD,EAAMrD,EAAIuxC,GACVjuC,EAAIrE,KAAK,CACLvH,GAAI2L,EAAG,GACPzC,KAAMyC,EAAG;AAIjB,GADAtP,KAAKmC,IAAI,UAAWoN,GAChBvP,KAAKf,IAAI,QACT,OAAOe,KAAK8mC,KAAK9mC,KAAKf,IAAI,aAIlCsoE,aAAc,SAAUj4D,GACpB,IAAIuD,EAAGE,EAAWxI,EAAiB0B,EAAKsiC;AACxC,GAAoB,KAAhBj/B,EAAG,KACH,OAAO/P,MAAM4C,IAAImN,EAAK,KAAM;AAE5B,IAAKA,EAAG,OAAY,CAgBhB,IATe,MALfi/B,EADOj/B,EAAG,KAELzE,WACA07B,aACAn3B,QAAQ,YAAa,IACrBk4D,OAAO,EAAG,OAEX/4B,EAAS98B,KAAK+a,SACT3hB,SAAS,IACTuE,QAAQ,WAAY,IACpBk4D,OAAO,EAAG,IAGTtnE,KAAKf,IAAI,WAEd4T,EAAI,EAAGE,GADZ9G,EAAMjM,KAAKf,IAAI,uBACOiU,OAAQL,EAAIE,EAAKF,IAEnC,IADAtI,EAAS0B,EAAI4G,IACH,WAAiBvD,EAAG,UACtB/E,EAAM,KAAWgkC,EAAQ,CACzBA,GACI,IACA98B,KAAK+a,SACA3hB,SAAS,IACTuE,QAAQ,WAAY,IACpBk4D,OAAO,EAAG;AACnB,MAIZ,OAAO/nE,MAAM4C,IAAImN,EAAK,KAAMi/B,MAK5CxuC,KAAM,WAGF,OAFAC,KAAKC,SACLD,KAAKmC,IAAI,WAAYnC,KAAKf,IAAI,QAAQqD,EAAE,iBACjCtC,KAAKmC,IAAI,UAAWnC,KAAKf,IAAI,QAAQqD,EAAE;;MChHlC/C,MAAMyc,UAAU5c,OAAO,CAKvC+jC,YAAa,KACbwhB,eAAgBplD,MAAMwB,SAAS87C,GAAG,YAAa,GAC/CK,MAAO39C,MAAMwB,SAAS,YAAa,eAAe,WAC9C,IAAIoiC,EACAxuB,EACAooC,EACAC,EACAC,EACAH,EACAI,EACAjxC,EAEAkxC,EAEA/oC;AA0CJ,OAzCA0oC,EAAY98C,KAAKf,IAAI,aACrBkkC,EAAcnjC,KAAKf,IAAI,eAIvBmV,EAAQ,CAAC,EAAG,EAAG,EAAG,GAAG+P,OAHrB44B,EAAU,SAAU9mC,GAChB,OAAOA,GAAQ,GAAKA,GAAQ6mC,IAGhCnoC,EAAM,WAEF,IADA,IAAIyoC,EAAU,GAENE,EAAKrxC,EAAM6wC,EAAY,EAAI5wC,EAAO4wC,EAAY,EAClD7wC,GAAOC,EAAOoxC,EAAIpxC,EAAOoxC,EAAIpxC,EAC7BD,GAAOC,EAAOoxC,IAAMA,IAEpBF,EAAQlyC,KAAKoyC;AAEjB,OAAOF,GAENl9C,MAAMF,MACNmkB,OAAO44B,GACZG,EAAQl9C,KAAKu9C,MAAMnpC,EAAOO,GAC1BsoC,EAAW9Z,EACPA,EAAc,IACd8Z,EAAW,GAEX9Z,EAAc,EAAI2Z,IAClBG,EAAWH,EAAY,GAE3BE,EAAS,WAEL,IADA,IAAII,EAAU,GAENE,EAAKH,EAAOF,EAAW,EAAIQ,EAAOR,EAAW,EACjDE,GAAQM,EAAOH,EAAIG,EAAOH,EAAIG,EAC9BN,GAAQM,EAAOH,IAAMA,IAErBF,EAAQlyC,KAAKoyC;AAEjB,OAAOF,GAENl9C,MAAMF,MACNmkB,OAAO44B,GACZG,EAAQl9C,KAAKu9C,MAAML,EAAOF,GACnBh9C,KAAK09C,SAASR,MAEzBsqB,yBAA0BjoE,MAAMwB,SAAS,eAAe,WACpD,OACIf,KAAKf,IAAI,mBACTe,KAAKf,IAAI,iBAAmBe,KAAKf,IAAI,eACpCe,KAAKf,IAAI,kBAIlBy+C,SAAU,SAAUG,GAChB,IAAIC,EAAejrC,EAAGyqC,EAAGS,EAAMhrC,EAAK9G;AAUpC,IATA8xC,EAAO,EACPD,EAAgB,GAChBD,EAAMj3C,SAAQ,SAAUuY,EAAKtY,GAIzB,OAHIk3C,EAAO,IAAM5+B,GACb2+B,EAAc5yC,KAAK,CAACrE,EAAKk3C,EAAO,IAAM5+B,EAAM4+B,EAAO,EAAI,QAEnDA,EAAO5+B,KAGdm+B,EAAI,EAAGvqC,GADZ9G,EAAM6xC,EAAcE,WACE9qC,OAAQoqC,EAAIvqC,EAAKuqC,IACnCzqC,EAAI5G,EAAIqxC,GACRO,EAAMvB,OAAOzpC,EAAE,GAAI,EAAGA,EAAE;AAE5B,OAAOgrC,GAGXN,MAAO,SAAUU,EAAMC,GACnB,IAAIC,EAAYC;AAOhB,OANAD,EAAa,SAAUp/C,EAAO2M,EAAOzC,GACjC,OAAOA,EAAKN,QAAQ5J,KAAW2M,GAEnC0yC,EAAa,SAAUtiB,EAAGC,GACtB,OAAOD,EAAIC,GAERkiB,EAAKr9C,OAAOs9C,GAAM/5B,OAAOg6B,GAAY3zB,KAAK4zB,IAErDwG,gBAAiBrlD,MAAMwB,SAAS87C,GAAG,cAAe,GAClDe,YAAar+C,MAAMwB,SAAS,cAAe,aAAa,WACpD,OAAOf,KAAKf,IAAI,eAAiBe,KAAKf,IAAI,gBAE9Cs7C,QAAS,CACLyK,SAAU,WAEN,GADAhlD,KAAKmC,IAAI,cAAemP,SAAStR,KAAKf,IAAI,eAAgB,IAAM,GAC5De,KAAKf,IAAI,cACT,OAAOe,KAAKf,IAAI,aAATe,CAAuBA,KAAKf,IAAI,iBAG/CgmD,aAAc,WAEV,GADAjlD,KAAKmC,IAAI,cAAemP,SAAStR,KAAKf,IAAI,eAAgB,IAAM,GAC5De,KAAKf,IAAI,cACT,OAAOe,KAAKf,IAAI,aAATe,CAAuBA,KAAKf,IAAI,iBAG/CimD,WAAY,SAAUld,GAClB,GAAa,QAATA,EAIJ,OADAhoC,KAAKmC,IAAI,cAAe6lC,GACpBhoC,KAAKf,IAAI,cACFe,KAAKf,IAAI,aAATe,CAAuBA,KAAKf,IAAI,qBAD3C;eCjIZP,OAAA,2BAAA,CAAA,UAAA,6CAAA,SAAAC,EAAA8oE,GAGA5oE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAwoE,EAAAvoE;ACRA,IAAMid,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,suBAAAzZ,KAAA,CAAA0Z,WAAA,oEAGbhd,MAAAid;;MCMKjd,MAAMyc,UAAU5c,OAAOsoE,EAAAA,QAAM,CAC7C/nE,KAAMJ,MAAMC,OAAOC,UACnBG,QAASL,MAAMC,OAAOC,UACtB2vD,IAAK7vD,MAAMC,OAAOC,UAClB+5B,UAAWj6B,MAAMC,OAAOC,UAExBM,KAN6C,WAOzCC,KAAKC,OAALC,MAAAF,KAAeG,WAEfH,KAAK2nE,kBAAoB3nE,KAAK2nE,kBAAkBv1C,KAAKpyB,OAGzDwmD,iBAAkB,WAAY,IAAA1hD,EAAA9E;AAE1B,OAAOoJ,EAAE,QAAQwZ,GAAG,kBAAkB,SAACuE,GAGnC,GAFA/d,EAAE,qBAAqB4C,KAAK,cAAe,wBAGtC5C,EAAE,qBAAqB2I,GAAGoV,EAAE3hB,SACmB,IAAhD4D,EAAE,qBAAqB+Y,IAAIgF,EAAE3hB,QAAQ0N,OACvC,CAGE,GAFA9J,EAAE,qBAAqBs9C,SAAS,aAE5B5hD,EAAK7F,IAAI,eACT;AAEJ6F,EAAK3C,IAAI,aAAa,QAIlCylE,WAAW,EACXC,UAAWtoE,MAAMwB,SAAS,OAAQ,uBAAuB,WACrD,IAAI8R,EAAGE,EAAK4uB,EAAM8iC,EAAOp/D;AACzB,GAAKrF,KAAKf,IAAI,yBAGdoG,EAAOrF,KAAKf,IAAI,SAChB,CAMA,GAHuB,WAAnBoG,EAAKE,OAAO,KACZF,EAAOA,EAAKE,MAAM,GAAI,IAEb,YAATF,GAA+B,UAATA,EACtB,OAAO;AAGX,IAAKwN,EAAI,EAAGE,GADZ0xD,EAAQzkE,KAAK8nE,eACW50D,OAAQL,EAAIE,EAAKF,IAAK,CAE1C,GADA8uB,EAAO8iC,EAAM5xD,IACkB,IAA3BxN,EAAKsD,QAAQ,SACb,OAAO;AAEX,GAAIpJ,MAAMuD,QAAQ6+B,EAAKA,QAAyC,IAAhCt8B,EAAKsD,QAAQg5B,EAAKA,KAAK,IACnD,OAAO,EAGf,OAAO,MAEXomC,SAAUxoE,MAAMwB,SACZ,sBACA,qBACA,gBACA,WACI,GAAKf,KAAKf,IAAI,uBAGd,OAAOe,KAAK8nE,iBAGpBE,UAAWzoE,MAAMwB,SACb,sBACA,qBACA,gBACA,WACI,IAAU0jE,EAAuBxxC;AACjC,GAAKjzB,KAAKf,IAAI,uBAId,SADAwlE,EAAQzkE,KAAK8nE,eACH50D,OAAS,KAsBH,CAnBL,WACH,IAAIL,EAAGE,EAAKqqC;AAEZ,IADAA,EAAU,GACLvqC,EAAI,EAAGE,EAAM0xD,EAAMvxD,OAAQL,EAAIE,EAAKF,GAAK,EAC1CogB,EAAIwxC,EAAM5xD,GACVuqC,EAAQlyC,KAAK+nB;AAEjB,OAAOmqB,EAPJ,GASC,WACJ,IAAIvqC,EAAGE,EAAK9G,EAAKmxC;AAGjB,IADAA,EAAU,GACLvqC,EAAI,EAAGE,GAFZ9G,EAAMw4D,EAAMl/D,MAAM,IAEI2N,OAAQL,EAAIE,EAAKF,GAAK,EACxCogB,EAAIhnB,EAAI4G,GACRuqC,EAAQlyC,KAAK+nB;AAEjB,OAAOmqB,EARH,OAepB6qB,iBAAkB1oE,MAAMwB,SACpB,sBACA,qBACA,gBACA,WACI,IAAI0jE;AACJ,GAAKzkE,KAAKf,IAAI,uBAKd,OAFAwlE,EAAQzkE,KAAK8nE,eACP9pB,UACCymB,KAIfkD,kBAAmB,WACf,OAAO3nE,KAAKmC,IAAI,uBAAwB,CAAEu3B,SAAU,eAExD6gB,QAAS,CACL2tB,eAAgB,WACZ,IAAIloE,KAAKf,IAAI,eAIb,OADAe,KAAK8zD,eAAe,cACb,GAEXqU,cAAe,WAEX,OADAnoE,KAAK8zD,eAAe,oBACb,GAEXsU,aAAc,WAaV,OAZA7oE,MAAMkD,IAAI8F,MACNvI,MACA,WACI,IAAIqoE;AAEJ,OADAA,EAAOj/D,EAAEpJ,KAAKf,IAAI,YAAY4F,KAAK,wBAAwB,IAInDwjE,EAAKxP,UAAYwP,EAAKrrD,aAFnBhd,KAAK24B,KAAK,kBAIzB,KAEG,GAEX2vC,YAAa,SAAU3mC,GACnB,OAAOr7B,OAAOmzC,KAAK9X,EAAM;;AClKrCjjC,OAAA,yCAAA,CAAA,UAAA,4DAAA,SAAAC,EAAA4pE,GAGA1pE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAspE,EAAArpE,cCTAR,OAAA,8CAAA,CAAA,UAAA,iEAAA,SAAAC,EAAA6pE,GAGA3pE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAupE,EAAAtpE,cCTAR,OAAA,sCAAA,CAAA,UAAA,yDAAA,SAAAC,EAAA8pE,GAGA5pE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAwpE,EAAAvpE,cCTAR,OAAA,2CAAA,CAAA,UAAA,8DAAA,SAAAC,EAAA6pE,GAGA3pE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAupE,EAAAtpE,cCTAR,OAAA,gCAAA,CAAA,UAAA,mDAAA,SAAAC,EAAA+pE,GAGA7pE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAypE,EAAAxpE,cCTAR,OAAA,qCAAA,CAAA,UAAA,wDAAA,SAAAC,EAAA6pE,GAGA3pE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAupE,EAAAtpE,cCTAR,OAAA,oCAAA,CAAA,UAAA,uDAAA,SAAAC,EAAAgqE,GAGA9pE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA0pE,EAAAzpE,cCTAR,OAAA,mDAAA,CAAA,UAAA,gFAAA,SAAAC,EAAAiqE,GAGA/pE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA2pE,EAAA1pE,cCTAR,OAAA,uCAAA,CAAA,UAAA,wDAAA,SAAAC,EAAAkqE,GAGAhqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA4pE,EAAA3pE,cCTAR,OAAA,+CAAA,CAAA,UAAA,gEAAA,SAAAC,EAAAmqE,GAGAjqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA6pE,EAAA5pE,cCTAR,OAAA,0CAAA,CAAA,UAAA,uEAAA,SAAAC,EAAAoqE,GAGAlqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA8pE,EAAA7pE,cCTAR,OAAA,2DAAA,CAAA,UAAA,wFAAA,SAAAC,EAAAqqE,GAGAnqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA+pE,EAAA9pE,cCTAR,OAAA,8BAAA,CAAA,UAAA,+CAAA,SAAAC,EAAAsqE,GAGApqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAgqE,EAAA/pE,cCTAR,OAAA,6CAAA,CAAA,UAAA,8DAAA,SAAAC,EAAAuqE,GAGArqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAiqE,EAAAhqE,cCTAR,OAAA,iDAAA,CAAA,UAAA,kEAAA,SAAAC,EAAAwqE,GAGAtqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAkqE,EAAAjqE,cCTAR,OAAA,sCAAA,CAAA,UAAA,uDAAA,SAAAC,EAAAw4D,GAGAt4D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAk4D,EAAAj4D,cCTAR,OAAA,0CAAA,CAAA,UAAA,2DAAA,SAAAC,EAAAyqE,GAGAvqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAmqE,EAAAlqE,cCTAR,OAAA,iDAAA,CAAA,UAAA,kEAAA,SAAAC,EAAA0qE,GAGAxqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAoqE,EAAAnqE,cCTAR,OAAA,6CAAA,CAAA,UAAA,8DAAA,SAAAC,EAAA2qE,GAGAzqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAqqE,EAAApqE,cCTAR,OAAA,sCAAA,CAAA,UAAA,uDAAA,SAAAC,EAAAmqE,GAGAjqE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA6pE,EAAA5pE;MCDuBK,MAAMyc,UAAU5c,OAAO,CAC1C8N,MAAO3N,MAAMC,OAAOC,UACpB8pE,SAAU,KACVC,aAAcjqE,MAAMukD,SAAS,aAAa,WACtC,OAAOvkD,MAAMkD,IAAIkjD,KAAK3lD,KAAMA,KAAKypE,yBAGrCvT,gBAP0C,WAQtCl2D,KAAKC,OAALC,MAAAF,KAAeG,WACXH,KAAKf,IAAI,cACTM,MAAMkD,IAAIkjD,KAAK3lD,KAAMA,KAAKypE,uBAGlCA,qBAAsB,WAClB,IAAIxgE,EAAMiE;AAKV,OAJAjE,EAAOjJ,KACPA,KAAKmC,IAAI,WAAY,MAErB+K,EAAQlN,KAAKf,IAAI,SACbe,KAAKf,IAAI,aACFiO,EACF+e,WAAW,UAAWjsB,KAAKf,IAAI,aAAc,CAC1C8K,QAAQ,IAEX9E,MAAK,SAAUhE,GACZ,OAAOgI,EAAK9G,IAAI,WAAYlB,EAAKhC,IAAI,YAGtCgK,EAAK9G,IAAI,WAAY;;MC1BjB5C,MAAMyc,UAAU5c,OAAO,CAC1C8N,MAAO3N,MAAMC,OAAOC,UACpBG,QAASL,MAAMC,OAAOC,UACtBgiC,UAAWliC,MAAMC,OAAOC,QAAQ,qBAChCukD,MAAOzkD,MAAMC,OAAOC,UACpBghB,OAAQlhB,MAAMwB,SAAS,WAAW,WAC9B,OAAOf,KAAKf,IAAI,SAASgtB,WAAW,UAAWjsB,KAAKf,IAAI,eAE5DyqE,GAAInqE,MAAMwB,SAAS,WAAW,WAC1B,IAAIgjD,EAAG3/B;AAGP,GAFA2/B,EAAI/jD,KAAKf,IAAI,aACbmlB,EAAUpkB,KAAKf,IAAI,WACf8kD,EAAE4lB,aAAa,MACf,OAAO3pE,KAAKf,IAAI,SAASoE,MAAM,KAAM,CACjC+gB,QAASA,EACThX,KACIyC,SAAS0F,SAAS,EAAG,UAAUpE,OAAO,cACtC,IACAtB,SAASsB,OAAO,mBAIhCy4D,QAASrqE,MAAMwB,SAAS,MAAM,WAC1B,IAAIo7D,EAAO0N,EAAMC;AAIjB,OAHAA,EAAM9pE,KAAKf,IAAI,MACf4qE,EAAO7pE,KAAK+pE,cAAcD,EAAK,aAC/B3N,EAAQn8D,KAAKgqE,eAAeH,GACrB,CACHA,KAAMA,EAAKI,QAAQ,GAAK,IACxB9N,MAAOA,MAGf+N,IAAK3qE,MAAMwB,SAAS,WAAW,WAC3B,IAAIgjD,EAAG3/B;AAGP,GAFA2/B,EAAI/jD,KAAKf,IAAI,aACbmlB,EAAUpkB,KAAKf,IAAI,WACf8kD,EAAE4lB,aAAa,OACf,OAAO3pE,KAAKf,IAAI,SAASoE,MAAM,MAAO,CAClC+gB,QAASA,EACThX,KACIyC,SAAS0F,SAAS,EAAG,UAAUpE,OAAO,cACtC,IACAtB,SAASsB,OAAO,mBAIhCg5D,SAAU5qE,MAAMwB,SAAS,OAAO,WAC5B,IAAIo7D,EAAO0N,EAAMO;AAIjB,OAHAA,EAAOpqE,KAAKf,IAAI,OAChB4qE,EAAO7pE,KAAK+pE,cAAcK,EAAM,cAChCjO,EAAQn8D,KAAKgqE,eAAeH,GACrB,CACHA,KAAMA,EAAKI,QAAQ,GAAK,IACxB9N,MAAOA,MAGf6N,eAAgB,SAAUjrE,GACtB,OAAIA,GAAS,GACF,cACAA,GAAS,GACT,gBACAA,EAAQ,GACR,aAEA,WAGfgrE,cAAe,SAAU9oE,EAAMuC,GAC3B,IAAI6mE;AACJ,OAAuC,IAAnCppE,EAAKhC,IAAI,sBACF,KAEXorE,EAAQ,EACRppE,EAAK2F,SAAQ,SAAUqP,GACnB,OAAQo0D,GAASp0D,EAAKhX,IAAIuE,MAEvB6mE,EAAQppE,EAAKhC,IAAI,wBAE5B4sD,OAAQ/0C,GAAG/V,SAAS,WAAW,WAC3B,IAAIgjD,EAAG3/B;AAGP,GAFA2/B,EAAI/jD,KAAKf,IAAI,aACbmlB,EAAUpkB,KAAKf,IAAI,WACf8kD,EAAE4lB,aAAa,iBACf,OAAO3pE,KAAKf,IAAI,SAASoE,MAAM,gBAAiB,CAC5C+gB,QAASA,EACThX,KACIyC,SAAS2/B,QAAQ,QAAQr+B,OAAO,cAChC,IACAtB,SAAS4/B,MAAM,QAAQt+B,OAAO,cAClCyM,SAAU,CAAC,iBAAkB,gBAAiB,mBAI1D0sD,aAAc/qE,MAAMwB,UAAS,WAUzB,MARM,CACFwpE,UAAWvqE,KAAKwqE,UAAU,CAAC,SAAU,iBACrCryD,KAAM,CACFnY,KAAKwqE,UAAU,CAAC,eAAgB,iBAChCxqE,KAAKwqE,UAAU,CAAC,WAAY,iBAC5BxqE,KAAKwqE,UAAU,CAAC,UAAW,sBAKvCA,UAAW,SAAUrwD,GAAqB,IAClC4pC,EAAGvgD,EAAOqP,EAAGE,EAAKkP,EADG1e,EAAapD,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAN;AAOhC,IALA4jD,EAAI/jD,KAAKf,IAAI,aACRsE,IACDA,EAAO,QAEX0e,EAAM,GACDpP,EAAI,EAAGE,EAAMoH,EAAOjH,OAAQL,EAAIE,EAAKF,IACtCrP,EAAQ2W,EAAOtH,GACXkxC,EAAE9nB,YAAY14B,EAAMC,IACpBye,EAAI/W,KAAK1H;AAGjB,OAAOye,GAEXs4B,QAAS,CACLkwB,YAAa,WACT,OAAOnkE,OAAOmzC,KACVz5C,KAAKf,IAAI,SAASmC,KACd,8BACApB,KAAKf,IAAI,iCACT,cACAe,KAAKf,IAAI,qBACb,WAGRyrE,UAAW,WACP,IAAIrC;AAGJ,OAFAA,EAAOj/D,EAAEpJ,KAAKf,IAAI,YAAY4F,KAAK,yBAAyB,GAC5D7E,KAAK8zD,eAAe,YACbv0D,MAAMkD,IAAI8F,MACbvI,MACA,WACI,OAAQqoE,EAAKxP,UAAYwP,EAAKrrD,eAElC,KAGR2tD,mBAAoB,WAChB,OAAO3qE,KAAKmC,IAAI,UAAW;;MClJb5C,MAAMyc,UAAU5c,OAAO,CAC7CwrE,YAAa9zD,GAAG/V,UAAS,WACrB,SACIf,KAAKf,IAAI,UACTe,KAAKf,IAAI,QACT4Q,SAASsB,OAAO,eAAiBnR,KAAKf,IAAI,UAC1C4Q,SAASsB,OAAO,eAAiBnR,KAAKf,IAAI;;ACHtD,MAA+BM,MAAAyc,UAAU5c,OAAO,CAC5CQ,QAASL,MAAAC,OAAAC,UACTgiC,UAAWliC,MAAAC,OAAAC,QAAQ,qBACnBwtC,oBAAqB1tC,MAAAC,OAAAC,UACrBC,QAASH,MAAAC,OAAAC,UACTorE,OAAQtrE,MAAAC,OAAAC,UACRqrE,cAAevrE,MAAAC,OAAAC,UAEf4lE,UAAW9lE,MAAAktB,EAAE,IAEb+5B,iBAV4C,WAUzB,IAAA1hD,EAAA9E;AACf,IAAKT,MAAM2J,QACP,OAAO3J,MAAAkD,IAAA8F,MACHvI,MACA,WACI,OAAO8E,EAAKimE,kBAEhB,MAKZxwB,QAAS,CACLywB,WADK,WAED,OAAOzrE,MAAA4C,IAAInC,KAAM,QAAQ,KAIjC+qE,cA5B4C,WA4B5B,IAAAl0D,EAAA7W;AAEZ,GACI6P,OAAOtQ,MAAAN,IAAIe,KAAM,sDAAsDmR,OACnE,gBACEtB,SAASsB,OAAO,eAKyC,UAA/D5R,MAAAN,IAAIe,KAAM,kDAI+B,mBAAzCT,MAAAN,IAAIe,KAAM,6BAKVT,MAAAN,IAAIe,KAAM,+CAAd,CAKA,IAAMuL,EAAWhM,MAAAN,IAAIe,KAAM,sBACrBwN,EAAUjO,MAAAN,IAAIe,KAAM,4CACpBirE,EAAY1rE,MAAAN,IAAIe,KAAM;AAG5B,GAAKuL,GAAaiC,GAAYy9D,EAA9B,CAIA,IAAMjhE,EAAUhK,KAAK8qE,cAAcI,YAAY,CAC3C19D,QAAAA,EACAy9D,UAAAA,EACAE,MAAO5/D,EACP6/D,KAAK,IAEHC,EAAY9rE,MAAAktB,EAAE,IACd6+C,EAAc/rE,MAAAktB,EAAE,IAChB8+C,EAAShsE,MAAAN,IAAIe,KAAM,0BAA4B,iBAC/CwrE,EAAajsE,MAAAN,IAAIe,KAAM,0BAA4B,wBACnDyrE,EAAelsE,MAAAktB,EAAEltB,MAAAN,IAAIe,KAAM,uBAAuBwG,QAAQ+kE;AAEhE,OAAOvhE,EAAQ/E,MACX,SAAChE,GAEG,GAAY,MAARA,EAAc,CACd,IAAM03D,EAAM13D,EAAKA;AACjB,GAAW,MAAP03D,EAAa,CACbA,EAAI/xD,SAAQ,SAAC6+D,GACT,IAAsC,IAAlCgG,EAAa9iE,QAAQ88D,EAAI9hE,IAGzB,OAFA8hE,EAAIrgE,QAAU7F,MAAAua,OAAAiH,SAAS0kD,EAAIrgE,SAC3BqgE,EAAIiG,kBAAoBnsE,MAAAua,OAAAiH,SAAS0kD,EAAIiG,oBAClB,IAAfjG,EAAIC,QACJnmE,MAAAN,IAAI4X,EAAM,aAAa6X,WAAW+2C,GAC3B4F,EAAUngE,KAAKu6D,EAAI9hE,KAEnB2nE,EAAYpgE,KAAKu6D;AAKpC,IAAMkG,EAAWF,EAAa7qE,OAAOyqE;AAGrC,OADA9rE,MAAAN,IAAI4X,EAAM,uBAAuB+0D,SAASL,EAAQI,GAC3CpsE,MAAAN,IAAI4X,EAAM,uBAAuB+0D,SAASJ,EAAYF,QAKzE,SAAUxhE,GACN,MAAM,IAAAvK,MAAAgI,MACF,6BACK,WACG,IACI,OAAOrE,KAAKC,UAAU2G,GACxB,MAAOnI,GACL,OAAQmI,EAASnI,GAJxB;eClHzBjD,OAAA,oCAAA,CAAA,UAAA,qDAAA,SAAAC,EAAAktE,GAGAhtE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA4sE,EAAA3sE,cCTAR,OAAA,8BAAA,CAAA,UAAA,+CAAA,SAAAC,EAAAmtE,GAGAjtE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA6sE,EAAA5sE;MCGuBK,MAAMyc,UAAU5c,OAAO,CAC1C8N,MAAO4J,GAAGtX,OAAOC,UACjB02D,WAAY,GACZhwD,kBAAmB,CAAC,QAAS,MAAO,gBACpCiO,WAAO,EACPO,SAAK,EACLo3D,YAAY,EACZ56D,OAAQtB,OAAOm8D,aAAa77D,eAAe,KAC3C87D,aAAc,aACdC,UAAW3sE,MAAMwB,SAAS,QAAS,MAAO,SAAS,WAC/C,IAAI4T,EAAKxD,EAAQ86D,EAAcx8D,EAAO2E,EAAOrV;AAK7C,OAJAoS,EAASnR,KAAKf,IAAI,UAClBgtE,EAAejsE,KAAKf,IAAI,gBACxBmV,EAAQpU,KAAKf,IAAI,SACjB0V,EAAM3U,KAAKf,IAAI,QACVF,EAAQiB,KAAKf,IAAI,WAClBwQ,EAAQ1Q,EAAM0Q,MAAM,KAEhBI,OAAOJ,EAAM,GAAIw8D,GAAc96D,OAAOA,GACtCnR,KAAKf,IAAI,aACT4Q,OAAOJ,EAAM,GAAIw8D,GAAc96D,OAAOA,IAElC5R,MAAMqT,QAAQwB,IAAW7U,MAAMqT,QAAQ+B,GAO5C,GALC9E,OAAOuE,EAAO63D,GAAc96D,OAAOA,GACnCnR,KAAKf,IAAI,aACT4Q,OAAO8E,EAAKs3D,GAAc96D,OAAOA,MAK7Cg7D,MAAO,KACPC,MAAO,KACPC,UAAW,MACXC,kBAAkB,EAClBtV,YAAa,KACbuV,cAAe,CAAC,OAChBC,WAAY,KACZC,YAAa,KACb5nD,MAAO,CACH5S,KAAM,KAEVy6D,OAAQ,CACJC,MAAO,CAAC98D,SAAUA,UAClB+8D,UAAW,CAAC/8D,SAAS0F,SAAS,EAAG,QAAS1F,SAAS0F,SAAS,EAAG,SAC/Ds3D,cAAe,CAACh9D,SAAS0F,SAAS,EAAG,QAAS1F,UAC9Ci9D,eAAgB,CAACj9D,SAAS0F,SAAS,GAAI,QAAS1F,UAChDk9D,aAAc,CAACl9D,SAAS2/B,QAAQ,SAAU3/B,SAAS4/B,MAAM,UACzDu9B,aAAc,CACVn9D,SAAS0F,SAAS,EAAG,SAASi6B,QAAQ,SACtC3/B,SAAS0F,SAAS,EAAG,SAASk6B,MAAM,WAG5Cw9B,yBAAyB,EACzBC,aAAa,EAAAjnB,EAAA3jD,GAAE,kBACf6qE,YAAa,KACbC,aAAc,KACdC,kBAAkB,EAAApnB,EAAA3jD,GAAE,4BAEpBkkD,iBAAkB,WAAY,IACtBx9C,EAAG8V,EAASwuD,EAAeC,EAAiBtkE,EAAMqhB,EAAUzL,EAAW9f,EADjD+F,EAAA9E;AAsB1B,OApBAiJ,EAAOjJ,MACPjB,EAAQiB,KAAKf,IAAI,WAEbqrB,EAAWvrB,EAAM0Q,MAAM,KACvB89D,EAAkB19D,OAAOya,EAAS,GAAItqB,KAAKf,IAAI,iBAC/CquE,EAAgBz9D,OAAOya,EAAS,GAAItqB,KAAKf,IAAI,mBAE7CsuE,EAAkB19D,OAAO7P,KAAKf,IAAI,SAAUe,KAAKf,IAAI,iBACrDquE,EAAgBz9D,OAAO7P,KAAKf,IAAI,OAAQe,KAAKf,IAAI,kBAErD4f,EAAY0uD,EAAgB91D,UAAY81D,OAAkB,EAC1DzuD,EAAUwuD,EAAc71D,UAAY61D,OAAgB,EACpDtkE,EAAI,IAAII,EAAAA,QAAEC,SACNrJ,KAAKf,IAAI,UACTe,KAAKf,IAAI,UAAUgG,MAAK,SAAUynE,GAC9B,OAAO1jE,EAAEtD,QAAQgnE,MAGrB1jE,EAAEtD,UAECsD,EAAE/D,MAAK,SAACynE,GACX,IAAI/hE;AAgEJ,OA/DAA,EAAU,CACN6G,OAAQ,CACJ07D,YAAapoE,EAAK7F,IAAI,eACtBkS,OAAQrM,EAAK7F,IAAI,UACjBouE,iBAAkBvoE,EAAK7F,IAAI,qBAE/BuuE,iBAAiB,EACjB3uD,UAAWA,EACXC,QAASA,EACTqtD,MAAOrnE,EAAK7F,IAAI,SAChBwuE,UAAW3oE,EAAK7F,IAAI,aACpB8sE,WAAYjnE,EAAK7F,IAAI,cACrBstE,cAAeznE,EAAK7F,IAAI,iBACxButE,WAAY1nE,EAAK7F,IAAI,cACrBwtE,YAAa3nE,EAAK7F,IAAI,eACtBotE,UAAWvnE,EAAK7F,IAAI,aACpBqtE,iBAAkBxnE,EAAK7F,IAAI,oBAC3BmtE,MAAOtnE,EAAK7F,IAAI,SAChByuE,iBAAiB,EACjBC,UAAW7oE,EAAK7F,IAAI,SACpB2uE,qBAAqB,GAErBlB,IAAWtjE,EAAAA,QAAEykE,cAAcnB,KAC3B/hE,EAAQ+hE,OAASA,IAErB,EAAAjmB,EAAAvnD,SAAE,yBAA0B4F,EAAKosC,SAAS48B,gBAAgBnjE,IAC1D,EAAA87C,EAAAvnD,SAAE,yBAA0B4F,EAAKosC,SAAStuB,GACtC,wBACA,SAAUmrD,EAAIvuD,GACV,IAAIysD;AAKJ,OAJAA,EAAehjE,EAAKhK,IAAI,gBACxB4f,EAAYhP,OAAO5G,EAAKhK,IAAI,SAAUgtE,GACtCntD,EAAUjP,OAAO5G,EAAKhK,IAAI,OAAQgtE,IAClCltE,EAAQkK,EAAKhK,IAAI,WAEbqrB,EAAWvrB,EAAM0Q,MAAM,KACvB+P,EAAOwuD,aAAan+D,OAAOya,EAAS,GAAI2hD,IACjCzsD,EAAOyuD,WAAWp+D,OAAOya,EAAS,GAAI2hD,KACtCptD,EAAUpH,WAAaqH,EAAQrH,WACtC+H,EAAOwuD,aAAanvD,GACbW,EAAOyuD,WAAWnvD,SAFtB,MAMf,EAAA2nC,EAAAvnD,SAAE,yBAA0B4F,EAAKosC,SAAStuB,GACtC,yBACA,SAAUmrD,EAAIvuD,GACV,IAAI2tD,EAAax4D,EAAKP;AAItB,OAHAA,EAAQoL,EAAOX,UAAU1N,OAAOlI,EAAKhK,IAAI,iBACzC0V,EAAM6K,EAAOV,QAAQ3N,OAAOlI,EAAKhK,IAAI,kBACrCkuE,EAAclkE,EAAKhK,IAAI,iBAEnBM,MAAM4uD,OACF,uDACuB,mBAAhBgf,GAEJA,EAAY/4D,EAAOO,KAE1B1L,EAAK49B,cAAc,CAAEzyB,MAAAA,EAAOO,IAAAA,IACrB1L,EAAK9G,IAAI,QAASiS,EAAQ,IAAMO,QAI5C,EAAA8xC,EAAAvnD,SAAE,yBAA0B4F,EAAKosC,SAAStuB,GAC7C,0BACA,WACI,IAAIwqD;AAEJ,OADAA,EAAenkE,EAAKhK,IAAI,kBAEpBM,MAAM4uD,OACF,wDACwB,mBAAjBif,GAEJA,MAEPnkE,EAAK9G,IAAI,QAAS8G,EAAKhK,IAAI,UACpBgK,EAAK9G,IAAI,MAAO8G,EAAKhK,IAAI,gBAOpDivE,YAAa,WACT,GAAIluE,KAAKf,IAAI,2BACT,OAAO,EAAAwnD,EAAAvnD,SAAE,oBAAoB0P;;MCtKbu/D,EAAAA,QAAW/uE,OAAO,CAC1C2qD,WAAY,wBACZtoB,UAAW3qB,GAAGtX,OAAOC,QAAQ,qBAC7BE,KAAMmX,GAAGtX,OAAOC,UAChByN,MAAO4J,GAAGtX,OAAOC,UACjBC,QAASoX,GAAGtX,OAAOC,UACnBukD,MAAOltC,GAAGtX,OAAOC,UACjBG,QAASkX,GAAGtX,OAAOC,UACnBkC,MAAOmV,GAAGtX,OAAOC,UACjB8J,KAAMuN,GAAGtX,OAAOC,UAChB2uE,GAAIt3D,GAAGtX,OAAOC,UACdI,MAAOiX,GAAGtX,OAAOC,UACjB85B,YAAa,WAAY,IAAAz0B,EAAA9E;AACrB,OAAO,IAAIT,MAAMkG,KAAKwC,SAAQ,SAACvC,EAASwC,GACpC,IAAIuY,EAAQi2B;AAKZ,OAJAj2B,EAAS3b,EAAK7F,IAAI,UAElBy3C,EAAOj2B,EAAOxhB,IAAI,QAEXwhB,EAAOqmB,OAAO7hC,MAAK,SAAC0R,GACvB,OAAO7R,EAAK7F,IAAI,SACXgtB,WAAW,cAAexL,EAAOxhB,IAAI,yBAA0B,CAC5D8K,QAAQ,IAEX9E,MAAK,WACF,IAAIzB,EAAO2W,EAAQk0D,EAAkB1jE,EAASga;AA8B9C,IAAKnhB,KA5BDmhB,EADAlE,EAAOxhB,IAAI,oBACF,CACL,QACI4Q,OAAO4Q,EAAOxhB,IAAI,yCACbsW,SAAS,EAAG,UACZpE,OAAO,cACZ,IACAsP,EAAOxhB,IAAI,uCAGV,CACL,QACIwhB,EAAOxhB,IAAI,wCACX,IACAwhB,EAAOxhB,IAAI,wCAGhBiM,KAAK,YAAcyL,EAAKhT,IAC3B+yC,GACA/xB,EAAOzZ,KAAK,QAAUwrC,EAAKz3C,IAAI,QAE9BovE,EAAmB5tD,EAAOxhB,IAAI,sBAC/B0lB,EAAOzZ,KAAK,oBAAsBmjE,GAElC5tD,EAAOxhB,IAAI,kBACX0lB,EAAOzZ,KAAK,iBAAmBuV,EAAOxhB,IAAI,qBAE9C0lB,EAAOzZ,KAAK,yBAA2BuV,EAAOxhB,IAAI,0BAClDkb,EAASrV,EAAK7F,IAAI,aAAakb,OAAOrV,EAAK7F,IAAI,SAE3C0L,EAAUwP,EAAO3W,GAGC,kBAAVA,GACU,SAAVA,GACU,uBAAVA,GACU,gBAAVA,GACU,uBAAVA,GACU,uBAAVA,GACU,qBAAVA,GACU,SAAVA,GAGJmhB,EAAOzZ,KACH1H,EACI,KACkB,aAAjBmH,EAAQD,KACH+V,EAAOxhB,IAAIuE,EAAQ,OACnBid,EAAOxhB,IAAIuE;AAQjC,OAJAjE,MAAM4uD,QACDrpD,EAAK7F,IAAI,uBACV,0DAEG6F,EAAKwpE,OACRxpE,EAAK7F,IAAI,uBACT0lB,EACAlE,EACA/a,EACAwC,aAMxBomE,OAAQ,SAAUznE,EAAK8d,EAAQlE,EAAQ/a,EAASwC,GAAQ,IAChD/G,EAAcF,EAAe4nC,EAAa0lC,EAAmBC,EADb33D,EAAA7W;AAmDpD,OAjDAiB,EAAO,GACP0jB,EAAO/d,SAAQ,SAACqP,GACZ,OAAQhV,EAAKgV,EAAKxG,MAAM,KAAK,IAAMwG,EAAKxG,MAAM,KAAK,MAE5B,gBAAvBpO,EAAAA,QAAOC,aACPL,EAAKwtE,SAAW,eAChBxtE,EAAKytE,UAAY,gBACjBztE,EAAK0tE,OAAS,8BAEd1tE,EAAKwtE,SAAWptE,EAAAA,QAAO6C,IAAI0D,kBAAoB,IAC/C3G,EAAKytE,UAAY1uE,KAAKf,IAAI,SAASmC,KAAO,IAC1CH,EAAK0tE,OAAS3uE,KAAKf,IAAI,MAAMmC,KAAO,KAExCD,EAAenB,KAAKf,IAAI,8CACxBgC,EAAK2tE,MAAQztE,EACbF,EAAK4tE,WAAapuD,EAAOxhB,IAAI,yBAC7BuvE,EAAU,IAEV3lC,EAAc,GACkB,IAA5B7oC,KAAK8uE,oBACLjmC,EAAY39B,KAAK,iBAAmBlL,KAAK8uE,oBAIzC9uE,KAAKf,IAAI,SAASsC,KAAK,yBACvBsnC,EAAY39B,KAAK,gBAEjBlL,KAAKf,IAAI,SAASsC,KAAK,2BACvBsnC,EAAY39B,KAAK,oBACjBsjE,EAAU,KAKVD,GADsB,IAAtB1nE,EAAI8B,QAAQ,KACQkgC,EAAY31B,OAAS,EAAI,IAAM21B,EAAYlrB,KAAK,KAAO,GAEvDkrB,EAAY31B,OAAS,EAAI,IAAM21B,EAAYlrB,KAAK,KAAO,GAErE3d,KAAKf,IAAI,QAAQ8F,QACvB/E,KAAKf,IAAI,SAASmC,KAAO,cAAgByF,EAAM0nE,EAC/C,CACI1tE,OAAQ,OACR2tE,QAASA,EACTjuE,QAAS,CACL+I,cAAe,UAAYnI,GAE/BF,KAAMiC,KAAKC,UAAUlC,KAIxBgE,MAAK,SAAC0R,EAAMo4D,EAAYC,GACrB,IAAIC,EAAc7pE;AAGlB,OAFAuR,EAAOA,EAAKsL,IACZgtD,GAAe,EACF,KAATt4D,GACAE,EAAK5X,IAAI,WAAWoD,MAAMwU,EAAK5X,IAAI,QAAQqD,EAAE,wBAC7C4F,KAGc,MAAdyO,EAAKhV,OACLyD,EAAUyR,EAAK5X,IAAI,QAAQqD,EAAE,kBAAmB,CAC5CX,MAAOgV,EAAKhV,QAEhBkV,EAAK5X,IAAI,WAAWoD,MAChB,IAAI9C,MAAMua,OAAOiH,SAAS3b,EAAQgK,QAAQ,KAAM,eAEpDlH,MAGuB,UAAvB3I,MAAM6I,OAAOuO,KACbvR,EAAUyR,EAAK5X,IAAI,QAAQqD,EAAE,4BAA6B,CACtD6F,SAAUwO,EAAK4b,MAAM,YAAY5U,KAAK,QAE1C9G,EAAK5X,IAAI,WAAWoD,MAChB,IAAI9C,MAAMua,OAAOiH,SAAS3b,EAAQgK,QAAQ,MAAO,UAErDuH,EAAOA,EAAK4b,MAAM,YAAY5U,KAAK,MACnCsxD,GAAe,GAEZp4D,EAAK5X,IAAI,SACXgtB,WAAWxL,EAAOxhB,IAAI,yBAA0BwhB,EAAOxhB,IAAI,MAAO,CAC/D8K,QAAQ,IAEX9E,MAAK,SAAC0R,GACH,IAAImlB,EAAGozC,EAAU9gD;AAWjB,OAVAA,EAAQzX,EAAK1X,IAAI,sBACjBiwE,EAAW7tE,EAAAA,QAAO6C,IAAI0D,kBAAoB,IAAMwmB,EAAM,GAAGttB,IACrDmuE,KACAnzC,EAAIjc,SAASqU,cAAc,MACzBzrB,KAAOymE,EACTpzC,EAAEt2B,OAAS,SACXs2B,EAAEqzB,SAAW/gC,EAAM,GAAGvhB,KACtBgT,SAAS0rB,KAAK4jC,YAAYrzC,GAC1BA,EAAE/b,SAECra,WAGlBssD,OAAM,SAACloD,GACJ,OAAI,EAAAslE,EAAAC,gBAAevlE,IACf+M,EAAK5X,IAAI,WAAWoD,MAAMwU,EAAK5X,IAAI,QAAQqD,EAAE,yBACtCoD,MAEPmR,EAAK5X,IAAI,SAASwpC,OAAO3+B,GAClBpE,SAIvB4pE,YAAa,SAAU7uD,EAAQuuD,GAC3B,IAAIO,EAAcC,EAAOC;AAIzB,OAHAF,EAAe9uD,EAAOxhB,IAAI,eAAemQ,QAAQ,gBAAiB,KAAO,SACzEmgE,GAAgB,QAChBC,EAAQR,EAAMU,kBAAkB,yBAGP,cADrBD,EAAYD,EAAM//D,MAAM,MACV,IAA0C,IAArBggE,EAAUv8D,OAClCu8D,EAAU,GAGlBF,GAEXT,iBAAkB,WACd,OAAI9uE,KAAKf,IAAI,aAAa2mC,UAAU,CAAC,2BAC1B,EAEA;;AClOnB,MAA4BrmC,MAAAyc,UAAU5c,OAClCuwE,EAAAA,QACAC,EAAAA,QACA,CACI1iE,MAAO3N,MAAAC,OAAAC,UACP+5B,UAAWj6B,MAAAC,OAAAC,UACXgiC,UAAWliC,MAAAC,OAAAC,QAAQ,qBACnBkC,MAAOpC,MAAAC,OAAAC,UACP4oC,YAAa9oC,MAAAC,OAAAC,UACbE,KAAMJ,MAAAC,OAAAC,UACN21B,QAAS,KACToB,MAAO,aACPujC,cAAex6D,MAAAktB,EAAE,CACbutC,QAAQ,EACRiH,SAAS,EACTl+D,OAAO,EACP4uD,MAAM,IAGVke,YAAatwE,MAAAwB,SAAS,SAAS,WAC3B,OAAOxB,MAAAN,IAAIe,KAAM,kCAGrBmqD,QAAS5qD,MAAAwB,SAAS,SAAS,WACvB,MACiD,OAA7CxB,MAAAN,IAAIe,KAAM,gCACmC,QAA7CT,MAAAN,IAAIe,KAAM,+BAEH,CACH,CACI8vE,OAAQ,kBACRruB,YAAaliD,MAAAN,IAAIe,KAAM,QAAQsC,EAAE,mBAErC,CACIwtE,OAAQ,4BACRruB,YAAaliD,MAAAN,IAAIe,KAAM,QAAQsC,EAAE,kCAIlC,CAAC,CAAEwtE,OAAQ,MAAOruB,YAAaliD,MAAAN,IAAIe,KAAM,QAAQsC,EAAE,uBAGlEi4C,QAAS,CACCu1B,OADD,SACQplE,GAAM,MAAA5F,EAAA9E;AAAA,SAAA6X,mBAAAC,MAAA,SAAAC,IAAA,IAAAxU,EAAAwsE,EAAAC;AAAA,OAAAn4D,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,GACfhZ,MAAAN,IAAI6F,EAAM,aAAa60B,WAAW,CAAED,SAAU,mBAAoBE,OAAQlvB,IAC1EnL,MAAA4C,IAAI2C,EAAM,cAAc,GACX,QAAT4F,EAHW,CAAA2N,EAAAE,KAAA;AAAA,MAAA,OAAAF,EAAAC,KAAA,EAKD/U,EAAOhE,MAAAN,IAAI6F,EAAM,+BAA+BsK,QAAQ,KAAM,KAL7DiJ,EAAAE,KAAA,EAMDzT,EAAKujC,YAAYC,cACnB/kC,EACA,CAAC,CAAEI,GAAIpE,MAAAN,IAAI6F,EAAM,cACjB;AATG,KAAA,EAAAuT,EAAAE,KAAA;AAAA;AAAA,KAAA,EAAAF,EAAAC,KAAA,EAAAD,EAAA2B,GAAA3B,EAAA,MAAA,GAYPvT,EAAKnD,MAAM8mC,OAAXpwB,EAAA2B;AAZO,KAAA,GAAA,OAAA3B,EAAAC,KAAA,GAcP/Y,MAAA4C,IAAI2C,EAAM,cAAc,GAdjBuT,EAAAqwB,OAAA;AAAA,KAAA,GAAArwB,EAAAE,KAAA;AAAA;AAAA,KAAA,GAAA,GAgBK,oBAAT7N,EAhBI,CAAA2N,EAAAE,KAAA;AAAA,MAAA,OAiBXzT,EAAKmrE,qBAAqB1wE,MAAAN,IAAI6F,EAAM,UAAWvF,MAAAN,IAAI6F,EAAM,UAjB9CuT,EAAAG,OAAA,SAkBJjZ,MAAA4C,IAAI2C,EAAM,cAAc;AAlBpB,KAAA,GAAA,GAmBK,8BAAT4F,EAnBI,CAAA2N,EAAAE,KAAA;AAAA,MAAA,OAqBLy3D,EAAY,CAACzwE,MAAAN,IAAI6F,EAAM,UAEzBirE,EAD6C,OAA7CxwE,MAAAN,IAAI6F,EAAM,+BACIA,EAAK28B,UAAUtnB,OAAO,MAEtBrV,EAAK28B,UAAUtnB,OAAO,OAzB7B9B,EAAAG,OAAA,SA2BJ1T,EAAKorE,qBAAqBH,EAAaC,GAAW/qE,MAAK,WAAA,OAC1DH,EAAKqrE;AA5BE,KAAA,GAAA,IAAA,MAAA,OAAA93D,EAAAe,UAAArB,EAAA,KAAA,CAAA,CAAA,EAAA,EAAA,GAAA;;2FAiCnBq4D,aAlCK,SAkCQ5sE,GAAO,IAAA40B;AAChB,QAAO,QAAAA,EAAC50B,EAAM6K,gBAAP,IAAA+pB,GAACA,EAAgB2N,eAGhCoqC,gBA7EJ,WA8EQ,OAAO5wE,MAAA4C,IAAInC,KAAM,cAAc;;MCjFdT,MAAMyc,UAAU5c,OAAO,CAChD8N,MAAO3N,MAAMC,OAAOC,UACpBE,KAAMJ,MAAMC,OAAOC,UACnB4wE,OAAO,EACPC,OAAQ,EACRrgC,OAAQ,QACRpuC,KAAMgO,SAAS2/B,QAAQ,SAASr+B,OAAO,cACvCo/D,eAAgBhxE,MAAMwB,UAAS,WAC3B,MAAO,CACH,CACI4C,GAAI,EACJkJ,KAAM7M,KAAKf,IAAI,QAAQqD,EAAE,iCAE7B,CACIqB,GAAI,EACJkJ,KAAM7M,KAAKf,IAAI,QAAQqD,EAAE,iCAE7B,CACIqB,GAAI,EACJkJ,KAAM7M,KAAKf,IAAI,QAAQqD,EAAE,iCAE7B,CACIqB,GAAI,EACJkJ,KAAM7M,KAAKf,IAAI,QAAQqD,EAAE,iCAE7B,CACIqB,GAAI,GACJkJ,KAAM7M,KAAKf,IAAI,QAAQqD,EAAE,sCAIrCkuE,eAAgBjxE,MAAMwB,UAAS,WAC3B,MAAO,CACH,CACI4C,GAAI,QACJkJ,KAAM7M,KAAKf,IAAI,QAAQqD,EAAE,qCAE7B,CACIqB,GAAI,QACJkJ,KAAM7M,KAAKf,IAAI,QAAQqD,EAAE,qCAE7B,CACIqB,GAAI,QACJkJ,KAAM7M,KAAKf,IAAI,QAAQqD,EAAE,yCAIrCi4C,QAAS,CACL3xC,OAAQ,WAAY,IACZ0nE,EAAQ37D,EAAK9S,EAAMgR,EAAGo9B,EAAQwgC,EAAUppD,EAASpb,EAAKiB,EAD1CpI,EAAA9E;AAShB,IAPAA,KAAKmC,IAAI,UAAU,GACnBnC,KAAKmC,IAAI,YAAY,GACrB+K,EAAQlN,KAAKf,IAAI,SACjBqxE,EAAStwE,KAAKf,IAAI,UAClBgxC,EAASjwC,KAAKf,IAAI,UAClB4C,EAAO7B,KAAKf,IAAI,QAChBooB,EAAU,GACLxU,EAAI,EAAG5G,EAAMqkE,EAAQ,GAAKrkE,EAAM4G,GAAK5G,EAAM4G,GAAK5G,EAAK,GAAKA,EAAM4G,IAAMA,IACvE8B,EAAO,WACH,OAAQs7B,GACJ,IAAK,QACD,OAAOpgC,OAAOhO,GACT6M,IAAI,EAAG,SACP6G,SAAS,EAAG,OACZpE,OAAO;AAChB,IAAK,QACD,OAAOtB,OAAOhO,GACT6M,IAAI,EAAG,QACP6G,SAAS,EAAG,OACZpE,OAAO;AAChB,IAAK,QACD,OAAOtB,OAAOhO,GACT6M,IAAI,EAAG,QACP6G,SAAS,EAAG,OACZpE,OAAO,eAhBjB,GAmBPkW,EAAQnc,KACJgC,EAAM4b,aAAa,cAAe,CAC9B4nD,YAAa7gE,OAAOhO,GAAMsP,OAAO,KAAO,MAAQtB,OAAO8E,GAAKxD,OAAO,KACnE++B,kBAAmBruC,EACnBsuC,gBAAiBx7B,KAGzB9S,EAAQ,WACJ,OAAQouC,GACJ,IAAK,QACD,OAAOpgC,OAAOhO,GAAM6M,IAAI,EAAG,SAASyC,OAAO;AAC/C,IAAK,QACD,OAAOtB,OAAOhO,GAAM6M,IAAI,EAAG,QAAQyC,OAAO;AAC9C,IAAK,QACD,OAAOtB,OAAOhO,GAAM6M,IAAI,EAAG,QAAQyC,OAAO,eAP9C;AAYZ,OADAs/D,EAAWppD,EAAQspD,OAAO,QACnBpxE,MAAMkG,KAAKwC,QAAQ2iC,IAAI6lC,GAAUxrE,MAAK,WAKzC,OAJIH,EAAK7F,IAAI,gBACT6F,EAAK8rE,YAAY9rE,EAAK7F,IAAI,aAE9B6F,EAAK3C,IAAI,UAAU,GACZ2C,EAAK3C,IAAI,YAAY,OAGpC0uE,SAAU,SAAUR,GAChB,OAAOrwE,KAAKmC,IAAI,QAASkuE,IAE7BO,YAAa,WACT,GAAI5wE,KAAKf,IAAI,eACT,OAAOe,KAAK4wE,YAAY5wE,KAAKf,IAAI,cAGzC6xE,YAAa,SAAU7/B,EAAUxwB,GAC7B,GAAIzgB,KAAKf,IAAI,eACT,OAAOe,KAAK4wE,YAAY3/B,EAAUxwB;;o8BC1HlD/hB,OAAA,+BAAA,CAAA,UAAA,iDAAA,SAAAC,EAAAoyE,GAGAlyE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAA8xE,EAAA7xE;MCGsBK,MAAMyc,UAAU5c,OAAO,CACzCO,KAAMJ,MAAMC,OAAOC,UACnBmnB,QAAS,GACT7nB,MAAO,KACPgB,KAAM,WAKF,GAJAC,KAAKC,OAALC,MAAAF,KAAeG,WACXH,KAAKf,IAAI,sBACTe,KAAKmC,IAAI,SAAUnC,KAAKf,IAAI,QAAQqD,EAAEtC,KAAKf,IAAI,wBAE9Ce,KAAKf,IAAI,WAAae,KAAKf,IAAI,UAChC,OAAOe,KAAKmC,IAAI,QAASnC,KAAKf,IAAI,4BAG1C0L,QAASpL,MAAMwB,UAAS,WACpB,IAAIyC;AAEJ,OADAA,EAAQhC,EAAAA,QAAU6N,cAAcrP,KAAKf,IAAI,QAAU,IAAMe,KAAKf,IAAI,YAC7B,MAAxBuE,EAAMmH,QAAQwP,OAChB3W,EAAMmH,QAAQwP,OAElB,CAAC,WAEZogC,QAAS,CACL3Z,OAAQ,WACJ,IAAIha,EAAqBoqD,EAAeC;AAWxC,OATAD,GADa,EAAAvqB,EAAAvnD,SAAE,SAAUc,KAAKkxC,SAAS,GACZ8/B,cACvBhxE,KAAKf,IAAI,WACT+xE,IAEA,MAAOpqD,IAEPA,EAAU5mB,KAAKf,IAAI,aAEvBgyE,EAAgBrqD,EAAQsqD,SAASF,IAGtBhxE,KAAKf,IAAI,YACZgyE,EAAcxwD,OACPzgB,KAAKmC,IAAI,QAAS8uE,EAAcxwD,QAEhCzgB,KAAKmC,IAAI,QAAS8uE,GAGtBjxE,KAAKmC,IAAI,QAAS8uE,EAAchyE,IAAI,OARpCe,KAAKmC,IAAI,QAAS;;MC7C1BgvE,EAAAA;;MCUK5xE,MAAMyc,UAAU5c,OAAOsoE,EAAAA,QAAM,CAC7C9nE,QAASL,MAAMC,OAAOC,UACtBE,KAAMJ,MAAMC,OAAOC,UACnB2vD,IAAK7vD,MAAMC,OAAOC,UAClBgiC,UAAW3qB,GAAGtX,OAAOC,QAAQ,qBAC7B2xE,UAAW7xE,MAAMC,OAAOC,UACxBsqD,WAAY,YACZib,UAAU,EACVjlE,KAAM,WAAY,IAAA+E,EAAA9E;AAEd,OADAA,KAAKC,OAALC,MAAAF,KAAeG,WACQ,oBAAZ0xC,SAAuC,OAAZA,QAC3BA,QAAQw/B,cAAcC,mBAAmBrsE,MAAK,SAACssE,GAClD,OAAOzsE,EAAK3C,IACR,UACA2C,EAAK7F,IAAI,QAAQqD,EAAE,uBACf,KACAwC,EAAK7F,IAAI,OAAOsyE,UAChB,SACAA,MAILvxE,KAAKmC,IACR,UACAnC,KAAKf,IAAI,QAAQqD,EAAE,uBAAyB,KAAOtC,KAAKf,IAAI,OAAOsyE,YAI/EC,WAAYjyE,MAAMwB,SAAS,uBAAuB,WAC9C,OAAOf,KAAKf,IAAI,8BAEpBs7C,QAAS,CACLvgB,MAAO,SAAU0tC,GAIb,GAHI1nE,KAAKf,IAAI,UACTe,KAAKg6B,QAEL0tC,GAAQ1nE,KAAKf,IAAI,cACjB,OAAOe,KAAKyxE,WAAW/J,EAAK/lC,OAGpCqjC,SAAU,WACN,OAAOhlE,KAAK8zD,eAAe,aAE/BoR,qBAAsB,SAAUjvD,GAC5B,OAAOA,EAAK69C,eAAe,kBAE/BqR,cAAe,WAEX,OADAnlE,KAAK0xE,oBAAoB1xE,KAAKf,IAAI,UAC3Be,KAAK24B,KAAK,UAErBssC,kBAAmB,WAEf,UADOj+D,aAAa,8BAChBhH,KAAKf,IAAI,UACT,OAAOe,KAAK2xE,UAGpBC,SAAU,SAAU9wE,GAChB,OAAOwF,OAAOmzC,KAAK34C,EAAK,WAE5B+wE,kBAAmB,WAEf,OADA7xE,KAAK24B,KAAK,SACH34B,KAAKmC,IAAI,qBAAqB,IAEzC6oE,WAAY,WACR,OAAOhrE,KAAKmC,IAAI,qBAAqB;;MC1ElC2vE,EAAAA;;MCAAC,EAAAA;;MCAAC,EAAAA;;MCMOzyE,MAAMyc,UAAU5c,OAAO,CACzC+2D,WAAY,CAAC,UACbe,QAAS,cACT+a,eAAe,EACfC,eAAgB,KAChBC,YAAa5yE,MAAMwB,SAAS,gBAAiB,YAAY,WACrD,QAAIf,KAAKf,IAAI,eAEFe,KAAKf,IAAI,oBAKxBs7C,QAAS,CACL63B,YAAa,WACJpyE,KAAKf,IAAI,mBACVe,KAAKmC,IAAI,iBAAiB,GACtBnC,KAAKf,IAAI,WACTe,KAAK45B;;ACzBzB,IAAMzd,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,gqYAAAzZ,KAAA,CAAA0Z,WAAA,gEAGbhd,MAAAid;;ACHf,IAAML,EAAsB5c,MAAA6c,SAAAC,SAAA,CAAA1Y,GAAA,WAAA2Y,MAAA,2rBAAAzZ,KAAA,CAAA0Z,WAAA,oEAGbhd,MAAAid;;;;;;;;;;;;MCYMjd,MAAMyc,UAAU5c,OAAOskD,EAAAA,QAAW,CACnD/jD,KAAMJ,MAAMC,OAAOC,UACnBmkD,kBAAmB,GACnByuB,WAAY,YACZ3X,aAAc,YACd4X,UAAW,KACXC,WAAW,EAEXC,GAAIjzE,MAAAukD,SAAS,mBAAmB,WAC5B,OAAO9jD,KAAKmC,IAAI,YAAanC,KAAKf,IAAI,uBAG1CwzE,OAAQ37D,GAAG/V,SAAS,eAAe,WAC/B,IAAIE;AAEJ,OAAY,OADZA,EAAOjB,KAAKf,IAAI,YAIXM,MAAMuD,QAAQ7B,IAGI,IAAhBA,EAAKiS,UAGhBw/D,mBAAoB57D,GAAG/V,SAAS,WAAW,WACvC,IAAI2jC,EAAS/kC,EAAM2kD,EAAoBV;AAEvC,OADAA,EAAoB5jD,KAAKf,IAAI,uBAEzBylC,EAAU1kC,KAAKf,IAAI,WACnBU,EAAOK,KAAKf,IAAI,QAChBqlD,EAAqB,GACrBl7C,EAAAA,QAAEe,KAAKu6B,GAAS,SAAC79B,EAAKoP,GAClB,OAAOquC,EAAmBp5C,KAAKvL,EAAK2C,EAAEshD,EAAoB,IAAM3tC,OAE7DquC,GAEJtkD,KAAKf,IAAI,yBAEpB0zE,cAAe77D,GAAG/V,SAAS,cAAc,WACrC,IAAI6xE;AASJ,OARAA,EAAkB5yE,KAAKf,IAAI,cAAcklB,QAAO,SAACmuD,GAC7C,OAAQ,CAAC,SAAU,OAAQ,UAAUztE,MAAK,SAACguE,GACvC,OAAOP,EAAU14C,OAAO93B,SAAS+wE,UAGzB3nE,KAAK,CACjB8zD,KAAM,mBAEH4T,KAEXE,mBAAoBh8D,GAAG/V,SAAS,cAAc,WAO1C,OALkBf,KAAKf,IAAI,cAAcklB,QAAO,SAACmuD,GAC7C,OAAQ,CAAC,SAAU,OAAQ,UAAUztE,MAAK,SAACguE,GACvC,OAAOP,EAAU14C,OAAO93B,SAAS+wE,YAM7CrtC,MAAO,KACPzjB,QAASjL,GAAG/V,SAAS,2BAA2B,WAC5C,IAAIgyE;AAeJ,OAdAA,EAAM,GACF/yE,KAAKf,IAAI,SACTe,KAAKf,IAAI,QAAQ2H,SAAQ,SAACoO,GACtB,GAAyB,YAArBA,EAAI0lD,aACJ,OAAOqY,EAAIrkD,WAAW1Z,MAIf,IAAf+9D,EAAI7/D,QAAgB6/D,EAAI7/D,SAAWlT,KAAKf,IAAI,gBAC5Ce,KAAKmC,IAAI,aAAc,aAEvB4wE,EAAI7/D,SAAWlT,KAAKf,IAAI,gBACxBe,KAAKmC,IAAI,aAAc,WAEpB4wE,KAEXC,oBAAqBl8D,GAAG/V,UAAS,WAC7B,IAAIuO;AAKJ,OAJAA,EAAM,IACFsqB,OAAS,WACbtqB,EAAI2jE,UAAY,cAChB3jE,EAAIwS,KAAO9hB,KAAKf,IAAI,QAAQqD,EAAE,uBACvBgN,KAEX4jE,wBAAyB3zE,MAAMwB,SAAS,kBAAmB,eAAe,WAEtE,QAAKf,KAAKf,IAAI,qBAGoE,IAA7De,KAAKf,IAAI,eAAeszB,MAAM,MAAM5pB,QAAQ,eAGrEwqE,0BAA2B,WAC3B37B,gBAAiB1gC,GAAG/V,UAAS,WACzB,IAAIyC;AAEJ,UADAA,EAAQhC,EAAAA,QAAU6N,cAAcrP,KAAKf,IAAI,QAAU,aAE1CuE,EAAM6K,SAASkpC,aAM5BnR,YAAatvB,GAAG/V,SAAS,QAAQ,WAC7B,IAAIgjD,EAAGvgD,EAAO0iC,EAAcvmC,EAAMqL;AAClC,OAAKhL,KAAKf,IAAI,SAGd8kD,EAAI/jD,KAAKf,IAAI,aACbU,EAAOK,KAAKf,IAAI,QAChBuE,EAAQugD,EAAEvgD,MAAMxD,KAAKf,IAAI,QAAS,UAE9BinC,EADA1iC,EAAM6K,SAAS83B,aACA3iC,EAAM6K,SAAS83B,aAAa12B,MAAM,KAElCjM,EAAMmH,QAEd,WACP,IAAIkI,EAAGE,EAAKqqC;AAEZ,IADAA,EAAU,GACLvqC,EAAI,EAAGE,EAAMmzB,EAAahzB,OAAQL,EAAIE,EAAKF,IAC5C7H,EAASk7B,EAAarzB,GAClBlT,EAAK2rB,OAAO,UAAYtgB,GACxBoyC,EAAQlyC,KAAK,CACTvH,GAAIqH,EACJ6B,KAAMlN,EAAK2C,EAAE,UAAY0I,EAAS,WAGtCoyC,EAAQlyC,KAAK,CACTvH,GAAIqH,EACJ6B,KAAMlN,EAAK2C,EAAE,wBAA0B0I;AAInD,OAAOoyC,EAjBA,IAVA,MA+BfmH,aAAchlD,MAAMwB,UAAS,WAAY,IAAA+D,EAAA9E;AACrC,OAAO,IAAI8W,GAAGrR,KAAKwC,SAAQ,SAACvC,EAASwC,GACjC,OAAOxC,EACHZ,EAAK0/C,sBACD1/C,EAAK7F,IAAI,cACT6F,EAAK7F,IAAI,QACT6F,EAAK7F,IAAI,8BAKzBm0E,WAAY7zE,MAAMwB,SAAS,WAAW,WAAY,IAAA8V,EAAA7W;AAC9C,OAAOA,KAAKf,IAAI,WAAW4iB,KAAI,SAAC5L,GAC5B,OAAOY,EAAKw8D,UAAUp9D,SAG9Bo9D,UAAW,SAAUvtC,GACjB,IAAIwtC,EADqBC,EAAAl0B,EAEFr/C,KAAKwzE,YAAY1tC,GAFf;AAGzB,OAHyBytC,EAAA,KAEfD,EAFeC,EAAA,IAGKD,EAAU,GAAK,KAEjDE,YAAa,SAAU1tC,GACnB,IAAIwtC,EAAWptD;AACf,IAA6B,IAAzB4f,EAAOn9B,QAAQ,KAAa,CAAA,IAAA8qE,EAAAp0B,EACLvZ,EAAOr2B,MAAM,KADR;AAC3ByW,EAD2ButD,EAAA,GAE5BH,EAAY,CADFA,EADkBG,EAAA,SAI5BvtD,EAAU4f,EACVwtC,EAAY;AAEhB,MAAO,CAACptD,EAASotD,IAErBI,QAAS58D,GAAG/V,UAAS,WACjB,OAAOf,KAAKf,IAAI,aAAa2mC,UAAU,CAAC,mBAE5C+tC,aAAcp0E,MAAMwB,SAAS,qBAAqB,WAC9C,GAAIf,KAAKf,IAAI,aAAa2mC,UAAU,CAAC,sBACjC,OAAO,KAGfvC,aAAc9jC,MAAMwB,SAAS,cAAc,WACvC,OAAOf,KAAKf,IAAI,WAAWszB,MAAM,MAAM5U,KAAK,QAEhDi2D,cAAe,SAAUz7D,GACrB,IAAI4rC,EAAG5/B,EAAQm7B,EAAYvsB,EAAalgB,EAAGE,EAAK8gE,EAAkB5nE,EAAKlN;AAIvE,IAHAglD,EAAI/jD,KAAKf,IAAI,aACb40E,EAAmB,GAEdhhE,EAAI,EAAGE,GADZ9G,EAAMjM,KAAKf,IAAI,YACOiU,OAAQL,EAAIE,EAAKF,IAEnC,IADAsR,EAASlY,EAAI4G,IACF5T,IAAI,UAAmC,YAAvBklB,EAAOllB,IAAI,QAAuB,CACzD,GAAIM,MAAMuD,QAAQqhB,EAAOllB,IAAI,WAA4C,IAA/BklB,EAAOllB,IAAI,gBACjD;AAGAF,EADuB,aAAvBolB,EAAOllB,IAAI,QACHqS,SAAS6S,EAAOllB,IAAI,UAEpBklB,EAAOllB,IAAI,SAEnBklB,EAAOllB,IAAI,YAAcklB,EAAOllB,IAAI,UACpC8zB,EAAch0B,EACdugD,EAAat/C,KAAKf,IAAI,QAAQqD,EAAE,yBAEhCywB,EAAcgxB,EAAE1R,SACZtzC,EACAolB,EAAOllB,IAAI,QACXklB,EAAOllB,IAAI,SACX,MACAkZ,GAEJmnC,EAAat/C,KAAKf,IAAI,QAAQqD,EAAE6hB,EAAOllB,IAAI,QAAU,IAAMklB,EAAOllB,IAAI,UAEtEe,KAAKf,IAAI,mBACT40E,EAAiB3oE,KAAK,CAClB,CACI4W,KAAMw9B,EAAa,KAAOvsB,EAC1BjW,MAAO,gBAIf+2D,EAAiB3oE,KAAK,CAACo0C,EAAa,IAAKvsB,IAIrD,OAAO8gD,GAEXt5B,QAAS,CACLu5B,iBAAkB,SAAUjtE,GACxB,IAAIk9C,EAAGz0C;AAYP,OAXAy0C,EAAI/jD,KAAKf,IAAI,aAETqQ,EAD6B,qBAA7BtP,KAAKf,IAAI,WAAW4H,GACd,CACFtD,KAAMvD,KAAKf,IAAI,QACfyL,KAAM,WACN2D,SAAU,GACV46B,IAAK,oBAGH8a,EAAEvgD,MAAMxD,KAAKf,IAAI,QAASe,KAAKf,IAAI,WAAW4H,IAEjD7G,KAAK+kD,WAAW,gBAAiB,qBAAsBz1C,IAElEykE,cAAe,SAAUltE,GACrB,OAAI7G,KAAKf,IAAI,aACFe,KAAK24B,KAAK,mBAAoB9xB,GAE9B7G,KAAK24B,KAAK,cAAe9xB,IAGxCmtE,YAAa,SAAUntE,GACnB,IAAI69B,EAASuvC;AASb,OARAvvC,EAAU1kC,KAAKf,IAAI,WAGfg1E,GAFJA,EAAej0E,KAAKf,IAAI,YACH4H,GAAwB,OAAjBotE,EACTptE,EAAM,IAENA,EAEnB7G,KAAKmC,IAAI,QAAS8xE,GACXj0E,KAAK+kD,WAAW,gBAAiB,gBAAiBrgB,EAAQ79B,KAErE8sD,MAAO,SAAU3+C,GACb,IAAI2P;AAgBJ,MAfuC,YAAnCplB,MAAMN,IAAI+V,EAAK,iBACfzV,MAAM4C,IAAI6S,EAAK,eAAgB,aAC/B2P,EAAS,CACLhhB,GAAIpE,MAAMN,IAAI+V,EAAK,MACnB4kB,OAAQ,UAEZ55B,KAAK+kD,WAAW,gBAAiB,WAAYpgC,KAE7CplB,MAAM4C,IAAI6S,EAAK,eAAgB,WAC/B2P,EAAS,CACLhhB,GAAIpE,MAAMN,IAAI+V,EAAK,MACnB4kB,OAAQ,OAEZ55B,KAAK+kD,WAAW,gBAAiB,WAAYpgC,IAE1C3kB,KAAK+kD,WAAW,gBAAiB,cAAe/kD,KAAKf,IAAI,aAEpEi1E,SAAU,WAAY,IAAAzwD,EAAAzjB;AAsBlB,OArBAA,KAAK8zD,eAAe,YACpB9zD,KAAKf,IAAI,QAAQ2H,SAAQ,SAACoO,GACtB,IAAI2P;AACJ,OAAIlB,EAAKxkB,IAAI,aACTM,MAAM4C,IAAI6S,EAAK,eAAgB,WAC/ByO,EAAKthB,IAAI,aAAc,WACvBwiB,EAAS,CACLhhB,GAAIpE,MAAMN,IAAI+V,EAAK,MACnB4kB,OAAQ,OAELnW,EAAKshC,WAAW,gBAAiB,WAAYpgC,KAEpDplB,MAAM4C,IAAI6S,EAAK,eAAgB,aAC/ByO,EAAKthB,IAAI,aAAc,aACvBwiB,EAAS,CACLhhB,GAAIpE,MAAMN,IAAI+V,EAAK,MACnB4kB,OAAQ,UAELnW,EAAKshC,WAAW,gBAAiB,WAAYpgC,OAGrD3kB,KAAK+kD,WAAW,gBAAiB,cAAe/kD,KAAKf,IAAI,aAEpE+7C,aAAc,SAAU16C,GACpB,IAAIqkB;AAIJ,OAHAA,EAAS,IACFxM,KAAOnY,KAAKf,IAAI,WACvB0lB,EAAOrkB,OAASA,EACTN,KAAK+kD,WAAW,gBAAiB,eAAgBpgC,IAE5D2tD,UAAW,SAAU14C,EAAQ5kB,GACzB,IAAI8B,GAAGq9D,OAAOv6C,GAGd,OAAO55B,KAAK+kD,WAAW,gBAAiBnrB,EAAQ5kB,IAEpDo/D,qBAAsB,SAAUx6C,GAC5B,OAAO55B,KAAK+kD,WAAW,gBAAiB,oBAAqB,CACzDnrB,OAAQA,EACRzhB,KAAMnY,KAAKf,IAAI,cAGvBo1E,WAAY,SAAUC,GAClB,OAAOt0E,KAAK+kD,WAAW,gBAAiBuvB,IAE5CnvB,WAAY,WAAY,IAAA1oB,EAAAz8B;AACpB,OAAOA,KAAKf,IAAI,gBAAgBgG,MAAK,SAACisC,GAClC,IAAIC,EAAU0iC;AAad,OAZA1iC,EAAW,CAACD,GACRzU,EAAKx9B,IAAI,aACT40E,EAAmBp3C,EAAKm3C,cAAcn3C,EAAKx9B,IAAI,UAC1BiU,OAAS,GAC1Bi+B,EAAS/pB,QAAQ,CACbqqB,MAAO,CACHlG,KAAMsoC,GAEVniC,OAAQ,cAIbjV,EAAKmV,sBAAsBT,GAAUlsC,MAAK,SAAC8nB,GAC9C,GAAuB,oBAAZ8kB,SAAuC,OAAZA,QAClC,OAAOpV,EAAKx9B,IAAI,WAAW6yC,SAAS/kB,EAAM,0BAK1DwnD,SAAU,SAAU7sC,EAAK1yB,GACrB,IAAI2P;AAGJ,OADAA,EAAS,CAAE+iB,IAAAA,EAAKvvB,KADTnD,EAAM,CAACA,GAAOhV,KAAKf,IAAI,YAEvBe,KAAK+kD,WAAW,gBAAiB,WAAYpgC;eChXhEjmB,OAAA,2BAAA,CAAA,UAAA,yCAAA,SAAAC,EAAA61E,GAGA31E,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAu1E,EAAAt1E;MCDaK,MAAMyc,UAAU5c,OAAO,CAChCq1E,MAAO,KACP3gD,YAAav0B,MAAMwB,SAAS,WAAY,OAAQ,kBAAkB,WAC9D,IAAI2zE,EAAgBtb,EAAO/lD,EAAO0qC,EAAMxlC,EAAMo8D,EAAUlqE,EAAMmqE,EAAQH;AAEtE,GADAA,EAAQz0E,KAAKf,IAAI,SACjB,CAYA,IATAy1E,EAAiB10E,KAAKf,IAAI,qBAEtBw1E,EAAQA,EAAMtwD,QAAO,SAAUuyB,GAC3B,OAAOA,EAAKz3C,IAAI,iBAAmBy1E,MAG3CE,EAAS50E,KAAKf,IAAI,QAClB8+C,EAAOtzC,EAAO8N,EAAOo8D,EAAW,KAChCthE,GAAQ,GACHuhE,EAAQ,CAET,KADAxb,EAAQqb,EAAMx1E,IAAI,gBAEd;AAEJ21E,EAASxb,EAAMn6D,IAAI,MAuBvB,OArBAw1E,EAAM7tE,SAAQ,SAAU8vC,GASpB,OARIrjC,IAAUkF,IACVA,EAAOm+B,GAEPA,EAAKz3C,IAAI,QAAU21E,IACnBvhE,GAAQ,EACR5I,EAAOisC,EACPi+B,EAAW52B,GAEPA,EAAOrH,KAKnBn3C,MAAMkD,IAAI8V,KAAKvY,MAAM,WACjB,IAAIA,KAAKf,IAAI,eAIb,OADAe,KAAKmC,IAAI,WAAYoW,GACdvY,KAAKmC,IAAI,eAAgBwyE,MAE7BlqE,MAEXoqE,SAAU,KACVC,aAAc,KACdv6B,QAAS,CACLw6B,aAAc,WAEV,OAAO/0E,KAAKmC,IAAI,OAAQnC,KAAKf,IAAI,iBAErC+1E,iBAAkB,WAEd,OAAOh1E,KAAKmC,IAAI,OAAQnC,KAAKf,IAAI;eChE7CP,OAAA,qCAAA,CAAA,UAAA,4EAAA,SAAAC,EAAA45D,GAGA15D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAs5D,EAAAr5D;MCDsBK,MAAMyc,UAAU5c,OAAO,CACzCO,KAAMmX,GAAGtX,OAAOC,UAChB2vD,IAAKt4C,GAAGtX,OAAOC,UACf+mD,iBAAkB,WAEd,OADAxmD,KAAKC,SACED,KAAKf,IAAI,OAAOg2E,sBAAsB,OAEjD1mB,mBAAoB,WAEhB,OADAvuD,KAAKC,SACED,KAAKf,IAAI,OAAOi2E,4BAE3B36B,QAAS,CACLx6B,MAAO,SAAU/K,GACb,GAAIhV,KAAKf,IAAI,cACT,OAAOe,KAAKm1E,WAAWngE;eCtBvCtW,OAAA,gCAAA,CAAA,UAAA,qDAAA,SAAAC,EAAA45D,GAGA15D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAs5D,EAAAr5D,cCTAR,OAAA,iCAAA,CAAA,UAAA,sDAAA,SAAAC,EAAA45D,GAGA15D,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAs5D,EAAAr5D;ACLA,IAAMmC,EAAS+zE,EAAAA,QAAI,iBAAmB,KAEvBC,EAAAA,QAAQj2E,OAAO,CAE5BmiB,MAAOlgB,EAAOi0E,cAAgB,UAC9BC,gBAAiBl0E,EAAOk0E,iBAAmB,WAC3CC,eAAgBn0E,EAAOm0E,gBAAkB,SACzCl0D,WAAYjgB,EAAOo0E,oBAAqB,EACxCj0D,KAAMngB,EAAOq0E,aAAe;;MCgiEf,CACXC,YAliEU,CACV,CACIC,MAAO,CAAC,4CACRj0C,KAAM,CAAC,aACPq9B,KAAM,sBACNl9C,KAAM,iBACNne,GAAI,YACJ+6C,SAAU,IAEd,CACIk3B,MAAO,CAAC,4CACRj0C,KAAM,CAAC,YACPq9B,KAAM,oBACNl9C,KAAM,gBACNne,GAAI,WACJ+6C,SAAU,IAEd,CACIk3B,MAAO,CAAC,WAAY,0BAA2B,mBAC/Cj0C,KAAM,CAAC,6BACPq9B,KAAM,iBACNl9C,KAAM,iBACNne,GAAI,WACJkyE,WAAY,CAAC,OAAQ,WACrBn3B,SAAU,CACN,CACI58B,KAAM,qBACN6f,KAAM,6BAEV,CACI7f,KAAM,qBACN6f,KAAM,wBACNi0C,MAAO,CAAC,4BAA6B,gBAEzC,CACI9zD,KAAM,gBACN6f,KAAM,uBACNi0C,MAAO,CAAC,8BAEZ,CACI9zD,KAAM,4BACN6f,KAAM,uBACNi0C,MAAO,CAAC,iBAEZ,CACI9zD,KAAM,+BACN6f,KAAM,0BACNi0C,MAAO,CAAC,gBAAiB,YAE7B,CACI9zD,KAAM,+BACN6f,KAAM,0BACNi0C,MAAO,CAAC,eAEZ,CACI9zD,KAAM,qBACN6f,KAAM,mBACNi0C,MAAO,CAAC,0BAEZ,CACI9zD,KAAM,qBACN6f,KAAM,sBACNi0C,MAAO,CAAC,sBAAuB,2BAEnC,CACI9zD,KAAM,0BACN6f,KAAM,kBACNi0C,MAAO,CACH,gBACA,0CACA,sBAGR,CAEI9zD,KAAM,yBACN6f,KAAM,wBAEV,CACI7f,KAAM,8BACN6f,KAAM,yBACNi0C,MAAO,CAAC,gBAAiB,WAAY,UAAW,eAChDE,UAAW,CAAC,gCAEhB,CACIh0D,KAAM,mCACN6f,KAAM,8BACNi0C,MAAO,CAAC,gBAAiB,WAAY,2BAA4B,kBAI7E,CACIA,MAAO,CAAC,YAAa,qBAAsB,gBAC3Cj0C,KAAM,CAAC,cACPq9B,KAAM,oBACNl9C,KAAM,kBACNne,GAAI,cAER,CACIiyE,MAAO,CACH,2CACA,uBACA,8BAEJj0C,KAAM,CAAC,oBACPq9B,KAAM,gBACNl9C,KAAM,cACNne,GAAI,SACJ+6C,SAAU,CACN,CACI58B,KAAM,iBACN6f,KAAM,oBAEV,CACI7f,KAAM,6BACN6f,KAAM,uBACNi0C,MAAO,CAAC,sBAEZ,CACI9zD,KAAM,wBACN6f,KAAM,4BACNi0C,MAAO,CAAC,sBAEZ,CACI9zD,KAAM,sBACN6f,KAAM,oBAIlB,CACIi0C,MAAO,CACH,2CACA,cACA,+BAEJj0C,KAAM,CAAC,oBACPq9B,KAAM,gBACNl9C,KAAM,cACNne,GAAI,SACJ+6C,SAAU,CACN,CACI58B,KAAM,iBACN6f,KAAM,oBAEV,CACI7f,KAAM,6BACN6f,KAAM,uBACNi0C,MAAO,CAAC,sBAEZ,CACI9zD,KAAM,wBACN6f,KAAM,4BACNi0C,MAAO,CAAC,sBAEZ,CACI9zD,KAAM,sBACN6f,KAAM,oBAIlB,CACIi0C,MAAO,CAAC,mBACRj0C,KAAM,CAAC,iBACPq9B,KAAM,6BACNl9C,KAAM,qBACNne,GAAI,gBACJ+6C,SAAU,CACN,CACI58B,KAAM,qBACN6f,KAAM,uBAEV,CACI7f,KAAM,4BACN6f,KAAM,wBAEV,CACI7f,KAAM,6CACN6f,KAAM,wCACNi0C,MAAO,CAAC,gCAEZ,CACI9zD,KAAM,qCACN6f,KAAM,gCACNi0C,MAAO,CAAC,4BAEZ,CACI9zD,KAAM,0CACN6f,KAAM,qCACNi0C,MAAO,CAAC,2BAEZ,CACI9zD,KAAM,8BACN6f,KAAM,yBACNi0C,MAAO,CAAC,oBAEZ,CACI9zD,KAAM,sCACN6f,KAAM,sBACNi0C,MAAO,CAAC,yBAEZ,CACI9zD,KAAM,gCACN6f,KAAM,2BACNi0C,MAAO,CAAC,wBAIpB,CACIA,MAAO,CAAC,mCACRj0C,KAAM,CAAC,SACPq9B,KAAM,6BACNl9C,KAAM,aACNne,GAAI,QACJ+6C,SAAU,CACN,CACI58B,KAAM,aACN6f,KAAM,cACNi0C,MAAO,CAAC,iBAEZ,CACI9zD,KAAM,mBACN6f,KAAM,eACNi0C,MAAO,CAAC,sBAEZ,CACI9zD,KAAM,qBACN6f,KAAM,iBACNi0C,MAAO,CAAC,iBAEZ,CACI9zD,KAAM,kBACN6f,KAAM,cACNi0C,MAAO,CAAC,eAAgB,sBAIpC,CACIA,MAAO,CACH,6BACA,2DAEJj0C,KAAM,CAAC,2BACPq9B,KAAM,6BACNl9C,KAAM,yBACNne,GAAI,oBACJ+6C,SAAU,CACN,CACI58B,KAAM,iCACN6f,KAAM,0BACNi0C,MAAO,CAAC,mCAEZ,CACI9zD,KAAM,qCACN6f,KAAM,yBACNi0C,MAAO,CAAC,8BAIpB,CACIA,MAAO,CACH,0BACA,2DAEJj0C,KAAM,CAAC,wBACPq9B,KAAM,qBACNl9C,KAAM,sBACNne,GAAI,iBACJ+6C,SAAU,CACN,CACI58B,KAAM,8BACN6f,KAAM,uBACNi0C,MAAO,CAAC,mCAEZ,CACI9zD,KAAM,kCACN6f,KAAM,sBACNi0C,MAAO,CAAC,8BAIpB,CACIA,MAAO,CAAC,WAAY,6BACpBj0C,KAAM,CAAC,aACPq9B,KAAM,mBACNl9C,KAAM,iBACNne,GAAI,WACJ+6C,SAAU,CACN,CACI58B,KAAM,mBACN6f,KAAM,mBAEV,CACI7f,KAAM,gBACN6f,KAAM,qBACNi0C,MAAO,CAAC,kBAEZ,CACI9zD,KAAM,cACN6f,KAAM,oBAEV,CACI7f,KAAM,gBACN6f,KAAM,0BACNi0C,MAAO,CAAC,kBAEZ,CACI9zD,KAAM,uBACN6f,KAAM,qBACNi0C,MAAO,CAAC,4CAEZ,CACI9zD,KAAM,0BACN6f,KAAM,gBACNi0C,MAAO,CACH,gBACA,0CACA,wBAKhB,CACIA,MAAO,CAAC,2BAA4B,WAAY,2BAChDj0C,KAAM,CAAC,YACPq9B,KAAM,gBACNl9C,KAAM,gBACNne,GAAI,UACJ+6C,SAAU,CACN,CACI58B,KAAM,gBACN6f,KAAM,kBAEV,CACI7f,KAAM,qBACN6f,KAAM,kBAEV,CACI7f,KAAM,gBACN6f,KAAM,oBACNi0C,MAAO,CAAC,OAAQ,mCAEpB,CACI9zD,KAAM,mBACN6f,KAAM,uBACNi0C,MAAO,CAAC,sBAAuB,yBAI3C,CAEIA,MAAO,CAAC,mBACRj0C,KAAM,CAAC,wBACPq9B,KAAM,qBACNl9C,KAAM,oBACNne,GAAI,cACJ+6C,SAAU,CACN,CACI58B,KAAM,sBACN6f,KAAM,wBAEV,CACI7f,KAAM,6BACN6f,KAAM,uBAEV,CACI7f,KAAM,sCACN6f,KAAM,gCAEV,CACI7f,KAAM,iCACN6f,KAAM,0BACNi0C,MAAO,CAAC,WAAY,iBAExB,CACI9zD,KAAM,mCACN6f,KAAM,4BACNi0C,MAAO,CAAC,+BAAgC,mBAIpD,CACIA,MAAO,CAAC,KAAM,eAAgB,QAC9Bj0C,KAAM,CAAC,gCACPq9B,KAAM,mBACNl9C,KAAM,mBACNne,GAAI,cACJ+6C,SAAU,CACN,CACI58B,KAAM,YACN6f,KAAM,+BACNi0C,MAAO,CAAC,WAEZ,CACI9zD,KAAM,UACN6f,KAAM,6BACNi0C,MAAO,CAAC,WAEZ,CACI9zD,KAAM,aACN6f,KAAM,iCAEV,CACI7f,KAAM,+BACN6f,KAAM,iCACNi0C,MAAO,CAAC,4BAEZ,CACI9zD,KAAM,yBACN6f,KAAM,2BACNi0C,MAAO,CACH,0BACA,iCACA,+BAKhB,CACIA,MAAO,CAAC,MAAO,eAAgB,OAC/Bj0C,KAAM,CAAC,iCACPq9B,KAAM,qBACNl9C,KAAM,mBACNne,GAAI,cACJ+6C,SAAU,CACN,CACI58B,KAAM,aACN6f,KAAM,gCACNi0C,MAAO,CAAC,YAEZ,CACI9zD,KAAM,WACN6f,KAAM,8BACNi0C,MAAO,CAAC,YAEZ,CACI9zD,KAAM,cACN6f,KAAM,kCAEV,CACI7f,KAAM,+BACN6f,KAAM,iCACNi0C,MAAO,CAAC,4BAEZ,CACI9zD,KAAM,yBACN6f,KAAM,2BACNi0C,MAAO,CACH,0BACA,iCACA,+BAKhB,CACIA,MAAO,CAAC,MAAO,eAAgB,MAC/Bj0C,KAAM,CAAC,gCACPq9B,KAAM,qBACNl9C,KAAM,mBACNne,GAAI,cACJ+6C,SAAU,CACN,CACI58B,KAAM,YACN6f,KAAM,+BACNi0C,MAAO,CAAC,WAEZ,CACI9zD,KAAM,UACN6f,KAAM,6BACNi0C,MAAO,CAAC,WAEZ,CACI9zD,KAAM,aACN6f,KAAM,iCAEV,CACI7f,KAAM,aACN6f,KAAM,gCACNi0C,MAAO,CAAC,YAEZ,CACI9zD,KAAM,WACN6f,KAAM,8BACNi0C,MAAO,CAAC,YAEZ,CACI9zD,KAAM,cACN6f,KAAM,kCAEV,CACI7f,KAAM,+BACN6f,KAAM,iCACNi0C,MAAO,CAAC,4BAEZ,CACI9zD,KAAM,yBACN6f,KAAM,2BACNi0C,MAAO,CACH,0BACA,iCACA,+BAKhB,CACIA,MAAO,CAAC,aAAc,cACtBj0C,KAAM,CAAC,yBACPq9B,KAAM,mBACNl9C,KAAM,kBACNne,GAAI,aACJ+6C,SAAU,CACN,CACI58B,KAAM,wBACN6f,KAAM,yBAEV,CACI7f,KAAM,qBACN6f,KAAM,qBACNi0C,MAAO,CAAC,mBAEZ,CACI9zD,KAAM,sBACN6f,KAAM,yBAIlB,CACIi0C,MAAO,CAAC,gBAAiB,iBACzBj0C,KAAM,CAAC,kBACPq9B,KAAM,sBACNl9C,KAAM,gBACNne,GAAI,WACJ+6C,SAAU,CACN,CACI58B,KAAM,gBACN6f,KAAM,CAAC,kBACPi0C,MAAO,CAAC,gBAAiB,iBACzBG,YAAY,GAEhB,CAKIj0D,KAAM,4BACN6f,KAAM,sBAEV,CACI7f,KAAM,0BACN6f,KAAM,sBAIlB,CACIi0C,MAAO,CAAC,gCAAiC,kBACzCj0C,KAAM,CAAC,sBACPq9B,KAAM,sBACNl9C,KAAM,gBACNne,GAAI,WACJ+6C,SAAU,CACN,CACI58B,KAAM,gBACN6f,KAAM,CAAC,kBACPi0C,MAAO,CAAC,iBACRG,YAAY,GAEhB,CACIj0D,KAAM,4BACN6f,KAAM,sBAEV,CACI7f,KAAM,0BACN6f,KAAM,oBAEV,CACI7f,KAAM,yBACN6f,KAAM,qBAIlB,CACIi0C,MAAO,CAAC,kBAAmB,iBAC3Bj0C,KAAM,CAAC,sBACPq9B,KAAM,sBACNl9C,KAAM,mBACNne,GAAI,WACJ+6C,SAAU,CACN,CACI58B,KAAM,yBACN6f,KAAM,sBAEV,CACI7f,KAAM,0BACN6f,KAAM,qBACNi0C,MAAO,CAAC,0BAA2B,yBAEvC,CACI9zD,KAAM,wBACN6f,KAAM,mBACNi0C,MAAO,CAAC,0BAA2B,0BAI/C,CACIA,MAAO,CAAC,iBACRj0C,KAAM,CAAC,oBACPq9B,KAAM,sBACNl9C,KAAM,iBACNne,GAAI,aAER,CACIiyE,MAAO,CAAC,YACRj0C,KAAM,CAAC,SACPq9B,KAAM,kBACNl9C,KAAM,aACNne,GAAI,QACJ+6C,SAAU,CACN,CACI58B,KAAM,qBACN6f,KAAM,eAEV,CACI7f,KAAM,wBACN6f,KAAM,aACNi0C,MAAO,CAAC,mBAEZ,CACI9zD,KAAM,6BACN6f,KAAM,sBACNi0C,MAAO,CAAC,mBAEZ,CACI9zD,KAAM,4BACN6f,KAAM,gBAEV,CACI7f,KAAM,uBACN6f,KAAM,iBAEV,CACI7f,KAAM,wBACN6f,KAAM,kBAEV,CACI7f,KAAM,sBACN6f,KAAM,eACNi0C,MAAO,CAAC,mBAEZ,CACI9zD,KAAM,sBACN6f,KAAM,kBACNi0C,MAAO,CAAC,kBAAmB,wBAE/B,CACI9zD,KAAM,6BACN6f,KAAM,sBACNi0C,MAAO,CAAC,mBAEZ,CACI9zD,KAAM,4BACN6f,KAAM,qBACNi0C,MAAO,CAAC,iBAAkB,yBAE9B,CACI9zD,KAAM,wBACN6f,KAAM,kBACNi0C,MAAO,CAAC,sBAEZ,CACI9zD,KAAM,4BACN6f,KAAM,qBACNi0C,MAAO,CAAC,0BAEZ,CACI9zD,KAAM,qCACN6f,KAAM,8BACNi0C,MAAO,CAAC,gCAAiC,gBAE7C,CACI9zD,KAAM,qCACN6f,KAAM,8BACNi0C,MAAO,CAAC,iCAAkC,kBAItD,CACIA,MAAO,CAAC,eACRj0C,KAAM,CAAC,YACPq9B,KAAM,qBACNl9C,KAAM,gBACNne,GAAI,WACJ+6C,SAAU,CACN,CACI58B,KAAM,2BACN6f,KAAM,kBAEV,CACI7f,KAAM,8BACN6f,KAAM,oBAEV,CACI7f,KAAM,2BACN6f,KAAM,oBACNi0C,MAAO,CAAC,cAAe,uBAE3B,CACI9zD,KAAM,8BACN6f,KAAM,uBACNi0C,MAAO,CAAC,cAAe,mBAE3B,CACI9zD,KAAM,yBACN6f,KAAM,kBACNi0C,MAAO,CAAC,cAAe,UAAW,aAEtC,CACI9zD,KAAM,wBACN6f,KAAM,iBACNi0C,MAAO,CAAC,gBAAiB,WAIrC,CACIA,MAAO,CAAC,2BAA4B,yBACpCj0C,KAAM,CAAC,oBACPq9B,KAAM,qBACNl9C,KAAM,wBACNne,GAAI,oBAER,CACIiyE,MAAO,CAAC,mBAAoB,yBAC5Bj0C,KAAM,CAAC,yBACPq9B,KAAM,qBACNl9C,KAAM,sBACNne,GAAI,iBACJ+6C,SAAU,CACN,CACI58B,KAAM,+BACN6f,KAAM,yBAEV,CACI7f,KAAM,4BACN6f,KAAM,+BAIlB,CACIi0C,MAAO,CAAC,gBACRj0C,KAAM,CAAC,aACPq9B,KAAM,gCACNl9C,KAAM,iBACNne,GAAI,YACJ+6C,SAAU,CACN,CACI58B,KAAM,gBACN6f,KAAM,mBAEV,CACI7f,KAAM,gBACN6f,KAAM,iBACNi0C,MAAO,CACH,kBACA,gCACA,6BAGR,CACI9zD,KAAM,iBACN6f,KAAM,kBACNi0C,MAAO,CAAC,qBAAsB,2CAElC,CACI9zD,KAAM,mBACN6f,KAAM,qBAEV,CACI7f,KAAM,oBACN6f,KAAM,wBAIlB,CACIi0C,MAAO,CAAC,sBACRj0C,KAAM,CAAC,yBACPq9B,KAAM,mBACNl9C,KAAM,gBACNne,GAAI,WACJ+6C,SAAU,CACN,CACI58B,KAAM,wBACN6f,KAAM,wBACNi0C,MAAO,CAAC,uBAEZ,CACI9zD,KAAM,gCACN6f,KAAM,gCACNi0C,MAAO,CAAC,uBAEZ,CACI9zD,KAAM,mBACN6f,KAAM,mBACNi0C,MAAO,CAAC,oBAEZ,CACI9zD,KAAM,eACN6f,KAAM,eACNi0C,MAAO,CAAC,uBAEZ,CACI9zD,KAAM,kBACN6f,KAAM,kBACNi0C,MAAO,CAAC,yBAIpB,CACIA,MAAO,CAAC,WAAY,iBACpBj0C,KAAM,CAAC,UACPq9B,KAAM,kBACNl9C,KAAM,cACNne,GAAI,SACJ+6C,SAAU,CACN,CACI58B,KAAM,uBACN6f,KAAM,uBACNi0C,MAAO,CAAC,oBAEZ,CACI9zD,KAAM,wBACN6f,KAAM,wBACNi0C,MAAO,CAAC,kBAAmB,mBAE/B,CACI9zD,KAAM,yBACN6f,KAAM,uBACNi0C,MAAO,CAAC,2BAEZ,CACI9zD,KAAM,yBACN6f,KAAM,0BACNi0C,MAAO,CAAC,sBAAuB,4BAEnC,CACI9zD,KAAM,uBACN6f,KAAM,wBAEV,CACI7f,KAAM,sBACN6f,KAAM,qBACNi0C,MAAO,CAAC,aAAc,2BAE1B,CACI9zD,KAAM,4BACN6f,KAAM,0BACNi0C,MAAO,CAAC,kBAIpB,CACIA,MAAO,CAAC,+BAAgC,gBACxCj0C,KAAM,CAAC,aACPq9B,KAAM,qBACNl9C,KAAM,mBACNne,GAAI,cAER,CAIIiyE,MAAO,CAAC,sBACRj0C,KAAM,CAAC,oBAAqB,YAC5Bq9B,KAAM,iBACNl9C,KAAM,iBACN48B,SAAU,CACN,CACI58B,KAAM,iBACN6f,KAAM,CAAC,oBAAqB,YAC5Bi0C,MAAO,CAAC,oBAEZ,CACI9zD,KAAM,gBACN6f,KAAM,CAAC,oBAAqB,mBAC5Bi0C,MAAO,CAAC,gBAEZ,CACI9zD,KAAM,aACN6f,KAAM,CAAC,oBAAqB,QAC5Bi0C,MAAO,CAAC,gBAEZ,CACI9zD,KAAM,eACN6f,KAAM,CAAC,oBAAqB,UAC5Bi0C,MAAO,CAAC,kBAEZ,CACI9zD,KAAM,iBACN6f,KAAM,CAAC,oBAAqB,YAC5Bi0C,MAAO,CAAC,gBAEZ,CACI9zD,KAAM,wBACN6f,KAAM,CAAC,oBAAqB,mBAC5Bi0C,MAAO,CAAC,gBAEZ,CACI9zD,KAAM,yBACN6f,KAAM,CAAC,oBAAqB,oBAC5Bi0C,MAAO,CAAC,gBAEZ,CACI9zD,KAAM,kBACN6f,KAAM,CAAC,oBAAqB,aAC5Bi0C,MAAO,CAAC,gBAEZ,CACI9zD,KAAM,wBACN6f,KAAM,CAAC,oBAAqB,mBAC5Bi0C,MAAO,CAAC,gBAEZ,CACI9zD,KAAM,gBACN6f,KAAM,CAAC,sBAAuB,YAC9Bi0C,MAAO,CAAC,gBAEZ,CACI9zD,KAAM,4BACN6f,KAAM,CAAC,sBAAuB,uBAC9Bi0C,MAAO,CAAC,gBAEZ,CACI9zD,KAAM,mBACN6f,KAAM,CAAC,sBAAuB,eAC9Bi0C,MAAO,CAAC,gBAEZ,CACI9zD,KAAM,mBACN6f,KAAM,CAAC,sBAAuB,eAC9Bi0C,MAAO,CAAC,gBAEZ,CACI9zD,KAAM,yBACN6f,KAAM,CAAC,sBAAuB,qBAC9Bi0C,MAAO,CAAC,cAAe,gBAE3B,CACI9zD,KAAM,yBACN6f,KAAM,CAAC,sBAAuB,qBAC9Bi0C,MAAO,CAAC,cAAe,gBAE3B,CACI9zD,KAAM,kBACN6f,KAAM,CAAC,sBAAuB,cAC9Bi0C,MAAO,CAAC,gBAEZ,CACI9zD,KAAM,gBACN6f,KAAM,CAAC,sBAAuB,YAC9Bi0C,MAAO,CAAC,gBAEZ,CACI9zD,KAAM,0BACN6f,KAAM,CAAC,sBAAuB,sBAC9Bi0C,MAAO,CAAC,gBAEZ,CACI9zD,KAAM,qBACN6f,KAAM,CAAC,oBAAqB,iBAC5Bi0C,MAAO,CAAC,gBAEZ,CACI9zD,KAAM,kBACN6f,KAAM,CAAC,oBAAqB,cAC5Bi0C,MAAO,CAAC,gBAEZ,CACI9zD,KAAM,mBACN6f,KAAM,CAAC,oBAAqB,eAC5Bi0C,MAAO,CAAC,gBAEZ,CACI9zD,KAAM,qBACN6f,KAAM,CAAC,oBAAqB,gBAC5Bi0C,MAAO,CAAC,gBAEZ,CACI9zD,KAAM,WACN6f,KAAM,CAAC,sBAAuB,OAC9Bi0C,MAAO,CAAC,kBAIpB,CACIA,MAAO,CAAC,qBAAsB,eAC9Bj0C,KAAM,CAAC,qCACPq9B,KAAM,sBACNl9C,KAAM,oBACN48B,SAAU,IAEd,CACIk3B,MAAO,CAAC,qBAAsB,eAC9Bj0C,KAAM,CAAC,kCACPq9B,KAAM,mBACNl9C,KAAM,oBACN48B,SAAU,IAEd,CACIk3B,MAAO,CAAC,qBAAsB,eAC9Bj0C,KAAM,CAAC,UACPq9B,KAAM,kBACNl9C,KAAM,cACN48B,SAAU,IAEd,CAIIk3B,MAAO,CAAC,eACRj0C,KAAM,CAAC,YACPq9B,KAAM,qBACNl9C,KAAM,gBACNne,GAAI,WACJ+6C,SAAU,CACN,CACI58B,KAAM,mBACN6f,KAAM,uBAEV,CACI7f,KAAM,yBACN6f,KAAM,6BACNi0C,MAAO,CAAC,mCAEZ,CACI9zD,KAAM,wBACN6f,KAAM,wBACNi0C,MAAO,CAAC,uBAEZ,CAEI9zD,KAAM,8BACN6f,KAAM,8BACNi0C,MAAO,CAAC,gCAEZ,CACI9zD,KAAM,iBACN6f,KAAM,iBACNm0C,UAAW,CAAC,uBACZF,MAAO,CAAC,yBAEZ,CACI9zD,KAAM,oBACN6f,KAAM,oBACNi0C,MAAO,CAAC,yBAEZ,CACI9zD,KAAM,mBACN6f,KAAM,mBACNi0C,MAAO,CAAC,cAAe,WAAY,kCAEvC,CACI9zD,KAAM,mBACN6f,KAAM,sBAIlB,CAEIi0C,MAAO,CAAC,oCAAqC,uBAC7Cj0C,KAAM,CAAC,gBACPq9B,KAAM,oBACNl9C,KAAM,oBACNne,GAAI,gBAER,CACIiyE,MAAO,CAAC,mCAAoC,uBAC5Cj0C,KAAM,CAAC,iBACPq9B,KAAM,oBACNl9C,KAAM,gBACNne,GAAI,WACJ+6C,SAAU,CACN,CACI58B,KAAM,gBACN6f,KAAM,iBAEV,CACI7f,KAAM,gCACN6f,KAAM,2BACNi0C,MAAO,CAAC,iBAAkB,gBAAiB,4BAIvD,CACIA,MAAO,CAAC,iBAAkB,eAC1Bj0C,KAAM,CAAC,SACPq9B,KAAM,uBACNl9C,KAAM,aACNne,GAAI,SAER,CACIiyE,MAAO,CAAC,WAAY,eACpBj0C,KAAM,CAAC,gBACPq9B,KAAM,mBACNl9C,KAAM,oBACNne,GAAI,eACJ+6C,SAAU,CACN,CACI58B,KAAM,wBACN6f,KAAM,sBAEV,CACI7f,KAAM,2BACN6f,KAAM,uBAEV,CACI7f,KAAM,yBACN6f,KAAM,oBACNi0C,MAAO,CAAC,gBAEZ,CACI9zD,KAAM,kCACN6f,KAAM,6BACNi0C,MAAO,CAAC,uBAIpB,CACIA,MAAO,CAAC,eACRj0C,KAAM,CAAC,eACPq9B,KAAM,qBACNl9C,KAAM,cACNne,GAAI,cACJ+6C,SAAU,CACN,CACI58B,KAAM,cACN6f,KAAM,qBAEV,CACI7f,KAAM,oBACN6f,KAAM,gCAEV,CACI7f,KAAM,OACN6f,KAAM,oBAEV,CACI7f,KAAM,eACN6f,KAAM,0BACNi0C,MAAO,CAAC,YAEZ,CACI9zD,KAAM,QACN6f,KAAM,qBAEV,CACI7f,KAAM,eACN6f,KAAM,4BAEV,CACI7f,KAAM,gBACN6f,KAAM,6BAEV,CACI7f,KAAM,WACN6f,KAAM,uBAEV,CACI7f,KAAM,YACN6f,KAAM,yBAEV,CACI7f,KAAM,cACN6f,KAAM,0BAEV,CACI7f,KAAM,YACN6f,KAAM,wBAEV,CACI7f,KAAM,WACN6f,KAAM,wBAEV,CACI7f,KAAM,UACN6f,KAAM,sBACNi0C,MAAO,CAAC,qBAEZ,CAEI9zD,KAAM,SACN6f,KAAM,yBA83BlBq0C,YAx3BU,CACV,CAEIhX,KAAM,iBACNl9C,KAAM,iBACN6f,KAAM,QACNt+B,MAAO,WACPM,GAAI,WACJiyE,MAAO,CACH,eACA,WACA,2DACA,0BACA,gCAEJl3B,SAAU,CACN,CACI58B,KAAM,oBACN6f,KAAM,CAAC,iBACPi0C,MAAO,CAAC,gBACR7uB,MAAO,YAEX,CACIjlC,KAAM,iBACN6f,KAAM,CAAC,4BACPi0C,MAAO,CACH,eACA,WACA,2DACA,2BAEJ7uB,MAAO,cAInB,CACIiY,KAAM,iBACNl9C,KAAM,oBACN6f,KAAM,QACNt+B,MAAO,WACPM,GAAI,WACJiyE,MAAO,CACH,eACA,eACA,+BACA,+BACA,0BACA,gCAEJl3B,SAAU,CACN,CACI58B,KAAM,oBACN6f,KAAM,CAAC,iBACPi0C,MAAO,CAAC,gBACR7uB,MAAO,YAEX,CACIjlC,KAAM,oBACN6f,KAAM,CAAC,mBACPi0C,MAAO,CACH,eACA,eACA,+BACA,+BACA,2BAEJ7uB,MAAO,cAInB,CACIiY,KAAM,iBACNl9C,KAAM,oBACN6f,KAAM,QACNt+B,MAAO,WACPM,GAAI,WACJiyE,MAAO,CACH,gBACA,eACA,0BACA,gCAEJl3B,SAAU,CACN,CACI58B,KAAM,oBACN6f,KAAM,CAAC,iBACPi0C,MAAO,CAAC,gBACR7uB,MAAO,YAEX,CACIjlC,KAAM,oBACN6f,KAAM,CAAC,mBACPi0C,MAAO,CAAC,gBAAiB,eAAgB,2BACzC7uB,MAAO,YAEX,CACIjlC,KAAM,2BACN6f,KAAM,CAAC,4BACPi0C,MAAO,CACH,gBACA,WACA,8DACA,2BAEJ7uB,MAAO,cAInB,CAEIiY,KAAM,iBACNl9C,KAAM,iBACN6f,KAAM,CAAC,4BACPh+B,GAAI,WACJiyE,MAAO,CACH,eACA,WACA,2DACA,0BACA,iCAEJl3B,SAAU,CACN,CACI58B,KAAM,oBACN6f,KAAM,CAAC,iBACPi0C,MAAO,CAAC,iBAEZ,CACI9zD,KAAM,iBACN6f,KAAM,CAAC,4BACPi0C,MAAO,CACH,eACA,WACA,2DACA,8BAKhB,CACI5W,KAAM,iBACNl9C,KAAM,oBACN6f,KAAM,CAAC,mBACPh+B,GAAI,WACJiyE,MAAO,CACH,eACA,eACA,+BACA,+BACA,0BACA,iCAEJl3B,SAAU,CACN,CACI58B,KAAM,oBACN6f,KAAM,CAAC,iBACPi0C,MAAO,CAAC,iBAEZ,CACI9zD,KAAM,oBACN6f,KAAM,CAAC,mBACPi0C,MAAO,CACH,eACA,eACA,+BACA,+BACA,8BAKhB,CACI5W,KAAM,iBACNl9C,KAAM,oBACN6f,KAAM,CAAC,mBACPh+B,GAAI,WACJiyE,MAAO,CACH,gBACA,eACA,0BACA,iCAEJl3B,SAAU,CACN,CACI58B,KAAM,oBACN6f,KAAM,CAAC,iBACPi0C,MAAO,CAAC,iBAEZ,CACI9zD,KAAM,oBACN6f,KAAM,CAAC,mBACPi0C,MAAO,CAAC,gBAAiB,eAAgB,4BAE7C,CACI9zD,KAAM,2BACN6f,KAAM,CAAC,4BACPi0C,MAAO,CACH,gBACA,WACA,8DACA,8BAKhB,CACI5W,KAAM,oBACNl9C,KAAM,oBACN6f,KAAM,CAAC,qBACPh+B,GAAI,aACJiyE,MAAO,CAAC,YAAY,iBAExB,CAEI5W,KAAM,6BACNl9C,KAAM,yBACN6f,KAAM,QACNt+B,MAAO,gBACPM,GAAI,gBACJiyE,MAAO,CAAC,oBAAqB,+CAEjC,CAEI5W,KAAM,6BACNl9C,KAAM,yBACN6f,KAAM,CAAC,qBACPh+B,GAAI,gBACJiyE,MAAO,CAAC,oBAAqB,gDAEjC,CAEI5W,KAAM,6BACNl9C,KAAM,aACN6f,KAAM,QACNt+B,MAAO,QACPM,GAAI,QACJiyE,MAAO,CAAC,YAAa,uCAEzB,CAEI5W,KAAM,6BACNl9C,KAAM,aACN6f,KAAM,CAAC,gBACPh+B,GAAI,QACJiyE,MAAO,CAAC,YAAa,wCAEzB,CACI5W,KAAM,gBACNl9C,KAAM,mBACN6f,KAAM,QACNt+B,MAAO,UACPM,GAAI,UACJiyE,MAAO,CAAC,cAAe,WAAY,2BACnCl3B,SAAU,CACN,CACI58B,KAAM,4BACN6f,KAAM,CAAC,yBACPi0C,MAAO,CAAC,cAAe,WAAY,4BAEvC,CACI9zD,KAAM,0BACN6f,KAAM,CAAC,gBACPi0C,MAAO,CAAC,cAAe,WAAY,8BAI/C,CACI5W,KAAM,sBACNl9C,KAAM,gBACN6f,KAAM,CAAC,YACPh+B,GAAI,OACJiyE,MAAO,CAAC,oBAEZ,CAGI5W,KAAM,mBACNl9C,KAAM,oBACN6f,KAAM,CAAC,iBACPh+B,GAAI,WACJiyE,MAAO,CAAC,eAAgB,oBAAqB,+CAC7Cl3B,SAAU,CACN,CACI58B,KAAM,oBACN6f,KAAM,CAAC,iBACPi0C,MAAO,CAAC,gBACRG,YAAY,GAEhB,CACIj0D,KAAM,iBACN6f,KAAM,CAAC,4BACPi0C,MAAO,CACH,cACA,WACA,2DACA,2BAEJG,YAAY,GAEhB,CACIj0D,KAAM,oBACN6f,KAAM,CAAC,mBACPi0C,MAAO,CACH,cACA,eACA,+BACA,+BACA,2BAEJG,YAAY,GAEhB,CACIj0D,KAAM,oBACN6f,KAAM,CAAC,mBACPi0C,MAAO,CAAC,eAAgB,eAAgB,2BACxCG,YAAY,KAIxB,CAEI/W,KAAM,mBACNl9C,KAAM,oBACN6f,KAAM,QACNt+B,MAAO,WACPM,GAAI,WACJiyE,MAAO,CACH,eACA,oBACA,+BACA,iBAEJl3B,SAAU,CACN,CACI58B,KAAM,oBACN6f,KAAM,CAAC,iBACPi0C,MAAO,CAAC,gBACRG,YAAY,EACZhvB,MAAO,YAEX,CACIjlC,KAAM,iBACN6f,KAAM,CAAC,4BACPi0C,MAAO,CACH,cACA,WACA,2DACA,2BAEJG,YAAY,EACZhvB,MAAO,YAEX,CACIjlC,KAAM,oBACN6f,KAAM,CAAC,mBACPi0C,MAAO,CACH,cACA,eACA,+BACA,+BACA,2BAEJG,YAAY,EACZhvB,MAAO,YAEX,CACIjlC,KAAM,oBACN6f,KAAM,CAAC,mBACPi0C,MAAO,CAAC,eAAgB,eAAgB,2BACxCG,YAAY,EACZhvB,MAAO,cAInB,CAGIiY,KAAM,mBACNl9C,KAAM,oBACN6f,KAAM,CAAC,iBACPh+B,GAAI,WACJiyE,MAAO,CACH,eACA,oBACA,eACA,iCAEJl3B,SAAU,CACN,CACI58B,KAAM,oBACN6f,KAAM,CAAC,iBACPi0C,MAAO,CAAC,gBACRG,YAAY,GAEhB,CACIj0D,KAAM,iBACN6f,KAAM,CAAC,4BACPi0C,MAAO,CACH,cACA,WACA,2DACA,2BAEJG,YAAY,GAEhB,CACIj0D,KAAM,oBACN6f,KAAM,CAAC,mBACPi0C,MAAO,CACH,cACA,eACA,+BACA,+BACA,2BAEJG,YAAY,GAEhB,CACIj0D,KAAM,oBACN6f,KAAM,CAAC,mBACPi0C,MAAO,CAAC,eAAgB,eAAgB,2BACxCG,YAAY,KAIxB,CAEI/W,KAAM,mBACNl9C,KAAM,oBACN6f,KAAM,QACNt+B,MAAO,WACPM,GAAI,WACJiyE,MAAO,CACH,eACA,oBACA,eACA,gCAEJl3B,SAAU,CACN,CACI58B,KAAM,oBACN6f,KAAM,CAAC,iBACPi0C,MAAO,CAAC,gBACRG,YAAY,EACZhvB,MAAO,YAEX,CACIjlC,KAAM,iBACN6f,KAAM,CAAC,4BACPi0C,MAAO,CACH,cACA,WACA,2DACA,2BAEJG,YAAY,EACZhvB,MAAO,YAEX,CACIjlC,KAAM,oBACN6f,KAAM,CAAC,mBACPi0C,MAAO,CACH,cACA,eACA,+BACA,+BACA,2BAEJG,YAAY,EACZhvB,MAAO,YAEX,CACIjlC,KAAM,oBACN6f,KAAM,CAAC,mBACPi0C,MAAO,CAAC,eAAgB,eAAgB,2BACxCG,YAAY,EACZhvB,MAAO,cAInB,CAEIiY,KAAM,mBACNl9C,KAAM,oBACN6f,KAAM,QACNt+B,MAAO,WACPM,GAAI,WACJiyE,MAAO,CAAC,eAAgB,oBAAqB,kBAEjD,CACI5W,KAAM,qBACNl9C,KAAM,uBACN6f,KAAM,CAAC,oBACPh+B,GAAI,cACJiyE,MAAO,CAAC,oBAEZ,CACI5W,KAAM,mBACNl9C,KAAM,cACN6f,KAAM,CAAC,8BAA+B,MAAO,MAC7Ch+B,GAAI,KACJiyE,MAAO,CAAC,WAEZ,CACI5W,KAAM,qBACNl9C,KAAM,eACN6f,KAAM,CAAC,8BAA+B,MAAO,OAC7Ch+B,GAAI,MACJiyE,MAAO,CAAC,YAEZ,CACI5W,KAAM,mBACNl9C,KAAM,sBACN6f,KAAM,CAAC,mBACPh+B,GAAI,aACJiyE,MAAO,CAAC,mBAEZ,CACI5W,KAAM,iBACNl9C,KAAM,kBACN6f,KAAM,CAAC,yBACPh+B,GAAI,WACJiyE,MAAO,CACH,eACA,oDACA,iBAGR,CACI5W,KAAM,iBACNl9C,KAAM,kBACN6f,KAAM,QACNt+B,MAAO,SACPM,GAAI,SACJiyE,MAAO,CAAC,aAAc,iBAE1B,CACI5W,KAAM,sBACNl9C,KAAM,oBACN6f,KAAM,QACNt+B,MAAO,WACPM,GAAI,WACJiyE,MAAO,CAAC,iBAEZ,CACI5W,KAAM,kBACNl9C,KAAM,gBACN6f,KAAM,CAAC,aACPh+B,GAAI,OACJiyE,MAAO,CAAC,aAEZ,CAEI5W,KAAM,qBACNl9C,KAAM,mBACN6f,KAAM,QACNt+B,MAAO,UACPM,GAAI,UACJiyE,MAAO,CAAC,cAAe,0CAE3B,CAEI5W,KAAM,qBACNl9C,KAAM,mBACN6f,KAAM,CAAC,gBACPh+B,GAAI,UACJiyE,MAAO,CAAC,cAAe,2CAE3B,CACI5W,KAAM,mBACNl9C,KAAM,uBACN6f,KAAM,CAAC,gCACPh+B,GAAI,cACJiyE,MAAO,CAAC,oBAEZ,CACI5W,KAAM,mBACNl9C,KAAM,eACN6f,KAAM,QACNt+B,MAAO,WACPM,GAAI,WACJiyE,MAAO,CAAC,iBAEZ,CACI5W,KAAM,qBACNl9C,KAAM,qBACN6f,KAAM,CAAC,qBACPh+B,GAAI,WACJiyE,MAAO,CAAC,kCAEZ,CAEI5W,KAAM,gCACNl9C,KAAM,oBACN6f,KAAM,QACNt+B,MAAO,WACPM,GAAI,WACJiyE,MAAO,CAAC,eAAgB,2CAE5B,CAEI5W,KAAM,gCACNl9C,KAAM,oBACN6f,KAAM,CAAC,iBACPh+B,GAAI,WACJiyE,MAAO,CAAC,eAAgB,4CAE5B,CACI5W,KAAM,oBACNl9C,KAAM,mBACN6f,KAAM,CAAC,oBACPh+B,GAAI,eACJiyE,MAAO,CAAC,oCAAqC,cAAe,wBAEhE,CACI5W,KAAM,oBACNl9C,KAAM,mBACN6f,KAAM,CAAC,gBACPh+B,GAAI,UACJiyE,MAAO,CACH,mCACA,2BACA,wBAGR,CAEI5W,KAAM,kBACNl9C,KAAM,oBACN6f,KAAM,CAAC,gBACPh+B,GAAI,eACJiyE,MAAO,CAAC,sBAAuB,kCAEnC,CAEI9zD,KAAM,mBACN6f,KAAM,CAAC,iBAAkB,mBACzBh+B,GAAI,UACJiyE,MAAO,CAAC,qBAAsB,wBAElC,CACI9zD,KAAM,oBACN6f,KAAM,CAAC,iBAAkB,YACzBh+B,GAAI,WACJiyE,MAAO,CAAC,qBAAsB,iBAElC,CACI9zD,KAAM,2BACN6f,KAAM,CAAC,iBAAkB,mBACzBh+B,GAAI,kBACJiyE,MAAO,CAAC,qBAAsB,wBAElC,CACI9zD,KAAM,4BACN6f,KAAM,CAAC,iBAAkB,oBACzBh+B,GAAI,mBACJiyE,MAAO,CAAC,qBAAsB,yBAElC,CACI9zD,KAAM,qBACN6f,KAAM,CAAC,iBAAkB,aACzBh+B,GAAI,YACJiyE,MAAO,CAAC,qBAAsB,kBAElC,CACI9zD,KAAM,mBACN6f,KAAM,CAAC,iBAAkB,QACzBh+B,GAAI,UACJiyE,MAAO,CAAC,qBAAsB,WAAY,cAAe,mBAE7D,CACI9zD,KAAM,kBACN6f,KAAM,CAAC,iBAAkB,UACzBh+B,GAAI,SACJiyE,MAAO,CAAC,qBAAsB,aAAc,cAAe,mBAE/D,CACI9zD,KAAM,2BACN6f,KAAM,QACNt+B,MAAO,kBACPM,GAAI,kBACJiyE,MAAO,CAAC,qBAAsB,wBAElC,CACI9zD,KAAM,wBACN6f,KAAM,CAAC,iBAAkB,gBACzBh+B,GAAI,eACJiyE,MAAO,CAAC,qBAAsB,qBAElC,CACI9zD,KAAM,qBACN6f,KAAM,CAAC,2BACPh+B,GAAI,gBACJiyE,MAAO,CAAC,uBAEZ,CACI9zD,KAAM,kBACN6f,KAAM,CAAC,qBACPh+B,GAAI,YACJiyE,MAAO,CAAC,qBAAsB,cAAe,iBAEjD,CACI9zD,KAAM,iBACN6f,KAAM,QACNt+B,MAAO,QACPM,GAAI,QACJiyE,MAAO,CAAC,qBAAsB,gBAElC,CAEI5W,KAAM,gBACNl9C,KAAM,2BACNne,GAAI,kBACJg+B,KAAM,CAAC,4BACPi0C,MAAO,CAAC,cAAe,sBAE3B,CACI5W,KAAM,qBACNl9C,KAAM,kBACNne,GAAI,aACJg+B,KAAM,2JACNi0C,MAAO,CAAC,cAAe,oCAE3B,CACI5W,KAAM,6BACNl9C,KAAM,2CACNne,GAAI,qBACJg+B,KAAM,CAAC,8BACPi0C,MAAO,CAAC,oBAEZ,CAEI5W,KAAM,iBACNl9C,KAAM,mCACN6f,KAAM,QACNh+B,GAAI,0BACJN,MAAO,0BACPuyE,MAAO,CAAC,0BAA2B,uDAEvC,CAEI5W,KAAM,iBACNl9C,KAAM,mCACN6f,KAAM,CAAC,+BACPh+B,GAAI,0BACJiyE,MAAO,CAAC,0BAA2B,wDAEvC,CACI5W,KAAM,iBACNl9C,KAAM,6BACN6f,KAAM,QACNt+B,MAAO,oBACPM,GAAI,oBACJiyE,MAAO,CAAC,oBAAqB,0BAEjC,CACI5W,KAAM,iBACNl9C,KAAM,oBACN6f,KAAM,CAAC,iBACPh+B,GAAI,WACJiyE,MAAO,CAAC,iBAEZ,CACI5W,KAAM,mBACNl9C,KAAM,gBACN6f,KAAM,QACNt+B,MAAO,OACPM,GAAI,OACJiyE,MAAO,CAAC,WAAY,iBAExB,CACI5W,KAAM,sBACNl9C,KAAM,gBACN6f,KAAM,QACNt+B,MAAO,OACPM,GAAI,OACJiyE,MAAO,CAAC,WAAY,kBAExB,CACI5W,KAAM,oBACNl9C,KAAM,kBACN6f,KAAM,QACNt+B,MAAO,SACPM,GAAI,SACJiyE,MAAO,CAAC,oBAEZ,CACI5W,KAAM,mBACNl9C,KAAM,uBACN6f,KAAM,QACNt+B,MAAO,WACPM,GAAI,WACJiyE,MAAO,CAAC,WAAY,iBAiGxBK,kBA7FgB,CAChB,CACIC,MAAO,6BACPN,MAAO,CAAC,uBAEZ,CACIM,MAAO,gBACPN,MAAO,CAAC,cAAe,aAE3B,CACIM,MAAO,WACPN,MAAO,CAAC,cAAe,YAE3B,CACIM,MAAO,2BACPN,MAAO,CACH,cACA,WACA,6DAGR,CACIM,MAAO,kBACPN,MAAO,CACH,cACA,eACA,+BACA,iCAGR,CACIM,MAAO,mBACPN,MAAO,CAAC,2BAA4B,aAExC,CACIM,MAAO,4BACPN,MAAO,CAAC,2BAA4B,aAExC,CACIM,MAAO,WACPN,MAAO,CAAC,8CAsDZO,mBAlDiB,CACjBC,SAAU,CACNxoE,QAAS,CACLS,SAAU,CACNgtB,MAAM,MA+ClBg7C,eAzCa,CACbC,UAAW,CACP,CACIV,MAAO,CAAC,gCACRW,aAAc,CACV,SACA,aACA,sBACA,qBACA,uBACA,oBACA,iBACA,UACA,qBAIZC,UAAW,CACP,CACIZ,MAAO,CAAC,iCACRW,aAAc,CAAC,cAsBvBE,mBAjBiB,CACjB,YACA,iBACA,4BACA,0BACA,cACA,iBACA,kBACA;;UCziEW,CACXC,gBAAiB,CACb,CACI3zE,MAAO,oBAEX,CACI8J,KAAM,mBACN2f,QAAQ,EACRzpB,MAAO,oCACP6yE,MAAO,IAEX,CACI7yE,MAAO,yBACP6yE,MAAO,CAAC,uBACR/0D,UAAW,8CAEf,CACI9d,MAAO,8BACPypB,QAAQ,EACRmqD,WAAY,CAAC,uBACbC,YAAa,CAAC,wBACdhB,MAAO,CAAC,yBAEZ,CACI/oE,KAAM,yBACN9J,MAAO,gCACP6yE,MAAO,CAAC,yBAEZ,CACI7yE,MAAO,oCACP4zE,WAAY,CAAC,8BACbC,YAAa,CAAC,+BACdhB,MAAO,CAAC,yBAEZ,CACI7yE,MAAO,uCACPypB,QAAQ,EACRmqD,WAAY,CAAC,gCACbC,YAAa,CAAC,iCACdhB,MAAO,CAAC,yBAEZ,CACI7yE,MAAO,+BACPypB,QAAQ,EACRmqD,WAAY,CAAC,gCACbC,YAAa,CAAC,iCACdhB,MAAO,CAAC,2BAEZ,CACI7yE,MAAO,sBACPypB,QAAQ,EACRjpB,KAAM,aACNozE,WAAY,CAAC,qCACbC,YAAa,CAAC,sCACdhB,MAAO,CAAC,2BAEZ,CACI7yE,MAAO,qCACP4zE,WAAY,CAAC,8BACbC,YAAa,CAAC,+BACdhB,MAAO,CAAC,wBAEZ,CACI7yE,MAAO,4BACP4zE,WAAY,CAAC,gCACbC,YAAa,CAAC,iCACdhB,MAAO,CAAC,uBAAwB,gCAEpC,CACI/oE,KAAM,yBACNwkD,QAAS,CACLxkD,KAAM,0BAEV9J,MAAO,iDACP8d,UAAW,4CACX+0D,MAAO,CAAC,sBAAuB,qBAC/BiB,kBAAmB,mCAEvB,CACIhqE,KAAM,yBACNwkD,QAAS,CACLxkD,KAAM,0BAEV9J,MAAO,iDACP8d,UAAW,4CACX+0D,MAAO,CAAC,sBAAuB,qBAC/BiB,kBAAmB,mCAEvB,CACI9zE,MAAO,gCACP8d,UAAW,4CACXwwC,QAAS,CACLA,QAAS,eACTylB,OAAQ,EACRC,WAAY,IACZ/mB,KAAM,KAEV4lB,MAAO,CAAC,uBAEZ,CACI/oE,KAAM,yBACN9J,MAAO,0CACP6yE,MAAO,CAAC,uBACRppD,QAAQ,IAGhBwqD,oBAAqB,CACjB,CACIj0E,MAAO,wBAEX,CACI8J,KAAM,0BACN2f,QAAQ,EACRzpB,MAAO,2CACP6yE,MAAO,CAAC,uBACRqB,eAAe,EACfC,uBAAuB,EACvBC,gBAAiB,CACbvB,MAAO,CAAC,4CACR7yE,MAAO,gEAEX8d,UAAW,wDAEf,CACI9d,MAAO,iBACP4H,QAAS,CACL,CACIY,SAAU,CAAC,kBAAmB,0BAC9BxI,MAAO,eAEX,CACIwI,SAAU,CAAC,iBAAkB,0BAC7BxI,MAAO,cAEX,CACIwI,SAAU,CAAC,kBAAmB,yBAC9BxI,MAAO,+BAEX,CACIwI,SAAU,CAAC,iBAAkB,yBAC7BxI,MAAO,wBAGfQ,KAAM,OACNqyE,MAAO,CAAC,uBACRqB,eAAe,GAEnB,CACIl0E,MAAO,oBACP4zE,WAAY,CAAC,qBACbC,YAAa,CAAC,sBACdrzE,KAAM,UACNqyE,MAAO,CAAC,sBAAuB,0CAEnC,CACI7yE,MAAO,iCACPypB,QAAQ,EACR3L,UAAW,qBACX81D,WAAY,CAAC,iBACbC,YAAa,CAAC,kBACdhB,MAAO,CAAC,uDAAwD,UAEpE,CACI7yE,MAAO,qBACP4zE,WAAY,CAAC,wBACbC,YAAa,CAAC,yBACdrzE,KAAM,eACNqyE,MAAO,CAAC,wBAEZ,CACI7yE,MAAO,0BACP4zE,WAAY,CAAC,2BACbC,YAAa,CAAC,4BACdhB,MAAO,CAAC,sBAAuB,yBAEnC,CACI7yE,MAAO,oCACP4zE,WAAY,CAAC,oCAAqC,2BAClDC,YAAa,CAAC,qCAAsC,4BACpDhB,MAAO,CAAC,uBACR/0D,UAAW,8CACXo2D,eAAe,EACfC,uBAAuB,GAE3B,CACIn0E,MAAO,4CACP4zE,WAAY,CAAC,mCACbC,YAAa,CAAC,oCACdhB,MAAO,CACH,sBACA,oBACA,gCACA,sCAGR,CACI7yE,MAAO,uBACPypB,QAAQ,EACRmqD,WAAY,CAAC,2BACbC,YAAa,CAAC,iCAAkC,4BAChDhB,MAAO,CAAC,mBAAoB,kCAEhC,CACI7yE,MAAO,uBACPypB,QAAQ,EACRmqD,WAAY,CAAC,wBACbC,YAAa,CAAC,yBACdhB,MAAO,CAAC,mBAAoB,0BAEhC,CACI/oE,KAAM,uBACN2f,QAAQ,EACRzpB,MAAO,iCACP6yE,MAAO,CAAC,mBAAoB,sBAEhC,CACI7yE,MAAO,iCACPypB,QAAQ,EACRmqD,WAAY,CAAC,4CACbC,YAAa,CACT,gCACA,6CAEJhB,MAAO,CAAC,wBAEZ,CACI7yE,MAAO,sCACPypB,QAAQ,EACRmqD,WAAY,CAAC,yCACbC,YAAa,CAAC,0CACdhB,MAAO,CAAC,wBAEZ,CACI7yE,MAAO,kBACPypB,QAAQ,EACR7hB,QAAS,CACL,CACIY,SAAU,CAAC,mBAAoB,yBAC/BxI,MAAO,iCAEX,CACIwI,SAAU,CAAC,kBAAmB,yBAC9BxI,MAAO,+BAEX,CACIwI,SAAU,CAAC,mBAAoB,wBAC/BxI,MAAO,qCAGfQ,KAAM,QACNqyE,MAAO,CAAC,wBAEZ,CACI7yE,MAAO,uBACPypB,QAAQ,EACR7hB,QAAS,CACL,CACIY,SAAU,CAAC,wBAAyB,8BACpCxI,MAAO,eAEX,CACIwI,SAAU,CAAC,uBAAwB,8BACnCxI,MAAO,oCAEX,CACIwI,SAAU,CAAC,wBAAyB,6BACpCxI,MAAO,0CAGf6yE,MAAO,CAAC,wBAEZ,CACI7yE,MAAO,oBACP4zE,WAAY,CAAC,qBACbC,YAAa,CAAC,sBACdrzE,KAAM,cACNqyE,MAAO,CAAC,uBACRqB,eAAe,GAEnB,CACIl0E,MAAO,4BACPypB,QAAQ,EACRmqD,WAAY,CAAC,6BACbC,YAAa,CAAC,8BACdhB,MAAO,CAAC,YAEZ,CACI7yE,MAAO,qBACPypB,QAAQ,EACRmqD,WAAY,CAAC,qBACbC,YAAa,CAAC,sBACdrzE,KAAM,WACNqyE,MAAO,CAAC,wBAEZ,CACI7yE,MAAO,yCACPypB,QAAQ,EACRmqD,WAAY,CAAC,iCACbC,YAAa,CAAC,kCACdhB,MAAO,CAAC,oBAAqB,sBAAuB,yBAExD,CACI7yE,MAAO,uBACP4zE,WAAY,CAAC,wBACbC,YAAa,CAAC,yBACdrzE,KAAM,cACNqyE,MAAO,CAAC,sBAAuB,gCAAiC,yBAEpE,CACI7yE,MAAO,6BACP4zE,WAAY,CAAC,kBACbC,YAAa,CAAC,mBACd/1D,UAAW,6CACXwwC,QAAS,CACL9tD,KAAM,WACNC,MAAO,QACP6tD,QAAS,CAAEtuD,MAAO,gBAAiBhE,MAAO,KAE9C62E,MAAO,CAAC,uBACRqB,eAAe,EACfC,uBAAuB,GAE3B,CACIn0E,MAAO,6BACP4zE,WAAY,CAAC,kBACbC,YAAa,CAAC,mBACd/1D,UAAW,6CACX+0D,MAAO,CAAC,uBACRqB,eAAe,GAEnB,CACIl0E,MAAO,gCACP4zE,WAAY,CAAC,qBACbC,YAAa,CAAC,sBACd/1D,UAAW,gDACX+0D,MAAO,CAAC,uBACRsB,uBAAuB,EACvBD,eAAe,GAEnB,CACIl0E,MAAO,yBACPypB,QAAQ,EACRmqD,WAAY,CAAC,0BACbC,YAAa,CAAC,2BACdhB,MAAO,CAAC,wBAGZ,CACI7yE,MAAO,0CACPypB,QAAQ,EACRmqD,WAAY,CAAC,+BACbC,YAAa,CAAC,gCACdhB,MAAO,CAAC,UAAW,+BAEvB,CACI7yE,MAAO,oBACPq0E,WAAY,gBACZC,YAAa,cACbV,WAAY,CAAC,eACbC,YAAa,CAAC,gBACdrzE,KAAM,cACNqyE,MAAO,CAAC,WAAY,yBAExB,CACI7yE,MAAO,qBACPypB,QAAQ,EACR4qD,WAAY,iBACZC,YAAa,eACbV,WAAY,CAAC,YACbC,YAAa,CAAC,aACdrzE,KAAM,WACNqyE,MAAO,CAAC,WAAY,yBAExB,CACI7yE,MAAO,kBACPq0E,WAAY,cACZC,YAAa,eACbV,WAAY,CAAC,SACbC,YAAa,CAAC,UACdrzE,KAAM,QACNqyE,MAAO,CAAC,WAAY,yBAExB,CACI7yE,MAAO,yBACPypB,QAAQ,EACRmqD,WAAY,CAAC,0BACbC,YAAa,CAAC,2BACdrzE,KAAM,gBACNqyE,MAAO,CAAC,wBAEZ,CACI7yE,MAAO,sCACP4zE,WAAY,CAAC,uCACbC,YAAa,CAAC,wCACdhB,MAAO,CAAC,gBAAiB,kCAE7B,CACI7yE,MAAO,wCACP4H,QAAS,CACL,CACIY,SAAU,CACN,+BACA,8BACA,mCAEJxI,MAAO,oCAEX,CACIwI,SAAU,CACN,+BACA,6BACA,mCAEJxI,MAAO,6BACPu0E,kBAAkB,GAEtB,CACI/rE,SAAU,CACN,8BACA,8BACA,mCAEJxI,MAAO,+BAEX,CACIwI,SAAU,CACN,+BACA,8BACA,kCAEJxI,MAAO,mCAGf6yE,MAAO,CAAC,uBACRqB,eAAe,EACfC,uBAAuB,EACvBC,gBAAiB,CACbvB,MAAO,CACH,+BACA,8BACA,mCAEJ7yE,MAAO,wDAEXw0E,UAAU,GAEd,CACIx0E,MAAO,+BACP4H,QAAS,CACL,CACIY,SAAU,CACN,2BACA,+BACA,mCAEJxI,MAAO,gCAEX,CACIwI,SAAU,CACN,0BACA,+BACA,mCAEJxI,MAAO,2BAEX,CACIwI,SAAU,CACN,8BACA,2BACA,mCAEJxI,MAAO,+BAEX,CACIwI,SAAU,CAAC,8BAA+B,2BAC1CxI,MAAO,mCAGf6yE,MAAO,CAAC,wBAEZ,CACI7yE,MAAO,+BACP4H,QAAS,CACL,CACIY,SAAU,CACN,gCACA,sCAEJxI,MAAO,qCAEX,CACIwI,SAAU,CACN,+BACA,sCAEJxI,MAAO,oCAEX,CACIwI,SAAU,CACN,gCACA,qCAEJxI,MAAO,sCAGf6yE,MAAO,CAAC,sBAAuB,sBAEnC,CACI7yE,MAAO,gCACPypB,QAAQ,EACR7hB,QAAS,CACL,CACIY,SAAU,CACN,iCACA,wCAEJxI,MAAO,sCAEX,CACIwI,SAAU,CACN,gCACA,wCAEJxI,MAAO,qCAEX,CACIwI,SAAU,CACN,iCACA,uCAEJxI,MAAO,wCAGf6yE,MAAO,CACH,sBACA,gCACA,uEAGR,CACI7yE,MAAO,kCACPypB,QAAQ,EACRmqD,WAAY,CAAC,uBACbC,YAAa,CAAC,wBACdhB,MAAO,CACH,sBACA,iCACA,yCAGR,CACI7yE,MAAO,eACP4H,QAAS,CACL,CACIY,SAAU,CAAC,gBAAiB,uBAC5BxI,MAAO,qBAEX,CACIwI,SAAU,CAAC,eAAgB,uBAC3BxI,MAAO,oBAEX,CACIwI,SAAU,CAAC,gBAAiB,sBAC5BxI,MAAO,uBAGf6yE,MAAO,CAAC,wBAGZ,CACI7yE,MAAO,sBACPQ,KAAM,aACNqyE,MAAO,CAAC,eAEZ,CACI7yE,MAAO,uBACPypB,QAAQ,EACRjpB,KAAM,gBACNqyE,MAAO,CAAC,sBAAuB,wCAEnC,CACI7yE,MAAO,uBACPypB,QAAQ,EACRmqD,WAAY,CAAC,6BACbC,YAAa,CAAC,8BACdrzE,KAAM,mBACNqyE,MAAO,CAAC,sBAAuB,yCAEnC,CACI7yE,MAAO,uBACPQ,KAAM,cACNsd,UAAW,sBACX+0D,MAAO,CAAC,WAAY,gBAExB,CACI7yE,MAAO,iCACPypB,QAAQ,EACRjpB,KAAM,wBACNqyE,MAAO,CAAC,0BAEZ,CACI7yE,MAAO,iCACP8d,UAAW,+BACXwwC,QAAS,CACL9tD,KAAM,WACNC,MAAO,OACP6tD,QAAS,CAAExkD,KAAM,gBAAiBo+D,UAAW,IAAKlsE,MAAO,UACzD2L,KAAM,UAEVkrE,MAAO,CAAC,wBAEZ,CACI7yE,MAAO,6BACPypB,QAAQ,EACRmqD,WAAY,CAAC,yBACbC,YAAa,CAAC,0BACdhB,MAAO,CAAC,wBAIZ,CACI7yE,MAAO,+BACP4H,QAAS,CACL,CACI6sE,SAAU,eACVjsE,SAAU,CAAC,eAAgB,oBAC3BxI,MAAO,gCAEX,CACIy0E,SAAU,aACVjsE,SAAU,CAAC,cAAe,oBAC1BxI,MAAO,2BAEX,CACIy0E,SAAU,iBACVjsE,SAAU,CAAC,eAAgB,mBAC3BxI,MAAO,+BAEX,CACIy0E,SAAU,eACVjsE,SAAU,CAAC,cAAe,mBAC1BxI,MAAO,mCAGf6yE,MAAO,CAAC,WAAY,yBAGxB,CACI7yE,MAAO,iCACPypB,QAAQ,EACR7hB,QAAS,CACL,CAEIY,SAAU,CAAC,2BAA4B,+BACvCxI,MAAO,uCAEX,CAEIwI,SAAU,CAAC,0BAA2B,+BACtCxI,MAAO,uCAEX,CAEIwI,SAAU,CAAC,2BAA4B,8BACvCxI,MAAO,2CAGf6yE,MAAO,CAAC,wBAEZ,CACI/oE,KAAM,uBACNwkD,QAAS,CACLxkD,KAAM,uBACN4qE,uBAAwB,6BAE5B10E,MAAO,qCACP8d,UAAW,4CACX+0D,MAAO,CAAC,sBAAuB,qBAC/BppD,QAAQ,GAEZ,CACI3f,KAAM,uBACNwkD,QAAS,CACLxkD,KAAM,uBACN4qE,uBAAwB,6BAE5B10E,MAAO,qCACP8d,UAAW,4CACX+0D,MAAO,CAAC,sBAAuB,qBAC/BppD,QAAQ,GAEZ,CACI3f,KAAM,uBACNwkD,QAAS,CACLxkD,KAAM,wBAEV9J,MAAO,wCACP8d,UAAW,4CACX+0D,MAAO,CAAC,WAAY,qBACpBppD,QAAQ,GAEZ,CACI3f,KAAM,gBACNwkD,QAAS,CACLxkD,KAAM,iBAEV9J,MAAO,iCACP6yE,MAAO,CAAC,WACRppD,QAAQ,GAEZ,CACIzpB,MAAO,uCACP4zE,WAAY,CAAC,gCACbC,YAAa,CAAC,iCACdhB,MAAO,CAAC,YACRppD,QAAQ,IAGhBkrD,aAAc,CACV,CACI30E,MAAO,sBAEX,CACIA,MAAO,iBACPQ,KAAM,OACNqyE,MAAO,CAAC,OAAQ,yBAEpB,CACI7yE,MAAO,4CACP4zE,WAAY,CAAC,8BACbC,YAAa,CAAC,+BACdhB,MAAO,CAAC,4BAEZ,CACI7yE,MAAO,6CACP4zE,WAAY,CAAC,+BACbC,YAAa,CAAC,gCACdhB,MAAO,CAAC,4BAEZ,CACI7yE,MAAO,2CACP4zE,WAAY,CAAC,6BACbC,YAAa,CAAC,8BACdhB,MAAO,CAAC,4BAEZ,CACI7yE,MAAO,6CACP4zE,WAAY,CAAC,+BACbC,YAAa,CAAC,gCACdhB,MAAO,CAAC,6BAGhB+B,mBAAoB,CAChB,CACI50E,MAAO,mBAEX,CACIA,MAAO,oCACP4zE,WAAY,CAAC,6BACbC,YAAa,CAAC,8BACdhB,MAAO,CAAC,wBAEZ,CACI7yE,MAAO,sCACP4zE,WAAY,CAAC,+BACbC,YAAa,CAAC,gCACdhB,MAAO,CAAC,wBAEZ,CACI7yE,MAAO,mCACP4zE,WAAY,CAAC,4BACbC,YAAa,CAAC,6BACdhB,MAAO,CAAC,wBAEZ,CACI7yE,MAAO,sCACP4zE,WAAY,CAAC,+BACbC,YAAa,CAAC,gCACdhB,MAAO,CAAC,wBAEZ,CACI7yE,MAAO,oCACP4zE,WAAY,CAAC,6BACbC,YAAa,CAAC,8BACdhB,MAAO,CAAC,wBAEZ,CACI7yE,MAAO,mCACP4zE,WAAY,CAAC,4BACbC,YAAa,CAAC,6BACdhB,MAAO,CAAC,yBAGhBgC,oBAAqB,CACjB,CACI70E,MAAO,yBAEX,CACI8J,KAAM,yBACN9J,MAAO,0CACP6yE,MAAO,CAAC,sDAEZ,CACI7yE,MAAO,oDACP4zE,WAAY,CAAC,6CACbC,YAAa,CAAC,8CACdhB,MAAO,CAAC,sDAEZ,CACI7yE,MAAO,sCACP4zE,WAAY,CAAC,+BACbC,YAAa,CAAC,gCACdhB,MAAO,CAAC,uDAGhBiC,YAAa,CACT,CACI90E,MAAO,eAEX,CACIA,MAAO,iBACP4H,QAAS,CACL,CACIY,SAAU,CAAC,sBAAuB,uBAClCxI,MAAO,qBAEX,CACIwI,SAAU,CAAC,sBAAuB,sBAClCxI,MAAO,2BAEX,CACIwI,SAAU,CAAC,qBAAsB,uBACjCxI,MAAO,uBAGf6yE,MAAO,CAAC,8DAEZ,CACI/oE,KAAM,uBACNwkD,QAAS,CACLxkD,KAAM,uBACN4qE,uBAAwB,6BAE5B10E,MAAO,qCACP8d,UAAW,4CACX+0D,MAAO,CAAC,WAAY,qBACpBppD,QAAQ,GAEZ,CACIzpB,MAAO,iCACPQ,KAAM,wBACNqyE,MAAO,CAAC,wBAAyB,cAErC,CACI7yE,MAAO,qBACP4zE,WAAY,CAAC,qBACbC,YAAa,CAAC,sBACdrzE,KAAM,WACNqyE,MAAO,CAAC,WAAY,0BAExB,CACI7yE,MAAO,kBACP4H,QAAS,CACL,CACIY,SAAU,CAAC,mBAAoB,yBAC/BxI,MAAO,iCAEX,CACIwI,SAAU,CAAC,kBAAmB,yBAC9BxI,MAAO,+BAEX,CACIwI,SAAU,CAAC,mBAAoB,wBAC/BxI,MAAO,qCAGfQ,KAAM,QACNqyE,MAAO,CAAC,WAAY,2BAG5BkC,kBAAmB,CACf,CACI/0E,MAAO,kBACPQ,KAAM,QACNqyE,MAAO,CAAC,qBAAsB,WAGtCmC,cAAe,CACX,CACIh1E,MAAO,kBAEX,CACI8J,KAAM,2BACN9J,MAAO,oCACP6yE,MAAO,CAAC,iBAAkB,wBAE9B,CACI/oE,KAAM,sBACN9J,MAAO,+BACP6yE,MAAO,CAAC,oBAGhBoC,gBAAiB,CACb,CACIj1E,MAAO,oBAEX,CACIA,MAAO,sBACP4zE,WAAY,CAAC,uBACbC,YAAa,CAAC,wBACdhB,MAAO,CAAC,oBACRryE,KAAM;AC34BlB,IACIoF,EAAU,GAAGA,UAuBOpJ,MAAM04E,WAAW74E,OAAOsoE,EAAAA,QAAM,CAClD9nE,QAASL,MAAMC,OAAOC,UACtBK,cAAeP,MAAMC,OAAOC,UAC5BgiC,UAAWliC,MAAMC,OAAOC,QAAQ,qBAChCE,KAAMJ,MAAMC,OAAOC,UACnByjD,UAAW3jD,MAAMC,OAAOC,UACxB2vD,IAAK7vD,MAAMC,OAAOC,UAClBy4E,iBAAkB34E,MAAMC,OAAOC,UAC/BijB,IAAKnjB,MAAMC,OAAOC,UAClB04E,QAAS54E,MAAMC,OAAOC,QAAQ,YAC9BorE,OAAQtrE,MAAMC,OAAOC,UACrB24E,QAAS74E,MAAMC,OAAOC,UACtBwtC,oBAAqB1tC,MAAMC,OAAOC,UAClC+5B,UAAWj6B,MAAMC,OAAOC,UACxBkjB,QAASpjB,MAAMC,OAAOC,UACtB44E,YAAa94E,MAAMC,OAAOC,UAC1B64E,iBAAkB/4E,MAAMC,OAAOC,UAC/BoQ,OAAQtQ,MAAMC,OAAOC,UACrBuuB,cAAezuB,MAAMC,OAAOC,UAC5B84E,WAAYh5E,MAAMC,OAAOC,QAAQ,eACjCopC,YAAa,CAAC,QAAS,UACvBke,MAAO,KACPyxB,YAAa,GACb34E,MAAON,MAAMC,OAAOC,UACpBg5E,WAAYl5E,MAAMwB,SAAS,SAAS,WAChC,IAAIwC,EAAMmH;AAGV,OAFAA,EAAO1K,KAAKf,IAAI,SAASwQ,MAAM,KAAK,GACpClM,EAAOvD,KAAKf,IAAI,SAASwQ,MAAM,KAAK,GACvB,YAAT/E,KAIS,aAATnH,GACS,YAATA,GACS,UAATA,GACS,kBAATA,GACS,aAATA,GACS,aAATA,GACS,4BAATA,GACS,aAATA,GACS,YAATA,KAIQ,WAARA,EAEIvD,KAAKf,IAAI,SAASsC,KAAK,aACvBvB,KAAKf,IAAI,SAASsC,KAAlB,mCAEDvB,KAAKf,IAAI,SAASsC,KAAK,iBAElCm3E,gBAAiBn5E,MAAMwB,SAASmhC,MAAM,yCACtCy2C,cAAe7hE,GAAG/V,UAAS,WACvB,SACK8O,SAASsB,OAAO,eAAiB,cAC9BtB,SAASsB,OAAO,eAAiB,cACrCnK,aAAaR,QAAQ,oBAM7BoyE,UAAWr5E,MAAMwB,SAAS,SAAS,WAC/B,MAAiC,iBAAtBf,KAAKf,IAAI,UACTe,KAAKf,IAAI,SAASwQ,MAAM,KAAK,MAI5CopE,UAAWt5E,MAAMwB,SACb,sBACA,qBACA,kBACA,cACA,gBACA,WACI,GAAKf,KAAKf,IAAI,uBAGd,OAAOe,KAAK84E,cAGpBC,cAAex5E,MAAMwB,SACjB,sBACA,qBACA,kBACA,eACA,eACA,WACI,IAAIuwD;AACJ,GAAKtxD,KAAKf,IAAI,uBAOd,OAHAqyD,EADKtxD,KAAKf,IAAI,uBACF+zC,eAAe,gBACnBhzC,KAAK84E,WACK5lE,OAASo+C,EAAOp+C,QACjB,KAMzB8lE,SAAUz5E,MAAMwB,SAAS,OAAQ,uBAAuB,WACpD,GAAKf,KAAKf,IAAI,uBAGd,OAAOe,KAAKi5E,YAAYj5E,KAAKf,IAAI,YAErCi6E,UAAWpiE,GAAG/V,SAAS,oCAAoC,WACvD,IAAIo4E,EAAMC,EAAS5rE,EAAS6rE,EAAUv4E;AAEtC,SADAs4E,EAAUp5E,KAAKf,IAAI,uCAInBuO,EAAU4rE,EAAQn6E,IAAI,WACtBo6E,EAAW,GACXv4E,EAAO,WACH,OAAQ0M,GACJ,IAAK,KASD,OARA2rE,EAAO93E,EAAAA,QAAO6C,IAAIo1E,QAClBx4E,EAAM,uBAE+C,MAAjDq4E,EAAK3lE,UAAU2lE,EAAKjmE,OAAS,EAAGimE,EAAKjmE,SACS,MAA9CpS,EAAI0S,UAAU1S,EAAIoS,OAAS,EAAGpS,EAAIoS,UAElCimE,GAAQ,KAEJE,EAAWF,EAAOr4E,GAX/B,GAc2C,MAA9Cd,KAAKf,IAAI,mCAILo6E,EAASnmE,OAAS,GACXmmE,OAMnBzU,QAAS9tD,GAAG/V,SAASmhC,MAAM,eAC3Bq3C,cAAeziE,GAAG/V,SAAS,oCAAoC,WAC3D,IAAIq4E;AAEJ,OADAA,EAAUp5E,KAAKf,IAAI,qCACZ,EAAAu6E,EAAAC,kBAAiBp4E,EAAAA,QAAOq4E,MAAON,MAE1Cr5E,KAAM,WAKF,OAHAC,KAAK25E,eACL35E,KAAKC,SACLD,KAAKu4E,WACEv4E,KAAK45E,yBAGhBC,uBAAwB,WACpB,IAAIzwE,EAAG0wE;AAkBP,OAjBA1wE,EAAI2wE,OACJD,EAAkB,CAAC,MAAO,OAAQ,UAClC1wE,EAAE4wE,iBAAmB,EACrB5wE,EAAEyW,UAAUo6D,UAAS,SAAU9yD,EAAG+yD,EAAKjpC,GACnC,IAAIhlC;AACJ,GAAMA,EAAMglC,EAASvmC,OAAO/B,EAAQmC,KAAKgvE,EAAiB7tE,GAAO,GAGjE,OAAQ7C,EAAE4wE,kBAAoB,KAElC5wE,EAAEyW,UAAUs6D,cAAa,SAAUhzD,EAAG+yD,EAAKjpC,GACvC,IAAIhlC;AACJ,GAAMA,EAAMglC,EAASvmC,OAAO/B,EAAQmC,KAAKgvE,EAAiB7tE,GAAO,GAGjE,OAAQ7C,EAAE4wE,kBAAoB,KAG9B1zE,OAAO8zE,iBACN9zE,OAAO8zE,eAAiB,WACrB,GAAIhxE,EAAE4wE,iBACF,OAAO,KAKvBL,aAAc,WAAY,IAAA70E,EAAA9E;AAQtB,MAPuB,oBAAZ6xC,SAAuC,OAAZA,UAClCvrC,OAAO+zE,QAAU,SAAC39D,GACd,GAAIA,EAAMlX,SAAWc,OACjB,OAAOxB,EAAKw1E,aAIjBz6D,SAAS06D,iBACZ,eACA,WACI,OAAO16D,SAAS06D,iBACZ,UACA,WACI,OAAOz1E,EAAKw1E,cAEhB,MAGR,IAGRA,SAAU,WAAY,IACL16E,EADKiX,EAAA7W;AAYlB,OAVAJ,EAAUI,KAAKf,IAAI,YAEPA,IAAI,mBACZW,EAAQX,IAAI,+BACZqS,SAAS1R,EAAQX,IAAI,qBAAuBW,EAAQX,IAAI,+BAExDuJ,SAASuB,SAEb/J,KAAK45E,wBAED55E,KAAKf,IAAI,iBAAiBu7E,kBAAkB,IAC5CpzE,QAAQqzE,IAAI,wCACZz6E,KAAKmC,IAAI,sBAAsB,GACrBnC,KAAKf,IAAI,iBAAiBy7E,UACrBz1E,MACX,WAGI,OAFAmC,QAAQqzE,IAAI,wCACZ5jE,EAAK1U,IAAI,sBAAsB,GACxB0U,EAAK5X,IAAI,iBAAiB07E,aAErC,SAACh5E,GAEG,OADA,EAAAi5E,EAAAC,kBAAiBl5E,GACVkV,EAAK1U,IAAI,sBAAsB,QAI9CnC,KAAKf,IAAI,iBAAiB07E,UACnB36E,KAAKf,IAAI,WAAW07E,YAGnCG,aAAcv7E,MAAMwB,SAAS,2BAA2B,WACpD,GAAKf,KAAKf,IAAI,2BAGd,MAA6D,kBAAzDe,KAAKf,IAAI,2BAA2BuU,UAAU,EAAG,OAKzDunE,YAAax7E,MAAMwB,SAAS,2BAA2B,WACnD,GAAKf,KAAKf,IAAI,2BAGd,SACIe,KAAKf,IAAI,4BACgD,kBAAzDe,KAAKf,IAAI,2BAA2BuU,UAAU,EAAG,QAMzDwnE,UAAWlkE,GAAG/V,SAAS,6BAA6B,WAChD,IAAIk6E,EAAKC;AAiBT,OAfAA,EAAU,GACC,OAFXD,EAAMj7E,KAAKf,IAAI,+BAEIg8E,EAAI/nE,OAAS,GACR,cAAhB+nE,EAAI,GAAGpuE,OACPouE,EAAI,GAAGzpD,MAAQypD,EAAI,GAAGn6E,KAGtBo6E,EADAD,EAAI,GAAGzpD,MACGnwB,EAAAA,QAAO6C,IAAI0D,kBAAoB,IAAMqzE,EAAI,GAAGzpD,MAC/CypD,EAAI,GAAGluD,KACJkuD,EAAI,GAAGluD,KAEP,2BAGdmuD,EAAU,0BAEP37E,MAAMua,OAAOiH,SAAS,wBAA0Bm6D,EAAU,QAErE3gC,QAAS,CACL4gC,WAAY,SAAUC,EAAMxhD,GAAQ,IAAAnW,EAAAzjB;AAChC,GAAoB,eAAhB45B,EAAOlvB,KAGP,OAFA1K,KAAKmC,IAAI,QAAS,MAEX5C,MAAMkD,IAAI8F,OAAM,WACnB,OAAOkb,EAAKxkB,IAAI,UAAUo8E,aAAazhD,EAAOv0B,QAC/C,MAGXi2E,cAAe,WAEX,OADAt7E,KAAK8zD,eAAe,gBACb,GAEXynB,cAAe,WASX,OAPQv7E,KAAKf,IAAI,WAEb+H,aAAaM,QAAQ,UAAW,QAEhCN,aAAaM,QAAQ,UAAW,aAEpCtH,KAAK8zD,eAAe,YACb,GAEX0nB,gBAAiB,WAEb,OADAx7E,KAAK8zD,eAAe,kBACb,GAEX2nB,eAAgB,WAGZ,OAFAz7E,KAAKmC,IAAI,iBAAiB,GAC1BnC,KAAK8zD,eAAe,iBACb,GAEX4nB,kBAAmB,WACf,OAAO17E,KAAKmC,IAAI,4BAA4B,IAEhDsvE,WAAY,SAAU9vC,GAClB,OAAI7qB,GAAGhU,QAAQ6+B,GACPA,EAAKzuB,OAAS,EACPlT,KAAK27E,kBAAkBh6C,EAAK,GAAIA,EAAK,IAErC3hC,KAAK27E,kBAAkBh6C,EAAK,IAGhC3hC,KAAK27E,kBAAkBh6C,IAGtCsjC,kBAAmB,WACf,OAAOjlE,KAAK27E,kBAAkB,WAElCC,iBAAkB,SAAU5vC,EAAIrnB,GAC5B,OAAO3kB,KAAK27E,kBAAkB3vC,EAAIrnB,IAEtCk3D,UAAW,SAAUjiD,GACjB,MAAe,UAAXA,EACO55B,KAAKf,IAAI,OAAO68E,QACL,UAAXliD,EACA55B,KAAKf,IAAI,OAAOkD,IAAI,kBAAkB,QAD1C,GAIX45E,UAAW,WAGP,OAFA/7E,KAAKmC,IAAI,sBAAsB,GAC/BnC,KAAK27E,kBAAkB,SAChBp8E,MAAMkD,IAAI8F,MACbvI,MACA,WACI,OAAOwI,SAASuB,WAEpB,MAGRiyE,gBAAiB,WACb,OAAOh8E,KAAKf,IAAI,OAAOkD,IAAI,qBAAqB,IAEpD85E,oBAAqB,WAEjB,OADAj8E,KAAKmC,IAAI,qBAAqB,GACvBnC,KAAKmC,IAAI,sBAAsB,IAE1C+5E,aAAc,WAAY,IAAAz/C,EAAAz8B;AAetB,OAbAA,KAAKmC,IAAI,gBAAgB,GAClBnC,KAAKyhC,UAAUuiB,MAAM,CACxBljD,IAAK,YACLG,KAAM,CACFyJ,KAAM,WACN8C,QAASxN,KAAKf,IAAI,4CAClB2nB,QAAS5mB,KAAKf,IAAI,iBAClButC,MACI,mBAAqBxsC,KAAKf,IAAI,4CAClCk9E,OAAQn8E,KAAKf,IAAI,8BAErB4B,OAAQ,SAEAoE,MAAK,SAACm3E,GACd,OAAkB,MAAdA,EAAKz6E,OACL86B,EAAKt6B,IAAI,cAAc,GACvBs6B,EAAKt6B,IAAI,gBAAgB,GAClBs6B,EAAKt6B,IAAI,QAASi6E,EAAKl6E,aAE9Bu6B,EAAKt6B,IAAI,sBAAsB,GAC/Bs6B,EAAKt6B,IAAI,gBAAgB,GAClBs6B,EAAKt6B,IAAI,gBAAiB,WAI7Ck6E,gBAAiB,WAEb,OADAr8E,KAAK24B,KAAK,iBACH34B,KAAKmC,IAAI,QAAS,OAE7B24C,cAAe,WACX,IAAIwhC;AAGJ,GAFAA,EAAa/8E,MAAAkZ,SAASzY,MAAM0Y,OAAO,0BACvB1Y,KAAKf,IAAI,2BACP6C,SAAS,iBAEnB,OADQvC,MAAAkZ,SAASzY,MAAM0Y,OAAO,SAAW4jE,EAAWr9E,IAAI,qBAC3Cy7E,WAGrB6B,eAAgB,SAAU9vC,GAAM,IAAA9P,EAAA38B;AAU5B,OATA6P,OAAO2B,OAAOi7B,GACdzlC,aAAY,KAAWylC,EAGvBzsC,KAAKyhC,UAAUuiB,MAAM,CACjBljD,IAAK,wBAA0B2rC,EAC/B5rC,OAAQ,SAGLb,KAAKs4E,iBAAiBxnD,QAAQ7rB,MAAK,WACtC,OAAQ03B,EAAKh9B,KAAK6R,OAASi7B,MAGnC+vC,eAAgB,SAAUl8E,GACtB,OAAON,KAAKmC,IAAI,cAAe7B,IAEnCm8E,cAAe,WACXvsD,UAAUwsD,UAAUC,UAAU38E,KAAKf,IAAI;AACvC,IAAIU,EAAOK,KAAKf,IAAI;AACpBe,KAAKguB,cAAc3mB,KAAK1H,EAAK2C,EAAE,qDAAsD,CACjF2rB,WAAW,MAIvB2uD,UAAW9lE,GAAG/V,SAAS,iBAAiB,WACpC,OAAO+L,IAAI7N,IAAI,gBAGnB49E,WAAY/lE,GAAG/V,SAAS,kBAAkB,WACtC,OAAO+L,IAAI7N,IAAI,iBAEnBgzE,eAAe,EACf6K,WAAY,SACZC,gBAAiBx9E,MAAMwB,SAAS,iCAAiC,WAC7D,IAAIkL;AACJ,MAC0D,OAArDA,EAAMjM,KAAKf,IAAI,mCAAqD,MAARgN,GAAuB,MAARA,KAGpF+wE,SAAUlmE,GAAG2V,EAAE,IACfs3C,YAAaxkE,MAAMwB,SAAS,QAAQ,WAChC,IAAY0O,EAAOwtE;AACnB,GAAKj9E,KAAKf,IAAI,QAId,OADAg+E,EAAUj9E,KAAKf,IAAI,QAAQ,GACvBuJ,SAASC,KAAK3G,SAAS,UACd0G,SAASC,KAAKgH,MAAM,KAAK0U,QAAO,SAAClO,GACtC,OAAOA,EAAKnU,SAAS,aAEX,GAEF,YAAZm7E,EACO,YAEK,gBAAZA,EACOj9E,KAAKf,IAAI,QAAQ,GAEZ,UAAZg+E,GACAxtE,EAAQjH,SAASC,KAAKgH,MAAM,MACfA,EAAM9G,QAAQ,SAAW,GAE/Bs0E,KAGf53E,KAAM9F,MAAMwB,SAAS,2BAA2B,WAC5C,IAAIsE;AAEJ,GADAA,EAAOrF,KAAKf,IAAI,2BAEZ,OAAOoG,EAAKoK,MAAM,QAG1BytE,0BAA2B39E,MAAMwB,SAAS,2BAA2B,WACjE,IAAIsE;AAEJ,MAAa,yBADbA,EAAOrF,KAAKf,IAAI,4BAEL,wBAGPoG,EAAKvD,SAAS,UAAYuD,EAAKvD,SAAS,QACjC,sBAEJ,MAEXq7E,WAAY59E,MAAMwB,SAAS,QAAQ,WAC/B,IAAIgjD,EAAGxgD,EAAM65E,EAAUz9E,EAAMkN,EAAMxH,EAAMg4E,EAAa5tE;AAItD,GAHApK,EAAOrF,KAAKf,IAAI,QAChBU,EAAOK,KAAKf,IAAI,QAChB8kD,EAAI/jD,KAAKf,IAAI,aACRoG,EAgBL,MAb0B,aAAtBA,EAAK,GAAGE,OAAO,KACfF,EAAK,GAAKA,EAAK,GAAGE,MAAM,GAAI,IAEhC83E,EAAcr9E,KAAKf,IAAI,6CACP,UAAZoG,EAAK,KACmC,MAApCg4E,EAAY,qBACZD,EAAWC,EAAY,qBAAZ,KAC6B,MAAjCA,EAAY,kBACnBD,EAAWC,EAAY,kBAAZ,KAC8B,MAAlCA,EAAY,qBACnBD,EAAWC,EAAY,mBAAZ,OAGfD,GAAwB,UAAZ/3E,EAAK,IAAkB0+C,EAAEu5B,WAAWF,KAChD75E,EAAOwgD,EAAE75C,QAAQkzE,GACb79E,MAAM+gB,UAAU/c,EAAKsJ,OACdtJ,EAAKsJ,KAGJ,gBAAZxH,EAAK,IAELwH,GADA4C,EAAQjH,SAASC,KAAKgH,MAAM,MACfA,EAAM9G,QAAQ,eAAiB,GACxCo7C,EAAEu5B,WAAW,eAAiBzwE,KAC9BtJ,EAAOwgD,EAAE75C,QAAQ,eAAiB2C,GAC9BtN,MAAM+gB,UAAU/c,EAAKsJ,OACdtJ,EAAKsJ,KAGJ,WAAZxH,EAAK,GACE1F,EAAK2C,EAAE,eAAiB+C,EAAK,IAE7B1F,EAAK2C,EAAE,eAAiB+C,EAAK,MAEhC1F,EAAK2rB,OAAO,eAAiBjmB,EAAK,KAAO1F,EAAK2rB,OAAO,QAAUjmB,EAAK,IACrE1F,EAAK2C,EAAE,QAAU+C,EAAK,IACtBA,EACA1F,EAAK2C,EAAE,eAAiB+C,EAAK,SADjC,KAIXk4E,0BAA0B,EAE1BC,eAAgB1mE,GAAG8L,GACf,OACArjB,MAAMukD,SAAS,iCAAiC,WAAY,IACpDC,EAAG1I,EAAkBpyC,EAAMw0E,EADyB//C,EAAA19B;AAGxD,IADAq7C,EAAUr7C,KAAKf,IAAI,uDACJo8C,EAAU,cACjBxrC,SAASoE,KAAKpE,OAAOwrC,GAAU,QAAU,IACzCpyC,EAAOjJ,KAEPy9E,GAAc,IADd15B,EAAI/jD,KAAKf,IAAI,cAIP0qE,aAAa,oCACf5lB,EAAE4lB,aAAa,yBACf5lB,EAAE4lB,aAAa,+BAEf8T,GAAc,GAGdz9E,KAAKf,IAAI,kCAC+C,IAAxDqS,SAAStR,KAAKf,IAAI,mCAClBw+E,GAMA,OAJUz9E,KAAKf,IAAI,aAAasK,KAAK,CACjCzI,IAAK,cACLD,OAAQ,QAEGoE,MACX,SAAUhE,GAEN,OAAOgI,EAAK9G,IAAI,4BAA4B,MAEhD,SAAC2H,GAEG,GAAsB,MAAlBA,EAAOxJ,OAMP,OAJUo9B,EAAKz+B,IAAI,aAAasK,KAAK,CACjCzI,IAAK,gBACLD,OAAQ,QAEGoE,MAAK,SAAChE,GACjB,GAAuB,SAAnBA,EAAI,OAEJ,OADAy8B,EAAKv7B,IAAI,eAAgBlB,GAClBgI,EAAK9G,IAAI,4BAA4B,aAWpFu7E,UAAW5mE,GAAG8L,GAAG,QAAQ,WAAY,IAAAyoB,EAAArrC;AACjC,GAAIgH,aAAaR,QAAQ,gBAErB,OADAQ,aAAaG,WAAW,gBACjB2P,GAAGrU,IAAI8F,MACVvI,MACA,WACI,OAAOqrC,EAAKpsC,IAAI,eAAemV,UAEnC,QAIZizD,YAAavwD,GAAG/V,UAAS,WACrB,GAAIf,KAAKf,IAAI,+CACT,OAAO,KAGf0+E,cAAe7mE,GAAG/V,UAAS,WACvB,IAAIs6C,EAASppC;AAGb,OAFAopC,EAAUr7C,KAAKf,IAAI,qDACnBgT,EAAOpC,SAASoE,KAAKpE,OAAOwrC,GAAU,QAC/Br7C,KAAKf,IAAI,eAAiBgT,KAErC2rE,YAAa,WAMT,OAJU59E,KAAKf,IAAI,aAAasK,KAAK,CACjCzI,IAAK,cACLD,OAAQ,QAEGoE,MACX,SAACmnC,GACG,OAAOA,KAEX,SAACtiC,GACG,OAAO,MAInB+zE,UAAW/mE,GAAG/V,SAAS,sBAAuB,mBAAmB,WAAY,IAAAgtC,EAAA/tC;AACzE,QAAKA,KAAKf,IAAI,aAAa0qE,aAAa,wBAGjC3pE,KAAK49E,cAAc34E,MAAK,SAAC64E,GAC5B,IAAI/sC;AAUJ,OATIhD,EAAK9uC,IAAI,aAAa0qE,aAAa,qBACnC54B,EAAO,SAC4B,WAA5B+sC,EAAK,gBAAmC/vC,EAAK9uC,IAAI,kBAAoB,IAEpE6+E,GAAS/vC,EAAK9uC,IAAI,kBAAoB,EAD9C8xC,EAAO,iBAGAhD,EAAK9uC,IAAI,kBAAoB,IACpC8xC,EAAO,gBAEJA,QAGfgtC,0BAA2BjnE,GAAG/V,SAAS,eAAe,WAClD,MAAgC,aAA5Bf,KAAKf,IAAI,gBAGNe,KAAK49E,cAAc34E,MAAK,SAAC64E,GAC5B,OAAOA,EAAK,sBAGpBlE,sBAAuB,WACnB,IAAIoE,EAAyB19E,EAAQ29E;AACrC,SACKj+E,KAAKf,IAAI,wBACS,oBAAZ4yC,SACK,OAAZA,eAIJosC,EAAWj+E,KAAKf,IAAI,SAASsC,KAAK,mBACY,IAA7B08E,EAAS,mBAG1BD,EAA0Bh+E,KAAKf,IAAI,OAAOi/E,oBAMtC59E,EAFgC,IAFhCuP,OAAOmuE,GACFtvE,IAAIuvE,EAAS,gBAAiB,QAC9BhqE,KAAKpE,SAAU,SAIpBA,OAAOmuE,GAAyBtvE,IAAIuvE,EAAS,gBAAiB,QAAQxpE,SAAS5E,UAFtE,YAMTA,OAAOmuE,GACFtvE,IAAIuvE,EAAS,kBAAmB,QAChCxpE,SAAS5E,WAEL,aAIb7P,KAAKmC,IAAI,kBAAkB,GACpBnC,KAAKmC,IAAI,aAAc,CAC1B7B,OAAQA,EACRixE,QAASvxE,KAAKf,IAAI,OAAOsyE,UACzB4M,mBAAoBtuE,OAAOmuE,GACtBtvE,IAAIuvE,EAAS,gBAAiB,QAC9BhqE,KAAKpE,SAAU,aAG5BuuE,UAAWtnE,GAAG/V,SAAS,uBAAuB,WAC1C,MAA4B,SAAxBf,KAAKovD,IAAI+B,WACF9vD,EAAAA,QAAO6C,IAAIo1E,QAAU,uCAErBj4E,EAAAA,QAAO6C,IAAIo1E,QAAU;eCntBxC56E,OAAA,wBAAA,CAAA,YAAA,SAAAC,GAGAE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAJ,EAAAO,aAAA;AACA,IAAAm/E,EAAA9+E,MAAA04E;AACAt5E,EAAAO,QAAAm/E;MCA2B9+E,MAAM04E,WAAW74E,OAAO,CAC/CQ,QAASL,MAAMC,OAAOC,UACtBI,MAAON,MAAMC,OAAOC,UACpB6+E,gBAAiBxnE,GAAG/V,SAAS,uBAAuB,WAChD,MAAiD,YAA7Cf,KAAKf,IAAI,mCAKjBs/E,YAAa,GACbC,YAAa,GACbC,UAAW3nE,GAAG/V,SAAS,QAAQ,WAC3B,SAAIf,KAAKf,IAAI,SAAsC,OAA3Be,KAAKf,IAAI,kBAKrCy/E,UAAW5nE,GAAG/V,SAAS,QAAQ,WAC3B,SAAIf,KAAKf,IAAI,SAAsC,OAA3Be,KAAKf,IAAI,kBAKrC0/E,UAAW7nE,GAAG/V,SAAS,YAAa,YAAa,uBAAuB,WACpE,SAAIf,KAAKf,IAAI,eAAgBe,KAAKf,IAAI,iBAK1Cy3C,KAAM5/B,GAAG/V,SAAS,uBAAuB,WACrC,OAAOf,KAAKkN,MAAMsZ,WAAW,OAAQxmB,KAAKf,IAAI,8BAElD01B,WAAW,EACXiqD,UAAW9nE,GAAG/V,SAAS,uBAAuB,WAC1C,OACIf,KAAKH,MAAM0B,KAAK,wBAC6B,YAA7CvB,KAAKf,IAAI,mCAMjBs7C,QAAS,CACLywB,WAAY,WAEJhrE,KAAKH,MAAM0B,KAAK,wBAC6B,YAA7CvB,KAAKf,IAAI,iCAET4/E,QAAQloE;;ACnCxB,IACIhO,EAAU,GAAGA,UAUMpJ,MAAM04E,WAAW74E,OAAO,CAC3C8N,MAAO3N,MAAMC,OAAOC,UACpBE,KAAMJ,MAAMC,OAAOC,UACnBgiC,UAAWliC,MAAMC,OAAOC,QAAQ,qBAChCq/E,MAAOv/E,MAAMC,OAAO88E,aACpByC,uBAAwB,CAAC,UACzBzvB,gBAAiBx4C,GAAG2V,EAAE,IACtBstC,cAAex6D,MAAMV,OAAO+J,OAAO,CAC/B7F,OAAO,IAEXwgD,SAAUhkD,MAAMwB,UAAS,WACrB,IAAIi+E,EAAar8E;AAIjB,OAHAA,EAASnB,EAAAA,QAAUmO,UAAU3P,KAAKf,IAAI,SACtC+/E,EAAch/E,KAAKyhC,UAAUw9C,gBAAgBt8E,GAC7C3C,KAAKmC,IAAI,gBAAiB68E,KACtBr8E,IACA3C,KAAKmC,IAAI,YAAY,IACd,MAIf+8E,sBAAuBpoE,GAAGgtC,SAAS,sBAAsB,WACrD,IAAIxmB,EAAKp7B,EAAW2Q,EAAGlT,EAAMoT,EAAK9G;AAGlC,GAFAtM,EAAOK,KAAKf,IAAI,QAEZe,KAAKf,IAAI,0BAA4B,EAAG,CAIxC,IAFAiD,EAAY,GAEP2Q,EAAI,EAAGE,GADZ9G,EAAMjM,KAAKf,IAAI,oBACOiU,OAAQL,EAAIE,EAAKF,IACnCyqB,EAAMrxB,EAAI4G,GACV3Q,GAAavC,EAAK2C,EAAEg7B,GAAO;AAE/B,OAAOt9B,KAAKmC,IAAI,oBAAqB5C,MAAMua,OAAOiH,SAAS7e,IAG3D,OAAOlC,KAAKmC,IAAI,oBAAqB,SAG7CoB,KAAMhE,MAAMwB,SAASmhC,MAAM,kCAC3Bk7C,SAAU79E,MAAMwB,UAAS,WACrB,IAAIwC;AAEJ,GADAA,EAAOvD,KAAKf,IAAI,aAAaiL,QAAQlK,KAAKf,IAAI,QAAQsnC,cAClDhnC,MAAM+gB,UAAU/c,EAAKsJ,MACrB,OAAOtJ,EAAKsJ,QAGpBsN,OAAQ5a,MAAMwB,SAAS,SAAS,WAC5B,IAAIo+E,EAAehlE,EAAQxO,EAAWtB,EAASpB;AAa/C,GAZAA,EAAOjJ,MACP2L,EAAY3L,KAAKf,IAAI,WAEjB0M,EAAYA,EAAU46B,cAE1B44C,EAAgBn/E,KAAKf,IAAI,iBAIrBoL,EAHCsB,EAGSzI,KAAKwD,MAAMxD,KAAKC,UAAU3B,EAAAA,QAAU0I,MAAMyB,GAAWtB,UAFrDrK,KAAKf,IAAI,iBAIvBkb,EAAS,GACJ9P,EA4CL,OAzCAjB,EAAAA,QAAEe,KAAKE,GAAS,SAAUqB,EAAO4D,GAC7B,IAAIkgD,EAASv5C,EAAMunC,EAAGvxC,EAAKC,EAAMnN;AAGjC,GAFAuQ,EAAI25B,IAAMv9B,EACV4D,EAAI/L,KAAOoI,EACPwzE,EAAe,CAEf,IAAK3hC,KADLvxC,EAAMkzE,EAAczzE,GAGhB,GAAoB,WAAhBlJ,EADJyT,EAAOhK,EAAIuxC,KAC+B,MAAVluC,EAAIkuC,GAChC,IAAKgS,KAAWv5C,EAES,WAAjBzT,EADJzD,EAAQkX,EAAKu5C,KAEJlgD,EAAIkuC,GAAGgS,KAIZlgD,EAAIkuC,GAAGgS,GAAWzwD;KAI1BuQ,EAAIkuC,GAAKvnC;AAGbvK,KAASyzE,IACT7vE,EAAI6vE,cAAgBA,EAAczzE,IAY1C,GAPI4D,EAAI6vE,eAAiB7vE,EAAI6vE,cAAcjgF,UACS,WAA5CK,MAAM6I,OAAOkH,EAAI6vE,cAAcjgF,SAC/B+J,EAAK9G,IAAI,SAAWmN,EAAI25B,IAAK35B,EAAI6vE,cAAcjgF,SAE/C+J,EAAK9G,IAAI,SAAWmN,EAAI25B,IAAK35B,EAAI6vE,cAAcjgF,YAGjDgN,EAAOoD,EAAI5E,KAAO/B,EAAQmC,KAAK7B,EAAKhK,IAAI,0BAA2BiN,GAAQ,EAC7E,OAAOiO,EAAOjP,KAAKoE,MAG3BtP,KAAKo/E,kBAAkBjlE,GAChBA,KAUXklE,WAAW,EACXC,gBAAiB//E,MAAMukD,SAAS,yBAAyB,WACrD,IAAI7iD;AAEJ,GADAA,EAAOjB,KAAKf,IAAI,yBACZM,MAAMuD,QAAQ7B,IAAS1B,MAAM+gB,UAAUrf,EAAK,KAAO1B,MAAM+gB,UAAUrf,EAAK,GAAG8B,OAC3E,OAAO/C,KAAKu/E,YAAYt+E,EAAK,GAAGu+E;AAIpC,OAHWjgF,MAAMuD,QAAQ7B,KACrBA,EAAOA,EAAK,IAERA,EAAKU,OACT,IAAK,UACD,OAAO3B,KAAKy/E,kBAAkBx+E,EAAK2B;AACvC,IAAK,eACD,OAAO5C,KAAKu/E,YAAYt+E,EAAKU;AACjC,IAAK,mBACD,OAAO3B,KAAK0/E,iBAAiBz+E,EAAKiB;AACtC,QACI,OAAOlC,KAAKmC,IACR,oBACA5C,MAAMua,OAAOiH,SACT,sBAAwB9f,EAAKU,MAAQ,MAAQV,EAAKiB,gBAKtEu9E,kBAAmB,SAAU58E,GAAM,IAC3BlD,EAAMyU,EAAOlH,EADcpI,EAAA9E;AAwD/B,GAtDAkN,EAAQlN,KAAKf,IAAI,SACjBU,EAAOK,KAAKf,IAAI,QACE,aAAd4D,EAAK4a,OACLrJ,EAAQzU,EAAK2C,EAAE,+BACftC,KAAKmC,IAAI,oBAAqBiS,GAC9BlH,EACK7J,MAAM,WAAY,CACfM,GAAId,EAAK6a,IAAIC,KAAK,KAClBC,UAAU,IAEb3Y,MAAK,SAAC06E,GACH,IAAIjxE;AAWJ,OAVAA,EAAM,GACNixE,EAAU/4E,SAAQ,SAACqP,GACf,OAAQvH,GACJ,UACAuH,EAAKhX,IAAI,gBACT,IACAgX,EAAKhX,IAAI,aACT,MACAgX,EAAKhX,IAAI,cAEV6F,EAAK3C,IACR,oBACA5C,MAAMua,OAAOiH,SAAS3M,EAAQ,OAAS1F,QAIrC,YAAd7L,EAAK4a,OACLrJ,EAAQzU,EAAK2C,EAAE,8BACftC,KAAKmC,IAAI,oBAAqBiS,GAC9BlH,EACK7J,MAAM,UAAW,CACdM,GAAId,EAAK6a,IAAIC,KAAK,KAClBC,UAAU,IAEb3Y,MAAK,SAAC26E,GACH,IAAIlxE;AAWJ,OAVAA,EAAM,GACNkxE,EAASh5E,SAAQ,SAACqP,GACd,OAAQvH,GACJ,UACAuH,EAAKhX,IAAI,oBACT,IACA4Q,OAAOoG,EAAKhX,IAAI,cAAckS,OAAO,KACrC,MACAtB,OAAOoG,EAAKhX,IAAI,YAAYkS,OAAO,QAEpCrM,EAAK3C,IACR,oBACA5C,MAAMua,OAAOiH,SAAS3M,EAAQ,OAAS1F,QAIrC,SAAd7L,EAAK4a,KAGL,OAFArJ,EAAQzU,EAAK2C,EAAE,2BACftC,KAAKmC,IAAI,oBAAqBiS,GACvBlH,EACF7J,MAAM,WAAY,CACfM,GAAId,EAAK6a,IAAIC,KAAK,KAClBC,UAAU,IAEb3Y,MAAK,SAAC06E,GACH,IAAIjxE;AASJ,OARAA,EAAM,GACNixE,EAAU/4E,SAAQ,SAACqP,GACf,OAAQvH,GACJ,UACAuH,EAAKhX,IAAI,gBACT,IACA4Q,OAAOoG,EAAKhX,IAAI,SAASkS,OAAO,QAEjCrM,EAAK3C,IACR,oBACA5C,MAAMua,OAAOiH,SAAS3M,EAAQ,OAAS1F,QAK3DmxE,kBAAmB,KACnBN,YAAa,SAAU5mB,GACnB,OAAQA,GACJ,IAAK,oCACD,OAAO34D,KAAKmC,IACR,oBACA5C,MAAMua,OAAOiH,SAAS/gB,KAAKf,IAAI,QAAQqD,EAAE;AAEjD,IAAK,eACD,OAAOtC,KAAKmC,IACR,oBACA5C,MAAMua,OAAOiH,SAAS/gB,KAAKf,IAAI,QAAQqD,EAAE,wCAIzDo9E,iBAAkB,SAAU/mB,GAGxB,OAAO34D,KAAKmC,IACR,oBACA5C,MAAMua,OAAOiH,SACT/gB,KAAKf,IAAI,QAAQqD,EAAE,cAAgBq2D,EAAK,CACpCz5D,QAAS,wBAA0By5D,OAKnDmnB,gBAAiBhpE,GAAG2V,EAAE,IACtBszD,eAAgBjpE,GAAG/V,SAAS,UAAU,WAClC,IAAIyC,EAAO2W,EAAQtH,EAAGE,EAAKitE;AAE3B,GADA7lE,EAASna,KAAKf,IAAI,UAClB,CAIA,IADA+gF,EAAc,GACTntE,EAAI,EAAGE,EAAMoH,EAAOjH,OAAQL,EAAIE,EAAKF,KACtCrP,EAAQ2W,EAAOtH,IACLxE,SAASiqB,SACf0nD,EAAY90E,KAAK1H;AAGzB,OAAOw8E,MAEXZ,kBAAmB,SAAUjlE,GAAQ,IAAAtD,EAAA7W;AACjC,OAAOma,EAAOvT,SAAQ,SAACpD,GACnB,IAAIk/C,EAAUu9B;AAEd,IADAv9B,EAAW7rC,EAAK5X,IAAI,aAAaypB,WAAW7R,EAAK5X,IAAI,SAAS0pB,OAAO,OAAQnlB,EAAMylC,OAI9EpyB,EAAK5X,IAAI,SAAWuE,EAAMylC,KAG/B,OAAIyZ,EAASr0C,SAAStE,QAClBk2E,EAAev9B,EAASr0C,SAAStE,OAC7BxK,MAAMuD,QAAQm9E,GACPA,EAAar5E,SAAQ,SAAC87C,GACzB,OAAO7rC,EAAKqpE,mBACR/lE,EACAtD,EAAK5X,IAAI,SAAWuE,EAAMylC,KAC1BzlC,EAAMylC,IACNyZ,MAID7rC,EAAKqpE,mBACR/lE,EACAtD,EAAK5X,IAAI,SAAWuE,EAAMylC,KAC1BzlC,EAAMylC,IACNg3C,SAhBZ,MAsBRE,2BAA4B,SAAUphF,EAAOyE,GAAO,IAC5Ck/C,EAAUu9B,EADkCx8D,EAAAzjB;AAGhD,GADA0iD,EAAW1iD,KAAKf,IAAI,aAAaypB,WAAW1oB,KAAKf,IAAI,SAAS0pB,OAAO,OAAQnlB,GAI7E,OAAIk/C,EAASr0C,SAAStE,QAClBk2E,EAAev9B,EAASr0C,SAAStE,OAC7BxK,MAAMuD,QAAQm9E,GACPA,EAAar5E,SAAQ,SAAC87C,GACzB,OAAOj/B,EAAKy8D,mBAAmBz8D,EAAKxkB,IAAI,UAAWF,EAAOyE,EAAOk/C,MAG9D1iD,KAAKkgF,mBAAmBlgF,KAAKf,IAAI,UAAWF,EAAOyE,EAAOy8E,SAPzE,GAWJC,mBAAoB,SAAU/lE,EAAQpb,EAAOkqB,EAAWm3D,GACpD,IAAIC;AAEJ,GADAA,EAAclmE,EAAOwO,OAAO,MAAOy3D,GAInC,OAAO7gF,MAAM4C,IAAIk+E,EAAa,SAAUrgF,KAAKsgF,oBAAoBr3D,EAAWlqB,KAEhFuhF,oBAAqB,SAAUr3D,EAAWlqB,GACtC,IAAIwgC;AAGJ,OAFAA,EAAgB,IACFtW,GAAalqB,EACpBwgC,GAEXgb,QAAS,CACLgmC,eAAgB,SAAU58E,GACtB,OAAOyD,QAAQqzE,IAAI92E,IAEvB68E,cAAe,SAAUh9E,GACrB,OAAO,GAEXi9E,oBAAqB,WAEjB,OADAzgF,KAAK8zD,eAAe,oBACb,GAEX4sB,iBAAkB,SAAU3hF,EAAOyE,GAE/B,OADAxD,KAAKmgF,2BAA2BphF,EAAOyE,IAChC,GAEXm9E,kBAAmB,SAAU5hF,EAAOyE,GAChC,OAAO;;ACnXnB,IACImF,EAAU,GAAGA,UAUSpJ,MAAM04E,WAAW74E,OAAOwhF,EAAAA,QAAaC,EAAAA,QAAgB,CAC3EC,YAAavhF,MAAMC,OAAO88E,aAC1B38E,KAAMJ,MAAMC,OAAOC,UACnBshF,YAAY,EACZx9E,KAAMhE,MAAMwB,SAASmhC,MAAM,2CAC3BsD,MAAOjmC,MAAMwB,SAASmhC,MAAM,yBAC5BnC,gBAAiBxgC,MAAMwB,SAASmhC,MAAM,uBACtC+O,SAAUn6B,GAAGjY,OAAO+J,OACpBqvB,WAAY,WACR,OAAIj4B,KAAKf,IAAI,aACTe,KAAKmC,IAAI,mBAAoBnC,KAAKf,IAAI,YAC/Be,KAAKmC,IAAI,iBAAkBnC,KAAKf,IAAI,WAEpCe,KAAKmC,IACR,WACA2U,GAAGjY,OAAO+J,OAAO,CACbyzB,QAASr8B,KAAKf,IAAI,eAKlC+hF,eAAgB,WAKZ,OAJIhhF,KAAKf,IAAI,aACTe,KAAKmC,IAAI,wBAAyBnC,KAAKf,IAAI,0BAE/Ce,KAAKi4B,aACEj4B,KAAKihF,iBAEhBj5C,KAAM,EACNnjB,MAAO,GACPo8D,cAAe,WAAY,IACnBC,EACAn9B,EACA5pC,EACAgmB,EACA9D,EACA94B,EACA5D,EACAkpC,EACA5/B,EACAk4E,EAVmBr8E,EAAA9E;AAYvB,GADAiJ,EAAOjJ,KACFA,KAAKf,IAAI,WAwGd,OArGAo9B,EAAUr8B,KAAKf,IAAI,WACnB8kD,EAAI/jD,KAAKf,IAAI,aACbU,EAAOK,KAAKf,IAAI,QAChBsE,EAAOvD,KAAKf,IAAI,QACZ8kD,EAAEu5B,WAAW/5E,KACb4W,EAAS4pC,EAAEr7B,WAAWnlB,GACtBslC,EAAc7oC,KAAKf,IAAI,eACvBkhC,EAAY9D,EAAQ9J,MAAM,SAC1B4uD,EAAiB,CACbzqC,KAAM,CAAC,gBAAiB,WAAY,SACpCtyB,QAAS,CAAC,UAEd88D,EAAsB,CAClB,aACA,kBACA,mBACA,yBACA,uBACA,uBACA,gBACA,eAEJ/mE,EAAOvT,SAAQ,SAACpD,GACZ,IAAIyI,EAAKC,EAAMixC,EAAMM;AACrB,IAC4B,UAAtBxxC,EAAMzI,EAAMkH,OACF,aAARuB,GACQ,kBAARA,GACQ,gBAARA,GACQ,kBAARA,GACQ,qBAARA,GACQ,oBAARA,GACQ,uBAARA,GACQ,aAARA,KACFC,EAAO1I,EAAMqJ,KAAOlE,EAAQmC,KAAKq1B,EAAWj0B,GAAQ,GACxD,CACE,GAAIpH,EAAK7F,IAAI,qBAAuB4pC,EAAY/mC,SAAS0B,EAAMqJ,MAC3D;AAEJ,GACMswC,EAAO35C,EAAMD,KAAO,IAAMC,EAAMqJ,KAClClE,EAAQmC,KAAKo2E,EAAqB/jC,IAAS,EAE3C;AAEJ,GAA8D,cAA/B,OAAzBM,EAAOj6C,EAAMmH,SAAmB8yC,EAAKl6C,UAAO,GAC9C;AAEJ84B,EAAQnxB,KACJ4L,GAAGjY,OAAO+J,OAAO,CACbpF,MAAOA,EAAMqJ,KACbu0E,OAAO,KAInB,GACmB,aAAf59E,EAAMkH,MACNnL,MAAM+gB,UAAU6gE,EAAe39E,EAAMmH,QAAQpH,OAC/C,CACE,GAAIuB,EAAK7F,IAAI,qBAAuB4pC,EAAY/mC,SAAS0B,EAAMqJ,MAC3D;AAEJ,OAAOs0E,EAAe39E,EAAMmH,QAAQpH,MAAMqD,SAAQ,SAAC22B,GAC/C,IAAI8jD,EAAMC,EAAMC;AAMhB,GACMF,EAAO79E,EAAMmH,QAAQpH,KAAO,IAAMg6B,EACpC50B,EAAQmC,KAAKq1B,EAAWkhD,GAAQ,GAChC14E,EAAQmC,KAAKq1B,EAAW5C,GAAK,IAC5BwmB,EAAE9nB,YAAY14B,EAAMg6B,IACrBwmB,EAAE9nB,YAAY14B,EAAMC,EAAMmH,QAAQpH,MACpC,CACE,GACM+9E,EAAO,KAAO99E,EAAMqJ,KACtBlE,EAAQmC,KAAKo2E,EAAqBI,IAAS,EAE3C;AAEJ,GACMC,EAAO/9E,EAAMD,KAAO,IAAMC,EAAMqJ,KAClClE,EAAQmC,KAAKo2E,EAAqBK,IAAS,EAE3C;AAEJ,OAAOllD,EAAQnxB,KACX4L,GAAGjY,OAAO+J,OAAO,CACbpF,MAAO+5B,EACP6jD,OAAO,EACP79E,KAAMC,EAAMmH,QAAQpH,KACpB2iB,SAAS,cAQ9BmW,EAAQz1B,SAAQ,SAAUqP,EAAMvK,GACnC,IAAI6D,EAAK/L,EAAOyI;AAChB,GAAkB,cAAdgK,EAAKvL,MA0BT,GAhBIuL,EAAKhX,IAAI,SAAS6C,SAAS,OAC3ByN,EAAM0G,EAAKhX,IAAI,SAASwQ,MAAM,KAC9BwG,EAAK9T,IAAI,QAASoN,EAAI,IACtB0G,EAAK9T,IAAI,OAAQoN,EAAI,IACrB0G,EAAK9T,IAAI,WAAW,IAExBoB,EAAO0F,EAAKhK,IAAI,QACZgX,EAAKhX,IAAI,QACTsE,EAAO0S,EAAKhX,IAAI,QAEhBgX,EAAK9T,IAAI,OAAQoB,GAErBC,EAAQhC,EAAAA,QAAU6N,cAAc9L,EAAO,IAAM0S,EAAKhX,IAAI,UACjDgX,EAAKhX,IAAI,SACVgX,EAAK9T,IAAI,OAAQqB,EAAMkH,MAEtBlH,EA6CL,OA1CIA,EAAM6K,SAAS4wB,aACfhpB,EAAK9T,IAAI,eAAe,IAEvB8T,EAAKhX,IAAI,WAAauE,EAAMmH,UACzBnH,EAAMqJ,KACNoJ,EAAK9T,IACD,SACAxC,EAAK2C,EAAE,iCACH,IACAkB,EAAMqJ,KAAKJ,cACX,OAEDjJ,EAAMmH,QAAQpH,MACrB0S,EAAK9T,IAAI,SAAU,kBAAoBqB,EAAMmH,QAAQpH,OAOjC,sBAAtB0I,EAAMzI,EAAMkH,OACF,oBAARuB,GACQ,uBAARA,IACJzI,EAAMmH,SAENsL,EAAK9T,IAAI,UAAWqB,EAAMmH,SAEX,SAAfnH,EAAMkH,OACNuL,EAAK9T,IAAI,OAAQ,QACZ8T,EAAKhX,IAAI,UACVgX,EAAK9T,IAAI,QAAS0N,SAAS2/B,QAAQ,SAASr+B,OAAO,eAElD8E,EAAKhX,IAAI,QACVgX,EAAK9T,IAAI,MAAO0N,SAAS4/B,MAAM,SAASt+B,OAAO,gBAGpC,WAAf3N,EAAMkH,MACNuL,EAAK9T,IAAI,QAAS8G,EAAKhK,IAAI,WAE3BM,MAAM+gB,UAAU9c,EAAM6K,SAAStE,SAC/BkM,EAAK9T,IAAI,SAAUqB,EAAM6K,SAAStE,QAElCxK,MAAM+gB,UAAUrK,EAAKhX,IAAI,YAClB6X,GAAGhY,eACNmK,EACAgN,EAAKhX,IAAI,QAAU,IAAMgX,EAAKhX,IAAI,SAClC6X,GAAG/V,SAASmhC,MAAM,WAAax2B,EAAQ,WAGpCoL,GAAGhY,eACNmK,EACAgN,EAAKhX,IAAI,SACT6X,GAAG/V,SAASmhC,MAAM,WAAax2B,EAAQ,gBAhF3CoL,GAAGhY,eACCmK,EACAgN,EAAKhX,IAAI,UACT6X,GAAG/V,SAASmhC,MAAM,WAAax2B,EAAQ,kBAkFvD81E,MAAOjiF,MAAMwB,SAAS,iBAAiB,WACnC,IAAIygF,EAAOvrE,EAAMunC,EAAGhrC,EAAOyP;AAC3B,GAAIjiB,KAAKf,IAAI,eAAgB,CAgBzB,IAAKu+C,KAfLhrC,EAAQxS,KAAKf,IAAI,SAAS6nB,OAAO,QACjC06D,EAAQ1qE,GAAG2V,EAAE,IACbja,EAAM5L,SAAQ,SAAUqP,GACpB,IAAI7I;AAEJ,OADAA,EAAO6I,EAAKhX,IAAI,QACZuiF,EAAMp0E,GACCo0E,EAAMp0E,GAAM+K,KAAKuW,WAAWzY,GAE3BurE,EAAMp0E,GAAQ,CAClBA,KAAM6I,EAAKhX,IAAI,QACfkZ,KAAM,CAAClC,OAInBgM,EAAMnL,GAAG2V,EAAE,IACD+0D,EACNvrE,EAAOurE,EAAMhkC,GACbv7B,EAAIyM,WAAWzY;AAEnB,OAAOgM,MAGfw/D,4BAA6B,SAAUj+E,EAAOzE,GAC1C,IAAI2iF,EAA0BC,EAAWC;AACzC,GAAKp+E,KAGDmF,EAAQmC,KAAK9K,KAAKf,IAAI,eAAgBuE,IAAU,GAIvCxD,KAAKf,IAAI,WAAWm9B,SAAS,QAAS54B,GACpCvE,IAAI,uBAsCnB,OAnCAyiF,EAA2B5qE,GAAG2V,EAAE,IAC5BzsB,KAAKf,IAAI,SACTe,KAAKf,IAAI,QACJwQ,MAAM,KACN7I,SAAQ,SAAU6rC,GACf,IAAInoB;AAEJ,OADAA,EAAWmoB,EAAMhjC,MAAM,KAChBiyE,EAAyBhzD,WAAW,CACvClrB,MAAO8mB,EAAS,GAChBvrB,MAAOurB,EAAS,QAIhCq3D,EAAYD,EAAyB/4D,OAAO,QAASnlB,GAChDzE,GAKgB,MAAbA,EAAME,KAAeF,EAAME,IAAI,QAC/BF,EAAQA,EAAME,IAAI,OAElB0iF,EACAA,EAAU5iF,MAAQA,EAElB2iF,EAAyBhzD,WAAW,CAChClrB,MAAOA,EACPzE,MAAOA,KAZX4iF,GACAD,EAAyBrzD,aAAaszD,GAe9CC,EAAU,GACVF,EAAyB96E,SAAQ,SAAUqP,GACvC,OAAO2rE,EAAQ12E,KAAK+K,EAAKzS,MAAQ,IAAMyS,EAAKlX,UAE5C6iF,EAAQ1uE,OAAS,EACVlT,KAAKmC,IAAI,OAAQy/E,EAAQjkE,KAAK,MAE9B3d,KAAKmC,IAAI,YAAQ,IAGhCo4C,QAAS,CACLsnC,cAAe,SAAU9iF,EAAOkqB,GAC5B,IAAI9E,EAAQ7U,EAAKwyE;AAsBjB,MArBkB,YAAd74D,GACAjpB,KAAKmC,IAAI,UAAWpD,GAExBiB,KAAKyhF,4BAA4Bx4D,EAAWlqB,IAC5C+iF,EAAiB9hF,KAAKf,IAAI,WAAWklB,QAAO,SAACA,GACzC,GAAIA,EAAOllB,IAAI,WAAagqB,GAAa9E,EAAOllB,IAAI,YAChD,OAAO,MAGIiU,OAAS,IACxBiR,EAAS29D,EAAe7iF,IAAI,eAC5BqQ,EAAM,GACDvQ,EAEMolB,EAAM,OACb7U,EAAI6U,EAAM,QAAcplB,EAExBuQ,EAAI2Z,GAAalqB,EAJjBiB,KAAKmC,IAAI,OAAQ,MAMrBnC,KAAKmC,IAAI,OAAQmN,IAEdtP,KAAKmC,IAAI,OAAQ,IAE5By5E,iBAAkB,SAAU5vC,EAAIrnB,GAC5B,MAAyB,WAArBplB,MAAM6I,OAAO4jC,GACNhsC,KAAK27E,kBAAkB3vC,GAEvBhsC,KAAK27E,kBAAkB3vC,EAAIrnB;;MC5VhCplB,MAAM04E,WAAW74E,OAAO,CACtCQ,QAASL,MAAMC,OAAOC,UACtBgiC,UAAWliC,MAAMC,OAAOC,QAAQ,qBAChCsiF,oBAAqBxiF,MAAMC,OAAOC,UAClCqhF,YAAavhF,MAAMC,OAAO88E,aAC1B38E,KAAMJ,MAAMC,OAAOC,UACnBuiF,eAAgBziF,MAAMwB,SAClB,gCACA,+BACA,sBACA,WACI,IAAIkhF,EAAWC,EAAUC;AAIzB,OAHAD,EAAWliF,KAAKyhC,UAAU2gD,eAC1BH,EAAYjiF,KAAKf,IAAI,iCACrBkjF,EAAWniF,KAAKf,IAAI,gCAChBgjF,EACOC,EAAW,IAAMD,EAAY,IAC7BE,EACAD,EAAW,IAAMC,EAAW,IAE5BD,EAAW;;MCjBhB3iF,MAAM04E,WAAW74E,OAAO,CACtCQ,QAASL,MAAMC,OAAOC,QAAQ,WAC9BqhF,YAAavhF,MAAMC,OAAO88E,aAC1B+F,eAAe,EACfp1C,oBAAqB1tC,MAAMC,OAAOC,UAClC6iF,iBAAkB/iF,MAAMC,OAAOC,UAC/B24E,QAAS74E,MAAMC,OAAOC,UACtBgiC,UAAWliC,MAAMC,OAAOC,QAAQ,qBAChCijB,IAAKnjB,MAAMC,OAAOC,UAClBE,KAAMJ,MAAMC,OAAOC,UACnB2vD,IAAK7vD,MAAMC,OAAOC,UAClB8iF,mBAAmB,EACnBxiF,KAAM,WAKF,GAJIC,KAAKf,IAAI,oCACTe,KAAK27E,kBAAkB,YAE3B37E,KAAKC,SACDD,KAAKf,IAAI,OAAOujF,MAChB,OAAOxiF,KAAKyiF,0BAGpBC,OAAQ5rE,GAAG/V,UAAS,WAChB,MAAqB,SAAjBM,EAAAA,QAAOq4E,SAKfiJ,QAASpjF,MAAMwB,UAAS,WACpB,MAAqB,UAAjBM,EAAAA,QAAOq4E,MACAr4E,EAAAA,QAAO6C,IAAIo1E,QAAU,8BACJ,SAAjBj4E,EAAAA,QAAOq4E,MACPr4E,EAAAA,QAAO6C,IAAIo1E,QAAU,6BAEzBj4E,EAAAA,QAAO6C,IAAIo1E,QAAU,oCAEhCsJ,aAAcrjF,MAAMwB,UAAS,WACzB,OAAOM,EAAAA,QAAO6C,IAAI2+E,gBAEtBC,YAAavjF,MAAMwB,UAAS,WACxB,OAAOM,EAAAA,QAAO6C,IAAI6+E,eAEtBpK,cAAe7hE,GAAG/V,UAAS,WACvB,OAAOf,KAAKf,IAAI,gCAEpB+jF,UAAWzjF,MAAMwB,SAAS,aAAa,WACnC,OAAIf,KAAKf,IAAI,aAAa2mC,UAAU,CAAC,gBAC1B,iBAEA,wBAGfq9C,iBAAkB1jF,MAAMwB,SAAS,gBAAgB,WAC7C,OAAIf,KAAKf,IAAI,iBAGQ,YAAjBoC,EAAAA,QAAOq4E,SAKfwJ,kBAAmB3jF,MAAMqjB,GAAG,QAAQ,WAChC,IAAQjN;AAGR,OADAA,EADK3V,KAAKf,IAAI,uBACAkkF,mBACPnjF,KAAKmC,IAAI,iBAAkBwT,MAEtCytE,sBAAuB7jF,MAAMukD,SAAS,kBAAkB,WACpD,IAAIu/B,EAAI1tE;AAGR,GAFAA,EAAW3V,KAAKf,IAAI,kBACpBokF,EAAKrjF,KAAKf,IAAI,uBACG,KAAb0W,EACA,OAAO0tE,EAAGC,iBAAiB,OAGnCC,eAAgBhkF,MAAMwB,UAAS,WAC3B,IAAIyiF,EAASl0E,EAAKm0E;AAElB,GADAD,EAAU1sE,GAAG2V,EAAE,IACQ,oBAAZolB,SAAuC,OAAZA,QAClC,IAAKviC,KAAOjO,EAAAA,QAAOqiF,aACfD,EAAK,IAAIpsB,OAAOh2D,EAAAA,QAAOqiF,aAAap0E,GAAKq0E,kBAAmB,KACxDzzD,UAAUmlC,UAAUt/C,MAAM0tE,IAC1BD,EAAQ90D,WAAWrtB,EAAAA,QAAOqiF,aAAap0E;AAInD,OAAOk0E,KAEXI,UAAWrkF,MAAMwB,UAAS,WACtB,MAA0B,oBAAZ8wC,SAAuC,OAAZA,WAE7CgyC,YAAatkF,MAAMwB,UAAS,WACxB,OAAOf,KAAKf,IAAI,QAAQqD,EAAE,sBAE9BmgF,uBAAwB,WACpB,IAAIqB,EAAM76E,EAAM86E;AAahB,OAZA96E,EAAOjJ,KACP+jF,EAAM,SAAU33C,GACA,IAARA,GACAnjC,EAAK9G,IAAI,qBAAqB,GAEtB,IAARiqC,GACAnjC,EAAK9G,IAAI,qBAAqB,IAGtC2hF,EAAO,SAAU13C,GACbnjC,EAAK9G,IAAI,qBAAqB,IAE3BmE,OAAOurC,QAAQmyC,KAAKD,EAAKD,EAAM,OAAQ,oBAAqB,KAEvEG,oBAAqB1kF,MAAMwB,SAAS,UAAU,WAE1C,OAAIf,KAAKf,IAAI,UACF,+BAIK,QAFNqH,OAAO4pB,UAAUg0D,cAAgB59E,OAAO4pB,UAAU0lC,UAC1CpiD,UAAU,EAAG,GAAG/G,cAEvB,+DAEJ,sCAEX8tC,QAAS,CACL4pC,cAAe,WACX,IAAIrjF,EAAMd,KAAKf,IAAI;AACnBqH,OAAOmzC,KAAK34C,EAAK,YAErBsjF,aAAc,WAAY,IAClBnjF,EAAMoiF,EAAIp6E,EADQnE,EAAA9E;AAMtB,OAJAA,KAAKf,IAAI,WAAWolF,YACpBp7E,EAAOjJ,KACPqjF,EAAKrjF,KAAKf,IAAI,wBACdgC,EAAOjB,KAAKskF,cAAc,iBAAkB,aAClCC,gBAAmBtjF,EAAKsyD,UAKlCvzD,KAAKmC,IAAI,oBAAoB,GAC7BnC,KAAKmC,IAAI,eAAgB,MAClBnC,KAAKf,IAAI,WACXmlF,aACG,+BACAnjF,EAAKsjF,eAAerxD,OACpBjyB,EAAKsyD,SAASrgC,QAEjBjuB,MAAK,WAGF,OAFAgE,EAAK9G,IAAI,oBAAoB,GAC7BkhF,EAAGC,iBAAiBriF,EAAKsjF,gBAClBz/E,EAAK7F,IAAI,WAAWmV,WAE9B49C,OAAM,SAAUoqB,GACb,IAAIz6E;AAMJ,GAJIy6E,EAAKoI,eACLpI,EAAOA,EAAKoI,cAEhBv7E,EAAK9G,IAAI,oBAAoB,GACxBi6E,EAUL,OADAz6E,EAAQy6E,EAAKz6E,MACRoS,MAAMpS,GAGAsH,EAAK9G,IAAI,eAAgB8G,EAAKhK,IAAI,QAAQqD,EAAE,SAAWX,IAFvDsH,EAAK9G,IAAI,eAAgBi6E,EAAK17E;AAVrCuI,EAAK9G,IACD,eACA8G,EAAKhK,IAAI,QAAQqD,EAAE,gBACf,OACA2G,EAAKhK,IAAI,QAAQqD,EAAE,wCA7BnCtC,KAAKmC,IAAI,eAAgBnC,KAAKf,IAAI,QAAQqD,EAAE,0CAC5CtC,KAAKmC,IAAI,oBAAoB,KAwCrCsiF,cAAe,WACX,OAAOzkF,KAAKmC,IAAI,iBAAkBnC,KAAKf,IAAI,kBAAkBwN,gBAEjEi4E,SAAU,SAAU3lF,EAAOooB,GACvB,IAAIw9D,EAAQC,EAAU/9E,EAAKg+E;AAM3B,GALAF,EAAS,MAAMpjF,KAAK2uB,UAAU40D,UAElB,cADZj+E,EAAMsgB,EAAE49D,cAAcl+E,WACkC,IAAvB7G,KAAKf,IAAI,WACtCe,KAAK8zD,eAAe,UAEnBjtD,KAAOA,EAAIqM,OAAS,GAAzB,CAIA,GADA2xE,EAAW19D,EAAE49D,cAAcF,SACvBh+E,GAAO,KAAOA,GAAO,IACrB+9E,GAAYC;IACT,CAAA,KAAIh+E,GAAO,KAAOA,GAAO,MAASg+E,GAAYF,EAGjD,OAAO;AAFPC,EAAWC,EAKf,OADA7kF,KAAKmC,IAAI,SAAUyiF,IACZ;eCjNnBlmF,OAAA,yBAAA,CAAA,YAAA,SAAAC,GAGAE,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAJ,EAAAO,aAAA;AACA,IAAAm/E,EAAA9+E,MAAA04E;AACAt5E,EAAAO,QAAAm/E;MCI4B9+E,MAAM04E,WAAW74E,OAAO4lF,EAAAA,QAAW,CAC3DvjD,UAAWliC,MAAMC,OAAOC,QAAQ,qBAChCwlF,qBAAsB1lF,MAAMC,OAAO88E,WAAW,+BAC9C4I,mBAAoB3lF,MAAMC,OAAO88E,WAAW,6BAC5C6I,sBAAuB5lF,MAAMC,OAAO88E,WAAW,eAC/C8I,eAAgB7lF,MAAMC,OAAO88E,WAAW,yBACxC+I,mBAAoB9lF,MAAMC,OAAO88E,WAAW,YAC5Cp5B,UAAW3jD,MAAMC,OAAOC,UACxBE,KAAMJ,MAAMC,OAAOC,UACnB6lF,IAAK/lF,MAAMC,OAAOC,UAClB8lF,SAAUhmF,MAAMwB,SAASmhC,MAAM,+BAC/B76B,KAAM9H,MAAMwB,SAASmhC,MAAM,8BAC3BsjD,iBAAkB,KAClBxE,eAAgB,WAEZ,OADAhhF,KAAKC,SACED,KAAKf,IAAI,sBAAsBkD,IAAI,eAAgB,YAE9DsjF,aAAclmF,MAAMqjB,GAChB,OACArjB,MAAMukD,SAAS,eAAe,WAC1B,IAAInkD,EAAM8lF;AAaV,OAZA9lF,EAAOK,KAAKf,IAAI,QAChBwmF,EAAe,WACX,OAAQzlF,KAAKf,IAAI,gBACb,KAAK,EACD,OAAOU,EAAK2C,EAAE;AAClB,KAAK,EACD,OAAO3C,EAAK2C,EAAE;AAElB,KAAK,EACD,OAAO,OAEjBwI,KAAK9K,MACAA,KAAKf,IAAI,sBAAsBkD,IAAI,eAAgBsjF,OAGlEC,eAAgBnmF,MAAMwB,SAAS8jE,MAAM,cAAe,GACpD8gB,UAAWpmF,MAAMwB,UAAS,WACtB,IAAIpB;AAEJ,OADAA,EAAOK,KAAKf,IAAI,QACT6X,GAAG2V,EAAE,CACR9sB,EAAK2C,EAAE,kBACP3C,EAAK2C,EAAE,kBAEP3C,EAAK2C,EAAE,uBAGfsjF,aAAcrmF,MAAMqjB,GAChB,OACArjB,MAAMukD,SAAS,eAAe,WAC1B,IAAI3gB,EAAatwB,EAAGnH,EAAOqH,EAAKi1B,EAAM29C,EAAW1jE;AAIjD,IAHAkhB,EAAcnjC,KAAKf,IAAI,eACvB0mF,EAAY3lF,KAAKf,IAAI,aACrBgjB,EAAMnL,GAAG2V,EAAE,IACN/gB,EAAQmH,EAAI,EAAGE,EAAM4yE,EAAUzyE,OAAQL,EAAIE,EAAKrH,IAAUmH,EAC3Dm1B,EAAO29C,EAAUj6E,GACjBuW,EAAIyM,WACA5X,GAAGjY,OAAO+J,OAAO,CACbiE,KAAMm7B,EACNnrB,OAAQsmB,EAAc,GAAKz3B,EAC3BsxB,KAAMmG,EAAc,EAAIz3B,EACxBm6E,IAAKn6E,EAAQ;AAIzB,OAAO1L,KAAKf,IAAI,sBAAsBkD,IAAI,QAAS8f,OAG3D1W,SAAUuL,GAAG2V,EAAE,IACfq5D,YAAavmF,MAAMqjB,GACf,OACArjB,MAAMukD,SAAS,mBAAoB,mBAAmB,WAAY,IAC1DwhC,EAAK3gE,EADqD7f,EAAA9E;AAE9D,GAAKA,KAAKf,IAAI,oBAWd,OARAqmF,EAAMtlF,KAAKf,IAAI,OACf0lB,EAAS,CACL1jB,KAAM,CACFuM,QAASxN,KAAKf,IAAI,oBAClB+vB,OAAQhvB,KAAKf,IAAI,mBACjBwtC,KAAM58B,OAAO2B,WAGdxR,KAAKf,IAAI,aACXA,IAAI,WAAY0lB,GAChB1f,MAAK,SAACsG,GAWH,OAVAA,EAAWA,EAASsW,KAAI,SAAU5L,GAC9B,OAAIA,EAAKszC,OAAwC,UAA/BtzC,EAAKszC,MAAM/1C,UAAU,EAAG,GAC9ByC,EAAK+oD,KAAO/oD,EAAKszC,MAAM/1C,UAAU,IAEzCyC,EAAKszC,MAAQtzC,EAAKszC,MACZ+7B,EAAIxkF,IAAI,mBAAqBmV,EAAKszC,YAClC,EACChqD,MAAMV,OAAO+J,OAAOqN,OAG5BnR,EAAK3C,IAAI,WAAY2U,GAAG2V,EAAElhB,WAIjD43B,YAAa5jC,MAAMwB,SAAS,iCAAiC,WACzD,IAAIsE;AAEJ,KADAA,EAAOrF,KAAKf,IAAI,+BAEZ,OAAO;AAEX,OAAQoG,EAAK,IACT,IAAK,aACD,OAAO;AACX,IAAK,WACD,OAAO;AACX,IAAK,UACD,OAAO;AACX,IAAK,OACD,OAAO;AACX,QACI,OAAO,MAyDnBk1C,QAAS,CACL5jC,KAAM,WACF,OAAO3W,KAAK27E,kBAAkB,sBAElCoK,SAAU,WAAY,IACdC,EAAmCR,EAAkBv8E,EADvC4N,EAAA7W;AAGlB,OADcA,KAAKf,IAAI,gBAEnB,KAAK,EAGD,OAFAgK,EAAOjJ,MACPgmF,EAAuBhmF,KAAKf,IAAI,yBACJ2W,WAAW3Q,MAAK,WACxC,IAAIq4B,EAAK37B,EAAOgB;AAIhB,IAAKhB,KAHLqkF,EAAqBC,sBAErB3oD,GAAM,EADN36B,EAASqjF,EAAqB/mF,IAAI,UAG1B0D,EAAOujF,eAAevkF,KACjB27B,IACDA,GAAM;AAIlB,IAAKA,EACD,OAAOr0B,EAAK0yE,kBAAkB;AAK1C,KAAK,EAED,IADA6J,EAAmBxlF,KAAKf,IAAI,wCACPiU,OAAS,EAC1B;AAYJ,OAVAlT,KAAKmC,IAAI,mBAAoBqjF,GAK7BxlF,KAAKf,IAAI,kBACJknF,sBACAlhF,MAAK,SAACmhF,GACH,OAAOvvE,EAAK8hB,KAAK,kBAAmBytD,MAErCpmF,KAAK27E,kBAAkB;AAClC,KAAK,EACD,OAAO37E,KAAKf,IAAI,kBAAkBonF,mBAG9CC,gBAAiB,SAAUF,GACvB,OAAOpmF,KAAKf,IAAI,aAAasK,KAAK,CAC9BzI,IAAK,YACLD,OAAQ,OACRI,KAAM,CACFslF,UAAWH,EAAeG,UAC1B15E,KAAM7M,KAAKf,IAAI,oBACfunF,UAAWxmF,KAAKf,IAAI,sBACpB0W,SAAUywE,EAAezwE,SACzBnI,QAASxN,KAAKf,IAAI,oBAClBwnF,MAAOzmF,KAAKf,IAAI,kBAChBynF,qBACI1mF,KAAKf,IAAI,sBAAwB,IAAMe,KAAKf,IAAI,qBACpD0nF,sBAAuB3mF,KAAKf,IAAI,kBAChC2nF,sBAAuB5mF,KAAKf,IAAI,kBAChC4nF,gBAAiB7mF,KAAKf,IAAI;;ACtP9C,IACI0J,EAAU,GAAGA,UAQcpJ,MAAM04E,WAAW74E,OAAOw8C,EAAAA,QAAW,CAC9DkrC,iBAAkB,QAClBxB,IAAK/lF,MAAMC,OAAOC,UAClBE,KAAMJ,MAAMC,OAAOC,UACnBsnF,YAAa,aACbC,UAAW,aACXR,UAAW1vE,GAAG/V,UAAS,WACnB,GACIf,KAAKf,IAAI,gBACTe,KAAKf,IAAI,cACT4Q,SAASsB,OAAO,eAAiBnR,KAAKf,IAAI,gBAC1C4Q,SAASsB,OAAO,eAAiBnR,KAAKf,IAAI,aAE1C,MAAO,cAGf4pC,YAAa,CAAC,UAAW,SAAU,SAAU,QAAS,QAAS,QAC/Do+C,WAAYnwE,GAAGgtC,SACX,UACA,SACA,SACA,QACA,QACA,QACA,YACA,WACI,IAAat2C;AACb,GAAIxN,KAAKf,IAAI,WACTe,KAAKmC,IAAI,gBAAiBnC,KAAKf,IAAI,YACnCe,KAAKmC,IAAI,eAAgBnC,KAAKf,IAAI,WAClCe,KAAKmC,IAAI,eAAgBnC,KAAKf,IAAI,WAClCe,KAAKmC,IAAI,aAAcnC,KAAKf,IAAI,SAC5Be,KAAKf,IAAI,aACTe,KAAKmC,IAAI,kBAAmBnC,KAAKf,IAAI,cAErCe,KAAKmC,IAAI,kBAAmBnC,KAAKf,IAAI,UAEzCe,KAAKmC,IAAI,cAAenC,KAAKf,IAAI,UACjCe,KAAKmC,IAAI,iBAAkBnC,KAAKf,IAAI,kBACF,IAA9Be,KAAKf,IAAI,mBAGO,QADhBuO,GADUlH,OAAO4pB,UAAUg0D,cAAgB59E,OAAO4pB,UAAU0lC,UAC1CpiD,UAAU,EAAG,GAAG/G,iBAE9Be,EAAU,MAEV7E,EAAQmC,KAAK9K,KAAKf,IAAI,aAAaszB,MAAM,MAAO/kB,IAAY,IAC5D,OAAOxN,KAAKmC,IAAI,gBAAiBqL,MAMrD05E,YAAa,CACT/E,SAAU,CACN7zE,WAAW,GAEfk+B,MAAO,CACHl+B,WAAW,EACX64E,cAAc,EACd36C,OAAO,EACPsmB,UAAW,IAEfsmB,QAAS,CACL9qE,WAAW,GAEfm4E,MAAO,CACHn4E,WAAW,GAEf84E,MAAO,CACH94E,WAAW,GAEfd,QAAS,CACLc,WAAW,GAEfilD,SAAU,CACNjlD,WAAW,EACXukD,UAAW,IAGnBw0B,gBAAiB9nF,MAAMV,OAAO+J,SAC9BkiB,UAAW,CACP,CACInnB,GAAI,KACJ5E,MAAO,WAEX,CACI4E,GAAI,KACJ5E,MAAO,WAOfuoF,kBAAkB,EAClBjoD,OAAQ9/B,MAAMwB,SAASmhC,MAAM,SAC7BqlD,aAAczwE,GAAGgtC,SAAS,eAAe,WACrC,IAAI0jC,EACAC,EACAj7C,EAEAk7C,EACAC,EACAC,EACAC;AAGJ,GAFAF,EAAY,CAAC,QAAS,QAAS,UAAW,WAE7B,OADbn7C,EAAQxsC,KAAKf,IAAI,oBAIjB4oF,EAAiBr7C,EAAM/8B,MAAM,MACVyD,OAAS,GAY5B,OAPAu0E,GADAG,GADAJ,EAASK,EAAe,IACCp4E,MAAM,MACA,GAG3Bi4E,EAFgBE,EAAgB10E,OAAS,EAE5BvK,EAAQmC,KAAK68E,EAAWF,IAAiB,EAAI,GAAKD,EAElD,GAEVxnF,KAAKmC,IAAI,eAAgBulF,MAEpC3tB,cAAejjD,GAAG2V,EAAE,CAChBq7D,kBAAkB,EAClB/kF,OAAO,IAEXglF,kBAAkB,EAClB7V,eAAgB3yE,MAAMwB,UAAS,WAC3B,OAAOf,KAAKf,IAAI,QAAQqD,EAAE,mBAE9B68E,cAAe,CACX6I,MAAO,CACH3rE,SAAU,8BACV4rE,YAAY,GAEhBC,MAAO,CACH7rE,SAAU,6BACV4rE,YAAY,IAGpBE,UAAW5oF,MAAMwB,UAAS,WAGtB,OADMf,KAAKf,IAAI,OACP4Q,OAAO2B,UACX,IAAK,KACD,OAAOnQ,EAAAA,QAAO+mF,mBAAmBC;AACrC,IAAK,KACL,IAAK,KACD,OAAOhnF,EAAAA,QAAO+mF,mBAAmBE;AACrC,QACI,OAAOjnF,EAAAA,QAAO+mF,mBAAmBG,OAG7CtC,oBAAqB,WACjB,IAAIziF,EAAO45C;AAGX,IAAK55C,KADL45C,EAAU,GADIp9C,KAAKf,IAAI,eAGnBm+C,EAAQlyC,KAAKlL,KAAKwoF,mBAAmBhlF;AAEzC,OAAO45C,GAEXorC,mBAAoB,SAAUhlF,GAC1B,IAAI7B,EAAO67C,EAAGxf;AASd,IAAKwf,KARAx9C,KAAKf,IAAI,mBAAqBuE,IAC/BxD,KAAKmC,IAAI,mBAAqBqB,EAAOjE,MAAMV,OAAO+J,WAEtDjH,EAAQ3B,KAAKf,IAAI,UAAYuE,MAEzBxD,KAAKmC,IAAI,mBAAqBqB,EAAQ,OAAO,GAC7CxD,KAAKmC,IAAI,mBAAqBqB,EAAQ,UAAU,IAE1C7B,EAIN,OAHAq8B,EAAOr8B,EAAM67C,GACbx9C,KAAKmC,IAAI,mBAAqBqB,EAAQ,OAAO,QAC7CxD,KAAKmC,IAAI,mBAAqBqB,EAAQ,SAAUw6B,IAIxDuc,QAAS,CACLkuC,SAAU,WAQN,OAPAzoF,KAAKmC,IAAI,kBAAmB,iBAC5BnC,KAAKmC,IAAI,iBAAkB,gBAC3BnC,KAAKmC,IAAI,cAAesP,KAAK+a,SAAS3hB,SAAS,IAAI2I,UAAU,GAAK,aAClExT,KAAKmC,IAAI,gBAAiB,oBAC1BnC,KAAKmC,IAAI,cAAe,aACxBnC,KAAKmC,IAAI,cAAe,gBACxBnC,KAAKmC,IAAI,gBAAiB,MACnBnC,KAAKmC,IAAI,iBAAkB,aAGtCy+B,OAAQ,SAAUp9B,EAAOzE,GAAO,IAAA+F,EAAA9E;AAM5B,OAJOA,KACGA,KAAK4V,SAAS,CAACpS,IAGVyB,MAAK,WAChB,OAAOH,EAAK0jF,mBAAmBhlF,OAGvCklF,UAAW,SAAUllF,GACjB,OAAOxD,KAAKmC,IAAIqB,EAAQ,WAAW,IAEvC8xB,cAAe,SAAU9xB,GAAO,IAAAqT,EAAA7W;AAK5B,OAHAA,KAAKmC,IAAI,cAAenC,KAAKf,IAAI,eAAewN,eAChDzM,KAAKmC,IAAIqB,EAAQ,WAAW,GAClBxD,KAAK4V,SAAS,CAACpS,IACVyB,MAAK,WAChB,OAAO4R,EAAK2xE,mBAAmBhlF,OAGvCmlF,iBAAkB,SAAUnlF,GAAO,IAAAigB,EAAAzjB;AAI/B,OAFAA,KAAKmC,IAAIqB,EAAQ,WAAW,GAClBxD,KAAK4V,SAAS,CAACpS,IACVyB,MAAK,WAChB,OAAOwe,EAAK+kE,mBAAmBhlF,OAGvColF,YAAa,SAAUplF,GACnB,GAAIxD,KAAKf,IAAI,mBAAqBuE,GAC9B,OAAOxD,KAAKmC,IAAI,mBAAqBqB,EAAQ,UAAU;;;MCvO3CjE,MAAM04E,WAAW74E,OAAO,CAChDimF,mBAAoB9lF,MAAMC,OAAO88E,WAAW,YAC5CkJ,iBAAkBjmF,MAAMwB,SAASmhC,MAAM,uCACvC32B,SAAUhM,MAAMwB,SAASmhC,MAAM,+BAC/B2mD,eAAgBtpF,MAAMqjB,GAClB,OACArjB,MAAMukD,SAAS,6BAA6B,WACxC,IAAIglC,EAAUj2E,EAAGE,EAAKg2E,EAAOC,EAASC,EAAc15C;AAGpD,IADAA,EAAM,EACD18B,EAAI,EAAGE,GAFZk2E,EAAejpF,KAAKf,IAAI,iBAEOiU,OAAQL,EAAIE,EAAKF,IAE5Ci2E,GADAE,EAAUC,EAAap2E,IACJ5T,IAAI,YACvB8pF,EAAQC,EAAQ/pF,IAAI,UAAY+pF,EAAQ/pF,IAAI,SAC5C+pF,EAAQ7mF,IAAI,WAAY4mF,GAAS,OAC7BA,IACAx5C,GAAOw5C;AAIf,OADA/oF,KAAKmC,IAAI,MAAOotC,GAAO,OAChBvvC,KAAKmC,IAAI,cAAe2mF,OAGvCG,aAAc1pF,MAAMwB,SAAS,mBAAoB,YAAY,WACzD,IAAI8R,EAAGE,EAAKi2E,EAAS/mE,EAAKujE;AAI1B,IAHAA,EAAmBxlF,KAAKf,IAAI,oBAE5BgjB,EAAMnL,GAAG2V,EAAE,IACN5Z,EAAI,EAAGE,EAAMyyE,EAAiBtyE,OAAQL,EAAIE,EAAKF,IAChDm2E,EAAUxD,EAAiB3yE,GAC3BoP,EAAIyM,WACA5X,GAAGjY,OAAO+J,OAAO,CACbiE,KAAMm8E,EAAQr8C,OACdo8C,MAAOC,EAAQD,MACfD,SAAUE,EAAQF,SAClB9xB,YAAah3D,KAAKkpF,eAAeF,EAAQG;AAIrD,OAAOlnE,KAEXinE,eAAgB,SAAUC,GACtB,OAAQA,GACJ,IAAK,UACD,MAAO;AACX,IAAK,aACD,MAAO;AACX,QACI,MAAO;;MChDE5pF,MAAM04E,WAAW74E,OAAO,CAC7CimF,mBAAoB9lF,MAAMC,OAAO88E,WAAW,oBAC5CwE,YAAavhF,MAAMC,OAAO88E,aAC1BiJ,SAAUhmF,MAAMwB,SAASmhC,MAAM,+BAC/BsjD,iBAAkBjmF,MAAMwB,SAASmhC,MAAM,uCACvCT,UAAWliC,MAAMC,OAAOC,QAAQ,qBAChCwtC,oBAAqB1tC,MAAMC,OAAOC,UAClC6iF,iBAAkB/iF,MAAMC,OAAOC,UAC/B24E,QAAS74E,MAAMC,OAAOC,UACtBE,KAAMJ,MAAMC,OAAOC,UACnBu9B,MAAM,EACNu2B,SAAU,KACV3zD,QAASL,MAAMC,OAAOC,UACtB4mF,eAAgB,WAAY,IACpB+C,EAAiCzzE,EADb7Q,EAAA9E;AAWxB,OATA2V,EAAW3V,KAAKf,IAAI,YACTe,KAAKf,IAAI,YACpBmqF,EAASppF,KAAKf,IAAI,YACXe,KACGA,KAAKf,IAAI,WAAWmlF,aAC1B,+BACAzuE,EACAyzE,GAEWnkF,MAAK,WAChB,OAAOH,EAAKukF,4BAA4BpkF,MAAK,WAQzC,OANAH,EAAK7F,IAAI,oBAAoBqqF,WAAW,mBAAoB,MAE5DxkF,EAAK7F,IAAI,oBAAoBqqF,WAAW,gCAAiC,MAIlExkF,EAAK7F,IAAI,WAAWmV,eAIvC+xE,oBAAqB,WAAY,IACzBpiC,EAAG/5C,EAASf,EAAMs8E,EADO1uE,EAAA7W;AAgF7B,OA/DAulF,EAAWvlF,KAAKf,IAAI,YACpB8kD,EAAI/jD,KAAKf,IAAI,aACbgK,EAAOjJ,MACPgK,EAAU+5C,EAAEx6C,KAAK,CACbzI,IAAK,gBACLD,OAAQ,OACRI,KAAM,CACFghF,UAAWsD,EAAStmF,IAAI,aACxBkjF,SAAUoD,EAAStmF,IAAI,YACvBuO,QAAS+3E,EAAStmF,IAAI,WACtBm6E,QAASmM,EAAStmF,IAAI,WACtBwnF,MAAOlB,EAAStmF,IAAI,SACpBmoF,MAAO7B,EAAStmF,IAAI,SACpButC,MAAO+4C,EAAStmF,IAAI,SACpBuoF,OAAQjC,EAAStmF,IAAI,UACrBs0D,SAAUgyB,EAAStmF,IAAI,YACvBsM,SAAUvL,KAAKf,IAAI,oBAAoBszB,MAAM,QAAQ5U,KAAK,SAG1D1Y,MAAK,SAAC0R,GASV,OAPA1N,EAAK9G,IAAI,WAAYwU,EAAKhB,UAC1B1M,EAAK9G,IAAI,SAAUwU,EAAKi+D,QACnB/9D,EAAK5X,IAAI,uBACXqkF,iBAAiB3sE,EAAKhB,UACzB1M,EAAK9G,IAAI,WAAYojF,EAAStmF,IAAI,aAClCgK,EAAK9G,IAAI,QAAQ,GAEV0U,EAAK5X,IAAI,oBAAoB2H,SAAQ,SAAUoiF,GAClD,IAAIO,EAAcC,EAAgBC,EAAeC,EAAeC;AAChE,GAA4B,SAAxBX,EAAQ/pF,IAAI,QAeZ,OAdAsqF,EAAehE,EAAStmF,IAAI,WAC5ByqF,EAAgBnE,EAAStmF,IAAI,WAC7BuqF,EAAiBjE,EAAStmF,IAAI,YAAc,IAAMsmF,EAAStmF,IAAI,aAC/DwqF,EACIxgF,EAAKhK,IAAI,QAAQqD,EAAE,WAAaonF,EAAgB,gBAChD,WACAzgF,EAAKhK,IAAI,QAAQqD,EAAE,WAAaonF,EAAgB,sBAChD,QACAF,EACA,OACAjE,EAAStmF,IAAI,SACb,OACAsmF,EAAStmF,IAAI,SACjB0qF,EAAe1gF,EAAKhK,IAAI,QAAQqD,EAAE,WAAaonF,EAAgB,eACvD1/E,EAAUf,EAAKhK,IAAI,aAAa+kD,MAAM,CAC1CljD,IAAK,eACLG,KAAM,CACF2lB,QAAS6iE,EAAcr6E,QAAQ,aAAcm6E,GAC7C58C,OAAQg9C,EAAav6E,QAAQ,aAAcm6E,GAC3C/7E,QAASk8E,GAEb7oF,OAAQ,eAKxBmJ,EAAQgoD,OAAM,SAAUr7C,GACpB,IAAIsL;AAGJ,OAFAA,EAAM/e,KAAKwD,MAAMiQ,EAAK3U,cACtBK,MAAM,+CAAiD4f,EAAIvhB,mBACpDuI,EAAK0yE,kBAAkB,YAE3B3xE,GAEXq/E,0BAA2B,WAGvB,OADIrpF,KAAKf,IAAI,aACJ+kD,MAAM,CACXljD,IAAK,uBACLG,KAAM,CACF2oF,UAAW,CAAC5pF,KAAKf,IAAI,WACrByL,KAAM,iBAEV7J,OAAQ,UAGhB05C,QAAS,CACLsvC,MAAO,WACH,OAAO7pF,KAAKqmF;;MCrIK9mF,MAAM04E,WAAW74E,OAAO,CACjDO,KAAMJ,MAAMC,OAAOC,UACnB4lF,mBAAoB9lF,MAAMC,OAAO88E,WAAW,oBAC5CkJ,iBAAkB1uE,GAAG2V,EAAE,IACvBq9D,aAAcvqF,MAAMukD,SAAS,2BAA2B,WACpD,OAAO9jD,KAAKmC,IAAI,mBAAoB2U,GAAG2V,EAAEzsB,KAAKf,IAAI,YAAYm9B,SAAS,YAAY,QAEvF7wB,SAAUhM,MAAMwB,SAASmhC,MAAM,+BAC/B6nD,UAAWxqF,MAAMwB,SAAS,YAAY,WAClC,IAAIpB;AAEJ,OADAA,EAAOK,KAAKf,IAAI,QACTe,KAAKf,IAAI,YAAY4iB,KAAI,SAAU5L,GAgBtC,OAfAA,EAAK+zE,eAAkB,WACnB,OAAQ/zE,EAAKkzE,WACT,IAAK,UACD,OAAOxpF,EAAK2C,EAAE;AAClB,IAAK,aACD,OAAO3C,EAAK2C,EAAE;AAClB,IAAK,WACD,OAAO3C,EAAK2C,EAAE;AAClB,IAAK,oBACD,OAAO3C,EAAK2C,EAAE,0CATH,GAYnB2T,EAAKszC,OAAwC,UAA/BtzC,EAAKszC,MAAM/1C,UAAU,EAAG,KACtCyC,EAAK+oD,KAAO/oD,EAAKszC,MAAM/1C,UAAU,IAE9ByC,QAGfskC,QAAS,CACL0vC,SAAU,SAAUtoD,GAChB,OAAOr7B,OAAOmzC,KAAK9X,EAAM,WAE7BppB,KAAM,WAIF,OAFqBvY,KAAKf,IAAI,sBACXkD,IAAI,mBAAoBnC,KAAKf,IAAI,qBAC7Ce,KAAK27E,kBAAkB,2BAElC57D,MAAO,SAAUxV,GAEb,OADAA,EAAOupD,eAAe,aACf;;AC9CnB,IACInrD,EAAU,GAAGA,QAcT8P,EAAalZ,MAAbkZ,WAEUlZ,MAAM04E,WAAW74E,OAAO8qF,EAAAA,QAAW,CACjDzoD,UAAW3qB,GAAGtX,OAAOC,QAAQ,qBAC7BE,KAAMJ,MAAMC,OAAOC,UACnBopC,YAAa,CAAC,UACdjP,OAAQ,GACRr2B,KAAMuT,GAAG/V,SAAS,SAAS,WACvB,OAAOf,KAAKf,IAAI,kCAEpBkrF,WAAW,EACXV,cAAe3yE,GAAG/V,UAAS,WACvB,OAAOf,KAAKf,IAAI,QAAQqD,EAAE,8BAA+B,CACrD65E,OACIn8E,KAAKf,IAAI,iCACT,IACAe,KAAKf,IAAI,qCAGrBkb,OAAQ5a,MAAMwB,SAAS,SAAS,WAAY,IACpCgjD,EAAGo7B,EAAeiL,EAAgBjwE,EAAQ5W,EAAMiP,EAAOnI,EAASpB,EAD5BnE,EAAA9E;AAmBxC,OAjBAiJ,EAAOjJ,MAKHqK,GAJJ9G,EAAOvD,KAAKf,IAAI,gCAIFe,KAAKyhC,UAAUtnB,OAAO5W,GAFtBvD,KAAKf,IAAI,oBAKnBoL,EAAUrK,KAAKf,IAAI,aAEvBuT,EAAQxS,KAAKf,IAAI,WAEbM,MAAMkD,IAAI8V,KAAKvY,MAAM,WACjB,OAAO8E,EAAK62E,kBAAkB,YAGtCxhE,EAAS,GACJ9P,GAGD9G,IACA6mF,EAAiBC,EAAAA,QAAelU,qBACViU,EAAe7mF,KACjC47E,EAAgBiL,EAAe7mF,GAC/BwgD,EAAI/jD,KAAKf,IAAI,cAGrBmK,EAAAA,QAAEe,KAAKE,GAAS,SAAUqB,EAAO4+E,GAC7B,IAAI/6E,EAAK0J,EAAM3J,EAAKvQ;AAMpB,GAJAuQ,EAAMpM,KAAKwD,MAAMxD,KAAKC,UAAUmnF,IAC5BnL,GAAiBA,EAAc7vE,EAAI25B,OACnC35B,EAAMy0C,EAAEwmC,eAAej7E,EAAK6vE,EAAc7vE,EAAI25B,SAE9ChgC,EAAKhK,IAAI,gBAA8D,IAA7CgK,EAAKhK,IAAI,cAAc0J,QAAQ2G,EAAI25B,QAGjE35B,EAAI25B,IAAMv9B,EAGN8G,EAAMvT,IAAIqQ,EAAI25B,MAAM,CACpB,GAAIrnC,MAAMkB,QAAQ0P,EAAMvT,IAAIqQ,EAAI25B,OAASz2B,EAAMvT,IAAIqQ,EAAI25B,IAAM,WAAa,EACtE;AAEJ,KAAMhgC,EAAKw4B,UAAU+oD,SAASl7E,EAAKkD,IAAsB,eAAZlD,EAAI25B,OAChC,OAAT1lC,GAA0B,QAATA,UACV+L,EAAIzC,MAEf0C,EAAO,WACH,OAAQD,EAAI25B,KACR,IAAK,UA2BD,OA1BIz2B,EAAMvT,IAAI,YAENga,EADuC,WAAvC1Z,MAAM6I,OAAOoK,EAAMvT,IAAI,YAChBiE,KAAKwD,MAAM8L,EAAMvT,IAAI,YAErBuT,EAAMvT,IAAI,WAErBF,EAAQ,IAAIQ,MAAMua,OAAOiH,SACrB,uCACI9H,EAAK+d,QACL,aACA/d,EAAKwxE,YACL,WACAxxE,EAAKyxE,UACL,QACAzxE,EAAK0xE,SACL,KACA1hF,EAAKhK,IAAI,QAAQqD,EAAE,8BACnB,KACA2G,EAAKhK,IAAI,QAAQqD,EAAE,gCACnB,KACA2W,EAAK2xE,UACL,WAGR7rF,EAAQ,GAEL,CACHA,MAAOA;AAEf,QACI,MAAO,CACHA,MAAOkK,EAAKw4B,UAAUtwB,OAClBqB,EAAMvT,IAAIqQ,EAAI25B,KACd35B,EACArG,EACAuJ,GACA,EACAjP,KAxCb,IA6CER,QACLwM,EAAIxM,MAAQkG,EAAKw4B,UAAUopD,aAAatnF,EAAMuT,GAAGjY,OAAO+J,OAAO0G,KAE/DC,EAAIxQ,OACJ,OAAOob,EAAOjP,KAAKqE,OAK5B4K,GApFIA,KAsFfwnB,KAAM7qB,GAAG/V,SAAS,QAAS,aAAa,WACpC,IAAI+pF;AAEJ,OADAA,EAAY9qF,KAAKf,IAAI,cAEQ,WAArBuD,EAAOsoF,GACAA,EAAU5U,MAEV4U,EAEJ9qF,KAAKf,IAAI,SACTe,KAAKf,IAAI,+BAA+BsnC,aACjC,UAEP,WAGfwkD,QAASj0E,GAAG/V,SAAS,SAAS,WAC1B,IAAIiqF;AACJ,GAAIhrF,KAAKf,IAAI,SAAU,CAGnB,GAAyB,MAFhBwZ,EAASzY,MAAM0Y,OAAO,eAAeuyE,gBAAgBC,WAAW34B,MACzEy4B,EAAYhrF,KAAKf,IAAI,+BAAiC,SAElD,OAAO+rF;AACJ,GAAIhrF,KAAKf,IAAI,eAChB,OAAOe,KAAKf,IAAI,eAGxB,OAAO,KAEX26C,UAAW9iC,GAAG/V,SAAS,SAAS,WAC5B,IAAIiqF;AACJ,GAAIhrF,KAAKf,IAAI,SAAU,CAGnB,GAAyB,MAFhBwZ,EAASzY,MAAM0Y,OAAO,eAAeuyE,gBAAgBC,WAAW34B,MACzEy4B,EAAYhrF,KAAKf,IAAI,+BAAiC,UAElD,OAAO+rF;AACJ,GAAIhrF,KAAKf,IAAI,gBAChB,OAAOe,KAAKf,IAAI,gBAGxB,OAAO,KAEXksF,UAAWr0E,GAAG/V,SAAS,QAAS,aAAa,WACzC,IAAI+pF;AAEJ,OADAA,EAAY9qF,KAAKf,IAAI,eACiB,WAArBuD,EAAOsoF,GACbA,EAAUnmE,OAEV,QAGfymE,0BAA2B7rF,MAAMwB,UAAS,WACtC,IAAIyC,EAAO2W,EAAQ9G;AAGnB,IAAK7P,KADL6P,GAAQ,EADR8G,EAASna,KAAKf,IAAI,aAAakb,OAAOna,KAAKf,IAAI,SAIhB,WAAvBkb,EAAO3W,GAAOkH,OACbyP,EAAO3W,GAAO6K,SAASkpC,UACxB5uC,EAAQmC,KAAKqP,EAAO3W,GAAOmH,QAAS,aAAe,IAEnD0I,GAAQ;AAGhB,OAAOA,KAEXg4E,YAAa,WAAiC,IACtCC,EAAYxqF,EADGqQ,EAAuBhR,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAd,KAAMwkB,EAAQxkB,UAAA+S,OAAA,EAAA/S,UAAA,QAAAukB;AAiB1C,OAfA5jB,EAAM,UACNwqF,EAAa,CACT/nF,KAAMvD,KAAKf,IAAI,QAAQsnC,aACvBkG,KAAM58B,OAAO2B,SACb7N,GAAI3D,KAAKf,IAAI,YACbo9B,QAASn5B,KAAKC,UAAU,CACpBQ,GAAI3D,KAAKf,IAAI,eAGjB0lB,EAAOtI,WACPivE,EAAWjvE,SAAW9c,MAAMN,IAAI0lB,EAAQ,gBAExCxT,IACAm6E,EAAW5gF,KAAOyG,GAEfnR,KAAKf,IAAI,aAAa+kD,MAAM,CAC/Bh/C,SAAU,OACVlE,IAAKA,EACLG,KAAMqqF,KAGdC,WAAYhsF,MAAMwB,UAAS,WACvB,MAAO,CACH,CACI4C,GAAI,kBACJkJ,KAAM7M,KAAKf,IAAI,QAAQqD,EAAE,uCAIrCi4C,QAAS,CACLixC,QAAS,WACL,IAAIT;AAGJ,GAFI/qF,KAAKf,IAAI,aACX60C,WAAW9zC,KAAKf,IAAI,UAClBe,KAAKf,IAAI,WAET,OADA8rF,EAAU/qF,KAAKf,IAAI,WACZe,KAAK27E,kBAAkBoP,IAGtCU,WAAY,SAAUC,EAAW3oF,EAAO6jB,EAASjC,GAAQ,IACjDo/B,EAAGrf,EAASinD,EAAQC,EAAepoF,EAAO2W,EAAQ5W,EAAMsJ,EAAMg/E,EAAcC,EAD3Bj1E,EAAA7W;AAGrD,GADA2rF,EAASpsF,MAAAuD,QAAQ4oF,GAAaA,EAAYA,EAAUj8E,MAAM,KAGnD,CAyBH,IAAK5C,KAxBL8+E,EAAO/kF,SAAQ,SAAC4lC,GACZ,IACK,8FAA8FjrC,KAC3FirC,GAGJ,OAAO31B,EAAK1U,IACR,cACA0U,EAAK5X,IAAI,QAAQqD,EAAE,+BAI/ByhD,EAAI/jD,KAAKf,IAAI,aACbe,KAAKmC,IAAI,WAAW,GACpBoB,EAAOvD,KAAKf,IAAI,+BAChBkb,EAAS4pC,EAAE5pC,OAAO5W,GAClBuoF,EAAS,GACTpnD,EAAU,GACVknD,EAAgB,GAEZC,EADA7rF,KAAKf,IAAI,mBACMe,KAAKf,IAAI,2BAA2BwQ,MAAM,KAE1C,GAEN0K,EACT3W,EAAQ2W,EAAOtN,GACXg/E,EAAa34E,OAAS,IAAqC,IAAhC24E,EAAaljF,QAAQkE,KAGpDtN,MAAM4C,IAAIqB,EAAO,MAAOqJ,GACpBrJ,EAAM6K,UAAY7K,EAAM6K,SAAS03B,cAGrC+lD,EAAO5gF,KAAK64C,EAAE5qC,wBAAwB5V,EAAMC,EAAMylC,MAClDvE,EAAQx5B,KAAK1H,EAAMylC,KACnB2iD,EAAc1gF,KAAK1H;AAEvB,OAAOxD,KAAKqrF,YAAY,SAAU1mE,GAAQ1f,MAAK,SAAC8mF,GAC5C,OAAOhoC,EACFC,MAAM,CACHnjD,OAAQ,OACRC,IAAK,oBACLG,KAAM,CACFsrC,WAAYo/C,EACZn/C,MAAOu/C,EACPp/C,OAAQ5pC,EACR6jB,QAASA,EACT8lB,gBAAiB/nB,EAAOmoB,aACxBvpC,KAAMsT,EAAK5X,IAAI,QAAQsnC,aACvB4F,OAAQ,CAACt1B,EAAK5X,IAAI,gBAGzBgG,MAAK,WAEF,OADA4R,EAAK1U,IAAI,WAAW,GACb0U,EAAK1U,IAAI,aAAa,SAxDzC,OAAOnC,KAAKmC,IAAI,cAAenC,KAAKf,IAAI,QAAQqD,EAAE,iCA6D1Ds/D,YAAa,WACT,OAAO5hE,KAAKmC,IAAI,SAAU;;MC/SrB6pF,EAAAA,QAAqB5sF,OAAO,CACzCO,KAAMJ,MAAMC,OAAOC,UACnBktC,OAAQ71B,GAAG/V,SAAS,QAAS,sBAAsB,WAE/C,OAAIf,KAAKf,IAAI,+BAA+B6C,SAAS,sBAC1C9B,KAAKyhC,UAAUv3B,QAAQlK,KAAKf,IAAI,QAAQsnC,cACnC15B,KAEL7M,KAAKf,IAAI,QAAQqD,EAAE,mBAAqBtC,KAAKf,IAAI;eCtBpEP,OAAA,mBAAA,CAAA,UAAA,sBAAA,SAAAC,EAAAstF,GAGAptF,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAgtF,EAAA/sF;MCRegtF,EAAAA;;MCAAA,EAAAA;;MCAAA,EAAAA;;MCAAA,EAAAA;;MCAAA,EAAAA;eCDfxtF,OAAA,qCAAA,CAAA,UAAA,mCAAA,SAAAC,EAAAwtF,GAGAttF,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAktF,EAAAjtF,cCTAR,OAAA,8CAAA,CAAA,UAAA,4CAAA,SAAAC,EAAAytF,GAGAvtF,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAmtF,EAAAltF,cCTAR,OAAA,gDAAA,CAAA,UAAA,8CAAA,SAAAC,EAAA0tF,GAGAxtF,OAAAC,eAAAH,EAAA,aAAA,CACAI,OAAA,IAEAF,OAAAC,eAAAH,EAAA,UAAA,CACAK,YAAA,EACAC,IAAA,WACA,OAAAotF,EAAAntF;;;;;;;;;;;;;;ICDqBotF;;;AAKjB,SAAAA,IAAc,IAAAxnF;AAAA,OAAAyZ,EAAAve,KAAAssF,GAAA9tE,EAAAC,EACV3Z,EAAA7E,EAAAC,MAAAF,KAASG,YADC,OAAAue,EAAAD,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,QAAA6Z,EAAAF,EAAA3Z,IAAA0Z,EAAAC,EAAA3Z,GAAA,QAAA8Z,EAAAH,EAAA3Z,IAAAA,sDAId,SAA+BvB,EAAc0lB,GAA6C,IAA1BsjE,EAA0BpsF,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,IAAAA,UAAA;AACtF,GAAkB,OAAd8oB,EAAoB,MAAO;AAE/B,GAAkC,cAA9BA,EAAUzV,UAAU,EAAG,GAAoB,OAAOxT,KAAKL,KAAK2C,EAAE,WAAa2mB;AAE/E,GAAIsjE,EAAS,OAAOvsF,KAAKwsF,mBAAmBjpF,EAAM0lB;AAElD,IAAMzlB,EAAQxD,KAAKkK,MAAMiQ,OAAO5W,GAAM0lB;AAItC,OAAIzlB,EAAM0iF,eAAe,QAAgB1iF,EAAMqJ,KACnC7M,KAAKwsF,mBAAmBjpF,EAAM0lB,qCAG9C,SAA0B1lB,EAAc0lB,GAAmB,IAAApS,EAAA7W,KACjDysF,EAAqB,CACvB,UAAYlpF,EAAO,IAAM0lB,EACzB,kBAAoBA,GAGlByjE,EAA+BD,EAAS5nF,MAAK,SAACgC,GAChD,OAAOgQ,EAAKlX,KAAK2rB,OAAOzkB;AAG5B,OAAI6lF,EAAiB1sF,KAAKL,KAAK2C,EAAEoqF,GACrBD,EAAS,6BAGzB,SAAkBhsE,GAGd,IAH+B,IAAAgD,EAAAzjB,KACzBuD,EAAOhE,MAAAN,IAAIwhB,EAAQ,yBACnBksE,EAAkBlsE,EAAOmsE,SAC/B7nE,EAAA,EAAA8nE,EAAoB,CAAC,UAArB9nE,EAAA8nE,EAAA35E,OAAA6R,IAAgC,CAA3B,IAAMvhB,EAAKqpF,EAAA9nE;AACPxlB,MAAAqT,QAAQ+5E,EAAWnpF,MACpBmpF,EAAWnpF,GAAS,MAsB5B,OAlBAid,EAAOqsE,kBAAiB,SAACjmF,EAAakmF,GAClC,IAAMC,EAAUD,EAAaE;AAC7B,IACiB,cAAZD,GAAuC,YAAZA,KAC3B,CAAC,gBAAiB,iBAAkB,YAAYlrF,SAAS+E,GAE1D,GAAyC,kBAArC4c,EAAKvZ,MAAM1G,MAAMD,EAAMsD,GAAK6D,KAA0B,CACtD,IAAMwiF,EAAkB;AACxBzsE,EAAO5Z,GAAKD,SAAQ,SAACumF,GACjBD,EAAWhiF,KAAKuY,EAAKqwB,WAAWq5C,OAEpCR,EAAW9lF,GAAOqmF,OAElBP,EAAW9lF,GAAO4Z,EAAO5Z,MAK9B7G,KAAKkN,MAAM4b,aAAavlB,EAAMopF;;;;;;;;;;;;;;;ICxDxBS;;;;;;mIAIjB,SAAezrF,GACX,GAAI3B,KAAKqtF,WAAW1rF,GAAQ,OAAO3B,KAAKqtF,WAAW1rF;AACnD,GAAI3B,KAAKstF,cAAc3rF,GAAQ,OAAO3B,KAAKstF,cAAc3rF;AAEzD,IAAIyD,EAAUlC,KAAKC,UAAUxB;AAG7B,OAFIpC,MAAAN,IAAI0C,EAAO,mBAAoByD,EAAU7F,MAAAN,IAAI0C,EAAO,mBAC/CA,EAAMyD,UAASA,EAAUzD,EAAMyD,SACjC,CACHsF,KAAM,UACN/I,MAAAA,EACAyD,QAASpF,KAAKutF,sBAAsBnoF,GACpCvC,KAAM,4BAUd,SAAclB,GACV3B,KAAKguB,cAAcrsB,MAAM3B,KAAKqd,cAAc1b,GAAQ,CAAEssB,WAAW,iCAGrE,SAAqBtsB,GACjB,GAAKA,EAEL,OAAO3B,KAAKmd,QAAQxb,GAAQyD,QACtBpF,KAAKmd,QAAQxb,GAAQyD,QACrBpF,KAAKmd,QAAQxb,GAAQA,2CAG/B,SAA8ByD,GAC1B,GAAuB,iBAAZA,EAAsB,OAAOA;AACxC,IAAMooF,EAAkBpoF,EAAQqH,cAAc2C,QAAQ,KAAM;AAC5D,OAAIpP,KAAKL,KAAK2rB,OAAO,SAAWkiE,GACrBxtF,KAAKL,KAAK2C,EAAE,SAAWkrF,GAE3BpoF,4BAkCX,SAAmBzD,GACf,GAAqB,WAAjBa,EAAOb,GAAoB,OAAO;AACtC,IAAIsgB,EAAM,KACNtf,EAAS;AAKb,GAJIpD,MAAAuD,QAAQvD,MAAAN,IAAI0C,EAAO,aACnBgB,EAAS,YAGTpD,MAAAN,IAAI0C,EAAO,iBACXsgB,EAAM,CACFvX,KAAM,OACN/I,MAAOpC,MAAAN,IAAI0C,EAAO,iBAClByD,QAAS7F,MAAAN,IAAI0C,EAAO,qBACpBkB,KAAMtD,MAAAN,IAAI0C,EAAO;IAElB,CAAA,IAAIpC,MAAAN,IAAI0C,EAAOgB,EAAS,UAQ3B,OAAO;AAPPsf,EAAM,CACFvX,KAAM,OACN/I,MAAOpC,MAAAN,IAAI0C,EAAOgB,EAAS,UAC3ByC,QAAS7F,MAAAN,IAAI0C,EAAOgB,EAAS,cAC7BE,KAAMtD,MAAAN,IAAI0C,EAAOgB,EAAS,eAMlC,OAAQsf,EAAItgB,OACR,IAAK,UACqB,YAAlBsgB,EAAIpf,KAAK4a,KACTwE,EAAI7c,QAAUpF,KAAKL,KAAK2C,EAAE,8BACH,SAAlB2f,EAAIpf,KAAK4a,KACdwE,EAAI7c,QAAUpF,KAAKL,KAAK2C,EAAE,2BACzB2f,EAAI7c,QAAUpF,KAAKL,KAAK2C,EAAE;AAC/B;AACJ,IAAK,eACD2f,EAAI7c,QAAUpF,KAAKL,KAAK2C,EAAE;AAC1B;AACJ,IAAK,YACD2f,EAAI7c,QAAUpF,KAAKL,KAAK2C,EAAE;AAC1B;AACJ,IAAK,mBACD2f,EAAI7c,QAAUpF,KAAKL,KAAK2rB,OAAO,cAAgBrJ,EAAI7c,SAC7CpF,KAAKL,KAAK2C,EAAE,cAAgB2f,EAAI7c,SAChC6c,EAAI7c,QAGlB,OAAO6c,+BAcX,SAAsBtgB,GAClB,MAAqB,WAAjBa,EAAOb,IACW,mCAAlBA,EAAMyD,QAD4B,KAG/B,CACHsF,KAAM,UACN/I,MAAOA,EAAMyD,QACbA,QAASpF,KAAKL,KAAK2C,EAAE,4BACrBO,KAAM;;MC/HHtD,MAAAkuF,QAAQruF,OAARG,MAAAmuF,QAAwB,CASnC5zD,WATmC,SASxBF,EAAgBlvB,EAAc+V,GACrCzgB,KAAKsI,QAAQ,aAAc,CAAEsxB,OAAAA,EAAQlvB,KAAAA,EAAM+V,OAAAA,KAQ/Ck6D,QAlBmC,WAmB/B36E,KAAKsI,QAAQ;;;;;;;;;;;;;;gBC1BAqlF;;;AAWjB,SAAAA,IAAc,IAAA7oF;AAAA,OAAAyZ,EAAAve,KAAA2tF,GAAAnvE,EAAAC,EACV3Z,EAAA7E,EAAAC,MAAAF,KAASG,YADC,OAAAue,EAAAD,EAAA3Z,IAAAuN,EAAAoM,EAAA3Z,GAAA,SAFG,IAEHA,kCAId,WACI,OAAO9E,KAAK4tF,YAYhB,SAAU1jF,GACNlK,KAAK4tF,OAAS1jF,wBASlB,SAAc3G,GACV,GAAIhE,MAAAqT,QAAQ5S,KAAKkK,OACb,MAAO;AAEX,IAAK3G,EAEG,MAAO;AAOf,GAHAA,EAAOhE,MAAAua,OAAA+zE,WAAWtqF,GAClBA,EAAOhE,MAAAua,OAAAysB,WAAWhjC,IAEbvD,KAAKkK,MAAMg8E,eAAe3iF,GAC3B,MAAM,IAAAhE,MAAAgI,MAAe,+BAAiChE,EAAO;AAGjE,OAAOvD,KAAKkK,MAAM3G,GAAM8G,6BAU5B,SAAa9G,EAAc0lB,GACvB1lB,EAAOhE,MAAAua,OAAA+zE,WAAWtuF,MAAAua,OAAAysB,WAAWhjC;AAC7B,IAAMC,EAAQxD,KAAK8tF,UAAUvqF,EAAM0lB;AAEnC,MAAO,CACH1lB,KAAAA,EACAsJ,KAAMoc,EACNve,KAAMlH,EAAMkH,KACZy2B,gBAAiBnhC,KAAKL,KAAK2C,EAAEiB,EAAO,IAAM0lB,EAAW,CAAE/pB,QAASsE,EAAMqJ,OACtElC,QAASnH,EAAMmH,QACf0D,SAAU7K,EAAM6K,mCAWxB,SAAiB9K,EAAcC,GAC3B,OAAOxD,KAAKma,OAAO5W,GAAMC,6BAG7B,SAAkBD,GAA4B,IAAAsT,EAAA7W;AAC1CuD,EAAOhE,MAAAua,OAAA+zE,WAAWtuF,MAAAua,OAAAysB,WAAWhjC;AAC7B,IAAM4W,EAAuBna,KAAKma,OAAO5W,GACnC0e,EAAoB;AAY1B,OAXApjB,OAAO8H,KAAKwT,GAAQvT,SAAQ,SAACC,GACzB,IAAMrD,EAAQ2W,EAAOtT;AACrBob,EAAI/W,KAAK,CACL3H,KAAAA,EACAsJ,KAAMhG,EACNs6B,gBAAiBtqB,EAAKlX,KAAK2C,EAAEiB,EAAO,IAAMsD,EAAK,CAAE3H,QAASib,EAAOtT,GAAKgG,OACtEnC,KAAMlH,EAAMkH,KACZC,QAASnH,EAAMmH,QACf0D,SAAU7K,EAAM6K,cAGjB4T,4BAGX,SAAkBpV,GACd,GAAK7M,KAAKkK,MACV,OAAOlK,KAAKkK,MAAM2C,8BAGtB,SAAmBtJ,EAAcsJ,GAC7B,QAAK7M,KAAKs9E,WAAW/5E,IACdhE,MAAA+gB,UAAUtgB,KAAKkK,MAAM3G,GAAM8G,QAAQwC;;;;;;;;;;;;;;gBCvI7BkhF;;;;;;oFAGW,6CAE5B,SAAelnF,EAAa9H,GACxBiI,aAAaM,QAAQtH,KAAKguF,UAAUnnF,GAAM3D,KAAKC,UAAUpE,2BAG7D,SAAe8H,GACX,IAAMsvB,EAAMnvB,aAAaR,QAAQxG,KAAKguF,UAAUnnF;AAChD,OAAO3D,KAAKwD,MAAMyvB,6BAGtB,SAAkBtvB,GACdG,aAAaG,WAAWnH,KAAKguF,UAAUnnF,6BAG3C,SAAiBsvB,GAAa,IAAA83D,EACpBC,EAAW,QAAAD,EAAGjuF,KAAKJ,QAAQk0B,mBAAhB,IAAAm6D,OAAA,EAAGA,EAA0BtqF;AAC9C,IAAKuqF,EACD,MAAM,IAAI3mF,MAAM;AACpB,OAAOvH,KAAKqE,UAAY,IAAM6pF,EAAc,IAAM/3D;;;;;;;;;;;;;;;;;;;;;;;;;;;IClBrCg4D;;;;;;2HAIjB,SAAYvY,GACR,IAAKA,EAAO,OAAO;AACdr2E,MAAAuD,QAAQ8yE,KAAQA,EAAQ,CAACA;AAFa,IAAA/4C,EAAAC,EAAAC,EAI1B64C;AAJ0B,IAI3C,IAAA94C,EAAAjjB,MAAAgjB,EAAAC,EAAAnjB,KAAAqjB,MAAwB,CAAA,IAAfhB,EAAea,EAAA99B,MAChByN,GAAU;AAMd,GAL6B,MAAzBwvB,EAAKxoB,UAAU,EAAG,KAClBhH,GAAU,EACVwvB,EAAOA,EAAKxoB,UAAU,MAEfhH,GAAWxM,KAAKouF,QAAQpyD,GAAQh8B,KAAKouF,QAAQpyD,IAC/C,OAAO,GAXuB,MAAAsB,GAAAR,EAAA3V,EAAAmW,GAAA,QAAAR,EAAAS,IAc3C,OAAO,yBAGX,SAAevB,GACX,MAA6B,cAAzBA,EAAKxoB,UAAU,EAAG,GAA2BxT,KAAKquF,cAAcryD,EAAKvsB,MAAM,KAAK,IAChFusB,EAAKl6B,SAAS,KAAa9B,KAAKsuF,kBAAkBtyD,KAClDA,EAAKl6B,SAAS,MAAa9B,KAAKuuF,mBAAmBvyD,gCAK3D,SAAsB2K,GAGlB,OAFwBA,EAAWl3B,MAAM,KAElB3N,SAClB9B,KAAKJ,QAAQk0B,YAA6Bm3C,UAAUpgE,6CAI7D,SAA0BmxB,GACtB,IAAMvsB,EAAQusB,EAAKvsB,MAAM,KACnBlM,EAAOhE,MAAAua,OAAA+zE,WAAWp+E,EAAM,IACxBP,EAAYO,EAAM;AAExB,SAAKzP,KAAKkK,MAAMozE,WAAW/5E,KAET,WAAd2L,EAA+BlP,KAAKkK,MAAMA,MAAM3G,GAAMZ,OACrD3C,KAAKkK,MAAMA,MAAM3G,GAAMkL,YAEnBzO,KAAKkK,MAAMA,MAAM3G,GAAMkL,WAAYS,uCAGhD,SAA2B8sB,GACvB,IAAMvsB,EAAQusB,EAAKvsB,MAAM;AACzB,OAAOzP,KAAKkK,MAAM+xB,YAAYxsB,EAAM,GAAIA,EAAM;;ACtC/C,IAAMqb,EAAY,CACrB,CAAEnnB,GAAI,KAAMkJ,KAAM,UAAWkmD,OAAQ,QACrC,CAAEpvD,GAAI,KAAMkJ,KAAM,SAAUkmD,OAAQ,OACpC,CAAEpvD,GAAI,KAAMkJ,KAAM,UAAWkmD,OAAQ,QACrC,CAAEpvD,GAAI,KAAMkJ,KAAM,eAClB,CAAElJ,GAAI,KAAMkJ,KAAM,iBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,kBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAClB,CAAElJ,GAAI,KAAMkJ,KAAM,uBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,aAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,aAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,mCAClB,CAAElJ,GAAI,KAAMkJ,KAAM,oCAClB,CAAElJ,GAAI,KAAMkJ,KAAM,0BAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,iBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,kCAClB,CAAElJ,GAAI,KAAMkJ,KAAM,qBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,gBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAClB,CAAElJ,GAAI,KAAMkJ,KAAM,kBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,4BAClB,CAAElJ,GAAI,KAAMkJ,KAAM,QAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,oBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,2BAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,yCAClB,CAAElJ,GAAI,KAAMkJ,KAAM,gBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAClB,CAAElJ,GAAI,KAAMkJ,KAAM,iBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,QAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,kBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,sBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,eAClB,CAAElJ,GAAI,KAAMkJ,KAAM,qBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,+BAClB,CAAElJ,GAAI,KAAMkJ,KAAM,iBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,QAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAAUkmD,OAAQ,OACpC,CAAEpvD,GAAI,KAAMkJ,KAAM,iBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,oBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,+BAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAAWkmD,OAAQ,OACrC,CAAEpvD,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,aAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,aAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAClB,CAAElJ,GAAI,KAAMkJ,KAAM,QAClB,CAAElJ,GAAI,KAAMkJ,KAAM,aAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,iBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,qCAClB,CAAElJ,GAAI,KAAMkJ,KAAM,iCAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,aAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAAWkmD,OAAQ,OACrC,CAAEpvD,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,aAClB,CAAElJ,GAAI,KAAMkJ,KAAM,6BAClB,CAAElJ,GAAI,KAAMkJ,KAAM,QAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,eAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,0CAClB,CAAElJ,GAAI,KAAMkJ,KAAM,sBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAClB,CAAElJ,GAAI,KAAMkJ,KAAM,oCAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAAUkmD,OAAQ,QACpC,CAAEpvD,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,0BAClB,CAAElJ,GAAI,KAAMkJ,KAAM,iBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,aAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,8CAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,QAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,oBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAClB,CAAElJ,GAAI,KAAMkJ,KAAM,aAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,mCAClB,CAAElJ,GAAI,KAAMkJ,KAAM,wBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAAekmD,OAAQ,OACzC,CAAEpvD,GAAI,KAAMkJ,KAAM,iBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,eAClB,CAAElJ,GAAI,KAAMkJ,KAAM,aAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,QAClB,CAAElJ,GAAI,KAAMkJ,KAAM,kBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,4BAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAAUkmD,OAAQ,OACpC,CAAEpvD,GAAI,KAAMkJ,KAAM,QAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,mCAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,oBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,QAClB,CAAElJ,GAAI,KAAMkJ,KAAM,eAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAAUkmD,OAAQ,OACpC,CAAEpvD,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,eAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,sBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,oBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,gDAClB,CAAElJ,GAAI,KAAMkJ,KAAM,yBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,eAClB,CAAElJ,GAAI,KAAMkJ,KAAM,8BAClB,CAAElJ,GAAI,KAAMkJ,KAAM,6BAClB,CAAElJ,GAAI,KAAMkJ,KAAM,oCAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAClB,CAAElJ,GAAI,KAAMkJ,KAAM,yBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,gBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAClB,CAAElJ,GAAI,KAAMkJ,KAAM,gBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,aAClB,CAAElJ,GAAI,KAAMkJ,KAAM,6BAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,mBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,gBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,gDAClB,CAAElJ,GAAI,KAAMkJ,KAAM,QAASkmD,OAAQ,OACnC,CAAEpvD,GAAI,KAAMkJ,KAAM,aAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,0BAClB,CAAElJ,GAAI,KAAMkJ,KAAM,aAClB,CAAElJ,GAAI,KAAMkJ,KAAM,eAClB,CAAElJ,GAAI,KAAMkJ,KAAM,wBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,6BAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAClB,CAAElJ,GAAI,KAAMkJ,KAAM,gCAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,eAClB,CAAElJ,GAAI,KAAMkJ,KAAM,QAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,wBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,gBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,4BAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,wBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,iBAAkBkmD,OAAQ,OAC5C,CAAEpvD,GAAI,KAAMkJ,KAAM,iBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,wCAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,cAClB,CAAElJ,GAAI,KAAMkJ,KAAM,WAClB,CAAElJ,GAAI,KAAMkJ,KAAM,sBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,qCAClB,CAAElJ,GAAI,KAAMkJ,KAAM,YAClB,CAAElJ,GAAI,KAAMkJ,KAAM,2BAClB,CAAElJ,GAAI,KAAMkJ,KAAM,wBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,qBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,kBAClB,CAAElJ,GAAI,KAAMkJ,KAAM,SAClB,CAAElJ,GAAI,KAAMkJ,KAAM,UAClB,CAAElJ,GAAI,KAAMkJ,KAAM;;AAQf,IAAM2hF,EAAc,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM;;AAOrE,IAAMC,EAAY3jE,EAAU3G,QAAO,SAAC3W,GACvC,OAAOghF,EAAY1sF,SAAS0L,EAAQ7J;;AAQjC,IAAM+qF,EAAY5jE,EAAU3G,QAAO,SAAC3W,GACvC,OAAOA,EAAQ04E,eAAe;;MAInB,CAAEp7D,UAAAA,EAAW0jE,YAAAA,EAAaC,UAAAA,EAAWC,UAAAA;;;;ACzSpD,IAOaj9D,EAAa,CACtB,YACA,YACA,YACA,aACA,YACA,YACA;AAGG,SAAShE,EAAY3sB,EAAaq1B,GACrC,OAAIA,EAAIw4D,WAAW,QAAgBx4D,EACvBr1B,EAAMq1B,EAWf,SAAS4qC,EAAgBjgE,GAA4C,IAA/B8tF,EAA+BzuF,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAR;AAChE,IAAKW,EACD,MAAM,IAAIyG,MACN;AAER,OAAO,IAAAhI,MAAAkG,KAAAwC,SAAiB,SAACvC,EAASwC,GAC9B,IAAMgyE,EAAM,IAAI2U;AAChB3U,EAAIzgC,KAAK,MAAO34C,GAAK,GAErBo5E,EAAI0U,aAAeA,EAEnB1U,EAAIxgB,OAAJp2C,EAAAzL,mBAAAC,MAAa,SAAAC,IAAA,IAAAwW;AAAA,OAAA1W,mBAAAO,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,IACHgW,EAAO2rD,EAAI/xE,UACZ2mF,iBAAmB,IAAI9vE,KAC5BuP,EAAK1hB,KAAO,OAEP4kB,EAAW3vB,SAASysB,EAAK7jB,MALrB,CAAA2N,EAAAE,KAAA;AAAA,MAAA,MAMC,IAAIhR,MACN,iBAAmBgnB,EAAK7jB,KAAO,kBAAoB5J,EAAM;AAPxD,KAAA,EAWT4E,EAAQ6oB;AAXC,KAAA,EAAA,IAAA,MAAA,OAAAlW,EAAAe,UAAArB,OAcbmiE,EAAI6U,QAAU,SAACptF,GACXuG,EAAOvG,IAGXu4E,EAAIvhD,UAeL,SAASrK,EACZvB,GAKF,IAJEoH,EAIFh0B,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAJyB,KACvBwrD,EAGFxrD,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAH0B,KACxBivB,EAEFjvB,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAFoB,GAClB6uF,IACF7uF,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,KAAAA,UAAA;AAEE,OAAO,IAAAZ,MAAAkG,KAAAwC,SAAiB,SAACvC,EAASwC,GAE9B,IAAK8mF,IAAoBrjC,EACrB,MAAM,IAAIpkD,MACN;AAGR,IAAM0nF,EAAOliE,EAAKriB,MAAQ;AAGtB0kB,EAAU,GAAM,IAAGA,EAAUlZ,QAAQkZ,EAAU,KAAK66C,QAAQ;AAEhE,IAAMilB,EAAS,IAAIC;AAEC,iBAATpiE,IACPA,EAAOqiE,EAAcriE,IAGzBmiE,EAAOh+D,cAAcnE,GAErBmiE,EAAOG,UAAY,WACf,IAAMpU,EAAM,IAAIxhB;AAChBwhB,EAAIrhB,IAAMs1B,EAAO15D,OACjBylD,EAAIvhB,OAAS,WACT,IAAMzlC,EAASpU,SAASqU,cAAc,UAClCo7D,EAAelgE,EACfmgE,EA5GI,KA+GJtU,MAAAA,OAAA,EAAAA,EAAK9mD,OAAQ,OAAQ8mD,MAAAA,OAAA,EAAAA,EAAKtvB,QAAS,QACnC2jC,EAAe,IACfC,EAAuB,GAItBp7D,IAAOA,EAAQ8mD,EAAI9mD,MAAQo7D;AAEhC,IAAMC,EAAcr7D,EAAQ8mD,EAAI9mD;AAE5B66D,IAAiBrjC,EAASsvB,EAAItvB,OAAS6jC,GAE3Cv7D,EAAOE,MAAQA,EACfF,EAAO03B,OAASz1C,OAAOy1C;AACvB,IAAM8jC,EAAMx7D,EAAOslC,WAAW;AAE9Bk2B,MAAAA,GAAAA,EAAK91B,UAAUshB,EAAK,EAAG,EAAG9mD,EAAOje,OAAOy1C,IAExCjmD,EAAQuuB,EAAOS,UAAUu6D,EAAMK,MAIvCJ,EAAOH,QAAU,SAACzxD,GACdp1B,EAAOo1B,OAaZ,SAAS8xD,EAAcM,GAAoC,IAAnBC,EAAmBxvF,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAR,OAChDoP,EAAMmgF,EAAQjgF,MAAM;AAC1B,IAAKF,EAAK,OAAO;AAMjB,IALA,IAAM0/E,EAAO1/E,EAAI,GAAGwG,MAAM,WAAY,GAChC65E,EAAOC,KAAKtgF,EAAI,IAClBoK,EAAIi2E,EAAK18E,OACP48E,EAAQ,IAAIC,WAAWp2E,GAEtBA,KACHm2E,EAAMn2E,GAAKi2E,EAAKI,WAAWr2E;AAE/B,IAAM4U,EAAO,IAAI0hE,KAAK,CAACH,GAAQ,CAAEplF,KAAMukF;AAGvC,OAFA1gE,EAAK1hB,KAAO8iF,EACZphE,EAAKugE,iBAAmB,IAAI9vE,KACrBuP,EAGJ,SAASL,IACZ,MAAO,CACH,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,YACA,OACA,OACA,OACA,OACA,OACA,OACA,YACA,OACA,OACA,MACA,UACA,UACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,UACA,OACA,OACA,QACA,OACA,WACA,WACA,OACA,OACA,UACA,UACA,OACA,QACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,QACA,WACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,UACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,MACA,OACA,UACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,OACA,MACA,MACA,QACA,QACA,eACA,OACA,OACA,OACA,OACA,OACA,YACA,OACA,OACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,OACA,OACA,UACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACA,OACA,OACA,QACA,OACA,OACA,OACA,QACA,OACA,OACA,YACA,MACA,QACA,OACA,OACA,OACA,QACA,KACA,OACA,SACA,OACA,OACA,QACA,OACA,OACA,MACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,SACA,YACA,OACA,SACA,MACA,OACA,OACA,OACA,MACA,MACA,OACA,MACA,QACA,OACA,UACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,OACA,OACA,OACA,SACA,OACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA;MAIO,CACXuD,WAAAA,EACAhE,YAAAA,EACAszC,gBAAAA,EACAzyC,YAAAA,EACA8gE,cAAAA,EACAlhE,eAAAA;8ECjYG,SAASlG,IAAsB,IAAbmM,EAAah0B,UAAA+S,OAAA,QAAAwR,IAAAvkB,UAAA,GAAAA,UAAA,GAAL;AAC7B,OAAOmG,OAAO4pF,WAAW,+BAAiC/7D,EAAQ,OAAOg8D;AAQtE,IAAM/jE,KACE9lB,OAAO4pB,UAAUmlC,UACZ1sD,QAAQ,SACb,GAAOunB,UAAUmlC,UAAUt/C,MAAM;;AASzC,IAAMsW,EACF/lB,O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","file":"tt4.js","sourcesContent":["'use strict';\n\n\n","define(\"tt4/adapters/-json-api\", [\"exports\", \"@ember-data/adapter/json-api\"], function (_exports, _jsonApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _jsonApi.default;\n    }\n  });\n});\n","/*\n * decaffeinate suggestions:\n * DS101: Remove unnecessary use of Array.from\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nimport { isArray } from '@ember/array';\nimport { computed } from '@ember/object';\n\nimport { throttle } from '@ember/runloop';\nimport { inject as service } from '@ember/service';\nimport RESTAdapter from 'ember-data/adapters/rest';\nimport collector from '../classes/collector';\nimport DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';\nimport { get, set } from '@ember/object';\nimport config from 'tt4/config/environment';\n\nexport default RESTAdapter.extend(DataAdapterMixin, {\n    onlineChecker: service(),\n    dialogs: service(),\n    intl: service(),\n    session: service(),\n    flags: service(),\n    sessionhelper: service(),\n\n    // list of all errors that are handled somewhere else so error popup is not needed\n    init() {\n        this._super(...arguments);\n        this.handledErrors = [\n            'overlap',\n            'validation_error',\n            'not_allowed',\n            'mandatory_field_missing',\n        ];\n    },\n\n    ensureResponseAuthorized(status, headers, payload, requestData) {\n        if (\n            status === 401 &&\n            payload.error_description === 'The access token provided has expired'\n        ) {\n            this.sessionhelper.expiredRecovery(`${requestData.method} ${requestData.url}`);\n        } else {\n            return this._super(...arguments);\n        }\n    },\n\n    headers: computed('session.data.authenticated.access_token', function () {\n        let headers = {};\n        if (this.session.isAuthenticated) {\n            // OAuth 2\n            headers['Authorization'] = `Bearer ${this.session.data.authenticated.access_token}`;\n        }\n        return headers;\n    }),\n\n    host: computed('session.currentUser.partnerid', function () {\n        if (config.environment !== 'development' && get(this, 'flags').test('capi_url'))\n            return get(this, 'flags').test('capi_url');\n        else return collector.api_url();\n    }),\n\n    isSuccess(status, headers, payload) {\n        const handledErrors = get(this, 'handledErrors');\n\n        if (payload && payload.error && !Array.from(handledErrors).includes(payload.error)) {\n            const error_obj = {};\n            error_obj.responseText = payload.error;\n            error_obj.status = status;\n            error_obj.statusText = payload.error_msg;\n            set(this, 'last_error', error_obj);\n        }\n\n        return this._super(status, headers, payload);\n    },\n\n    showErrorDialog() {\n        return get(this, 'dialogs').alert(get(this, 'intl').t('general.error.too_many_calls'));\n    },\n\n    normalizeErrorResponse(status, headers, payload) {\n        if (payload && typeof payload === 'object' && payload.error) {\n            if (payload.error === 'too_many_calls') {\n                throttle(this, 'showErrorDialog', 10000);\n            }\n            payload.errors = {\n                error: payload.error,\n                error_msg: payload.error_msg,\n                errorMeta: payload.meta,\n            };\n            delete payload.error;\n            delete payload.error_msg;\n            delete payload.meta;\n        }\n        if (payload && typeof payload === 'object' && isArray(payload.errors)) {\n            payload.errors = {\n                error: payload.errors[0].title,\n                error_msg: payload.errors[0].details,\n            };\n        }\n\n        payload.errors = [payload.errors];\n\n        return this._super(status, headers, payload);\n    },\n\n    generatedDetailedMessage(status, headers, payload, requestData) {\n        return this._super(status, headers, JSON.stringify(payload.errors), requestData);\n    },\n\n    urlForQuery(query, modelName) {\n        if (query.form && query.field) {\n            modelName = query.form + '/' + query.field;\n            delete query.form;\n            delete query.field;\n        }\n\n        if (query.endpoint) {\n            const endpoint = query.endpoint;\n            delete query.endpoint;\n            return endpoint;\n        }\n\n        return this._super(query, modelName);\n    },\n\n    urlForUpdateRecord(id, modelName, snapshot) {\n        let url = this._super(id, modelName, snapshot);\n        if (snapshot.adapterOptions && snapshot.adapterOptions.validation === 'off') {\n            url += '?validation=off';\n        }\n        return url;\n    },\n});\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import DS from 'ember-data';\nimport DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';\nimport config from 'tt4/config/environment';\nimport { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default DS.JSONAPIAdapter.extend(DataAdapterMixin, {\n    sessionhelper: service(),\n    flags: service(),\n\n    headers: computed('session.data.authenticated.access_token', function () {\n        let headers = {};\n        if (this.session.isAuthenticated) {\n            // OAuth 2\n            headers['Authorization'] = `Bearer ${this.session.data.authenticated.access_token}`;\n        }\n        return headers;\n    }),\n\n    host: config.APP.CAPI3,\n\n    ensureResponseAuthorized(status, headers, payload, requestData) {\n        if (status === 401 && payload.error === 'jwt expired') {\n            this.sessionhelper.expiredRecovery(`${requestData.method} ${requestData.url}`);\n        } else {\n            return this._super(...arguments);\n        }\n    },\n});\n","import DS from 'ember-data';\nimport DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';\nimport config from 'tt4/config/environment';\nimport { computed } from '@ember/object';\n\nexport default DS.JSONAPIAdapter.extend(DataAdapterMixin, {\n    headers: computed('session.data.authenticated.access_token', function () {\n        let headers = {};\n        if (this.session.isAuthenticated) {\n            // OAuth 2\n            headers['Authorization'] = `Bearer ${this.session.data.authenticated.access_token}`;\n        }\n        return headers;\n    }),\n\n    authorizer: 'authorizer:application',\n    namespace: 'cardregister',\n    host: config.APP.TTAPI2,\n});\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import ApplicationAdapter from './application';\n\nexport default ApplicationAdapter.extend({\n    namespace: 'service',\n    defaultSerializer: 'form-serializer',\n});\n","import FormDefaultAdapter from './form-adapter';\n\nexport default FormDefaultAdapter.extend();\n","import FormDefaultAdapter from './form-adapter';\n\nexport default FormDefaultAdapter.extend();\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import FormDefaultAdapter from './form-adapter';\n\nexport default FormDefaultAdapter.extend();\n","import FormDefaultAdapter from './form-adapter';\n\nexport default FormDefaultAdapter.extend();\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import { computed } from '@ember/object';\nimport ttapiBase from './ttapi-base';\n\nexport default ttapiBase.extend({\n    namespace: computed(function () {\n        return this.createNamespace() + 'api';\n    }),\n});\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import FormDefaultAdapter from './form-adapter';\n\nexport default FormDefaultAdapter.extend();\n","import { inject as service } from '@ember/service';\nimport EmberObject, { get } from '@ember/object';\n\nexport default EmberObject.extend({\n    capi: service(),\n\n    find() {\n        return get(this, 'capi')\n            .request('/settings/gui/menu', {\n                dataType: 'json',\n            })\n            .then(() => this._data());\n    },\n    _data(data) {\n        return data;\n    },\n});\n","import { assert } from '@ember/debug';\nimport { computed } from '@ember/object';\nimport DS from 'ember-data';\nimport config from 'tt4/config/environment';\nimport DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';\nimport { resolve } from 'rsvp';\nimport { inject as service } from '@ember/service';\n\nexport default DS.RESTAdapter.extend(DataAdapterMixin, {\n    flags: service(),\n    sessionhelper: service(),\n\n    headers: computed('session.data.authenticated.access_token', function () {\n        let headers = {};\n        if (this.session.isAuthenticated) {\n            // OAuth 2\n            headers['Authorization'] = `Bearer ${this.session.data.authenticated.access_token}`;\n        }\n        return headers;\n    }),\n    host: computed('session.currentUser.partnerid', 'flags._client', function () {\n        if (config.environment !== 'development' && this.flags.test('ttapi_url')) {\n            return this.flags.test('ttapi_url');\n        }\n        assert(\n            'TTAPI_HOST must be set in environment.js to use ttapi adapter',\n            config.APP.TTAPI_HOST,\n        );\n        return config.APP.TTAPI_HOST;\n    }),\n    namespace: computed(function () {\n        assert(\n            'TTAPI_FOLDER must be set in environment.js to use ttapi adapter',\n            config.APP.TTAPI_FOLDER,\n        );\n        return this.createNamespace();\n    }),\n\n    ensureResponseAuthorized(status, headers, payload, requestData) {\n        if (status === 401 && payload.message === 'The access token provided has expired') {\n            this.sessionhelper.expiredRecovery(`${requestData.method} ${requestData.url}`);\n        } else {\n            return this._super(...arguments);\n        }\n    },\n\n    createNamespace() {\n        let path = config.APP.TTAPI_FOLDER;\n        if (path.slice(0, 1) === '/') {\n            path = path.slice(1);\n        }\n        return path;\n    },\n\n    query() {\n        //skip ttapi requests if at2\n        if (config.target === 'at2') {\n            return resolve([]);\n        }\n        return this._super(...arguments);\n    },\n});\n","import Capi3Adapter from './capi3';\n\nexport default Capi3Adapter.extend({});\n","import { computed } from '@ember/object';\nimport ttapiBase from './ttapi-base';\n\nexport default ttapiBase.extend({\n    namespace: computed(function () {\n        return this.createNamespace() + 'workdayCalendar';\n    }),\n});\n","import { computed } from '@ember/object';\nimport ttapiBase from './ttapi-base';\n\nexport default ttapiBase.extend({\n    namespace: computed(function () {\n        return this.createNamespace() + 'workdayCalendar';\n    }),\n});\n","import { computed } from '@ember/object';\nimport ttapiBase from './ttapi-base';\n\nexport default ttapiBase.extend({\n    namespace: computed(function () {\n        return this.createNamespace() + 'workdayCalendar';\n    }),\n});\n","import Ember from 'ember';\nimport Application from '@ember/application';\nimport Resolver from 'ember-resolver';\nimport loadInitializers from 'ember-load-initializers';\nimport config from './config/environment';\nimport './models/custom-inflector-rules';\nimport { set, get } from '@ember/object';\nimport { startSentry } from './sentry';\n\nstartSentry();\n\nexport default class App extends Application {\n    modulePrefix = config.modulePrefix;\n    podModulePrefix = config.podModulePrefix;\n    Resolver = Resolver;\n}\n\nEmber.TextSupport.reopen({\n    // These are not needed if we don't want to give them in templates..\n    attributeBindings: ['autocapitalize'],\n    //    autocapitalize: \"off\",\n    autocorrect: 'off',\n    autocomplete: 'off',\n});\n\nif (window.sessionStorage && sessionStorage.getItem('APP')) {\n    let app_override = JSON.parse(sessionStorage.getItem('APP'));\n    Object.keys(app_override).forEach(function (key) {\n        config.APP[key] = app_override[key];\n    });\n}\n\nif (Modernizr.localstorage && localStorage.getItem('devModeOn')) {\n    set(Ember, 'devModeOn', true);\n}\n\nif (config.APP.devMode) {\n    set(Ember, 'devModeOn', true);\n}\n\nEmber.dev = function () {\n    if (get(Ember, 'devModeOn') === true) {\n        if (Modernizr.localstorage) {\n            localStorage.removeItem('devModeOn');\n        }\n        console.info('Development mode is now turned off!'); //eslint-disable-line\n        set(Ember, 'devModeOn', false);\n    } else {\n        if (Modernizr.localstorage) {\n            localStorage.setItem('devModeOn', 'on');\n        }\n        console.info('Development mode is now turned on!'); //eslint-disable-line\n        set(Ember, 'devModeOn', true);\n    }\n};\n\nError.stackTraceLimit = 100;\n\nloadInitializers(App, config.modulePrefix);\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nimport { Promise as EmberPromise } from 'rsvp';\nimport OAuth2PasswordGrantAuthenticator from 'ember-simple-auth/authenticators/oauth2-password-grant';\nimport config from 'tt4/config/environment';\nimport { warn } from '@ember/debug';\nimport { later } from '@ember/runloop';\nimport { typeOf } from '@ember/utils';\nimport { get } from '@ember/object';\n\nexport default OAuth2PasswordGrantAuthenticator.extend({\n    serverTokenEndpoint: config.APP.COLLECTOR_API_URL + '/login',\n    clientId: config.clientId,\n    makeRequest(url, data) {\n        data.client_id = get(this, 'clientId');\n        return this._super(url, data);\n    },\n\n    restore(data) {\n        return new EmberPromise((resolve, reject) => {\n            return this._super(data).then(resolve, (response) => {\n                warn('Restore failed. Goto to /offline', { id: 'collector-auth-warn' });\n\n                if (typeOf(response) === 'error') {\n                    // couldn't get any response\n                    data.offline = true;\n                    this.trigger('sessionDataUpdated', data);\n\n                    resolve(data);\n                } else {\n                    reject();\n                    later(this, () => (location.href = config.rootURL), 1000);\n                }\n            });\n        });\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/classes/collector.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar collector,\n    indexOf = [].indexOf;\n\nimport config from '../config/environment';\n\nimport DS from 'ember-data';\n\nimport CollectorModel from '../models/collector';\n\nimport localization from '../classes/localization';\n\nimport CollectorValidationMixin from '../mixins/collector-validation';\n\nimport $ from 'jquery';\n\ncollector = Ember.Object.create({\n    //this.api_url = 'http://p.movenium.com/collector-4.0_dev';\n    // testing url for new api version\n    api_url: function () {\n        return config.APP.COLLECTOR_API_URL;\n    },\n    forms_url: '/forms',\n    getFormSettings: function () {\n        var formSettings, jsonParse;\n        formSettings = '[{\"date_interval\":\"2\"}]';\n        jsonParse = JSON.parse(formSettings);\n        return jsonParse;\n    },\n\n    //    This method should create all the needed models for ember.\n\n    //    this is done when application initialization is ready\n    //    basically we get json-formatted data of forms\n    //    and create ember DS models from those\n\n    createEmberModels: function (access_token) {\n        var d, headers, self;\n        if (this.testing) {\n            return this.createTestModels();\n        }\n        //this function returns promise\n        d = new $.Deferred();\n        self = this;\n        headers = null;\n        if (access_token) {\n            headers = {\n                Authorization: 'Bearer ' + access_token,\n            };\n        }\n        $.ajax({\n            url: self.api_url() + self.forms_url,\n            datatype: 'json',\n            headers: headers,\n            //if something failed\n            tryCount: 0,\n            retryLimit: 1,\n            //error: (response, textStatus, errorThrown) ->\n            success: function (data) {\n                //put data to localstorage\n                //            localStorage.forms = JSON.stringify(data);\n                data = self.addCommonForms(data);\n                self.create_models(data, self);\n                return d.resolve();\n            },\n            error: function (reason) {\n                localStorage.removeItem('ember_simple_auth-session');\n                location.reload();\n                return d.reject(reason);\n            },\n        });\n        return d.promise();\n    },\n    // change dropdown options from object to array .. handlebers each requires this\n    reparse_dropdown_options: function (forms) {\n        $.each(forms, function (form_index, form) {\n            return $.each(form.objects, function (obj_index, object) {\n                var is_array, temp;\n                if (\n                    (object.type === 'dropdown_values' || object.type === 'dropdown_options') &&\n                    typeof object.options === 'object'\n                ) {\n                    temp = new Array(0);\n                    is_array = Object.prototype.toString.call(object.options) === '[object Array]';\n                    $.each(object.options, function (opt_index, option) {\n                        var id;\n                        if (opt_index === 0 && option === '') {\n                            return (forms[form_index].objects[obj_index].empty_option = true);\n                        } else {\n                            id = is_array ? option : opt_index;\n                            return temp.push({\n                                id: id,\n                                value: option,\n                            });\n                        }\n                    });\n                    return (forms[form_index].objects[obj_index].options = temp);\n                }\n            });\n        });\n        return forms;\n    },\n    create_models: function (data, self) {\n        var all_attributes, async_relations, rel_objects;\n        self = this;\n        self.set('forms', self.reparse_dropdown_options(data.forms));\n        if (data.updater != null) {\n            self.set('products', data.updater.products);\n        }\n        if (data.updater != null) {\n            self.set('modules', data.updater.modules);\n        }\n        self.set('tt3flag', data.tt3flag);\n        //object for storing all model information\n        //because models can be defined only once, so we do that in the\n        //end of this script\n        all_attributes = {};\n        rel_objects = {};\n        async_relations = [\n            'materiallog.type',\n            'multitask.taskname',\n            'user.employer',\n            'urakkalog.type',\n            'customlog.type',\n            'worktask.project',\n            'holiday.user',\n        ];\n        //iterate every form\n        $.each(data.forms, function (index, value) {\n            var form_name, model_attributes;\n            //form name must be \"classified\",\n            //because ember model names are like that\n            //e.g. wage_periods => WagePeriods\n            form_name = index.classify();\n            model_attributes = {};\n            //iterate every attribute of the form\n            $.each(value.objects, function (attribute_name, attributes_arr) {\n                var attr, ref, ref1, relation, relation_fields;\n                //put attribute to the object\n                attr = null;\n                relation_fields = ['database', 'databasearray', 'timerlink', 'work_permit_attachment'];\n                if (\n                    ((ref = attributes_arr.type), indexOf.call(relation_fields, ref) >= 0) &&\n                    attributes_arr.options\n                ) {\n                    relation = attributes_arr.options.form;\n                    //if array does not exist, create empty array so that push method works\n                    if (typeof rel_objects[relation] === 'undefined') {\n                        rel_objects[relation] = [];\n                    }\n                    //put relations to helper array\n                    rel_objects[relation].push(form_name);\n                    if (attributes_arr.type === 'databasearray' || attributes_arr.type === 'work_permit_attachment') {\n                        attr = DS.hasMany(relation, {\n                            async: true,\n                        });\n                    } else if (attribute_name === 'parent') {\n                        attr = DS.belongsTo(relation, {\n                            inverse: null,\n                            async: false,\n                        });\n                    } else if (attribute_name === 'superior') {\n                        attr = DS.belongsTo(relation, {\n                            inverse: null,\n                            async: false,\n                        });\n                    } else if (attributes_arr.async != null && attributes_arr.async) {\n                        attr = DS.belongsTo(relation, {\n                            async: true,\n                        });\n                    } else if (\n                        ((ref1 = form_name.toLowerCase() + '.' + attribute_name),\n                        indexOf.call(async_relations, ref1) >= 0)\n                    ) {\n                        attr = DS.belongsTo(relation, {\n                            async: true,\n                        });\n                    } else {\n                        attr = DS.belongsTo(relation, {\n                            async: false,\n                        });\n                    }\n                } else {\n                    //otherwise just create normal attribute\n                    attr = DS.attr();\n                }\n                //create the attribute object\n                return (model_attributes[attribute_name] = attr);\n            });\n            //put model attributes to helper object\n            return (all_attributes[form_name] = model_attributes);\n        });\n        all_attributes = this.createWorkdayModels(all_attributes, data.forms);\n        //iterate over relations array\n        $.each(rel_objects, function (form_name, models) {\n            var attributes;\n            form_name = form_name.classify();\n            if (!all_attributes[form_name]) {\n                //create only name field for empty model\n                attributes = {};\n                attributes.name = DS.attr();\n                return (all_attributes[form_name] = attributes);\n            }\n        });\n        //create hasMany-relations\n        // do we really need this? commented by veikko 14.8.2015 so parent relations could work\n        //            $.each models, (index, value) ->\n        //                attributes = {}\n        //                value = value.decamelize()\n        //                attributes[value] = DS.hasMany(value)\n        //                $.extend(all_attributes[form_name], attributes)\n        //iterate attributes helper object and create Ember Models from there\n        return $.each(all_attributes, function (form_name, attributes) {\n            return (Tt4[form_name] = CollectorModel.extend(CollectorValidationMixin, attributes));\n        });\n    },\n    deleteModels: function (store) {\n        //iterate every form\n        return $.each(this.forms, function (form_name, value) {\n            //unload model data\n            return store.unloadAll(form_name);\n        });\n    },\n    //delete Tt4[form_name]\n    createWorkdayModels: function (all_attributes, forms) {\n        all_attributes['WorkdayDay'] = {\n            date: DS.attr('string'),\n            minutes: DS.attr('number'),\n            own: DS.attr('boolean'),\n            desc: DS.attr('string'),\n            country: DS.attr('string'),\n            absence_minutes: DS.attr('number'),\n        };\n        all_attributes['WorkdayWeek'] = {\n            day: DS.attr('string'),\n            starttime: DS.attr('string'),\n            endtime: DS.attr('string'),\n            minutes: DS.attr('number'),\n            own: DS.attr('boolean'),\n            overtimerule: DS.belongsTo('WorkdayOvertimeRule'),\n            max_minutes: DS.attr('number'),\n            absence_minutes: DS.attr('number'),\n        };\n        all_attributes['WorkdayOvertimeRule'] = {\n            name: DS.attr('string'),\n            rules: DS.attr('string'),\n            workdayWeeks: DS.hasMany('WorkdayWeek'),\n        };\n        if (forms.worktimegroup) {\n            all_attributes['WorkdayDay'].worktimegroup = DS.belongsTo('worktimegroup');\n            all_attributes['WorkdayWeek'].worktimegroup = DS.belongsTo('worktimegroup');\n        }\n        return all_attributes;\n    },\n    addCommonForms: function (data) {\n        var commonForms, form, key;\n        // This is a bit stupid because we can't give privileges depending on userlevel\n        commonForms = this.get('commonForms');\n        for (key in commonForms) {\n            form = commonForms[key];\n            data['forms'][key] = form;\n        }\n        return data;\n    },\n    commonForms: {\n        rounding_rule: {\n            objects: {\n                time_from: {\n                    type: 'time_new',\n                    features: {\n                        mandatory: true,\n                    },\n                },\n                time_to: {\n                    type: 'time_new',\n                    features: {\n                        mandatory: true,\n                    },\n                },\n                time_result: {\n                    type: 'time_new',\n                    features: {\n                        mandatory: true,\n                    },\n                },\n            },\n            privileges: {\n                add: true,\n                edit: true,\n                remove: true,\n            },\n        },\n        logo: {\n            objects: {\n                logo: {\n                    type: 'hdfile',\n                    features: {\n                        is_image: true,\n                        public: true,\n                        single_image: true,\n                    },\n                },\n            },\n        },\n    },\n    createTestModels: function () {\n        var d, data;\n        d = new $.Deferred();\n        data = '';\n        this.create_models(JSON.parse(data), this);\n        //mark as resolved\n        d.resolve();\n        return d;\n    },\n    getPrivilege: function (form, privilege) {\n        if (!this.forms) {\n            return false;\n        }\n        if (privilege === 'show') {\n            if (this.forms[form]) {\n                return true;\n            } else {\n                return false;\n            }\n        }\n        if (!this.forms[form]) {\n            return false;\n        }\n        return this.forms[form].privileges[privilege];\n    },\n    getFormObjects: function (form) {\n        form = form.replace('-', '_');\n        if (!this.forms) {\n            return false;\n        }\n        if (!this.forms[form]) {\n            return false;\n        }\n        if (!this.forms[form].objects) {\n            return false;\n        }\n        return this.forms[form].objects;\n    },\n    getFormObject: function (obj) {\n        var arr, form, obj_name;\n        arr = obj.split('.');\n        form = arr[0].replace('-', '_');\n        obj_name = arr[1];\n        if (!this.forms) {\n            return false;\n        }\n        if (!this.forms[form]) {\n            return false;\n        }\n        if (!this.forms[form].objects) {\n            return false;\n        }\n        if (!this.forms[form].objects[obj_name]) {\n            return false;\n        }\n        return this.forms[form].objects[obj_name];\n    },\n    hasErrors: function (form) {\n        if (!this.forms) {\n            return false;\n        }\n        if (!this.forms[form]) {\n            return false;\n        }\n        if (this.forms[form].errors) {\n            return true;\n        }\n        return false;\n    },\n    getErrors: function (form) {\n        if (!this.forms) {\n            return false;\n        }\n        if (!this.forms[form]) {\n            return false;\n        }\n        if (this.forms[form].errors) {\n            return this.forms[form].errors;\n        }\n        return false;\n    },\n});\n\nexport default collector;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/classes/localization.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar localization;\n\nmoment.updateLocale('fi', {\n    weekdaysMin: 'Su_Ma_Ti_Ke_To_Pe_La'.split('_'),\n    weekdays: 'Sunnuntai_Maanantai_Tiistai_Keskiviikko_Torstai_Perjantai_Lauantai'.split('_'),\n    months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n        '_',\n    ),\n    monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),\n    longDateFormat: {\n        L: 'D.M.YYYY',\n        LT: 'HH:mm',\n        LL: 'D.M.YYYY HH:mm:ss',\n        llll: 'D.M.YYYY HH:mm:ss',\n        LTS: 'HH.mm.ss',\n        LLL: 'Do MMMM[ta] YYYY, [klo] LT',\n        LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] LT',\n        l: 'D.M.YYYY',\n        ll: 'Do MMM YYYY',\n        lll: 'Do MMM YYYY, [klo] LT',\n    },\n    week: {\n        dow: 1, // Monday is the first day of the week.\n        doy: 4, // The week that contains Jan 4th is the first week of the year.\n    },\n});\n\nmoment.updateLocale('sv', {\n    weekdaysMin: 'Sö_Må_Ti_On_To_Fr_Lö'.split('_'),\n    weekdays: 'Söndag_Måndag_Tisdag_Onsdag_Torsdag_Fredag_Lördag'.split('_'),\n    months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n        '_',\n    ),\n    monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n    longDateFormat: {\n        L: 'YYYY-MM-DD',\n        LT: 'HH:mm',\n        LL: 'YYYY-MM-DD HH:mm:ss',\n        llll: 'YYYY-MM-DD HH:mm:ss',\n        LTS: 'LT:ss',\n        LLL: 'D MMMM YYYY LT',\n        LLLL: 'dddd D MMMM YYYY LT',\n    },\n    week: {\n        dow: 1, // Monday is the first day of the week.\n        doy: 4, // The week that contains Jan 4th is the first week of the year.\n    },\n});\n\nlocalization = Ember.Object.create(\n    {\n        //    /**\n        //     * Format float or \"hh:mm\" string to hours, if format specified then returns number as a string with the right separator\n        //     * @param float hours variable or \"hh:mm\" string to be converted to hours\n        //     * @return string given float as hours string\n        //     */\n        formatHours: function (hours, format) {\n            var minutes, real_hours, timeArr;\n            if (typeof hours === 'string' && hours.indexOf(':') > -1) {\n                timeArr = hours.split(':');\n                hours = parseInt(timeArr[0], 10) + parseInt(timeArr[1], 10) / 60;\n            }\n            if (format === 'excel') {\n                return hours.toLocaleString(moment.locale());\n            }\n            if (format === 'serverlessexcel') {\n                return hours;\n            }\n            // Either use ceil or floor depending if positive or negative number\n            if (Math.sign(hours) === -1) {\n                real_hours = Math.ceil(hours);\n            } else {\n                real_hours = Math.floor(hours);\n            }\n            minutes = Math.abs(Math.round((hours - Math.floor(real_hours)) * 60));\n            if (minutes === 60) {\n                real_hours++;\n                minutes = 0;\n            }\n            return (\n                (Object.is(real_hours, -0) ? '-' : '') +\n                real_hours +\n                ':' +\n                (minutes < 10 ? '0' : '') +\n                minutes +\n                'h'\n            );\n        },\n        /*\n  if hours are over 24, put also days to string\n  */\n        formatDaysAndHours: function (hours) {\n            var days, minutes, timeArr;\n            if (typeof hours === 'string' && hours.indexOf(':') > -1) {\n                timeArr = hours.split(':');\n                hours = parseInt(timeArr[0], 10) + parseInt(timeArr[1], 10) / 60;\n            }\n            minutes = Math.round((hours - Math.floor(hours)) * 60);\n            if (hours > 24) {\n                days = Math.floor(hours / 24);\n                hours = hours - days * 24;\n                return (\n                    days +\n                    'd ' +\n                    Math.floor(hours) +\n                    ':' +\n                    (minutes < 10 ? '0' : '') +\n                    minutes +\n                    'h'\n                );\n            }\n            return Math.floor(hours) + ':' + (minutes < 10 ? '0' : '') + minutes + 'h';\n        },\n        //    // register formatHours as handlebar helper hours\n    },\n    Ember.Helper.helper('hours', function (hours) {\n        return localization.formatHours(hours);\n    }),\n);\n\nexport default localization;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/classes/validations.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Validator,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport { isEmpty } from '@ember/utils';\n\nimport config from '../config/environment';\n\nimport $ from 'jquery';\n\nimport { getOwner } from '@ember/application';\nimport fetch from 'fetch';\nimport { pluralize } from 'ember-inflector';\n\nValidator = Ember.Object.create({\n    /*\n  validate_mandatory: (model, value, options) ->\n      d = new $.Deferred()\n      if typeof options == 'object'\n          for obj in options\n              for k, v of obj\n                  v = v.toString()\n                  v_arr = v.split(',')\n                  compareVal = model.get(k)\n\n                  #fix for checkbox when checkbox is not set in init\n                  if v is \"true\" or v is \"false\"\n                      if compareVal == undefined\n                          compareVal = false\n\n                  if (compareVal is null || compareVal is \"\" || compareVal == undefined)\n                      d.resolve(true)\n                      continue\n                  compareVal = compareVal.toString()\n                  if v.substring(0,1) == \"!\"\n                      if compareVal != v.substring(1)\n                          mandatory = true\n                  else\n                      if compareVal in v_arr\n                          mandatory = true\n              if mandatory then d.resolve((value is null || value is \"\" || value is undefined)) else d.resolve()\n      else\n          d.resolve((value is null || value is \"\" || value is undefined))\n\n      return d\n   */\n    validate_mandatory: function (model, value, options) {\n        return new Ember.RSVP.Promise((resolve) => {\n            if (!this._is_visible(model, options)) {\n                resolve(false);\n            }\n            if (value instanceof Ember.ObjectProxy || value instanceof Ember.ArrayProxy) {\n                value = value.get('content');\n            }\n            return resolve(Ember.isEmpty(value));\n        });\n    },\n    _is_visible: function (model, options) {\n        var i, is_visible, len, test, test_field, test_values;\n        if (!(typeof options === 'object')) {\n            return true;\n        }\n        if (!model) {\n            return true;\n        }\n        is_visible = false;\n        for (i = 0, len = options.length; i < len; i++) {\n            test = options[i];\n            for (test_field in test) {\n                test_values = test[test_field];\n                if (this._value_is_in_list(model.get(test_field), test_values)) {\n                    is_visible = true;\n                }\n            }\n        }\n        return is_visible;\n    },\n    _value_is_in_list: function (value, list_string) {\n        var found, list, negation;\n        // make sure that list_string is string\n        list_string = list_string.toString();\n        // checkbox\n        if (list_string === 'true') {\n            if (value) {\n                return true;\n            } else {\n                return false;\n            }\n        }\n        if (list_string === 'false') {\n            if (value) {\n                return false;\n            } else {\n                return true;\n            }\n        }\n        negation = false;\n        if (list_string.substring(0, 1) === '!') {\n            list_string = list_string.substring(1);\n            negation = true;\n        }\n        list = list_string.split(',');\n        found = indexOf.call(list, value) >= 0;\n        if (indexOf.call(list, '(empty)') >= 0) {\n            found = isEmpty(value);\n        }\n        if (negation) {\n            return !found;\n        } else {\n            return found;\n        }\n    },\n    // Validate length of value\n\n    // value: |string|number|array| to validate length on, if array we validate each row of array\n    // options: |number| wanted length\n    validate_length: function (model, value, options) {\n        var d, error, i, item, len, parsed;\n        d = new $.Deferred();\n        error = false;\n        if (!value) {\n            error = false;\n        } else if (this.isJSON(value)) {\n            parsed = JSON.parse(value);\n            if (Array.isArray(parsed)) {\n                for (i = 0, len = parsed.length; i < len; i++) {\n                    item = parsed[i];\n                    if (item.toString().length !== options) {\n                        error = true;\n                    }\n                }\n            }\n        } else if (value.length !== options) {\n            error = true;\n        }\n        if (error) {\n            d.resolve({\n                length: options,\n            });\n        } else {\n            d.resolve();\n        }\n        return d;\n    },\n    validate_minLength: function (model, value, options) {\n        var d;\n        d = new $.Deferred();\n        if (value.length < options) {\n            d.resolve({\n                length: options,\n            });\n        } else {\n            d.resolve();\n        }\n        return d;\n    },\n    validate_maxLength: function (model, value, options) {\n        var d;\n        d = new $.Deferred();\n        if (value && value.length > options) {\n            d.resolve({\n                length: options,\n            });\n        } else {\n            d.resolve();\n        }\n        return d;\n    },\n    validate_number: function (model, value, options) {\n        var d;\n        d = new $.Deferred();\n        if (isNaN(value)) {\n            d.resolve(true);\n        } else {\n            d.resolve();\n        }\n        return d;\n    },\n    validate_forced_pause: function (model, value, options) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var minutes, split;\n            if (!model.get('pause')) {\n                resolve();\n            }\n            // check for start-end or work_hours\n            if (model.get('endtime')) {\n                minutes = moment(model.get('date') + ' ' + model.get('endtime')).diff(\n                    moment(model.get('date') + ' ' + model.get('starttime')),\n                    'minutes',\n                );\n                if (minutes < 0) {\n                    minutes += 1440;\n                }\n            } else {\n                split = model.get('work_hours').split(':');\n                minutes = parseInt(split[0], 10) * 60 + parseInt(split[1], 10);\n            }\n            if (minutes > 360 && model.get('pause') < 30) {\n                return resolve(true);\n            }\n            return resolve();\n        });\n    },\n    validate_multiPause: function (model, value, options) {\n        return new Ember.RSVP.Promise((resolve) => {\n            // If both starttime and endtime are empty, we don't need to validate multipauses (😁)\n            if (!model.get('endtime') && !model.get('starttime')) resolve(false);\n            // If no multipauses at all, no need to validate anything\n            if (isEmpty(model.get('multipause'))) resolve(false);\n\n            // Begin validating worktime multipauses one by one\n            model.get('multipause').forEach((multipause) => {\n                if (!multipause.start) return; // continue loop if multipause doesn't have start\n                let multiPauseStart = moment('01-01-01 ' + multipause.start, 'YY-MM-DD HH:mm');\n                let worktimeStart = moment('01-01-01 ' + model.get('starttime'), 'YY-MM-DD HH:mm');\n\n                if (model.get('endtime')) {\n                    let worktimeEnd = moment('01-01-01 ' + model.get('endtime'), 'YY-MM-DD HH:mm');\n                    const worktimeGoesOvernight = worktimeEnd.isBefore(worktimeStart);\n                    if (worktimeGoesOvernight) {\n                        if (\n                            multiPauseStart.isBefore(worktimeStart) &&\n                            multiPauseStart.isBefore(worktimeEnd)\n                        )\n                            multiPauseStart = moment(\n                                '01-01-02 ' + multipause.start,\n                                'YY-MM-DD HH:mm',\n                            );\n                        worktimeEnd = moment('01-01-02 ' + model.get('endtime'), 'YY-MM-DD HH:mm');\n                    }\n\n                    if (!multiPauseStart.isBetween(worktimeStart, worktimeEnd)) resolve(true);\n                    if (multipause.end) {\n                        let multiPauseEnd = moment('01-01-01 ' + multipause.end, 'YY-MM-DD HH:mm');\n                        if (\n                            worktimeGoesOvernight &&\n                            multiPauseEnd.isBefore(worktimeStart) &&\n                            multiPauseEnd.isBefore(\n                                moment('01-01-01 ' + model.get('endtime'), 'YY-MM-DD HH:mm'),\n                            )\n                        ) {\n                            multiPauseEnd = moment('01-01-02 ' + multipause.end, 'YY-MM-DD HH:mm');\n                        }\n                        if (!multiPauseEnd.isBetween(worktimeStart, worktimeEnd)) resolve(true);\n                    }\n                } else if (multiPauseStart.isBefore(worktimeStart)) {\n                    resolve(true);\n                }\n            });\n            return resolve(false);\n        });\n    },\n    validate_multipleHours: function (model, value, options) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var formatMinutes, minutes, sameAs;\n            if (!model.get('endtime')) {\n                resolve();\n            }\n            minutes = moment(model.get('date') + ' ' + model.get('endtime')).diff(\n                moment(model.get('date') + ' ' + model.get('starttime')),\n                'minutes',\n            );\n            if (model.get('pause')) {\n                minutes -= model.get('pause');\n            }\n            if (minutes < 0) {\n                minutes += 1440;\n            }\n            sameAs = 0;\n            value.forEach((row) => {\n                var split;\n                if (typeof row.get('hours') === 'string') {\n                    split = row.get('hours').split(':');\n                    return (sameAs += parseInt(split[0], 10) * 60 + parseInt(split[1], 10));\n                } else if (typeof row.get('hours') === 'number') {\n                    return (sameAs += row.get('hours') * 60);\n                }\n            });\n            formatMinutes = (minutes) => {\n                var formatted, leftover;\n                if (!minutes) {\n                    return 0;\n                }\n                formatted = Math.floor(minutes / 60);\n                leftover = Math.round(minutes - formatted * 60);\n                formatted += ':' + (leftover < 10 ? '0' : '') + leftover;\n                return formatted;\n            };\n            minutes = Math.round(minutes);\n            sameAs = Math.round(sameAs);\n            if (!minutes || sameAs === minutes) {\n                return resolve();\n            } else {\n                return resolve({\n                    hours: formatMinutes(minutes),\n                    sameas: formatMinutes(sameAs),\n                });\n            }\n        });\n    },\n    validate_email: function (model, value, options) {\n        var d;\n        d = new $.Deferred();\n        if (\n            value &&\n            !/^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i.test(\n                value,\n            )\n        ) {\n            d.resolve(true);\n        } else {\n            d.resolve();\n        }\n        return d;\n    },\n    //    if validator && validator.birthdate && moment(@get('value')).isAfter(moment().subtract(10, 'years'))\n    //        @set('error', @get('intl').t(\"field.error.birthdate\"))\n    validate_birthdate: function (model, value, options) {\n        if (moment(value).isAfter(moment().subtract(10, 'years'))) {\n            return this.returnAsPromise(true);\n        } else {\n            return this.returnAsPromise();\n        }\n    },\n    validate_remote_email: function (model, value, options) {\n        var d, data, url;\n        d = new $.Deferred();\n        if (typeof model.changedAttributes === 'function') {\n            if (Ember.isEmpty(model.changedAttributes().username)) {\n                d.resolve();\n                return d;\n            }\n        }\n        url = config.APP.COLLECTOR_API_URL + '/createService';\n        data = {\n            validate: true,\n        };\n        data['email'] = value;\n        $.ajax({\n            url: url,\n            data: JSON.stringify(data),\n            type: 'POST',\n            contentType: 'application/json',\n        }).then(\n            function () {\n                return d.resolve();\n            },\n            function (error) {\n                return d.resolve(true);\n            },\n        );\n        return d;\n    },\n    validate_match: function (model, value, options) {\n        var d;\n        d = new $.Deferred();\n        if (model.get(options.match) !== value) {\n            d.resolve(true);\n        } else {\n            d.resolve();\n        }\n        return d;\n    },\n    validate_digits: function (model, value, options) {\n        var d, error, i, item, len, ref;\n        d = new $.Deferred();\n        error = false;\n        if (value && Array.isArray(JSON.parse(value))) {\n            ref = JSON.parse(value);\n            for (i = 0, len = ref.length; i < len; i++) {\n                item = ref[i];\n                if (Number(item) !== parseInt(item, 10)) {\n                    error = true;\n                }\n            }\n        } else if (value && Number(value) !== parseInt(value, 10)) {\n            error = true;\n        }\n        if (error) {\n            d.resolve(true);\n        } else {\n            d.resolve();\n        }\n        return d;\n    },\n    validate_person_country: function (model, value, options) {\n        if (value === null || value === '' || value === void 0 || value === 'null') {\n            return this.returnAsPromise(true);\n        } else {\n            return this.returnAsPromise();\n        }\n    },\n    validate_employer_country: function (model, value, options) {\n        if (value === null || value === '' || value === void 0 || value === 'null') {\n            return this.returnAsPromise(true);\n        } else {\n            return this.returnAsPromise();\n        }\n    },\n    validate_PIN: function (model, value, options) {\n        var nationality;\n        nationality = model.get('homecountry');\n        // If PIN is empty then we say its valid\n        if (!value) {\n            return this.returnAsPromise();\n        }\n        // If we don't have the nationality we can't validate PIN\n        if (nationality) {\n            nationality = nationality.toUpperCase();\n        } else {\n            return this.returnAsPromise();\n        }\n        if (nationality === 'SE') {\n            if (value.length !== 13 && value.length !== 11) {\n                return this.returnAsPromise({\n                    country: 'SE',\n                });\n            }\n            if (\n                !/^(([\\d]{2})|([1-2][0|9][\\d]{2}))(0?[\\d]|1[012])(0[\\d]|[12]\\d|3[01])-[\\d]{3}[A-Z\\d]$/i.test(\n                    value,\n                )\n            ) {\n                return this.returnAsPromise({\n                    country: 'SE',\n                });\n            }\n        } else if (nationality === 'FI') {\n            if (!/^((0[\\d]|[12]\\d|3[01])(0?[\\d]|1[012])[\\d]{2}-[\\d]{3}[a-z\\d])$/i.test(value)) {\n                return this.returnAsPromise({\n                    country: 'FI',\n                });\n            }\n        }\n        return this.returnAsPromise();\n    },\n    validate_id06_number: function (model, value, options) {\n        // If value is empty then we say its valid\n        if (!value) {\n            return this.returnAsPromise();\n        }\n        if (!/^[a-z]{2}-[\\d]{2}(0?[\\d]|1[012])-[\\d]{6}$/i.test(value)) {\n            return this.returnAsPromise(true);\n        }\n        return this.returnAsPromise();\n    },\n    validate_username: function (model, value, options) {\n        // If value is empty then we say its valid\n        if (!value) {\n            return this.returnAsPromise();\n        }\n        if (!/^[a-z0-9_+@.-]+$/i.test(value)) {\n            return this.returnAsPromise(true);\n        }\n        return this.returnAsPromise();\n    },\n    check_username: function (model, value, resolve) {\n        var promise;\n        promise = this.validate_remote_email(model, value, null);\n        return promise.then((back) => {\n            return resolve(back);\n        });\n    },\n    validate_username_free: function (model, value, options) {\n        if (!value) {\n            return this.returnAsPromise();\n        }\n        if (\n            !model.get('isNew') &&\n            !model.get('hasDirtyAttributes') &&\n            value === model.get('username')\n        ) {\n            return this.returnAsPromise();\n        }\n        return new Em.RSVP.Promise((resolve, reject) => {\n            //@resolve = resolve\n            //@model = model\n            //@value = value\n            //console.log \"tryin\"\n            return this.check_username(model, value, resolve);\n        });\n    },\n    returnAsPromise: function (value) {\n        var d;\n        d = new $.Deferred();\n        d.resolve(value);\n        return d;\n    },\n    isJSON: function (value) {\n        var e;\n        if (!isNaN(value)) {\n            return false;\n        }\n        try {\n            JSON.parse(value);\n        } catch (error1) {\n            e = error1;\n            return false;\n        }\n        return true;\n    },\n    validate_password: function (model, value, options) {\n        var attribute, changed, hasChanged;\n        if (value === 'secured') {\n            return this.returnAsPromise();\n        }\n        if (model.isNew && value.length === 6) {\n            return this.returnAsPromise();\n        }\n        // Skip password validation for SSO-only users\n        if (model.disable_login) {\n            return this.returnAsPromise();\n        }\n\n        changed = model.changedAttributes();\n        hasChanged = false;\n        for (attribute in changed) {\n            if (attribute === 'password') {\n                hasChanged = true;\n                continue;\n            }\n        }\n        if (hasChanged) {\n            return this.validate_minLength(model, value, 8);\n        } else {\n            return this.returnAsPromise();\n        }\n    },\n    validate_positiveNumber: function (model, value, options) {\n        if (value < 0) {\n            return this.returnAsPromise(true);\n        }\n        return this.returnAsPromise();\n    },\n    validate_date_not_past: function (model, value, options) {\n        if (!model.get('isNew')) {\n            return this.returnAsPromise();\n        }\n        if (moment().isAfter(value, 'day')) {\n            return this.returnAsPromise(true);\n        }\n        return this.returnAsPromise();\n    },\n    validate_date_after: function (model, value, options) {\n        if (model.get(options) > value) {\n            return this.returnAsPromise(true);\n        }\n        return this.returnAsPromise();\n    },\n    validate_date_correct: function (model, value, options) {\n        let date = moment(model.get('date'), 'YYYY-MM-DD', true);\n        if (!date.isValid()) {\n            return this.returnAsPromise(true);\n        }\n        return this.returnAsPromise();\n    },\n    validate_phoneNumber: function (model, value, options) {\n        if (\n            !/^\\+(9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[^0]\\d{1,14}$/i.test(\n                value,\n            )\n        ) {\n            return this.returnAsPromise(true);\n        }\n        return this.returnAsPromise();\n    },\n    validate_skv_number: function (model, value, options) {\n        if (!/^([a-z\\d]{13})$/i.test(value)) {\n            return this.returnAsPromise(true);\n        }\n        return this.returnAsPromise();\n    },\n    validate_PIN: function (model, value, options) {\n        if (options === 'SE') {\n            if (value.length !== 13 && value.length !== 11) {\n                return this.returnAsPromise(true);\n            }\n            if (\n                !/^(([\\d]{2})|([1-2][0|9][\\d]{2}))(0[\\d]|1[012])(0[\\d]|[1-9]\\d)-[\\d]{3}[A-Z\\d]$/i.test(\n                    value,\n                )\n            ) {\n                return this.returnAsPromise(true);\n            }\n        } else if (options === 'FI') {\n            if (!/^((0[\\d]|[12]\\d|3[01])(0?[\\d]|1[012])[\\d]{2}-[\\d]{3}[a-z\\d])$/i.test(value)) {\n                return this.returnAsPromise(true);\n            }\n        }\n        return this.returnAsPromise();\n    },\n    validate_project_number: function (model, value, options) {\n        if (isFinite(value)) {\n            if (parseInt(value, 10) === 0) {\n                return this.returnAsPromise(true);\n            }\n        }\n        return this.returnAsPromise();\n    },\n    validate_unique: async function (model, value, options, field, owner) {\n        if (!value) return false;\n\n        const collector = getOwner(owner).lookup('service:collectorService'); // get collector service\n        const session = getOwner(owner).lookup('service:session'); // get session service (needed for auth)\n\n        const form = model.constructor.modelName;\n        const form_plural = pluralize(form).camelize();\n        // query for rows with the same value as the model we are validating\n        // use fetch instead of ember data because we don't want to update the store\n        const req = await fetch(\n            `${config.APP.COLLECTOR_API_URL}/${form_plural}?${field}=${value}`,\n            {\n                headers: {\n                    Authorization: 'Bearer ' + session.data.authenticated.access_token,\n                },\n            },\n        );\n        const rows = await req.json();\n        // if we have more than one row and the first row is not the same as the model we are validating then we have a duplicate value\n        if (rows.count > 0 && Number(rows[form_plural][0].id) !== Number(model.id)) {\n            const name = collector.getTranslationForColumn(form, field);\n            return { field: name }; // retun error with field name so we can show it in error message\n        }\n\n        return false;\n    },\n    // validate that hours and minutes are not more than 2 digits in time input\n    validate_hoursAndMinutes: function (model, value, options) {\n        // only validate value if it is a string and contains a colon\n        if (value && value.toString().includes(':')) {\n            // split value to hours and minutes\n            const split = value.split(':');\n            const hours = split[0];\n            const minutes = split[1];\n            // if hours or minutes have more than 2 digits it is a validation error\n            if (minutes.length > 2 || hours.length > 2) {\n                return this.returnAsPromise(true);\n            }\n        }\n\n        return this.returnAsPromise(false);\n    },\n});\n\nexport default Validator;\n","/*jslint eqeq: true*/\nexport default [{\"locale\":\"en\",\"pluralRuleFunction\":function(n,ord){var s=String(n).split(\".\"),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return n10==1&&n100!=11?\"one\":n10==2&&n100!=12?\"two\":n10==3&&n100!=13?\"few\":\"other\";return n==1&&v0?\"one\":\"other\"},\"fields\":{\"year\":{\"displayName\":\"year\",\"relative\":{\"0\":\"this year\",\"1\":\"next year\",\"-1\":\"last year\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} year\",\"other\":\"in {0} years\"},\"past\":{\"one\":\"{0} year ago\",\"other\":\"{0} years ago\"}}},\"year-short\":{\"displayName\":\"yr.\",\"relative\":{\"0\":\"this yr.\",\"1\":\"next yr.\",\"-1\":\"last yr.\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} yr.\",\"other\":\"in {0} yr.\"},\"past\":{\"one\":\"{0} yr. ago\",\"other\":\"{0} yr. ago\"}}},\"month\":{\"displayName\":\"month\",\"relative\":{\"0\":\"this month\",\"1\":\"next month\",\"-1\":\"last month\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} month\",\"other\":\"in {0} months\"},\"past\":{\"one\":\"{0} month ago\",\"other\":\"{0} months ago\"}}},\"month-short\":{\"displayName\":\"mo.\",\"relative\":{\"0\":\"this mo.\",\"1\":\"next mo.\",\"-1\":\"last mo.\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} mo.\",\"other\":\"in {0} mo.\"},\"past\":{\"one\":\"{0} mo. ago\",\"other\":\"{0} mo. ago\"}}},\"day\":{\"displayName\":\"day\",\"relative\":{\"0\":\"today\",\"1\":\"tomorrow\",\"-1\":\"yesterday\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} day\",\"other\":\"in {0} days\"},\"past\":{\"one\":\"{0} day ago\",\"other\":\"{0} days ago\"}}},\"day-short\":{\"displayName\":\"day\",\"relative\":{\"0\":\"today\",\"1\":\"tomorrow\",\"-1\":\"yesterday\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} day\",\"other\":\"in {0} days\"},\"past\":{\"one\":\"{0} day ago\",\"other\":\"{0} days ago\"}}},\"hour\":{\"displayName\":\"hour\",\"relative\":{\"0\":\"this hour\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} hour\",\"other\":\"in {0} hours\"},\"past\":{\"one\":\"{0} hour ago\",\"other\":\"{0} hours ago\"}}},\"hour-short\":{\"displayName\":\"hr.\",\"relative\":{\"0\":\"this hour\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} hr.\",\"other\":\"in {0} hr.\"},\"past\":{\"one\":\"{0} hr. ago\",\"other\":\"{0} hr. ago\"}}},\"minute\":{\"displayName\":\"minute\",\"relative\":{\"0\":\"this minute\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} minute\",\"other\":\"in {0} minutes\"},\"past\":{\"one\":\"{0} minute ago\",\"other\":\"{0} minutes ago\"}}},\"minute-short\":{\"displayName\":\"min.\",\"relative\":{\"0\":\"this minute\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} min.\",\"other\":\"in {0} min.\"},\"past\":{\"one\":\"{0} min. ago\",\"other\":\"{0} min. ago\"}}},\"second\":{\"displayName\":\"second\",\"relative\":{\"0\":\"now\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} second\",\"other\":\"in {0} seconds\"},\"past\":{\"one\":\"{0} second ago\",\"other\":\"{0} seconds ago\"}}},\"second-short\":{\"displayName\":\"sec.\",\"relative\":{\"0\":\"now\"},\"relativeTime\":{\"future\":{\"one\":\"in {0} sec.\",\"other\":\"in {0} sec.\"},\"past\":{\"one\":\"{0} sec. ago\",\"other\":\"{0} sec. ago\"}}}},\"numbers\":{\"decimal\":{\"long\":[[1000,{\"one\":[\"0 thousand\",1],\"other\":[\"0 thousand\",1]}],[10000,{\"one\":[\"00 thousand\",2],\"other\":[\"00 thousand\",2]}],[100000,{\"one\":[\"000 thousand\",3],\"other\":[\"000 thousand\",3]}],[1000000,{\"one\":[\"0 million\",1],\"other\":[\"0 million\",1]}],[10000000,{\"one\":[\"00 million\",2],\"other\":[\"00 million\",2]}],[100000000,{\"one\":[\"000 million\",3],\"other\":[\"000 million\",3]}],[1000000000,{\"one\":[\"0 billion\",1],\"other\":[\"0 billion\",1]}],[10000000000,{\"one\":[\"00 billion\",2],\"other\":[\"00 billion\",2]}],[100000000000,{\"one\":[\"000 billion\",3],\"other\":[\"000 billion\",3]}],[1000000000000,{\"one\":[\"0 trillion\",1],\"other\":[\"0 trillion\",1]}],[10000000000000,{\"one\":[\"00 trillion\",2],\"other\":[\"00 trillion\",2]}],[100000000000000,{\"one\":[\"000 trillion\",3],\"other\":[\"000 trillion\",3]}]],\"short\":[[1000,{\"one\":[\"0K\",1],\"other\":[\"0K\",1]}],[10000,{\"one\":[\"00K\",2],\"other\":[\"00K\",2]}],[100000,{\"one\":[\"000K\",3],\"other\":[\"000K\",3]}],[1000000,{\"one\":[\"0M\",1],\"other\":[\"0M\",1]}],[10000000,{\"one\":[\"00M\",2],\"other\":[\"00M\",2]}],[100000000,{\"one\":[\"000M\",3],\"other\":[\"000M\",3]}],[1000000000,{\"one\":[\"0B\",1],\"other\":[\"0B\",1]}],[10000000000,{\"one\":[\"00B\",2],\"other\":[\"00B\",2]}],[100000000000,{\"one\":[\"000B\",3],\"other\":[\"000B\",3]}],[1000000000000,{\"one\":[\"0T\",1],\"other\":[\"0T\",1]}],[10000000000000,{\"one\":[\"00T\",2],\"other\":[\"00T\",2]}],[100000000000000,{\"one\":[\"000T\",3],\"other\":[\"000T\",3]}]]}}}];","/*jslint eqeq: true*/\nexport default [{\"locale\":\"fi\",\"pluralRuleFunction\":function(n,ord){var s=String(n).split(\".\"),v0=!s[1];if(ord)return\"other\";return n==1&&v0?\"one\":\"other\"},\"fields\":{\"year\":{\"displayName\":\"vuosi\",\"relative\":{\"0\":\"tänä vuonna\",\"1\":\"ensi vuonna\",\"-1\":\"viime vuonna\"},\"relativeTime\":{\"future\":{\"one\":\"{0} vuoden päästä\",\"other\":\"{0} vuoden päästä\"},\"past\":{\"one\":\"{0} vuosi sitten\",\"other\":\"{0} vuotta sitten\"}}},\"year-short\":{\"displayName\":\"v\",\"relative\":{\"0\":\"tänä v\",\"1\":\"ensi v\",\"-1\":\"viime v\"},\"relativeTime\":{\"future\":{\"one\":\"{0} v päästä\",\"other\":\"{0} v päästä\"},\"past\":{\"one\":\"{0} v sitten\",\"other\":\"{0} v sitten\"}}},\"month\":{\"displayName\":\"kuukausi\",\"relative\":{\"0\":\"tässä kuussa\",\"1\":\"ensi kuussa\",\"-1\":\"viime kuussa\"},\"relativeTime\":{\"future\":{\"one\":\"{0} kuukauden päästä\",\"other\":\"{0} kuukauden päästä\"},\"past\":{\"one\":\"{0} kuukausi sitten\",\"other\":\"{0} kuukautta sitten\"}}},\"month-short\":{\"displayName\":\"kk\",\"relative\":{\"0\":\"tässä kk\",\"1\":\"ensi kk\",\"-1\":\"viime kk\"},\"relativeTime\":{\"future\":{\"one\":\"{0} kk päästä\",\"other\":\"{0} kk päästä\"},\"past\":{\"one\":\"{0} kk sitten\",\"other\":\"{0} kk sitten\"}}},\"day\":{\"displayName\":\"päivä\",\"relative\":{\"0\":\"tänään\",\"1\":\"huomenna\",\"2\":\"ylihuomenna\",\"-2\":\"toissa päivänä\",\"-1\":\"eilen\"},\"relativeTime\":{\"future\":{\"one\":\"{0} päivän päästä\",\"other\":\"{0} päivän päästä\"},\"past\":{\"one\":\"{0} päivä sitten\",\"other\":\"{0} päivää sitten\"}}},\"day-short\":{\"displayName\":\"pv\",\"relative\":{\"0\":\"tänään\",\"1\":\"huom.\",\"2\":\"ylihuom.\",\"-2\":\"toissap.\",\"-1\":\"eilen\"},\"relativeTime\":{\"future\":{\"one\":\"{0} pv päästä\",\"other\":\"{0} pv päästä\"},\"past\":{\"one\":\"{0} pv sitten\",\"other\":\"{0} pv sitten\"}}},\"hour\":{\"displayName\":\"tunti\",\"relative\":{\"0\":\"tämän tunnin aikana\"},\"relativeTime\":{\"future\":{\"one\":\"{0} tunnin päästä\",\"other\":\"{0} tunnin päästä\"},\"past\":{\"one\":\"{0} tunti sitten\",\"other\":\"{0} tuntia sitten\"}}},\"hour-short\":{\"displayName\":\"t\",\"relative\":{\"0\":\"tunnin sisällä\"},\"relativeTime\":{\"future\":{\"one\":\"{0} t päästä\",\"other\":\"{0} t päästä\"},\"past\":{\"one\":\"{0} t sitten\",\"other\":\"{0} t sitten\"}}},\"minute\":{\"displayName\":\"minuutti\",\"relative\":{\"0\":\"tämän minuutin aikana\"},\"relativeTime\":{\"future\":{\"one\":\"{0} minuutin päästä\",\"other\":\"{0} minuutin päästä\"},\"past\":{\"one\":\"{0} minuutti sitten\",\"other\":\"{0} minuuttia sitten\"}}},\"minute-short\":{\"displayName\":\"min\",\"relative\":{\"0\":\"minuutin sisällä\"},\"relativeTime\":{\"future\":{\"one\":\"{0} min päästä\",\"other\":\"{0} min päästä\"},\"past\":{\"one\":\"{0} min sitten\",\"other\":\"{0} min sitten\"}}},\"second\":{\"displayName\":\"sekunti\",\"relative\":{\"0\":\"nyt\"},\"relativeTime\":{\"future\":{\"one\":\"{0} sekunnin päästä\",\"other\":\"{0} sekunnin päästä\"},\"past\":{\"one\":\"{0} sekunti sitten\",\"other\":\"{0} sekuntia sitten\"}}},\"second-short\":{\"displayName\":\"s\",\"relative\":{\"0\":\"nyt\"},\"relativeTime\":{\"future\":{\"one\":\"{0} s päästä\",\"other\":\"{0} s päästä\"},\"past\":{\"one\":\"{0} s sitten\",\"other\":\"{0} s sitten\"}}}},\"numbers\":{\"decimal\":{\"long\":[[1000,{\"one\":[\"0 tuhat\",1],\"other\":[\"0 tuhatta\",1]}],[10000,{\"one\":[\"00 tuhatta\",2],\"other\":[\"00 tuhatta\",2]}],[100000,{\"one\":[\"000 tuhatta\",3],\"other\":[\"000 tuhatta\",3]}],[1000000,{\"one\":[\"0 miljoona\",1],\"other\":[\"0 miljoonaa\",1]}],[10000000,{\"one\":[\"00 miljoonaa\",2],\"other\":[\"00 miljoonaa\",2]}],[100000000,{\"one\":[\"000 miljoonaa\",3],\"other\":[\"000 miljoonaa\",3]}],[1000000000,{\"one\":[\"0 miljardi\",1],\"other\":[\"0 miljardia\",1]}],[10000000000,{\"one\":[\"00 miljardia\",2],\"other\":[\"00 miljardia\",2]}],[100000000000,{\"one\":[\"000 miljardia\",3],\"other\":[\"000 miljardia\",3]}],[1000000000000,{\"one\":[\"0 biljoona\",1],\"other\":[\"0 biljoonaa\",1]}],[10000000000000,{\"one\":[\"00 biljoonaa\",2],\"other\":[\"00 biljoonaa\",2]}],[100000000000000,{\"one\":[\"000 biljoonaa\",3],\"other\":[\"000 biljoonaa\",3]}]],\"short\":[[1000,{\"one\":[\"0 t'.'\",1],\"other\":[\"0 t'.'\",1]}],[10000,{\"one\":[\"00 t'.'\",2],\"other\":[\"00 t'.'\",2]}],[100000,{\"one\":[\"000 t'.'\",3],\"other\":[\"000 t'.'\",3]}],[1000000,{\"one\":[\"0 milj'.'\",1],\"other\":[\"0 milj'.'\",1]}],[10000000,{\"one\":[\"00 milj'.'\",2],\"other\":[\"00 milj'.'\",2]}],[100000000,{\"one\":[\"000 milj'.'\",3],\"other\":[\"000 milj'.'\",3]}],[1000000000,{\"one\":[\"0 mrd'.'\",1],\"other\":[\"0 mrd'.'\",1]}],[10000000000,{\"one\":[\"00 mrd'.'\",2],\"other\":[\"00 mrd'.'\",2]}],[100000000000,{\"one\":[\"000 mrd'.'\",3],\"other\":[\"000 mrd'.'\",3]}],[1000000000000,{\"one\":[\"0 bilj'.'\",1],\"other\":[\"0 bilj'.'\",1]}],[10000000000000,{\"one\":[\"00 bilj'.'\",2],\"other\":[\"00 bilj'.'\",2]}],[100000000000000,{\"one\":[\"000 bilj'.'\",3],\"other\":[\"000 bilj'.'\",3]}]]}}}];","/*jslint eqeq: true*/\nexport default [{\"locale\":\"sv\",\"pluralRuleFunction\":function(n,ord){var s=String(n).split(\".\"),v0=!s[1],t0=Number(s[0])==n,n10=t0&&s[0].slice(-1),n100=t0&&s[0].slice(-2);if(ord)return(n10==1||n10==2)&&n100!=11&&n100!=12?\"one\":\"other\";return n==1&&v0?\"one\":\"other\"},\"fields\":{\"year\":{\"displayName\":\"år\",\"relative\":{\"0\":\"i år\",\"1\":\"nästa år\",\"-1\":\"i fjol\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} år\",\"other\":\"om {0} år\"},\"past\":{\"one\":\"för {0} år sedan\",\"other\":\"för {0} år sedan\"}}},\"year-short\":{\"displayName\":\"år\",\"relative\":{\"0\":\"i år\",\"1\":\"nästa år\",\"-1\":\"i fjol\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} år\",\"other\":\"om {0} år\"},\"past\":{\"one\":\"för {0} år sen\",\"other\":\"för {0} år sen\"}}},\"month\":{\"displayName\":\"månad\",\"relative\":{\"0\":\"denna månad\",\"1\":\"nästa månad\",\"-1\":\"förra månaden\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} månad\",\"other\":\"om {0} månader\"},\"past\":{\"one\":\"för {0} månad sedan\",\"other\":\"för {0} månader sedan\"}}},\"month-short\":{\"displayName\":\"m\",\"relative\":{\"0\":\"denna mån.\",\"1\":\"nästa mån.\",\"-1\":\"förra mån.\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} mån.\",\"other\":\"om {0} mån.\"},\"past\":{\"one\":\"för {0} mån. sen\",\"other\":\"för {0} mån. sen\"}}},\"day\":{\"displayName\":\"dag\",\"relative\":{\"0\":\"i dag\",\"1\":\"i morgon\",\"2\":\"i övermorgon\",\"-2\":\"i förrgår\",\"-1\":\"i går\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} dag\",\"other\":\"om {0} dagar\"},\"past\":{\"one\":\"för {0} dag sedan\",\"other\":\"för {0} dagar sedan\"}}},\"day-short\":{\"displayName\":\"dag\",\"relative\":{\"0\":\"i dag\",\"1\":\"i morgon\",\"2\":\"i övermorgon\",\"-2\":\"i förrgår\",\"-1\":\"i går\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} d\",\"other\":\"om {0} d\"},\"past\":{\"one\":\"för {0} d sedan\",\"other\":\"för {0} d sedan\"}}},\"hour\":{\"displayName\":\"timme\",\"relative\":{\"0\":\"denna timme\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} timme\",\"other\":\"om {0} timmar\"},\"past\":{\"one\":\"för {0} timme sedan\",\"other\":\"för {0} timmar sedan\"}}},\"hour-short\":{\"displayName\":\"tim\",\"relative\":{\"0\":\"denna timme\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} tim\",\"other\":\"om {0} tim\"},\"past\":{\"one\":\"för {0} tim sedan\",\"other\":\"för {0} tim sedan\"}}},\"minute\":{\"displayName\":\"minut\",\"relative\":{\"0\":\"denna minut\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} minut\",\"other\":\"om {0} minuter\"},\"past\":{\"one\":\"för {0} minut sedan\",\"other\":\"för {0} minuter sedan\"}}},\"minute-short\":{\"displayName\":\"min\",\"relative\":{\"0\":\"denna minut\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} min\",\"other\":\"om {0} min\"},\"past\":{\"one\":\"för {0} min sen\",\"other\":\"för {0} min sen\"}}},\"second\":{\"displayName\":\"sekund\",\"relative\":{\"0\":\"nu\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} sekund\",\"other\":\"om {0} sekunder\"},\"past\":{\"one\":\"för {0} sekund sedan\",\"other\":\"för {0} sekunder sedan\"}}},\"second-short\":{\"displayName\":\"sek\",\"relative\":{\"0\":\"nu\"},\"relativeTime\":{\"future\":{\"one\":\"om {0} sek\",\"other\":\"om {0} sek\"},\"past\":{\"one\":\"för {0} s sen\",\"other\":\"för {0} s sen\"}}}},\"numbers\":{\"decimal\":{\"long\":[[1000,{\"one\":[\"0 tusen\",1],\"other\":[\"0 tusen\",1]}],[10000,{\"one\":[\"00 tusen\",2],\"other\":[\"00 tusen\",2]}],[100000,{\"one\":[\"000 tusen\",3],\"other\":[\"000 tusen\",3]}],[1000000,{\"one\":[\"0 miljon\",1],\"other\":[\"0 miljoner\",1]}],[10000000,{\"one\":[\"00 miljon\",2],\"other\":[\"00 miljoner\",2]}],[100000000,{\"one\":[\"000 miljoner\",3],\"other\":[\"000 miljoner\",3]}],[1000000000,{\"one\":[\"0 miljard\",1],\"other\":[\"0 miljarder\",1]}],[10000000000,{\"one\":[\"00 miljarder\",2],\"other\":[\"00 miljarder\",2]}],[100000000000,{\"one\":[\"000 miljarder\",3],\"other\":[\"000 miljarder\",3]}],[1000000000000,{\"one\":[\"0 biljon\",1],\"other\":[\"0 biljoner\",1]}],[10000000000000,{\"one\":[\"00 biljoner\",2],\"other\":[\"00 biljoner\",2]}],[100000000000000,{\"one\":[\"000 biljoner\",3],\"other\":[\"000 biljoner\",3]}]],\"short\":[[1000,{\"one\":[\"0 tn\",1],\"other\":[\"0 tn\",1]}],[10000,{\"one\":[\"00 tn\",2],\"other\":[\"00 tn\",2]}],[100000,{\"one\":[\"000 tn\",3],\"other\":[\"000 tn\",3]}],[1000000,{\"one\":[\"0 mn\",1],\"other\":[\"0 mn\",1]}],[10000000,{\"one\":[\"00 mn\",2],\"other\":[\"00 mn\",2]}],[100000000,{\"one\":[\"000 mn\",3],\"other\":[\"000 mn\",3]}],[1000000000,{\"one\":[\"0 md\",1],\"other\":[\"0 md\",1]}],[10000000000,{\"one\":[\"00 md\",2],\"other\":[\"00 md\",2]}],[100000000000,{\"one\":[\"000 md\",3],\"other\":[\"000 md\",3]}],[1000000000000,{\"one\":[\"0 bn\",1],\"other\":[\"0 bn\",1]}],[10000000000000,{\"one\":[\"00 bn\",2],\"other\":[\"00 bn\",2]}],[100000000000000,{\"one\":[\"000 bn\",3],\"other\":[\"000 bn\",3]}]]}}}];","define(\"tt4/component-managers/glimmer\", [\"exports\", \"@glimmer/component/-private/ember-component-manager\"], function (_exports, _emberComponentManager) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberComponentManager.default;\n    }\n  });\n});\n","import Component from '@ember/component';\n\n// avoiding reexport directly here because in some circumstances (ember-engines\n// for example) a simple reexport is transformed to `define.alias`,\n// unfortunately at the moment (ember-source@3.13) there is no _actual_\n// `@ember/component` module to alias so this causes issues\n//\n// tldr; we can replace this with a simple reexport when we can rely on Ember\n// actually providing a `@ember/component` module\nexport default Component.extend();\n","import Component from '@ember/component';\n\n// avoiding reexport directly here because in some circumstances (ember-engines\n// for example) a simple reexport is transformed to `define.alias`,\n// unfortunately at the moment (ember-source@3.13) there is no _actual_\n// `@ember/component` module to alias so this causes issues\n//\n// tldr; we can replace this with a simple reexport when we can rely on Ember\n// actually providing a `@ember/component` module\nexport default Component.extend();\n","define(\"tt4/components/-ember-table-private/row-wrapper\", [\"exports\", \"ember-table/components/-private/row-wrapper\"], function (_exports, _rowWrapper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _rowWrapper.default;\n    }\n  });\n});\n","define(\"tt4/components/-ember-table-private/simple-checkbox\", [\"exports\", \"ember-table/components/-private/simple-checkbox\"], function (_exports, _simpleCheckbox) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _simpleCheckbox.default;\n    }\n  });\n});\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class={{concat \\\"ember-movenium-accordion \\\" @class}}>\\n    {{yield (hash Item=(component 'addon/accordion/item' title=@title content=@content))}}\\n</div>\\n\", {\"contents\":\"<div class={{concat \\\"ember-movenium-accordion \\\" @class}}>\\n    {{yield (hash Item=(component 'addon/accordion/item' title=@title content=@content))}}\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/accordion.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/accordion.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\" <div role=\\\"button\\\" class=\\\"ember-movenium-accordion-item {{if this.active \\\"active\\\"}}\\\" {{on 'click' this.toggle value=\\\"event\\\"}}>\\n\\n    {{#if @title}}\\n        {{@title}}\\n    {{else}}\\n        {{if this.active @hideTitle @showTitle}}\\n    {{/if}}\\n\\n    <span class=\\\"accordion-chevron\\\" ></span>\\n</div>\\n<div class=\\\"ember-movenium-accordion-panel {{if this.active \\\"active\\\"}}\\\">\\n    <div class=\\\"ember-movenium-accordion-panel-content\\\">\\n        {{yield}}\\n    </div>\\n</div>\\n\", {\"contents\":\" <div role=\\\"button\\\" class=\\\"ember-movenium-accordion-item {{if this.active \\\"active\\\"}}\\\" {{on 'click' this.toggle value=\\\"event\\\"}}>\\n\\n    {{#if @title}}\\n        {{@title}}\\n    {{else}}\\n        {{if this.active @hideTitle @showTitle}}\\n    {{/if}}\\n\\n    <span class=\\\"accordion-chevron\\\" ></span>\\n</div>\\n<div class=\\\"ember-movenium-accordion-panel {{if this.active \\\"active\\\"}}\\\">\\n    <div class=\\\"ember-movenium-accordion-panel-content\\\">\\n        {{yield}}\\n    </div>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/accordion/item.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/accordion/item.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\nexport default class AccordionItemComponent extends Component {\n    @tracked public active: boolean = false;\n\n    @action protected toggle(event: any): void {\n        const target = event.target;\n        const panel = target.nextElementSibling;\n        if (!panel) return;\n        this.active = !this.active;\n        if (panel.style.maxHeight) {\n            panel.style.maxHeight = null;\n        } else {\n            panel.style.maxHeight = panel.scrollHeight + 'px';\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-bootstrap-container {{if @error \\\"has-error has-feedback\\\"}} {{@class}}\\\" data-anchor={{if @anchorName @anchorName (concat @label '-field')}}>\\n    <label for={{@label}} class=\\\"title\\\">{{@text}}</label>\\n    {{#if @info}} <FieldInfoBubble @text={{@info}} />{{/if}}\\n    {{#if @mandatory}}<sup><span class=\\\"glyphicon glyphicon-asterisk field-icon\\\"></span></sup>{{/if}}\\n    <span class=\\\"text-danger pull-right\\\">{{@error}}</span>\\n    {{yield}}\\n    {{#if @error}}<span class=\\\"glyphicon glyphicon-remove form-control-feedback\\\" aria-hidden=\\\"true\\\"></span>{{/if}}\\n</div>\", {\"contents\":\"<div class=\\\"ember-movenium-bootstrap-container {{if @error \\\"has-error has-feedback\\\"}} {{@class}}\\\" data-anchor={{if @anchorName @anchorName (concat @label '-field')}}>\\n    <label for={{@label}} class=\\\"title\\\">{{@text}}</label>\\n    {{#if @info}} <FieldInfoBubble @text={{@info}} />{{/if}}\\n    {{#if @mandatory}}<sup><span class=\\\"glyphicon glyphicon-asterisk field-icon\\\"></span></sup>{{/if}}\\n    <span class=\\\"text-danger pull-right\\\">{{@error}}</span>\\n    {{yield}}\\n    {{#if @error}}<span class=\\\"glyphicon glyphicon-remove form-control-feedback\\\" aria-hidden=\\\"true\\\"></span>{{/if}}\\n</div>\",\"moduleName\":\"tt4/components/addon/bootstrap-container.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/bootstrap-container.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{yield}}\\n\\n{{this.message}}\\n\\n{{#if (await this.hittingWorktimes)}}\\n    {{#each this.hittingWorktimes as |worktime|}}\\n        <br /> - {{worktime.project.name}} {{worktime.starttime}} - {{worktime.endtime}}\\n    {{/each}}\\n{{/if}}\\n\\n{{#if (await this.hittingAbsences)}}\\n    {{#each this.hittingAbsences as |absence|}}\\n        <br /> - {{absence.abcensetype.name}} {{moment-format absence.startdate \\\"L\\\"}} - {{moment-format absence.enddate \\\"L\\\"}}\\n    {{/each}}\\n{{/if}}\\n\\n{{#if (await this.hittingComps)}}\\n    {{#each this.hittingComps as |worktime|}}\\n        <br /> - {{worktime.project.name}} {{moment-format worktime.date \\\"L\\\"}}\\n    {{/each}}\\n{{/if}}\\n\\n{{#if this.invalidTask}}\\n    {{#each this.invalidTask as |reason|}}\\n        <br /> - {{reason}}\\n    {{/each}}\\n{{/if}}\", {\"contents\":\"{{yield}}\\n\\n{{this.message}}\\n\\n{{#if (await this.hittingWorktimes)}}\\n    {{#each this.hittingWorktimes as |worktime|}}\\n        <br /> - {{worktime.project.name}} {{worktime.starttime}} - {{worktime.endtime}}\\n    {{/each}}\\n{{/if}}\\n\\n{{#if (await this.hittingAbsences)}}\\n    {{#each this.hittingAbsences as |absence|}}\\n        <br /> - {{absence.abcensetype.name}} {{moment-format absence.startdate \\\"L\\\"}} - {{moment-format absence.enddate \\\"L\\\"}}\\n    {{/each}}\\n{{/if}}\\n\\n{{#if (await this.hittingComps)}}\\n    {{#each this.hittingComps as |worktime|}}\\n        <br /> - {{worktime.project.name}} {{moment-format worktime.date \\\"L\\\"}}\\n    {{/each}}\\n{{/if}}\\n\\n{{#if this.invalidTask}}\\n    {{#each this.invalidTask as |reason|}}\\n        <br /> - {{reason}}\\n    {{/each}}\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/collector-error-message.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/collector-error-message.hbs\"}});\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { computed } from '@ember/object';\nimport ErrorHandler from 'tt4/injections/services/error-handler';\nimport DS from 'ember-data';\nimport { IError } from 'tt4/ember-movenium/interfaces/error';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\n\ninterface IErrorMessageComponent {\n    error: IError;\n}\n\nexport default class CollectorErrorMessageComponent extends Component<IErrorMessageComponent> {\n    @service private errorHandler!: ErrorHandler;\n    @service private store!: DS.Store;\n    @service private intl!: any;\n\n    get parsedError(): IError {\n        return this.errorHandler.toError(this.args.error) as IError;\n    }\n\n    get message(): string {\n        return this.errorHandler.errorToString(this.args.error);\n    }\n\n    // We use computeds here becuase we have to cache the ArrayPromiseProxy that the store query returns.\n    // If we don't, these getters will go into an infinite loop. This should be converted over to @cached if/when it is supported by Ember\n    @computed('parsedError')\n    get hittingWorktimes(): DS.PromiseArray<IRecord> | null {\n        if (this.parsedError?.meta?.hits === 'worktime') {\n            return this.store.query('worktime', {\n                id: this.parsedError!.meta.ids.join(','),\n                sideload: true,\n            });\n        } else {\n            return null;\n        }\n    }\n\n    @computed('parsedError')\n    get hittingAbsences(): DS.PromiseArray<IRecord> | null {\n        if (this.parsedError?.meta?.hits === 'absence') {\n            return this.store.query('abcense', {\n                id: this.parsedError!.meta.ids.join(','),\n                sideload: true,\n            });\n        } else {\n            return null;\n        }\n    }\n\n    @computed('parsedError')\n    get hittingComps(): DS.PromiseArray<IRecord> | null {\n        if (this.parsedError?.meta?.hits === 'comp') {\n            return this.store.query('worktime', {\n                id: this.parsedError!.meta.ids.join(','),\n                sideload: true,\n            });\n        } else {\n            return null;\n        }\n    }\n\n    @computed('parsedError')\n    get invalidTask():  boolean | string[] {\n        // get error reasons from error meta and return correct error message based on that\n        const { userRestrictionsPrevent, projectRestrictionsPrevent } = this.parsedError?.meta || {};\n\n        const reasons = [];\n\n        if (userRestrictionsPrevent) {\n            reasons.push(this.intl.t('error.invalidTask.userRestrictions'));\n        }\n        if (projectRestrictionsPrevent) {\n            reasons.push(this.intl.t('error.invalidTask.projectRestrictions'));\n        }\n        return reasons;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class='ember-movenium-date-picker'>\\n    <div class=\\\"ember-movenium-date-picker-start\\\">\\n        <PowerDatepicker @center={{this.centerStart}} @selected={{this.startDate}} @onSelect={{fn this.changeStart}} as |dp|>\\n            <dp.Trigger tabindex=\\\"-1\\\">\\n                <Input\\n                    @type=\\\"text\\\"\\n                    @maxlength='10'\\n                    @value={{if this.startDate (moment-format this.startDate 'DD.MM.YYYY') ''}}\\n                    @keyDown={{this.checkChars}}\\n                    @input={{fn this.validateAndChangeDate 'start'}}\\n                    {{on 'change' (fn this.openEndDatePicker)}}\\n                />\\n            </dp.Trigger>\\n\\n            <dp.Content class=\\\"ember-movenium-date-picker-content\\\">\\n                <dp.Nav />\\n                <dp.Days />\\n            </dp.Content>\\n        </PowerDatepicker>\\n    </div>\\n    -\\n    <div class=\\\"ember-movenium-date-picker-end\\\">\\n        <PowerDatepicker @center={{this.centerEnd}} @selected={{this.endDate}} @onSelect={{fn this.changeEnd}} as |dp|>\\n            <dp.Trigger tabindex=\\\"-1\\\">\\n                <Input\\n                    @type=\\\"text\\\"\\n                    @maxlength='10'\\n                    @value={{if this.endDate (moment-format this.endDate 'DD.MM.YYYY') ''}}\\n                    @keyDown={{this.checkChars}}\\n                    @input={{fn this.validateAndChangeDate 'end'}}\\n                    {{on 'change' (fn this.changeEndManually)}}\\n                />\\n            </dp.Trigger>\\n\\n            <dp.Content class=\\\"ember-movenium-date-picker-content\\\">\\n                <dp.Nav />\\n                <dp.Days />\\n            </dp.Content>\\n        </PowerDatepicker>\\n    </div>\\n    {{svg-jar \\\"Date\\\"}}\\n</div>\", {\"contents\":\"<div class='ember-movenium-date-picker'>\\n    <div class=\\\"ember-movenium-date-picker-start\\\">\\n        <PowerDatepicker @center={{this.centerStart}} @selected={{this.startDate}} @onSelect={{fn this.changeStart}} as |dp|>\\n            <dp.Trigger tabindex=\\\"-1\\\">\\n                <Input\\n                    @type=\\\"text\\\"\\n                    @maxlength='10'\\n                    @value={{if this.startDate (moment-format this.startDate 'DD.MM.YYYY') ''}}\\n                    @keyDown={{this.checkChars}}\\n                    @input={{fn this.validateAndChangeDate 'start'}}\\n                    {{on 'change' (fn this.openEndDatePicker)}}\\n                />\\n            </dp.Trigger>\\n\\n            <dp.Content class=\\\"ember-movenium-date-picker-content\\\">\\n                <dp.Nav />\\n                <dp.Days />\\n            </dp.Content>\\n        </PowerDatepicker>\\n    </div>\\n    -\\n    <div class=\\\"ember-movenium-date-picker-end\\\">\\n        <PowerDatepicker @center={{this.centerEnd}} @selected={{this.endDate}} @onSelect={{fn this.changeEnd}} as |dp|>\\n            <dp.Trigger tabindex=\\\"-1\\\">\\n                <Input\\n                    @type=\\\"text\\\"\\n                    @maxlength='10'\\n                    @value={{if this.endDate (moment-format this.endDate 'DD.MM.YYYY') ''}}\\n                    @keyDown={{this.checkChars}}\\n                    @input={{fn this.validateAndChangeDate 'end'}}\\n                    {{on 'change' (fn this.changeEndManually)}}\\n                />\\n            </dp.Trigger>\\n\\n            <dp.Content class=\\\"ember-movenium-date-picker-content\\\">\\n                <dp.Nav />\\n                <dp.Days />\\n            </dp.Content>\\n        </PowerDatepicker>\\n    </div>\\n    {{svg-jar \\\"Date\\\"}}\\n</div>\",\"moduleName\":\"tt4/components/addon/date-range.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/date-range.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport moment from 'moment';\n\ninterface IDateRange {\n    value?: string;\n    changeDate(args0: string): void;\n}\n\nexport default class DateRangeComponent extends Component<IDateRange> {\n    @tracked public centerStart: Date;\n    @tracked public centerEnd: Date;\n    @tracked public range: any = [];\n\n    constructor(owner: unknown, args: IDateRange) {\n        super(owner, args);\n        const startDate = this.args.value ? this.args.value.split('_')[0] : null;\n        const endDate = this.args.value ? this.args.value.split('_')[0] : null;\n        this.centerStart = startDate ? new Date(startDate) : new Date();\n        this.centerEnd = endDate ? new Date(endDate) : new Date();\n    }\n\n    get startDate(): Date | null {\n        let start = null;\n        if (this.args.value) start = this.args.value.split('_')[0];\n        if (this.range['startdate']) start = this.range['startdate'];\n        return start ? new Date(start) : null;\n    }\n\n    get endDate(): Date | null {\n        let end = null;\n        if (this.args.value) end = this.args.value.split('_')[1];\n        if (this.range['enddate']) end = this.range['enddate'];\n        return end ? new Date(end) : null;\n    }\n\n    @action\n    public changeStart(val: any): void {\n        this.range['startdate'] = val.id;\n        this.range = this.range;\n        this.openEndDatePicker();\n    }\n\n    @action\n    public changeEnd(val: any): void {\n        this.range['enddate'] =\n            this.range['startdate'] && this.range['startdate'] > val.id\n                ? this.range['startdate']\n                : val.id;\n        if (!this.range['startdate'])\n            this.range['startdate'] = this.args.value\n                ? this.args.value.split('_')[0]\n                : this.range['enddate'];\n        this.range = this.range;\n        const queryRange = this.range['startdate'] + '_' + this.range['enddate'];\n        assert(\n            'Date range picker needs @changeDate method because otherwise it is useless',\n            this.args.changeDate,\n        );\n        this.args.changeDate(queryRange);\n    }\n\n    @action\n    public changeEndManually() {\n        if (!this.range['enddate']) return;\n        this.changeEnd({ id: this.range['enddate'] });\n    }\n    /*\n        AI to allow only these type of dates:\n            09.01.2020\n            9.1.2020\n            09012020\n    */\n    @action\n    public validateAndChangeDate(picker: string, event: any) {\n        const value = event.target.value;\n        if (!this.validInputValue(value)) return;\n        if (picker === 'start') {\n            this.centerStart = this.getInputAsDate(value);\n            this.range['startdate'] = moment(this.centerStart).format('YYYY-MM-DD');\n        } else {\n            this.centerEnd = this.getInputAsDate(value);\n            this.range['enddate'] = moment(this.centerEnd).format('YYYY-MM-DD');\n        }\n        this.range = this.range;\n    }\n\n    @action\n    public openEndDatePicker() {\n        if (!this.range['startdate']) return;\n        const endRangeElement = document.querySelector(\n            '.ember-movenium-date-picker-end input',\n        ) as HTMLInputElement;\n        endRangeElement.click();\n        endRangeElement.focus();\n        endRangeElement.select();\n    }\n\n    @action\n    public checkChars(event: any) {\n        const allowedKeyCodes = [190, 188, 8, 13, 110, 37, 39]; // Dot, Comma, Backspace, Numpad decimal, Arrow right/left and Enter\n        if (allowedKeyCodes.includes(event.keyCode) || !isNaN(event.key)) return true;\n        return event.preventDefault();\n    }\n\n    public validInputValue(value: string): boolean {\n        if (value.includes('.') || value.includes(',')) {\n            const split = value.includes('.') ? value.split('.') : value.split(',');\n            return value.length >= 8 && value.length <= 10 && split[2].length === 4;\n        } else {\n            return value.length === 8;\n        }\n    }\n\n    private getInputAsDate(value: string): Date {\n        if (value.includes('.') || value.includes(',')) {\n            const split = value.includes('.') ? value.split('.') : value.split(',');\n            const day = parseInt(split[0], 10);\n            const month = parseInt(split[1], 10) - 1;\n            const year = parseInt(split[2], 10);\n            return new Date(year, month, day);\n        } else {\n            const day = parseInt(value.slice(0, 2), 10);\n            const month = parseInt(value.slice(2, 4), 10) - 1;\n            const year = parseInt(value.slice(-4), 10);\n            return new Date(year, month, day);\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"\\n{{#if hasBlock}}\\n    {{yield this @field @value}}\\n{{else}}\\n\\n    <Addon::BootstrapContainer\\n        @text={{this.fieldLabel}}\\n        @error={{this.errors.firstObject.message}}\\n        @mandatory={{@mandatory}}\\n        @class={{concat \\\"ember-movenium-field-\\\" this.field.name}}\\n        @label={{this.field.name}}\\n        @info={{@info}}\\n    >\\n        {{#let (component this.fieldComponent) as |FieldComponent|}}\\n            {{#if (get @filters this.field.name)}}\\n                <FieldComponent\\n                    @options={{this.field.options}}\\n                    @features={{this.field.features}}\\n                    @record={{readonly @record}}\\n                    @value={{@value}}\\n                    @form={{this.field.form}}\\n                    @name={{this.field.name}}\\n                    @onChange={{@onChange}}\\n                    @field={{this.field}}\\n                    @sortBy={{this.sorts}}\\n                    @filter={{get @filters this.field.name}}\\n                    @disabled={{@disabled}}\\n                    @setDisabled={{@setDisabled}}\\n                    @skipLastUsed={{@skipLastUsed}}\\n                    @prompt={{@prompt}}\\n                    @placeholder={{@placeholder}}\\n                />\\n            {{else}}\\n                <FieldComponent\\n                    @options={{this.field.options}}\\n                    @features={{this.field.features}}\\n                    @record={{readonly @record}}\\n                    @value={{@value}}\\n                    @form={{this.field.form}}\\n                    @name={{this.field.name}}\\n                    @onChange={{@onChange}}\\n                    @field={{this.field}}\\n                    @sortBy={{this.sorts}}\\n                    @disabled={{@disabled}}\\n                    @setDisabled={{@setDisabled}}\\n                    @skipLastUsed={{@skipLastUsed}}\\n                    @prompt={{@prompt}}\\n                    @placeholder={{@placeholder}}\\n                />\\n            {{/if}}\\n        {{/let}}\\n    </Addon::BootstrapContainer>\\n\\n\\n{{/if}}\\n\\n\", {\"contents\":\"\\n{{#if hasBlock}}\\n    {{yield this @field @value}}\\n{{else}}\\n\\n    <Addon::BootstrapContainer\\n        @text={{this.fieldLabel}}\\n        @error={{this.errors.firstObject.message}}\\n        @mandatory={{@mandatory}}\\n        @class={{concat \\\"ember-movenium-field-\\\" this.field.name}}\\n        @label={{this.field.name}}\\n        @info={{@info}}\\n    >\\n        {{#let (component this.fieldComponent) as |FieldComponent|}}\\n            {{#if (get @filters this.field.name)}}\\n                <FieldComponent\\n                    @options={{this.field.options}}\\n                    @features={{this.field.features}}\\n                    @record={{readonly @record}}\\n                    @value={{@value}}\\n                    @form={{this.field.form}}\\n                    @name={{this.field.name}}\\n                    @onChange={{@onChange}}\\n                    @field={{this.field}}\\n                    @sortBy={{this.sorts}}\\n                    @filter={{get @filters this.field.name}}\\n                    @disabled={{@disabled}}\\n                    @setDisabled={{@setDisabled}}\\n                    @skipLastUsed={{@skipLastUsed}}\\n                    @prompt={{@prompt}}\\n                    @placeholder={{@placeholder}}\\n                />\\n            {{else}}\\n                <FieldComponent\\n                    @options={{this.field.options}}\\n                    @features={{this.field.features}}\\n                    @record={{readonly @record}}\\n                    @value={{@value}}\\n                    @form={{this.field.form}}\\n                    @name={{this.field.name}}\\n                    @onChange={{@onChange}}\\n                    @field={{this.field}}\\n                    @sortBy={{this.sorts}}\\n                    @disabled={{@disabled}}\\n                    @setDisabled={{@setDisabled}}\\n                    @skipLastUsed={{@skipLastUsed}}\\n                    @prompt={{@prompt}}\\n                    @placeholder={{@placeholder}}\\n                />\\n            {{/if}}\\n        {{/let}}\\n    </Addon::BootstrapContainer>\\n\\n\\n{{/if}}\\n\\n\",\"moduleName\":\"tt4/components/addon/field-container.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/field-container.hbs\"}});\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { assert } from '@ember/debug';\nimport { isPresent } from '@ember/utils';\nimport FormsService from 'tt4/injections/services/forms';\nimport { IFormField } from 'tt4/ember-movenium/interfaces/forms';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport { htmlSafe } from '@ember/template';\nimport CollectorService from 'tt4/injections/services/collector';\nimport { getOwner } from '@ember/application';\n\nexport interface IFieldContainerArgs {\n    form?: string;\n    value: any;\n    forceType?: string;\n    field: string;\n    filters: any;\n    record: IRecord;\n    prompt?: string | object;\n    errors: [];\n    class: string;\n    sorts?: {\n        [key: string]: string | number;\n    };\n    onChange(fieldname: string, value: any): void;\n}\n\n/**\n * Renders the appropriate field directly from a forms field object, or from a \"form.field\" type string\n * This also wraps error handling, mandatory checkm and provides basic css to display forms in the correct style\n * @class FieldContainerComponent\n * @constructor\n *\n */\nexport default class FieldContainerComponent extends Component<IFieldContainerArgs> {\n    @tracked public value: any = null;\n    @service private forms: any;\n    @service('addon/collector' as any) private collector: any;\n    private field: IFormField;\n\n    constructor(owner: unknown, args: IFieldContainerArgs) {\n        super(owner, args);\n\n        assert(\n            '<FieldContainer> requires an `@onChange` function',\n            this.args.onChange && typeof this.args.onChange === 'function',\n        );\n        assert(\n            \"<FieldContainer> requires a field param! Give it as 'form.field' or only the field name, in which case also give it the form\",\n            isPresent(this.args.field),\n        );\n\n        const splitField = this.args.field.split('.');\n        if (splitField.length < 2 && !isPresent(this.args.form)) {\n            assert(\n                \"You only gave the field to <FieldContainer>, but it needs the form as well: @form='user' @field='firstname'\",\n            );\n        }\n\n        let field = null;\n\n        if (this.args.field && !this.args.form) {\n            field = this.forms.field(splitField[0], splitField[1]);\n        } else if (this.args.form && this.args.field) {\n            field = this.forms.field(this.args.form, this.args.field as string);\n        } else {\n            throw new Error('Invalid field given to FieldContainer');\n        }\n\n        if (this.args.value) {\n            field.value = this.args.value;\n        }\n        if (this.args.prompt) {\n            field.prompt = this.args.prompt;\n        }\n\n        this.field = field;\n    }\n\n    /**\n     * If the record has errors, this will give you the errors pertaining to this field\n     * @property errors\n     * @type array\n     */\n    get errors(): [] {\n        const errors = (this.args.record?.errors as any) || null;\n        return errors?.errorsFor(this.field.name);\n    }\n\n    // /**\n    //  * Is this field mandatory? If so we render an asterisk in the template to indicate this\n    //  * @property isMandatory\n    //  * @type boolean\n    //  */\n    // get isMandatory(): boolean {\n    //     if (this.field.features?.mandatory && !isArray(this.field.features)) {\n    //         return true\n    //     } else if (isArray(this.field.features?.mandatory) && this.args.record) {\n    //         return isVisible(this.args.record, this.field.features!.mandatory as [{}])\n    //     }\n\n    //     return false\n    // }\n\n    /**\n     * The field component to be rendered, determined by the field's type that was given to the @field property\n     * Type of string calculated by: `'fields/' + field.type`\n     * @property fieldComponent\n     * @type string\n     */\n    get fieldComponent(): string | null {\n        if (!this.field) return null;\n        if (this.args.forceType) return 'addon/fields/' + this.args.forceType;\n        let fieldType = this.field.type.replace(/_/g, '-');\n        if (fieldType === 'time-new') fieldType = 'time';\n\n        const component = 'addon/fields/' + fieldType;\n\n        return this.componentExists(component) ? component : 'addon/fields/not-supported';\n    }\n\n    /**\n     * Checks the field object for a label to display, either the field's translated name or its name as a fallback\n     * @property fieldLabel\n     * @type string\n     */\n    get fieldLabel(): SafeString {\n        const field = this.field;\n        return htmlSafe(this.collector.getTranslationForColumn(field.form, field.name) as string);\n    }\n\n    get class() {\n        return 'ember-movenium-field-container';\n    }\n\n    get sorts() {\n        if (!this.args.sorts) return null;\n\n        const keys: any = Object.keys(this.args.sorts);\n        if (keys.includes(this.field.name)) {\n            return this.args.sorts[this.field.name];\n        }\n\n        return null;\n    }\n\n    componentExists(componentName: string) {\n        return getOwner(this).hasRegistration(`component:${componentName}`);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{this.unit}}</span>\\n</div>\\n\", {\"contents\":\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{this.unit}}</span>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/fields/big-price.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/big-price.hbs\"}});\nimport FieldsPriceComponent from './price';\n\nexport default class FieldsBigPriceComponent extends FieldsPriceComponent {}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<XToggle\\n    @theme={{this.theme}}\\n    @value={{@value}}\\n    @onToggle={{@onChange}}\\n    @showLabels={{this.showLabels}}\\n    @size={{this.size}}\\n    @onLabel={{this.onLabel}}\\n    @offLabel={{this.offLabel}}\\n    @disabled={{this.disabled}}\\n    @name={{@name}}\\n/>\", {\"contents\":\"<XToggle\\n    @theme={{this.theme}}\\n    @value={{@value}}\\n    @onToggle={{@onChange}}\\n    @showLabels={{this.showLabels}}\\n    @size={{this.size}}\\n    @onLabel={{this.onLabel}}\\n    @offLabel={{this.offLabel}}\\n    @disabled={{this.disabled}}\\n    @name={{@name}}\\n/>\",\"moduleName\":\"tt4/components/addon/fields/checkbox.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/checkbox.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\n/**\n    ```hbs\n    <Fields::Checkbox @value={{this.checkboxValue}} @onChange={{fn (mut this.checkboxValue)}}/>\n    ```\n    @class FieldsCheckboxComponent\n*/\n\ninterface ICheckbox {\n    form: string;\n    name: string;\n    showLabels: boolean;\n    disabled: boolean;\n    theme: string;\n    size: string;\n    onLabel: string;\n    offLabel: string;\n}\n\nexport default class FieldsCheckboxComponent extends Component<ICheckbox> implements ICheckbox {\n    @tracked public value: boolean = false;\n    @service private intl: any;\n\n    constructor(owner: unknown, args: ICheckbox) {\n        super(owner, args);\n    }\n\n    get form() {\n        return this.args.form;\n    }\n\n    get name() {\n        return this.args.name;\n    }\n\n    get showLabels() {\n        return this.args.showLabels === false ? false : true;\n    }\n\n    get theme() {\n        return this.args.theme || 'material';\n    }\n\n    get size() {\n        return this.args.size || 'large';\n    }\n\n    get disabled() {\n        return this.args.disabled || false;\n    }\n\n    get onLabel() {\n        const key = this.form + '.' + this.name + '.on';\n        const fallback = this.intl.primaryLocale === 'xy' ? key : 'general.yes';\n        return this.intl.t(key, { default: fallback });\n    }\n\n    get offLabel() {\n        const key = this.form + '.' + this.name + '.off';\n        const fallback = this.intl.primaryLocale === 'xy' ? key : 'general.no';\n        return this.intl.t(key, { default: fallback });\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<ul class=\\\"list-group\\\">\\n    <li class=\\\"list-group-item\\\">\\n        <ul class=\\\"list-unstyled\\\">\\n            {{#each this.checkboxes as |box|}}\\n                <label class=\\\"ember-movenium-checkbox\\\">\\n                <p class=\\\"ember-movenium-checboxgroup-text\\\">{{box.text}}</p>\\n                    <Input\\n                        @type=\\\"checkbox\\\"\\n                        @checked={{box.checked}}\\n                        {{on 'change' (fn this.handleChange box)}}\\n                    />\\n                    <span class=\\\"ember-movenium-checkmark\\\"></span>\\n                </label>\\n            {{/each}}\\n        </ul>\\n    </li>\\n</ul>\", {\"contents\":\"<ul class=\\\"list-group\\\">\\n    <li class=\\\"list-group-item\\\">\\n        <ul class=\\\"list-unstyled\\\">\\n            {{#each this.checkboxes as |box|}}\\n                <label class=\\\"ember-movenium-checkbox\\\">\\n                <p class=\\\"ember-movenium-checboxgroup-text\\\">{{box.text}}</p>\\n                    <Input\\n                        @type=\\\"checkbox\\\"\\n                        @checked={{box.checked}}\\n                        {{on 'change' (fn this.handleChange box)}}\\n                    />\\n                    <span class=\\\"ember-movenium-checkmark\\\"></span>\\n                </label>\\n            {{/each}}\\n        </ul>\\n    </li>\\n</ul>\",\"moduleName\":\"tt4/components/addon/fields/checkboxgroup.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/checkboxgroup.hbs\"}});\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\n\ninterface ICheckboxGroupField {\n    form: string;\n    name: string;\n    options: { [key: string]: string };\n    value: string[];\n    onChange(arg0: string[]): void;\n}\n\nexport default class FieldsCheckboxgroupComponent extends Component<ICheckboxGroupField> {\n    @service private intl: any;\n\n    get checkboxes() {\n        if (!this.args.options) return [];\n\n        const value = this.args.value || [];\n\n        return Object.keys(this.args.options).map((key: string) => {\n            let text = this.args.options[key];\n            if (text.substring(0, 1) === '$')\n                text = this.intl.t(this.args.form + 's.' + this.args.name + '.' + key);\n            return {\n                key,\n                text,\n                checked: value.includes(key.toString()),\n            };\n        });\n    }\n\n    @action\n    protected handleChange(box: any) {\n        const index = box.key.toString();\n        const ret = new Set(this.args.value);\n        if (ret.has(index)) ret.delete(index);\n        else ret.add(index);\n        this.args.onChange(Array.from(ret));\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<PowerSelectWithCreate\\n    @class={{this._class}}\\n    @name={{this.name}}\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @tagName=\\\"div\\\"\\n    @allowClear={{true}}\\n    @selected={{@value}}\\n    @preventScroll={{true}}\\n    @placeholder={{this.placeholder}}\\n    @options={{await this.options}}\\n    @loadingMessage={{t \\\"general.loading\\\"}}\\n    @disabled={{this.disabled}}\\n    @searchEnabled={{true}}\\n    @search={{fn this.search}}\\n    @onOpen={{fn (mut this.isopen) true}}\\n    @onClose={{fn (mut this.isopen) false}}\\n    @onCreate={{this.createNew}}\\n    @showCreateWhen={{this.showOrHideCreate}}\\n    @showCreatePosition=\\\"bottom\\\"\\n    @buildSuggestion={{this.customSuggestion}}\\n    @onChange={{this.onChange}} as |record|>\\n    {{#each this.subformFields as |field|}}\\n        {{get record field}}\\n    {{/each}}\\n</PowerSelectWithCreate>\", {\"contents\":\"<PowerSelectWithCreate\\n    @class={{this._class}}\\n    @name={{this.name}}\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @tagName=\\\"div\\\"\\n    @allowClear={{true}}\\n    @selected={{@value}}\\n    @preventScroll={{true}}\\n    @placeholder={{this.placeholder}}\\n    @options={{await this.options}}\\n    @loadingMessage={{t \\\"general.loading\\\"}}\\n    @disabled={{this.disabled}}\\n    @searchEnabled={{true}}\\n    @search={{fn this.search}}\\n    @onOpen={{fn (mut this.isopen) true}}\\n    @onClose={{fn (mut this.isopen) false}}\\n    @onCreate={{this.createNew}}\\n    @showCreateWhen={{this.showOrHideCreate}}\\n    @showCreatePosition=\\\"bottom\\\"\\n    @buildSuggestion={{this.customSuggestion}}\\n    @onChange={{this.onChange}} as |record|>\\n    {{#each this.subformFields as |field|}}\\n        {{get record field}}\\n    {{/each}}\\n</PowerSelectWithCreate>\",\"moduleName\":\"tt4/components/addon/fields/database-gps-force-field.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/database-gps-force-field.hbs\"}});\nimport DatabaseField from './database';\nimport { tracked } from '@glimmer/tracking';\nimport { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport GpsService from 'tt4/services/gps2';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport EventedService from 'tt4/injections/services/need';\nimport RSVP from 'rsvp';\n\ninterface IPosition {\n    longitude: string;\n    latitude: string;\n}\ninterface GpsPositionEvent {\n    lockedPosition: {\n        latitude: number;\n        longitude: number;\n    };\n}\nexport default class FieldsDatabaseGpsForceFieldComponent extends DatabaseField {\n    @tracked protected gpsOptions: object[] | null = null;\n    @service('gps2' as any) declare gps: GpsService;\n    @service private evented: EventedService;\n\n    @tracked reTriggerOptions: boolean = false;\n    // Added properties to store the last known coordinates\n    @tracked private lastKnownLatitude: number | null = null;\n    @tracked private lastKnownLongitude: number | null = null;\n\n    constructor(owner: any, args: any) {\n        super(owner, args);\n        this.gps.start();\n        // when gps position changes, we have to re-fetch options so that those contain correct projects based on gps location..\n        this.evented.on('gpsLockedPositionChanged', this, (newPosition: GpsPositionEvent) => {\n            // ..but when the position has changed gps2 service will emit the event first with the old position so we need to check if the position has actually changed and only then retrigger the options\n            // this will prevent the options from being re-fetched twice when the position has changed\n            if (this.hasPositionChanged(newPosition.lockedPosition)) {\n                this.reTriggerOptions = !this.reTriggerOptions;\n                // Update the last known position\n                this.lastKnownLatitude = newPosition.lockedPosition.latitude;\n                this.lastKnownLongitude = newPosition.lockedPosition.longitude;\n            }\n        });\n    }\n\n    // Check if the new position is different from the last known position\n    private hasPositionChanged(newPosition: { latitude: number; longitude: number }): boolean {\n        return (\n            this.lastKnownLatitude !== newPosition.latitude ||\n            this.lastKnownLongitude !== newPosition.longitude\n        );\n    }\n\n    @computed('subform', 'subformFields', 'args.filter', 'reTriggerOptions')\n    public get options() {\n        return new RSVP.Promise((resolve) => {\n            this.performSearch(null, async (options: any) => {\n                return resolve(options);\n            });\n        });\n    }\n\n    protected async performSearch(term: any, resolve: (arg0: object[]) => Promise<void>) {\n        super.performSearch(term, async (normalProjects: IRecord) => {\n            let forcedGpsProjects = await this.getForcedGpsProjects(term);\n\n            if (forcedGpsProjects) {\n                forcedGpsProjects = forcedGpsProjects.filter((project: IRecord) => {\n                    return (\n                        this.gps.getDistance(\n                            this.gps.lockedPosition as IPosition,\n                            JSON.parse(project.location_map),\n                        ) < this.gps.allowedDistance\n                    );\n                });\n            }\n\n            resolve([\n                {\n                    groupName: this.intl.t('gps.forced_projects'),\n                    options: forcedGpsProjects ? forcedGpsProjects.toArray() : [],\n                },\n                {\n                    groupName: this.intl.t('gps.normal_projects'),\n                    options: normalProjects ? normalProjects.toArray() : [],\n                },\n            ]);\n        });\n    }\n\n    /**\n     * Create queryParams for options fetching from backend. This overrides DatabaseField's method and adds additional queryparams\n     * @method createQueryParams\n     * @param {String} term Search term given by user\n     * @param {String} id Parameter if you want to get only known record by id\n     * @return {object}\n     */\n    protected createQueryParams(term = null, id = null): object {\n        const params = {\n            form: this.form,\n            field: this.name,\n            force_location: 'off',\n            limit: '20',\n        } as any;\n\n        if (id) params.id = id;\n        if (term) params.q = term;\n\n        if (this.filter) {\n            for (const key of Object.keys(this.filter)) {\n                if (this.filter[key]) {\n                    params[key] = this.filter[key].id;\n                }\n            }\n        }\n\n        return params;\n    }\n\n    private async getForcedGpsProjects(term: string | null = null): Promise<any> {\n        if (!this.gps.lockedPosition) return null;\n        const params = {\n            force_location: 'on',\n            location_map: '!(empty)',\n            limit: 'all',\n        } as any;\n\n        if (term) params.q = term;\n\n        return this.store.query('project', params);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if this.useNormalDropdown}}\\n    <select class=\\\"ember-movenium-select-input\\\" disabled={{or @disabled this.disabled (is-pending this.options)}} {{on 'change' this.changeId}}>\\n        <option>{{t \\\"general.select_choose\\\"}}</option>\\n        {{#each (await this.options) as |opt|}}\\n            {{#if opt.groupName}}\\n                <optgroup label={{opt.groupName}}>\\n                    {{#each opt.options as |subopt|}}\\n                        <option value={{subopt.id}} selected={{eq subopt (call (fn this.getValue @value))}}>\\n                            {{#each this.subformfields as |field|}}\\n                                {{get subopt field}}\\n                            {{/each}}\\n                        </option>\\n                    {{/each}}\\n                </optgroup>\\n            {{else}}\\n                <option value={{opt.id}} selected={{eq opt (call (fn this.getValue @value))}}>\\n                    {{#each this.subformFields as |field|}}\\n                        {{get opt field}}\\n                    {{/each}}\\n                </option>\\n            {{/if}}\\n        {{/each}}\\n        {{#if @showEmptySelection}}\\n            <option value='(empty)' selected={{eq @value '(empty)'}}>{{t \\\"general.show_empty\\\"}}</option>\\n        {{/if}}\\n    </select>\\n{{else}}\\n    <PowerSelectWithCreate\\n        @class={{@class}}\\n        @name={{@name}}\\n        @dropdownClass=\\\"power-select-add-field\\\"\\n        @tagName=\\\"div\\\"\\n        @allowClear={{true}}\\n        @selected={{@value}}\\n        @preventScroll={{true}}\\n        @placeholder={{this.placeholder}}\\n        @options={{await this.options}}\\n        @loadingMessage={{t \\\"general.loading\\\"}}\\n        @disabled={{or @disabled this.disabled (is-pending this.options)}}\\n        @searchEnabled={{true}}\\n        @search={{fn this.search}}\\n        @searchMessage={{t \\\"select.search\\\"}}\\n        @noMatchesMessage={{t \\\"general.no_search_results\\\"}}\\n        @onOpen={{fn (mut this.isopen) true}}\\n        @onClose={{fn (mut this.isopen) false}}\\n        @onCreate={{this.createNew}}\\n        @showCreateWhen={{this.showOrHideCreate}}\\n        @showCreatePosition=\\\"bottom\\\"\\n        @buildSuggestion={{this.customSuggestion}}\\n        @onChange={{this.onChange}} as |record|>\\n        {{#each this.subformFields as |field|}}\\n            {{get record field}}\\n        {{/each}}\\n    </PowerSelectWithCreate>\\n    {{#if this.isopen}}\\n        <div class=\\\"overlay\\\"></div>\\n    {{/if}}\\n{{/if}}\", {\"contents\":\"{{#if this.useNormalDropdown}}\\n    <select class=\\\"ember-movenium-select-input\\\" disabled={{or @disabled this.disabled (is-pending this.options)}} {{on 'change' this.changeId}}>\\n        <option>{{t \\\"general.select_choose\\\"}}</option>\\n        {{#each (await this.options) as |opt|}}\\n            {{#if opt.groupName}}\\n                <optgroup label={{opt.groupName}}>\\n                    {{#each opt.options as |subopt|}}\\n                        <option value={{subopt.id}} selected={{eq subopt (call (fn this.getValue @value))}}>\\n                            {{#each this.subformfields as |field|}}\\n                                {{get subopt field}}\\n                            {{/each}}\\n                        </option>\\n                    {{/each}}\\n                </optgroup>\\n            {{else}}\\n                <option value={{opt.id}} selected={{eq opt (call (fn this.getValue @value))}}>\\n                    {{#each this.subformFields as |field|}}\\n                        {{get opt field}}\\n                    {{/each}}\\n                </option>\\n            {{/if}}\\n        {{/each}}\\n        {{#if @showEmptySelection}}\\n            <option value='(empty)' selected={{eq @value '(empty)'}}>{{t \\\"general.show_empty\\\"}}</option>\\n        {{/if}}\\n    </select>\\n{{else}}\\n    <PowerSelectWithCreate\\n        @class={{@class}}\\n        @name={{@name}}\\n        @dropdownClass=\\\"power-select-add-field\\\"\\n        @tagName=\\\"div\\\"\\n        @allowClear={{true}}\\n        @selected={{@value}}\\n        @preventScroll={{true}}\\n        @placeholder={{this.placeholder}}\\n        @options={{await this.options}}\\n        @loadingMessage={{t \\\"general.loading\\\"}}\\n        @disabled={{or @disabled this.disabled (is-pending this.options)}}\\n        @searchEnabled={{true}}\\n        @search={{fn this.search}}\\n        @searchMessage={{t \\\"select.search\\\"}}\\n        @noMatchesMessage={{t \\\"general.no_search_results\\\"}}\\n        @onOpen={{fn (mut this.isopen) true}}\\n        @onClose={{fn (mut this.isopen) false}}\\n        @onCreate={{this.createNew}}\\n        @showCreateWhen={{this.showOrHideCreate}}\\n        @showCreatePosition=\\\"bottom\\\"\\n        @buildSuggestion={{this.customSuggestion}}\\n        @onChange={{this.onChange}} as |record|>\\n        {{#each this.subformFields as |field|}}\\n            {{get record field}}\\n        {{/each}}\\n    </PowerSelectWithCreate>\\n    {{#if this.isopen}}\\n        <div class=\\\"overlay\\\"></div>\\n    {{/if}}\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/fields/database.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/database.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action, computed, get } from '@ember/object';\nimport { debounce } from '@ember/runloop';\nimport { inject as service } from '@ember/service';\nimport { isMobile } from 'tt4/ember-movenium/utils/gui';\nimport DS from 'ember-data';\nimport LocalstorageService from 'tt4/services/localstorage';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport { IFieldComponent } from 'tt4/ember-movenium/interfaces/fields';\nimport RSVP from 'rsvp';\nimport { IOptions } from 'tt4/ember-movenium/interfaces/forms';\nimport { sortBy } from 'tt4/ember-movenium/utils/sort';\nimport Ember from 'ember';\n\n/**\n    Database field\n\n    ```hbs\n    <Fields::Database\n        @form=worktime\n        @name=user\n        @options={{hash form=\"user\" fields=(array \"firstname\" \"lastname\")}}\n        @value={{this.databaseValue}}\n        @onChange={{fn (mut this.databaseValue)}}\n    />\n    ```\n    @class FieldsDatabaseComponent\n*/\n\ninterface IDatabaseField extends IFieldComponent {\n    filter?: null | IFilter;\n    prompt?: any;\n    model?: {\n        [key: string]: any;\n    };\n    value?: IRecord | null;\n    showCreate: boolean;\n    forceNormalDropdown?: boolean;\n    useAsFilter?: boolean; // true to render powerSelectMultiple for filters\n    record?: IRecord;\n    onChange(arg0: IRecord | null | string): void;\n    setDisabled?(arg0: boolean): void;\n    createNew(): void;\n}\n\ninterface IFilter {\n    [key: string]: any;\n}\n\nexport default class FieldsDatabaseComponent\n    extends Component<IDatabaseField>\n    implements IDatabaseField\n{\n    @tracked public disabled: boolean = false;\n    @tracked public useNormalDropdown: boolean = false;\n    public form: string | undefined;\n    public name: string | undefined;\n    public sortBy: string | undefined;\n    public filter?: null | IFilter;\n    @tracked public showCreate: boolean = false;\n    public modelValue: any;\n    // @tracked public options: any[] = []\n    @service public store: any;\n    @service protected intl: any;\n    @service public localstorage: any;\n\n    constructor(owner: unknown, args: IDatabaseField) {\n        super(owner, args);\n        this.setLastUsed();\n    }\n\n    public async setLastUsed() {\n        if (this.args.value) return; // if field already has a value ... do not override it\n        if (this.args.skipLastUsed) return;\n        if (this.args.record) {\n            // preselect is not used when editing row (record has id).. could cause changes on rows that you just click edit -> and then save\n            if (this.args.record.id) return;\n\n            if (!!(await this.args.record[this.subform]) || this.args.features?.do_not_preselect)\n                return;\n            const lastUsed: string[] = this.localstorage.getItem('lastused.' + this.subform);\n            if (lastUsed && lastUsed[0]) {\n                let promisevalue = (await this.store.query(this.subform, {\n                    id: lastUsed[0],\n                    form: this.args.form,\n                    field: this.args.name,\n                })) as any;\n                promisevalue = promisevalue?.firstObject;\n                if (promisevalue?.get('row_info.status') !== 'removed') {\n                    const resolved = await promisevalue;\n                    if (this.args.filter) {\n                        this.args.setDisabled?.(true);\n                        if (await this.checkValueIsInOptions(this.options, resolved))\n                            this.args.onChange(resolved);\n                        this.args.setDisabled?.(false);\n                    } else {\n                        this.args.onChange(resolved);\n                    }\n                }\n            }\n        }\n    }\n\n    /*PROPERTIES*/\n    public get subform() {\n        return (this.args.options! as IOptions).form!;\n    }\n\n    public get subformFields() {\n        return (this.args.options! as IOptions).fields!;\n    }\n\n    public get placeholder(): string | null {\n        return this.args.prompt ? this.intl.t(this.args.prompt) : null;\n    }\n\n    /*ACTIONS*/\n\n    @action public search(term: string) {\n        return new RSVP.Promise((resolve) => {\n            debounce(this, this.performSearch, term, resolve, 600);\n        });\n    }\n\n    @action public changeId(event: any) {\n        if (event.target.value === '(empty)') this.onChange(event.target.value);\n        else this.onChange(this.store.peekRecord(this.subform, event.target.value));\n    }\n\n    @action public onChange(value: IRecord | null | string) {\n        if (typeof value !== 'string') this.saveLastUsed(value);\n        if (this.args.model) this.args.model[this.name!] = value;\n        this.args.onChange(value);\n    }\n\n    @action public createNew() {\n        return this.args.createNew();\n    }\n\n    @action public showOrHideCreate() {\n        return this.args.showCreate;\n    }\n\n    @action public customSuggestion(term: string) {\n        return this.intl.t('general.add') + ' ' + term;\n    }\n\n    @action\n    protected getValue(value: any) {\n        if (value instanceof Ember.ObjectProxy || value instanceof Ember.ArrayProxy) {\n            return value.content;\n        }\n        return value;\n    }\n\n    /*FUNCTIONS*/\n\n    /**\n     * Computed because we need to cache the Promise, otherwise this will go into an infinite trigger loop\n     */\n    @computed('subform', 'subformFields', 'args.filter')\n    public get options(): Promise<any> {\n        try {\n            return new RSVP.Promise((resolve) => {\n                this.performSearch(null, async (options: any) => {\n                    if (this.args.sortBy) {\n                        options = sortBy(this.args.sortBy, options, this.subformFields);\n                    }\n\n                    if (this.args.features?.auto_select_only && options.length === 1)\n                        this.args.onChange(options.firstObject);\n                    if (this.args.filter || options.length < 20) return resolve(options);\n\n                    const lastUsed = await this.getLastUsed(options);\n\n                    if (lastUsed) return resolve(lastUsed);\n                    return resolve(options);\n                });\n            });\n        } catch (e) {\n            throw new Error(e);\n        }\n    }\n\n    protected saveLastUsed(record: IRecord | null): void {\n        const lastUsedCount = 10; // Number of 'last used' items to display\n        let lastUsed = this.localstorage.getItem('lastused.' + this.subform);\n        if (!lastUsed) lastUsed = [];\n\n        lastUsed.unshift(record ? record.id : '');\n        this.localstorage.setItem(\n            'lastused.' + this.subform,\n            Array.from(new Set(lastUsed)).slice(0, lastUsedCount),\n        );\n    }\n\n    protected async getLastUsed(options: any): Promise<any> {\n        const lastUsed = this.localstorage.getItem('lastused.' + this.subform);\n        if (!lastUsed) return false;\n\n        const records = await this.store.query(this.subform, {\n            id: lastUsed.filter((val: string) => val).join(','),\n            form: this.args.form,\n            field: this.args.name,\n        });\n\n        return [\n            { groupName: this.intl.t('select.last_selections'), options: records.toArray() },\n            { groupName: this.intl.t('select.all'), options: options.toArray() },\n        ];\n    }\n\n    /**\n     * Create queryParams for options fetching from backend\n     * @method createQueryParams\n     * @param {String} term Search term given by user\n     * @param {String} id Parameter if you want to get only known record by id\n     * @return {object}\n     */\n    protected createQueryParams(term: string | null = null, id: string | null = null): object {\n        const params = {\n            form: this.args.form,\n            field: this.args.name,\n            limit: 100,\n            offset: 0,\n        } as any;\n\n        if (id) params.id = id;\n        if (term) params.q = term;\n\n        if (this.args.filter) {\n            for (const key of Object.keys(this.args.filter)) {\n                if (this.args.filter[key]) {\n                    params[key] =\n                        typeof this.args.filter[key] === 'string'\n                            ? this.args.filter[key]\n                            : get(this.args.filter[key], 'id');\n                }\n            }\n        }\n\n        return params;\n    }\n\n    // Do not overwrite reloads when editing, only when we touch the reload fields\n    private get recordIsDirty(): boolean {\n        return !!this.args.record?.isNew || !!this.args.record?.hasDirtyAttributes;\n    }\n\n    protected async performSearch(term: any, resolve: any): Promise<any> {\n        if (this.args.filter && !term) {\n            this.disabled = true;\n            this.args.setDisabled?.(true);\n        }\n        const options = await this.store.query(this.subform, this.createQueryParams(term));\n\n        if (!term) {\n            this.useNormalDropdown =\n                (isMobile() && options.length < 20) ||\n                (this.args.forceNormalDropdown && !this.args.useAsFilter)\n                    ? true\n                    : false;\n        }\n\n        if (\n            this.args.filter &&\n            this.args.value &&\n            !(await this.checkValueIsInOptions(options, this.args.value))\n        )\n            this.args.onChange(null);\n        this.disabled = false;\n        this.args.setDisabled?.(false);\n        resolve(options);\n    }\n\n    protected async checkValueIsInOptions(options: any, value: IRecord | null | undefined) {\n        value = await value;\n        options = await options;\n        if (\n            this.recordIsDirty &&\n            value! &&\n            !options.find((opt: any) => opt.id === get(value as IRecord, 'id'))\n        ) {\n            // we still need to check from backend if value really is ok and just not in 20 first options\n            const subformQuery = await this.store.query(\n                this.subform,\n                this.createQueryParams(null, get(value as IRecord, 'id')),\n            );\n            if (subformQuery.length < 1) {\n                return false;\n            }\n        }\n        return true;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#each this.records as |row|}}\\n    <div class=\\\"databasearray-v2\\\">\\n        <div class=\\\"databasearray-v2-padding\\\"></div>\\n        <div class=\\\"databasearray-v2-container\\\">\\n            <Addon::FormAdd @form={{this.form}} @record={{row}} @only={{this.fields}} @onFieldChange={{fn this.onChange row}} as |Form|>\\n            <Form.Fields as |Fields FieldComponent|>\\n                {{#each Fields as |Field|}}\\n                    <div class=\\\"px-1\\\">\\n                        {{#if (get this.filters Field.name)}}\\n                            <FieldComponent\\n                                @field={{Field.name}}\\n                                @form={{Field.form}}\\n                                @value={{get row Field.name}}\\n                                @record={{row}}\\n                                @skipLastUsed={{true}}\\n                                @filters={{this.filters}}\\n                                @onChange={{fn Form.OnChange Field.name}}\\n                                @mandatory={{field.features.mandatory}}\\n                            />\\n                        {{else}}\\n                            <FieldComponent\\n                                @field={{Field.name}}\\n                                @form={{Field.form}}\\n                                @value={{get row Field.name}}\\n                                @record={{row}}\\n                                @skipLastUsed={{true}}\\n                                @onChange={{fn Form.OnChange Field.name}}\\n                                @mandatory={{field.features.mandatory}}\\n                            />\\n                        {{/if}}\\n                    </div>\\n                {{/each}}\\n            </Form.Fields>\\n        </Addon::FormAdd>\\n        </div>\\n        <div class=\\\"databasearray-v2-remove\\\">\\n            <span role=\\\"button\\\" {{on \\\"click\\\" (fn this.removeRow row)}} name=\\\"remove-button\\\" class=\\\"remove-button pr-2\\\" title=\\\"Poista\\\">\\n                <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"{{if this.gui.isMobileComputed 25 18}}px\\\" height=\\\"{{if this.gui.isMobileComputed 30 24}}px\\\" viewBox=\\\"0 0 26 26\\\">\\n                    <path style=\\\"text-indent:0;text-align:start;line-height:normal;text-transform:none;block-progression:tb;-inkscape-font-specification:Bitstream Vera Sans\\\" d=\\\"M11.5-.031c-1.958 0-3.531 1.627-3.531 3.594V4H4c-.551 0-1 .449-1 1v1H2v2h2v15c0 1.645 1.355 3 3 3h12c1.645 0 3-1.355 3-3V8h2V6h-1V5c0-.551-.449-1-1-1h-3.969v-.438c0-1.966-1.573-3.593-3.531-3.593h-3zm0 2.062h3c.804 0 1.469.656 1.469 1.531V4H10.03v-.438c0-.875.665-1.53 1.469-1.53zM6 8h5.125c.124.013.247.031.375.031h3c.128 0 .25-.018.375-.031H20v15c0 .563-.437 1-1 1H7c-.563 0-1-.437-1-1V8zm2 2v12h2V10H8zm4 0v12h2V10h-2zm4 0v12h2V10h-2z\\\" overflow=\\\"visible\\\" font-family=\\\"Bitstream Vera Sans\\\"></path>\\n                </svg>\\n            </span>\\n        </div>\\n   \\n    </div>\\n{{/each}}\\n<button class=\\\"btn databasearray-v2-button\\\" {{on \\\"click\\\" this.addNewRow}}>\\n    <span class=\\\"move move-Plus pr-4\\\"></span>{{t \\\"general.add\\\"}} {{collector-form-name this.form}}\\n</button>\", {\"contents\":\"{{#each this.records as |row|}}\\n    <div class=\\\"databasearray-v2\\\">\\n        <div class=\\\"databasearray-v2-padding\\\"></div>\\n        <div class=\\\"databasearray-v2-container\\\">\\n            <Addon::FormAdd @form={{this.form}} @record={{row}} @only={{this.fields}} @onFieldChange={{fn this.onChange row}} as |Form|>\\n            <Form.Fields as |Fields FieldComponent|>\\n                {{#each Fields as |Field|}}\\n                    <div class=\\\"px-1\\\">\\n                        {{#if (get this.filters Field.name)}}\\n                            <FieldComponent\\n                                @field={{Field.name}}\\n                                @form={{Field.form}}\\n                                @value={{get row Field.name}}\\n                                @record={{row}}\\n                                @skipLastUsed={{true}}\\n                                @filters={{this.filters}}\\n                                @onChange={{fn Form.OnChange Field.name}}\\n                                @mandatory={{field.features.mandatory}}\\n                            />\\n                        {{else}}\\n                            <FieldComponent\\n                                @field={{Field.name}}\\n                                @form={{Field.form}}\\n                                @value={{get row Field.name}}\\n                                @record={{row}}\\n                                @skipLastUsed={{true}}\\n                                @onChange={{fn Form.OnChange Field.name}}\\n                                @mandatory={{field.features.mandatory}}\\n                            />\\n                        {{/if}}\\n                    </div>\\n                {{/each}}\\n            </Form.Fields>\\n        </Addon::FormAdd>\\n        </div>\\n        <div class=\\\"databasearray-v2-remove\\\">\\n            <span role=\\\"button\\\" {{on \\\"click\\\" (fn this.removeRow row)}} name=\\\"remove-button\\\" class=\\\"remove-button pr-2\\\" title=\\\"Poista\\\">\\n                <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"{{if this.gui.isMobileComputed 25 18}}px\\\" height=\\\"{{if this.gui.isMobileComputed 30 24}}px\\\" viewBox=\\\"0 0 26 26\\\">\\n                    <path style=\\\"text-indent:0;text-align:start;line-height:normal;text-transform:none;block-progression:tb;-inkscape-font-specification:Bitstream Vera Sans\\\" d=\\\"M11.5-.031c-1.958 0-3.531 1.627-3.531 3.594V4H4c-.551 0-1 .449-1 1v1H2v2h2v15c0 1.645 1.355 3 3 3h12c1.645 0 3-1.355 3-3V8h2V6h-1V5c0-.551-.449-1-1-1h-3.969v-.438c0-1.966-1.573-3.593-3.531-3.593h-3zm0 2.062h3c.804 0 1.469.656 1.469 1.531V4H10.03v-.438c0-.875.665-1.53 1.469-1.53zM6 8h5.125c.124.013.247.031.375.031h3c.128 0 .25-.018.375-.031H20v15c0 .563-.437 1-1 1H7c-.563 0-1-.437-1-1V8zm2 2v12h2V10H8zm4 0v12h2V10h-2zm4 0v12h2V10h-2z\\\" overflow=\\\"visible\\\" font-family=\\\"Bitstream Vera Sans\\\"></path>\\n                </svg>\\n            </span>\\n        </div>\\n   \\n    </div>\\n{{/each}}\\n<button class=\\\"btn databasearray-v2-button\\\" {{on \\\"click\\\" this.addNewRow}}>\\n    <span class=\\\"move move-Plus pr-4\\\"></span>{{t \\\"general.add\\\"}} {{collector-form-name this.form}}\\n</button>\",\"moduleName\":\"tt4/components/addon/fields/databasearray.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/databasearray.hbs\"}});\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { action, notifyPropertyChange } from '@ember/object';\nimport moment from 'moment';\nimport { IFieldComponent } from 'tt4/ember-movenium/interfaces/fields';\nimport { IOptions, IField } from 'tt4/ember-movenium/interfaces/forms';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\n\nexport default class FieldsDatabasearrayComponent extends Component<IFieldComponent> {\n    @tracked protected records: IRecord[] = [];\n\n    @service private forms: any;\n    @service private store: any;\n    @service private gui: any;\n\n    private form: string;\n\n    constructor(owner: unknown, args: IFieldComponent) {\n        super(owner, args);\n        this.records = [];\n        if (this.args.value && (this.args.value as IRecord[])?.length) {\n            this.records = (this.args.value as IRecord[])\n                .filter((item) => {\n                    if (item.id === '0') return false; // sometimes database has rows with id \"0\" .. skip those because they are not real\n                    return true;\n                })\n                .toArray() as IRecord[];\n        }\n        this.form = (this.args.options! as IOptions).form!;\n    }\n\n    protected get fields(): string {\n        const parentfields = this.forms.fieldArray(this.args.form!);\n        return this.forms\n            .fieldArray(this.form!)\n            .filter((field: { name: any }) => !parentfields.findBy('name', field.name))\n            .map((field: { name: any }) => field.name)\n            .join(',');\n    }\n\n    // Is used to reload database fields (ie. task) inside databasearray (ie. multitask), when field that reloads (ie. project) is targeted to databasearray field in other form (ie. worktime)\n    protected get filters() {\n        if (this.args.filter) {\n            // Can't figure out the logic in this situation. Worktime form's project reloads multitask, which should onward the reload to its field taskname to reload task form data by that project\n            if (this.form === 'multitask' && Object.keys(this.args.filter).includes('project'))\n                return { taskname: this.args.filter };\n\n            // support also subproject filtering .. this is used in fondion integration .. if this listing possibilities is some day\n            // not enough, then we need to make this more dynamic\n            if (this.form === 'multitask' && Object.keys(this.args.filter).includes('subproject'))\n                return { taskname: this.args.filter };\n            else return {};\n        }\n        return {};\n    }\n\n    @action\n    protected addNewRow(): void {\n        const record = this.store.createRecord(this.form!);\n        this.records?.push(record);\n        this.autoSetHours();\n        notifyPropertyChange(this, 'records');\n    }\n\n    @action\n    protected onChange(record: IRecord, fieldName: string, value: any): void {\n        record[fieldName] = value;\n        this.args.onChange(this.records);\n    }\n\n    @action\n    protected removeRow(record: IRecord): void {\n        record.get('isNew') ? record.deleteRecord() : record.destroyRecord();\n        // remove row with filter so tracking works\n        this.records = this.records.filter((item) => item !== record);\n\n        this.args.onChange(this.records);\n    }\n\n    _convertWorkHoursToMinutes(work_hours: string | number): number {\n        if (typeof work_hours === 'number') {\n            return work_hours * 60;\n        } else {\n            const split = work_hours.split(':');\n            return parseInt(split[0], 10) * 60 + parseInt(split[1], 10);\n        }\n    }\n\n    autoSetHours() {\n        if (this.args.features?.validate_check !== 'multipleHours') return;\n\n        let minutes = 0;\n        let endtime = this.args.record?.endtime\n            ? this.args.record.endtime\n            : moment().format('HH:mm');\n\n        // In case we're dealing with only hours adding\n        if (\n            !this.args.record?.starttime &&\n            !this.args.record?.endtime &&\n            this.args.record?.work_hours\n        ) {\n            minutes = this._convertWorkHoursToMinutes(this.args.record.work_hours);\n        } else {\n            minutes = moment(this.args.record?.date + ' ' + endtime).diff(\n                moment(this.args.record?.date + ' ' + this.args.record?.starttime),\n                'minutes',\n            );\n        }\n\n        if (this.args.record?.pause) minutes -= this.args.record?.pause;\n\n        if (!minutes) return;\n\n        if (minutes < 0) minutes += 1440;\n\n        let sumBefore = 0;\n        let lastOneMinutes = 0;\n        let allAreTheSame = true;\n        let addMinutes;\n        this.records.forEach((row) => {\n            if (typeof row.hours === 'string') {\n                const split = row.hours.split(':');\n                addMinutes = parseInt(split[0], 10) * 60 + parseInt(split[1], 10);\n            } else if (typeof row.hours === 'number') {\n                addMinutes = row.hours * 60;\n            } else {\n                return;\n            }\n            if (lastOneMinutes && lastOneMinutes !== addMinutes) allAreTheSame = false;\n            lastOneMinutes = addMinutes;\n            sumBefore += addMinutes;\n        });\n\n        // if all hours is divided to rows and all rows are the same we change hours of every row\n        if (sumBefore === minutes && allAreTheSame) {\n            this.records.forEach((record) => (record.hours = minutes / this.records.length / 60));\n        }\n        // if rows have been edited and there is still minutes left add all of those minutes to new row\n        else if (minutes > sumBefore) {\n            this.records[this.records.length - 1].hours = (minutes - sumBefore) / 60;\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if (is-equal this.dateOptions 'locked') }}<br>\\n    <p class=\\\"date-field-locked-text\\\">\\n        {{this.today}}\\n    </p>\\n{{else}}\\n    <Input\\n        @type=\\\"date\\\"\\n        @min={{this.minDate}}\\n        @max={{this.maxDate}}\\n        @value={{@value}}\\n        @disabled={{@disabled}}\\n        @name={{this.name}}\\n        @class={{concat @class \\\" ember-movenium-date-field\\\"}}\\n        {{on 'change' (fn @onChange @value)}}\\n    />\\n{{/if}}\\n\", {\"contents\":\"{{#if (is-equal this.dateOptions 'locked') }}<br>\\n    <p class=\\\"date-field-locked-text\\\">\\n        {{this.today}}\\n    </p>\\n{{else}}\\n    <Input\\n        @type=\\\"date\\\"\\n        @min={{this.minDate}}\\n        @max={{this.maxDate}}\\n        @value={{@value}}\\n        @disabled={{@disabled}}\\n        @name={{this.name}}\\n        @class={{concat @class \\\" ember-movenium-date-field\\\"}}\\n        {{on 'change' (fn @onChange @value)}}\\n    />\\n{{/if}}\\n\",\"moduleName\":\"tt4/components/addon/fields/date.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/date.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport moment from 'moment';\n\ninterface IDateField {\n    dateInterval: string | null;\n    features?: {\n        [key: string]: string | number | object | boolean;\n    };\n}\nexport default class FieldsDateComponent extends Component<IDateField> {\n    public options: any;\n    @tracked public disabled: boolean = false;\n    @tracked protected selected: string | null = null;\n\n    get dateInterval() {\n        return this.args.dateInterval || this.args.features?.date_interval;\n    }\n\n    get dateOptions(): string[] | null | string {\n        const dateInterval = this.dateInterval;\n        if (!dateInterval) return null;\n        if (dateInterval === 'locked') return 'locked';\n\n        const arr: string[] = [];\n\n        const splitted: string[] = ('' + dateInterval).split(',');\n        let start: number = 0;\n        let end: number = 0;\n        if (splitted.length > 1) {\n            start = Number(splitted[1]) * -1;\n            end = Number(splitted[0]);\n        } else {\n            start = 0;\n            end = Number(dateInterval);\n        }\n        for (let i = start; i < end; i++) {\n            const date = moment().subtract(i, 'days');\n            arr.push(date.format('YYYY-MM-DD'));\n        }\n\n        return arr;\n    }\n\n    /**\n     * Maximum date for the date picker based on date options\n     */\n    get maxDate(): string {\n        if (!this.dateOptions || typeof this.dateOptions == 'string') return '9999-12-31';\n        return this.dateOptions.sort()[this.dateOptions.length - 1];\n    }\n\n    /**\n     * Minimum date for the date picker based on date options\n     */\n    get minDate(): string {\n        if (!this.dateOptions || typeof this.dateOptions == 'string') return '1900-01-01';\n        return this.dateOptions.sort()[0];\n    }\n\n    get today(): string {\n        return moment().format('dddd L');\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-datetime-field\\\">\\n    <Input @type=\\\"date\\\" @max=\\\"9999-12-31\\\" @value={{readonly this.date}} @focus-out={{fn this.changeDate}} />\\n    <Input @type=\\\"time\\\" @value={{readonly this.time}} @focus-out={{fn this.changeTime}}/>\\n</div>\", {\"contents\":\"<div class=\\\"ember-movenium-datetime-field\\\">\\n    <Input @type=\\\"date\\\" @max=\\\"9999-12-31\\\" @value={{readonly this.date}} @focus-out={{fn this.changeDate}} />\\n    <Input @type=\\\"time\\\" @value={{readonly this.time}} @focus-out={{fn this.changeTime}}/>\\n</div>\",\"moduleName\":\"tt4/components/addon/fields/datetime.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/datetime.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport moment from 'moment';\n// import { tracked } from '@glimmer/tracking';\n\ninterface IDateTimeField {\n    value: string;\n    onChange(arg0: string): void;\n}\n// \"2020-09-24 15:53\"\nexport default class FieldsDatetimeComponent extends Component<IDateTimeField> {\n    get time(): string | null {\n        return this.args.value?.split(' ')[1];\n    }\n\n    get date(): string | null {\n        return this.args.value?.split(' ')[0];\n    }\n\n    @action\n    protected changeDate(date: string): void {\n        const time = this.time || moment().format('HH:mm');\n        this.args.onChange(date + ' ' + time);\n    }\n\n    @action\n    protected changeTime(time: string): void {\n        const date = this.date || moment().format('YYYY-MM-DD');\n        this.args.onChange(date + ' ' + time);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\", {\"contents\":\"<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\",\"moduleName\":\"tt4/components/addon/fields/decimal.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/decimal.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<PowerSelect\\n    @options={{this.options}}\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @selected={{this.value}}\\n    @onChange={{this.handleSelect}}\\n    @searchEnabled={{true}}\\n    @searchField=\\\"name\\\"\\nas |opt|>\\n    {{opt.name}}\\n</PowerSelect>\", {\"contents\":\"<PowerSelect\\n    @options={{this.options}}\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @selected={{this.value}}\\n    @onChange={{this.handleSelect}}\\n    @searchEnabled={{true}}\\n    @searchField=\\\"name\\\"\\nas |opt|>\\n    {{opt.name}}\\n</PowerSelect>\",\"moduleName\":\"tt4/components/addon/fields/dropdown-country.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/dropdown-country.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { countries } from 'tt4/ember-movenium/utils/country';\nimport { sortBy } from 'tt4/ember-movenium/utils/sort';\nimport { IFieldComponent } from 'tt4/ember-movenium/interfaces/fields';\n\ninterface IOption {\n    id: string;\n    name: string;\n}\nexport default class FieldsDropdownCountryComponent extends Component<IFieldComponent> {\n    @tracked protected selected: string | null = null;\n    protected _value: { id: string; name: string } | null = null;\n\n    constructor(owner: unknown, args: IFieldComponent) {\n        super(owner, args);\n    }\n\n    get options() {\n        let _countries = countries;\n        if (this.args.sortBy) _countries = sortBy(this.args.sortBy, _countries);\n        return _countries;\n    }\n\n    get value(): IOption {\n        if (this.args.value)\n            return this.options.find((opt) => opt.id === this.args.value) as IOption;\n        else return (this._value as IOption) || null;\n    }\n\n    set value(value: IOption) {\n        this._value = value;\n    }\n\n    @action\n    public handleSelect(value: any) {\n        this.value = value;\n        this.args.onChange(value.id);\n    }\n}\n","define(\"tt4/components/addon/fields/dropdown-options\", [\"exports\", \"tt4/components/addon/fields/dropdown-values\"], function (_exports, _dropdownValues) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _dropdownValues.default;\n    }\n  });\n});\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<PowerSelect\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @options={{this.dropdownOptions}}\\n    @selected={{this.value}}\\n    @disabled={{or @disabled this.disabled}}\\n    @onChange={{this.onChange}}\\n    @searchEnabled={{false}}\\nas |opt|>\\n    {{opt.name}}\\n</PowerSelect>\", {\"contents\":\"<PowerSelect\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @options={{this.dropdownOptions}}\\n    @selected={{this.value}}\\n    @disabled={{or @disabled this.disabled}}\\n    @onChange={{this.onChange}}\\n    @searchEnabled={{false}}\\nas |opt|>\\n    {{opt.name}}\\n</PowerSelect>\",\"moduleName\":\"tt4/components/addon/fields/dropdown-userlevel.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/dropdown-userlevel.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { IFieldComponent } from 'tt4/ember-movenium/interfaces/fields';\nimport { sortBy } from 'tt4/ember-movenium/utils/sort';\n\ninterface IUserlevelOption {\n    id: string | number;\n    name: string;\n}\n\nexport default class FieldsDropdownUserlevelComponent extends Component<IFieldComponent> {\n    public options: any;\n    @service private intl: any;\n\n    constructor(owner: unknown, args: IFieldComponent) {\n        super(owner, args);\n        this.options = this.args.options;\n    }\n\n    get value(): IUserlevelOption | null {\n        if (this.args.value) {\n            return this.dropdownOptions.find(\n                (opt) => opt.id == this.args.value,\n            ) as IUserlevelOption;\n        }\n        return null;\n    }\n\n    get dropdownOptions(): IUserlevelOption[] {\n        const options = this.options as [];\n        const parsedOptions: IUserlevelOption[] = options.map((option: string) => {\n            if (parseInt(option, 10) > 9) {\n                return {\n                    id: parseInt(option as string, 10),\n                    name: option.substring(2),\n                } as IUserlevelOption;\n            } else {\n                const id = parseInt(option, 10);\n                return {\n                    id,\n                    name: this.intl.t(this.args.form + '.' + this.args.name + '.' + id, {\n                        default: option,\n                    }),\n                } as IUserlevelOption;\n            }\n        });\n\n        return this.args.sortBy ? sortBy(this.args.sortBy, parsedOptions) : parsedOptions;\n    }\n\n    @action\n    public onChange(value: any) {\n        this.args.onChange(value.id);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<PowerSelect\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @options={{this.options}}\\n    @selected={{this.value}}\\n    @disabled={{or @disabled this.disabled}}\\n    @onChange={{this.onChange}}\\n    @searchEnabled={{false}}\\n    @allowClear={{true}}\\n    @onOpen={{fn (mut this.isopen) true}}\\n    @onClose={{fn (mut this.isopen) false}}\\n    as |opt|\\n>\\n    {{opt.value}}\\n</PowerSelect>\\n{{#if this.isopen}}\\n    <div class=\\\"overlay\\\"></div>\\n{{/if}}\", {\"contents\":\"<PowerSelect\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @options={{this.options}}\\n    @selected={{this.value}}\\n    @disabled={{or @disabled this.disabled}}\\n    @onChange={{this.onChange}}\\n    @searchEnabled={{false}}\\n    @allowClear={{true}}\\n    @onOpen={{fn (mut this.isopen) true}}\\n    @onClose={{fn (mut this.isopen) false}}\\n    as |opt|\\n>\\n    {{opt.value}}\\n</PowerSelect>\\n{{#if this.isopen}}\\n    <div class=\\\"overlay\\\"></div>\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/fields/dropdown-values.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/dropdown-values.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { IOptions } from 'tt4/ember-movenium/interfaces/forms';\nimport { IFieldComponent } from 'tt4/ember-movenium/interfaces/fields';\nimport { sortBy } from 'tt4/ember-movenium/utils/sort';\n\ninterface IKeyValue {\n    id: string | number;\n    name: string;\n}\n\nexport default class FieldsDropdownValuesComponent extends Component<IFieldComponent> {\n    public form: string | undefined;\n    public name: string | undefined;\n    @service intl: any;\n    @tracked protected selected: string | number | boolean | null = null;\n    // private _options: string = ''\n\n    constructor(owner: unknown, args: IFieldComponent) {\n        super(owner, args);\n\n        this.name = this.args.name;\n        this.form = this.args.form;\n    }\n\n    @action\n    public onChange(value: any) {\n        this.args.onChange(value?.id);\n    }\n\n    get value(): IKeyValue | null {\n        if (this.args.value) {\n            return this.options.find((opt: IKeyValue) => opt.id === this.args.value) as IKeyValue;\n        }\n        return null;\n    }\n\n    // power select wants [{id:id, value:value}]\n    get options(): IOptions {\n        const options = this.args.options;\n        if (!options) return [];\n\n        const getName = (opt: any) => {\n            if (this.intl.exists(this.form + '.' + this.name + '.' + opt)) {\n                return this.intl.t(this.form + '.' + this.name + '.' + opt);\n            } else {\n                return opt;\n            }\n        };\n\n        let realOptions = [];\n\n        // we have legacy reporsed values from collector class\n        if ((options as IOptions[])[0].id) {\n            realOptions = (options as []).map((opt: any) => {\n                return { id: opt.id, value: getName(opt.value) };\n            });\n        } else {\n            const splitOptions = (options as string).split('\\n');\n\n            realOptions = splitOptions?.map((opt: any) => {\n                return { id: opt, value: getName(opt) };\n            });\n        }\n\n        return this.args.sortBy ? sortBy(this.args.sortBy, realOptions) : realOptions;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-gpslocation-field\\\">\\n    {{#if this.gps.lockedPosition}}\\n        {{t 'gps.location.found'}} {{#if this.distanceToProject}} ({{t 'gps.location.distance'}} {{this.formattedDistanceToProject}}) {{/if}} <span class=\\\"text-success\\\">{{standard-icon 'ok'}}</span>\\n    {{else if this.gps.notSupported}}\\n        {{t \\\"gps.not_supported\\\"}}\\n    {{else if this.gps.errorMsg}}\\n        {{this.gps.errorMsg}}\\n    {{else}}\\n        <img src=\\\"img/ajax-loader.gif\\\" alt=\\\"\\\" role=\\\"none\\\"/>\\n    {{/if}}\\n</div>\", {\"contents\":\"<div class=\\\"ember-movenium-gpslocation-field\\\">\\n    {{#if this.gps.lockedPosition}}\\n        {{t 'gps.location.found'}} {{#if this.distanceToProject}} ({{t 'gps.location.distance'}} {{this.formattedDistanceToProject}}) {{/if}} <span class=\\\"text-success\\\">{{standard-icon 'ok'}}</span>\\n    {{else if this.gps.notSupported}}\\n        {{t \\\"gps.not_supported\\\"}}\\n    {{else if this.gps.errorMsg}}\\n        {{this.gps.errorMsg}}\\n    {{else}}\\n        <img src=\\\"img/ajax-loader.gif\\\" alt=\\\"\\\" role=\\\"none\\\"/>\\n    {{/if}}\\n</div>\",\"moduleName\":\"tt4/components/addon/fields/gpslocation.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/gpslocation.hbs\"}});\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport GpsService from 'tt4/services/gps2';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport DS from 'ember-data';\nimport EventedService from 'tt4/injections/services/need';\nimport { tracked } from '@glimmer/tracking';\n\ninterface IGpslocation {\n    gps: GpsService;\n    onChange(args0: string | null): void;\n    record: IRecord;\n}\n\nexport default class FieldsGpslocationComponent extends Component<IGpslocation> {\n    @service('gps2' as any) declare gps: GpsService;\n    @service private store!: DS.Store;\n    @service private evented: EventedService;\n\n    @tracked public distanceToProject: number | null = null;\n\n    constructor(owner: any, args: IGpslocation) {\n        super(owner, args);\n        this.gps.start();\n        this.evented.on('formAddFieldChanged', this, 'onFormFieldChange');\n        this.evented.on('gpsLockedPositionChanged', this, 'onPositionChance');\n        //this is needed when user edits record and the gps is already initialized\n        //why? because in that case onFormFieldChange or onPositionChance is not called, so the location/distance is not updated\n        this.sendLocationToForm(this.gps.lockedPosition);\n    }\n\n    willDestroy() {\n        this.evented.off('formAddFieldChanged', this, 'onFormFieldChange');\n        this.evented.off('gpsLockedPositionChanged', this, 'onPositionChance');\n    }\n\n    get formattedDistanceToProject(): string {\n        const distance = this.distanceToProject as number;\n        if (distance > 1000) return Math.round(distance / 1000) + 'km';\n        else return Math.round(distance) + 'm';\n    }\n\n    onPositionChance() {\n        this.sendLocationToForm(this.gps.lockedPosition);\n    }\n\n    onFormFieldChange(params: any) {\n        if (params.fieldName === 'project') this.sendLocationToForm(this.gps.lockedPosition);\n    }\n\n    private async sendLocationToForm(userLocation: any): Promise<void> {\n        // do not send if the user's location is unknown\n        if (!this.gps.lockedPosition) return;\n\n        // set \"distance to project\" info to userLocation object\n        await this.setGpsDistanceToProject(userLocation);\n\n        // location is saved as string in form-add\n        if (typeof userLocation != 'string') userLocation = JSON.stringify(userLocation);\n\n        // send user location to form-add\n        return this.args.onChange(userLocation);\n    }\n\n    // try to inject \"distance to project\" to given userLocation object\n    private async setGpsDistanceToProject(userLocation: any): Promise<void> {\n        if (!this.args.record?.project) return;\n\n        if (typeof userLocation === 'string') userLocation = JSON.parse(userLocation);\n\n        const project = await this.store.findRecord('project', this.args.record.project.id, {\n            reload: true,\n        });\n        if (!project || !project.location_map) {\n            // if project has no location, remove possible distance from user location and from gps service\n            // why? because if user has selected a project with location and then selects a project without location, the distance to project will remain\n            this.distanceToProject = null;\n            delete userLocation.distance;\n        } else {\n            let projectLocation =\n                typeof project.location_map === 'string'\n                    ? JSON.parse(project.location_map)\n                    : project.location_map;\n\n            userLocation.distance = this.gps.getDistance(userLocation, projectLocation);\n            this.distanceToProject = userLocation.distance;\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"map_div_size\\\">\\n    <button type=\\\"button\\\" class=\\\"btn btn-m-link btn-block\\\" {{on \\\"click\\\" (fn (mut this.mapVisible))}}>{{t \\\"project.show_map\\\"}}</button>\\n</div>\\n\\n<div class=\\\"{{if this.mapVisible 'show_gps_map' 'hide_gps_map'}}\\\">\\n    <GpsLocationMap\\n        @locationChanged={{this.onChange}}\\n        @projectmode={{true}}\\n    />\\n    {{!-- {{gps-location-map value=value model=model projectmode=true}} --}}\\n</div>\\n\", {\"contents\":\"<div class=\\\"map_div_size\\\">\\n    <button type=\\\"button\\\" class=\\\"btn btn-m-link btn-block\\\" {{on \\\"click\\\" (fn (mut this.mapVisible))}}>{{t \\\"project.show_map\\\"}}</button>\\n</div>\\n\\n<div class=\\\"{{if this.mapVisible 'show_gps_map' 'hide_gps_map'}}\\\">\\n    <GpsLocationMap\\n        @locationChanged={{this.onChange}}\\n        @projectmode={{true}}\\n    />\\n    {{!-- {{gps-location-map value=value model=model projectmode=true}} --}}\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/fields/gpslocationmap.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/gpslocationmap.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\ninterface IGpsLocationMapField {\n    onChange(arg0: string): void;\n}\n\nexport default class FieldsGpslocationmapComponent extends Component<IGpsLocationMapField> {\n    @action protected onChange(location: JSON): void {\n        this.args.onChange(JSON.stringify(location));\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{!-- template-lint-disable no-bare-strings no-invalid-interactive--}}\\n{{!-- template-lint-disable no-bare-strings no-inline-styles--}}\\n{{!-- template-lint-disable simple-unless--}}\\n{{!-- template-lint-disable style-concatenation--}}\\n{{#if this.isIE}}\\n    <div class=\\\"alert alert-warning text-center\\\">\\n        <h3>{{t 'field.warning.ie_not_supported'}}</h3>\\n    </div>\\n{{/if}}\\n<div class=\\\"file-list ember-movenium-file-upload\\\">\\n    {{#each this.fileList as |file|}}\\n        <div class=\\\"file-container\\\">\\n                {{#if file.s3thumb}}\\n                    <div class=\\\"file-preview\\\" {{on 'click' (fn (mut this.modalPreviewFile) file.previewFile) }} {{on 'click' (fn (mut this.showModal))}} >\\n                        <div class=\\\"thumb-container\\\" style={{htmlsafe (concat \\\"background-image: url(\\\" file.s3thumb \\\")\\\")}}>\\n                            {{#unless @disabled}}<Addon::Icons::Close @onClick={{fn this.removeFile file.originalFile}} />{{/unless}}\\n                        </div>\\n                    </div>\\n                {{else}}\\n                    <a class=\\\"file-preview\\\" href=\\\"{{file.previewFile}}\\\" download=\\\"{{file.name}}\\\" target={{if this.isAndroid '_blank' ''}}>\\n                        <div class=\\\"thumb-container\\\">\\n                            {{#unless @disabled}}<Addon::Icons::Close @onClick={{fn this.removeFile file.originalFile}} />{{/unless}}\\n                            <div class=\\\"move move-Note file-icon\\\"></div>\\n                        </div>\\n                    </a>\\n                {{/if}}\\n\\n            <div class=\\\"queue-filename\\\" title=\\\"{{file.name}}\\\">{{file.name}}</div>\\n        </div>\\n    {{/each}}\\n</div>\\n\\n{{#if this.showModal}}\\n    <Addon::Modal @close={{fn (mut this.showModal) false}} @outsideClose={{true}} @classes=\\\"\\\">\\n        <img src={{this.modalPreviewFile}} alt=\\\"\\\" role=\\\"none\\\" style=\\\"max-width: 90vw;\\\">\\n    </Addon::Modal>\\n{{/if}}\\n\\n{{#with (file-queue name=this.queueName) as |queue|}}\\n    {{#if queue.files.length}}\\n        {{#each queue.files as |file|}}\\n            {{#if (eq file.state \\\"uploading\\\")}}\\n                <div class=\\\"row\\\">\\n                    <div class=\\\"col-xs-3 queue-filename\\\" title=\\\"{{file.name}}\\\">\\n                        {{file.name}}\\n                    </div>\\n                    <div class=\\\"col-xs-7\\\">\\n                        {{#unless (is-equal file.progress 100)}}\\n                            <div class=\\\"progress\\\">\\n                                <div class=\\\"progress-bar\\\" role=\\\"progressbar\\\" aria-valuenow=\\\"{{file.progress}}\\\"\\n                                     aria-valuemin=\\\"0\\\" aria-valuemax=\\\"100\\\" style={{htmlsafe (concat \\\"width: \\\" file.progress \\\"%;\\\")}}>\\n                                </div>\\n                            </div>\\n                        {{/unless}}\\n                    </div>\\n                    <div class=\\\"col-xs-2\\\">\\n                        <Addon::Icons::Close @onClick={{fn this.abort file}} />\\n                    </div>\\n                </div>\\n            {{/if}}\\n        {{/each}}\\n    {{/if}}\\n{{/with}}\\n{{#if this.showAddButton}}\\n\\n    {{#if (and this.isImageFile this.isAndroid)}}\\n        <button type=\\\"button\\\" {{on 'click' (fn this.addMobileFile 'gallery')}} class=\\\"btn btn-m-link inline-block\\\" disabled={{@disabled}}><span class=\\\"glyphicon glyphicon-picture\\\"></span> {{t \\\"field.fileupload.add_from_gallery\\\"}}</button>\\n        <button type=\\\"button\\\" {{on 'click' this.addMobileFile}} class=\\\"btn btn-m-link inline-block\\\" disabled={{@disabled}}><span class=\\\"glyphicon glyphicon-camera\\\"></span> {{this.addButtonText}}</button>\\n    {{else}}\\n        <FileUpload\\n            @name={{this.queueName}}\\n            @accept={{if this.isImageFile \\\"image/*\\\" \\\"*\\\"}}\\n            @onfileadd={{this.uploadImage}}\\n            @disabled={{@disabled}} >\\n\\n            <span class=\\\"btn btn-m-link {{if @disabled 'disabled' ''}}\\\">\\n                {{#if this.isImageFile}}\\n                    <span class=\\\"glyphicon glyphicon-camera\\\"></span>\\n                {{else}}\\n                    <span class=\\\"glyphicon glyphicon-file\\\"></span>\\n                {{/if}}\\n                {{this.addButtonText}}\\n            </span>\\n        </FileUpload>\\n    {{/if}}\\n{{/if}}\\n\", {\"contents\":\"{{!-- template-lint-disable no-bare-strings no-invalid-interactive--}}\\n{{!-- template-lint-disable no-bare-strings no-inline-styles--}}\\n{{!-- template-lint-disable simple-unless--}}\\n{{!-- template-lint-disable style-concatenation--}}\\n{{#if this.isIE}}\\n    <div class=\\\"alert alert-warning text-center\\\">\\n        <h3>{{t 'field.warning.ie_not_supported'}}</h3>\\n    </div>\\n{{/if}}\\n<div class=\\\"file-list ember-movenium-file-upload\\\">\\n    {{#each this.fileList as |file|}}\\n        <div class=\\\"file-container\\\">\\n                {{#if file.s3thumb}}\\n                    <div class=\\\"file-preview\\\" {{on 'click' (fn (mut this.modalPreviewFile) file.previewFile) }} {{on 'click' (fn (mut this.showModal))}} >\\n                        <div class=\\\"thumb-container\\\" style={{htmlsafe (concat \\\"background-image: url(\\\" file.s3thumb \\\")\\\")}}>\\n                            {{#unless @disabled}}<Addon::Icons::Close @onClick={{fn this.removeFile file.originalFile}} />{{/unless}}\\n                        </div>\\n                    </div>\\n                {{else}}\\n                    <a class=\\\"file-preview\\\" href=\\\"{{file.previewFile}}\\\" download=\\\"{{file.name}}\\\" target={{if this.isAndroid '_blank' ''}}>\\n                        <div class=\\\"thumb-container\\\">\\n                            {{#unless @disabled}}<Addon::Icons::Close @onClick={{fn this.removeFile file.originalFile}} />{{/unless}}\\n                            <div class=\\\"move move-Note file-icon\\\"></div>\\n                        </div>\\n                    </a>\\n                {{/if}}\\n\\n            <div class=\\\"queue-filename\\\" title=\\\"{{file.name}}\\\">{{file.name}}</div>\\n        </div>\\n    {{/each}}\\n</div>\\n\\n{{#if this.showModal}}\\n    <Addon::Modal @close={{fn (mut this.showModal) false}} @outsideClose={{true}} @classes=\\\"\\\">\\n        <img src={{this.modalPreviewFile}} alt=\\\"\\\" role=\\\"none\\\" style=\\\"max-width: 90vw;\\\">\\n    </Addon::Modal>\\n{{/if}}\\n\\n{{#with (file-queue name=this.queueName) as |queue|}}\\n    {{#if queue.files.length}}\\n        {{#each queue.files as |file|}}\\n            {{#if (eq file.state \\\"uploading\\\")}}\\n                <div class=\\\"row\\\">\\n                    <div class=\\\"col-xs-3 queue-filename\\\" title=\\\"{{file.name}}\\\">\\n                        {{file.name}}\\n                    </div>\\n                    <div class=\\\"col-xs-7\\\">\\n                        {{#unless (is-equal file.progress 100)}}\\n                            <div class=\\\"progress\\\">\\n                                <div class=\\\"progress-bar\\\" role=\\\"progressbar\\\" aria-valuenow=\\\"{{file.progress}}\\\"\\n                                     aria-valuemin=\\\"0\\\" aria-valuemax=\\\"100\\\" style={{htmlsafe (concat \\\"width: \\\" file.progress \\\"%;\\\")}}>\\n                                </div>\\n                            </div>\\n                        {{/unless}}\\n                    </div>\\n                    <div class=\\\"col-xs-2\\\">\\n                        <Addon::Icons::Close @onClick={{fn this.abort file}} />\\n                    </div>\\n                </div>\\n            {{/if}}\\n        {{/each}}\\n    {{/if}}\\n{{/with}}\\n{{#if this.showAddButton}}\\n\\n    {{#if (and this.isImageFile this.isAndroid)}}\\n        <button type=\\\"button\\\" {{on 'click' (fn this.addMobileFile 'gallery')}} class=\\\"btn btn-m-link inline-block\\\" disabled={{@disabled}}><span class=\\\"glyphicon glyphicon-picture\\\"></span> {{t \\\"field.fileupload.add_from_gallery\\\"}}</button>\\n        <button type=\\\"button\\\" {{on 'click' this.addMobileFile}} class=\\\"btn btn-m-link inline-block\\\" disabled={{@disabled}}><span class=\\\"glyphicon glyphicon-camera\\\"></span> {{this.addButtonText}}</button>\\n    {{else}}\\n        <FileUpload\\n            @name={{this.queueName}}\\n            @accept={{if this.isImageFile \\\"image/*\\\" \\\"*\\\"}}\\n            @onfileadd={{this.uploadImage}}\\n            @disabled={{@disabled}} >\\n\\n            <span class=\\\"btn btn-m-link {{if @disabled 'disabled' ''}}\\\">\\n                {{#if this.isImageFile}}\\n                    <span class=\\\"glyphicon glyphicon-camera\\\"></span>\\n                {{else}}\\n                    <span class=\\\"glyphicon glyphicon-file\\\"></span>\\n                {{/if}}\\n                {{this.addButtonText}}\\n            </span>\\n        </FileUpload>\\n    {{/if}}\\n{{/if}}\\n\",\"moduleName\":\"tt4/components/addon/fields/hdfile.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/hdfile.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { A } from '@ember/array';\nimport { inject as service } from '@ember/service';\nimport { isIE, isAndroid } from 'tt4/ember-movenium/utils/gui';\nimport File from 'ember-file-upload/file';\nimport {\n    imageTypes,\n    makeFileUrl,\n    resizeImage,\n    blackListFiles,\n} from 'tt4/ember-movenium/utils/file';\nimport config from 'tt4/config/environment';\nimport moment from 'moment';\nimport MutableArray from '@ember/array/mutable';\ndeclare const Camera: any;\ndeclare const window: any;\ndeclare const navigator: any;\n\n/*\n\nCorrect data formats\n\n  Sending data to backend\n\n    name: \"iter site.jpg\"                                                                       * mandatory\n    name_on_hd: \"6hz5ww4t2jur1rckp93pl29iaxtup1qq9zdvec097aizk1uunb9gl22o44tl54h5.jpg\"          * mandatory\n    type: \"image/jpeg\"                                                                          * mandatory\n\n    - it is ok to send more attributes but file and data attributes are forbidden (old version support)\n\n  Backend returns\n\n    name: \"iter site.jpg\"\n    name_on_hd: \"6hz5ww4t2jur1rckp93pl29iaxtup1qq9zdvec097aizk1uunb9gl22o44tl54h5.jpg\"\n    s3thumb: \"https://movdev-bucket.s3.eu-central-1.amazonaws.com/6hz5ww4t2jur1rckp93pl29iaxtu.jpg.thumb\"\n    s3url: \"https://movdev-bucket.s3.eu-central-1.amazonaws.com/6hz5ww4t2jur1rckp93pl29iaxtu.jpg\"\n    type: \"image/jpeg\"\n    thumb: (old version support)\n    url: (old version support)\n\n  Saved to database\n\n    name: \"iter site.jpg\"\n    name_on_hd: \"6hz5ww4t2jur1rckp93pl29iaxtup1qq9zdvec097aizk1uunb9gl22o44tl54h5.jpg\"\n    type: \"image/jpeg\"\n\n*/\n\ninterface IFile {\n    name: string;\n    value?: any;\n    type: string;\n    size: number;\n    url?: string;\n    s3url?: string;\n    thumb?: string;\n    s3thumb?: string;\n    name_on_hd: string;\n    previewFile?: string;\n    originalFile?: IFile;\n    blob: Blob;\n    task: any;\n    upload(url: string, data: object): void;\n    readAsDataURL(): string;\n}\n/* istanbul ignore next */\nexport default class FieldsHdfileComponent extends Component<any> {\n    public form: string | undefined;\n    public name: string | undefined;\n    @service private intl: any;\n    @service private session: any;\n    @service private notifications: any;\n    @service private FileQueue: any; /* tslint:disable-line */\n\n    private queueName: string;\n    private capiURL: any;\n    private isIE: boolean = isIE; // for use in template also\n    private isAndroid: boolean = isAndroid;\n\n    @tracked private base64ImageCache: any = {};\n    @tracked private base64Cache: any = {};\n\n    constructor(owner: unknown, args: any) {\n        super(owner, args);\n        this.capiURL = config.APP.COLLECTOR_API_URL;\n        this.queueName = Math.random().toString(36).substring(2);\n    }\n\n    get value(): MutableArray<any> {\n        return this.args.value || A([]);\n    }\n\n    private get isImageFile(): boolean {\n        return (this.args.features?.is_image || false) as boolean;\n    }\n\n    private get singleFile(): boolean {\n        return (this.args.features?.single_file || false) as boolean;\n    }\n\n    private get isPublic(): boolean {\n        return (this.args.features?.public || false) as boolean;\n    }\n\n    public get showAddButton(): boolean {\n        if (this.singleFile && this.value.length > 0) return true;\n        else if (this.isIE) return false;\n        else return true;\n    }\n\n    public get addButtonText(): boolean {\n        if (this.form === 'logo') return this.intl.t('add.logo');\n        else if (this.isImageFile && this.isAndroid)\n            return this.intl.t('field.fileupload.add_from_camera');\n        else if (this.isImageFile) return this.intl.t('add.image');\n        else return this.intl.t('add.file');\n    }\n\n    public get fileList(): IFile[] {\n        if (!this.value) {\n            return [];\n        }\n\n        const mappedFiles = this.value.toArray().map((file: IFile) => {\n            const fileObject: any = {\n                name: file.name,\n                type: file.type,\n                originalFile: file,\n                name_on_hd: file.name_on_hd,\n            };\n\n            if (this.isImageType(file.type)) {\n                // Use signed URLs for images - prefer s3thumb, fall back to base64 cache\n                fileObject.s3thumb = file.s3thumb || this.base64ImageCache[file.name_on_hd];\n                fileObject.previewFile = fileObject.s3thumb;\n            } else if (file.s3url) {\n                // Use signed URLs for other files - prefer s3url, fall back to traditional url, then base64 cache\n                fileObject.previewFile = file.s3url;\n            } else if (file.url) {\n                fileObject.previewFile = makeFileUrl(this.capiURL + '/', file.url);\n            } else {\n                fileObject.previewFile = this.base64Cache[file.name_on_hd];\n            }\n            return fileObject;\n        });\n\n        return mappedFiles;\n    }\n\n    @action\n    public onChange(value: string[]) {\n        return this.args.onChange(value);\n    }\n\n    @action\n    public async uploadImage(file: IFile): Promise<void> {\n        if (file.size > 20971520) {\n            return this.notifications.error(this.intl.t('field.fileupload.file_too_large'), {\n                autoClear: true,\n            });\n        }\n\n        const fileExt = file.name?.split('.')[1].toLowerCase();\n        if (blackListFiles().includes('.' + fileExt)) {\n            this.FileQueue.files.removeObject(file);\n            return this.notifications.error(this.intl.t('field.fileupload.blocked_filetype'), {\n                autoClear: true,\n            });\n        }\n\n        if (this.isImageType(file.type)) {\n            const resizedImage = await resizeImage(file.blob);\n            const queue = this.FileQueue.find(this.queueName);\n\n            this.FileQueue.files.removeObject(file);\n            const resizedImageFile = File.fromDataURL(resizedImage);\n            resizedImageFile.name = file.name;\n            resizedImageFile.type = file.type;\n            this.FileQueue.files.pushObject(resizedImageFile);\n            queue.files.pushObject(resizedImageFile);\n            this.uploadFile(resizedImageFile, true);\n        } else {\n            this.uploadFile(file);\n        }\n    }\n\n    @action\n    public abort(file: IFile) {\n        const vals = this.value;\n        vals.removeObject(this.value.findBy('name_on_hd', file.name_on_hd));\n        file.task.cancel();\n        this.args.onChange(vals);\n    }\n\n    @action\n    public removeFile(file: IFile, event: Event) {\n        event.preventDefault();\n        const vals = this.value;\n        vals.removeObject(file);\n        this.args.onChange(vals);\n    }\n\n    @action\n    public previewFile(filePreview: string) {\n        window.location.href = filePreview;\n    }\n\n    @action\n    public addMobileFile(source: string | null = null) {\n        const options = {\n            allowEdit: false,\n            targetWidth: 1600,\n            targetHeight: 1600,\n            quality: 70,\n            destinationType: Camera.DestinationType.FILE_URI,\n            sourceType:\n                source === 'gallery'\n                    ? Camera.PictureSourceType.PHOTOLIBRARY\n                    : Camera.PictureSourceType.CAMERA,\n            mediaType: Camera.MediaType.PICTURE,\n            correctOrientation: true,\n            encodingType: 0,\n        };\n        // mega monster upload from device camera\n        navigator.camera.getPicture(\n            (imageData: any) => {\n                window.resolveLocalFileSystemURL(\n                    imageData,\n                    (fileEntry: any) => {\n                        fileEntry.file((file: any) => {\n                            (file.type = 'image/jpeg'),\n                                (file.name = file.name.replace(\n                                    'image.',\n                                    'image' + moment().format('YYYY-MM-DD-hh-mm-ss') + '.',\n                                )); /*tslint:disable-line*/\n                            this.uploadImage({\n                                blob: file,\n                                name: file.name,\n                                type: file.type,\n                            } as IFile);\n                        });\n                    },\n                    (error: any) => {\n                        throw new Error(error);\n                    },\n                );\n            },\n            (message: any) => {\n                throw new Error(message);\n            },\n            options,\n        );\n    }\n    @action\n    private addFile(file: IFile) {\n        const vals = this.value;\n        vals.pushObject({\n            name: file.name,\n            name_on_hd: file.name_on_hd,\n            type: file.type,\n        });\n        this.args.onChange(vals);\n    }\n\n    private async uploadFile(file: IFile, isImageType: boolean = false): Promise<void> {\n        let policyUrl = '/awsurl?filename=' + file.name + '&format=policy';\n        if (this.isPublic) policyUrl += '&public=true';\n        if (isImageType) policyUrl += '&thumb=true';\n\n        try {\n            const req = await fetch(this.capiURL + policyUrl, {\n                headers: {\n                    Authorization: 'Bearer ' + this.session.data.authenticated.access_token,\n                },\n            });\n            const response = (await req.json()) as any;\n\n            const task = file.upload(response.url!, {\n                data: response.inputs,\n            });\n\n            if (isImageType) {\n                this.createThumb(file.name, file.type, file.blob, response);\n                const base64Url = await file.readAsDataURL();\n                this.base64ImageCache[response.s3file] = base64Url;\n            } else {\n                const base64Url = await file.readAsDataURL();\n                this.base64Cache[response.s3file] = base64Url;\n            }\n\n            await task;\n            file.task = task;\n            file.name_on_hd = response.s3file;\n\n            this.addFile(file);\n        } catch (e) {\n            alert('upload failed');\n        }\n    }\n\n    private async createThumb(\n        fileName: string,\n        type: string,\n        blob: Blob,\n        policyResponse: any,\n    ): Promise<string> {\n        const resized = await resizeImage(blob);\n        const resizedImageFile = File.fromDataURL(resized);\n        resizedImageFile.name = fileName;\n        resizedImageFile.type = type;\n        resizedImageFile.upload(policyResponse.thumb.url, {\n            data: policyResponse.thumb.inputs,\n        });\n        return resizedImageFile;\n    }\n\n    private isImageType(type: string): boolean {\n        return imageTypes.includes(type);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div>\\n    <Input\\n        @type='number'\\n        @min='0'\\n        @name={{concat @name '-hours'}}\\n        @class='hours-and-minutes'\\n        @focus-out={{fn this.changeHours}}\\n        {{on 'focus' this.selectAll}}\\n        @value={{readonly this.hours}}\\n        @disabled={{@disabled}}\\n    />\\n    {{t 'general.hour_abbr'}}\\n    <Input\\n        @type='number'\\n        @min='0'\\n        @max='59'\\n        @name={{concat @name '-minutes'}}\\n        @class='hours-and-minutes'\\n        @focus-out={{fn this.changeMinutes}}\\n        {{on 'focus' this.selectAll}}\\n        @value={{readonly this.minutes}}\\n        @disabled={{@disabled}}\\n    />\\n    {{t 'general.min_abbr'}}\\n</div>\", {\"contents\":\"<div>\\n    <Input\\n        @type='number'\\n        @min='0'\\n        @name={{concat @name '-hours'}}\\n        @class='hours-and-minutes'\\n        @focus-out={{fn this.changeHours}}\\n        {{on 'focus' this.selectAll}}\\n        @value={{readonly this.hours}}\\n        @disabled={{@disabled}}\\n    />\\n    {{t 'general.hour_abbr'}}\\n    <Input\\n        @type='number'\\n        @min='0'\\n        @max='59'\\n        @name={{concat @name '-minutes'}}\\n        @class='hours-and-minutes'\\n        @focus-out={{fn this.changeMinutes}}\\n        {{on 'focus' this.selectAll}}\\n        @value={{readonly this.minutes}}\\n        @disabled={{@disabled}}\\n    />\\n    {{t 'general.min_abbr'}}\\n</div>\",\"moduleName\":\"tt4/components/addon/fields/hours.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/hours.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action, notifyPropertyChange } from '@ember/object';\nimport { isMobile } from 'tt4/ember-movenium/utils/gui';\n\ninterface IHoursAndMinutes {\n    value: string;\n    onChange(args0: string): void;\n}\n\nexport default class FieldsHoursAndMinutesComponent extends Component<IHoursAndMinutes> {\n    get isMobile(): boolean {\n        return isMobile();\n    }\n\n    // select all numbers in input\n    @action\n    public selectAll(event: Event): void {\n        const target = event.target as HTMLInputElement;\n        target.select();\n    }\n\n    @action\n    public changeHours(value: string): void {\n        let val = parseInt(value, 10);\n\n        if (isNaN(val)) val = 0;\n\n        if (val < 0) val = 0;\n\n        if (val < 10) {\n            value = '0' + val;\n        }\n\n        const minutes = this.minutes || '00';\n\n        this.args.onChange(value + ':' + minutes);\n        notifyPropertyChange(this, 'hours');\n    }\n\n    @action\n    public changeMinutes(value: string): void {\n        let val = parseInt(value, 10);\n\n        if (isNaN(val)) val = 0;\n\n        if (val < 0 || val > 59) val = 0;\n\n        if (val < 10) {\n            value = '0' + val;\n        }\n\n        const hours = this.hours || '00';\n\n        this.args.onChange(hours + ':' + value);\n        notifyPropertyChange(this, 'minutes');\n    }\n\n    get hours(): string | null {\n        if (!this.args.value) return null;\n        if (this.args.value.toString().includes(':')) {\n            return this.args.value?.split(':')[0];\n        } else {\n            return Math.floor(parseInt(this.args.value, 10)).toString();\n        }\n    }\n\n    get minutes(): string | null {\n        if (!this.args.value) return null;\n        if (this.args.value.toString().includes(':')) {\n            return this.args.value?.split(':')[1];\n        } else {\n            const minutes = Math.round((parseFloat(this.args.value) % 1) * 60);\n            return minutes < 10 ? '0' + minutes.toString() : minutes.toString();\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{this.unit}}</span>\\n</div>\\n\", {\"contents\":\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{this.unit}}</span>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/fields/minutes.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/minutes.hbs\"}});\nimport FieldsPriceComponent from './price';\n\nexport default class FieldsBigPriceComponent extends FieldsPriceComponent {\n    get unit(): string | null {\n        return 'min';\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if @moreCount}}\\n    <div class=\\\"ember-power-select-option power-select-footer\\\">\\n        {{t \\\"select.more\\\"}}\\n    </div>\\n{{/if}}\\n\", {\"contents\":\"{{#if @moreCount}}\\n    <div class=\\\"ember-power-select-option power-select-footer\\\">\\n        {{t \\\"select.more\\\"}}\\n    </div>\\n{{/if}}\\n\",\"moduleName\":\"tt4/components/addon/fields/multiselect-after-options.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/multiselect-after-options.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<PowerSelectMultiple\\n    @class={{@class}}\\n    @name={{@name}}\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @tagName=\\\"div\\\"\\n    @allowClear={{true}}\\n    @selected={{this.selected}}\\n    @preventScroll={{true}}\\n    @placeholder={{this.placeholder}}\\n    @options={{this.options}}\\n    @loadingMessage={{t \\\"general.loading\\\"}}\\n    @disabled={{or @disabled this.disabled}}\\n    @searchEnabled={{true}}\\n    @search={{fn this.search}}\\n    @afterOptionsComponent={{component \\\"addon/fields/multiselect-after-options\\\" moreCount=this.moreCount}}\\n    @onOpen={{fn (mut this.isopen) true}}\\n    @onClose={{fn (mut this.isopen) false}}\\n    @onChange={{this.onChange}} as |record|>\\n    {{#if record.isSelectAll}}\\n        <span style=\\\"font-style: italic; color: grey;\\\">{{record.text}}</span>\\n    {{else}}\\n        {{#each this.subformFields as |field|}}\\n            {{get record field}}\\n        {{/each}}\\n    {{/if}}\\n</PowerSelectMultiple>\", {\"contents\":\"<PowerSelectMultiple\\n    @class={{@class}}\\n    @name={{@name}}\\n    @dropdownClass=\\\"power-select-add-field\\\"\\n    @tagName=\\\"div\\\"\\n    @allowClear={{true}}\\n    @selected={{this.selected}}\\n    @preventScroll={{true}}\\n    @placeholder={{this.placeholder}}\\n    @options={{this.options}}\\n    @loadingMessage={{t \\\"general.loading\\\"}}\\n    @disabled={{or @disabled this.disabled}}\\n    @searchEnabled={{true}}\\n    @search={{fn this.search}}\\n    @afterOptionsComponent={{component \\\"addon/fields/multiselect-after-options\\\" moreCount=this.moreCount}}\\n    @onOpen={{fn (mut this.isopen) true}}\\n    @onClose={{fn (mut this.isopen) false}}\\n    @onChange={{this.onChange}} as |record|>\\n    {{#if record.isSelectAll}}\\n        <span style=\\\"font-style: italic; color: grey;\\\">{{record.text}}</span>\\n    {{else}}\\n        {{#each this.subformFields as |field|}}\\n            {{get record field}}\\n        {{/each}}\\n    {{/if}}\\n</PowerSelectMultiple>\",\"moduleName\":\"tt4/components/addon/fields/multiselect.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/multiselect.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action, get, computed } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { debounce } from '@ember/runloop';\nimport { isPresent, isBlank } from '@ember/utils';\nimport { A } from '@ember/array';\nimport { IOptions } from 'tt4/ember-movenium/interfaces/forms';\n\ninterface FieldsMultiselectArgs {\n\tclass?: string;\n\tname: string;\n\tform: string;\n\toptions: IOptions;\n\tvalue?: any;\n\tdisabled?: boolean;\n\tprompt?: any;\n\tmodel?: { [key: string]: any };\n\tfilter?: { [key: string]: any } | null;\n\tonChange(value: string[] | null): void;\n}\n\nexport default class FieldsMultiselectComponent extends Component<FieldsMultiselectArgs> {\n\n\t@service declare store: any;\n\t@service declare intl: any;\n\n\t@tracked internalSelected: any = A([]);\n\t@tracked disabled = false;\n\t@tracked isopen = false;\n\t@tracked moreCount: number | null = null;\n\n\tconstructor(owner: any, args: FieldsMultiselectArgs) {\n\t\tsuper(owner, args);\n\t\tthis.loadInitialSelection();\n\t}\n\n\tget subform() {\n\t\treturn this.args.options?.form || '';\n\t}\n\n\tget subformFields() {\n\t\treturn this.args.options?.fields || [];\n\t}\n\n\tget placeholder(): string | null {\n\t\treturn this.args.prompt ? this.intl.t(this.args.prompt) : null;\n\t}\n\n\tget selected() {\n\t\tconst value = this.args.value;\n\t\tconst isRecordArray = Array.isArray(value) && isPresent(value) && this.isRecord(value[0]);\n\t\treturn isRecordArray ? value : this.internalSelected;\n\t}\n\n\tget queryLimit(): number {\n\t\treturn 100;\n\t}\n\n\t// Cache promise to avoid repeated backend queries on each render\n\t// Invalidates when filter or selected items change\n\t@computed('subform', 'args.filter', 'internalSelected.[]')\n\tget options(): Promise<any> {\n\t\treturn this.fetchOptions(null).then(this.groupOptions.bind(this));\n\t}\n\n\tisRecord(item: any): boolean {\n\t\treturn typeof item === 'object' && item && 'id' in item;\n\t}\n\n\t// Group options into \"Selected\" and \"Unselected\" categories for dropdown display\n\tgroupOptions(records: any) {\n\t\tif (!records?.toArray) return [];\n\n\t\tconst allRecords = records.toArray();\n\t\tconst selectedIds = this.internalSelected.mapBy('id');\n\n\t\tconst selected = allRecords.filter((record: any) => selectedIds.includes(record.id));\n\t\tconst unselected = allRecords.filter((record: any) => !selectedIds.includes(record.id));\n\n\t\tconst groups = [];\n\n\t\tif (isPresent(selected)) {\n\t\t\tgroups.push({\n\t\t\t\tgroupName: this.intl.t('select.selected'),\n\t\t\t\toptions: selected\n\t\t\t});\n\t\t}\n\n\t\tif (isPresent(unselected)) {\n\t\t\t// Add \"Select All\" option at the beginning of unselected group\n\t\t\tconst selectAllOption = {\n\t\t\t\tid: '__select_all__',\n\t\t\t\tisSelectAll: true,\n\t\t\t\ttext: this.intl.t('select.select_all')\n\t\t\t};\n\n\t\t\tgroups.push({\n\t\t\t\tgroupName: this.intl.t('select.unselected'),\n\t\t\t\toptions: [selectAllOption, ...unselected]\n\t\t\t});\n\t\t}\n\n\t\treturn groups;\n\t}\n\n\tcreateQueryParams(term: string | null = null, id: string | null = null) {\n\t\tconst params: any = {\n\t\t\tform: this.args.form,\n\t\t\tfield: this.args.name,\n\t\t\tlimit: this.queryLimit,\n\t\t\toffset: 0,\n\t\t};\n\n\t\tif (isPresent(id)) params.id = id;\n\t\tif (isPresent(term)) params.q = term;\n\n\t\t// Add filter parameters if present\n\t\tif (isPresent(this.args.filter)) {\n\t\t\tObject.keys(this.args.filter || {}).forEach((key) => {\n\t\t\t\tconst filterValue = (this.args.filter || {})[key];\n\t\t\t\tif (isPresent(filterValue)) {\n\t\t\t\t\tparams[key] = typeof filterValue === 'string' ? filterValue : get(filterValue, 'id');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn params;\n\t}\n\n\t// Convert value (array of ids or string) to comma-separated format for backend query\n\tparseIdsFromValue(value: any): string | null {\n\t\tif (isBlank(value)) return null;\n\n\t\tif (Array.isArray(value)) {\n\t\t\tconst ids = value.map((v) => String(v || '')).filter(isPresent);\n\t\t\treturn ids.length ? ids.join(',') : null;\n\t\t}\n\n\t\tif (typeof value === 'string') {\n\t\t\treturn isBlank(value.trim()) ? null : value;\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tasync fetchOptions(term: string | null) {\n\t\tif (this.args.filter && !term) {\n\t\t\tthis.disabled = true;\n\t\t}\n\n\t\tconst records = await this.store.query(this.subform, this.createQueryParams(term));\n\t\tconst metaCount = records?.meta?.count;\n\t\tthis.moreCount =\n\t\t\tmetaCount > this.queryLimit\n\t\t\t\t? metaCount - this.queryLimit\n\t\t\t\t: null;\n\t\tthis.disabled = false;\n\n\t\treturn records;\n\t}\n\n\tasync loadInitialSelection(): Promise<void> {\n\t\tconst value = this.args.value;\n\n\t\t// If caller already provides selected record objects, use them directly\n\t\tif (Array.isArray(value) && isPresent(value) && this.isRecord(value[0])) {\n\t\t\tthis.internalSelected = A(value);\n\t\t\treturn;\n\t\t}\n\n\t\t// Parse ids and fetch corresponding records from backend\n\t\tconst idsString = this.parseIdsFromValue(value);\n\t\tif (isBlank(idsString)) {\n\t\t\tthis.internalSelected = A([]);\n\t\t\treturn;\n\t\t}\n\n\t\ttry {\n\t\t\tconst records = await this.store.query(this.subform, this.createQueryParams(null, idsString));\n\t\t\tthis.internalSelected = A(records?.toArray ? records.toArray() : records);\n\t\t} catch (e) {\n\t\t\tthis.internalSelected = A([]);\n\t\t}\n\t}\n\n\t@action\n\tsearch(term: string) {\n\t\treturn new Promise((resolve) => {\n\t\t\tdebounce(this, this.performSearch, term, resolve, 600);\n\t\t});\n\t}\n\n\tasync performSearch(term: string, resolve: (value: any) => void) {\n\t\tconst records = await this.fetchOptions(term);\n\t\tresolve(this.groupOptions(records));\n\t}\n\n\tasync selectAll() {\n\t\tconst records = await this.fetchOptions(null);\n\t\treturn records.toArray ? records.toArray() : records;\n\t}\n\n\t@action\n\tasync onChange(value: any) {\n\t\t// Handle \"Select All\" by fetching and selecting all available options\n\t\tconst hasSelectAll = Array.isArray(value) && value.some((item: any) => item.isSelectAll);\n\t\tif (hasSelectAll) {\n\t\t\tvalue = await this.selectAll();\n\t\t}\n\n\t\t// Filter out \"Select All\" option and update internal state\n\t\tconst selectedRecords = Array.isArray(value)\n\t\t\t? value.filter((item: any) => !item.isSelectAll)\n\t\t\t: [];\n\t\tthis.internalSelected = A(selectedRecords);\n\n\t\t// Extract ids and notify parent\n\t\tconst ids = this.internalSelected.mapBy('id').filter(isPresent);\n\t\tconst payload = isPresent(ids) ? ids : null;\n\n\t\tif (this.args.model && this.args.name) {\n\t\t\tthis.args.model[this.args.name] = payload;\n\t\t}\n\n\t\treturn this.args.onChange(payload);\n\t}\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if field.type}}\\n    {{t \\\"field.not_supported\\\" fieldtype=field.type}}\\n{{/if}}\\n\", {\"contents\":\"{{#if field.type}}\\n    {{t \\\"field.not_supported\\\" fieldtype=field.type}}\\n{{/if}}\\n\",\"moduleName\":\"tt4/components/addon/fields/not-supported.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/not-supported.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{@options}}</span>\\n</div>\\n\", {\"contents\":\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{@options}}</span>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/fields/number.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/number.hbs\"}});\nimport Component from '@glimmer/component';\n\nexport default class FieldsNumberComponent extends Component {}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Input\\n    @type={{if this.showPassword \\\"text\\\" \\\"password\\\"}}\\n    @name={{@name}}\\n    @value={{@value}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n    @disabled={{not this.showPassword}}\\n/>\", {\"contents\":\"<Input\\n    @type={{if this.showPassword \\\"text\\\" \\\"password\\\"}}\\n    @name={{@name}}\\n    @value={{@value}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n    @disabled={{not this.showPassword}}\\n/>\",\"moduleName\":\"tt4/components/addon/fields/password.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/password.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\ninterface PasswordInputArgs {\n  value: string;\n}\n\nexport default class FieldsPasswordComponent extends Component<PasswordInputArgs> {\n    @tracked showPassword: boolean = false;\n\n    constructor(owner: unknown, args: PasswordInputArgs) {\n        super(owner, args);\n        // Determine if the password should be shown based on its length or if its value is 'secured' (which is the password value for existing users)\n        this.showPassword = args.value.length > 6 || args.value === 'secured' ? false : true;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{this.unit}}</span>\\n</div>\\n\", {\"contents\":\"<div class=\\\"ember-movenium-number-input\\\">\\n<Input\\n    @type=\\\"number\\\"\\n    @step=\\\"any\\\"\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @class={{@class}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\\n<span class=\\\"ember-movenium-input-unit\\\">{{this.unit}}</span>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/fields/price.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/price.hbs\"}});\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\n\nexport default class FieldsPriceComponent extends Component {\n    @service private session: any;\n\n    get unit(): string | null {\n        if (this.session.currentUser.company_info.country === 'fi') return '€';\n        else if (this.session.currentUser.company_info.country === 'se') return 'SEK';\n        else return null;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-flex-button-group-container\\\">\\n    {{#each @options as |option index|}}\\n        {{#if (eq @name \\\"affects_overtime\\\")}}\\n            <span role=\\\"button\\\" class=\\\"ember-movenium-flex-button-group-item-small ember-movenium-flex-button-modal {{if (is-equal option @value) 'ember-movenium-flex-button-group-item-small-selected'}}\\\"\\n                name={{concat @name '-' index}} {{on 'click' (fn @onChange option)}}>{{#if (is-equal option @value)}}<span class=\\\"ember-movenium-checkmark\\\"></span>{{/if}}{{t (concat @form '.' @name '.' option)}}</span>\\n        {{else}}\\n            <button type=\\\"button\\\" name={{concat @name '-' index}} class=\\\"ember-movenium-flex-button-group-item {{concat 'radio-button-' @form '-' index}} {{if (is-equal option @value) 'ember-movenium-flex-button-group-selected'}}\\\" {{on 'click' (fn @onChange option)}}>{{#if (is-equal option @value)}}<span class=\\\"ember-movenium-checkmark\\\"></span> {{/if}}{{collector-value-format value=option form=@form field=@name}}</button>\\n        {{/if}}\\n    {{/each}}\\n</div>\\n\", {\"contents\":\"<div class=\\\"ember-movenium-flex-button-group-container\\\">\\n    {{#each @options as |option index|}}\\n        {{#if (eq @name \\\"affects_overtime\\\")}}\\n            <span role=\\\"button\\\" class=\\\"ember-movenium-flex-button-group-item-small ember-movenium-flex-button-modal {{if (is-equal option @value) 'ember-movenium-flex-button-group-item-small-selected'}}\\\"\\n                name={{concat @name '-' index}} {{on 'click' (fn @onChange option)}}>{{#if (is-equal option @value)}}<span class=\\\"ember-movenium-checkmark\\\"></span>{{/if}}{{t (concat @form '.' @name '.' option)}}</span>\\n        {{else}}\\n            <button type=\\\"button\\\" name={{concat @name '-' index}} class=\\\"ember-movenium-flex-button-group-item {{concat 'radio-button-' @form '-' index}} {{if (is-equal option @value) 'ember-movenium-flex-button-group-selected'}}\\\" {{on 'click' (fn @onChange option)}}>{{#if (is-equal option @value)}}<span class=\\\"ember-movenium-checkmark\\\"></span> {{/if}}{{collector-value-format value=option form=@form field=@name}}</button>\\n        {{/if}}\\n    {{/each}}\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/fields/radio.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/radio.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div role=\\\"button\\\" {{on 'click' (fn (mut this.showModal) true)}} class=\\\"ember-movenium-signature {{if @value 'ember-movenium-signature-success'}}\\\" >\\n    {{t 'field.signature.placeholder'}}\\n    {{#if @value}}\\n        <img class=\\\"ember-movenium-signature-preview\\\" src={{this.signatureSrc}} alt={{t 'field.signature.placeholder'}} />\\n        <span class=\\\"ember-movenium-checkmark\\\"></span>\\n    {{/if}}\\n</div>\\n\\n{{#if this.showModal}}\\n    <ModalDialog\\n        @onClose={{fn (mut this.showModal) false}}\\n        @wrapperClassNames=\\\"ember-movenium-signature-dialog\\\"\\n        @translucentOverlay={{true}}\\n        @overlayPosition=\\\"sibling\\\"\\n    >\\n        <div class=\\\"ember-movenium-modal-dialog-header\\\">\\n            <h4>{{t 'modal.signature.title'}}</h4>\\n            <Addon::Icons::Close @onClick={{fn (mut this.showModal) false}} />\\n        </div>\\n\\n        <div class=\\\"ember-movenium-modal-dialog-content\\\">\\n            {{this.canvas}}\\n        </div>\\n\\n        <div class=\\\"ember-movenium-modal-dialog-footer\\\">\\n            <button type=\\\"button\\\" {{on 'click' this.clear}} class=\\\"ember-movenium-button ember-movenium-clear-button\\\"> {{t 'modal.clear'}} </button>\\n            <button type=\\\"button\\\" {{on 'click' this.save}} class=\\\"ember-movenium-button ember-movenium-save-button\\\"> {{t 'modal.ok'}} </button>\\n        </div>\\n    </ModalDialog>\\n{{/if}}\", {\"contents\":\"<div role=\\\"button\\\" {{on 'click' (fn (mut this.showModal) true)}} class=\\\"ember-movenium-signature {{if @value 'ember-movenium-signature-success'}}\\\" >\\n    {{t 'field.signature.placeholder'}}\\n    {{#if @value}}\\n        <img class=\\\"ember-movenium-signature-preview\\\" src={{this.signatureSrc}} alt={{t 'field.signature.placeholder'}} />\\n        <span class=\\\"ember-movenium-checkmark\\\"></span>\\n    {{/if}}\\n</div>\\n\\n{{#if this.showModal}}\\n    <ModalDialog\\n        @onClose={{fn (mut this.showModal) false}}\\n        @wrapperClassNames=\\\"ember-movenium-signature-dialog\\\"\\n        @translucentOverlay={{true}}\\n        @overlayPosition=\\\"sibling\\\"\\n    >\\n        <div class=\\\"ember-movenium-modal-dialog-header\\\">\\n            <h4>{{t 'modal.signature.title'}}</h4>\\n            <Addon::Icons::Close @onClick={{fn (mut this.showModal) false}} />\\n        </div>\\n\\n        <div class=\\\"ember-movenium-modal-dialog-content\\\">\\n            {{this.canvas}}\\n        </div>\\n\\n        <div class=\\\"ember-movenium-modal-dialog-footer\\\">\\n            <button type=\\\"button\\\" {{on 'click' this.clear}} class=\\\"ember-movenium-button ember-movenium-clear-button\\\"> {{t 'modal.clear'}} </button>\\n            <button type=\\\"button\\\" {{on 'click' this.save}} class=\\\"ember-movenium-button ember-movenium-save-button\\\"> {{t 'modal.ok'}} </button>\\n        </div>\\n    </ModalDialog>\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/fields/signature.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/signature.hbs\"}});\nimport Component from '@glimmer/component';\nimport SignaturePad from 'signature_pad';\nimport config from 'tt4/config/environment';\nimport { isArray } from '@ember/array';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\ninterface ISignatureField {\n    signatureSrc: string;\n    value: string | [{ url: string }] | { url: string } | null;\n    onChange(args0: string | null): void;\n}\n\nexport default class FieldsSignatureComponent extends Component<ISignatureField> {\n    protected signaturePad: SignaturePad | null = null;\n    protected canvas: HTMLCanvasElement;\n    @tracked protected showModal: boolean = false;\n\n    constructor(owner: unknown, args: ISignatureField) {\n        super(owner, args);\n        const canvas = document.createElement('canvas');\n        canvas.width = 475;\n        canvas.className = 'ember-movenium-signature-canvas';\n\n        this.signaturePad = new SignaturePad(canvas);\n        this.canvas = canvas;\n    }\n\n    get signatureSrc(): string | null {\n        this.signaturePad?.clear();\n        if (!this.args.value) return null;\n        if (typeof this.args.value === 'string') return this.args.value;\n        else if (isArray(this.args.value))\n            return config.APP.COLLECTOR_API_URL + '/' + this.args.value[0].url;\n        else return config.APP.COLLECTOR_API_URL + '/' + this.args.value.url;\n    }\n\n    @action\n    protected clear(): void {\n        this.signaturePad?.clear();\n    }\n\n    @action\n    protected save(): void {\n        if (this.signaturePad!.isEmpty()) this.args.onChange(null);\n        else this.args.onChange(this.signaturePad!.toDataURL());\n        this.showModal = false;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<TagInput\\n  @tags={{@value}}\\n  @addTag={{fn this.addTag}}\\n  @removeTagAtIndex={{fn this.removeTagAtIndex}}\\n  @onKeyUp={{fn this.queryForUser}}\\n  as |tag|>\\n    <span class={{if tag.error \\\"error\\\"}}>{{tag.tagName}}</span>\\n</TagInput>\\n{{#if this.showDropdown}}\\n    {{#if this.options.length}}\\n        <div class=\\\"ajax-select\\\">\\n            <div class=\\\"options\\\" id=\\\"tag-list-dropdown\\\">\\n                <ul>\\n                    {{#each this.options as |opt|}}\\n                        <li role=\\\"button\\\" {{on \\\"click\\\" (fn this.addTag opt)}}>\\n                            {{opt}}\\n                        </li>\\n                    {{/each}}\\n                </ul>\\n            </div>\\n        </div>\\n    {{/if}}\\n{{/if}}\", {\"contents\":\"<TagInput\\n  @tags={{@value}}\\n  @addTag={{fn this.addTag}}\\n  @removeTagAtIndex={{fn this.removeTagAtIndex}}\\n  @onKeyUp={{fn this.queryForUser}}\\n  as |tag|>\\n    <span class={{if tag.error \\\"error\\\"}}>{{tag.tagName}}</span>\\n</TagInput>\\n{{#if this.showDropdown}}\\n    {{#if this.options.length}}\\n        <div class=\\\"ajax-select\\\">\\n            <div class=\\\"options\\\" id=\\\"tag-list-dropdown\\\">\\n                <ul>\\n                    {{#each this.options as |opt|}}\\n                        <li role=\\\"button\\\" {{on \\\"click\\\" (fn this.addTag opt)}}>\\n                            {{opt}}\\n                        </li>\\n                    {{/each}}\\n                </ul>\\n            </div>\\n        </div>\\n    {{/if}}\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/fields/tag-input.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/tag-input.hbs\"}});\nimport Component from '@glimmer/component';\nimport { validateEmail } from 'tt4/ember-movenium/utils/validations';\nimport DS from 'ember-data';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { debounce } from '@ember/runloop';\nimport { A } from '@ember/array';\nimport MutableArray from '@ember/array/mutable';\n\ninterface ITagInput {\n    form: string;\n    field: string;\n    name: string;\n    value?: string[];\n    onChange(arg0: MutableArray<ITag | string> | string): void;\n}\n\ninterface ITag {\n    tagName: string;\n    error: boolean;\n    removeAt(args0: number): void;\n}\n\nexport default class FieldsTagInputComponent extends Component<ITagInput> implements ITagInput {\n    @tracked public showDropdown: boolean = false;\n    @tracked public tags: MutableArray<ITag | string> = A([]);\n    @tracked public options: MutableArray<string> = A([]);\n    @service declare store: DS.Store;\n\n    constructor(owner: unknown, args: ITagInput) {\n        super(owner, args);\n    }\n\n    get form() {\n        return this.args.form;\n    }\n\n    get field() {\n        return this.args.field;\n    }\n\n    get name() {\n        return this.args.name;\n    }\n\n    @action public onChange(tags: MutableArray<ITag | string>) {\n        return this.args.onChange(tags);\n    }\n\n    @action public addTag(tag: string) {\n        debounce(this, this.addTagToList, tag, 120);\n    }\n\n    @action public removeTagAtIndex(index: number) {\n        this.tags.removeAt(index);\n        this.args.onChange(this.tags as MutableArray<ITag>);\n    }\n\n    @action public queryForUser(currentInputValue: string) {\n        if (currentInputValue === '') return;\n        debounce(this, this.queryBackend, currentInputValue, 700);\n    }\n\n    protected addTagToList(tag: string) {\n        const tagObj = {\n            tagName: tag,\n            error: !validateEmail(tag),\n        } as ITag;\n        this.showDropdown = false;\n        this.tags.pushObject(tagObj as ITag);\n        this.onChange(this.tags as MutableArray<ITag>);\n    }\n\n    private async queryBackend(currentInputValue: string) {\n        this.showDropdown = false;\n        if (!this.form) return;\n        this.options = A([]);\n        const query = await this.store.query(this.form, { q: currentInputValue });\n        this.showDropdown = true;\n        query.forEach((result) => {\n            if (result[this.field]) {\n                this.options.pushObject(result[this.field]);\n            }\n        });\n    }\n}\n","define(\"tt4/components/addon/fields/textarea-varchar\", [\"exports\", \"tt4/components/addon/fields/textarea\"], function (_exports, _textarea) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _textarea.default;\n    }\n  });\n});\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Textarea\\n    @rows={{4}}\\n    @cols={{8}}\\n    @class={{@class}}\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @touchMove={{this.touchMoveAction}}\\n    @touchEnd={{this.touchEndAction}}\\n    {{on 'change' (fn @onChange @value)}}\\n    {{on 'keyup' (fn @onChange @value)}}\\n/>\", {\"contents\":\"<Textarea\\n    @rows={{4}}\\n    @cols={{8}}\\n    @class={{@class}}\\n    @value={{@value}}\\n    @disabled={{@disabled}}\\n    @touchMove={{this.touchMoveAction}}\\n    @touchEnd={{this.touchEndAction}}\\n    {{on 'change' (fn @onChange @value)}}\\n    {{on 'keyup' (fn @onChange @value)}}\\n/>\",\"moduleName\":\"tt4/components/addon/fields/textarea.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/textarea.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { debounce } from '@ember/runloop';\n/* istanbul ignore next */\nexport default class FieldsTextareaComponent extends Component {\n    private _touchMoving: boolean = false;\n\n    set touchMoving(moving: boolean) {\n        this._touchMoving = moving;\n    }\n\n    get touchMoving(): boolean {\n        return this._touchMoving;\n    }\n\n    @action\n    protected touchMoveAction() {\n        debounce(this, () => (this.touchMoving = true), 50);\n    }\n\n    @action\n    protected touchEndAction() {\n        if (this.touchMoving) {\n            this.touchMoving = false;\n            (document.activeElement as HTMLElement).blur();\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Input\\n    @type=\\\"text\\\"\\n    @name={{@name}}\\n    @value={{@value}}\\n    @class={{@class}}\\n    @disabled={{@disabled}}\\n    @touchMove={{this.touchMoveAction}}\\n    @touchEnd={{this.touchEndAction}}\\n    {{on \\\"change\\\" (fn @onChange @value)}}\\n    @placeholder={{@placeholder}}\\n/>\", {\"contents\":\"<Input\\n    @type=\\\"text\\\"\\n    @name={{@name}}\\n    @value={{@value}}\\n    @class={{@class}}\\n    @disabled={{@disabled}}\\n    @touchMove={{this.touchMoveAction}}\\n    @touchEnd={{this.touchEndAction}}\\n    {{on \\\"change\\\" (fn @onChange @value)}}\\n    @placeholder={{@placeholder}}\\n/>\",\"moduleName\":\"tt4/components/addon/fields/textbox.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/textbox.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { debounce } from '@ember/runloop';\n\ninterface ITextbox {\n    value: string;\n}\n\n/**\n    Textbox field\n    @class FieldsTextBoxComponent\n*/\n/* istanbul ignore next */\nexport default class FieldsTextBoxComponent extends Component<ITextbox> {\n    private _touchMoving: boolean = false;\n\n    set touchMoving(moving: boolean) {\n        this._touchMoving = moving;\n    }\n\n    get touchMoving(): boolean {\n        return this._touchMoving;\n    }\n\n    @action\n    protected touchMoveAction() {\n        debounce(\n            this,\n            () => {\n                this.touchMoving = true;\n            },\n            50,\n        );\n    }\n\n    @action\n    protected touchEndAction() {\n        if (this.touchMoving) {\n            this.touchMoving = false;\n            (document.activeElement as HTMLElement).blur();\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if this.isMobile}}\\n    <Input @type=\\\"time\\\" @value={{@value}} @disabled={{@disabled}} {{on 'change' (fn @onChange @value)}} />\\n{{else}}\\n    <Input\\n        @class=\\\"max-width-5em\\\"\\n        @type=\\\"text\\\"\\n        @autocomplete=\\\"off\\\"\\n        @value={{@value}}\\n        @disabled={{@disabled}}\\n        @focus-in={{this.select}}\\n        @focus-out={{fn this.timefy @value}}\\n        @enter={{fn this.timefy @value}}\\n    />\\n{{/if}}\", {\"contents\":\"{{#if this.isMobile}}\\n    <Input @type=\\\"time\\\" @value={{@value}} @disabled={{@disabled}} {{on 'change' (fn @onChange @value)}} />\\n{{else}}\\n    <Input\\n        @class=\\\"max-width-5em\\\"\\n        @type=\\\"text\\\"\\n        @autocomplete=\\\"off\\\"\\n        @value={{@value}}\\n        @disabled={{@disabled}}\\n        @focus-in={{this.select}}\\n        @focus-out={{fn this.timefy @value}}\\n        @enter={{fn this.timefy @value}}\\n    />\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/fields/time.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/time.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { isMobile } from 'tt4/ember-movenium/utils/gui';\n\n/**\n    Time field\n    @class FieldsTimeComponent\n*/\n\ninterface ITime {\n    onChange(args0: string): void;\n}\n\nexport default class FieldsTimeComponent extends Component<ITime> {\n    @action\n    protected select() {\n        return;\n    }\n\n    @action\n    protected timefy(value: string): void {\n        this.args.onChange(this.tryToGuessTime(value));\n    }\n\n    get isMobile(): boolean {\n        return isMobile();\n    }\n\n    /**\n     * This function receives a string, which it will try to parse into a time of format HH:mm\n     * For example if this function receives \"12\" it will return \"12:00\"\n     * If it receives \"1230\" it will return \"12:30\" and so on..\n     * @method tryToGuessTime\n     * @param {String} str - The string from which this function will try to guess the time\n     * @return {String}\n     *\n     */\n    private tryToGuessTime(str: string): string {\n        let hours;\n        let mins;\n\n        if (str.includes(':')) {\n            const exploded = str.split(':');\n            mins = parseInt(exploded[1], 10);\n            hours = parseInt(exploded[0], 10);\n        } else if (str.includes('.')) {\n            const exploded = str.split('.');\n            mins = parseInt(exploded[1], 10);\n            hours = parseInt(exploded[0], 10);\n        } else if (str.length >= 3) {\n            mins = parseInt(str.substring(str.length - 2, str.length), 10);\n            hours = parseInt(str.substring(0, str.length - 2), 10);\n        } else if (str === '') {\n            return '';\n        } else {\n            hours = parseInt(str, 10);\n            mins = 0;\n        }\n\n        if (isNaN(hours)) hours = 0;\n        if (isNaN(mins)) mins = 0;\n\n        if (hours < 0) hours *= -1;\n        if (hours > 23) hours = 23;\n        if (mins < 0) mins = 0;\n        if (mins > 60) mins = 59;\n\n        if (hours < 10) hours = '0' + hours;\n        if (mins < 10) mins = '0' + mins;\n\n        return '' + hours + ':' + mins;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class={{this.class}}>\\n    <TagInput\\n        @tags={{this.parsedTags}}\\n        @addTag={{this.addTag}}\\n        @removeTagAtIndex={{this.removeTagAtIndex}}\\n        @maxlength={{15}}\\n        @onKeyUp={{fn this.addTagIfImeiIsCorrect}}\\n        as |tag|>\\n        <span class=\\\"tag-input-imei {{if (not (is-equal (string-length tag) 15)) \\\"error\\\"}}\\\">\\n            {{tag}}\\n        </span>\\n    </TagInput>\\n</div>\\n\", {\"contents\":\"<div class={{this.class}}>\\n    <TagInput\\n        @tags={{this.parsedTags}}\\n        @addTag={{this.addTag}}\\n        @removeTagAtIndex={{this.removeTagAtIndex}}\\n        @maxlength={{15}}\\n        @onKeyUp={{fn this.addTagIfImeiIsCorrect}}\\n        as |tag|>\\n        <span class=\\\"tag-input-imei {{if (not (is-equal (string-length tag) 15)) \\\"error\\\"}}\\\">\\n            {{tag}}\\n        </span>\\n    </TagInput>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/fields/timeclean-imei.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/timeclean-imei.hbs\"}});\nimport FieldsTagInputComponent from './tag-input';\nimport { action } from '@ember/object';\nimport { A } from '@ember/array';\nimport MutableArray from '@ember/array/mutable';\n\nexport default class FieldsTimecleanImeiComponent extends FieldsTagInputComponent {\n    protected class: string = 'ember-movenium-timeclean-imei-field';\n\n    @action public onChange(tags: MutableArray<string>) {\n        return this.args.onChange(JSON.stringify(tags));\n    }\n\n    get parsedTags() {\n        let tags: MutableArray<string> = A([]);\n        if (typeof this.args.value === 'string') tags = A(JSON.parse(this.args.value));\n        else if (this.args.value) tags = A(this.args.value);\n        this.tags = tags;\n        return tags;\n    }\n\n    @action protected addTagIfImeiIsCorrect(tag: string) {\n        const tagAsNumber = parseInt(tag, 10);\n        if (!isNaN(tagAsNumber) && isFinite(tagAsNumber) && tag.length === 15) {\n            this.addTagToList(tag);\n            (document.querySelector('.' + this.class + ' input') as HTMLInputElement).value = '';\n        }\n    }\n\n    protected addTagToList(tag: string) {\n        this.tags.pushObject(tag);\n        this.onChange(this.tags as MutableArray<string>);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Input\\n    @type=\\\"text\\\"\\n    @name={{@name}}\\n    @value={{@value}}\\n    @class={{@class}}\\n    @disabled={{@disabled}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\", {\"contents\":\"<Input\\n    @type=\\\"text\\\"\\n    @name={{@name}}\\n    @value={{@value}}\\n    @class={{@class}}\\n    @disabled={{@disabled}}\\n    {{on 'change' (fn @onChange @value)}}\\n/>\",\"moduleName\":\"tt4/components/addon/fields/username.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/username.hbs\"}});\nimport Component from '@glimmer/component';\nexport default class FieldsUsernameComponent extends Component {}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div>\\n\\n    <div>\\n        {{#if this.gpsWeather}}\\n            {{#if this.weatherLoading}}\\n                <img src=\\\"img/ajax-loader.gif\\\" alt={{t \\\"general.loading\\\"}} /> {{t \\\"worksitediary.fetching_weather\\\"}}\\n            {{else}}\\n                <span class=\\\"move move-{{@value.weather}} weather-icon\\\"></span>\\n                    {{@value.temperature}}{{this.translations.temp}}, {{@value.windspeed}}{{this.translations.wspeed}}, {{@value.humidity}}{{this.translations.percent}}, {{t \\\"worksitediary.abbr_dew_point\\\"}}: {{@value.dew_point}}{{this.translations.temp}}\\n            {{/if}}\\n        {{/if}}\\n    </div>\\n    <div>\\n        <span class=\\\"weather-brand\\\">&#8212;{{t \\\"general.weather_provider\\\"}}</span>\\n    </div>\\n\\n    <br /><br />\\n</div>\", {\"contents\":\"<div>\\n\\n    <div>\\n        {{#if this.gpsWeather}}\\n            {{#if this.weatherLoading}}\\n                <img src=\\\"img/ajax-loader.gif\\\" alt={{t \\\"general.loading\\\"}} /> {{t \\\"worksitediary.fetching_weather\\\"}}\\n            {{else}}\\n                <span class=\\\"move move-{{@value.weather}} weather-icon\\\"></span>\\n                    {{@value.temperature}}{{this.translations.temp}}, {{@value.windspeed}}{{this.translations.wspeed}}, {{@value.humidity}}{{this.translations.percent}}, {{t \\\"worksitediary.abbr_dew_point\\\"}}: {{@value.dew_point}}{{this.translations.temp}}\\n            {{/if}}\\n        {{/if}}\\n    </div>\\n    <div>\\n        <span class=\\\"weather-brand\\\">&#8212;{{t \\\"general.weather_provider\\\"}}</span>\\n    </div>\\n\\n    <br /><br />\\n</div>\",\"moduleName\":\"tt4/components/addon/fields/weather.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/weather.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { fetchWeather } from 'tt4/ember-movenium/utils/weather';\nimport GpsService from 'tt4/services/gps2';\n\ninterface IWeather {\n    gps: GpsService;\n    weatherLoading: boolean;\n    gpsWeather: boolean;\n    value: { [key: string]: string };\n    onChange(args0: JSON): void;\n    shouldAutomaticallyFetchNewWeather?: boolean;\n}\n\nexport default class FieldsWeatherComponent extends Component<IWeather> {\n    @tracked public weatherLoading: boolean = false;\n\n    protected translations = { temp: '°C', wspeed: 'm/s', percent: '%' };\n    @service('gps2' as any) declare gps: GpsService;\n\n    constructor(owner: unknown, args: IWeather) {\n        super(owner, args);\n        this.gps.start();\n    }\n\n    get gpsWeather(): Promise<any> | { [key: string]: string } | null {\n        if (this.args.shouldAutomaticallyFetchNewWeather === false) {\n            return this.args.value;\n            // return new Promise(resolve=>resolve(this.args.value))\n        }\n\n        if (this.gps.lockedPosition) {\n            this.weatherLoading = true;\n            const position = this.gps.lockedPosition;\n\n            return new Promise(async (resolve) => {\n                const weather = await fetchWeather(position.latitude, position.longitude);\n                this.weatherLoading = false;\n                this.args.onChange(weather);\n                resolve(weather);\n            });\n        } else {\n            return this.args.value;\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Collector::Fields::WorkPermitAttachment\\n    @model={{@record}}\\n    @field={{@field}}\\n    @bubbleChange={{@onChange}}\\n/>\\n\", {\"contents\":\"<Collector::Fields::WorkPermitAttachment\\n    @model={{@record}}\\n    @field={{@field}}\\n    @bubbleChange={{@onChange}}\\n/>\\n\",\"moduleName\":\"tt4/components/addon/fields/work-permit-attachment.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/fields/work-permit-attachment.hbs\"}});\nimport Component from '@glimmer/component';\n\nexport default class CollectorFieldsWorkPermitAttachmentComponent extends Component {\n\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<DumpDev @text=\\\"addon form-add migrated to tt4\\\" />\\n{{#if this.savedView}}\\n    {{#if (has-block)}}\\n        {{yield\\n            (hash\\n                Saved=(component\\n                    \\\"addon/form-add/saved\\\"\\n                    record=(readonly @record)\\n                    fields=this.fields\\n                    close=(fn this.close)\\n                    edit=(fn (mut this.savedView) false)\\n                    addSame=@addSame\\n                    addNew=@addNew\\n                    closeSaved=(fn (mut this.savedView) false)\\n                )\\n            )\\n        }}\\n    {{else}}\\n        <Addon::FormAdd::Saved\\n            @record={{@record}}\\n            @fields={{this.fields}}\\n            @close={{this.close}}\\n            @edit={{fn (mut this.savedView) false}}\\n            @addSame={{@addSame}}\\n            @addNew={{@addNew}}\\n            @closeSaved={{fn (mut this.savedView) false}}\\n        />\\n    {{/if}}\\n{{else if readyToRenderFields}}\\n    {{#if (has-block)}}\\n        {{yield\\n            (hash\\n                Fields=(component\\n                    \\\"addon/form-add/fields\\\"\\n                    fields=this.visibleFields\\n                    stashedFields=this.stashedFields\\n                    record=(readonly (await @record))\\n                    filters=this.allFilters\\n                    onChange=this.onChange\\n                    disabled=@disabled\\n                    setDisabled=this.setDisabled\\n                )\\n                OnChange=this.onChange\\n            )\\n        }}\\n    {{else}}\\n\\n        <Addon::FormAdd::Fields\\n            @fields={{this.visibleFields}}\\n            @stashedFields={{this.stashedFields}}\\n            @record={{readonly (await @record)}}\\n            @onChange={{fn this.onChange}}\\n            @filters={{this.allFilters}}\\n            @disabled={{@disabled}}\\n            @setDisabled={{this.setDisabled}}\\n            @placeholder={{@placeholder}}\\n        />\\n    {{/if}}\\n\\n    {{#if this.error}}\\n        <Addon::FormAdd::Error @error={{this.error}} />\\n    {{/if}}\\n\\n    {{#if (has-block)}}\\n        {{yield\\n            (hash\\n                Buttons=(component\\n                    \\\"addon/form-add/buttons\\\"\\n                    save=this.save\\n                    cancel=this.close\\n                    saving=this.saving\\n                    disabled=(or @disabled this.saveDisabled)\\n                    form=@form\\n                )\\n            )\\n        }}\\n    {{else}}\\n        <Addon::FormAdd::Buttons\\n            @saving={{this.saving}}\\n            @form={{@form}}\\n            @disabled={{or @disabled this.saveDisabled}}\\n            @save={{this.save}}\\n            @cancel={{this.close}}\\n        />\\n    {{/if}}\\n{{else}}\\n\\n    <LoaderIcon />\\n{{/if}}\", {\"contents\":\"<DumpDev @text=\\\"addon form-add migrated to tt4\\\" />\\n{{#if this.savedView}}\\n    {{#if (has-block)}}\\n        {{yield\\n            (hash\\n                Saved=(component\\n                    \\\"addon/form-add/saved\\\"\\n                    record=(readonly @record)\\n                    fields=this.fields\\n                    close=(fn this.close)\\n                    edit=(fn (mut this.savedView) false)\\n                    addSame=@addSame\\n                    addNew=@addNew\\n                    closeSaved=(fn (mut this.savedView) false)\\n                )\\n            )\\n        }}\\n    {{else}}\\n        <Addon::FormAdd::Saved\\n            @record={{@record}}\\n            @fields={{this.fields}}\\n            @close={{this.close}}\\n            @edit={{fn (mut this.savedView) false}}\\n            @addSame={{@addSame}}\\n            @addNew={{@addNew}}\\n            @closeSaved={{fn (mut this.savedView) false}}\\n        />\\n    {{/if}}\\n{{else if readyToRenderFields}}\\n    {{#if (has-block)}}\\n        {{yield\\n            (hash\\n                Fields=(component\\n                    \\\"addon/form-add/fields\\\"\\n                    fields=this.visibleFields\\n                    stashedFields=this.stashedFields\\n                    record=(readonly (await @record))\\n                    filters=this.allFilters\\n                    onChange=this.onChange\\n                    disabled=@disabled\\n                    setDisabled=this.setDisabled\\n                )\\n                OnChange=this.onChange\\n            )\\n        }}\\n    {{else}}\\n\\n        <Addon::FormAdd::Fields\\n            @fields={{this.visibleFields}}\\n            @stashedFields={{this.stashedFields}}\\n            @record={{readonly (await @record)}}\\n            @onChange={{fn this.onChange}}\\n            @filters={{this.allFilters}}\\n            @disabled={{@disabled}}\\n            @setDisabled={{this.setDisabled}}\\n            @placeholder={{@placeholder}}\\n        />\\n    {{/if}}\\n\\n    {{#if this.error}}\\n        <Addon::FormAdd::Error @error={{this.error}} />\\n    {{/if}}\\n\\n    {{#if (has-block)}}\\n        {{yield\\n            (hash\\n                Buttons=(component\\n                    \\\"addon/form-add/buttons\\\"\\n                    save=this.save\\n                    cancel=this.close\\n                    saving=this.saving\\n                    disabled=(or @disabled this.saveDisabled)\\n                    form=@form\\n                )\\n            )\\n        }}\\n    {{else}}\\n        <Addon::FormAdd::Buttons\\n            @saving={{this.saving}}\\n            @form={{@form}}\\n            @disabled={{or @disabled this.saveDisabled}}\\n            @save={{this.save}}\\n            @cancel={{this.close}}\\n        />\\n    {{/if}}\\n{{else}}\\n\\n    <LoaderIcon />\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/form-add.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-add.hbs\"}});\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action, set, computed } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { isArray } from '@ember/array';\nimport DS from 'ember-data';\nimport FormsService from 'tt4/injections/services/forms';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport { IFormField, IField, IOptions } from 'tt4/ember-movenium/interfaces/forms';\nimport { save_record } from 'tt4/ember-movenium/utils/save-the-children';\nimport { isVisible } from 'tt4/ember-movenium/utils/validations';\nimport { notifyPropertyChange } from '@ember/object';\nimport moment from 'moment';\nimport NeedsService from 'tt4/injections/services/need';\nimport EventedService from 'tt4/injections/services/need';\nimport SurveysService from 'tt4/injections/services/surveys';\nimport AnalyticsService from 'tt4/injections/services/analytics';\n\ninterface IFormAdd {\n    filters: { [key: string]: string };\n    saving: boolean;\n    form: string;\n    error: [] | object | null;\n    stateBeforeSave: string;\n    only?: string;\n    defaults?: object;\n    showSaved?: boolean;\n    disabled?: boolean;\n    record: IRecord;\n    sortFields: boolean;\n    preserveRecordOnDestroy?: boolean;\n    onFieldChange(value: any, fieldName: string, record: object): void;\n    save(): Promise<any>;\n    close?(ExtraInfo?: any): void;\n    rowAdded?(arg0: IRecord): void;\n    rowEdited?(args0: IRecord): void;\n}\n\n/**\n *\n * report for collector form\n *\n * usage: <br>\n *  BASIC: <br>\n * ```hbs\n *<Addon::FormAdd @form=\"worktime\" />\n * ```\n *\n *  ADVANCED:\n * ```hbs\n <Addon::FormAdd @form={{this.form}} @record={{this.record}} @close={{fn (mut show) false}} as |form|>\n <form.fields as |fields fieldComponent|>\n {{#each fields as |field|}}\n {{fieldComponent field=field}}\n {{/each}}\n </form.fields>\n <form.buttons />\n </Addon::FormAdd>\n *```\n * ```\n * parameters:\n *      form: collector form name\n *      record: record for the add form\n *      defaults: if record is not given directly (or record is new) you can also give object which is passed to createRecord method\n *      showSaved: if saved page should be shown\n *      only: list columns you want to show (ie \"date,user\")\n *      filters: object containing filters for fields. ie filters=(hash user=(userlevel=\"5\"))\n * ```\n * ```\n * actions:\n *      rowAdded: called when new row is created and saved\n *      rowEdited: called when existing row is edited and saved\n *      close: called when cancel is clicked or saved page ok is clicked\n *      fieldChanged: when any field is edited on form action is triggered. Has parameters value and field\n * ```\n * @class FormAddComponent\n * @constructor\n *\n */\n\nexport default class FormAddComponent extends Component<IFormAdd> {\n    @tracked public saving = false;\n    @tracked public error = null;\n    @tracked public stateBeforeSave = '';\n    @tracked public savedView: boolean = false;\n    @tracked public filters: any = {};\n    @tracked public addingMethod: string = '';\n    public sortFields: boolean = false;\n\n    @tracked public form = '';\n    @tracked private saveButtonDisabled: boolean = false;\n    @tracked public readyToRenderFields = false;\n    @service private store!: DS.Store;\n    @service protected forms: FormsService;\n    @service protected need: NeedsService;\n    @service private evented: EventedService;\n    @service private surveys: SurveysService;\n    @service private analytics: AnalyticsService;\n\n    @service('gps2' as any) private gps: any;\n\n    constructor(owner: unknown, args: IFormAdd) {\n        super(owner, args);\n        this.doTheseBeforeRenderingFields();\n    }\n\n    private async doTheseBeforeRenderingFields() {\n        this.setConditionalFieldProperties();\n        await this.setFilters();\n\n        set(this, 'readyToRenderFields', true);\n    }\n\n    public willDestroy() {\n        // if record is new (and preserveRecordOnDestroy is not set) we just destoy it\n        // if we were editing record we rollback it to make sure record is not left in unsaved state when we destroy this component (preserveRecordOnDestroy skips this also)\n        if (!this.args.preserveRecordOnDestroy && this.args.record && this.args.record.isNew)\n            this.args.record.deleteRecord();\n        else if (\n            !this.args.preserveRecordOnDestroy &&\n            !this.args.record.isNew &&\n            this.args.record.hasDirtyAttributes\n        )\n            this.args.record.rollbackAttributes();\n    }\n\n    // _hide is used by conditionalHides\n    protected get visibleFields(): IFormField[] {\n        // we need to set conditional fields again because they might have changed\n        this.setConditionalFieldProperties();\n        return this.fields.filter((field: IFormField) => !field._hide && !field.features?.stashed);\n    }\n\n    protected get stashedFields(): IFormField[] {\n        return this.fields.filter((field: IFormField) => field.features?.stashed);\n    }\n\n    @action\n    public async onChange(fieldName: string, value: any) {\n        // For some reason dropdowns sends value as undefined when field is cleared. If record field is set to undefined .save method\n        // does not make any changes to the field .. so we need to check if value is undefined and if so set it to null\n        if (typeof value === 'undefined') value = null;\n\n        // in some cases onFiledChange is async so we need to wait for the record to be saved with the new value\n        // ie location field needs to be updated after project is saved to record, so we get correct distance\n        await this.args.onFieldChange(fieldName, value, this.args.record);\n\n        // create event so that other components can listen to it\n        this.evented.formAddFieldChanged(fieldName, value);\n\n        this.changeFilter(fieldName, value);\n        // this is a dirty, filthy hack (also not ddau) for marking a record dirty when its relationships (belongsTo, hasMany) are changed\n        // this is done here as a workaround so you don't need to do this in the parent component every time\n        // https://github.com/emberjs/rfcs/pull/21\n        (await this.args.record).send('becomeDirty');\n        const errors = this.args.record?.errors as any | null;\n        if (errors?.has(fieldName) && value) errors.remove(fieldName);\n        this.setConditionalFieldProperties(fieldName);\n        notifyPropertyChange(this, 'visibleFields');\n    }\n\n    @action\n    public setDisabled(disabled: boolean): void {\n        this.saveButtonDisabled = disabled;\n    }\n\n    @action\n    public async save(): Promise<any> {\n        const record = this.args.record;\n\n        this.saving = true;\n        this.error = null;\n        this.stateBeforeSave = this.args.record.currentState.stateName;\n        let isRecordNew = this.args.record.isNew;\n\n        try {\n            await record.validate();\n\n            if (!record.isValid) {\n                const firstErrorElement = document.querySelector('.has-error');\n                if (firstErrorElement) firstErrorElement.scrollIntoView({ behavior: 'smooth' });\n                return (this.saving = false);\n            }\n\n            await save_record(record, this); // save-the-children util\n\n            // track event to analytics\n            if (this.analytics.customData?.category) {\n                this.analytics.trackEvent({\n                    category: this.analytics.customData['category'],\n                    action: 'Save worktime',\n                    label: this.args.form,\n                });\n            }\n\n            this.evented.storeEvent('insert', this.args.form, record);\n\n            if (this.args.showSaved === false) {\n                if (this.args.close) this.close('AfterSave');\n            } else {\n                this.savedView = true;\n            }\n\n            if (this.stateBeforeSave === 'root.loaded.created.uncommitted') {\n                if (this.args.rowAdded) this.args.rowAdded(this.args.record);\n            } else {\n                if (this.args.rowEdited) this.args.rowEdited(this.args.record);\n            }\n\n            this.saving = false;\n\n            if (this.args.form == 'worktime' && isRecordNew) {\n                this.surveys.initializeAndRun('worktime_entry'); // show wootric CES-survey after saving new worktime\n            }\n        } catch (reason) {\n            this.saving = false;\n            this.error = reason;\n        }\n    }\n\n    @action\n    public close(ExtraInfo: any): void {\n        // Rollback changes on form if form is closed without saving\n        if (ExtraInfo !== 'AfterSave') {\n            this.args.record.rollbackAttributes();\n        }\n        // if this.analytics.customData.category is set, clear it after closing the form\n        if (this.analytics.customData?.category) {\n            this.analytics.initCustomData();\n        }\n        // @ts-ignore\n        this.args.close?.(ExtraInfo);\n    }\n\n    // You may be wondering: 'Why @computed!1!??'\n    // We need to cache the form and only recalculate fields if/when it changes,\n    // otherwise this will update basically every time a field is changed and cause side-effects, ie database field will requery options\n    // @computed because we don't have @cached yet\n    @computed('args.form', 'args.only', 'filters', 'args.record')\n    get fields() {\n        const fields = this.forms.fieldArray(this.args.form);\n        let filteredFields = fields.filter((field: IFormField) => {\n            if (this.args.only && !this.args.only.split(',').includes(field.name)) return false;\n\n            // Always \"show\" fields that are conditionally hidden, this conditionality is handled elsewhere\n            if (field.features?.hide && isArray(field.features.hide)) return true;\n            if (\n                field.features?.hide &&\n                typeof field.features?.hide === 'object' &&\n                field.features?.hide.condition\n            ) {\n                if ([\"'$editing'\", '$editing'].includes(field.features.hide.condition)) {\n                    // hide if editing\n                    if (!this.args.record?.isNew) return false; // editing\n                    else return true;\n                }\n                if ([\"'!$editing'\", '!$editing'].includes(field.features.hide.condition)) {\n                    // hide if adding\n                    if (!!this.args.record?.isNew) return false; // adding\n                    else return true;\n                }\n                return false; // otherwise hide\n            }\n            if (field.features?.hide) return false; // unconditional hide\n            if (field.features?.hide_tt4) return false;\n            if (field.features?.mandatory && !isArray(field.features.mandatory))\n                field.mandatory = field.features.mandatory as boolean;\n\n            return true;\n        });\n        // @ts-ignore\n        filteredFields = filteredFields.map((field) => {\n            if (field.name === 'location' || field.name === 'end_location')\n                field.forceType = 'gpslocation';\n            if (field.name === 'location_map') field.forceType = 'gpslocationmap';\n            if (\n                field.type === 'database' &&\n                field.options?.form === 'project' &&\n                this.useForcedGpsField(field)\n            )\n                field.forceType = 'database-gps-force-field';\n\n            if (\n                !!this.args.record &&\n                !!this.args.record.isNew &&\n                field.features?.default_value &&\n                this.args.record[field.name] == null\n            ) {\n                this.onChange(field.name, this.getDefaultValue(field));\n            }\n\n            return field;\n        });\n\n        if (this.args.sortFields) {\n            // @ts-ignore\n            return filteredFields.sort((a, b): number => {\n                if (a.name < b.name) {\n                    return -1;\n                } else {\n                    return 1;\n                }\n            });\n        } else {\n            return filteredFields;\n        }\n    }\n\n    private useForcedGpsField(field: IFormField): boolean {\n        if (!this.need.test('userlevel=1')) return false;\n        if (\n            this.forms.fieldExists('project', 'force_location') &&\n            ['worktime', 'presence'].includes(field.form)\n        )\n            return true;\n        return false;\n    }\n\n    private getDefaultValue(field: IFormField) {\n        const defaultValue = field.features?.default_value;\n\n        if (field.type === 'date') {\n            if (defaultValue === 'today') {\n                return moment().format('YYYY-MM-DD');\n            } else if (defaultValue === 'yesterday') {\n                return moment().subtract(1, 'day').format('YYYY-MM-DD');\n            }\n        }\n        if (typeof defaultValue === 'object') {\n            return defaultValue.value;\n        }\n\n        return defaultValue;\n    }\n\n    private async setFilters() {\n        const filterBy = this.getFilters(this.args.form);\n        const filters: any = {};\n        await this.args.record;\n        filterBy.forEach((item: any) => {\n            if (!filters[item.field]) filters[item.field] = {};\n            filters[item.field][item.filter] = this.args.record\n                ? this.args.record[item.with]\n                : null;\n        });\n\n        const parsedFilters: any = {};\n        Object.keys(filters).forEach((key: string) => {\n            parsedFilters[key] = filters[key];\n        });\n\n        set(this, 'filters', parsedFilters);\n    }\n\n    get allFilters() {\n        if (this.args.filters) {\n            Object.keys(this.args.filters).forEach((key: string) => {\n                // if there are external filters and capi-filters, we merge them together\n                if (this.filters[key]) {\n                    set(\n                        this,\n                        // @ts-ignore\n                        'filters.' + key,\n                        Object.assign(this.filters[key], this.args.filters[key]),\n                    );\n                } else {\n                    // @ts-ignore\n                    set(this, 'filters.' + key, this.args.filters[key]);\n                }\n            });\n        }\n        return this.filters;\n    }\n\n    /**\n     * this method is called when ever field value is changed on form\n     * 1) fetch all filters that are dependent on field (filter.with) that was changed\n     * 2) set all filter values with new value ie this.filters + (item.field) + (item.filter) = value\n     *\n     * example:\n     *  getFilters returns [{field: 'subtaskname', filter: 'task', with: 'taskname'}]\n     *\n     *  -> if field taskname is changed -> set this.filters.subtaskname.task = value\n     *\n     * @param field\n     * @param value\n     */\n    private changeFilter(field: string, value: any) {\n        const dependentFilters = this.getFilters(this.args.form).filter(\n            (item: any) => item.with === field,\n        );\n\n        dependentFilters.forEach((item: any) => {\n            const clone = Object.assign({}, this.filters[item.field]); // object must be cloned so set triggers all the right observers\n            clone[item.filter] = value; // set the new value for the filter\n            // @ts-ignore\n            set(this, 'filters.' + item.field, clone);\n        });\n    }\n\n    /**\n     * Example of one filter {field: \"task\", filter: \"project\", with: \"project\"}\n     * @method\n     * @param {string} form\n     * @return {object}\n     * @private\n     */\n    private getFilters(form: string) {\n        const filters = [];\n        const fields: IFormField[] = this.forms.fieldArray(form);\n        for (const field of fields) {\n            let reload = field.features?.reload;\n            if (reload) {\n                if (!isArray(reload)) reload = [reload];\n\n                for (const reloadfield of reload as any) {\n                    filters.push({\n                        // field name that needs to be reloaded\n                        field: reloadfield,\n                        // filter name that is used to fetch objects.\n                        // Normally the form where reloader field points to. ie tasks?project=1234 => project\n                        filter: field.options?.form,\n                        // name of the field to use as filter .. this needs to found from model\n                        with: field.name,\n                    });\n                }\n            }\n        }\n\n        return filters;\n    }\n\n    private get conditionalFields(): IField[] {\n        return this.fields.filter((field: IField) => {\n            return (\n                (field.features?.hide && isArray(field.features.hide)) ||\n                (field.features?.mandatory && isArray(field.features.mandatory))\n            );\n        });\n    }\n\n    // We may have 6 database fields all setting 'saveButtonDisabled' to false\n    // we only care about cases where it actually changes so we cache with computed\n    @computed('saveButtonDisabled', 'saving', 'args.disabled')\n    protected get saveDisabled(): boolean {\n        return this.saveButtonDisabled || this.args.disabled || this.saving;\n    }\n\n    /**\n     * Hide or show fields if field.features.hide setting is conditional <br>\n     * If called without field parameter then goes through all fields that have some kind of conditional setting\n     * else only for the given field name <br>\n     * Sets true/false to fields \"private\" _hide variable that is used atleast in form-add/field component <br>\n     * Examples: <br>\n     * `Name: hide, Value: [{\"alasveto\": \"eka\"}]` <br>\n     * `Name: hide, Value: [{\"alasveto\": \"!(empty)\"}]` <br>\n     * `Name: hide, Value: [{\"alasveto\": \"(empty)\"}]`\n     * @method\n     * @param {string} field the external type of the field also known as \"name\"\n     * @return {void}\n     * @private\n     */\n    private setConditionalFieldProperties(field: string | boolean = false): void {\n        this.conditionalFields.forEach((item) => {\n            // Conditional Hide\n            if (item.features?.hide) {\n                (item.features?.hide as [{}]).forEach((rule) => {\n                    let ruleField = Object.keys(rule)[0].split('.')[0];\n                    if ((field && ruleField.includes(field as any)) || !field) {\n                        item._hide = !isVisible(this.args.record, item.features?.hide as IOptions);\n                    }\n                });\n            }\n\n            // Conditional Mandatory\n            if (item.features?.mandatory) {\n                (item.features?.mandatory as [{}]).forEach(() => {\n                    set(\n                        item,\n                        'mandatory',\n                        isVisible(this.args.record, item.features?.mandatory as IOptions),\n                    );\n                });\n            }\n        });\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-form-button-group\\\">\\n<Addon::LoadingButton @disabled={{if @disabled @disabled @saving}} @loading={{@saving}} @onClick={{@save}} @name=\\\"save-button\\\" @form={{@form}}>{{t \\\"general.save\\\"}}</Addon::LoadingButton>\\n<button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-cancel-button\\\" {{on 'click' @cancel}} name=\\\"cancel-button\\\" data-anchor={{concat @form \\\"-cancel-button\\\"}}>{{t \\\"general.cancel\\\"}}</button>\\n</div>\\n\", {\"contents\":\"<div class=\\\"ember-movenium-form-button-group\\\">\\n<Addon::LoadingButton @disabled={{if @disabled @disabled @saving}} @loading={{@saving}} @onClick={{@save}} @name=\\\"save-button\\\" @form={{@form}}>{{t \\\"general.save\\\"}}</Addon::LoadingButton>\\n<button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-cancel-button\\\" {{on 'click' @cancel}} name=\\\"cancel-button\\\" data-anchor={{concat @form \\\"-cancel-button\\\"}}>{{t \\\"general.cancel\\\"}}</button>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/form-add/buttons.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-add/buttons.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-form-add-error\\\">\\n    <Addon::CollectorErrorMessage @error={{@error}} />\\n</div>\", {\"contents\":\"<div class=\\\"ember-movenium-form-add-error\\\">\\n    <Addon::CollectorErrorMessage @error={{@error}} />\\n</div>\",\"moduleName\":\"tt4/components/addon/form-add/error.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-add/error.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if (has-block)}}\\n    {{yield\\n        @fields\\n        (component\\n            \\\"addon/field-container\\\"\\n            filters=@filters\\n            setDisabled=@setDisabled\\n            disabled=@disabled\\n        )\\n    }}\\n{{else}}\\n\\n    {{#each @fields as |Field|}}\\n        <Addon::FieldContainer\\n            @field={{Field.name}}\\n            @form={{Field.form}}\\n            @forceType={{Field.forceType}}\\n            @record={{readonly @record}}\\n            @value={{get (await @record) Field.name}}\\n            @onChange={{fn @onChange Field.name}}\\n            @filters={{@filters}}\\n            @disabled={{if\\n                (and (get @filters Field.name) @disabled)\\n                true\\n                false\\n            }}\\n            @mandatory={{Field.mandatory}}\\n            @setDisabled={{@setDisabled}}\\n            @placeholder={{@placeholder}}\\n        />\\n    {{/each}}\\n\\n{{/if}}\\n\\n{{#if @stashedFields.length}}\\n    <Addon::Accordion @class=\\\"ember-movenium-form-add-accordion\\\" as |Acc|>\\n        <Acc.Item\\n            @showTitle={{t \\\"general.add.show_stashed\\\"}}\\n            @hideTitle={{t \\\"general.add.hide_stashed\\\"}}\\n        >\\n            {{#each @stashedFields as |Field|}}\\n                <Addon::FieldContainer\\n                    @field={{Field.name}}\\n                    @form={{Field.form}}\\n                    @forceType={{Field.forceType}}\\n                    @record={{readonly @record}}\\n                    @value={{get (await @record) Field.name}}\\n                    @onChange={{fn @onChange Field.name}}\\n                    @filters={{@filters}}\\n                    @disabled={{if\\n                        (and (get @filters Field.name) @disabled)\\n                        true\\n                        false\\n                    }}\\n                    @mandatory={{Field.mandatory}}\\n                    @setDisabled={{@setDisabled}}\\n                    @placeholder={{@placeholder}}\\n                />\\n            {{/each}}\\n        </Acc.Item>\\n    </Addon::Accordion>\\n{{/if}}\", {\"contents\":\"{{#if (has-block)}}\\n    {{yield\\n        @fields\\n        (component\\n            \\\"addon/field-container\\\"\\n            filters=@filters\\n            setDisabled=@setDisabled\\n            disabled=@disabled\\n        )\\n    }}\\n{{else}}\\n\\n    {{#each @fields as |Field|}}\\n        <Addon::FieldContainer\\n            @field={{Field.name}}\\n            @form={{Field.form}}\\n            @forceType={{Field.forceType}}\\n            @record={{readonly @record}}\\n            @value={{get (await @record) Field.name}}\\n            @onChange={{fn @onChange Field.name}}\\n            @filters={{@filters}}\\n            @disabled={{if\\n                (and (get @filters Field.name) @disabled)\\n                true\\n                false\\n            }}\\n            @mandatory={{Field.mandatory}}\\n            @setDisabled={{@setDisabled}}\\n            @placeholder={{@placeholder}}\\n        />\\n    {{/each}}\\n\\n{{/if}}\\n\\n{{#if @stashedFields.length}}\\n    <Addon::Accordion @class=\\\"ember-movenium-form-add-accordion\\\" as |Acc|>\\n        <Acc.Item\\n            @showTitle={{t \\\"general.add.show_stashed\\\"}}\\n            @hideTitle={{t \\\"general.add.hide_stashed\\\"}}\\n        >\\n            {{#each @stashedFields as |Field|}}\\n                <Addon::FieldContainer\\n                    @field={{Field.name}}\\n                    @form={{Field.form}}\\n                    @forceType={{Field.forceType}}\\n                    @record={{readonly @record}}\\n                    @value={{get (await @record) Field.name}}\\n                    @onChange={{fn @onChange Field.name}}\\n                    @filters={{@filters}}\\n                    @disabled={{if\\n                        (and (get @filters Field.name) @disabled)\\n                        true\\n                        false\\n                    }}\\n                    @mandatory={{Field.mandatory}}\\n                    @setDisabled={{@setDisabled}}\\n                    @placeholder={{@placeholder}}\\n                />\\n            {{/each}}\\n        </Acc.Item>\\n    </Addon::Accordion>\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/form-add/fields.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-add/fields.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"\\n<div class=\\\"ember-movenium-form-add-saved\\\">\\n    <ul class=\\\"ember-movenium-list-group\\\">\\n        <h2 class=\\\"title\\\">{{t \\\"saved.title\\\"}}</h2>\\n        {{#if (has-block)}}\\n            {{yield (hash Fields=@fields Record=@record)}}\\n        {{else}}\\n            {{#each @fields as |field|}}\\n                <li class=\\\"ember-movenium-list-group-item\\\">\\n                    <b>{{translate-column form=field.form field=field.name}}: </b>\\n                    <Addon::ValueFormat @form={{field.form}} @field={{field.name}} @value={{get @record field.name}} />\\n                </li>\\n            {{/each}}\\n        {{/if}}\\n    </ul>\\n\\n    <button type=\\\"button\\\" class=\\\"ember-movenium-button large ember-movenium-save-button \\\" {{on 'click' @close}} data-anchor=\\\"saved-button-ok\\\">{{t \\\"general.ok\\\"}}</button>\\n\\n    <hr>\\n    <h4>{{t \\\"saved.what_next\\\"}}</h4>\\n    <div class=\\\"ember-movenium-saved-next-actions\\\">\\n        {{#if @addNew}}\\n            <button type=\\\"button\\\" class=\\\"ember-movenium-saved-next-button\\\" {{on 'click' @addNew}} {{on 'click' @closeSaved}} title={{t \\\"saved.addNew\\\"}} data-anchor=\\\"saved-button-addnew\\\">\\n                {{svg-jar \\\"PlusMath\\\" width=\\\"30px\\\"}}\\n            </button>\\n        {{/if}}\\n        {{#if @addSame}}\\n            <button type=\\\"button\\\" class=\\\"ember-movenium-saved-next-button\\\" {{on 'click' @addSame}} {{on 'click' @closeSaved}} title={{t \\\"saved.addSame\\\"}} data-anchor=\\\"saved-button-addsame\\\">\\n                {{svg-jar \\\"CopyRow\\\" width=\\\"30px\\\"}}\\n            </button>\\n        {{/if}}\\n        {{#if @edit}}\\n            <button type=\\\"button\\\" class=\\\"ember-movenium-saved-next-button\\\" {{on 'click' @edit}} title={{t \\\"saved.edit_new\\\"}} data-anchor=\\\"saved-button-edit\\\">\\n                {{svg-jar \\\"MovePencil\\\" width=\\\"30px\\\"}}\\n            </button>\\n        {{/if}}\\n    </div>\\n</div>\\n\", {\"contents\":\"\\n<div class=\\\"ember-movenium-form-add-saved\\\">\\n    <ul class=\\\"ember-movenium-list-group\\\">\\n        <h2 class=\\\"title\\\">{{t \\\"saved.title\\\"}}</h2>\\n        {{#if (has-block)}}\\n            {{yield (hash Fields=@fields Record=@record)}}\\n        {{else}}\\n            {{#each @fields as |field|}}\\n                <li class=\\\"ember-movenium-list-group-item\\\">\\n                    <b>{{translate-column form=field.form field=field.name}}: </b>\\n                    <Addon::ValueFormat @form={{field.form}} @field={{field.name}} @value={{get @record field.name}} />\\n                </li>\\n            {{/each}}\\n        {{/if}}\\n    </ul>\\n\\n    <button type=\\\"button\\\" class=\\\"ember-movenium-button large ember-movenium-save-button \\\" {{on 'click' @close}} data-anchor=\\\"saved-button-ok\\\">{{t \\\"general.ok\\\"}}</button>\\n\\n    <hr>\\n    <h4>{{t \\\"saved.what_next\\\"}}</h4>\\n    <div class=\\\"ember-movenium-saved-next-actions\\\">\\n        {{#if @addNew}}\\n            <button type=\\\"button\\\" class=\\\"ember-movenium-saved-next-button\\\" {{on 'click' @addNew}} {{on 'click' @closeSaved}} title={{t \\\"saved.addNew\\\"}} data-anchor=\\\"saved-button-addnew\\\">\\n                {{svg-jar \\\"PlusMath\\\" width=\\\"30px\\\"}}\\n            </button>\\n        {{/if}}\\n        {{#if @addSame}}\\n            <button type=\\\"button\\\" class=\\\"ember-movenium-saved-next-button\\\" {{on 'click' @addSame}} {{on 'click' @closeSaved}} title={{t \\\"saved.addSame\\\"}} data-anchor=\\\"saved-button-addsame\\\">\\n                {{svg-jar \\\"CopyRow\\\" width=\\\"30px\\\"}}\\n            </button>\\n        {{/if}}\\n        {{#if @edit}}\\n            <button type=\\\"button\\\" class=\\\"ember-movenium-saved-next-button\\\" {{on 'click' @edit}} title={{t \\\"saved.edit_new\\\"}} data-anchor=\\\"saved-button-edit\\\">\\n                {{svg-jar \\\"MovePencil\\\" width=\\\"30px\\\"}}\\n            </button>\\n        {{/if}}\\n    </div>\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/form-add/saved.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-add/saved.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<DumpDev @text=\\\"addon form-report-filters migrated to tt4\\\" />\\n\\n<div class=\\\"tt4-addon-filters flex-column filter-comp-component\\\">\\n    {{#each this.filters as |filter|}}\\n        <div class=\\\"flex-filter\\\" data-anchor={{concat filter.data_name '-filter'}}>\\n            <span class=\\\"filter-label\\\" data-anchor={{concat filter.data_name '-filter-title'}}>{{filter.label}}</span>\\n            {{#if (is-equal 'date' filter.type)}}\\n                <DateRangePicker\\n                    @clearBtn={{not-eq filter.features.use_index \\\"index1\\\"}}\\n                    @start={{filter.start}}\\n                    @fieldName={{filter.name}}\\n                    @end={{filter.end}}\\n                    @value={{filter.value}}\\n                    @title={{filter.title}}\\n                    @wagePeriods={{true}}\\n                    @dateChange={{fn this.filterChange filter.customfield}} />\\n            {{else if (and (is-equal 'database' filter.type) @useMultiFilter (not filter.customfield))}}\\n                <DatabaseMultipleFilter\\n                    @filter={{filter}}\\n                    @value={{filter.value}}\\n                    @change={{fn this.filterChange filter.customfield}}\\n                    @allFilters={{this.filters}} />\\n            {{else if (is-equal 'searchbox' filter.type)}}\\n                 <SearchBox\\n                     @value={{filter.value}}\\n                     @change={{fn this.filterChange filter.customfield}} />\\n            {{else if (is-equal 'groupBy' filter.type)}}\\n                 <Addon::GroupbyFilter\\n                     @value={{filter.value}}\\n                     @form={{filter.form}}\\n                     @filterChange={{fn this.filterChange 'groupBy'}} />\\n            {{else if (is-equal 'databasearray' filter.type)}}\\n                <Collector::FieldComp\\n                    @value={{filter.value}}\\n                    @prompt={{filter.prompt}}\\n                    @field={{filter}}\\n                    @change={{fn this.filterChange filter.customfield}}\\n                    @useAsFilter={{true}}\\n                    @showEmptySelection={{includes filter.name this.showEmptySelection}} />\\n            {{else}}\\n                <Collector::FieldComp\\n                    @field={{filter}}\\n                    @change={{fn this.filterChange filter.customfield}}\\n                    @useAsFilter={{true}}\\n                    @showEmptySelection={{includes filter.name this.showEmptySelection}} />\\n            {{/if}}\\n            {{#if filter.removable}}\\n                <span role=\\\"button\\\"\\n                      class=\\\"remove-filter move move-Delete\\\"\\n                      name=\\\"remove-filter\\\"\\n                      data-anchor={{concat \\\"remove-\\\" filter.data_name \\\"-filter\\\"}}\\n                    {{on 'click' (fn this.hideFilter filter) }}></span>\\n            {{/if}}\\n        </div>\\n    {{/each}}\\n\\n    {{#if (has-block)}}\\n        {{yield (fn this.filterChange null)}}\\n    {{/if}}\\n\\n    {{#if (not (is-empty this.filters))}}\\n        {{#if this.showAddFiltersButton}}\\n            <div class=\\\"flex-filter filter-btn dropdown\\\">\\n                <button class=\\\"btn btn-primary add-filters-button\\\" type=\\\"button\\\" name=\\\"add-filters\\\" data-anchor=\\\"report-add-filters\\\" {{on 'click' (fn (mut this.showFilterOptions)(not this.showFilterOptions))}}>\\n                    <span class=\\\"move move-Plus pr-2\\\"></span>{{t \\\"filters.add_new\\\"}}\\n                </button>\\n                {{#if this.showFilterOptions}}\\n                    <div class=\\\"dropdown-menu filter-options\\\" data-anchor=\\\"more-filters-options\\\">\\n                        {{#each this.hiddenFilters as |filter|}}\\n                            <li class=\\\"dropdown-item\\\" data-anchor={{concat \\\"more-filter-\\\" filter.label}} {{on 'click' (fn this.addFilter filter)}}>{{filter.label}}</li>\\n                        {{/each}}\\n                    </div>\\n                {{/if}}\\n            </div>\\n        {{/if}}\\n\\n        <div class=\\\"flex-filter filter-btn\\\" data-anchor=\\\"clear-filters\\\">\\n            <button type=\\\"button\\\" class=\\\"btn btn-secondary\\\" name=\\\"clear-filters\\\" {{on 'click' this.clearFilters}}>{{t \\\"filters.clear\\\"}}</button>\\n        </div>\\n    {{/if}}\\n\\n</div>\\n\", {\"contents\":\"<DumpDev @text=\\\"addon form-report-filters migrated to tt4\\\" />\\n\\n<div class=\\\"tt4-addon-filters flex-column filter-comp-component\\\">\\n    {{#each this.filters as |filter|}}\\n        <div class=\\\"flex-filter\\\" data-anchor={{concat filter.data_name '-filter'}}>\\n            <span class=\\\"filter-label\\\" data-anchor={{concat filter.data_name '-filter-title'}}>{{filter.label}}</span>\\n            {{#if (is-equal 'date' filter.type)}}\\n                <DateRangePicker\\n                    @clearBtn={{not-eq filter.features.use_index \\\"index1\\\"}}\\n                    @start={{filter.start}}\\n                    @fieldName={{filter.name}}\\n                    @end={{filter.end}}\\n                    @value={{filter.value}}\\n                    @title={{filter.title}}\\n                    @wagePeriods={{true}}\\n                    @dateChange={{fn this.filterChange filter.customfield}} />\\n            {{else if (and (is-equal 'database' filter.type) @useMultiFilter (not filter.customfield))}}\\n                <DatabaseMultipleFilter\\n                    @filter={{filter}}\\n                    @value={{filter.value}}\\n                    @change={{fn this.filterChange filter.customfield}}\\n                    @allFilters={{this.filters}} />\\n            {{else if (is-equal 'searchbox' filter.type)}}\\n                 <SearchBox\\n                     @value={{filter.value}}\\n                     @change={{fn this.filterChange filter.customfield}} />\\n            {{else if (is-equal 'groupBy' filter.type)}}\\n                 <Addon::GroupbyFilter\\n                     @value={{filter.value}}\\n                     @form={{filter.form}}\\n                     @filterChange={{fn this.filterChange 'groupBy'}} />\\n            {{else if (is-equal 'databasearray' filter.type)}}\\n                <Collector::FieldComp\\n                    @value={{filter.value}}\\n                    @prompt={{filter.prompt}}\\n                    @field={{filter}}\\n                    @change={{fn this.filterChange filter.customfield}}\\n                    @useAsFilter={{true}}\\n                    @showEmptySelection={{includes filter.name this.showEmptySelection}} />\\n            {{else}}\\n                <Collector::FieldComp\\n                    @field={{filter}}\\n                    @change={{fn this.filterChange filter.customfield}}\\n                    @useAsFilter={{true}}\\n                    @showEmptySelection={{includes filter.name this.showEmptySelection}} />\\n            {{/if}}\\n            {{#if filter.removable}}\\n                <span role=\\\"button\\\"\\n                      class=\\\"remove-filter move move-Delete\\\"\\n                      name=\\\"remove-filter\\\"\\n                      data-anchor={{concat \\\"remove-\\\" filter.data_name \\\"-filter\\\"}}\\n                    {{on 'click' (fn this.hideFilter filter) }}></span>\\n            {{/if}}\\n        </div>\\n    {{/each}}\\n\\n    {{#if (has-block)}}\\n        {{yield (fn this.filterChange null)}}\\n    {{/if}}\\n\\n    {{#if (not (is-empty this.filters))}}\\n        {{#if this.showAddFiltersButton}}\\n            <div class=\\\"flex-filter filter-btn dropdown\\\">\\n                <button class=\\\"btn btn-primary add-filters-button\\\" type=\\\"button\\\" name=\\\"add-filters\\\" data-anchor=\\\"report-add-filters\\\" {{on 'click' (fn (mut this.showFilterOptions)(not this.showFilterOptions))}}>\\n                    <span class=\\\"move move-Plus pr-2\\\"></span>{{t \\\"filters.add_new\\\"}}\\n                </button>\\n                {{#if this.showFilterOptions}}\\n                    <div class=\\\"dropdown-menu filter-options\\\" data-anchor=\\\"more-filters-options\\\">\\n                        {{#each this.hiddenFilters as |filter|}}\\n                            <li class=\\\"dropdown-item\\\" data-anchor={{concat \\\"more-filter-\\\" filter.label}} {{on 'click' (fn this.addFilter filter)}}>{{filter.label}}</li>\\n                        {{/each}}\\n                    </div>\\n                {{/if}}\\n            </div>\\n        {{/if}}\\n\\n        <div class=\\\"flex-filter filter-btn\\\" data-anchor=\\\"clear-filters\\\">\\n            <button type=\\\"button\\\" class=\\\"btn btn-secondary\\\" name=\\\"clear-filters\\\" {{on 'click' this.clearFilters}}>{{t \\\"filters.clear\\\"}}</button>\\n        </div>\\n    {{/if}}\\n\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/form-report-filters.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report-filters.hbs\"}});\nimport Component from '@glimmer/component';\nimport FormsService from 'tt4/injections/services/forms';\nimport Collector from 'tt4/injections/services/collector';\nimport { action, notifyPropertyChange } from '@ember/object';\nimport { IFormField } from 'tt4/ember-movenium/interfaces/forms';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { isEmpty, isPresent, typeOf } from '@ember/utils';\n\ninterface IFormReportFilters {\n    showColumns: string;\n    additional?: string;\n    form: string;\n    values: any;\n    filterOrder: any;\n    useMultiFilter?: boolean;\n    custParams?: string;\n    templateInUse?: any;\n    hideAdditionalFiltersButton?: boolean;\n    localStorageKey?: any;\n    change?(args0: any, args1: string): void;\n    filterChangeAction?(args0: any, args1: string): void;\n    clearFilters?(): void;\n}\n\nexport default class FormReportFiltersComponent\n    extends Component<IFormReportFilters>\n    implements IFormReportFilters\n{\n    public showEmptySelection = ['worktimegroup'];\n\n    @tracked public values: any = {};\n    @tracked public showColumns = '';\n    @tracked public filterOrder: any = [];\n    @tracked public showFilterOptions: any = false;\n    @tracked public hiddenFilters: any = [];\n    @tracked public addedFilters: any = [];\n\n    @service private forms: any;\n    @service('addon/collector' as any) private collector: any;\n    @service private intl: any;\n    @service private analytics: any;\n    @service private localstorage: any;\n    @service('collector-service' as any) private Collector: any;\n\n    constructor(owner: unknown, args: IFormReportFilters) {\n        super(owner, args);\n        // close more filters dropdown when clicking outside\n        window.onclick = (event: any) => {\n            if (!this.showFilterOptions) return;\n            const parentClassList = event.target.classList;\n            if (\n                parentClassList.contains('add-filters-button') ||\n                parentClassList.contains('dropdown-item') ||\n                parentClassList.contains('move-Plus')\n            )\n                return;\n            this.showFilterOptions = false;\n        };\n        //set added filters from ls if found\n        if (this.localstorage.getItem(this.args.localStorageKey + '_added_filtters')) {\n            this.addedFilters = this.localstorage.getItem(\n                this.args.localStorageKey + '_added_filtters',\n            );\n        }\n    }\n\n    get showAddFiltersButton() {\n        return (\n            this.hiddenFilters.length &&\n            !this.args.templateInUse &&\n            !this.args.hideAdditionalFiltersButton\n        );\n    }\n\n    get form() {\n        return this.args.form;\n    }\n\n    get filters(): IFormField[] {\n        const allowFilters = [\n            'date',\n            'database',\n            'dropdown_values',\n            'status',\n            'multiselect',\n            'dropdown_userlevel',\n            'databasearray',\n            'checkbox',\n            'timeclean_imei',\n        ];\n        // @ts-ignore\n        let fieldArray = this.forms.fieldArray(this.form).map((field) => {\n            if (field.type === 'datetime') field.type = 'date';\n            field.field = field.name;\n            return field;\n        });\n\n        fieldArray = fieldArray.filter((field: IFormField) => {\n            if (!allowFilters.includes(field.type)) return false;\n            if (field.features?.hide_filter) return false; // hide_filter feature hides filter\n            if (field.options?.form == 'trnotice') return false;\n\n            return true;\n        });\n        let splitParams: any = [];\n        if (this.args.custParams) {\n            splitParams = this.args.custParams.includes(':')\n                ? this.args.custParams.split(':')\n                : this.args.custParams.split('_');\n        }\n        // @ts-ignore\n        fieldArray.forEach((item, index) => {\n            if (!isEmpty(splitParams) && splitParams[0] === item.name)\n                fieldArray[index].value = this.args.values[this.args.custParams as string];\n            else fieldArray[index].value = this.getFilterValue(item.name);\n            fieldArray[index].label = this.collector.getTranslationForColumn(this.form, item.name);\n            fieldArray[index].prompt = this.intl.t('select.all');\n            fieldArray[index].data_name = item.form + '-' + item.name;\n            // set reloads and other filtering options\n            fieldArray[index].filterOptions = this.getDropdownFiltteringOptions(item, fieldArray);\n        });\n\n        const additionalFilters = this.args.additional\n            ? this.getAdditionalFilters(this.args.additional)\n            : [];\n\n        let search: any = {\n            type: 'searchbox',\n            name: 'q',\n            label: this.intl.t('general.search'),\n            value: this.args.values.q ? this.args.values.q : null,\n            form: '',\n            data_name: 'search',\n        };\n\n        let groupBy: any = {\n            type: 'groupBy',\n            name: 'groupBy',\n            label: this.intl.t('general.groupby'),\n            value: this.args.values.groupBy ? this.args.values.groupBy : null,\n            form: this.args.form,\n            data_name: 'groupby',\n        };\n\n        let locked: any = {\n            type: 'dropdown_values',\n            name: 'row_info_status',\n            label: this.intl.t('filters.locked'),\n            value: this.args.values.row_info_status ? this.args.values.row_info_status : null,\n            form: this.args.form,\n            data_name: 'row_info_status',\n            options: [\n                { id: 'locked', value: this.intl.t('filters.show_locked') },\n                { id: 'normal', value: this.intl.t('filters.show_unlocked') },\n            ],\n            prompt: this.intl.t('select.all'),\n        };\n        fieldArray.push(locked);\n\n        let allFields = fieldArray;\n\n        if (this.args.showColumns) {\n            // @ts-ignore\n            fieldArray = fieldArray.filter((item) => {\n                //show default filters\n                if (this.args.showColumns.split(',').includes(item.name)) return true;\n                //show added filters\n                if (this.addedFilters.includes(item.name)) {\n                    item.removable = true;\n                    return true;\n                }\n            });\n\n            // if showColumns is in use show fresearch only if given\n            if (!this.args.showColumns.split(',').includes('q')) search = null;\n\n            // if showColumns is in use show groupBy only if given\n            if (!this.args.showColumns.split(',').includes('groupBy')) groupBy = null;\n        }\n\n        const filterArr = fieldArray.concat(additionalFilters);\n        let newArr: any = [];\n        let removableFilters: any = [];\n        if (this.args.filterOrder) {\n            // @ts-ignore\n            filterArr.forEach((field) => {\n                if (field.removable) return (removableFilters[this.getIndex(field.name)] = field);\n                const index = this.args.filterOrder.findIndex(\n                    (ord: { name: string; form: string }) => {\n                        return ord.name === field.name && ord.form === field.form;\n                    },\n                );\n                if (index >= 0) newArr[index] = field;\n                else newArr.push(field);\n            });\n        }\n\n        newArr = this.checkSearchAndGroupBy(!isEmpty(newArr) ? newArr : filterArr, search, groupBy);\n\n        //add removable filters at the end of the array\n        newArr = newArr.pushObjects(removableFilters);\n\n        //remove falsy values (i.e. undefined or null) from array\n        newArr = newArr.filter((row: any) => row);\n\n        //set hidden filters that can be added to filters\n        this.hiddenFilters = allFields.filter((item: any) => !newArr.findBy('name', item.name));\n        return newArr;\n    }\n\n    /**\n     * custom_field is used with additional filters\n     * @param {string} custom_field\n     * @param {any} value\n     * @param {string} field\n     */\n    @action\n    public filterChange(customField: string, value: any, field: string) {\n        if (!field && !customField) return;\n        if (customField) field = customField;\n        this.analytics.trackEvent({\n            category: this.form + ' report filters',\n            action: field,\n            label: 'tt4-addon-report',\n        });\n        if (this.args.change) this.args.change(value, field);\n        if (this.args.filterChangeAction) {\n            this.args.filterChangeAction(value, field);\n        }\n        notifyPropertyChange(this, 'filters');\n    }\n\n    @action\n    public clearFilters() {\n        this.analytics.trackEvent({\n            category: this.form + ' report filters',\n            action: 'clear filters',\n            label: 'tt4-addon-report',\n        });\n        if (this.args.clearFilters) this.args.clearFilters();\n        notifyPropertyChange(this, 'filters');\n        this.filters.forEach((filter) => {\n            const value = filter.value ? filter.value : '';\n            if (this.args.filterChangeAction) this.args.filterChangeAction(value, filter.name);\n        });\n    }\n\n    @action\n    public addFilter(filter: any) {\n        this.analytics.trackEvent({\n            category: this.form + ' report add custom filter',\n            action: filter,\n            label: 'tt4-addon-report',\n        });\n        this.addedFilters.pushObject(filter.name);\n        this.localstorage.setItem(this.args.localStorageKey + '_added_filtters', this.addedFilters);\n        notifyPropertyChange(this, 'filters');\n    }\n\n    @action\n    public hideFilter(filter: any) {\n        if (filter.value) this.filterChange('', null, filter.name);\n        this.analytics.trackEvent({\n            category: this.form + ' report hide custom filter',\n            action: filter,\n            label: 'tt4-addon-report',\n        });\n        this.addedFilters.removeObject(filter.name);\n        this.localstorage.setItem(this.args.localStorageKey + '_added_filtters', this.addedFilters);\n        notifyPropertyChange(this, 'filters');\n    }\n\n    /**\n     * additional filters are given ie. 'project.owner,user.lastname'\n     * @param {string} add\n     */\n    public getAdditionalFilters(add: string) {\n        const ret = [];\n        for (const field of add.split(',')) {\n            const fieldArr = field.split('.');\n            const filterIndex = fieldArr.length > 2 ? 1 : 0;\n            // @ts-ignore\n            const fields = this.forms.fieldArray(fieldArr[0]).filter((f) => {\n                return f.name === fieldArr[filterIndex + 1];\n            });\n            if (isEmpty(fields)) continue;\n            fields[0].label = fields[0].translated_name;\n            fields[0].customfield = fieldArr[filterIndex] + '[' + fieldArr[filterIndex + 1] + ']';\n            fields[0].prompt = this.intl.t('select.all');\n            fields[0].data_name = fields[0].form + '-' + fields[0].name;\n\n            if (this.args.values[fields[0].customfield])\n                fields[0].value = this.args.values[fields[0].customfield];\n            ret.push(fields[0]);\n        }\n\n        return ret;\n    }\n\n    private checkSearchAndGroupBy(arr: any, search: {} | null, groupBy: {} | null): [] {\n        arr = search ? arr.concat([search]) : arr;\n        arr = groupBy ? arr.concat([groupBy]) : arr;\n        return arr;\n    }\n\n    private getIndex(fieldName: string) {\n        return this.addedFilters.findIndex((item: any) => item === fieldName);\n    }\n\n    private getFilterValue(field: string) {\n        if (this.args.values[field]) return this.args.values[field];\n        if (this.args.values[field + '[id]']) return this.args.values[field + '[id]'];\n        else if (this.args.values['filter[attributes.' + field + ']'])\n            return this.args.values['filter[attributes.' + field + ']'];\n        else if (this.args.values['filter[relationships.' + field + '.data.id]'])\n            return this.args.values['filter[relationships.' + field + '.data.id]'];\n        else return null;\n    }\n\n    /**\n     * get options for filtering dropdown options by other filters values\n     * ie. filter subprojects dropdown options by selected value in project filter\n     * returns object<field:id> { project:12345 }\n     */\n    private getDropdownFiltteringOptions(\n        field: IFormField,\n        filters: IFormField[],\n    ): { field: string; id: string } {\n        let dependencies: { field: object; filter: string }[] = [];\n        filters = filters.concat(\n            this.args.additional ? this.getAdditionalFilters(this.args.additional) : [],\n        ); //add additional filters\n        filters.forEach((filterField: IFormField) => {\n            // get links from collector service and set them as dependencies\n            let links = this.Collector.getDropdownDepency(filterField.name);\n            links.map((link: { field: string; filter: string }) => {\n                if (link.field === field.name)\n                    dependencies.push({ field: filterField, filter: filterField.options?.form });\n            });\n            // set fields reload features as dependencies\n            // Ie. project reloads subproject, so subproject gets {project: <projectid>} in filterOptions and subprojects are filtered by project\n            const reloadInCurrentField =\n                isPresent(filterField.features?.reload) &&\n                filterField.features?.reload == field.name;\n            // Ie. some field reloads project, so some field gets {project: <projectid>} in filterOptions and some field is filtered by project\n            const reloadInOtherField =\n                isPresent(field.features?.reload) && field.features?.reload == filterField.name;\n            if (reloadInCurrentField || reloadInOtherField) {\n                dependencies.push({ field: filterField, filter: filterField.options?.form });\n            }\n        });\n\n        let options: any = {};\n        dependencies.forEach((filtering: { filter: string; field: { value: { id: string } } }) => {\n            if (typeOf(filtering.field.value) == 'object') {\n                options[filtering.filter] = filtering.field.value ? filtering.field.value.id : null;\n            } else {\n                options[filtering.filter] = filtering.field.value ? filtering.field.value : null;\n            }\n        });\n\n        return options;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<DumpDev @text=\\\"addon form-report migrated to tt4\\\" />\\n\\n\\n{{#if @blockFilters}}\\n\\n{{yield (hash\\n    filters=(component \\\"addon/form-report-filters\\\"\\n        showColumns=this.showFilters\\n        additional=this.additionalFilters\\n        form=this.form\\n        change=(action \\\"filterChange\\\")\\n        values=this.queryParams\\n        filterOrder=this.filterOrder\\n        clearFilters=(action \\\"clearFilters\\\")\\n        useMultiFilter=this.useMultiFilter\\n        filterChangeAction=(action \\\"filterChangeAction\\\")\\n        custParams=this.custParams\\n        templateInUse=this.currentFormTemplate\\n        hideAdditionalFiltersButton=@hideAdditionalFiltersButton\\n        localStorageKey=this.localStorageKey\\n    )\\n    )}}\\n\\n{{else}}\\n\\n<Addon::FormReportFilters\\n    @showColumns={{this.showFilters}}\\n    @additional={{this.additionalFilters}}\\n    @form={{this.form}}\\n    @values={{this.queryParams}}\\n    @filterOrder={{this.filterOrder}}\\n    @change={{fn this.filterChange}}\\n    @clearFilters={{fn this.clearFilters}}\\n    @useMultiFilter={{this.useMultiFilter}}\\n    @filterChangeAction={{fn this.filterChangeAction}}\\n    @custParams={{this.custParams}}\\n    @templateInUse={{this.currentFormTemplate}}\\n    @hideAdditionalFiltersButton={{@hideAdditionalFiltersButton}}\\n    @localStorageKey={{this.localStorageKey}}\\n/>\\n\\n{{/if}}\\n\\n{{yield (hash\\n            Add=(component \\\"addon/form-report/add\\\" onClick=(fn this.add))\\n        )}}\\n\\n<div class=\\\"ember-movenium-table-container\\\">\\n    {{#if (has-block)}}\\n        {{yield (hash\\n                    Table=(component \\\"addon/form-report/table\\\"\\n                        data=this.data\\n                        errors=this.errors\\n                        form=this.form\\n                        sorts=this.sorts\\n                        columns=this.columns\\n                        allColumns=this.allColumns\\n                        selectable=this.selectable\\n                        inlineEdit=this.inlineEdit\\n                        rowActions=this.rowActions\\n                        statusTypes=this.statusTypes\\n                        rowsPerPage=this.rowsPerPage\\n                        showLoader=this.showLoader\\n                        showRemoved=this.showRemoved\\n                        showLocationMap=this.showLocationMap\\n                        locationMarkers=this.locationMarkers\\n                        startEndMarkers=this.startEndMarkers\\n                        formReportTemplates=this.formReportTemplates\\n                        currentFormTemplate=this.currentFormTemplate\\n                        showOnlySum=this.showOnlySum\\n                        actionBar=(component \\\"addon/form-report/action-bar\\\" actionClicked=(fn this.actionClicked))\\n                        updateSorts=(fn this.updateSorts)\\n                        saveRows=(fn this.saveRows)\\n                        toggleInlineEdit=(fn this.toggleInlineEdit)\\n                        setRowsPerPage=(fn this.setRowsPerPage)\\n                        exportPdf=(fn this.exportPdf)\\n                        exportCsv=(fn this.exportCsv)\\n                        showOrHideRemoved=(fn this.showOrHideRemoved)\\n                        openExportModal=(fn this.openExportModal)\\n                        refreshReport=(fn this.reload)\\n                        changeStatus=(fn this.changeStatus)\\n                        handleLock=(fn this.handleLock)\\n                        handleRemove=(fn this.handleRemove)\\n                        columnsChanged=(fn this.columnsChanged)\\n                        openGpsMap=(fn this.openGpsMap)\\n                        activateTemplate=(fn this.activateTemplate)\\n                        deactivateTemplate=(fn this.deactivateTemplate)\\n                        editTemplate=(fn this.editTemplate)\\n                        removeTemplate=(fn this.removeTemplate)\\n                        openTemplateModal=(fn this.openTemplateModal)\\n                        sumReport=this.sumReport\\n                        mergeTemplates=this.mergeTemplates\\n                        localStorageKey=this.localStorageKey\\n                        oldTemplateFromLS=this.oldTemplateFromLS\\n                        saveResize=(fn this.saveResize)\\n                        columnSizes=this.columnSizes\\n                        selected=this.selectedRows\\n                        setSelectedRows=(fn this.setSelectedRows)\\n                        additionalMeta=this.additionalMeta\\n\\n                    )\\n                )}}\\n    {{else}}\\n        <Addon::FormReport::Table\\n            @data={{this.data}}\\n            @form={{this.form}}\\n            @sorts={{this.sorts}}\\n            @columns={{this.columns}}\\n            @allColumns={{this.allColumns}}\\n            @selectable={{this.selectable}}\\n            @inlineEdit={{this.inlineEdit}}\\n            @rowActions={{this.rowActions}}\\n            @statusTypes={{this.statusTypes}}\\n            @rowsPerPage={{this.rowsPerPage}}\\n            @showLoader={{this.showLoader}}\\n            @showRemoved={{this.showRemoved}}\\n            @formReportTemplates={{this.formReportTemplates}}\\n            @currentFormTemplate={{this.currentFormTemplate}}\\n            @showOnlySum={{this.showOnlySum}}\\n            @updateSorts={{fn this.updateSorts}}\\n            @saveRows={{fn this.saveRows}}\\n            @toggleInlineEdit={{fn this.toggleInlineEdit}}\\n            @setRowsPerPage={{fn this.setRowsPerPage}}\\n            @exportPdf={{fn this.exportPdf}}\\n            @exportCsv={{fn this.exportCsv}}\\n            @showOrHideRemoved={{fn this.showOrHideRemoved}}\\n            @openExportModal={{fn this.openExportModal}}\\n            @refreshReport={{fn this.reload}}\\n            @columnsChanged={{fn this.columnsChanged}}\\n            @handleRemove={{fn this.handleRemove}}\\n            @handleLock={{fn this.handleLock}}\\n            @changeStatus={{fn this.changeStatus}}\\n            @actionBar={{component \\\"addon/form-report/action-bar\\\" actionClicked=(fn this.actionClicked)}}\\n            @activateTemplate={{fn this.activateTemplate}}\\n            @deactivateTemplate={{fn this.deactivateTemplate}}\\n            @editTemplate={{fn this.editTemplate}}\\n            @removeTemplate={{fn this.removeTemplate}}\\n            @openTemplateModal={{fn this.openTemplateModal}}\\n            @sumReport={{this.sumReport}}\\n            @mergeTemplates={{this.mergeTemplates}}\\n            @localStorageKey={{this.localStorageKey}}\\n            @oldTemplateFromLS={{this.oldTemplateFromLS}}\\n            @saveResize={{fn this.saveResize}}\\n            @columnSizes={{this.columnSizes}}\\n            @selected={{this.selectedRows}}\\n            @setSelectedRows={{fn this.setSelectedRows}}\\n            @additionalMeta={{this.additionalMeta}}\\n\\n        />\\n    {{/if}}\\n\\n    {{#unless this.showOnlySum}}\\n        <div class=\\\"total-rows\\\" data-anchor=\\\"worktime-report-rows-total\\\">\\n            <b class=\\\"text-muted\\\">{{t \\\"report.total_rows\\\"}}:</b>\\n            <span class=\\\"badge\\\">{{this.totalRows}}</span>\\n        </div>\\n    {{/unless}}\\n\\n    <Addon::PagiNation\\n        @rowsPerPage={{this.rowsPerPage}}\\n        @currentPage={{this.currentPage}}\\n        @pageCount={{this.pageCount}}\\n        @pageChange={{fn this.pageChange}}\\n    />\\n\\n\\n</div>\\n\\n{{#if this.showForm}}\\n    <Addon::Modal @close={{this.closeEditModal}} @classes=\\\"ember-movenium-form-report-form-add-modal\\\" as |M|>\\n        <M.Header>{{t (concat \\\"menu.add_\\\" this.form)}}</M.Header>\\n        <M.Body>\\n            <Addon::FormAdd @only={{@showColumns}}\\n                     @form={{this.form}}\\n                     @rowAdded={{this.reload}}\\n                     @record={{this.showForm}}\\n                     @close={{fn (mut this.showForm) null}}\\n                     @onFieldChange={{this.fieldChanged}}\\n            />\\n        </M.Body>\\n    </Addon::Modal>\\n{{/if}}\\n\\n{{#if this.showHistory}}\\n    <NiceModal @header={{t \\\"rowhistory.title\\\"}} @close={{fn (mut this.showHistory) null}}>\\n        <div class=\\\"modal-history-content\\\">\\n            <Collector::HistoryComp @row={{this.showHistory.id}} @form={{this.form}} @hideTitle={{true}} />\\n        </div>\\n    </NiceModal>\\n{{/if}}\\n\\n{{#if this.showOverview}}\\n    <Addon::Modal @close={{fn (mut this.showOverview) null}} @classes=\\\"ember-movenium-form-report-form-add-modal\\\" as |M|>\\n        <M.Header>{{t \\\"header.path.show\\\"}}</M.Header>\\n        <M.Body>\\n            <h2>{{this.overviewHeader}}</h2>\\n            <RecordList @fields={{this.fields}} @model={{this.showOverview}} />\\n        </M.Body>\\n    </Addon::Modal>\\n{{/if}}\\n\\n{{#if this.showFastExporter}}\\n    <Addon::Modal @close={{fn (mut this.showFastExporter) false}} @classes=\\\"ember-movenium-form-report-form-add-modal\\\" as |M|>\\n        <M.Header>{{t \\\"fastexport.header\\\"}}</M.Header>\\n        <M.Body>\\n            <FastExporter @form={{this.form}} @dates={{this.datesForFastExporter}} @close={{fn (mut this.showFastExporter) false}} />\\n        </M.Body>\\n    </Addon::Modal>\\n{{/if}}\\n\\n{{#if this.showChangeStatusForAllPages}}\\n    <ChangeStatus @close={{fn this.closeShowChangeStatusForAllPages}} @params={{this.changeStatusForAllPagesParams}} />\\n{{/if}}\\n\\n{{#if this.showExportModal}}\\n    <ExportModal\\n        @initType={{this.exportInitType}}\\n        @showExportModal={{this.showExportModal}}\\n        @includeApprovalLink={{this.includeApprovalLink}}\\n        @statusFieldIsVisible={{this.statusFieldIsVisible}}\\n        @form={{this.form}}\\n        @showApprovalLinkSelection={{this.showApprovalLinkSelection}}\\n        @count={{this.emailSendingCount}}\\n        @emailSent={{this.emailSent}}\\n        @loading={{this.showLoader}}\\n        @emailError={{this.emailError}}\\n        @removeModal={{fn (mut this.showExportModal) false}}\\n        @sendEmailAction={{fn this.sendEmail}}\\n        @exportActions={{fn this.handleExportActions}}\\n        @showExcelSumCheckbox={{true}}\\n    />\\n{{/if}}\\n\\n{{#if this.filtersModal}}\\n    <Addon::ReportTemplateWizard\\n        @columns={{this.allColumns}}\\n        @form={{this.form}}\\n        @filter={{@filter}}\\n        @templateValues={{this.templateValues}}\\n        @saveTemplate={{fn this.saveTemplate}}\\n        @close={{fn (mut this.filtersModal) false}}\\n        @additionalFilters={{@additional}}\\n    />\\n{{/if}}\\n\", {\"contents\":\"<DumpDev @text=\\\"addon form-report migrated to tt4\\\" />\\n\\n\\n{{#if @blockFilters}}\\n\\n{{yield (hash\\n    filters=(component \\\"addon/form-report-filters\\\"\\n        showColumns=this.showFilters\\n        additional=this.additionalFilters\\n        form=this.form\\n        change=(action \\\"filterChange\\\")\\n        values=this.queryParams\\n        filterOrder=this.filterOrder\\n        clearFilters=(action \\\"clearFilters\\\")\\n        useMultiFilter=this.useMultiFilter\\n        filterChangeAction=(action \\\"filterChangeAction\\\")\\n        custParams=this.custParams\\n        templateInUse=this.currentFormTemplate\\n        hideAdditionalFiltersButton=@hideAdditionalFiltersButton\\n        localStorageKey=this.localStorageKey\\n    )\\n    )}}\\n\\n{{else}}\\n\\n<Addon::FormReportFilters\\n    @showColumns={{this.showFilters}}\\n    @additional={{this.additionalFilters}}\\n    @form={{this.form}}\\n    @values={{this.queryParams}}\\n    @filterOrder={{this.filterOrder}}\\n    @change={{fn this.filterChange}}\\n    @clearFilters={{fn this.clearFilters}}\\n    @useMultiFilter={{this.useMultiFilter}}\\n    @filterChangeAction={{fn this.filterChangeAction}}\\n    @custParams={{this.custParams}}\\n    @templateInUse={{this.currentFormTemplate}}\\n    @hideAdditionalFiltersButton={{@hideAdditionalFiltersButton}}\\n    @localStorageKey={{this.localStorageKey}}\\n/>\\n\\n{{/if}}\\n\\n{{yield (hash\\n            Add=(component \\\"addon/form-report/add\\\" onClick=(fn this.add))\\n        )}}\\n\\n<div class=\\\"ember-movenium-table-container\\\">\\n    {{#if (has-block)}}\\n        {{yield (hash\\n                    Table=(component \\\"addon/form-report/table\\\"\\n                        data=this.data\\n                        errors=this.errors\\n                        form=this.form\\n                        sorts=this.sorts\\n                        columns=this.columns\\n                        allColumns=this.allColumns\\n                        selectable=this.selectable\\n                        inlineEdit=this.inlineEdit\\n                        rowActions=this.rowActions\\n                        statusTypes=this.statusTypes\\n                        rowsPerPage=this.rowsPerPage\\n                        showLoader=this.showLoader\\n                        showRemoved=this.showRemoved\\n                        showLocationMap=this.showLocationMap\\n                        locationMarkers=this.locationMarkers\\n                        startEndMarkers=this.startEndMarkers\\n                        formReportTemplates=this.formReportTemplates\\n                        currentFormTemplate=this.currentFormTemplate\\n                        showOnlySum=this.showOnlySum\\n                        actionBar=(component \\\"addon/form-report/action-bar\\\" actionClicked=(fn this.actionClicked))\\n                        updateSorts=(fn this.updateSorts)\\n                        saveRows=(fn this.saveRows)\\n                        toggleInlineEdit=(fn this.toggleInlineEdit)\\n                        setRowsPerPage=(fn this.setRowsPerPage)\\n                        exportPdf=(fn this.exportPdf)\\n                        exportCsv=(fn this.exportCsv)\\n                        showOrHideRemoved=(fn this.showOrHideRemoved)\\n                        openExportModal=(fn this.openExportModal)\\n                        refreshReport=(fn this.reload)\\n                        changeStatus=(fn this.changeStatus)\\n                        handleLock=(fn this.handleLock)\\n                        handleRemove=(fn this.handleRemove)\\n                        columnsChanged=(fn this.columnsChanged)\\n                        openGpsMap=(fn this.openGpsMap)\\n                        activateTemplate=(fn this.activateTemplate)\\n                        deactivateTemplate=(fn this.deactivateTemplate)\\n                        editTemplate=(fn this.editTemplate)\\n                        removeTemplate=(fn this.removeTemplate)\\n                        openTemplateModal=(fn this.openTemplateModal)\\n                        sumReport=this.sumReport\\n                        mergeTemplates=this.mergeTemplates\\n                        localStorageKey=this.localStorageKey\\n                        oldTemplateFromLS=this.oldTemplateFromLS\\n                        saveResize=(fn this.saveResize)\\n                        columnSizes=this.columnSizes\\n                        selected=this.selectedRows\\n                        setSelectedRows=(fn this.setSelectedRows)\\n                        additionalMeta=this.additionalMeta\\n\\n                    )\\n                )}}\\n    {{else}}\\n        <Addon::FormReport::Table\\n            @data={{this.data}}\\n            @form={{this.form}}\\n            @sorts={{this.sorts}}\\n            @columns={{this.columns}}\\n            @allColumns={{this.allColumns}}\\n            @selectable={{this.selectable}}\\n            @inlineEdit={{this.inlineEdit}}\\n            @rowActions={{this.rowActions}}\\n            @statusTypes={{this.statusTypes}}\\n            @rowsPerPage={{this.rowsPerPage}}\\n            @showLoader={{this.showLoader}}\\n            @showRemoved={{this.showRemoved}}\\n            @formReportTemplates={{this.formReportTemplates}}\\n            @currentFormTemplate={{this.currentFormTemplate}}\\n            @showOnlySum={{this.showOnlySum}}\\n            @updateSorts={{fn this.updateSorts}}\\n            @saveRows={{fn this.saveRows}}\\n            @toggleInlineEdit={{fn this.toggleInlineEdit}}\\n            @setRowsPerPage={{fn this.setRowsPerPage}}\\n            @exportPdf={{fn this.exportPdf}}\\n            @exportCsv={{fn this.exportCsv}}\\n            @showOrHideRemoved={{fn this.showOrHideRemoved}}\\n            @openExportModal={{fn this.openExportModal}}\\n            @refreshReport={{fn this.reload}}\\n            @columnsChanged={{fn this.columnsChanged}}\\n            @handleRemove={{fn this.handleRemove}}\\n            @handleLock={{fn this.handleLock}}\\n            @changeStatus={{fn this.changeStatus}}\\n            @actionBar={{component \\\"addon/form-report/action-bar\\\" actionClicked=(fn this.actionClicked)}}\\n            @activateTemplate={{fn this.activateTemplate}}\\n            @deactivateTemplate={{fn this.deactivateTemplate}}\\n            @editTemplate={{fn this.editTemplate}}\\n            @removeTemplate={{fn this.removeTemplate}}\\n            @openTemplateModal={{fn this.openTemplateModal}}\\n            @sumReport={{this.sumReport}}\\n            @mergeTemplates={{this.mergeTemplates}}\\n            @localStorageKey={{this.localStorageKey}}\\n            @oldTemplateFromLS={{this.oldTemplateFromLS}}\\n            @saveResize={{fn this.saveResize}}\\n            @columnSizes={{this.columnSizes}}\\n            @selected={{this.selectedRows}}\\n            @setSelectedRows={{fn this.setSelectedRows}}\\n            @additionalMeta={{this.additionalMeta}}\\n\\n        />\\n    {{/if}}\\n\\n    {{#unless this.showOnlySum}}\\n        <div class=\\\"total-rows\\\" data-anchor=\\\"worktime-report-rows-total\\\">\\n            <b class=\\\"text-muted\\\">{{t \\\"report.total_rows\\\"}}:</b>\\n            <span class=\\\"badge\\\">{{this.totalRows}}</span>\\n        </div>\\n    {{/unless}}\\n\\n    <Addon::PagiNation\\n        @rowsPerPage={{this.rowsPerPage}}\\n        @currentPage={{this.currentPage}}\\n        @pageCount={{this.pageCount}}\\n        @pageChange={{fn this.pageChange}}\\n    />\\n\\n\\n</div>\\n\\n{{#if this.showForm}}\\n    <Addon::Modal @close={{this.closeEditModal}} @classes=\\\"ember-movenium-form-report-form-add-modal\\\" as |M|>\\n        <M.Header>{{t (concat \\\"menu.add_\\\" this.form)}}</M.Header>\\n        <M.Body>\\n            <Addon::FormAdd @only={{@showColumns}}\\n                     @form={{this.form}}\\n                     @rowAdded={{this.reload}}\\n                     @record={{this.showForm}}\\n                     @close={{fn (mut this.showForm) null}}\\n                     @onFieldChange={{this.fieldChanged}}\\n            />\\n        </M.Body>\\n    </Addon::Modal>\\n{{/if}}\\n\\n{{#if this.showHistory}}\\n    <NiceModal @header={{t \\\"rowhistory.title\\\"}} @close={{fn (mut this.showHistory) null}}>\\n        <div class=\\\"modal-history-content\\\">\\n            <Collector::HistoryComp @row={{this.showHistory.id}} @form={{this.form}} @hideTitle={{true}} />\\n        </div>\\n    </NiceModal>\\n{{/if}}\\n\\n{{#if this.showOverview}}\\n    <Addon::Modal @close={{fn (mut this.showOverview) null}} @classes=\\\"ember-movenium-form-report-form-add-modal\\\" as |M|>\\n        <M.Header>{{t \\\"header.path.show\\\"}}</M.Header>\\n        <M.Body>\\n            <h2>{{this.overviewHeader}}</h2>\\n            <RecordList @fields={{this.fields}} @model={{this.showOverview}} />\\n        </M.Body>\\n    </Addon::Modal>\\n{{/if}}\\n\\n{{#if this.showFastExporter}}\\n    <Addon::Modal @close={{fn (mut this.showFastExporter) false}} @classes=\\\"ember-movenium-form-report-form-add-modal\\\" as |M|>\\n        <M.Header>{{t \\\"fastexport.header\\\"}}</M.Header>\\n        <M.Body>\\n            <FastExporter @form={{this.form}} @dates={{this.datesForFastExporter}} @close={{fn (mut this.showFastExporter) false}} />\\n        </M.Body>\\n    </Addon::Modal>\\n{{/if}}\\n\\n{{#if this.showChangeStatusForAllPages}}\\n    <ChangeStatus @close={{fn this.closeShowChangeStatusForAllPages}} @params={{this.changeStatusForAllPagesParams}} />\\n{{/if}}\\n\\n{{#if this.showExportModal}}\\n    <ExportModal\\n        @initType={{this.exportInitType}}\\n        @showExportModal={{this.showExportModal}}\\n        @includeApprovalLink={{this.includeApprovalLink}}\\n        @statusFieldIsVisible={{this.statusFieldIsVisible}}\\n        @form={{this.form}}\\n        @showApprovalLinkSelection={{this.showApprovalLinkSelection}}\\n        @count={{this.emailSendingCount}}\\n        @emailSent={{this.emailSent}}\\n        @loading={{this.showLoader}}\\n        @emailError={{this.emailError}}\\n        @removeModal={{fn (mut this.showExportModal) false}}\\n        @sendEmailAction={{fn this.sendEmail}}\\n        @exportActions={{fn this.handleExportActions}}\\n        @showExcelSumCheckbox={{true}}\\n    />\\n{{/if}}\\n\\n{{#if this.filtersModal}}\\n    <Addon::ReportTemplateWizard\\n        @columns={{this.allColumns}}\\n        @form={{this.form}}\\n        @filter={{@filter}}\\n        @templateValues={{this.templateValues}}\\n        @saveTemplate={{fn this.saveTemplate}}\\n        @close={{fn (mut this.filtersModal) false}}\\n        @additionalFilters={{@additional}}\\n    />\\n{{/if}}\\n\",\"moduleName\":\"tt4/components/addon/form-report.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report.hbs\"}});\nimport Ember from 'ember';\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action, get, set, setProperties, notifyPropertyChange } from '@ember/object';\nimport { next } from '@ember/runloop';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { isPresent, isEmpty, typeOf } from '@ember/utils';\nimport { A } from '@ember/array';\nimport { save_record } from 'tt4/ember-movenium/utils/save-the-children';\nimport { createPdfFromElements } from 'tt4/ember-movenium/utils/pdf-export';\nimport { defer } from 'rsvp';\nimport { pluralize } from 'ember-inflector';\nimport moment from 'moment';\nimport { getSums } from 'tt4/ember-movenium/utils/sumrow';\nimport { isHTMLSafe } from '@ember/template';\n\n/**\n *\n * report for collector form\n *\n * ```hbs\n *  <Addon::FormReport @form=\"worktime\" as |report|>\n <report.filters />\n <report.table />\n </Addon::FormReport>\n * ```\n *\n * ```\n * parameters:\n *      form: name of the form (mandatory)\n *      filter: object containing list of filters that are added to every query.\n *              When used also created records will automatically have these set\n *      showColumns: List of columns to show on report. Also adding and editing form is affected by this.\n *      filterByValues: object containing default-values for filters\n * ```\n *\n * ```\n * objects:\n *      filters: filter bar for report.\n *      showColumns: list of columns to be shown\n *      add: if used plus button is added above the table\n *      table: the table it self\n *      rowActions: list of actions to show for rows separated with comma. default: edit\n *\n *  ```\n * @class FormReportComponent\n * @constructor\n */\n/* istanbul ignore next: too much tt4 stuff in actions, issues created */\nexport default class FormReportComponent extends Component {\n    @service store;\n    @service session;\n    @service forms;\n    @service dialogs;\n    @service intl;\n    @service notifications;\n    @service('error-handler') error;\n    @service apiservice;\n    @service router;\n    @service('collector-service') Collector;\n    @service collector;\n    @service localStorageWrapper;\n    @service localstorage;\n    @service('own-cordova-service') cordova;\n    @service('file-exports') fileExports;\n    @service evented;\n    @service analytics;\n    @service surveys;\n\n    @tracked form;\n    @tracked columns;\n    @tracked data;\n    @tracked formReportTemplates;\n    @tracked sorts;\n    @tracked showForm;\n    @tracked fields;\n    @tracked showOverview;\n    @tracked showFastExporter;\n    @tracked datesForFastExporter;\n    @tracked selectedRows;\n\n    constructor() {\n        super(...arguments);\n        //this.filterByValues = null\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.rowsPerPage = 25;\n        this.currentPage = 1;\n        (this.rowActions = 'edit,history,remove,overview'), (this.selectedRows = []);\n        this.form = this.args.form;\n        this.showRemoved = this.args.showRemoved || false;\n        this.useMultiFilter = isPresent(this.args.useMultiFilter) ? this.args.useMultiFilter : true;\n        this.showFilters = this.args.showFilters || '';\n        this.additionalFilters = this.args.additional || '';\n        this.showOnlySum = false;\n        this.changeStatusForAllPagesParams = {};\n        this.groupableColumns = [\n            'date',\n            'number',\n            'hours',\n            'price',\n            'big_price',\n            'dropdown_values',\n            'dropdown_options',\n        ];\n\n        this.localStorageKey = this.args.localStorageKey ? this.args.localStorageKey : this.form;\n        this.columnSizes = this.localstorage.getItem(this.localStorageKey + '_columnSizes') || [];\n\n        if (this.showFilters) {\n            const filterArr = this.showFilters.split(',');\n            const filteredArr = filterArr.filter((f) => this.forms.fieldExists(this.form, f));\n            this.defaultOrder = this.filterOrder = filteredArr.map((filter) =>\n                this.forms.field(this.form, filter),\n            );\n        }\n        this.setVisibleColumns();\n        this.fetchTemplates();\n\n        if (this.localstorage.getItem(this.localStorageKey + '_selectedTemplate')) {\n            this.activateTemplate(\n                this.localstorage.getItem(this.localStorageKey + '_selectedTemplate').data,\n            );\n        } else {\n            this.setDefaultLimit();\n            this.setDefaultOrder();\n\n            if (!this.filterByValues) {\n                this.filterByValues = this.args.filterByValues ? this.args.filterByValues : {};\n            }\n            this.updateReport();\n\n            // handle old templates from localstorage\n            if (this.localstorage.getItem(this.localStorageKey + '_currentTemplate')) {\n                this.oldTemplateFromLS = this.localstorage.getItem(\n                    this.localStorageKey + '_currentTemplate',\n                );\n                this.columnsChanged(\n                    this.allColumns.filter((col) =>\n                        this.oldTemplateFromLS.columns.split(',').includes(col.external_type),\n                    ),\n                );\n            }\n        }\n    }\n\n    willDestroy() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n    }\n\n    @alias('data.content.meta.count') metaRowCount;\n    @alias('data.meta.additional_meta') additionalMeta;\n\n    get allPagesSelected() {\n        return (\n            this.metaRowCount > this.selectedRows.length &&\n            this.selectedRows.length === this.data.length\n        );\n    }\n\n    get emailSendingCount() {\n        return this.allPagesSelected ? this.metaRowCount : this.selectedRows.length;\n    }\n\n    get statusFieldIsVisible() {\n        return this.columns.findBy('external_type', 'status');\n    }\n\n    get custParams() {\n        const formFeatures = this.forms.forms[this.args.form].features;\n\n        if (!formFeatures || !formFeatures.custom_queryparams) return null;\n        return formFeatures.custom_queryparams;\n    }\n\n    get totalRows() {\n        return this.metaRowCount || this.cachedRowCount || 0;\n    }\n\n    get pageCount() {\n        if (!this.metaRowCount && !this.cachedRowCount) return 0;\n        const count = this.metaRowCount ? this.metaRowCount : this.cachedRowCount;\n        return Math.ceil(count / this.rowsPerPage);\n    }\n\n    get queryParams() {\n        let params = {};\n\n        this.mergeFilters(params, this.args.filter);\n        this.mergeFilters(params, this.filterByValues);\n        if (this.args.jsonapi) {\n            params = this.setJsonapiParams(params);\n        }\n        if (this.args.extraParams) {\n            Object.assign(params, this.args.extraParams);\n        }\n        if(!this.args.skipCustomQueryParams) params = this.checkCustomQueryParams(params);\n        if (this.sorts && this.sorts.length) {\n            if (this.args.jsonapi) params.sort = this.createSortStringForJsonapi(this.sorts);\n            else params.order = this.createSortString(this.sorts);\n        }\n        params.limit = this.rowsPerPage;\n        params.offset = this.rowsPerPage * (this.currentPage - 1);\n        params.sideload = true;\n        if (this.showRemoved) {\n            params.row_info_status = 'removed';\n        }\n        this.setParentFieldParamsAsArray(params);\n        return params;\n    }\n\n    get allColumns() {\n        const canEdit = this.Collector.testNeeds([\n            '!' + this.form + '@errors',\n            this.form + '@edit',\n        ]);\n        let columns = this.Collector.fieldArray(this.form).map((item) => {\n            const savedSize = this.columnSizes.findBy('valuePath', item.name);\n\n            item['canEdit'] = canEdit;\n            item['valuePath'] = item.name;\n            item['external_type'] = item.name;\n\n            // set column width from ls if exists else set default\n            if (savedSize) item['width'] = get(savedSize, 'width');\n            else item['width'] = item.name === 'status' ? 50 : 80;\n\n            return item;\n        });\n\n        if (this.args.showColumns)\n            columns = columns.filter((column) =>\n                this.args.showColumns.split(',').includes(column.external_type),\n            );\n        columns = columns.filter(\n            (column) =>\n                column.features && !column.features.hide_column && !column.features.hide_tt4,\n        );\n\n        if (!this.args.hideCreatedColumn)\n            columns.push({\n                name: 'row_info.created',\n                form: this.form,\n                external_type: 'row_info.created',\n                valuePath: 'row_info.created',\n                translated_name: this.intl.t('general.row_info.created'),\n            });\n        if (!this.args.hideCreatedColumn)\n            columns.push({\n                name: 'row_info.modified',\n                form: this.form,\n                external_type: 'row_info.modified',\n                valuePath: 'row_info.modified',\n                translated_name: this.intl.t('general.row_info.modified'),\n            });\n\n        return columns;\n    }\n\n    get statusTypes() {\n        if (!this.form) return [];\n        if (!this.forms.fieldExists(this.form, 'status')) return [];\n\n        let field = this.forms.field(this.form, 'status');\n        let fieldOptions = [];\n\n        if (field.features.only_options) {\n            fieldOptions = field.features.only_options.split(',');\n        } else {\n            fieldOptions = field.options;\n        }\n        if (!fieldOptions) return []; // if status-field doesn't have any options, just return empty array\n        let options = fieldOptions.map((option) => {\n            if (this.intl.exists('status.' + option)) {\n                return { id: option, name: this.intl.t('report.' + option + '_rows') };\n            } else {\n                return { id: option, name: this.intl.t('report.change_status') + option };\n            }\n        });\n\n        return options;\n    }\n\n    get showApprovalLink() {\n        if (isEmpty(this.statusTypes)) return false;\n        return this.statusTypes.mapBy('id').includes('approved') && this.selectedRows.length;\n    }\n\n    get overviewHeader() {\n        if (!this.showOverview) return false;\n        let formaName = this.showOverview.constructor.modelName;\n        if (!formaName.includes('measurement-custom'))\n            return this.intl.t('header.path.add.' + formaName);\n        return this.forms.forms[this.form.underscore()].name;\n    }\n\n    @action\n    openTemplateModal() {\n        this.analytics.trackEvent({\n            category: this.form + ' report templates',\n            action: 'Add new template',\n            label: 'tt4-addon-report',\n        });\n        set(this, 'templateValues', null);\n        set(this, 'filtersModal', true);\n    }\n\n    @action\n    async saveTemplate(values) {\n        this.analytics.trackEvent({\n            category: this.form + ' report templates',\n            action: 'Save template',\n            label: 'tt4-addon-report',\n        });\n        let template = null;\n\n        let formattedValues = {\n            name: values.name,\n            form: this.form,\n            limit: values.limit ? values.limit : 25,\n            sums: JSON.stringify(values.sums),\n            columns: JSON.stringify(values.columns),\n            filters: JSON.stringify(values.filters),\n            filterOrder: values.filterOrder ? values.filterOrder : [],\n            sumType: values.sumType,\n            userlevels: values.userlevels,\n        };\n\n        if (this.templateValues) {\n            template = this.store.peekRecord('form-report-template', this.templateValues.id);\n            setProperties(template, formattedValues);\n            template.save();\n        } else {\n            template = await this.store\n                .createRecord('form-report-template', formattedValues)\n                .save();\n        }\n\n        this.fetchTemplates();\n        this.activateTemplate(template);\n    }\n\n    @action\n    deactivateTemplate() {\n        this.analytics.trackEvent({\n            category: this.form + ' report templates',\n            action: 'Deactivate template',\n            label: 'tt4-addon-report',\n        });\n        this.localstorage.removeItem(this.localStorageKey + '_selectedTemplate');\n        this.setVisibleColumns();\n        set(this, 'filterByValues', this.args.filter ? this.args.filter : {});\n        set(this, 'rowsPerPage', 25);\n        set(this, 'showFilters', this.args.showFilters);\n        set(this, 'additionalFilters', this.args.additional);\n        set(this, 'filterOrder', this.defaultOrder);\n        set(this, 'showOnlySum', false);\n        notifyPropertyChange(this, 'queryParams');\n        this.updateReport();\n        this.columnsChanged(this.columns);\n        set(this, 'sumReport', false);\n        set(this, 'currentFormTemplate', null);\n    }\n\n    @action\n    async activateTemplate(template) {\n        this.analytics.trackEvent({\n            category: this.form + ' report templates',\n            action: 'Activate template',\n            label: 'tt4-addon-report',\n        });\n\n        if (template.id) {\n            this.localstorage.setItem(this.localStorageKey + '_selectedTemplate', {\n                data: template,\n                current: template.id,\n            });\n        }\n        await this.setTemplateValues(template);\n        this.updateReport();\n        const templateColumns = JSON.parse(template.columns).filter(\n            (col) =>\n                this.forms.fieldExists(this.form, col.external_type) ||\n                col.valuePath.includes('row_info.'),\n        );\n        this.columnsChanged(templateColumns);\n    }\n\n    @action\n    editTemplate(template) {\n        this.analytics.trackEvent({\n            category: this.form + ' report templates',\n            action: 'Edit template',\n            label: 'tt4-addon-report',\n        });\n        set(this, 'templateValues', template);\n        set(this, 'filtersModal', true);\n    }\n\n    @action\n    async removeTemplate(template) {\n        this.analytics.trackEvent({\n            category: this.form + ' report templates',\n            action: 'Remove template',\n            label: 'tt4-addon-report',\n        });\n        const con = await this.dialogs.confirm(this.intl.t('report.template.confirm_remove'));\n        if (con) {\n            if (template.id === this.currentFormTemplate) this.deactivateTemplate();\n            await template.destroyRecord();\n        }\n        this.fetchTemplates();\n        notifyPropertyChange(this, 'formReportTemplates');\n    }\n\n    @action\n    async openGpsMap(selected) {\n        if (this.showLocationMap) {\n            set(this, 'showLocationMap', false);\n            set(this, 'locationMarkers', []);\n            set(this, 'startEndMarkers', []);\n            return;\n        }\n        return this.setMapMarkers(selected);\n    }\n\n    @action\n    columnsChanged(columns) {\n        set(this, 'columns', columns);\n\n        // ugly hax to force ember-table rerender without loading data again\n        const cacheData = get(this, 'data');\n        set(this, 'data', null);\n        next(this, () => set(this, 'data', cacheData));\n    }\n\n    @action\n    filterChange(value, field) {\n        if (field) {\n            set(this, 'currentPage', 1);\n            set(this, 'filterByValues.' + field, value && value.id ? value.id : value);\n            if (field === 'groupBy') this.handleGroupBy(value);\n            notifyPropertyChange(this, 'queryParams');\n            this.updateReport();\n        }\n    }\n\n    @action\n    fieldChanged(field, value) {\n        this.showForm[field] = value;\n    }\n\n    @action\n    clearFilters() {\n        set(this, 'currentPage', 1);\n        this.setVisibleColumns();\n        set(this, 'sumReport', false);\n        set(this, 'filterByValues', this.args.filter ? this.args.filter : {});\n        notifyPropertyChange(this, 'queryParams');\n        this.updateReport();\n    }\n\n    @action\n    filterChangeAction(value, field) {\n        if (this.args.filterChangeAction) this.args.filterChangeAction(value, field);\n    }\n\n    @action\n    async actionClicked(act, row) {\n        this.analytics.trackEvent({\n            category: this.form + ' report row actions',\n            action: act,\n            label: 'tt4-addon-report',\n        });\n        set(this, 'needsUpdate', true);\n        if (act == 'edit') set(this, 'showForm', row);\n        if (act === 'history') set(this, 'showHistory', row);\n        if (act == 'remove') this.removeRow(row);\n        if (act === 'restore') this.restoreRow(row);\n        if (act === 'copy') this.copyRow(row);\n        if (act === 'unlock') {\n            if (!get(row, 'row_info.privilege_openlock')) {\n                return this.notifications.warning(this.intl.t('general.unlock.error'), {\n                    autoClear: true,\n                });\n            }\n            this.lockOrUnlock(row, 'unlock');\n        }\n        if (act === 'overview') {\n            if (!this.fields) this.fields = this.forms.fieldArray(this.form);\n            this.showOverview = row;\n        }\n    }\n\n    @action\n    add() {\n        const values = Object.assign({}, get(this, 'filter'));\n        set(this, 'showForm', this.store.createRecord(this.form, values));\n    }\n\n    @action\n    reload() {\n        this.updateReport();\n    }\n\n    @action\n    pageChange(page) {\n        set(this, 'currentPage', page);\n        this.updateReport();\n    }\n\n    @action\n    async exportPdf(selected, params = {}) {\n        set(this, 'showLoader', true);\n        this.analytics.trackEvent({\n            category: this.form + ' report actions',\n            action: 'Pdf export',\n            label: 'tt4-addon-report',\n        });\n        try {\n            if (params.layoutOption === 'sideHeaders') {\n                await this.fileExports.createPdfFull(\n                    this.form,\n                    this.selectedExportRows,\n                    this.filterByValues,\n                    this.columns.mapBy('external_type').join(','),\n                    params,\n                    null,\n                );\n            } else {\n                await this.createPdf(selected, params, 'download');\n            }\n        } catch (error) {\n            this.error.notify(error);\n        } finally {\n            set(this, 'showLoader', false);\n        }\n    }\n\n    @action\n    async exportPdfFull(params) {\n        set(this, 'showLoader', true);\n        this.analytics.trackEvent({\n            category: this.form + ' report actions',\n            action: 'Pdf big pictures export',\n            label: 'tt4-addon-report',\n        });\n        try {\n            if (isEmpty(this.queryParams['groupBy'])) delete this.queryParams['groupBy'];\n            await this.fileExports.createPdfFull(\n                this.form,\n                this.selectedExportRows,\n                this.queryParams,\n                this.columns.mapBy('external_type').join(','),\n                params,\n                null,\n            );\n        } catch (error) {\n            this.error.notify(error);\n        } finally {\n            set(this, 'showLoader', false);\n        }\n    }\n\n    @action\n    async exportCsv(selected) {\n        set(this, 'showLoader', true);\n        this.analytics.trackEvent({\n            category: this.form + ' report actions',\n            action: 'Csv export',\n            label: 'tt4-addon-report',\n        });\n        try {\n            const data = !isEmpty(selected) ? selected : await this.getExportData();\n            const columns = this.columns.map((col) => {\n                return { name: col.translated_name, ext: col.name, obj: col };\n            });\n            await this.fileExports.createCsv(this.form, data, columns);\n        } catch (error) {\n            this.error.notify(error);\n        } finally {\n            set(this, 'showLoader', false);\n        }\n    }\n\n    @action\n    async exportExcel(params, base64 = false, includeAllPages = false) {\n        set(this, 'showLoader', true);\n        this.analytics.trackEvent({\n            category: this.form + ' report actions',\n            action: 'Excel export',\n            label: 'tt4-addon-report',\n        });\n        try {\n            let filters = this.addFiltersToPdf();\n            let data =\n                !isEmpty(this.selectedExportRows) && !includeAllPages\n                    ? this.selectedExportRows\n                    : await this.getExportData();\n            let columns = this.columns.map((col) => {\n                return { name: col.translated_name, ext: col.name, obj: col };\n            });\n            const sumRow = params.addSumRow ? this.getExcelSumRow(data) : false;\n            let excelJSON = this.fileExports.createExcelJSONFromForm(\n                this.form,\n                data,\n                columns,\n                filters,\n                sumRow,\n            );\n            if (base64) return await this.fileExports.createBase64ExcelFromJSON(excelJSON);\n            await this.fileExports.createExcelFromJSON(excelJSON);\n        } catch (error) {\n            this.error.notify(error);\n        } finally {\n            set(this, 'showLoader', false);\n        }\n    }\n\n    @action\n    handleExportActions(params) {\n        switch (params.type) {\n            case 'export_pdf':\n                this.exportPdf(this.selectedExportRows, params);\n                break;\n            case 'export_pdf_full':\n                this.exportPdfFull(params);\n                break;\n            case 'export_excel':\n                this.exportExcel(params);\n                break;\n        }\n        set(this, 'showExportModal', false);\n    }\n\n    @action\n    saveRows() {\n        this.saveDirtyRecords();\n    }\n\n    @action\n    async toggleInlineEdit() {\n        const reportElement = document.querySelector('.ember-movenium-table');\n        if (get(this, 'inlineEdit')) {\n            this.analytics.trackEvent({\n                category: this.form + ' report inline edit',\n                action: 'disable',\n                label: 'tt4-addon-report',\n            });\n            //if we are closing inline edit, check for dirty/new/invalid records and prompt user if closing is okay\n            let dirtyRecords = [];\n            let reloadPromises = [];\n\n            await this.data.forEach((record) => {\n                if (\n                    get(record, 'hasDirtyAttributes') ||\n                    get(record, 'isNew') ||\n                    !get(record, 'isValid')\n                ) {\n                    dirtyRecords.push(record);\n                }\n            });\n\n            //if we have dirty records we want to rollback to their previous state\n            if (!isEmpty(dirtyRecords)) {\n                let confirm = await this.dialogs.confirm(this.intl.t('report.confirm_unsaved'));\n\n                if (!confirm) return;\n\n                dirtyRecords.forEach((record) => {\n                    record.rollbackAttributes();\n                    if (!get(record, 'isDeleted')) reloadPromises.push(record.reload());\n                });\n            }\n\n            await Promise.all(reloadPromises);\n\n            //filter out removed records from data\n            let newData = await get(this, 'data').filter((record) => {\n                if (get(record, 'isDeleted')) {\n                    this.cachedRowCount--;\n                    return false;\n                } else return true;\n            });\n\n            set(this, 'data', newData);\n\n            set(this, 'inlineEdit', false);\n            // remove class from report table to disable inline edit styles\n            if (reportElement) {\n                reportElement.classList.remove('ember-movenium-table-inline-edit');\n            }\n        } else {\n            let showInlineEdit = true;\n            // if we are opening inline edit, first check that there are no more than 25 rows on the report and if there are, show a confirm dialog\n            // this is because inline edit might be buggy or slow if there are too many rows on the report\n            if (this.rowsPerPage !== 25) {\n                showInlineEdit = await this.dialogs.confirm(\n                    this.intl.t('report.confirm_inline_edit'),\n                );\n            }\n            if (showInlineEdit) {\n                this.analytics.trackEvent({\n                    category: this.form + ' report inline edit',\n                    action: 'enable',\n                    label: 'tt4-addon-report',\n                });\n                this.selectedRows = [];\n                if (this.metaRowCount && !this.cachedRowCount)\n                    set(this, 'cachedRowCount', this.metaRowCount);\n                set(this, 'inlineEdit', true);\n                // add class to report table to enable inline edit styles\n                // this opens the report in full without table scroll bars\n                // this is needed to make the editing of rows work properly in edit mode\n                if (reportElement) {\n                    reportElement.classList.add('ember-movenium-table-inline-edit');\n                }\n            }\n        }\n    }\n\n    @action\n    async changeStatus(selected, status) {\n        if (isEmpty(selected)) return;\n        this.analytics.trackEvent({\n            category: this.form + ' report more actions',\n            action: 'Change status',\n            label: 'tt4-addon-report',\n        });\n        if (this.metaRowCount > selected.length && selected.length === this.data.length) {\n            this.setParamsForStatusChangeAllPages(selected, status, null);\n        }\n        this.setDatesForFastExporter('clear');\n        let closedToApprovedRows = [];\n        for (let row of selected) {\n            this.setDatesForFastExporter(row.date);\n            if (row.status === 'closed' && status === 'approved') {\n                closedToApprovedRows.push(row);\n                continue;\n            }\n            set(row, 'status', status);\n            try {\n                await row.save();\n                row.reload();\n            } catch (error) {\n                this.error.notify(error);\n                row.rollbackAttributes();\n            }\n        }\n        await this.handleClosedToApprovedRows(closedToApprovedRows);\n        this.statusChanged(status);\n    }\n\n    @action\n    openExportModal(selected, type) {\n        set(this, 'showExportModal', true);\n        set(this, 'emailError', false);\n        set(this, 'exportInitType', type);\n        set(this, 'selectedExportRows', selected);\n        set(this, 'showApprovalLinkSelection', this.showApprovalLink);\n    }\n\n    @action\n    handleLock(selected, act) {\n        if (isEmpty(selected)) return;\n        if (!this.Collector.testNeeds(['userlevel=5'])) return;\n\n        this.analytics.trackEvent({\n            category: this.form + ' report more actions',\n            action: act + ' rows',\n            label: 'tt4-addon-report',\n        });\n\n        if (this.metaRowCount > selected.length && selected.length === this.data.length) {\n            this.setParamsForStatusChangeAllPages(selected, null, act);\n        }\n\n        selected.forEach((row) => {\n            this.lockOrUnlock(row, act);\n        });\n    }\n\n    @action\n    closeShowChangeStatusForAllPages() {\n        set(this, 'showChangeStatusForAllPages', false);\n    }\n\n    @action\n    showOrHideRemoved() {\n        if (this.showRemoved) {\n            set(this, 'showRemoved', false);\n        } else {\n            set(this, 'showRemoved', true);\n        }\n        this.updateReport();\n    }\n\n    @action\n    async handleRemove(selected, act) {\n        if (isEmpty(selected)) return;\n        if (act === 'remove') {\n            let con = await this.dialogs.confirm(this.intl.t('report.confirm_delete'));\n            if (con) {\n                for (let row of selected) {\n                    await row.destroyRecord();\n                    await row.unloadRecord();\n                }\n                this.updateReport();\n            }\n        } else {\n            let con = await this.dialogs.confirm(this.intl.t('report.confirm_restore_rows'));\n            if (con) {\n                let form_plural = pluralize(this.form).camelize();\n                let body = {};\n                body[this.form.camelize()] = { 'row_info.status': 'normal' };\n                for (let row of selected) {\n                    await this.apiservice.request(\n                        'capi',\n                        '/' + form_plural + '/' + row.id + '?validation=off',\n                        'PUT',\n                        body,\n                    );\n                    await row.unloadRecord();\n                }\n                this.updateReport();\n            }\n        }\n    }\n\n    @action\n    async sendEmail(to, title, content, params) {\n        set(this, 'showLoader', true);\n        let emailData = this.allPagesSelected ? this.getExportData() : this.selectedExportRows;\n        let base64string = await this.getPdfAttachmentForEmail(params, emailData);\n        let rowids = emailData ? emailData.map((item) => get(item, 'id')) : [];\n        const body = {\n            to_address: to,\n            email: base64string,\n            content: content,\n            lang: this.intl.primaryLocale,\n            includeApproval: get(params, 'approvalLink'),\n            form_name: this.form,\n            rowids: rowids,\n            header: title,\n            type: get(params, 'type'),\n            dontAttachImages: get(params, 'imgLocation') === 'hideImages', // this param prevents attaching images to email, if customer doesn't want images at all\n        };\n        let res = await this.apiservice.request('ttapi', '/sendReportAsEmail', 'POST', body);\n        res.ok ? set(this, 'emailSent', true) : set(this, 'emailError', true);\n\n        if (params.approvalLink && res.ok) this.addHistoryForSentRows(to, this.form, rowids);\n\n        set(this, 'showLoader', false);\n    }\n\n    @action\n    setRowsPerPage(RowsPerPage) {\n        this.analytics.trackEvent({\n            category: this.form + ' report rows per page',\n            action: RowsPerPage,\n            label: 'tt4-addon-report',\n        });\n        set(this, 'currentPage', 1);\n        set(this, 'rowsPerPage', RowsPerPage);\n        this.localStorageWrapper.setUserSetting(this.defaultLimitKey, RowsPerPage);\n        this.updateReport();\n    }\n\n    @action\n    updateSorts(sorts) {\n        if (get(sorts, 'firstObject'))\n            this.analytics.trackEvent({\n                category: this.form + ' report sort by column',\n                action: get(sorts, 'firstObject').valuePath,\n                label: 'tt4-addon-report',\n            });\n        this.sorts = sorts;\n        this.localStorageWrapper.setUserSetting(this.defaultSortKey, sorts);\n        this.reload();\n    }\n\n    @action\n    async mergeTemplates() {\n        await this.apiservice.request(\n            'ttapi',\n            `/mergeTemplates?form=${this.form}&filters=${this.showFilters}`,\n            'POST',\n        );\n        this.fetchTemplates();\n    }\n\n    @action\n    closeEditModal() {\n        this.showForm.rollbackAttributes();\n        this.showForm = null;\n    }\n\n    @action\n    saveResize(item) {\n        // do not save column size if old template activated\n        if (this.oldTemplateFromLS) return;\n\n        //save column size to template if some template is active\n        if (this.currentFormTemplate) return this.saveColumnSizeForTemplate(item);\n\n        //if size object exists update it else create new one\n        const existingSizeObject = this.columnSizes.findBy('valuePath', item.valuePath);\n        if (existingSizeObject) set(existingSizeObject, 'width', item.width);\n        else this.columnSizes.pushObject({ valuePath: item.valuePath, width: item.width });\n\n        this.localstorage.setItem(this.localStorageKey + '_columnSizes', this.columnSizes);\n    }\n\n    @action\n    setSelectedRows(rows) {\n        set(this, 'selectedRows', rows);\n        if (this.showLocationMap) this.setMapMarkers(rows);\n    }\n\n    async handleClosedToApprovedRows(rows) {\n        if (isEmpty(rows)) return;\n        // There's no way around it since it's impossible to click dialog box in component test\n        let con = Ember.testing\n            ? true\n            : await this.dialogs.confirm(\n                  this.intl.t('report.confirm_closed_to_approved', { count: rows.length }),\n              );\n        if (!con) return;\n\n        for (let row of rows) {\n            set(row, 'status', 'approved');\n            try {\n                await row.save();\n                row.reload();\n            } catch (error) {\n                this.error.notify(error);\n                row.rollbackAttributes();\n            }\n        }\n    }\n\n    saveColumnSizeForTemplate(item) {\n        let template = this.store.peekRecord('form-report-template', this.currentFormTemplate);\n\n        let newColumns = JSON.parse(template.columns);\n        newColumns.findBy('valuePath', item.valuePath).width = item.width;\n\n        set(template, 'columns', JSON.stringify(newColumns));\n        template.save();\n\n        this.localstorage.setItem(this.localStorageKey + '_selectedTemplate', {\n            data: template,\n            current: template.id,\n        });\n    }\n\n    handleGroupBy(value) {\n        set(this, 'filterByValues.order', this.getOrder(value));\n        if (value) {\n            set(this, 'sumReport', true);\n            const selectedFields = value\n                .split(',')\n                .map((val) => this.allColumns.find((col) => col.name === val));\n            set(\n                this,\n                'columns',\n                selectedFields.concat(\n                    this.columns.filter(\n                        (col) =>\n                            this.groupableColumns.includes(col.type) &&\n                            !value.split(',').includes(col.name),\n                    ),\n                ),\n            );\n        } else {\n            this.setVisibleColumns();\n            set(this, 'sumReport', false);\n        }\n    }\n\n    getOrder(value) {\n        if (value) return value;\n        if (this.args.filter && this.args.filter['order']) return this.args.filter['order'];\n        return null;\n    }\n\n    checkCustomQueryParams(params) {\n        if (!this.custParams) return params;\n\n        const split = this.custParams.includes(':')\n            ? this.custParams.split(':')\n            : this.custParams.split('_');\n\n        if (isPresent(params[split[0]])) {\n            params[this.custParams] = params[split[0]];\n            delete params[split[0]];\n        }\n        return params;\n    }\n\n    getExcelSumRow(data) {\n        const sumData = getSums(data, this.columns, this.form, this.Collector, this.forms, true);\n        const sumValues = sumData[0] ? Object.values(sumData[0]) : [];\n        sumValues.unshift(''); // need to add empty row first like general-report does, so sums match to correct columns in ttapi2\n        return sumValues.map((row) => (isHTMLSafe(row) ? row.string : row));\n    }\n\n    fetchTemplates() {\n        this.formReportTemplates = this.store.query('form-report-template', {\n            'filter[attributes.form]': this.form,\n        });\n    }\n\n    async setTemplateValues(template) {\n        const currentLsTemplate = this.localstorage.getItem(\n            this.localStorageKey + '_selectedTemplate',\n        )\n            ? this.localstorage.getItem(this.localStorageKey + '_selectedTemplate').current\n            : null;\n        set(this, 'currentFormTemplate', currentLsTemplate ? currentLsTemplate : null);\n        set(this, 'filterByValues', {});\n        if (template.filters) {\n            const dateRangeOptions = [\n                'this_week',\n                'last_week',\n                'this_month',\n                'last_month',\n                'this_year',\n                'last_year',\n                'this_salaryperiod',\n            ];\n            const parsedFilters = JSON.parse(template.filters);\n            if (!this.currentSalaryPeriod) await this.setCurrentPeriod();\n            Object.entries(parsedFilters).forEach((filter) => {\n                const filterValue = dateRangeOptions.includes(filter[1])\n                    ? this.returnDateValue(filter[1])\n                    : filter[1];\n\n                if (filter[0].includes('.')) {\n                    const splitted = filter[0].split('.');\n                    let fIndex = splitted.length > 2 ? 1 : 0;\n                    this.filterByValues[splitted[fIndex] + '[' + splitted[fIndex + 1] + ']'] =\n                        filterValue;\n                } else {\n                    this.filterByValues[filter[0]] = filterValue;\n                }\n            });\n            const additionalFilters = Object.keys(parsedFilters).filter((p) => p.includes('.'));\n            const normalFilters = Object.keys(parsedFilters).filter((p) => !p.includes('.'));\n\n            set(this, 'filterOrder', template.filterOrder);\n            set(this, 'showFilters', normalFilters.join(',') + ',q,groupBy');\n            set(this, 'additionalFilters', additionalFilters.join(','));\n        }\n        if (template.limit) set(this, 'rowsPerPage', template.limit);\n        if (template.sums) {\n            const sumFields = JSON.parse(template.sums)\n                .map((sum) => sum.name)\n                .join(',');\n            this.filterByValues['groupBy'] = sumFields;\n            this.filterByValues['order'] = sumFields;\n        }\n        set(this, 'showOnlySum', template.sumType === 'onlysum');\n        set(this, 'sumReport', template.sumType === 'sumby');\n        notifyPropertyChange(this, 'queryParams');\n    }\n\n    returnDateValue(value) {\n        switch (value) {\n            case 'this_week':\n                return (\n                    moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('isoWeek').format('YYYY-MM-DD')\n                );\n            case 'last_week':\n                return (\n                    moment().subtract(1, 'week').startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().subtract(1, 'week').endOf('isoWeek').format('YYYY-MM-DD')\n                );\n            case 'this_month':\n                return (\n                    moment().startOf('month').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('month').format('YYYY-MM-DD')\n                );\n            case 'last_month':\n                return (\n                    moment().subtract(1, 'month').startOf('month').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().subtract(1, 'month').endOf('month').format('YYYY-MM-DD')\n                );\n            case 'this_year':\n                return (\n                    moment().startOf('year').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('year').format('YYYY-MM-DD')\n                );\n            case 'last_year':\n                return (\n                    moment().subtract(1, 'year').startOf('year').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().subtract(1, 'year').endOf('year').format('YYYY-MM-DD')\n                );\n            case 'this_salaryperiod':\n                return this.currentSalaryPeriod;\n            default:\n                return (\n                    moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('isoWeek').format('YYYY-MM-DD')\n                );\n        }\n    }\n\n    async setCurrentPeriod() {\n        let salaryPeriods = this.store.peekAll('wage-period');\n        if (isEmpty(salaryPeriods)) salaryPeriods = await this.store.findAll('wage-period');\n        if (isEmpty(salaryPeriods))\n            return (this.currentSalaryPeriod =\n                moment().startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('month').format('YYYY-MM-DD'));\n\n        const currentDate = moment().format('YYYY-MM-DD');\n        const currentPeriods = salaryPeriods.filter((period) => {\n            return period.period_start_date <= currentDate && period.period_end_date >= currentDate;\n        });\n        if (isEmpty(currentPeriods))\n            return (this.currentSalaryPeriod =\n                moment().startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('month').format('YYYY-MM-DD'));\n        // Just set first that is found\n        this.currentSalaryPeriod =\n            currentPeriods[0].period_start_date + '_' + currentPeriods[0].period_end_date;\n    }\n\n    async getProjectInfo(project) {\n        let projects = await this.store.query('project', { id: project.id });\n        return get(projects, 'firstObject');\n    }\n\n    getLocationMapInfo(row) {\n        if (row.location_map) {\n            return row.location_map;\n        } else if (row.project) {\n            return this.getProjectInfo(row.project);\n        } else {\n            return null;\n        }\n    }\n\n    setParamsForStatusChangeAllPages(selected, status = null, action = null) {\n        let visibleRowIds = selected.map((row) => get(row, 'id'));\n        const queryParams = this.queryParams;\n        queryParams['limit'] = 'all';\n        queryParams['sideload'] = true;\n\n        setProperties(this.changeStatusForAllPagesParams, {\n            visibleRowIds: visibleRowIds,\n            requestParams: queryParams,\n            form: this.form,\n            status: status,\n            action: action,\n            rowCount: this.metaRowCount,\n        });\n        set(this, 'showChangeStatusForAllPages', true);\n    }\n\n    statusChanged(toStatus) {\n        if (\n            toStatus === 'approved' &&\n            this.Collector.testNeeds(['products.vismanet||products.severa']) &&\n            this.form === 'worktime'\n        ) {\n            this.showFastExporter = true;\n        }\n\n        let surveyTheseForms = ['worktime', 'abcense'];\n        if (toStatus === 'approved' && surveyTheseForms.includes(this.form))\n            this.surveys.initializeAndRun('row_approved'); // show wootric CES-survey after row approved\n    }\n\n    setDatesForFastExporter(date) {\n        if (date === 'clear') {\n            return (this.datesForFastExporter = { from: null, to: null });\n        }\n\n        if (\n            !this.datesForFastExporter.from ||\n            moment(date).isBefore(this.datesForFastExporter.from)\n        ) {\n            this.datesForFastExporter['from'] = date;\n        }\n\n        if (!this.datesForFastExporter.to || moment(date).isAfter(this.datesForFastExporter.to)) {\n            this.datesForFastExporter['to'] = date;\n        }\n    }\n\n    async createPdf(selected, params, mode = 'download', includeAllPages = false) {\n        const columnsOnReport = this.columns.map((col) => col.external_type).join(',');\n        let showColumns = params.template\n            ? get(params, 'template.columns')\n            : columnsOnReport\n            ? columnsOnReport\n            : null;\n        let settings = { form: this.form, show_columns: showColumns };\n        let data = selected.length && !includeAllPages ? this.data : this.getExportData();\n        let element = await this.fileExports.createPdfElement(\n            data,\n            selected,\n            settings,\n            this.columns,\n            params,\n            includeAllPages,\n        );\n        let elements = [element];\n        let filters_body = this.addFiltersToPdf();\n        if (filters_body.length > 0) {\n            elements.unshift({\n                table: { body: filters_body },\n                layout: 'noBorders',\n            });\n        }\n        let file = await createPdfFromElements(this, elements, mode, '', 8, params);\n\n        if (window.cordova) {\n            this.cordova.openFile(file, 'application/pdf');\n        }\n        return file;\n    }\n\n    addFiltersToPdf() {\n        let filterKeys = Object.keys(this.filterByValues);\n        if (!filterKeys) return [];\n        let pdf_filters_body = filterKeys.map((key) => {\n            let filterValues = this.filterByValues[key];\n            if (!filterValues || !this.forms.fieldExists(this.form, key)) return;\n            let field = this.forms.field(this.form, key);\n\n            let filterNameInPdf = this.setFilterNameInPdf(key);\n            let filterValueInPdf = '';\n\n            if (filterValues.includes(',')) {\n                filterValues.split(',').forEach((value) => {\n                    filterValueInPdf +=\n                        this.Collector._format_(\n                            field.type === 'database' ? parseInt(value) : value,\n                            this.form,\n                            key,\n                            'pdf',\n                            this.data,\n                        ) + ', ';\n                });\n                filterValueInPdf = filterValueInPdf.slice(0, -2);\n            } else {\n                filterValues = field.type === 'database' ? parseInt(filterValues) : filterValues;\n                if (key.includes(':')) {\n                    filterValueInPdf += this.Collector._format_(\n                        filterValues,\n                        this.form,\n                        key.split(':')[0],\n                        'pdf',\n                        this.data,\n                    );\n                } else {\n                    filterValueInPdf += this.Collector._format_(\n                        filterValues,\n                        this.form,\n                        key,\n                        'pdf',\n                        this.data,\n                    );\n                }\n            }\n            return [filterNameInPdf + ': ' + filterValueInPdf];\n        });\n\n        return pdf_filters_body.filter((item) => item);\n    }\n\n    setFilterNameInPdf(key) {\n        let field = this.forms.fieldArray(this.form).findBy('name', key);\n\n        if (this.intl.exists(this.form + '.' + key)) {\n            return this.intl.t(this.form + '.' + key);\n        } else if (field && field.translated_name) {\n            return field.translated_name;\n        } else if (key.includes(':')) {\n            return (\n                this.intl.t(this.form + '.' + key.split(':')[0]) +\n                ' - ' +\n                this.intl.t(this.form + '.' + key.split(':')[1])\n            );\n        } else {\n            return key;\n        }\n    }\n\n    async getPdfAttachmentForEmail(params, data) {\n        switch (params.type) {\n            case 'export_pdf':\n                return await this.createPdf(\n                    this.selectedExportRows,\n                    params,\n                    'base64',\n                    this.allPagesSelected,\n                );\n            case 'export_pdf_full':\n                if (isEmpty(this.queryParams['groupBy'])) delete this.queryParams['groupBy'];\n                return await this.fileExports.createPdfFull(\n                    this.form,\n                    data,\n                    this.queryParams,\n                    this.args.showColumns,\n                    params,\n                    'base64',\n                );\n            case 'export_excel':\n                return await this.exportExcel(params, true, this.allPagesSelected);\n        }\n    }\n\n    setJsonapiParams(params) {\n        if (!params) return {};\n        let filters = {};\n        Object.entries(params).forEach((param) => {\n            if (!param[1]) return; //if value is empty, continue\n            let field = this.forms.field(this.form, param[0]);\n            if (field.type === 'database') {\n                filters['filter[relationships.' + param[0] + '.data.id]'] = param[1];\n            } else {\n                filters['filter[attributes.' + param[0] + ']'] = param[1];\n            }\n        });\n        return filters;\n    }\n\n    setVisibleColumns() {\n        const visibleList = this.localstorage.getItem(this.form + '_defaultColumns');\n        let columns = [...this.allColumns];\n        if (visibleList) {\n            columns = visibleList.reduce((acc, column) => {\n                let columnObject = this.allColumns.find(\n                    (object) => object.external_type === column,\n                );\n                if (columnObject) acc.push(columnObject);\n                return acc;\n            }, []);\n        }\n        set(this, 'columns', columns);\n    }\n\n    setDefaultLimit() {\n        let key = this.localStorageKey ? this.localStorageKey + '_defaultLimit' : this.form + '';\n        if (key) set(this, 'defaultLimitKey', key);\n        let limitfromLS = this.localStorageWrapper.getUserSetting(key);\n        set(this, 'rowsPerPage', limitfromLS.length != 0 ? limitfromLS : this.rowsPerPage);\n    }\n\n    setDefaultOrder() {\n        this.defaultSortKey = this.localStorageKey\n            ? this.localStorageKey + '_defaultSort'\n            : this.form + '_defaultSort';\n        let sortfromLS = this.localStorageWrapper.getUserSetting(this.defaultSortKey);\n\n        if (!sortfromLS.length && this.defaultSort) {\n            set(this, 'sorts', this.createSortArray(this.defaultSort));\n        }\n\n        if (sortfromLS.length) this.sorts = this.filterUnknownColumns(sortfromLS);\n\n        // TODO: Sort by first column on default\n    }\n\n    // this is needed ie in case some column is removed form report because some setting is turned off\n    filterUnknownColumns(sorts) {\n        const allowAlso = ['row_info.created', 'row_info.modified'];\n        const formFields = this.Collector.fieldArray(this.form).map((a) => a.name);\n        const allowThese = formFields.concat(allowAlso);\n        const filteredSorts = sorts.filter((sort) => allowThese.includes(sort.valuePath));\n\n        return filteredSorts;\n    }\n\n    mergeFilters(filters, merge) {\n        if (!merge) return;\n        for (const key in merge) {\n            const value = this.getIdifRecord(merge[key]);\n            if (value) filters[key] = value;\n        }\n    }\n\n    getIdifRecord(value) {\n        return value && typeof value === 'object' ? get(value, 'id') : value;\n    }\n\n    removeRow(row) {\n        get(this, 'dialogs')\n            .confirm(get(this, 'intl').t('report.confirm_delete'))\n            .then(this.removeOrNot.bind(this, row));\n    }\n\n    async restoreRow(row) {\n        const form_plural = pluralize(this.form).camelize();\n        let body = {};\n        body[this.form.camelize()] = { 'row_info.status': 'normal' };\n        await this.apiservice.request(\n            'capi',\n            '/' + form_plural + '/' + row.id + '?validation=off',\n            'PUT',\n            body,\n        );\n        this.updateReport();\n        this.evented.storeEvent('restore', this.form, null);\n    }\n\n    async copyRow(row) {\n        let newRecord = this.Collector.copyRecord(row);\n        set(newRecord, 'row_info', { privilege_edit: true, privilege_remove: true }); //fake some privileges to enable editing and removing of new row\n        let data = await get(this, 'data').toArray(); //toArray, because the result of a server query is immutable\n        data.unshiftObject(newRecord);\n        this.cachedRowCount++;\n        set(this, 'data', data);\n    }\n\n    async removeOrNot(row, answer) {\n        if (!answer) return;\n        await row.destroyRecord();\n        this.updateReport();\n        this.evented.storeEvent('delete', this.form, null);\n    }\n\n    async lockOrUnlock(row, action) {\n        let form_plural = pluralize(this.form).camelize();\n        let data = {};\n        data[this.form] = action === 'lock' ? { locked: true } : { locked: false };\n        try {\n            await this.apiservice.request(\n                'capi',\n                '/' + form_plural + '/' + row.id + '?validation=off',\n                'PUT',\n                data,\n            );\n            row.reload();\n        } catch (error) {\n            this.error.notify(error);\n            row.rollbackAttributes();\n        }\n    }\n\n    updateReport() {\n        set(this, 'selectedRows', []);\n        set(this, 'data', this.store.query(this.form, this.queryParams));\n    }\n\n    createSortString(sorts) {\n        return sorts\n            .map(\n                (item) =>\n                    (item.valuePath.includes('row_info.')\n                        ? this.getRowInfoSortString(item.valuePath)\n                        : item.valuePath) + (item.isAscending ? '-' : ''),\n            )\n            .join(',');\n    }\n\n    /**\n     * capi-3 takes orders in format ie. ?sort=-attributes.name,attributes.date\n     * @param {*} sorts\n     * @returns\n     */\n    createSortStringForJsonapi(sorts) {\n        return sorts\n            .map((item) => (item.isAscending ? '-' : '') + 'attributes.' + item.valuePath)\n            .join(',');\n    }\n\n    getRowInfoSortString(item) {\n        if (item == 'row_info.created') return 'id';\n        if (item == 'row_info.modified') return 'row_info_modified';\n        return item;\n    }\n\n    createSortArray(sorts) {\n        if (!sorts) return;\n        return sorts.split(',').map((item) => {\n            return item.slice(-1) == '-'\n                ? { valuePath: item.slice(0, -1), isAscending: true }\n                : { valuePath: item, isAscending: false };\n        });\n    }\n\n    createErrorInfoNotifications(errors) {\n        const errorArray = [];\n        errors.forEach((errorObj) => {\n            errorObj.errors.forEach((error) => {\n                errorArray.pushObject({\n                    index: errorObj.index,\n                    field: error.field,\n                    message: error.message,\n                });\n            });\n        });\n        // show maximum of three errors\n        errorArray.slice(0, 3).forEach((error) => {\n            const field = this.forms.fieldArray(this.form).findBy('name', error.field);\n            const message = this.intl.t('validation.errorinfo.error_on_row', {\n                index: error.index,\n                field: field.translated_name,\n                message: error.message,\n            });\n            this.notifications.error(message, {\n                autoClear: true,\n            });\n        });\n        // and how many errors were not shown\n        if (errorArray.length > 3) {\n            this.notifications.error(\n                this.intl.t('validation.errorinfo.and_more', { count: errorArray.length - 3 }),\n                {\n                    autoClear: true,\n                },\n            );\n        }\n    }\n\n    async saveDirtyRecords() {\n        const data = await get(this, 'data');\n\n        let savePromises = A([]);\n        let errors = A([]);\n        set(this, 'errors', errors);\n\n        //push all rows that have dirty attributes into a promise array\n        savePromises = data.map(async (record, index) => {\n            if (get(record, 'hasDirtyAttributes')) {\n                await record.validate(); //validate record. Do not send save request if it is invalid (in save function)\n                return this.saveRecordAndCatchErrors(record, errors, index);\n            }\n        });\n\n        //if promise array is empty display notification and return straight outta here, we don't need to do anyhting\n        if (isEmpty(savePromises)) {\n            this.notifications.warning(this.intl.t('general.no_saved_rows'), {\n                autoClear: true,\n            });\n            return;\n        }\n\n        await Promise.all(savePromises);\n\n        if (isEmpty(errors)) {\n            this.notifications.success(this.intl.t('general.saved'), {\n                autoClear: true,\n            });\n        } else {\n            set(this, 'errors', errors);\n            this.notifications.error(this.intl.t('general.no_saved_rows'), {\n                autoClear: true,\n            });\n            this.createErrorInfoNotifications(errors);\n        }\n    }\n\n    getExportData() {\n        let params = get(this, 'queryParams');\n        params.limit = 'all';\n        return this.store.query(this.form, params);\n    }\n\n    async saveRecordAndCatchErrors(record, errors, index) {\n        //do not send save request is record is invalid\n        try {\n            if (get(record, 'isValid')) {\n                //save via save-the-children util\n                return await save_record(record, this);\n            } else {\n                const errorArray = get(record, 'errors').map((error) => {\n                    return { field: get(error, 'attribute'), message: get(error, 'message') };\n                });\n                errors.pushObject({\n                    index: index + 1,\n                    message: get(record, 'errors.messages.firstObject'),\n                    errors: errorArray,\n                });\n            }\n        } catch (saveError) {\n            const err = this.error.toError(saveError);\n            err['index'] = index + 1; //arrays start at 0 (╯°□°)╯︵ ┻━┻\n            errors.pushObject(err);\n            return err;\n        }\n    }\n\n    onStoreEvent(params) {\n        if (\n            params.action === 'update' ||\n            (params.action === 'insert' && params.type === this.form)\n        ) {\n            this.updateReport();\n        }\n        if (params.action === 'toggleRemoved' && params.type === this.form) {\n            this.showOrHideRemoved();\n        }\n        if (params.action === 'remove' && params.type === this.form && params.record)\n            this.removeRow(params.record);\n        if (params.action === 'restore' && params.type === this.form && params.record)\n            this.restoreRow(params.record);\n    }\n\n    /*\n     * If trying to filter with some subfields and also by its parent field then change parent field to be array also\n     * ie. If trying to filter by user[worktimegrop] = 1234 and user = 4321 change user param to be user[id] = 4321\n     */\n    setParentFieldParamsAsArray(params) {\n        Object.keys(params).forEach((key) => {\n            if (key.includes('[')) {\n                const parentField = key.split('[')[0];\n                if (parentField in params) {\n                    params[parentField + '[id]'] = params[parentField];\n                    delete params[parentField];\n                }\n            }\n        });\n    }\n    async setMapMarkers(selected) {\n        let rows = selected.length > 0 ? selected : this.data.toArray();\n\n        if (!rows) return;\n\n        let d = defer();\n        let locs = [];\n        let i = 0;\n        let totalLength = rows.length;\n        await Promise.all(\n            rows.map(async (row) => {\n                if (!row.location && !row.end_location && !row.location_map) {\n                    totalLength--;\n                    return;\n                }\n\n                let locationMapInfo = await this.getLocationMapInfo(row);\n                let loc = {};\n\n                if (locationMapInfo) {\n                    if (\n                        typeOf(locationMapInfo) === 'object' ||\n                        typeOf(locationMapInfo) === 'instance'\n                    ) {\n                        loc.project = JSON.parse(locationMapInfo.location_map);\n                        if (loc.project) loc.project.label = get(locationMapInfo, 'name');\n                    } else {\n                        loc.project = JSON.parse(locationMapInfo);\n                        loc.project.label = row.name ? row.name : null;\n                    }\n                }\n                if (row.location) loc.wStartLoc = JSON.parse(row.location);\n                if (row.end_location) loc.wEndLoc = JSON.parse(row.end_location);\n                loc.wLabel = row.user\n                    ? get(row.user, 'lastname') + ' ' + get(row.user, 'firstname')\n                    : null;\n\n                locs.push(loc);\n\n                if (++i === totalLength) {\n                    if (row.end_location || row.location) {\n                        set(this, 'startEndMarkers', locs);\n                    } else {\n                        set(this, 'locationMarkers', locs);\n                    }\n\n                    d.resolve();\n                }\n            }),\n        );\n        set(this, 'showLocationMap', true);\n        return d;\n    }\n\n    addHistoryForSentRows(email, form, rowids) {\n        const text = this.intl.t('general.history_approval_link_sent', { email: email });\n        return rowids.forEach((rowid) => {\n            return this.Collector.ajax({\n                method: 'put',\n                url: form + 's/' + rowid,\n                data: JSON.stringify({ _history: text }),\n            });\n        });\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"\\n<div class=\\\"ember-movenium-form-report-action-bar\\\">\\n    {{#if @inlineEdit}}\\n        {{#if this.showCopy}}<span role=\\\"button\\\" name=\\\"copy-button\\\" data-anchor=\\\"action-bar-copy-button\\\" {{on 'click' (fn this.clicked \\\"copy\\\")}} class=\\\"copy-button\\\">{{svg-jar \\\"CopyRow\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n        {{#if this.showLock}}<span role=\\\"button\\\" name=\\\"lock-button\\\" {{on 'click' (fn this.clicked \\\"unlock\\\")}} class=\\\"lock-button\\\" title={{t \\\"report.unlock_selected_rows\\\"}}>{{svg-jar \\\"Lock\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n    {{else}}\\n        {{#if this.showLock}}\\n            {{#if this.showOverview}}<span role=\\\"button\\\" name=\\\"overview-button\\\" data-anchor=\\\"action-bar-overview-button\\\" {{on 'click' (fn this.clicked \\\"overview\\\")}} class=\\\"overview-button\\\" title={{t \\\"history.action.show_data\\\"}}>{{svg-jar \\\"View\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showHistory}}<span role=\\\"button\\\" name=\\\"history-button\\\" data-anchor=\\\"action-bar-history-button\\\" {{on 'click' (fn this.clicked \\\"history\\\")}} class=\\\"history-button\\\" title={{t \\\"report.customer.history\\\"}}>{{svg-jar \\\"MoveSearch\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            <span role=\\\"button\\\" name=\\\"lock-button\\\" data-anchor=\\\"action-bar-lock-button\\\" {{on 'click' (fn this.clicked \\\"unlock\\\")}} class=\\\"lock-button\\\" title={{t \\\"report.unlock_selected_rows\\\"}}>{{svg-jar \\\"Lock\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>\\n        {{else if this.rowIsRemoved}}\\n            {{#if this.showOverview}}<span role=\\\"button\\\" name=\\\"overview-button\\\" data-anchor=\\\"action-bar-overview-button\\\" {{on 'click' (fn this.clicked \\\"overview\\\")}} class=\\\"overview-button\\\" title={{t \\\"history.action.show_data\\\"}}>{{svg-jar \\\"View\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showRemove}}<span role=\\\"button\\\" name=\\\"restore-button\\\" data-anchor=\\\"action-bar-restore-button\\\" {{on 'click' (fn this.clicked \\\"restore\\\")}} class=\\\"restore-button\\\" title={{t \\\"report.restore_rows\\\"}}>{{svg-jar \\\"ReuseFilled\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showHistory}}<span role=\\\"button\\\" name=\\\"history-button\\\" data-anchor=\\\"action-bar-history-button\\\" {{on 'click' (fn this.clicked \\\"history\\\")}} class=\\\"history-button\\\" title={{t \\\"report.customer.history\\\"}}>{{svg-jar \\\"MoveSearch\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n        {{else}}\\n            {{#if this.showOverview}}<span role=\\\"button\\\" name=\\\"overview-button\\\" data-anchor=\\\"action-bar-overview-button\\\" {{on 'click' (fn this.clicked \\\"overview\\\")}} class=\\\"overview-button\\\" title={{t \\\"history.action.show_data\\\"}}>{{svg-jar \\\"View\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showEdit}}<span role=\\\"button\\\" name=\\\"edit-button\\\" data-anchor=\\\"action-bar-edit-button\\\" {{on 'click' (fn this.clicked \\\"edit\\\")}} class=\\\"edit-button\\\" title={{t \\\"general.edit\\\"}}>{{svg-jar \\\"MovePencil\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showHistory}}<span role=\\\"button\\\" name=\\\"history-button\\\" data-anchor=\\\"action-bar-history-button\\\" {{on 'click' (fn this.clicked \\\"history\\\")}} class=\\\"history-button\\\" title={{t \\\"report.customer.history\\\"}}>{{svg-jar \\\"MoveSearch\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showRemove}}<span role=\\\"button\\\" name=\\\"remove-button\\\" data-anchor=\\\"action-bar-remove-button\\\" {{on 'click' (fn this.clicked \\\"remove\\\")}} class=\\\"remove-button\\\" title={{t \\\"report.delete_rows\\\"}}>{{svg-jar \\\"Delete\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n        {{/if}}\\n        {{#if this.showQueryWarning}}\\n            <span role=\\\"button\\\" class=\\\"warning-button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"21\\\" height=\\\"21\\\" viewBox=\\\"0 0 160 160\\\">\\n                <path id=\\\"Exclusion_1\\\" data-name=\\\"Exclusion 1\\\" d=\\\"M80,160a80.591,80.591,0,0,1-16.123-1.625,79.562,79.562,0,0,1-28.606-12.037,80.234,80.234,0,0,1-28.984-35.2A79.6,79.6,0,0,1,1.625,96.123a80.78,80.78,0,0,1,0-32.246A79.562,79.562,0,0,1,13.663,35.271,80.234,80.234,0,0,1,48.86,6.287,79.6,79.6,0,0,1,63.877,1.625a80.78,80.78,0,0,1,32.246,0,79.562,79.562,0,0,1,28.606,12.037,80.234,80.234,0,0,1,28.984,35.2,79.6,79.6,0,0,1,4.661,15.017,80.78,80.78,0,0,1,0,32.246,79.562,79.562,0,0,1-12.037,28.606,80.234,80.234,0,0,1-35.2,28.984,79.6,79.6,0,0,1-15.017,4.661A80.591,80.591,0,0,1,80,160ZM80,26l-3.385,5.8L30.191,112.2,26.928,118H133.072l-3.264-5.8L83.385,31.8Zm39.653,84.262H40.347L80,41.475l39.653,68.788h0ZM76.131,94.788v7.737h7.737V94.788Zm0-27.08V90.92h7.737V67.708Z\\\"/>\\n            </svg>\\n            <EmberPopover class=\\\"test-popover-example\\\" @popperContainer=\\\"body\\\" @side=\\\"left\\\" as |popover|>\\n                {{t \\\"report.trimmed_query_warning\\\"}}\\n            </EmberPopover>\\n        </span>           \\n        {{/if}}\\n    {{/if}}\\n\\n    {{yield @row}}\\n</div>\\n\", {\"contents\":\"\\n<div class=\\\"ember-movenium-form-report-action-bar\\\">\\n    {{#if @inlineEdit}}\\n        {{#if this.showCopy}}<span role=\\\"button\\\" name=\\\"copy-button\\\" data-anchor=\\\"action-bar-copy-button\\\" {{on 'click' (fn this.clicked \\\"copy\\\")}} class=\\\"copy-button\\\">{{svg-jar \\\"CopyRow\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n        {{#if this.showLock}}<span role=\\\"button\\\" name=\\\"lock-button\\\" {{on 'click' (fn this.clicked \\\"unlock\\\")}} class=\\\"lock-button\\\" title={{t \\\"report.unlock_selected_rows\\\"}}>{{svg-jar \\\"Lock\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n    {{else}}\\n        {{#if this.showLock}}\\n            {{#if this.showOverview}}<span role=\\\"button\\\" name=\\\"overview-button\\\" data-anchor=\\\"action-bar-overview-button\\\" {{on 'click' (fn this.clicked \\\"overview\\\")}} class=\\\"overview-button\\\" title={{t \\\"history.action.show_data\\\"}}>{{svg-jar \\\"View\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showHistory}}<span role=\\\"button\\\" name=\\\"history-button\\\" data-anchor=\\\"action-bar-history-button\\\" {{on 'click' (fn this.clicked \\\"history\\\")}} class=\\\"history-button\\\" title={{t \\\"report.customer.history\\\"}}>{{svg-jar \\\"MoveSearch\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            <span role=\\\"button\\\" name=\\\"lock-button\\\" data-anchor=\\\"action-bar-lock-button\\\" {{on 'click' (fn this.clicked \\\"unlock\\\")}} class=\\\"lock-button\\\" title={{t \\\"report.unlock_selected_rows\\\"}}>{{svg-jar \\\"Lock\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>\\n        {{else if this.rowIsRemoved}}\\n            {{#if this.showOverview}}<span role=\\\"button\\\" name=\\\"overview-button\\\" data-anchor=\\\"action-bar-overview-button\\\" {{on 'click' (fn this.clicked \\\"overview\\\")}} class=\\\"overview-button\\\" title={{t \\\"history.action.show_data\\\"}}>{{svg-jar \\\"View\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showRemove}}<span role=\\\"button\\\" name=\\\"restore-button\\\" data-anchor=\\\"action-bar-restore-button\\\" {{on 'click' (fn this.clicked \\\"restore\\\")}} class=\\\"restore-button\\\" title={{t \\\"report.restore_rows\\\"}}>{{svg-jar \\\"ReuseFilled\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showHistory}}<span role=\\\"button\\\" name=\\\"history-button\\\" data-anchor=\\\"action-bar-history-button\\\" {{on 'click' (fn this.clicked \\\"history\\\")}} class=\\\"history-button\\\" title={{t \\\"report.customer.history\\\"}}>{{svg-jar \\\"MoveSearch\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n        {{else}}\\n            {{#if this.showOverview}}<span role=\\\"button\\\" name=\\\"overview-button\\\" data-anchor=\\\"action-bar-overview-button\\\" {{on 'click' (fn this.clicked \\\"overview\\\")}} class=\\\"overview-button\\\" title={{t \\\"history.action.show_data\\\"}}>{{svg-jar \\\"View\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showEdit}}<span role=\\\"button\\\" name=\\\"edit-button\\\" data-anchor=\\\"action-bar-edit-button\\\" {{on 'click' (fn this.clicked \\\"edit\\\")}} class=\\\"edit-button\\\" title={{t \\\"general.edit\\\"}}>{{svg-jar \\\"MovePencil\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showHistory}}<span role=\\\"button\\\" name=\\\"history-button\\\" data-anchor=\\\"action-bar-history-button\\\" {{on 'click' (fn this.clicked \\\"history\\\")}} class=\\\"history-button\\\" title={{t \\\"report.customer.history\\\"}}>{{svg-jar \\\"MoveSearch\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n            {{#if this.showRemove}}<span role=\\\"button\\\" name=\\\"remove-button\\\" data-anchor=\\\"action-bar-remove-button\\\" {{on 'click' (fn this.clicked \\\"remove\\\")}} class=\\\"remove-button\\\" title={{t \\\"report.delete_rows\\\"}}>{{svg-jar \\\"Delete\\\" height=\\\"21px\\\" width=\\\"16px\\\"}}</span>{{/if}}\\n        {{/if}}\\n        {{#if this.showQueryWarning}}\\n            <span role=\\\"button\\\" class=\\\"warning-button\\\">\\n            <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"21\\\" height=\\\"21\\\" viewBox=\\\"0 0 160 160\\\">\\n                <path id=\\\"Exclusion_1\\\" data-name=\\\"Exclusion 1\\\" d=\\\"M80,160a80.591,80.591,0,0,1-16.123-1.625,79.562,79.562,0,0,1-28.606-12.037,80.234,80.234,0,0,1-28.984-35.2A79.6,79.6,0,0,1,1.625,96.123a80.78,80.78,0,0,1,0-32.246A79.562,79.562,0,0,1,13.663,35.271,80.234,80.234,0,0,1,48.86,6.287,79.6,79.6,0,0,1,63.877,1.625a80.78,80.78,0,0,1,32.246,0,79.562,79.562,0,0,1,28.606,12.037,80.234,80.234,0,0,1,28.984,35.2,79.6,79.6,0,0,1,4.661,15.017,80.78,80.78,0,0,1,0,32.246,79.562,79.562,0,0,1-12.037,28.606,80.234,80.234,0,0,1-35.2,28.984,79.6,79.6,0,0,1-15.017,4.661A80.591,80.591,0,0,1,80,160ZM80,26l-3.385,5.8L30.191,112.2,26.928,118H133.072l-3.264-5.8L83.385,31.8Zm39.653,84.262H40.347L80,41.475l39.653,68.788h0ZM76.131,94.788v7.737h7.737V94.788Zm0-27.08V90.92h7.737V67.708Z\\\"/>\\n            </svg>\\n            <EmberPopover class=\\\"test-popover-example\\\" @popperContainer=\\\"body\\\" @side=\\\"left\\\" as |popover|>\\n                {{t \\\"report.trimmed_query_warning\\\"}}\\n            </EmberPopover>\\n        </span>           \\n        {{/if}}\\n    {{/if}}\\n\\n    {{yield @row}}\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/form-report/action-bar.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/action-bar.hbs\"}});\nimport { action, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class FormReportActionBarComponent extends Component {\n    @service forms;\n    @service need;\n    @service flags;\n\n    @tracked showActions;\n\n    get showEdit() {\n        if (!this.need.test([this.args.form + '@edit'])) return false;\n        if (!this.args.showActions) return false;\n        if (this.args.hideEditStatus && this.args.hideEditStatus == this.args.row.status)\n            return false;\n        if (!this.args.row.isEditable) return false;\n        return this.args.showActions.split(',').includes('edit');\n    }\n\n    get showHistory() {\n        if (!this.args.showActions) return false;\n        return this.args.showActions.split(',').includes('history');\n    }\n\n    get showRemove() {\n        if (!this.need.test([this.args.form + '@remove'])) return false;\n        if (!this.args.showActions) return false;\n        if (!this.args.row.isEditable) return false;\n        if (!this.args.row.isRemovable) return false;\n        return this.args.showActions.split(',').includes('remove');\n    }\n\n    get showOverview() {\n        if (!this.args.showActions) return false;\n        return this.args.showActions.split(',').includes('overview');\n    }\n\n    get showCopy() {\n        if (!this.need.test(['!' + this.args.form + '@errors', this.args.form + '@add']))\n            return false;\n        return true;\n    }\n\n    get showLock() {\n        return get(this.args.row, 'row_info.status') === 'locked';\n    }\n\n    get rowIsRemoved() {\n        return get(this.args.row, 'row_info.status') === 'removed';\n    }\n\n    get showQueryWarning() {\n        return (\n            get(this.args.row, 'row_info.trimmed_query') &&\n            this.flags.test('form-report-trimmed-query')\n        );\n    }\n\n    @action\n    clicked(act) {\n        let overrideAction = act + 'OverrideAction';\n        if (this.args[overrideAction]) return this.args[overrideAction](this.args.row);\n\n        if (this.args.actionClicked) this.args.actionClicked(act, this.args.row);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-form-report-actions\\\">\\n    {{#if (has-block)}}\\n        <div class=\\\"left-container\\\">\\n        {{#if @selected}}\\n            <div class=\\\"btn-group report-actions push-left\\\">\\n                <strong>{{@selected.length}} {{t \\\"report.items_checked\\\"}} </strong>\\n            </div>\\n        {{/if}}\\n        {{#unless @sumReport}}\\n            {{#if (and @selected.length this.showApproveButton)}}\\n                {{yield (hash\\n                    Approve=(component \\\"addon/form-report/approve\\\"\\n                                changeStatus=(fn @changeStatus)\\n                                name=(concat @form '-approve')\\n                            )\\n                )}}\\n            {{/if}}\\n\\n            {{yield (hash\\n                More=(component \\\"addon/form-report/more\\\"\\n                        disabledClass=this.disabledClass\\n                        showRemoved=@showRemoved\\n                        statusTypes=@statusTypes\\n                        canChangeStatus=this.canChangeStatus\\n                        selected=@selected\\n                        form=@form\\n                        openMassedit=(fn @openMassedit)\\n                        changeStatus=(fn @changeStatus)\\n                        handleLock=(fn @handleLock)\\n                        handleRemove=(fn @handleRemove)\\n                        name=(concat @form '-more')\\n                    )\\n            )}}\\n        {{/unless}}\\n        {{yield (hash\\n            TemplateSelector=(component \\\"addon/form-report/report-template-selector\\\"\\n                activateTemplate=(fn @activateTemplate)\\n                deactivateTemplate=(fn @deactivateTemplate)\\n                openTemplateModal=(fn @openTemplateModal)\\n                editTemplate=(fn @editTemplate)\\n                removeTemplate=(fn @removeTemplate)\\n                formReportTemplates=@formReportTemplates\\n                currentFormTemplate=@currentFormTemplate\\n                mergeTemplates=@mergeTemplates\\n                name=(concat @form '-template-selector')\\n            )\\n        )}}\\n            {{#if this.metaTrimmedQuery}} \\n            <span role=\\\"button\\\" class=\\\"move move-Error warning-button\\\">\\n                <EmberPopover class=\\\"test-popover-example\\\" @popperContainer=\\\"body\\\" @side=\\\"right\\\" as |popover|>\\n                    {{t \\\"report.trimmed_query_warning\\\"}}\\n                </EmberPopover>\\n            </span>           \\n            {{/if}}\\n        </div>\\n        <div class=\\\"right-container\\\">\\n\\n        {{yield (hash\\n            InlineEdit=(component \\\"addon/form-report/inline-edit\\\"\\n                            inlineEdit=@inlineEdit\\n                            toggleInlineEdit=(fn @toggleInlineEdit)\\n                            saveRows=(fn @saveRows)\\n                            name=(concat @form '-inline-edit')\\n                        )\\n            PdfExport=(component \\\"addon/form-report/export-pdf\\\"\\n                            exportPdf=(fn this.exportPdf)\\n                            showLoader=@showLoader\\n                            name=(concat @form '-export-pdf')\\n                        )\\n        )}}\\n        {{#unless @currentFormTemplate}}\\n            {{yield (hash\\n                ColumnSelector=(component \\\"addon/form-report/column-selector\\\"\\n                                form=@form\\n                                columns=@columns\\n                                allColumns=@allColumns\\n                                rowsPerPage=@rowsPerPage\\n                                columnsChanged=@columnsChanged\\n                                setRowsPerPage=(fn @setRowsPerPage)\\n                                sumReport=@sumReport\\n                                name=(concat @form '-column-selector')\\n                                localStorageKey=@localStorageKey\\n                                oldTemplateFromLS=@oldTemplateFromLS\\n                                )\\n            )}}\\n        {{/unless}}\\n        {{yield (hash\\n            ExportMore=(component \\\"addon/form-report/export-more\\\"\\n                            exportCsv=(fn @exportCsv)\\n                            openExportModal=(fn @openExportModal)\\n                            showOrHideRemoved=(fn @showOrHideRemoved)\\n                            showRemoved=@showRemoved\\n                            showLoader=@showLoader\\n                            name=(concat @form '-export-more')\\n                        )\\n            Refresh=(component \\\"addon/form-report/refresh\\\"\\n                        refreshReport=(fn @refreshReport)\\n                        name=(concat @form '-refresh')\\n                    )\\n        )}}\\n        {{#if this.hasGpsOn}}\\n            {{yield (hash\\n                Gps=(component \\\"addon/form-report/gps-location-map\\\"\\n                        openGpsMap=(fn @openGpsMap)\\n                        name=(concat @form '-gps')\\n                    )\\n            )}}\\n        {{/if}}\\n        {{yield (hash\\n            Info=(component \\\"addon/form-report/info\\\"\\n                        name=(concat @form '-info')\\n                    )\\n        )}}\\n        </div>\\n\\n    {{else}}\\n        <div class=\\\"left-container\\\">\\n        {{#if @selected}}\\n            <div class=\\\"btn-group report-actions push-left\\\">\\n                <strong>{{@selected.length}} {{t \\\"report.items_checked\\\"}} </strong>\\n            </div>\\n        {{/if}}\\n        {{#unless @sumReport}}\\n            {{#if (and @selected.length this.canChangeStatus)}}\\n                <Addon::FormReport::Approve\\n                    @changeStatus={{fn @changeStatus}}\\n                    @name={{concat @form '-approve'}}\\n                />\\n            {{/if}}\\n\\n            <Addon::FormReport::More\\n                @disabledClass={{this.disabledClass}}\\n                @showRemoved={{@showRemoved}}\\n                @statusTypes={{@statusTypes}}\\n                @canChangeStatus={{this.canChangeStatus}}\\n                @form={{@form}}\\n                @selected={{@selected}}\\n                @openMassedit={{fn @openMassedit}}\\n                @changeStatus={{fn @changeStatus}}\\n                @handleLock={{fn @handleLock}}\\n                @handleRemove={{fn @handleRemove}}\\n                @name={{concat @form '-more'}}\\n            />\\n        {{/unless}}\\n        <Addon::FormReport::ReportTemplateSelector\\n            @activateTemplate={{fn @activateTemplate}}\\n            @deactivateTemplate={{fn @deactivateTemplate}}\\n            @openTemplateModal={{fn @openTemplateModal}}\\n            @editTemplate={{fn @editTemplate}}\\n            @removeTemplate={{fn @removeTemplate}}\\n            @formReportTemplates={{@formReportTemplates}}\\n            @currentFormTemplate={{@currentFormTemplate}}\\n            @mergeTemplates={{@mergeTemplates}}\\n            @name={{concat @form '-template-selector'}}\\n        />\\n        </div>\\n        <div class=\\\"right-container\\\">\\n        <Addon::FormReport::InlineEdit\\n            @inlineEdit={{@inlineEdit}}\\n            @toggleInlineEdit={{fn @toggleInlineEdit}}\\n            @saveRows={{fn @saveRows}}\\n            @name={{concat @form '-inline-edit'}}\\n        />\\n\\n        {{#unless @currentFormTemplate}}\\n            <Addon::FormReport::ColumnSelector\\n                @form={{@form}}\\n                @columns={{@columns}}\\n                @allColumns={{@allColumns}}\\n                @rowsPerPage={{@rowsPerPage}}\\n                @columnsChanged={{@columnsChanged}}\\n                @setRowsPerPage={{fn @setRowsPerPage}}\\n                @sumReport={{@sumReport}}\\n                @name={{concat @form '-column-selector'}}\\n                @localStorageKey={{@localStorageKey}}\\n                @oldTemplateFromLS={{@oldTemplateFromLS}}\\n            />\\n        {{/unless}}\\n        <Addon::FormReport::ExportPdf\\n            @exportPdf={{fn this.exportPdf}}\\n            @showLoader={{@showLoader}}\\n            @name={{concat @form '-export-pdf'}}\\n        />\\n\\n        <Addon::FormReport::ExportMore\\n            @showRemoved={{@showRemoved}}\\n            @showLoader={{@showLoader}}\\n            @exportCsv={{fn @exportCsv}}\\n            @openExportModal={{fn @openExportModal}}\\n            @showOrHideRemoved={{fn @showOrHideRemoved}}\\n            @name={{concat @form '-export-more'}}\\n        />\\n\\n        <Addon::FormReport::Refresh\\n            @refreshReport={{fn @refreshReport}}\\n            @name={{concat @form '-refresh'}}\\n        />\\n\\n        <Addon::FormReport::Info\\n            @name={{concat @form '-info'}}\\n        />\\n        </div>\\n    {{/if}}\\n</div>\\n\", {\"contents\":\"<div class=\\\"ember-movenium-form-report-actions\\\">\\n    {{#if (has-block)}}\\n        <div class=\\\"left-container\\\">\\n        {{#if @selected}}\\n            <div class=\\\"btn-group report-actions push-left\\\">\\n                <strong>{{@selected.length}} {{t \\\"report.items_checked\\\"}} </strong>\\n            </div>\\n        {{/if}}\\n        {{#unless @sumReport}}\\n            {{#if (and @selected.length this.showApproveButton)}}\\n                {{yield (hash\\n                    Approve=(component \\\"addon/form-report/approve\\\"\\n                                changeStatus=(fn @changeStatus)\\n                                name=(concat @form '-approve')\\n                            )\\n                )}}\\n            {{/if}}\\n\\n            {{yield (hash\\n                More=(component \\\"addon/form-report/more\\\"\\n                        disabledClass=this.disabledClass\\n                        showRemoved=@showRemoved\\n                        statusTypes=@statusTypes\\n                        canChangeStatus=this.canChangeStatus\\n                        selected=@selected\\n                        form=@form\\n                        openMassedit=(fn @openMassedit)\\n                        changeStatus=(fn @changeStatus)\\n                        handleLock=(fn @handleLock)\\n                        handleRemove=(fn @handleRemove)\\n                        name=(concat @form '-more')\\n                    )\\n            )}}\\n        {{/unless}}\\n        {{yield (hash\\n            TemplateSelector=(component \\\"addon/form-report/report-template-selector\\\"\\n                activateTemplate=(fn @activateTemplate)\\n                deactivateTemplate=(fn @deactivateTemplate)\\n                openTemplateModal=(fn @openTemplateModal)\\n                editTemplate=(fn @editTemplate)\\n                removeTemplate=(fn @removeTemplate)\\n                formReportTemplates=@formReportTemplates\\n                currentFormTemplate=@currentFormTemplate\\n                mergeTemplates=@mergeTemplates\\n                name=(concat @form '-template-selector')\\n            )\\n        )}}\\n            {{#if this.metaTrimmedQuery}} \\n            <span role=\\\"button\\\" class=\\\"move move-Error warning-button\\\">\\n                <EmberPopover class=\\\"test-popover-example\\\" @popperContainer=\\\"body\\\" @side=\\\"right\\\" as |popover|>\\n                    {{t \\\"report.trimmed_query_warning\\\"}}\\n                </EmberPopover>\\n            </span>           \\n            {{/if}}\\n        </div>\\n        <div class=\\\"right-container\\\">\\n\\n        {{yield (hash\\n            InlineEdit=(component \\\"addon/form-report/inline-edit\\\"\\n                            inlineEdit=@inlineEdit\\n                            toggleInlineEdit=(fn @toggleInlineEdit)\\n                            saveRows=(fn @saveRows)\\n                            name=(concat @form '-inline-edit')\\n                        )\\n            PdfExport=(component \\\"addon/form-report/export-pdf\\\"\\n                            exportPdf=(fn this.exportPdf)\\n                            showLoader=@showLoader\\n                            name=(concat @form '-export-pdf')\\n                        )\\n        )}}\\n        {{#unless @currentFormTemplate}}\\n            {{yield (hash\\n                ColumnSelector=(component \\\"addon/form-report/column-selector\\\"\\n                                form=@form\\n                                columns=@columns\\n                                allColumns=@allColumns\\n                                rowsPerPage=@rowsPerPage\\n                                columnsChanged=@columnsChanged\\n                                setRowsPerPage=(fn @setRowsPerPage)\\n                                sumReport=@sumReport\\n                                name=(concat @form '-column-selector')\\n                                localStorageKey=@localStorageKey\\n                                oldTemplateFromLS=@oldTemplateFromLS\\n                                )\\n            )}}\\n        {{/unless}}\\n        {{yield (hash\\n            ExportMore=(component \\\"addon/form-report/export-more\\\"\\n                            exportCsv=(fn @exportCsv)\\n                            openExportModal=(fn @openExportModal)\\n                            showOrHideRemoved=(fn @showOrHideRemoved)\\n                            showRemoved=@showRemoved\\n                            showLoader=@showLoader\\n                            name=(concat @form '-export-more')\\n                        )\\n            Refresh=(component \\\"addon/form-report/refresh\\\"\\n                        refreshReport=(fn @refreshReport)\\n                        name=(concat @form '-refresh')\\n                    )\\n        )}}\\n        {{#if this.hasGpsOn}}\\n            {{yield (hash\\n                Gps=(component \\\"addon/form-report/gps-location-map\\\"\\n                        openGpsMap=(fn @openGpsMap)\\n                        name=(concat @form '-gps')\\n                    )\\n            )}}\\n        {{/if}}\\n        {{yield (hash\\n            Info=(component \\\"addon/form-report/info\\\"\\n                        name=(concat @form '-info')\\n                    )\\n        )}}\\n        </div>\\n\\n    {{else}}\\n        <div class=\\\"left-container\\\">\\n        {{#if @selected}}\\n            <div class=\\\"btn-group report-actions push-left\\\">\\n                <strong>{{@selected.length}} {{t \\\"report.items_checked\\\"}} </strong>\\n            </div>\\n        {{/if}}\\n        {{#unless @sumReport}}\\n            {{#if (and @selected.length this.canChangeStatus)}}\\n                <Addon::FormReport::Approve\\n                    @changeStatus={{fn @changeStatus}}\\n                    @name={{concat @form '-approve'}}\\n                />\\n            {{/if}}\\n\\n            <Addon::FormReport::More\\n                @disabledClass={{this.disabledClass}}\\n                @showRemoved={{@showRemoved}}\\n                @statusTypes={{@statusTypes}}\\n                @canChangeStatus={{this.canChangeStatus}}\\n                @form={{@form}}\\n                @selected={{@selected}}\\n                @openMassedit={{fn @openMassedit}}\\n                @changeStatus={{fn @changeStatus}}\\n                @handleLock={{fn @handleLock}}\\n                @handleRemove={{fn @handleRemove}}\\n                @name={{concat @form '-more'}}\\n            />\\n        {{/unless}}\\n        <Addon::FormReport::ReportTemplateSelector\\n            @activateTemplate={{fn @activateTemplate}}\\n            @deactivateTemplate={{fn @deactivateTemplate}}\\n            @openTemplateModal={{fn @openTemplateModal}}\\n            @editTemplate={{fn @editTemplate}}\\n            @removeTemplate={{fn @removeTemplate}}\\n            @formReportTemplates={{@formReportTemplates}}\\n            @currentFormTemplate={{@currentFormTemplate}}\\n            @mergeTemplates={{@mergeTemplates}}\\n            @name={{concat @form '-template-selector'}}\\n        />\\n        </div>\\n        <div class=\\\"right-container\\\">\\n        <Addon::FormReport::InlineEdit\\n            @inlineEdit={{@inlineEdit}}\\n            @toggleInlineEdit={{fn @toggleInlineEdit}}\\n            @saveRows={{fn @saveRows}}\\n            @name={{concat @form '-inline-edit'}}\\n        />\\n\\n        {{#unless @currentFormTemplate}}\\n            <Addon::FormReport::ColumnSelector\\n                @form={{@form}}\\n                @columns={{@columns}}\\n                @allColumns={{@allColumns}}\\n                @rowsPerPage={{@rowsPerPage}}\\n                @columnsChanged={{@columnsChanged}}\\n                @setRowsPerPage={{fn @setRowsPerPage}}\\n                @sumReport={{@sumReport}}\\n                @name={{concat @form '-column-selector'}}\\n                @localStorageKey={{@localStorageKey}}\\n                @oldTemplateFromLS={{@oldTemplateFromLS}}\\n            />\\n        {{/unless}}\\n        <Addon::FormReport::ExportPdf\\n            @exportPdf={{fn this.exportPdf}}\\n            @showLoader={{@showLoader}}\\n            @name={{concat @form '-export-pdf'}}\\n        />\\n\\n        <Addon::FormReport::ExportMore\\n            @showRemoved={{@showRemoved}}\\n            @showLoader={{@showLoader}}\\n            @exportCsv={{fn @exportCsv}}\\n            @openExportModal={{fn @openExportModal}}\\n            @showOrHideRemoved={{fn @showOrHideRemoved}}\\n            @name={{concat @form '-export-more'}}\\n        />\\n\\n        <Addon::FormReport::Refresh\\n            @refreshReport={{fn @refreshReport}}\\n            @name={{concat @form '-refresh'}}\\n        />\\n\\n        <Addon::FormReport::Info\\n            @name={{concat @form '-info'}}\\n        />\\n        </div>\\n    {{/if}}\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/form-report/actions.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/actions.hbs\"}});\nimport { action } from '@ember/object';\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\n\nexport default class FormReportActionsComponent extends Component {\n    @service forms;\n    @service need;\n\n    get disabledClass() {\n        if (!this.args.selected) return 'disabled';\n        return this.args.selected.length > 0 ? '' : 'disabled';\n    }\n\n    get canChangeStatus() {\n        if (!this.forms.fieldExists(this.args.form, 'status')) return false;\n        let field = this.forms.field(this.args.form, 'status');\n\n        return !field.features.readonly;\n    }\n\n    get showApproveButton() {\n        if (!this.canChangeStatus) return false;\n        return this.args.statusTypes.findBy('id', 'approved');\n    }\n\n    get hasGpsOn() {\n        return (\n            this.need.test([this.args.form + '.location']) ||\n            this.need.test([this.args.form + '.location_map'])\n        );\n    }\n\n    get metaTrimmedQuery() {\n        return this.args.additionalMeta?.trimmed_query\n            ? this.args.additionalMeta.trimmed_query\n            : false;\n    }\n\n    @action\n    exportPdf() {\n        if (this.args.exportPdf) this.args.exportPdf();\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div role=\\\"button\\\" {{on 'click' @onClick}} class=\\\"ember-movenium-form-report-add-plus-button pull-right\\\">\\n   {{svg-jar 'PlusSign'}}\\n</div>\", {\"contents\":\"<div role=\\\"button\\\" {{on 'click' @onClick}} class=\\\"ember-movenium-form-report-add-plus-button pull-right\\\">\\n   {{svg-jar 'PlusSign'}}\\n</div>\",\"moduleName\":\"tt4/components/addon/form-report/add.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/add.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"btn-group report-actions push-left\\\">\\n    <button type=\\\"button\\\" {{on 'click' (fn @changeStatus \\\"approved\\\")}} class=\\\"btn btn-primary\\\" title={{t \\\"report.approve_rows\\\"}} data-anchor={{concat @name '-report-action'}}>{{t \\\"report.approve_rows\\\"}}</button>\\n</div>\", {\"contents\":\"<div class=\\\"btn-group report-actions push-left\\\">\\n    <button type=\\\"button\\\" {{on 'click' (fn @changeStatus \\\"approved\\\")}} class=\\\"btn btn-primary\\\" title={{t \\\"report.approve_rows\\\"}} data-anchor={{concat @name '-report-action'}}>{{t \\\"report.approve_rows\\\"}}</button>\\n</div>\",\"moduleName\":\"tt4/components/addon/form-report/approve.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/approve.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if (has-block)}}\\n    {{yield @field (collector-value-format form=@form field=@field value=@value) @value @row}}\\n{{else}}\\n    <Addon::ValueFormat @form={{@form}} @field={{@field}} @value={{@value}} @row={{@row}} />\\n{{/if}}\", {\"contents\":\"{{#if (has-block)}}\\n    {{yield @field (collector-value-format form=@form field=@field value=@value) @value @row}}\\n{{else}}\\n    <Addon::ValueFormat @form={{@form}} @field={{@field}} @value={{@value}} @row={{@row}} />\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/form-report/cell.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/cell.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"btn-group report-actions actions-right display-menu\\\" data-anchor={{concat @name '-report-action'}}>\\n    <BasicDropdown @verticalPosition=\\\"below\\\" @horizontalPosition=\\\"right\\\" as |dd|>\\n        <dd.Trigger class=\\\"btn btn-secondary\\\" title={{t \\\"report.actions.columnSort\\\"}} >\\n            <span class=\\\"move move-DragReorder\\\"></span>\\n        </dd.Trigger>\\n        <dd.Content class=\\\"column-selector-box\\\">\\n            <ul class=\\\"column-selector-dropdown side-by-side\\\">\\n                <li class=\\\"dropdown-header\\\" data-anchor=\\\"column-selector-rows-limit-titel\\\">{{t \\\"report.columns.limit\\\"}}</li>\\n                <li class=\\\"dropdown-group\\\">\\n                    <span role=\\\"button\\\" class=\\\"pr-2 limit {{if (eq @rowsPerPage 25) 'selected-limit'}}\\\" {{on 'click' (fn this.setRowsPerPage 25)}}>{{25}}</span>|\\n                    <span role=\\\"button\\\" class=\\\"pr-2 limit {{if (eq @rowsPerPage 50) 'selected-limit'}}\\\" {{on 'click' (fn this.setRowsPerPage 50)}}>{{50}}</span>|\\n                    <span role=\\\"button\\\" class=\\\"limit {{if (eq @rowsPerPage 100) 'selected-limit'}}\\\" {{on 'click' (fn this.setRowsPerPage 100)}}>{{100}}</span>\\n                </li>\\n                <ReportTemplateSelector @form={{@form}} @columns={{this.columns}} @settings={{hash limit=@rowsPerPage sortByColumn=this.sort}} @currentTemplate={{this.currentTemplate}} @deactivateTemplate={{fn this.deactivateTemplate}} @activateTemplate={{fn this.activateTemplate}} />\\n\\n            </ul>\\n            <ul class=\\\"column-selector-dropdown side-by-side\\\">\\n                <li class=\\\"dropdown-header\\\" data-anchor=\\\"column-selector-hidden-columns-titel\\\">{{t \\\"report.columns.hidden\\\"}}</li>\\n                {{#each this.hiddenColumns key=\\\"@index\\\" as |col index|}}\\n                    <li><span role=\\\"button\\\" draggable=\\\"false\\\" title={{t \\\"report.columns.click_to_show\\\"}} data-anchor={{concat \\\"column-selector-hidden-column-\\\" index}} {{on 'click' (fn this.showColumn col)}} >{{col.translated_name}}</span></li>\\n                {{/each}}\\n            </ul>\\n            <ul class=\\\"column-selector-dropdown side-by-side\\\">\\n                <li class=\\\"dropdown-header\\\" data-anchor=\\\"column-selector-shown-columns-titel\\\">{{t \\\"report.columns.shown\\\"}}</li>\\n                {{#each this.columns key=\\\"@index\\\" as |col index|}}\\n                    {{#if col.translated_name}}\\n                        <DraggableDropzone @dropped={{fn this.columnDropped index}} @tagName=\\\"li\\\" @data-field={{col}} @class=\\\"column-selector-dropzone\\\">\\n                            <DraggableItem @content={{concat \\\"\\\" index}} @class=\\\"column-selector-draggable-item\\\">\\n                                <span role=\\\"button\\\" title={{t \\\"report.columns.click_to_hide\\\"}} data-anchor={{concat \\\"column-selector-visible-column-\\\" index}} {{on 'click' (fn this.hideColumn col)}} >{{col.translated_name}}</span>\\n                                <span role=\\\"button\\\" class=\\\"sort-link pull-right move move-Up2Filled\\\" data-anchor={{concat \\\"column-selector-move-column-\\\" index \\\"-up\\\"}} {{on 'click' (fn this.moveCol col -1)}}></span>\\n                                <span role=\\\"button\\\" class=\\\"sort-link pull-right move move-Down2Filled\\\" data-anchor={{concat \\\"column-selector-move-column-\\\" index \\\"-down\\\"}} {{on 'click' (fn this.moveCol col 1)}}></span>\\n                            </DraggableItem>\\n                        </DraggableDropzone>\\n                    {{/if}}\\n                {{/each}}\\n            </ul>\\n        </dd.Content>\\n    </BasicDropdown>\\n</div>\\n\\n\", {\"contents\":\"<div class=\\\"btn-group report-actions actions-right display-menu\\\" data-anchor={{concat @name '-report-action'}}>\\n    <BasicDropdown @verticalPosition=\\\"below\\\" @horizontalPosition=\\\"right\\\" as |dd|>\\n        <dd.Trigger class=\\\"btn btn-secondary\\\" title={{t \\\"report.actions.columnSort\\\"}} >\\n            <span class=\\\"move move-DragReorder\\\"></span>\\n        </dd.Trigger>\\n        <dd.Content class=\\\"column-selector-box\\\">\\n            <ul class=\\\"column-selector-dropdown side-by-side\\\">\\n                <li class=\\\"dropdown-header\\\" data-anchor=\\\"column-selector-rows-limit-titel\\\">{{t \\\"report.columns.limit\\\"}}</li>\\n                <li class=\\\"dropdown-group\\\">\\n                    <span role=\\\"button\\\" class=\\\"pr-2 limit {{if (eq @rowsPerPage 25) 'selected-limit'}}\\\" {{on 'click' (fn this.setRowsPerPage 25)}}>{{25}}</span>|\\n                    <span role=\\\"button\\\" class=\\\"pr-2 limit {{if (eq @rowsPerPage 50) 'selected-limit'}}\\\" {{on 'click' (fn this.setRowsPerPage 50)}}>{{50}}</span>|\\n                    <span role=\\\"button\\\" class=\\\"limit {{if (eq @rowsPerPage 100) 'selected-limit'}}\\\" {{on 'click' (fn this.setRowsPerPage 100)}}>{{100}}</span>\\n                </li>\\n                <ReportTemplateSelector @form={{@form}} @columns={{this.columns}} @settings={{hash limit=@rowsPerPage sortByColumn=this.sort}} @currentTemplate={{this.currentTemplate}} @deactivateTemplate={{fn this.deactivateTemplate}} @activateTemplate={{fn this.activateTemplate}} />\\n\\n            </ul>\\n            <ul class=\\\"column-selector-dropdown side-by-side\\\">\\n                <li class=\\\"dropdown-header\\\" data-anchor=\\\"column-selector-hidden-columns-titel\\\">{{t \\\"report.columns.hidden\\\"}}</li>\\n                {{#each this.hiddenColumns key=\\\"@index\\\" as |col index|}}\\n                    <li><span role=\\\"button\\\" draggable=\\\"false\\\" title={{t \\\"report.columns.click_to_show\\\"}} data-anchor={{concat \\\"column-selector-hidden-column-\\\" index}} {{on 'click' (fn this.showColumn col)}} >{{col.translated_name}}</span></li>\\n                {{/each}}\\n            </ul>\\n            <ul class=\\\"column-selector-dropdown side-by-side\\\">\\n                <li class=\\\"dropdown-header\\\" data-anchor=\\\"column-selector-shown-columns-titel\\\">{{t \\\"report.columns.shown\\\"}}</li>\\n                {{#each this.columns key=\\\"@index\\\" as |col index|}}\\n                    {{#if col.translated_name}}\\n                        <DraggableDropzone @dropped={{fn this.columnDropped index}} @tagName=\\\"li\\\" @data-field={{col}} @class=\\\"column-selector-dropzone\\\">\\n                            <DraggableItem @content={{concat \\\"\\\" index}} @class=\\\"column-selector-draggable-item\\\">\\n                                <span role=\\\"button\\\" title={{t \\\"report.columns.click_to_hide\\\"}} data-anchor={{concat \\\"column-selector-visible-column-\\\" index}} {{on 'click' (fn this.hideColumn col)}} >{{col.translated_name}}</span>\\n                                <span role=\\\"button\\\" class=\\\"sort-link pull-right move move-Up2Filled\\\" data-anchor={{concat \\\"column-selector-move-column-\\\" index \\\"-up\\\"}} {{on 'click' (fn this.moveCol col -1)}}></span>\\n                                <span role=\\\"button\\\" class=\\\"sort-link pull-right move move-Down2Filled\\\" data-anchor={{concat \\\"column-selector-move-column-\\\" index \\\"-down\\\"}} {{on 'click' (fn this.moveCol col 1)}}></span>\\n                            </DraggableItem>\\n                        </DraggableDropzone>\\n                    {{/if}}\\n                {{/each}}\\n            </ul>\\n        </dd.Content>\\n    </BasicDropdown>\\n</div>\\n\\n\",\"moduleName\":\"tt4/components/addon/form-report/column-selector.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/column-selector.hbs\"}});\nimport { inject as service } from '@ember/service';\nimport { set, action } from '@ember/object';\nimport Component from '@glimmer/component';\n/* istanbul ignore next: report-template-selector component in tt4 blocks this, will be removed when migrated */\nexport default class FormReportColumnSelectorComponent extends Component {\n    @service localstorage;\n    @service store;\n    @service session;\n\n    constructor() {\n        super(...arguments);\n        if (this.args.oldTemplateFromLS) {\n            this.store\n                .query('reportTemplate', { user: this.session.currentUser.id })\n                .then((templates) =>\n                    this._setCurrentTemplate(templates, this.args.oldTemplateFromLS.id),\n                );\n        }\n    }\n\n    get columns() {\n        return this.args.columns;\n    }\n\n    get hiddenColumns() {\n        const mappedCols = this.columns.map((col) => col.external_type);\n        return this.args.allColumns.filter((column) => !mappedCols.includes(column.external_type));\n    }\n\n    @action\n    columnDropped(target, dropped) {\n        if (!dropped) return; // this happens when you try to drag hidden column to visibles\n        if (target == dropped) return;\n        this.moveElementInArray(this.columns, this.columns[dropped], target - dropped);\n        this.args.columnsChanged(this.columns);\n        this.saveToLS(this.columns);\n    }\n\n    @action\n    moveCol(col, dir) {\n        this.moveElementInArray(this.columns, col, dir);\n        this.args.columnsChanged(this.columns);\n        this.saveToLS(this.columns);\n    }\n\n    @action\n    hideColumn(col) {\n        this.columns.removeObject(col);\n        this.args.columnsChanged(this.columns);\n        this.saveToLS(this.columns);\n    }\n\n    @action\n    showColumn(col) {\n        this.columns.pushObject(col);\n        this.args.columnsChanged(this.columns);\n        this.saveToLS(this.columns);\n    }\n\n    @action\n    setRowsPerPage(RowsPerPage) {\n        this.args.setRowsPerPage(RowsPerPage);\n    }\n\n    @action\n    deactivateTemplate() {\n        const visibleList = this.localstorage.getItem(this.args.form + '_defaultColumns');\n        const columns = visibleList.reduce((acc, column) => {\n            let columnObject = this.args.allColumns.find(\n                (object) => object.external_type === column,\n            );\n            if (columnObject) acc.push(columnObject);\n            return acc;\n        }, []);\n        this.localstorage.removeItem(this.args.localStorageKey + '_currentTemplate');\n        this.args.columnsChanged(columns);\n        set(this, 'currentTemplate', null);\n    }\n\n    @action\n    activateTemplate(template) {\n        const columns = template.columns.split(',').reduce((accumulator, column) => {\n            let columnObject = this.args.allColumns.find(\n                (object) => object.external_type === column,\n            );\n            if (columnObject) accumulator.push(columnObject);\n            return accumulator;\n        }, []);\n        this.localstorage.setItem(this.args.localStorageKey + '_currentTemplate', {\n            columns: template.columns,\n            name: template.name,\n            id: template.id,\n        });\n        this.args.columnsChanged(columns);\n    }\n\n    moveElementInArray(obj, col, offset) {\n        let index = obj.indexOf(col);\n        obj.removeObject(col);\n        let newIndex = index + offset;\n        newIndex = newIndex > obj.length ? 0 : newIndex < 0 ? obj.length : newIndex;\n        obj.insertAt(newIndex, col);\n    }\n\n    saveToLS(columns) {\n        if (this.localstorage.getItem(this.args.form + '_selectedTemplate') || this.args.sumReport)\n            return;\n        this.localstorage.setItem(\n            this.args.form + '_defaultColumns',\n            columns.map((column) => column.external_type).filter((item) => item),\n        );\n    }\n\n    _setCurrentTemplate(templates, id) {\n        set(this, 'currentTemplate', templates.filterBy('id', id).firstObject);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<li>\\n    <div role=\\\"button\\\" data-anchor=\\\"csv-more-export\\\" {{on 'click' @exportCsv}} >{{t \\\"report.actions.export_csv\\\"}}</div>\\n</li>\", {\"contents\":\"<li>\\n    <div role=\\\"button\\\" data-anchor=\\\"csv-more-export\\\" {{on 'click' @exportCsv}} >{{t \\\"report.actions.export_csv\\\"}}</div>\\n</li>\",\"moduleName\":\"tt4/components/addon/form-report/csv.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/csv.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<li>\\n    <div role=\\\"button\\\"  data-anchor=\\\"email-approval-more-export\\\" {{on 'click' (fn @openExportModal 'email')}} >{{t \\\"report.send_email\\\"}}</div>\\n</li>\", {\"contents\":\"<li>\\n    <div role=\\\"button\\\"  data-anchor=\\\"email-approval-more-export\\\" {{on 'click' (fn @openExportModal 'email')}} >{{t \\\"report.send_email\\\"}}</div>\\n</li>\",\"moduleName\":\"tt4/components/addon/form-report/email-approval.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/email-approval.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<li>\\n    <div role=\\\"button\\\" data-anchor=\\\"excel-more-export\\\" {{on 'click' (fn @openExportModal 'export_excel')}} >{{t \\\"report.actions.export_excel\\\"}}</div>\\n</li>\", {\"contents\":\"<li>\\n    <div role=\\\"button\\\" data-anchor=\\\"excel-more-export\\\" {{on 'click' (fn @openExportModal 'export_excel')}} >{{t \\\"report.actions.export_excel\\\"}}</div>\\n</li>\",\"moduleName\":\"tt4/components/addon/form-report/excel.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/excel.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<BasicDropdown as |dd|>\\n    <dd.Trigger class=\\\"dropdown-box-trigger report-actions actions-right\\\" title={{t \\\"report.actions.more\\\"}} data-anchor={{concat @name '-report-action'}}>\\n        {{#if @showLoader}}\\n                <img class=\\\"report-loading\\\" src=\\\"img/ajax-loader.gif\\\" alt={{t \\\"general.loading\\\"}} />\\n            {{else}}\\n                <span class=\\\"glyphicon glyphicon-option-horizontal\\\"></span>\\n            {{/if}}\\n    </dd.Trigger>\\n    <dd.Content class=\\\"dropdown-box-content ember-movenium-export-more-button\\\" {{on 'click' dd.actions.close}}>\\n    <ul>\\n        {{#if (has-block)}}\\n            {{yield (hash\\n                Pdf=(component \\\"addon/form-report/pdf\\\"\\n                        openExportModal=(fn @openExportModal)\\n                    )\\n                PdfFull=(component \\\"addon/form-report/pdf-full\\\"\\n                   openExportModal=(fn @openExportModal)\\n                )\\n            )}}\\n\\n            {{#unless this.isMobile}}\\n                {{yield (hash\\n                    Csv=(component \\\"addon/form-report/csv\\\"\\n                            exportCsv=(fn @exportCsv)\\n                        )\\n                    Excel=(component \\\"addon/form-report/excel\\\"\\n                            openExportModal=(fn @openExportModal)\\n                        )\\n                )}}\\n            {{/unless}}\\n            {{yield (hash\\n                RemovedStatus=(component \\\"addon/form-report/show-removed\\\"\\n                        showOrHideRemoved=(fn @showOrHideRemoved)\\n                        showRemoved=@showRemoved\\n                    )\\n                EmailApproval=(component \\\"addon/form-report/email-approval\\\"\\n                        openExportModal=(fn @openExportModal)\\n                    )\\n                Row=(component \\\"addon/form-report/row\\\")\\n            )}}\\n        {{else}}\\n            <Addon::FormReport::Pdf\\n            @openExportModal={{fn (if @customPdfExport @customPdfExport @openExportModal)}}\\n            />\\n\\n            <Addon::FormReport::PdfFull\\n                @openExportModal={{fn @openExportModal}}\\n            />\\n            {{#unless this.isMobile}}\\n                <Addon::FormReport::Csv\\n                    @exportCsv={{fn @exportCsv}}\\n                />\\n\\n                <Addon::FormReport::Excel\\n                    @openExportModal={{fn @openExportModal}}\\n                />\\n            {{/unless}}\\n            <Addon::FormReport::ShowRemoved\\n                    @showOrHideRemoved={{fn @showOrHideRemoved}}\\n                    @showRemoved={{@showRemoved}}\\n            />\\n\\n            <Addon::FormReport::EmailApproval\\n                    @openExportModal={{fn @openExportModal}}\\n            />\\n        {{/if}}\\n    </ul>\\n    </dd.Content>\\n</BasicDropdown>\", {\"contents\":\"<BasicDropdown as |dd|>\\n    <dd.Trigger class=\\\"dropdown-box-trigger report-actions actions-right\\\" title={{t \\\"report.actions.more\\\"}} data-anchor={{concat @name '-report-action'}}>\\n        {{#if @showLoader}}\\n                <img class=\\\"report-loading\\\" src=\\\"img/ajax-loader.gif\\\" alt={{t \\\"general.loading\\\"}} />\\n            {{else}}\\n                <span class=\\\"glyphicon glyphicon-option-horizontal\\\"></span>\\n            {{/if}}\\n    </dd.Trigger>\\n    <dd.Content class=\\\"dropdown-box-content ember-movenium-export-more-button\\\" {{on 'click' dd.actions.close}}>\\n    <ul>\\n        {{#if (has-block)}}\\n            {{yield (hash\\n                Pdf=(component \\\"addon/form-report/pdf\\\"\\n                        openExportModal=(fn @openExportModal)\\n                    )\\n                PdfFull=(component \\\"addon/form-report/pdf-full\\\"\\n                   openExportModal=(fn @openExportModal)\\n                )\\n            )}}\\n\\n            {{#unless this.isMobile}}\\n                {{yield (hash\\n                    Csv=(component \\\"addon/form-report/csv\\\"\\n                            exportCsv=(fn @exportCsv)\\n                        )\\n                    Excel=(component \\\"addon/form-report/excel\\\"\\n                            openExportModal=(fn @openExportModal)\\n                        )\\n                )}}\\n            {{/unless}}\\n            {{yield (hash\\n                RemovedStatus=(component \\\"addon/form-report/show-removed\\\"\\n                        showOrHideRemoved=(fn @showOrHideRemoved)\\n                        showRemoved=@showRemoved\\n                    )\\n                EmailApproval=(component \\\"addon/form-report/email-approval\\\"\\n                        openExportModal=(fn @openExportModal)\\n                    )\\n                Row=(component \\\"addon/form-report/row\\\")\\n            )}}\\n        {{else}}\\n            <Addon::FormReport::Pdf\\n            @openExportModal={{fn (if @customPdfExport @customPdfExport @openExportModal)}}\\n            />\\n\\n            <Addon::FormReport::PdfFull\\n                @openExportModal={{fn @openExportModal}}\\n            />\\n            {{#unless this.isMobile}}\\n                <Addon::FormReport::Csv\\n                    @exportCsv={{fn @exportCsv}}\\n                />\\n\\n                <Addon::FormReport::Excel\\n                    @openExportModal={{fn @openExportModal}}\\n                />\\n            {{/unless}}\\n            <Addon::FormReport::ShowRemoved\\n                    @showOrHideRemoved={{fn @showOrHideRemoved}}\\n                    @showRemoved={{@showRemoved}}\\n            />\\n\\n            <Addon::FormReport::EmailApproval\\n                    @openExportModal={{fn @openExportModal}}\\n            />\\n        {{/if}}\\n    </ul>\\n    </dd.Content>\\n</BasicDropdown>\",\"moduleName\":\"tt4/components/addon/form-report/export-more.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/export-more.hbs\"}});\nimport Component from '@glimmer/component';\nimport { isMobile } from 'tt4/ember-movenium/utils/gui';\n\nexport default class FormReportExportMoreComponent extends Component {\n    get isMobile() {\n        return isMobile();\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"btn-group report-actions actions-right\\\" data-anchor={{concat @name '-report-action'}}>\\n    <button type=\\\"button\\\" class=\\\"btn btn-secondary\\\" {{on 'click' @exportPdf}} title={{t \\\"report.actions.export_pdf\\\"}} >\\n        {{#if @showLoader}}\\n            <img class=\\\"report-loading\\\" src=\\\"img/ajax-loader.gif\\\" alt={{t \\\"general.loading\\\"}} />\\n        {{else}}\\n            <span class=\\\"move move-PDF-2Filled\\\"></span>\\n        {{/if}}\\n    </button>\\n</div>\", {\"contents\":\"<div class=\\\"btn-group report-actions actions-right\\\" data-anchor={{concat @name '-report-action'}}>\\n    <button type=\\\"button\\\" class=\\\"btn btn-secondary\\\" {{on 'click' @exportPdf}} title={{t \\\"report.actions.export_pdf\\\"}} >\\n        {{#if @showLoader}}\\n            <img class=\\\"report-loading\\\" src=\\\"img/ajax-loader.gif\\\" alt={{t \\\"general.loading\\\"}} />\\n        {{else}}\\n            <span class=\\\"move move-PDF-2Filled\\\"></span>\\n        {{/if}}\\n    </button>\\n</div>\",\"moduleName\":\"tt4/components/addon/form-report/export-pdf.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/export-pdf.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"btn-group report-actions actions-right\\\" data-anchor={{concat @name '-report-action'}}>\\n    <button type=\\\"button\\\" {{on 'click' @openGpsMap}} class=\\\"btn btn-secondary\\\" title={{t \\\"report.actions.gps\\\"}}>\\n        <span class=\\\"move move-Globe\\\"></span>\\n    </button>\\n</div>\", {\"contents\":\"<div class=\\\"btn-group report-actions actions-right\\\" data-anchor={{concat @name '-report-action'}}>\\n    <button type=\\\"button\\\" {{on 'click' @openGpsMap}} class=\\\"btn btn-secondary\\\" title={{t \\\"report.actions.gps\\\"}}>\\n        <span class=\\\"move move-Globe\\\"></span>\\n    </button>\\n</div>\",\"moduleName\":\"tt4/components/addon/form-report/gps-location-map.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/gps-location-map.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"btn-group report-actions actions-right\\\" data-anchor={{concat @name '-report-action'}}>\\n    <button type=\\\"button\\\" {{on 'click' (fn this.showInfo)}} class=\\\"btn btn-secondary glyphicon glyphicon-info-sign info-action-button\\\" title={{t \\\"report.actions.show_info\\\"}}>\\n        <EmberPopover \\n            @popperContainer=\\\"body\\\" \\n            @tooltipClass=\\\"help-tooltip form-report-tooltip\\\" \\n            @event=\\\"none\\\" \\n            @isShown={{this.isVisible}} \\n            @hideOn=\\\"click\\\" \\n            @side=\\\"left\\\"\\n            @text={{this.infoText}}\\n        />\\n    </button>\\n</div>\\n\\n\", {\"contents\":\"<div class=\\\"btn-group report-actions actions-right\\\" data-anchor={{concat @name '-report-action'}}>\\n    <button type=\\\"button\\\" {{on 'click' (fn this.showInfo)}} class=\\\"btn btn-secondary glyphicon glyphicon-info-sign info-action-button\\\" title={{t \\\"report.actions.show_info\\\"}}>\\n        <EmberPopover \\n            @popperContainer=\\\"body\\\" \\n            @tooltipClass=\\\"help-tooltip form-report-tooltip\\\" \\n            @event=\\\"none\\\" \\n            @isShown={{this.isVisible}} \\n            @hideOn=\\\"click\\\" \\n            @side=\\\"left\\\"\\n            @text={{this.infoText}}\\n        />\\n    </button>\\n</div>\\n\\n\",\"moduleName\":\"tt4/components/addon/form-report/info.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/info.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { htmlSafe } from '@ember/template';\nimport fetch from 'fetch';\n\nexport default class FormReportInfoComponent extends Component {\n    @tracked isVisible;\n    @tracked infoText;\n\n    constructor() {\n        super(...arguments);\n        this.setInfoText();\n    }\n\n    @action showInfo() {\n        this.isVisible = !this.isVisible;\n    }\n\n    async setInfoText() {\n        const key = 'report-help-' + moment.locale();\n        const fileUrl = `https://cloud-writer-prod.s3.amazonaws.com/${key}.html`;\n\n        let response = await fetch(fileUrl, { dataType: 'text' });\n        if (!response.ok) return (this.infoText = `cannot find help for ${key}`);\n\n        this.infoText = htmlSafe(await response.text());\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if @inlineEdit}}\\n    <div class=\\\"report-actions actions-right\\\">\\n        <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" data-anchor=\\\"inline-edit-save-button\\\" {{on 'click' @saveRows}}>{{t \\\"general_report.inline_edit.save\\\"}}</button>\\n    </div>\\n{{/if}}\\n<div class=\\\"report-actions actions-right hidden-xs hidden-sm inline-edit\\\" data-anchor={{concat @name '-report-action'}}>\\n    <XToggle\\n        @theme='light'\\n        @onLabel=''\\n        @offLabel={{t \\\"general_report.inline_edit.toggle\\\"}}\\n        @showLabels={{true}}\\n        @value={{@inlineEdit}}\\n        @onToggle={{fn @toggleInlineEdit}}\\n    />\\n</div>\", {\"contents\":\"{{#if @inlineEdit}}\\n    <div class=\\\"report-actions actions-right\\\">\\n        <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" data-anchor=\\\"inline-edit-save-button\\\" {{on 'click' @saveRows}}>{{t \\\"general_report.inline_edit.save\\\"}}</button>\\n    </div>\\n{{/if}}\\n<div class=\\\"report-actions actions-right hidden-xs hidden-sm inline-edit\\\" data-anchor={{concat @name '-report-action'}}>\\n    <XToggle\\n        @theme='light'\\n        @onLabel=''\\n        @offLabel={{t \\\"general_report.inline_edit.toggle\\\"}}\\n        @showLabels={{true}}\\n        @value={{@inlineEdit}}\\n        @onToggle={{fn @toggleInlineEdit}}\\n    />\\n</div>\",\"moduleName\":\"tt4/components/addon/form-report/inline-edit.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/inline-edit.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<li class=\\\"{{@disabledClass}}\\\">\\n    <div role=\\\"button\\\" data-anchor=\\\"report-more-unlock-rows\\\" {{on 'click' (fn @handleLock \\\"unlock\\\")}} >{{t \\\"report.unlock_selected_rows\\\"}}</div>\\n</li>\\n<li class=\\\"{{@disabledClass}}\\\">\\n    <div role=\\\"button\\\" data-anchor=\\\"report-more-lock-rows\\\" {{on 'click' (fn @handleLock \\\"lock\\\")}} >{{t \\\"report.lock_selected_rows\\\"}}</div>\\n</li>\", {\"contents\":\"<li class=\\\"{{@disabledClass}}\\\">\\n    <div role=\\\"button\\\" data-anchor=\\\"report-more-unlock-rows\\\" {{on 'click' (fn @handleLock \\\"unlock\\\")}} >{{t \\\"report.unlock_selected_rows\\\"}}</div>\\n</li>\\n<li class=\\\"{{@disabledClass}}\\\">\\n    <div role=\\\"button\\\" data-anchor=\\\"report-more-lock-rows\\\" {{on 'click' (fn @handleLock \\\"lock\\\")}} >{{t \\\"report.lock_selected_rows\\\"}}</div>\\n</li>\",\"moduleName\":\"tt4/components/addon/form-report/lock.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/lock.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<li class=\\\"{{@disabledClass}}\\\">\\n    <div role=\\\"button\\\" data-anchor=\\\"report-more-massedit\\\" {{on 'click' @openMassedit}} >{{t \\\"report.massedit\\\"}}</div>\\n</li>\", {\"contents\":\"<li class=\\\"{{@disabledClass}}\\\">\\n    <div role=\\\"button\\\" data-anchor=\\\"report-more-massedit\\\" {{on 'click' @openMassedit}} >{{t \\\"report.massedit\\\"}}</div>\\n</li>\",\"moduleName\":\"tt4/components/addon/form-report/mass-edit.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/mass-edit.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"\\n<li class=\\\"{{@disabledClass}}\\\" data-anchor=\\\"{{@dataAnchor}}\\\" >\\n    <div role=\\\"button\\\" {{on 'click' this.actionTriggered}} disabled={{@disabled}}>{{yield}}</div>\\n</li>\", {\"contents\":\"\\n<li class=\\\"{{@disabledClass}}\\\" data-anchor=\\\"{{@dataAnchor}}\\\" >\\n    <div role=\\\"button\\\" {{on 'click' this.actionTriggered}} disabled={{@disabled}}>{{yield}}</div>\\n</li>\",\"moduleName\":\"tt4/components/addon/form-report/more-row.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/more-row.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n/* istanbul ignore next: this should be tested in form-report acceptance test */\nexport default class FormReportMoreRowComponent extends Component {\n    @action\n    actionTriggered() {\n        if (this.args.action) this.args.action();\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<BasicDropdown as |dd|>\\n    <dd.Trigger class=\\\"dropdown-box-trigger\\\" data-anchor={{concat @name '-report-action'}}>\\n        {{#if @showLoader}}\\n            <img class=\\\"report-loading\\\" src=\\\"img/ajax-loader.gif\\\" alt={{t \\\"general.loading\\\"}} />\\n        {{else}}\\n            <span class=\\\"glyphicon glyphicon-option-horizontal\\\"></span> <p>{{t \\\"report.more_button\\\"}}</p>\\n        {{/if}}\\n    </dd.Trigger>\\n    <dd.Content class=\\\"dropdown-box-content ember-movenium-more-button\\\" {{on 'click' dd.actions.close}}>\\n        <ul>\\n            {{#if @disabledClass}}\\n                <li class=\\\"report-notchecked\\\" role=\\\"button\\\">{{t \\\"report.nothing_checked\\\" htmlSafe=true}}</li>\\n            {{/if}}\\n            {{#if (and @canChangeStatus @statusTypes)}}\\n                {{#if (has-block)}}\\n                    {{yield (hash\\n                            Status=(component \\\"addon/form-report/status\\\"\\n                                statusTypes=@statusTypes\\n                                changeStatus=(fn @changeStatus)\\n                                disabledClass=@disabledClass\\n                            )\\n                    )}}\\n                {{else}}\\n                    <Addon::FormReport::Status\\n                        @statusTypes={{@statusTypes}}\\n                        @changeStatus={{fn @changeStatus}}\\n                        @disabledClass={{@disabledClass}}\\n                    />\\n                {{/if}}\\n            {{/if}}\\n\\n            {{#if (need 'userlevel=5')}}\\n                {{#if (has-block)}}\\n                    {{yield (hash\\n                            Lock=(component \\\"addon/form-report/lock\\\"\\n                                handleLock=(fn @handleLock)\\n                                disabledClass=@disabledClass\\n                            )\\n                    )}}\\n                {{else}}\\n                    <Addon::FormReport::Lock\\n                        @handleLock={{fn @handleLock}}\\n                        @disabledClass={{@disabledClass}}\\n                    />\\n                {{/if}}\\n            {{/if}}\\n\\n            {{#if (need 'userlevel=3,4,5,6')}}\\n                {{#if (has-block)}}\\n                    {{yield (hash\\n                            Massedit=(component \\\"addon/form-report/mass-edit\\\"\\n                                selected=@selected\\n                                form=@form\\n                                disabledClass=@disabledClass\\n                                openMassedit=(fn @openMassedit)\\n                            )\\n                    )}}\\n                {{else}}\\n                    <Addon::FormReport::MassEdit\\n                        @selected={{@selected}}\\n                        @form={{@form}}\\n                        @disabledClass={{@disabledClass}}\\n                        @openMassedit={{fn @openMassedit}}\\n                    />\\n                {{/if}}\\n            {{/if}}\\n            {{#if (need (concat @form '@remove'))}}\\n                {{#if (has-block)}}\\n                    {{yield (hash\\n                            Remove=(component \\\"addon/form-report/remove\\\"\\n                                handleRemove=(fn @handleRemove)\\n                                showRemoved=@showRemoved\\n                                disabledClass=@disabledClass\\n                            )\\n                    )}}\\n                {{else}}\\n                    <Addon::FormReport::Remove\\n                        @handleRemove={{@handleRemove}}\\n                        @showRemoved={{@showRemoved}}\\n                        @disabledClass={{@disabledClass}}\\n                    />\\n                {{/if}}\\n            {{/if}}\\n            {{#if (has-block)}}\\n                {{yield (hash\\n                        QrCode=(component \\\"addon/form-report/qr-code\\\"\\n                            disabledClass=@disabledClass\\n                            selected=@selected\\n                            form=@form\\n                        )\\n                        Row=(component \\\"addon/form-report/more-row\\\"\\n                            disabledClass=@disabledClass\\n                        )\\n                )}}\\n            {{/if}}\\n        </ul>\\n    </dd.Content>\\n</BasicDropdown>\", {\"contents\":\"<BasicDropdown as |dd|>\\n    <dd.Trigger class=\\\"dropdown-box-trigger\\\" data-anchor={{concat @name '-report-action'}}>\\n        {{#if @showLoader}}\\n            <img class=\\\"report-loading\\\" src=\\\"img/ajax-loader.gif\\\" alt={{t \\\"general.loading\\\"}} />\\n        {{else}}\\n            <span class=\\\"glyphicon glyphicon-option-horizontal\\\"></span> <p>{{t \\\"report.more_button\\\"}}</p>\\n        {{/if}}\\n    </dd.Trigger>\\n    <dd.Content class=\\\"dropdown-box-content ember-movenium-more-button\\\" {{on 'click' dd.actions.close}}>\\n        <ul>\\n            {{#if @disabledClass}}\\n                <li class=\\\"report-notchecked\\\" role=\\\"button\\\">{{t \\\"report.nothing_checked\\\" htmlSafe=true}}</li>\\n            {{/if}}\\n            {{#if (and @canChangeStatus @statusTypes)}}\\n                {{#if (has-block)}}\\n                    {{yield (hash\\n                            Status=(component \\\"addon/form-report/status\\\"\\n                                statusTypes=@statusTypes\\n                                changeStatus=(fn @changeStatus)\\n                                disabledClass=@disabledClass\\n                            )\\n                    )}}\\n                {{else}}\\n                    <Addon::FormReport::Status\\n                        @statusTypes={{@statusTypes}}\\n                        @changeStatus={{fn @changeStatus}}\\n                        @disabledClass={{@disabledClass}}\\n                    />\\n                {{/if}}\\n            {{/if}}\\n\\n            {{#if (need 'userlevel=5')}}\\n                {{#if (has-block)}}\\n                    {{yield (hash\\n                            Lock=(component \\\"addon/form-report/lock\\\"\\n                                handleLock=(fn @handleLock)\\n                                disabledClass=@disabledClass\\n                            )\\n                    )}}\\n                {{else}}\\n                    <Addon::FormReport::Lock\\n                        @handleLock={{fn @handleLock}}\\n                        @disabledClass={{@disabledClass}}\\n                    />\\n                {{/if}}\\n            {{/if}}\\n\\n            {{#if (need 'userlevel=3,4,5,6')}}\\n                {{#if (has-block)}}\\n                    {{yield (hash\\n                            Massedit=(component \\\"addon/form-report/mass-edit\\\"\\n                                selected=@selected\\n                                form=@form\\n                                disabledClass=@disabledClass\\n                                openMassedit=(fn @openMassedit)\\n                            )\\n                    )}}\\n                {{else}}\\n                    <Addon::FormReport::MassEdit\\n                        @selected={{@selected}}\\n                        @form={{@form}}\\n                        @disabledClass={{@disabledClass}}\\n                        @openMassedit={{fn @openMassedit}}\\n                    />\\n                {{/if}}\\n            {{/if}}\\n            {{#if (need (concat @form '@remove'))}}\\n                {{#if (has-block)}}\\n                    {{yield (hash\\n                            Remove=(component \\\"addon/form-report/remove\\\"\\n                                handleRemove=(fn @handleRemove)\\n                                showRemoved=@showRemoved\\n                                disabledClass=@disabledClass\\n                            )\\n                    )}}\\n                {{else}}\\n                    <Addon::FormReport::Remove\\n                        @handleRemove={{@handleRemove}}\\n                        @showRemoved={{@showRemoved}}\\n                        @disabledClass={{@disabledClass}}\\n                    />\\n                {{/if}}\\n            {{/if}}\\n            {{#if (has-block)}}\\n                {{yield (hash\\n                        QrCode=(component \\\"addon/form-report/qr-code\\\"\\n                            disabledClass=@disabledClass\\n                            selected=@selected\\n                            form=@form\\n                        )\\n                        Row=(component \\\"addon/form-report/more-row\\\"\\n                            disabledClass=@disabledClass\\n                        )\\n                )}}\\n            {{/if}}\\n        </ul>\\n    </dd.Content>\\n</BasicDropdown>\",\"moduleName\":\"tt4/components/addon/form-report/more.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/more.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"no-content\\\">\\n    {{#if (has-block)}}\\n        {{yield}}\\n    {{else}}\\n        <span class=\\\"icon move move-Search\\\"></span>\\n        <span class=\\\"text\\\">{{t \\\"general.no-content\\\"}}</span>\\n        {{!--<span class=\\\"text small\\\">{{t \\\"general.no-content-help\\\"}}</span>--}}\\n    {{/if}}\\n</div>\\n\", {\"contents\":\"<div class=\\\"no-content\\\">\\n    {{#if (has-block)}}\\n        {{yield}}\\n    {{else}}\\n        <span class=\\\"icon move move-Search\\\"></span>\\n        <span class=\\\"text\\\">{{t \\\"general.no-content\\\"}}</span>\\n        {{!--<span class=\\\"text small\\\">{{t \\\"general.no-content-help\\\"}}</span>--}}\\n    {{/if}}\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/form-report/no-content.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/no-content.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<li>\\n    <div role=\\\"button\\\" data-anchor=\\\"pdf-full-more-export\\\" {{on 'click' (fn @openExportModal 'export_pdf_full')}} >{{t \\\"report.actions.export_pdf_full\\\"}}</div>\\n</li>\\n\", {\"contents\":\"<li>\\n    <div role=\\\"button\\\" data-anchor=\\\"pdf-full-more-export\\\" {{on 'click' (fn @openExportModal 'export_pdf_full')}} >{{t \\\"report.actions.export_pdf_full\\\"}}</div>\\n</li>\\n\",\"moduleName\":\"tt4/components/addon/form-report/pdf-full.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/pdf-full.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<li>\\n   <div role=\\\"button\\\" data-anchor=\\\"pdf-more-export\\\" {{on 'click' (fn @openExportModal 'export_pdf')}} >{{t \\\"report.actions.export_pdf\\\"}}</div>\\n</li>\", {\"contents\":\"<li>\\n   <div role=\\\"button\\\" data-anchor=\\\"pdf-more-export\\\" {{on 'click' (fn @openExportModal 'export_pdf')}} >{{t \\\"report.actions.export_pdf\\\"}}</div>\\n</li>\",\"moduleName\":\"tt4/components/addon/form-report/pdf.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/pdf.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<li class=\\\"{{@disabledClass}}\\\">\\n    <div role=\\\"button\\\" data-anchor=\\\"report-more-qrcode\\\" {{on 'click' this.generate}}>{{t \\\"general.generate_qr_code\\\"}}</div>\\n</li>\", {\"contents\":\"<li class=\\\"{{@disabledClass}}\\\">\\n    <div role=\\\"button\\\" data-anchor=\\\"report-more-qrcode\\\" {{on 'click' this.generate}}>{{t \\\"general.generate_qr_code\\\"}}</div>\\n</li>\",\"moduleName\":\"tt4/components/addon/form-report/qr-code.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/qr-code.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport config from 'tt4/config/environment';\nimport { assert } from '@ember/debug';\nimport { A } from '@ember/array';\nimport { generateQrCode } from 'tt4/utils/qrcode-generator';\n\nexport default class FormReportQrCode extends Component {\n    @service apiservice;\n    @service router;\n\n    constructor() {\n        super(...arguments);\n        assert(\n            'You need to give @editRoute for component (eg. /timetracker/edit/ or /machines/machine?modal=tooltype%2C)',\n            this.args.editRoute,\n        );\n    }\n\n    @action\n    async generate() {\n        let urls = this.getEditRouteUrls();\n        let ownUrl = this.getOwnUrl();\n        const editUrls = this.getEditUrls(ownUrl, urls);\n\n        const returnUrl = await this.apiservice.request('ttapi', '/qr_codes', 'POST', {\n            urls: editUrls,\n        });\n        const asHTML = await returnUrl.text();\n\n        const w = window.open('about:blank');\n        if (!w) return;\n\n        w.document.open();\n        w.document.write(asHTML);\n        w.document.close();\n    }\n\n    // Method to get edit route urls (eg. /timetracker/edit/12345) in array based on selected rows\n\n    getEditRouteUrls() {\n        const urlArr = [];\n        this.args.selected.forEach((row) => {\n            urlArr.push(this.args.editRoute + row.id);\n        });\n        return urlArr;\n    }\n\n    // Method to get own url (localhost:4200 or app.movenium.com)\n    /* istanbul ignore next */\n    getOwnUrl() {\n        if (config.environment !== 'development' && config.environment !== 'next') {\n            return 'https://app.movenium.com/';\n        } else {\n            return config.APP.OWN_URL.slice(-1) === '/'\n                ? config.APP.OWN_URL\n                : config.APP.OWN_URL + '/';\n        }\n    }\n\n    getEditUrls(ownUrl, urls) {\n        const arr = A([]);\n        for (const url of urls) {\n            const editUrl = ownUrl + '#' + url;\n\n            const qrImageUrl = generateQrCode(editUrl);\n\n            arr.pushObject({ url: qrImageUrl });\n        }\n        return arr;\n    }\n}\n\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"btn-group report-actions actions-right\\\" data-anchor={{concat @name '-report-action'}}>\\n    <button type=\\\"button\\\" {{on 'click' @refreshReport}} class=\\\"btn btn-secondary\\\" title={{t \\\"report.actions.refreshReport\\\"}}>\\n        <span class=\\\"glyphicon glyphicon-refresh\\\"></span>\\n    </button>\\n</div>\\n\\n\", {\"contents\":\"<div class=\\\"btn-group report-actions actions-right\\\" data-anchor={{concat @name '-report-action'}}>\\n    <button type=\\\"button\\\" {{on 'click' @refreshReport}} class=\\\"btn btn-secondary\\\" title={{t \\\"report.actions.refreshReport\\\"}}>\\n        <span class=\\\"glyphicon glyphicon-refresh\\\"></span>\\n    </button>\\n</div>\\n\\n\",\"moduleName\":\"tt4/components/addon/form-report/refresh.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/refresh.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"\\n{{#if @showRemoved}}\\n    <li class=\\\"{{@disabledClass}}\\\">\\n        <div role=\\\"button\\\" data-anchor=\\\"report-more-restore-rows\\\" {{on 'click' (fn @handleRemove \\\"restore\\\")}} >{{t \\\"report.restore_rows\\\"}}</div>\\n    </li>\\n{{else}}\\n    <li class=\\\"{{@disabledClass}}\\\">\\n       <div role=\\\"button\\\" data-anchor=\\\"report-more-remove-rows\\\" {{on 'click' (fn @handleRemove \\\"remove\\\")}} >{{t \\\"report.delete_rows\\\"}}</div>\\n    </li>\\n{{/if}}\", {\"contents\":\"\\n{{#if @showRemoved}}\\n    <li class=\\\"{{@disabledClass}}\\\">\\n        <div role=\\\"button\\\" data-anchor=\\\"report-more-restore-rows\\\" {{on 'click' (fn @handleRemove \\\"restore\\\")}} >{{t \\\"report.restore_rows\\\"}}</div>\\n    </li>\\n{{else}}\\n    <li class=\\\"{{@disabledClass}}\\\">\\n       <div role=\\\"button\\\" data-anchor=\\\"report-more-remove-rows\\\" {{on 'click' (fn @handleRemove \\\"remove\\\")}} >{{t \\\"report.delete_rows\\\"}}</div>\\n    </li>\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/form-report/remove.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/remove.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<BasicDropdown @verticalPosition=\\\"below\\\" as |dd|>\\n    <dd.Trigger class=\\\"dropdown-box-trigger template-selector-trigger\\\" title={{t \\\"report.actions.filter-selector\\\"}} data-anchor={{concat @name '-report-action'}}>\\n        <p>{{this.templateName}}</p> <span class=\\\"glyphicon glyphicon-chevron-down\\\"></span>\\n    </dd.Trigger>\\n    <dd.Content class=\\\"dropdown-box-content ember-movenium-report-template-selector\\\" {{on 'click' dd.actions.close}}>\\n        <ul class=\\\"filter-menu\\\">\\n            <div class=\\\"template-container hidden-xs hidden-sm\\\">\\n                <li role=\\\"button\\\" {{on 'click' @openTemplateModal}} data-anchor=\\\"template-selector-add-new\\\">{{t \\\"form-report.filter-selector.add\\\"}}</li>\\n                <button type=\\\"button\\\" name=\\\"merge_old_templates\\\" class=\\\"btn-xs\\\" {{on \\\"click\\\" @mergeTemplates}}>\\n                    {{t \\\"form-report.filter-selector.merge_old_templates\\\"}}\\n                </button>\\n            </div>\\n            <li role=\\\"button\\\" {{on 'click' @deactivateTemplate}}>{{t \\\"form-report.filter-selector.restore\\\"}}</li>\\n            <hr>\\n            <h5>{{t \\\"report.templates.header\\\"}}</h5>\\n            {{#each @formReportTemplates as |template index|}}\\n            <div class=\\\"template-container\\\" data-anchor={{concat \\\"template-selector-saved-teplate-\\\" index}}>\\n                <li role=\\\"button\\\" {{on 'click' (fn @activateTemplate template)}}\\n                    class=\\\"template-row {{if (eq template.id @currentFormTemplate) \\\"active\\\"}}\\\">{{template.name}}</li>\\n                {{#if template.isEditable}}\\n                    <span role=\\\"button\\\" class=\\\"move move-Pencil pull-right pr-1 hidden-xs hidden-sm\\\"\\n                        {{on 'click' (fn @editTemplate template)}}></span>\\n                    <span role=\\\"button\\\" class=\\\"move move-Delete pull-right\\\"\\n                        {{on 'click' (fn @removeTemplate template)}}></span>\\n                {{/if}}\\n            </div>\\n            {{/each}}\\n        </ul>\\n    </dd.Content>\\n</BasicDropdown>\", {\"contents\":\"<BasicDropdown @verticalPosition=\\\"below\\\" as |dd|>\\n    <dd.Trigger class=\\\"dropdown-box-trigger template-selector-trigger\\\" title={{t \\\"report.actions.filter-selector\\\"}} data-anchor={{concat @name '-report-action'}}>\\n        <p>{{this.templateName}}</p> <span class=\\\"glyphicon glyphicon-chevron-down\\\"></span>\\n    </dd.Trigger>\\n    <dd.Content class=\\\"dropdown-box-content ember-movenium-report-template-selector\\\" {{on 'click' dd.actions.close}}>\\n        <ul class=\\\"filter-menu\\\">\\n            <div class=\\\"template-container hidden-xs hidden-sm\\\">\\n                <li role=\\\"button\\\" {{on 'click' @openTemplateModal}} data-anchor=\\\"template-selector-add-new\\\">{{t \\\"form-report.filter-selector.add\\\"}}</li>\\n                <button type=\\\"button\\\" name=\\\"merge_old_templates\\\" class=\\\"btn-xs\\\" {{on \\\"click\\\" @mergeTemplates}}>\\n                    {{t \\\"form-report.filter-selector.merge_old_templates\\\"}}\\n                </button>\\n            </div>\\n            <li role=\\\"button\\\" {{on 'click' @deactivateTemplate}}>{{t \\\"form-report.filter-selector.restore\\\"}}</li>\\n            <hr>\\n            <h5>{{t \\\"report.templates.header\\\"}}</h5>\\n            {{#each @formReportTemplates as |template index|}}\\n            <div class=\\\"template-container\\\" data-anchor={{concat \\\"template-selector-saved-teplate-\\\" index}}>\\n                <li role=\\\"button\\\" {{on 'click' (fn @activateTemplate template)}}\\n                    class=\\\"template-row {{if (eq template.id @currentFormTemplate) \\\"active\\\"}}\\\">{{template.name}}</li>\\n                {{#if template.isEditable}}\\n                    <span role=\\\"button\\\" class=\\\"move move-Pencil pull-right pr-1 hidden-xs hidden-sm\\\"\\n                        {{on 'click' (fn @editTemplate template)}}></span>\\n                    <span role=\\\"button\\\" class=\\\"move move-Delete pull-right\\\"\\n                        {{on 'click' (fn @removeTemplate template)}}></span>\\n                {{/if}}\\n            </div>\\n            {{/each}}\\n        </ul>\\n    </dd.Content>\\n</BasicDropdown>\",\"moduleName\":\"tt4/components/addon/form-report/report-template-selector.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/report-template-selector.hbs\"}});\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\n\nexport default class FormReportReportTemplateSelector extends Component {\n    @service intl;\n    @service session;\n\n    get templateName() {\n        if (this.args.formReportTemplates.isPending) return null;\n        if (this.args.currentFormTemplate) {\n            const template = this.args.formReportTemplates.findBy(\n                'id',\n                this.args.currentFormTemplate,\n            );\n            if (template) return template.name;\n        }\n        return this.intl.t('filter-selector.default-view');\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<li>\\n    <div role=\\\"button\\\" {{on 'click' this.actionTriggered}} disabled={{@disabled}}>{{yield}}</div>\\n</li>\", {\"contents\":\"<li>\\n    <div role=\\\"button\\\" {{on 'click' this.actionTriggered}} disabled={{@disabled}}>{{yield}}</div>\\n</li>\",\"moduleName\":\"tt4/components/addon/form-report/row.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/row.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n/* istanbul ignore next: this should be tested in form-report acceptance test */\nexport default class FormReportRowComponent extends Component {\n    @action\n    actionTriggered() {\n        if (this.args.action) this.args.action();\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if @showRemoved}}\\n    <li>\\n        <div role=\\\"button\\\" data-anchor=\\\"hide-removed-more-export\\\" {{on 'click' @showOrHideRemoved}}>{{t \\\"report.actions.show_normal\\\"}}</div>\\n    </li>\\n{{else}}\\n    <li>\\n        <div role=\\\"button\\\" data-anchor=\\\"show-removed-more-export\\\" {{on 'click' @showOrHideRemoved}}>{{t \\\"report.actions.show_removed\\\"}}</div>\\n    </li>\\n{{/if}}\", {\"contents\":\"{{#if @showRemoved}}\\n    <li>\\n        <div role=\\\"button\\\" data-anchor=\\\"hide-removed-more-export\\\" {{on 'click' @showOrHideRemoved}}>{{t \\\"report.actions.show_normal\\\"}}</div>\\n    </li>\\n{{else}}\\n    <li>\\n        <div role=\\\"button\\\" data-anchor=\\\"show-removed-more-export\\\" {{on 'click' @showOrHideRemoved}}>{{t \\\"report.actions.show_removed\\\"}}</div>\\n    </li>\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/form-report/show-removed.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/show-removed.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#each @statusTypes as |type|}}\\n    <li class=\\\"{{@disabledClass}}\\\">\\n        <div role=\\\"button\\\" data-anchor={{concat \\\"report-more-status-\\\" type.id}} {{on 'click' (fn @changeStatus type.id)}}>{{type.name}}</div>\\n    </li>\\n{{/each}}\\n<hr>\", {\"contents\":\"{{#each @statusTypes as |type|}}\\n    <li class=\\\"{{@disabledClass}}\\\">\\n        <div role=\\\"button\\\" data-anchor={{concat \\\"report-more-status-\\\" type.id}} {{on 'click' (fn @changeStatus type.id)}}>{{type.name}}</div>\\n    </li>\\n{{/each}}\\n<hr>\",\"moduleName\":\"tt4/components/addon/form-report/status.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/status.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-form-report-table\\\">\\n\\n    {{#if (has-block)}}\\n    {{yield (hash\\n        Actions=(component \\\"addon/form-report/actions\\\"\\n                    form=@form\\n                    selected=@selected\\n                    inlineEdit=@inlineEdit\\n                    columns=@columns\\n                    allColumns=@allColumns\\n                    rowsPerPage=@rowsPerPage\\n                    currentTemplate=@currentTemplate\\n                    templatesSettings=@templatesSettings\\n                    statusTypes=@statusTypes\\n                    columnsChanged=@columnsChanged\\n                    showLoader=@showLoader\\n                    showRemoved=@showRemoved\\n                    formReportTemplates=@formReportTemplates\\n                    currentFormTemplate=@currentFormTemplate\\n                    setRowsPerPage=(fn @setRowsPerPage)\\n                    exportPdf=(fn @exportPdf @selected)\\n                    exportCsv=(fn @exportCsv @selected)\\n                    showOrHideRemoved=(fn @showOrHideRemoved)\\n                    openExportModal=(fn @openExportModal @selected)\\n                    refreshReport=(fn this.refreshReport)\\n                    saveRows=(fn @saveRows)\\n                    changeStatus=(fn this.changeStatus @selected)\\n                    handleLock=(fn this.handleLock @selected)\\n                    handleRemove=(fn this.handleRemove @selected)\\n                    toggleInlineEdit=(fn @toggleInlineEdit)\\n                    openMassedit=(fn (mut this.showMassedit) true)\\n                    openGpsMap=(fn @openGpsMap @selected)\\n                    activateTemplate=(fn @activateTemplate)\\n                    deactivateTemplate=(fn @deactivateTemplate)\\n                    editTemplate=(fn @editTemplate)\\n                    removeTemplate=(fn @removeTemplate)\\n                    openTemplateModal=(fn @openTemplateModal)\\n                    sumReport=@sumReport\\n                    mergeTemplates=@mergeTemplates\\n                    localStorageKey=@localStorageKey\\n                    oldTemplateFromLS=@oldTemplateFromLS\\n                    additionalMeta=@additionalMeta\\n\\n                )\\n            selected=@selected\\n    )}}\\n    {{else}}\\n        <Addon::FormReport::Actions\\n            @form={{@form}}\\n            @selected={{@selected}}\\n            @inlineEdit={{@inlineEdit}}\\n            @columns={{@columns}}\\n            @allColumns={{@allColumns}}\\n            @rowsPerPage={{@rowsPerPage}}\\n            @currentTemplate={{@currentTemplate}}\\n            @templatesSettings={{@templatesSettings}}\\n            @statusTypes={{@statusTypes}}\\n            @columnsChanged={{@columnsChanged}}\\n            @showLoader={{@showLoader}}\\n            @showRemoved={{@showRemoved}}\\n            @formReportTemplates={{@formReportTemplates}}\\n            @currentFormTemplate={{@currentFormTemplate}}\\n            @setRowsPerPage={{fn @setRowsPerPage}}\\n            @exportPdf={{fn @exportPdf @selected}}\\n            @exportCsv={{fn @exportCsv @selected}}\\n            @showOrHideRemoved={{fn @showOrHideRemoved}}\\n            @openExportModal={{fn @openExportModal @selected}}\\n            @refreshReport={{fn this.refreshReport}}\\n            @saveRows={{fn @saveRows}}\\n            @changeStatus={{fn this.changeStatus @selected}}\\n            @handleLock={{fn this.handleLock @selected}}\\n            @handleRemove={{fn this.handleRemove @selected}}\\n            @toggleInlineEdit={{fn @toggleInlineEdit}}\\n            @openMassedit={{fn (mut this.showMassedit) true}}\\n            @activateTemplate={{fn @activateTemplate}}\\n            @deactivateTemplate={{fn @deactivateTemplate}}\\n            @editTemplate={{fn @editTemplate}}\\n            @removeTemplate={{fn @removeTemplate}}\\n            @openTemplateModal={{fn @openTemplateModal}}\\n            @sumReport={{@sumReport}}\\n            @mergeTemplates={{@mergeTemplates}}\\n            @localStorageKey={{@localStorageKey}}\\n            @oldTemplateFromLS={{@oldTemplateFromLS}}\\n            @additionalMeta={{@additionalMeta}}\\n\\n        />\\n    {{/if}}\\n\\n    {{#if this.errors.length}}\\n        <div class=\\\"alert alert-danger alert-dismissable\\\">\\n            <a href=\\\"#\\\" class=\\\"close\\\" data-dismiss=\\\"alert\\\" aria-label={{t \\\"report.close_rows\\\"}}><span class=\\\"glyphicon glyphicon-remove\\\" aria-hidden=\\\"true\\\"></span></a>\\n            <h5>{{t \\\"general_report.inline_edit.error.title\\\"}}</h5>\\n            <ul>\\n                {{#each this.errors as |error|}}\\n                    {{#if error.message}}\\n                        <li>{{t \\\"general_report.inline_edit.error.row\\\" row=error.index error=error.message}}</li>\\n                    {{/if}}\\n                {{/each}}\\n            </ul>\\n        </div>\\n    {{/if}}\\n    {{#if (and @showRemoved (not @hideRemovedText))}}\\n        <p class=\\\"text-danger\\\">{{t \\\"general.report.removed_view\\\"}}</p>\\n    {{/if}}\\n    {{#if @showLocationMap}}\\n        <GpsLocationMap @zoomLevel={{15}} @wtmarkers={{@startEndMarkers}} @projectmarkers={{@locationMarkers}} />\\n    {{/if}}\\n    <EmberTable class={{concat \\\"ember-movenium-table \\\" (if @showRemoved 'removed-rows ') @classes}} as |table|>\\n\\n        <table.head @enableReorder={{false}} @sortFunction={{null}} @fillMode={{this.tableFillMode}} @fillColumnIndex={{this.fillColumnIndex}} @widthConstraint={{this.tableWidthConstraint}} @columns={{this._columns}} @sorts={{@sorts}} @onUpdateSorts={{fn @updateSorts}}  @onResize={{@saveResize}} as |head|>\\n            <head.row as |r|>\\n                <r.cell as |columnValue columnMeta|>\\n                    <div class=\\\"et-cell-container\\\" title={{columnValue.translated_name}}>\\n                        {{#if (and this.selectable (is-equal columnMeta.index 0) (not @showOnlySum))}}\\n                                <span class=\\\"et-toggle-select\\\" data-anchor=\\\"report-select-all-checkbox\\\">\\n                                <Input @type=\\\"checkbox\\\" @checked={{this.allSelected}} @change={{fn this.toggleSelectAll}} />\\n                                <span></span>\\n                                </span>\\n                        {{/if}}\\n                        <span class=\\\"th-text-wrapper\\\" data-anchor={{concat columnValue.name \\\"-column-title\\\"}}>{{columnValue.translated_name}}</span>\\n                        <EmberTh::SortIndicator @columnMeta={{columnMeta}} />\\n                        <EmberTh::ResizeHandle @columnMeta={{columnMeta}} />\\n                    </div>\\n                </r.cell>\\n            </head.row>\\n        </table.head>\\n\\n        {{#if (not (is-pending this.data))}}\\n            {{#unless @showOnlySum}}\\n                <table.body\\n                    @rows={{to-array (await this.data)}}\\n                    @onSelect={{if (and (not @inlineEdit) this.selectable) (fn @setSelectedRows)}}\\n                    @selection={{@selected}}\\n                    @rowSelectionMode='none'\\n                    {{!-- set action bar as fixed on \\\"hover\\\"\\n                              why: so that it does not hide columns all the time--}}\\n                    {{on \\\"mouseenter\\\" (fn (mut this.actionBarIsFixed) 'right')}}\\n                    {{on \\\"mouseleave\\\" (fn (mut this.actionBarIsFixed) false)}}\\n                    data-anchor=\\\"report-body\\\"\\n                    as |b|>\\n                    <b.row\\n                        @class=\\\"\\n                            {{if (or b.rowValue.isNew b.rowValue.hasDirtyAttributes) 'unsaved-record'}}\\n                            {{if (or b.rowValue.isSaving b.rowValue.isReloading) 'inflight-record'}}\\n                            {{unless @sumReport (concat 'ember-movenium-modified-since-' (call (fn this.modifiedSince b.rowValue.row_info))) ''}}\\n                        \\\"\\n                    as |r|>\\n                        <r.cell @class=\\\"{{if @inlineEdit \\\"inline-edit\\\"}}\\n                                        {{if (eq r.rowValue.row_info.status 'locked') \\\"locked-row\\\"}}\\\"\\n                            as |value cell|>\\n                            {{#if (and (eq r.columnMeta.index 0) (not @sumReport))}}\\n                                {{#with (call (fn this.modifiedSince b.rowValue.row_info)) as |days|}}\\n                                    {{#if (eq days 'none')}}\\n                                        <div class=\\\"ember-movenium-modified-row\\\"></div>\\n                                    {{else}}\\n                                        <div\\n                                            title={{t \\\"report.row_modified.tooltip\\\" date=(moment-format r.rowValue.row_info.modified (if (eq days 'today') 'LT' 'L'))}}\\n                                            class=\\\"ember-movenium-modified-row {{concat 'ember-movenium-modified-since-' days}}\\\">\\n                                        </div>\\n                                    {{/if}}\\n                                {{/with}}\\n                            {{/if}}\\n                            {{#if (eq cell.valuePath \\\"@actions\\\")}}\\n                                {{#unless @sumReport}}\\n                                    <div class=\\\"row-actions\\\">\\n                                        {{#if (has-block)}}\\n                                            {{yield (hash RowActions=(component @actionBar showActions=@rowActions row=r.rowValue form=@form inlineEdit=@inlineEdit))}}\\n                                        {{else}}\\n                                            {{component @actionBar showActions=@rowActions row=r.rowValue form=@form inlineEdit=@inlineEdit}}\\n                                        {{/if}}\\n                                    </div>\\n                                {{/unless}}\\n                            {{else}}\\n                                {{#if @inlineEdit}}\\n                                    {{inline-edit-row/cell\\n                                        r.rowValue\\n                                        cell\\n                                        (and cell.canEdit (not (call (fn this.testConditionalHide cell.features.hide r.rowValue))) (or r.rowValue.isNew r.rowValue.isEditable))\\n                                        r.rowValue.errors.messages.firstObject.message\\n                                        tagName=\\\"div\\\"\\n                                        filter=(call (fn this.getReloadsForField r.rowValue cell.external_type ))\\n                                    }}\\n                                {{else}}\\n                                    {{#if @formatCells}}\\n                                        {{yield (hash Cell=(component \\\"addon/form-report/cell\\\" form=@form field=cell.external_type value=value row=r.rowValue))}}\\n                                    {{else if (or (is-equal cell.type \\\"multiselect\\\") (is-equal cell.type \\\"databasearray\\\"))}}\\n                                        <LinkTo @query={{hash modal=(concat \\\"modalrows,\\\" @form \\\".\\\" cell.external_type \\\",\\\" r.rowValue.id)}} @class=\\\"clickable\\\">\\n                                            <Addon::ValueFormat @form={{@form}} @field={{cell.external_type}} @value={{value}} />\\n                                        </LinkTo>\\n                                    {{else}}\\n                                        <Addon::ValueFormat @form={{@form}} @field={{cell.external_type}} @value={{value}} @record={{b.rowValue}} />\\n                                    {{/if}}\\n                                {{/if}}\\n                            {{/if}}\\n                        </r.cell>\\n                    </b.row>\\n                </table.body>\\n            {{/unless}}\\n        {{/if}}\\n        {{#unless @hideSumRow}}\\n            <table.foot @rows={{this.sumRow}} />\\n        {{/unless}}\\n    </EmberTable>\\n\\n    {{#if (is-pending this.data)}}\\n            <LoaderIcon />\\n        {{else if (is-rejected this.data)}}\\n            <div class=\\\"alert alert-danger\\\" role=\\\"alert\\\">\\n                {{get (promise-rejected-reason this.data) 'message'}}.\\n            </div>\\n        {{else if (eq this.data.length 0)}}\\n            {{#if (has-block)}}\\n                {{yield (hash\\n                    NoContent=(component \\\"addon/form-report/no-content\\\")\\n                )}}\\n            {{else}}\\n                <Addon::FormReport::NoContent />\\n            {{/if}}\\n    {{/if}}\\n\\n    {{#if this.showMassedit}}\\n        <Addon::Modal @close={{fn (mut this.showMassedit) false}} @classes=\\\"ember-movenium-mass-edit-popup\\\" as |M|>\\n            <M.Header>{{t \\\"massedit.header\\\"}}</M.Header>\\n            <M.Body>\\n                <MassEdit @form={{@form}} @idsStr={{this.idsStr}} @inModal={{true}} @close={{fn this.closeMassEdit}} />\\n            </M.Body>\\n        </Addon::Modal>\\n    {{/if}}\\n</div>\", {\"contents\":\"<div class=\\\"ember-movenium-form-report-table\\\">\\n\\n    {{#if (has-block)}}\\n    {{yield (hash\\n        Actions=(component \\\"addon/form-report/actions\\\"\\n                    form=@form\\n                    selected=@selected\\n                    inlineEdit=@inlineEdit\\n                    columns=@columns\\n                    allColumns=@allColumns\\n                    rowsPerPage=@rowsPerPage\\n                    currentTemplate=@currentTemplate\\n                    templatesSettings=@templatesSettings\\n                    statusTypes=@statusTypes\\n                    columnsChanged=@columnsChanged\\n                    showLoader=@showLoader\\n                    showRemoved=@showRemoved\\n                    formReportTemplates=@formReportTemplates\\n                    currentFormTemplate=@currentFormTemplate\\n                    setRowsPerPage=(fn @setRowsPerPage)\\n                    exportPdf=(fn @exportPdf @selected)\\n                    exportCsv=(fn @exportCsv @selected)\\n                    showOrHideRemoved=(fn @showOrHideRemoved)\\n                    openExportModal=(fn @openExportModal @selected)\\n                    refreshReport=(fn this.refreshReport)\\n                    saveRows=(fn @saveRows)\\n                    changeStatus=(fn this.changeStatus @selected)\\n                    handleLock=(fn this.handleLock @selected)\\n                    handleRemove=(fn this.handleRemove @selected)\\n                    toggleInlineEdit=(fn @toggleInlineEdit)\\n                    openMassedit=(fn (mut this.showMassedit) true)\\n                    openGpsMap=(fn @openGpsMap @selected)\\n                    activateTemplate=(fn @activateTemplate)\\n                    deactivateTemplate=(fn @deactivateTemplate)\\n                    editTemplate=(fn @editTemplate)\\n                    removeTemplate=(fn @removeTemplate)\\n                    openTemplateModal=(fn @openTemplateModal)\\n                    sumReport=@sumReport\\n                    mergeTemplates=@mergeTemplates\\n                    localStorageKey=@localStorageKey\\n                    oldTemplateFromLS=@oldTemplateFromLS\\n                    additionalMeta=@additionalMeta\\n\\n                )\\n            selected=@selected\\n    )}}\\n    {{else}}\\n        <Addon::FormReport::Actions\\n            @form={{@form}}\\n            @selected={{@selected}}\\n            @inlineEdit={{@inlineEdit}}\\n            @columns={{@columns}}\\n            @allColumns={{@allColumns}}\\n            @rowsPerPage={{@rowsPerPage}}\\n            @currentTemplate={{@currentTemplate}}\\n            @templatesSettings={{@templatesSettings}}\\n            @statusTypes={{@statusTypes}}\\n            @columnsChanged={{@columnsChanged}}\\n            @showLoader={{@showLoader}}\\n            @showRemoved={{@showRemoved}}\\n            @formReportTemplates={{@formReportTemplates}}\\n            @currentFormTemplate={{@currentFormTemplate}}\\n            @setRowsPerPage={{fn @setRowsPerPage}}\\n            @exportPdf={{fn @exportPdf @selected}}\\n            @exportCsv={{fn @exportCsv @selected}}\\n            @showOrHideRemoved={{fn @showOrHideRemoved}}\\n            @openExportModal={{fn @openExportModal @selected}}\\n            @refreshReport={{fn this.refreshReport}}\\n            @saveRows={{fn @saveRows}}\\n            @changeStatus={{fn this.changeStatus @selected}}\\n            @handleLock={{fn this.handleLock @selected}}\\n            @handleRemove={{fn this.handleRemove @selected}}\\n            @toggleInlineEdit={{fn @toggleInlineEdit}}\\n            @openMassedit={{fn (mut this.showMassedit) true}}\\n            @activateTemplate={{fn @activateTemplate}}\\n            @deactivateTemplate={{fn @deactivateTemplate}}\\n            @editTemplate={{fn @editTemplate}}\\n            @removeTemplate={{fn @removeTemplate}}\\n            @openTemplateModal={{fn @openTemplateModal}}\\n            @sumReport={{@sumReport}}\\n            @mergeTemplates={{@mergeTemplates}}\\n            @localStorageKey={{@localStorageKey}}\\n            @oldTemplateFromLS={{@oldTemplateFromLS}}\\n            @additionalMeta={{@additionalMeta}}\\n\\n        />\\n    {{/if}}\\n\\n    {{#if this.errors.length}}\\n        <div class=\\\"alert alert-danger alert-dismissable\\\">\\n            <a href=\\\"#\\\" class=\\\"close\\\" data-dismiss=\\\"alert\\\" aria-label={{t \\\"report.close_rows\\\"}}><span class=\\\"glyphicon glyphicon-remove\\\" aria-hidden=\\\"true\\\"></span></a>\\n            <h5>{{t \\\"general_report.inline_edit.error.title\\\"}}</h5>\\n            <ul>\\n                {{#each this.errors as |error|}}\\n                    {{#if error.message}}\\n                        <li>{{t \\\"general_report.inline_edit.error.row\\\" row=error.index error=error.message}}</li>\\n                    {{/if}}\\n                {{/each}}\\n            </ul>\\n        </div>\\n    {{/if}}\\n    {{#if (and @showRemoved (not @hideRemovedText))}}\\n        <p class=\\\"text-danger\\\">{{t \\\"general.report.removed_view\\\"}}</p>\\n    {{/if}}\\n    {{#if @showLocationMap}}\\n        <GpsLocationMap @zoomLevel={{15}} @wtmarkers={{@startEndMarkers}} @projectmarkers={{@locationMarkers}} />\\n    {{/if}}\\n    <EmberTable class={{concat \\\"ember-movenium-table \\\" (if @showRemoved 'removed-rows ') @classes}} as |table|>\\n\\n        <table.head @enableReorder={{false}} @sortFunction={{null}} @fillMode={{this.tableFillMode}} @fillColumnIndex={{this.fillColumnIndex}} @widthConstraint={{this.tableWidthConstraint}} @columns={{this._columns}} @sorts={{@sorts}} @onUpdateSorts={{fn @updateSorts}}  @onResize={{@saveResize}} as |head|>\\n            <head.row as |r|>\\n                <r.cell as |columnValue columnMeta|>\\n                    <div class=\\\"et-cell-container\\\" title={{columnValue.translated_name}}>\\n                        {{#if (and this.selectable (is-equal columnMeta.index 0) (not @showOnlySum))}}\\n                                <span class=\\\"et-toggle-select\\\" data-anchor=\\\"report-select-all-checkbox\\\">\\n                                <Input @type=\\\"checkbox\\\" @checked={{this.allSelected}} @change={{fn this.toggleSelectAll}} />\\n                                <span></span>\\n                                </span>\\n                        {{/if}}\\n                        <span class=\\\"th-text-wrapper\\\" data-anchor={{concat columnValue.name \\\"-column-title\\\"}}>{{columnValue.translated_name}}</span>\\n                        <EmberTh::SortIndicator @columnMeta={{columnMeta}} />\\n                        <EmberTh::ResizeHandle @columnMeta={{columnMeta}} />\\n                    </div>\\n                </r.cell>\\n            </head.row>\\n        </table.head>\\n\\n        {{#if (not (is-pending this.data))}}\\n            {{#unless @showOnlySum}}\\n                <table.body\\n                    @rows={{to-array (await this.data)}}\\n                    @onSelect={{if (and (not @inlineEdit) this.selectable) (fn @setSelectedRows)}}\\n                    @selection={{@selected}}\\n                    @rowSelectionMode='none'\\n                    {{!-- set action bar as fixed on \\\"hover\\\"\\n                              why: so that it does not hide columns all the time--}}\\n                    {{on \\\"mouseenter\\\" (fn (mut this.actionBarIsFixed) 'right')}}\\n                    {{on \\\"mouseleave\\\" (fn (mut this.actionBarIsFixed) false)}}\\n                    data-anchor=\\\"report-body\\\"\\n                    as |b|>\\n                    <b.row\\n                        @class=\\\"\\n                            {{if (or b.rowValue.isNew b.rowValue.hasDirtyAttributes) 'unsaved-record'}}\\n                            {{if (or b.rowValue.isSaving b.rowValue.isReloading) 'inflight-record'}}\\n                            {{unless @sumReport (concat 'ember-movenium-modified-since-' (call (fn this.modifiedSince b.rowValue.row_info))) ''}}\\n                        \\\"\\n                    as |r|>\\n                        <r.cell @class=\\\"{{if @inlineEdit \\\"inline-edit\\\"}}\\n                                        {{if (eq r.rowValue.row_info.status 'locked') \\\"locked-row\\\"}}\\\"\\n                            as |value cell|>\\n                            {{#if (and (eq r.columnMeta.index 0) (not @sumReport))}}\\n                                {{#with (call (fn this.modifiedSince b.rowValue.row_info)) as |days|}}\\n                                    {{#if (eq days 'none')}}\\n                                        <div class=\\\"ember-movenium-modified-row\\\"></div>\\n                                    {{else}}\\n                                        <div\\n                                            title={{t \\\"report.row_modified.tooltip\\\" date=(moment-format r.rowValue.row_info.modified (if (eq days 'today') 'LT' 'L'))}}\\n                                            class=\\\"ember-movenium-modified-row {{concat 'ember-movenium-modified-since-' days}}\\\">\\n                                        </div>\\n                                    {{/if}}\\n                                {{/with}}\\n                            {{/if}}\\n                            {{#if (eq cell.valuePath \\\"@actions\\\")}}\\n                                {{#unless @sumReport}}\\n                                    <div class=\\\"row-actions\\\">\\n                                        {{#if (has-block)}}\\n                                            {{yield (hash RowActions=(component @actionBar showActions=@rowActions row=r.rowValue form=@form inlineEdit=@inlineEdit))}}\\n                                        {{else}}\\n                                            {{component @actionBar showActions=@rowActions row=r.rowValue form=@form inlineEdit=@inlineEdit}}\\n                                        {{/if}}\\n                                    </div>\\n                                {{/unless}}\\n                            {{else}}\\n                                {{#if @inlineEdit}}\\n                                    {{inline-edit-row/cell\\n                                        r.rowValue\\n                                        cell\\n                                        (and cell.canEdit (not (call (fn this.testConditionalHide cell.features.hide r.rowValue))) (or r.rowValue.isNew r.rowValue.isEditable))\\n                                        r.rowValue.errors.messages.firstObject.message\\n                                        tagName=\\\"div\\\"\\n                                        filter=(call (fn this.getReloadsForField r.rowValue cell.external_type ))\\n                                    }}\\n                                {{else}}\\n                                    {{#if @formatCells}}\\n                                        {{yield (hash Cell=(component \\\"addon/form-report/cell\\\" form=@form field=cell.external_type value=value row=r.rowValue))}}\\n                                    {{else if (or (is-equal cell.type \\\"multiselect\\\") (is-equal cell.type \\\"databasearray\\\"))}}\\n                                        <LinkTo @query={{hash modal=(concat \\\"modalrows,\\\" @form \\\".\\\" cell.external_type \\\",\\\" r.rowValue.id)}} @class=\\\"clickable\\\">\\n                                            <Addon::ValueFormat @form={{@form}} @field={{cell.external_type}} @value={{value}} />\\n                                        </LinkTo>\\n                                    {{else}}\\n                                        <Addon::ValueFormat @form={{@form}} @field={{cell.external_type}} @value={{value}} @record={{b.rowValue}} />\\n                                    {{/if}}\\n                                {{/if}}\\n                            {{/if}}\\n                        </r.cell>\\n                    </b.row>\\n                </table.body>\\n            {{/unless}}\\n        {{/if}}\\n        {{#unless @hideSumRow}}\\n            <table.foot @rows={{this.sumRow}} />\\n        {{/unless}}\\n    </EmberTable>\\n\\n    {{#if (is-pending this.data)}}\\n            <LoaderIcon />\\n        {{else if (is-rejected this.data)}}\\n            <div class=\\\"alert alert-danger\\\" role=\\\"alert\\\">\\n                {{get (promise-rejected-reason this.data) 'message'}}.\\n            </div>\\n        {{else if (eq this.data.length 0)}}\\n            {{#if (has-block)}}\\n                {{yield (hash\\n                    NoContent=(component \\\"addon/form-report/no-content\\\")\\n                )}}\\n            {{else}}\\n                <Addon::FormReport::NoContent />\\n            {{/if}}\\n    {{/if}}\\n\\n    {{#if this.showMassedit}}\\n        <Addon::Modal @close={{fn (mut this.showMassedit) false}} @classes=\\\"ember-movenium-mass-edit-popup\\\" as |M|>\\n            <M.Header>{{t \\\"massedit.header\\\"}}</M.Header>\\n            <M.Body>\\n                <MassEdit @form={{@form}} @idsStr={{this.idsStr}} @inModal={{true}} @close={{fn this.closeMassEdit}} />\\n            </M.Body>\\n        </Addon::Modal>\\n    {{/if}}\\n</div>\",\"moduleName\":\"tt4/components/addon/form-report/table.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/form-report/table.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { get, set, action, computed } from '@ember/object';\nimport { isEmpty } from '@ember/utils';\nimport { getSums } from 'tt4/ember-movenium/utils/sumrow';\nimport { isMobile } from 'tt4/ember-movenium/utils/gui';\nimport { inject as service } from '@ember/service';\nimport { isArray } from '@ember/array';\nimport validator from 'tt4/classes/validations';\nimport moment from 'moment';\n\nexport default class FormReportTableComponent extends Component {\n    @service('collector-service') collector;\n    @service forms;\n    @service flags;\n\n    @tracked selected;\n    @tracked 'data.length';\n    @tracked actionBarIsFixed = false;\n\n    get selectable() {\n        return this.args.selectable;\n    }\n\n    get data() {\n        return this.args.data || [];\n    }\n\n    get allSelected() {\n        return this.data.length === this.args.selected.length;\n    }\n\n    get _columns() {\n        let actions = {\n            name: '',\n            valuePath: '@actions',\n            isFixed: this.actionBarIsFixed,\n            maxwidth: 45,\n            isSortable: false,\n            isResizable: false,\n        };\n        if (this.flags.test('form-report-trimmed-query')) {\n            actions = {\n                name: '',\n                valuePath: '@actions',\n                isFixed: this.actionBarIsFixed,\n                width: 130,\n                isSortable: false,\n                isResizable: false,\n            };\n        }\n        return this.args.columns.concat([actions]);\n    }\n\n    get tableFillMode() {\n        if (isMobile()) return 'equal-column';\n        if (this.args.currentFormTemplate) return 'nth-column';\n        return this.args.columns.length < 13 && !this.args.columnSizes.length\n            ? 'equal-column'\n            : 'nth-column';\n    }\n\n    get fillColumnIndex() {\n        return this.args.columns.length - 1;\n    }\n\n    get tableWidthConstraint() {\n        if (isMobile()) return 'gte-container';\n        return this.args.columns.length > 13 ? 'gte-container' : 'eq-container';\n    }\n\n    get sumRow() {\n        let data = !isEmpty(this.args.selected) ? this.args.selected : this.data;\n\n        if (!this.args.columns || !this.data) return {};\n\n        return getSums(data, this.args.columns, this.args.form, this.collector, this.forms);\n    }\n\n    /* Has to be computed, because we only want a simple id list based on selected rows and without computed,\n       it began to spam selected list again and again which caused logical errors in massedit\n    */\n    @computed('args.selected')\n    get idsStr() {\n        return this.args.selected.mapBy('id').join(',');\n    }\n\n    @action\n    toggleSelectAll() {\n        if (get(this, 'allSelected')) {\n            this.args.setSelectedRows([]);\n        } else {\n            this.args.setSelectedRows(this.data.toArray());\n        }\n    }\n\n    @action\n    deselectAll() {\n        this.args.setSelectedRows([]);\n    }\n\n    @action\n    refreshReport() {\n        if (this.args.refreshReport) this.args.refreshReport();\n        this.deselectAll();\n    }\n\n    @action\n    changeStatus(selected, status) {\n        if (this.args.changeStatus) this.args.changeStatus(selected, status);\n        this.deselectAll();\n    }\n\n    @action\n    handleLock(selected, act) {\n        if (this.args.handleLock) this.args.handleLock(selected, act);\n        this.deselectAll();\n    }\n\n    @action\n    handleRemove(selected, act) {\n        if (this.args.handleRemove) this.args.handleRemove(selected, act);\n        this.deselectAll();\n    }\n\n    /* istanbul ignore next */\n    @action\n    modifiedSince(rowInfo) {\n        if (!rowInfo) return 'none';\n        if (!get(rowInfo, 'modified')) return 'none';\n\n        const modified = get(rowInfo, 'modified');\n        const created = get(rowInfo, 'created');\n\n        const diff =\n            moment.utc().startOf('day').unix() - moment.utc(modified).startOf('day').unix();\n        const days = moment.duration(diff, 'seconds').asDays();\n\n        const created_diff =\n            moment.utc(modified).startOf('day').unix() - moment.utc(created).startOf('day').unix();\n        const created_days = moment.duration(created_diff, 'seconds').asDays();\n        if (created_days === 0) {\n            if (days > 0) return 'none';\n            return 'today';\n        }\n        if (days > 14) return 'none';\n        if (days === 0) return '0';\n        return days;\n    }\n\n    @action\n    closeMassEdit() {\n        set(this, 'showMassedit', false);\n        this.deselectAll();\n    }\n\n    @action\n    testConditionalHide(hideRule, row) {\n        if (hideRule && isArray(hideRule)) hideRule = !validator._is_visible(row, hideRule);\n        return hideRule;\n    }\n\n    @action\n    getReloadsForField(record, field) {\n        const reloads = this.getReloads();\n        const fieldReloads = {};\n        reloads.forEach((item) => {\n            if (item.field === field) fieldReloads[item.filter] = record ? record[item.with] : null;\n        });\n\n        return fieldReloads;\n    }\n\n    getReloads() {\n        const reloads = [];\n        const fields = this.forms.fieldArray(this.args.form);\n        for (const field of fields) {\n            let reload = field.features?.reload;\n            if (reload) {\n                if (!isArray(reload)) reload = [reload];\n\n                for (const reloadfield of reload) {\n                    reloads.push({\n                        // field name that needs to be reloaded\n                        field: reloadfield,\n                        // filter name that is used to fetch objects.\n                        // Normally the form where reloader field points to. ie tasks?project=1234 => project\n                        filter: field.options?.form,\n                        // name of the field to use as filter .. this needs to found from model\n                        with: field.name,\n                    });\n                }\n            }\n        }\n\n        return reloads;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{!-- template-lint-disable no-nested-interactive --}}\\n<div class=\\\"ember-movenium-groupbyfilter-report\\\">\\n    <div role=\\\"button\\\" class=\\\"flex-input\\\" {{on 'click' this.toggleModal}}>\\n        {{#each this.chosenFields as |field|}}\\n            <span class=\\\"selected\\\">\\n                {{field.translated_name}}&nbsp;&nbsp;<span role=\\\"button\\\" class=\\\"cancel-icon\\\" {{on 'click' (fn this.removeField field true)}}>{{svg-jar \\\"Cancel\\\"}}</span>\\n            </span>\\n        {{/each}}\\n        <span class=\\\"groupbyfilter-text\\\">{{t \\\"filters.group_fields\\\"}}</span>\\n    </div>\\n</div>\\n\\n{{#if this.showModal}}\\n    <Addon::Modal @close={{this.toggleModal}} @classes=\\\"ember-movenium-groupbyfilter-modal\\\" as |M|>\\n        <M.Header>{{t \\\"filters.group_fields\\\"}}</M.Header>\\n        <M.Body>\\n            <div class=\\\"ember-movenium-groupbyfilter-flex-container\\\">\\n                <div class=\\\"ember-movenium-groupbyfilter-flex-column\\\">\\n                    <h4>{{t \\\"general.choose_fields\\\"}}</h4>\\n                    <ul class=\\\"ember-movenium-groupbyfilter-list\\\">\\n                        {{#each this.unchosenFields as |field|}}\\n                            <span role=\\\"button\\\" class=\\\"list-item\\\" {{on 'click' (fn this.addField field)}}>\\n                                <p>{{field.translated_name}}</p>\\n                                <span class=\\\"ember-movenium-groupbyfilter-checkmark\\\">{{svg-jar \\\"Checkmark\\\"}}</span>\\n                            </span>\\n                        {{/each}}\\n                    </ul>\\n                </div>\\n                <div class=\\\"ember-movenium-groupbyfilter-flex-column\\\">\\n                    <h4>{{t \\\"general.chosen_fields\\\"}}</h4>\\n                    <ul class=\\\"ember-movenium-groupbyfilter-list\\\" data-anchor=\\\"groupby-modal-selected-filters\\\">\\n                        {{#each this.chosenFields as |field|}}\\n                            <span role=\\\"button\\\" class=\\\"list-item\\\" {{on 'click' (fn this.removeField field false)}}>\\n                                <p>{{field.translated_name}}</p>\\n                                <span class=\\\"ember-movenium-groupbyfilter-checkmark selected\\\">{{svg-jar \\\"Checkmark\\\"}}</span>\\n                            </span>\\n                        {{/each}}\\n                    </ul>\\n                </div>\\n            </div>\\n        </M.Body>\\n        <M.Footer>\\n            <div class=\\\"ember-movenium-groupbyfilter-save\\\">\\n                <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button\\\" {{on 'click' this.applyFilters}}>{{t \\\"general.save\\\"}}</button>\\n            </div>\\n        </M.Footer>\\n    </Addon::Modal>\\n{{/if}}\", {\"contents\":\"{{!-- template-lint-disable no-nested-interactive --}}\\n<div class=\\\"ember-movenium-groupbyfilter-report\\\">\\n    <div role=\\\"button\\\" class=\\\"flex-input\\\" {{on 'click' this.toggleModal}}>\\n        {{#each this.chosenFields as |field|}}\\n            <span class=\\\"selected\\\">\\n                {{field.translated_name}}&nbsp;&nbsp;<span role=\\\"button\\\" class=\\\"cancel-icon\\\" {{on 'click' (fn this.removeField field true)}}>{{svg-jar \\\"Cancel\\\"}}</span>\\n            </span>\\n        {{/each}}\\n        <span class=\\\"groupbyfilter-text\\\">{{t \\\"filters.group_fields\\\"}}</span>\\n    </div>\\n</div>\\n\\n{{#if this.showModal}}\\n    <Addon::Modal @close={{this.toggleModal}} @classes=\\\"ember-movenium-groupbyfilter-modal\\\" as |M|>\\n        <M.Header>{{t \\\"filters.group_fields\\\"}}</M.Header>\\n        <M.Body>\\n            <div class=\\\"ember-movenium-groupbyfilter-flex-container\\\">\\n                <div class=\\\"ember-movenium-groupbyfilter-flex-column\\\">\\n                    <h4>{{t \\\"general.choose_fields\\\"}}</h4>\\n                    <ul class=\\\"ember-movenium-groupbyfilter-list\\\">\\n                        {{#each this.unchosenFields as |field|}}\\n                            <span role=\\\"button\\\" class=\\\"list-item\\\" {{on 'click' (fn this.addField field)}}>\\n                                <p>{{field.translated_name}}</p>\\n                                <span class=\\\"ember-movenium-groupbyfilter-checkmark\\\">{{svg-jar \\\"Checkmark\\\"}}</span>\\n                            </span>\\n                        {{/each}}\\n                    </ul>\\n                </div>\\n                <div class=\\\"ember-movenium-groupbyfilter-flex-column\\\">\\n                    <h4>{{t \\\"general.chosen_fields\\\"}}</h4>\\n                    <ul class=\\\"ember-movenium-groupbyfilter-list\\\" data-anchor=\\\"groupby-modal-selected-filters\\\">\\n                        {{#each this.chosenFields as |field|}}\\n                            <span role=\\\"button\\\" class=\\\"list-item\\\" {{on 'click' (fn this.removeField field false)}}>\\n                                <p>{{field.translated_name}}</p>\\n                                <span class=\\\"ember-movenium-groupbyfilter-checkmark selected\\\">{{svg-jar \\\"Checkmark\\\"}}</span>\\n                            </span>\\n                        {{/each}}\\n                    </ul>\\n                </div>\\n            </div>\\n        </M.Body>\\n        <M.Footer>\\n            <div class=\\\"ember-movenium-groupbyfilter-save\\\">\\n                <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button\\\" {{on 'click' this.applyFilters}}>{{t \\\"general.save\\\"}}</button>\\n            </div>\\n        </M.Footer>\\n    </Addon::Modal>\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/groupby-filter.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/groupby-filter.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport FormsService from 'tt4/injections/services/forms';\nimport { A } from '@ember/array';\nimport { IFormField } from 'tt4/ember-movenium/interfaces/forms';\nimport { tracked } from '@glimmer/tracking';\nimport { isEmpty } from '@ember/utils';\n\ninterface IGBFilter {\n    form: string;\n    value: string;\n    filterChange(args0: string | null): void;\n}\n\nexport default class GroupbyFilterComponent extends Component<IGBFilter> {\n    @service private forms!: FormsService;\n\n    @tracked private chosenFields: any = A([]);\n    @tracked private unchosenFields: any = A([]);\n    @tracked private showModal = false;\n\n    get fields() {\n        return this.forms.fieldArray(this.args.form);\n    }\n\n    get savedFields() {\n        if (!this.args.value) return [];\n        return this.args.value\n            .split(',')\n            .map((val: string) => this.forms.field(this.args.form, val));\n    }\n\n    constructor(owner: unknown, args: IGBFilter) {\n        super(owner, args);\n        const valueArr = this.args.value ? this.args.value.split(',') : [];\n        this.chosenFields = valueArr.map((val: string) => {\n            return this.fields.find((f: IFormField) => f.name === val);\n        });\n        this.unchosenFields = this.fields.filter((field: IFormField) => {\n            if (field.type === 'databasearray') return;\n            return !this.chosenFields.find((f: IFormField) => f.name === field.name);\n        });\n    }\n\n    @action\n    protected toggleModal(): void {\n        if (this.showModal) {\n            this.chosenFields = this.savedFields;\n            this.unchosenFields = this.fields.filter((field: IFormField) => {\n                if (field.type === 'databasearray') return;\n                return !this.chosenFields.find((f: IFormField) => f.name === field.name);\n            });\n        }\n        this.showModal = !this.showModal;\n    }\n\n    @action\n    protected addField(field: IFormField): void {\n        const indexOfField = this.unchosenFields.indexOf(field);\n        this.unchosenFields.splice(indexOfField, 1);\n        this.chosenFields.push(field);\n        this.unchosenFields = this.unchosenFields;\n        this.chosenFields = this.chosenFields;\n    }\n\n    @action\n    protected removeField(field: IFormField, applyFilters: boolean): void {\n        const indexOfField = this.chosenFields.indexOf(field);\n        this.chosenFields.splice(indexOfField, 1);\n        this.unchosenFields.push(field);\n        this.unchosenFields = this.unchosenFields;\n        this.chosenFields = this.chosenFields;\n        if (applyFilters) this.applyFilters();\n    }\n\n    @action\n    protected applyFilters(): void {\n        if (!isEmpty(this.chosenFields)) {\n            const chosenFieldNames = this.chosenFields.map((field: IFormField) => field.name);\n            this.args.filterChange(chosenFieldNames.join(','));\n        } else {\n            this.args.filterChange(null);\n        }\n        this.toggleModal();\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div role=\\\"button\\\" class=\\\"ember-movenium-close-icon\\\" {{on 'click' @onClick}}>{{svg-jar \\\"Cross\\\" width=\\\"30px\\\"}}</div>\\n\", {\"contents\":\"<div role=\\\"button\\\" class=\\\"ember-movenium-close-icon\\\" {{on 'click' @onClick}}>{{svg-jar \\\"Cross\\\" width=\\\"30px\\\"}}</div>\\n\",\"moduleName\":\"tt4/components/addon/icons/close.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/icons/close.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button {{@classes}} {{if @loading \\\"is-loading\\\"}}\\\" id={{@id}} name={{@name}} disabled={{@disabled}} {{on 'click' @onClick}} data-anchor={{concat @form '-save-button'}}>\\n\\n    {{#if @loading}}\\n\\n        {{#if @savingText}}\\n            {{@savingText}}\\n        {{else}}\\n            {{#if (has-block)}}\\n                {{yield}}\\n            {{else}}\\n                {{t 'general.saving'}}\\n            {{/if}}\\n        {{/if}}\\n\\n    {{else}}\\n        {{yield}}\\n\\n        {{#if (and @buttonText (not has-block))}}\\n            {{@buttonText}}\\n        {{else if (has-block)}}\\n        {{else}}\\n            {{t 'general.save'}}\\n        {{/if}}\\n\\n    {{/if}}\\n</button>\", {\"contents\":\"<button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button {{@classes}} {{if @loading \\\"is-loading\\\"}}\\\" id={{@id}} name={{@name}} disabled={{@disabled}} {{on 'click' @onClick}} data-anchor={{concat @form '-save-button'}}>\\n\\n    {{#if @loading}}\\n\\n        {{#if @savingText}}\\n            {{@savingText}}\\n        {{else}}\\n            {{#if (has-block)}}\\n                {{yield}}\\n            {{else}}\\n                {{t 'general.saving'}}\\n            {{/if}}\\n        {{/if}}\\n\\n    {{else}}\\n        {{yield}}\\n\\n        {{#if (and @buttonText (not has-block))}}\\n            {{@buttonText}}\\n        {{else if (has-block)}}\\n        {{else}}\\n            {{t 'general.save'}}\\n        {{/if}}\\n\\n    {{/if}}\\n</button>\",\"moduleName\":\"tt4/components/addon/loading-button.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/loading-button.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<ModalDialog\\n    @onClose={{fn @close}}\\n    @onClickOverlay={{fn this.handleOverlayClick @outsideClose}}\\n    @wrapperClassNames=\\\"ember-movenium-modal {{@classes}}\\\"\\n    @translucentOverlay={{true}}\\n    @overlayPosition=\\\"sibling\\\"\\n>\\n\\n    {{yield (hash\\n        Header=(component \\\"addon/modal/header\\\" hideClose=@hideClose close=@close headerClass=@headerClass)\\n        Body=(component \\\"addon/modal/body\\\" bodyClass=@bodyClass)\\n        Footer=(component \\\"addon/modal/footer\\\" footerClass=@footerClass)\\n    )}}\\n\\n</ModalDialog>\\n\\n\\n\", {\"contents\":\"<ModalDialog\\n    @onClose={{fn @close}}\\n    @onClickOverlay={{fn this.handleOverlayClick @outsideClose}}\\n    @wrapperClassNames=\\\"ember-movenium-modal {{@classes}}\\\"\\n    @translucentOverlay={{true}}\\n    @overlayPosition=\\\"sibling\\\"\\n>\\n\\n    {{yield (hash\\n        Header=(component \\\"addon/modal/header\\\" hideClose=@hideClose close=@close headerClass=@headerClass)\\n        Body=(component \\\"addon/modal/body\\\" bodyClass=@bodyClass)\\n        Footer=(component \\\"addon/modal/footer\\\" footerClass=@footerClass)\\n    )}}\\n\\n</ModalDialog>\\n\\n\\n\",\"moduleName\":\"tt4/components/addon/modal.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/modal.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\ninterface IModal {\n    close(): void;\n}\n/* istanbul ignore next: cannot click outside modal in test */\nexport default class ModalComponent extends Component<IModal> {\n    @action\n    protected handleOverlayClick(outsideClick: boolean) {\n        if (!outsideClick) return;\n        return this.args.close();\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\" <div class=\\\"ember-movenium-modal-content {{if @bodyClass @bodyClass ''}}\\\">\\n    {{yield}}\\n</div>\", {\"contents\":\" <div class=\\\"ember-movenium-modal-content {{if @bodyClass @bodyClass ''}}\\\">\\n    {{yield}}\\n</div>\",\"moduleName\":\"tt4/components/addon/modal/body.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/modal/body.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-modal-footer {{if @footerClass @footerClass ''}}\\\">\\n    {{yield}}\\n</div>\", {\"contents\":\"<div class=\\\"ember-movenium-modal-footer {{if @footerClass @footerClass ''}}\\\">\\n    {{yield}}\\n</div>\",\"moduleName\":\"tt4/components/addon/modal/footer.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/modal/footer.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"ember-movenium-modal-header {{if @headerClass @headerClass ''}}\\\">\\n    <div class=\\\"flex-header\\\">\\n        {{yield}}\\n    </div>\\n    {{#unless @hideClose}}\\n        <Addon::Icons::Close @class=\\\"modal-close-icon\\\" @onClick={{fn @close}} />\\n    {{/unless}}\\n</div>\\n\\n\", {\"contents\":\"<div class=\\\"ember-movenium-modal-header {{if @headerClass @headerClass ''}}\\\">\\n    <div class=\\\"flex-header\\\">\\n        {{yield}}\\n    </div>\\n    {{#unless @hideClose}}\\n        <Addon::Icons::Close @class=\\\"modal-close-icon\\\" @onClick={{fn @close}} />\\n    {{/unless}}\\n</div>\\n\\n\",\"moduleName\":\"tt4/components/addon/modal/header.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/modal/header.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{! template-lint-disable no-bare-strings }}\\n{{!-- PAGINATION --}}\\n<nav class='pagination-lg pagination-centered'>\\n    {{#if this.showPagination}}\\n        <ul class=\\\"pagination {{if (is-equal this.position \\\"top\\\") \\\"top-pagination justify-content-center\\\"}}\\\">\\n            {{#if this.hasPreviousPage}}\\n                <li class={{if this.hasPreviousPage '' 'disabled'}}>\\n                    <span role=\\\"button\\\" {{on 'click' this.previousPage}} aria-label=\\\"Previous\\\" aria-hidden=\\\"true\\\">&laquo;</span>\\n                </li>\\n            {{/if}}\\n            {{#each this.pages as |page|}}\\n                <li class={{if (is-equal page this.currentPage) 'active'}}>\\n                    <span role=\\\"button\\\" {{on 'click' (fn this.changePage page)}}>{{page}}</span>\\n                </li>\\n            {{/each}}\\n            {{#if this.showCurrentpageOverLimit}}\\n                <li class=\\\"active\\\">\\n                    <span>{{this.currentPage}}</span>\\n                </li>\\n            {{/if}}\\n            {{#if (or this.queryLimitFull this.hasNextPage)}}\\n                <li class={{if (or this.queryLimitFull this.hasNextPage) '' 'disabled'}}>\\n                    <span role=\\\"button\\\" {{on 'click' this.nextPage}} aria-label=\\\"Next\\\" aria-hidden=\\\"true\\\">&raquo;</span>\\n                </li>\\n            {{/if}}\\n        </ul>\\n    {{/if}}\\n</nav>\", {\"contents\":\"{{! template-lint-disable no-bare-strings }}\\n{{!-- PAGINATION --}}\\n<nav class='pagination-lg pagination-centered'>\\n    {{#if this.showPagination}}\\n        <ul class=\\\"pagination {{if (is-equal this.position \\\"top\\\") \\\"top-pagination justify-content-center\\\"}}\\\">\\n            {{#if this.hasPreviousPage}}\\n                <li class={{if this.hasPreviousPage '' 'disabled'}}>\\n                    <span role=\\\"button\\\" {{on 'click' this.previousPage}} aria-label=\\\"Previous\\\" aria-hidden=\\\"true\\\">&laquo;</span>\\n                </li>\\n            {{/if}}\\n            {{#each this.pages as |page|}}\\n                <li class={{if (is-equal page this.currentPage) 'active'}}>\\n                    <span role=\\\"button\\\" {{on 'click' (fn this.changePage page)}}>{{page}}</span>\\n                </li>\\n            {{/each}}\\n            {{#if this.showCurrentpageOverLimit}}\\n                <li class=\\\"active\\\">\\n                    <span>{{this.currentPage}}</span>\\n                </li>\\n            {{/if}}\\n            {{#if (or this.queryLimitFull this.hasNextPage)}}\\n                <li class={{if (or this.queryLimitFull this.hasNextPage) '' 'disabled'}}>\\n                    <span role=\\\"button\\\" {{on 'click' this.nextPage}} aria-label=\\\"Next\\\" aria-hidden=\\\"true\\\">&raquo;</span>\\n                </li>\\n            {{/if}}\\n        </ul>\\n    {{/if}}\\n</nav>\",\"moduleName\":\"tt4/components/addon/pagi-nation.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/pagi-nation.hbs\"}});\nimport Component from '@glimmer/component';\nimport { gt } from '@ember/object/computed';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class PagiNateComponent extends Component {\n    constructor() {\n        super(...arguments);\n        this.currentPage = 1;\n    }\n\n    @tracked currentPage;\n\n    @gt('currentPage', 1) hasPreviousPage;\n    @gt('args.pageCount', 1) showPagination;\n\n    get pageCount() {\n        return this.args.pageCount;\n    }\n\n    get pages() {\n        let end, limiter, middle, midpoint, pages, ref, ref2, results, results1, start;\n        let pageCount = this.pageCount;\n        limiter = function (item) {\n            return item >= 1 && item <= pageCount;\n        };\n        start = [1, 2, 3, 4].filter(limiter);\n        end = function () {\n            results = [];\n            for (\n                var j = (ref = pageCount - 3), ref1 = pageCount + 1;\n                ref <= ref1 ? j < ref1 : j > ref1;\n                ref <= ref1 ? j++ : j--\n            ) {\n                results.push(j);\n            }\n            return results;\n        }\n            .apply(this)\n            .filter(limiter);\n        pages = this.union(start, end);\n        midpoint = this.currentPage;\n        if (this.currentPage < 8) {\n            midpoint = 8;\n        }\n        if (this.currentPage + 8 > pageCount) {\n            midpoint = pageCount - 8;\n        }\n        middle = function () {\n            results1 = [];\n            for (\n                var k = (ref2 = midpoint - 3), ref3 = midpoint + 4;\n                ref2 <= ref3 ? k < ref3 : k > ref3;\n                ref2 <= ref3 ? k++ : k--\n            ) {\n                results1.push(k);\n            }\n            return results1;\n        }\n            .apply(this)\n            .filter(limiter);\n        pages = this.union(pages, middle);\n        return this.fillCaps(pages);\n    }\n\n    get showCurrentpageOverLimit() {\n        return this.queryLimitFull && this.currentPage !== this.pageCount && !this.hasNextPage;\n    }\n\n    get hasNextPage() {\n        return this.currentPage < this.pageCount;\n    }\n\n    fillCaps(array) {\n        let break_indexes, i, j, last, len, ref;\n        last = 0;\n        break_indexes = [];\n        array.forEach(function (val, key) {\n            if (last + 1 !== val) {\n                break_indexes.push([key, last + 2 === val ? last + 1 : '...']);\n            }\n            return (last = val);\n        });\n        ref = break_indexes.reverse();\n        for (j = 0, len = ref.length; j < len; j++) {\n            i = ref[j];\n            array.splice(i[0], 0, i[1]);\n        }\n        return array;\n    }\n\n    union(arr1, arr2) {\n        var onlyUnique, sortNumber;\n        onlyUnique = function (value, index, self) {\n            return self.indexOf(value) === index;\n        };\n        sortNumber = function (a, b) {\n            return a - b;\n        };\n        return arr1.concat(arr2).filter(onlyUnique).sort(sortNumber);\n    }\n\n    @action\n    nextPage() {\n        this.currentPage = parseInt(this.currentPage, 10) + 1;\n        if (this.args.pageChange) {\n            return this.args.pageChange(this.currentPage);\n        }\n    }\n\n    @action\n    previousPage() {\n        this.currentPage = parseInt(this.currentPage, 10) - 1;\n        if (this.args.pageChange) {\n            return this.args.pageChange(this.currentPage);\n        }\n    }\n\n    @action\n    changePage(page) {\n        if (page === '...') {\n            return;\n        }\n        this.currentPage = page;\n\n        if (this.args.pageChange) {\n            return this.args.pageChange(this.currentPage);\n        }\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\" {{!-- template-lint-disable--}}\\n <div class=\\\"center\\\">\\n    <svg x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 128 128\\\" stroke=\\\"#000\\\" stroke-width=\\\"3\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\">\\n        <path id=\\\"body\\\">\\n            <animate attributeName=\\\"fill\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"\\n                #ff8d8b;\\n                #fed689;\\n                #88ff89;\\n                #87ffff;\\n                #8bb5fe;\\n                #d78cff;\\n                #ff8cff;\\n                #ff68f7;\\n                #fe6cb7;\\n                #ff6968;\\n                #ff8d8b\\n            \\\"/>\\n            <animate attributeName=\\\"d\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"\\n                M67.1,109.5c-9.6,0-23.6-8.8-23.6-24c0-12.1,17.8-41,37.5-41c15.6,0,23.3,10.6,25.1,20.5 c1.9,10.7,3.9,8.2,3.9,19.5c0,8.2-3.8,17-3.8,22.3c0,3.9,1.4,7.4,2.9,10.5c1.7,3.5,2.4,6.6,2.4,9.2H9.5c0-13.7,10.8-14,21.1-23 c5.6-4.9,11-12.4,14.5-26;\\n                M56.1,107.5c-9.6,0-24.6-13.8-24.6-29c0-16.2,13-42,33.5-42c17.8,0,22.3,11.6,26.1,22.5 c3.6,10.3,9.9,9.2,9.9,20.5c0,8.2-1.8,7-1.8,12.3c0,4.5,3.4,8.2,6.4,14.1c2.5,4.8,4.8,11.2,4.8,20.6h-99c0-12.1,7.2-17.6,14.7-24.3 c3.2-2.9,6.5-5.9,9.2-9.8;\\n                M45.1,109.5c-5.5-0.2-27.6-8.4-27.6-27c0-17.9,14.8-42,32.5-42c15.4,0,24,10.4,26.1,21.5 c1.3,6.7,9.9,9.8,9.9,21.5c0,8.2-0.8,6-0.8,11.3c0,7.7,12.8,9,20.8,15c7.7,5.8,15.5,16.7,15.5,16.7h-110c0-4.8,1.7-11.3,5-16 c3.2-4.5,4.5-8.3,5-15;\\n                M36,120c-5.5-0.2-28.5-11.9-28.5-30.5c0-16.2,12.5-42,33-42c17.8,0,21.8,9.6,25.6,20.5 C69.7,78.3,76,78.2,76,89.5c0,8.2-0.8,4-0.8,9.3c0,5.9,16.5,7.8,28.4,15.9c8,5.5,17.9,11.8,17.9,11.8h-110c0-2.1-1.2-5.2-1.9-14.5 c-0.3-3.6-0.5-8.1-0.5-13.9;\\n                M37,119.5c-15,0.1-33.5-12.7-33.5-30C3.5,73.3,16,47,36.5,47c17.8,0,22.8,11,26,22 C65.6,79.4,73,79.2,73,90.5c0,4-1.8,6.6-1.8,8.3c0,5.9,14.2,6.4,26.4,15.9c7.7,6,13.9,11.8,13.9,11.8H7.5c-1.2-3.4-1.8-7.3-1.9-11.2 c-0.2-5.1,0.3-10.1,0.9-13.7;\\n                M40.5,121.5c-12.6,0-30-13.4-30-29C10.5,76.3,23,53,43.5,53c14.5,0,22.8,9.6,25,22 c1.2,6.9,10,9.2,10,20.5c0,4,0,5.6,0,7.3c0,4.9,6.1,7.5,11.2,11.9c5.8,5,7.2,11.8,7.2,11.8H8.5c0-1.5-0.6-6.1,0.4-11.8 c0.6-3.5,1.9-7.5,4.3-11.6;\\n                M48.5,121.5c-12.6,0-25-6.3-25-18c0-16.2,13.7-47,36-47c15.6,0,24.8,9.1,27,21.5 c1.2,6.9,7,9.2,7,18.5c0,9.5-4,11-4,22c0,4.1,0.5,5,1,6c0.5,1.2,1,2,1,2h-81c0-5.3,3.1-8.3,6.3-11.5c2.6-2.6,5.4-5.3,6.7-9.5;\\n                M68.5,121.5c-12.6,0-33-5.8-33-23c0-9.2,11.8-36,37-36c15.6,0,25.8,8.1,28,20.5 c1.2,6.9,4,6.2,4,15.5c0,9.5-5,15.1-5,21c0,1.9,1,2.3,1,5c0,1.2,0,2,0,2h-91c0.5-7.6,7.1-11.1,13.7-15.7c4.9-3.4,9.9-7.5,12.3-14.3;\\n                M73.5,117.5c-12.6,0-30-6.2-30-25c0-14.2,20.9-37,38-37c17.6,0,25.8,11.1,28,23.5 c1.2,6.9,3,7.2,3,16.5c0,12.1-6,16.1-6,22c0,4.2,2,5.3,2,8c0,1.2,0,1,0,1H7.5c2.1-9.4,10.4-13.3,19.2-19.4 c7.1-5,14.4-11.5,18.8-23.6;\\n                M80.5,115.5c-12.6,0-32-9.2-32-28c0-14.2,22.9-35,40-35c17.6,0,25.8,12.1,28,24.5 c1.2,6.9,3,6.2,3,15.5c0,12.1-6,19.1-6,25c0,4.2,2,5.3,2,8c0,1.2,0,1,0,1h-102c2.3-8.7,11.6-11.7,20.8-20.1 c5.3-4.8,10.5-11.4,14.2-21.9;\\n                M67.1,109.5c-9.6,0-23.6-8.8-23.6-24c0-12.1,17.8-41,37.5-41c15.6,0,23.3,10.6,25.1,20.5 c1.9,10.7,3.9,8.2,3.9,19.5c0,8.2-3.8,17-3.8,22.3c0,3.9,1.4,7.4,2.9,10.5c1.7,3.5,2.4,6.6,2.4,9.2H9.5c0-13.7,10.8-14,21.1-23 c5.6-4.9,11-12.4,14.5-26\\n            \\\"/>\\n        </path>\\n        <path id=\\\"beak\\\" fill=\\\"#7b8c68\\\">\\n            <animate attributeName=\\\"d\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"\\n                M78.29,70c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S78.29,85.5,78.29,70Z;\\n                M62.29,64c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S62.29,79.5,62.29,64Z;\\n                M48.29,67c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S48.29,82.5,48.29,67Z;\\n                M36.29,73c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S36.29,88.5,36.29,73Z;\\n                M35.29,75c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S35.29,90.5,35.29,75Z;\\n                M41.29,81c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S41.29,96.5,41.29,81Z;\\n                M59.29,84c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S59.29,99.5,59.29,84Z;\\n                M72.29,89c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S72.29,104.5,72.29,89Z;\\n                M80.29,82c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S80.29,97.5,80.29,82Z;\\n                M87.29,78c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S87.29,93.5,87.29,78Z;\\n                M78.29,70c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S78.29,85.5,78.29,70Z\\n            \\\"/>\\n        </path>\\n        <ellipse id=\\\"eye-right\\\" rx=\\\"3\\\" ry=\\\"4\\\">\\n            <animate attributeName=\\\"cx\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"100;84;70;58;57;63;81;94;102;109;100\\\"/>\\n            <animate attributeName=\\\"cy\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"62;56;59;65;67;73;76;81;74;70;62\\\"/>\\n        </ellipse>\\n        <ellipse id=\\\"eye-left\\\" rx=\\\"3\\\" ry=\\\"4\\\">\\n            <animate attributeName=\\\"cx\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"67.5;51.5;37.5;25.5;24.5;30.5;48.5;61.5;69.5;76.5;67.5\\\"/>\\n            <animate attributeName=\\\"cy\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"62;56;59;65;67;73;76;81;74;70;62\\\"/>\\n        </ellipse>\\n    </svg>\\n    <br>\\n    {{#unless @hideSpeedSlider}}\\n        <input style=\\\"width:10vw;display:block;margin:auto;\\\" type=\\\"range\\\" min=\\\"200\\\" max=\\\"2000\\\" value={{this.value}} step=\\\"1\\\" id=\\\"animationDuration\\\" onchange={{this.updateDuration}} oninput={{this.updateDuration}}>\\n    {{/unless}}\\n</div>\", {\"contents\":\" {{!-- template-lint-disable--}}\\n <div class=\\\"center\\\">\\n    <svg x=\\\"0px\\\" y=\\\"0px\\\" viewBox=\\\"0 0 128 128\\\" stroke=\\\"#000\\\" stroke-width=\\\"3\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\">\\n        <path id=\\\"body\\\">\\n            <animate attributeName=\\\"fill\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"\\n                #ff8d8b;\\n                #fed689;\\n                #88ff89;\\n                #87ffff;\\n                #8bb5fe;\\n                #d78cff;\\n                #ff8cff;\\n                #ff68f7;\\n                #fe6cb7;\\n                #ff6968;\\n                #ff8d8b\\n            \\\"/>\\n            <animate attributeName=\\\"d\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"\\n                M67.1,109.5c-9.6,0-23.6-8.8-23.6-24c0-12.1,17.8-41,37.5-41c15.6,0,23.3,10.6,25.1,20.5 c1.9,10.7,3.9,8.2,3.9,19.5c0,8.2-3.8,17-3.8,22.3c0,3.9,1.4,7.4,2.9,10.5c1.7,3.5,2.4,6.6,2.4,9.2H9.5c0-13.7,10.8-14,21.1-23 c5.6-4.9,11-12.4,14.5-26;\\n                M56.1,107.5c-9.6,0-24.6-13.8-24.6-29c0-16.2,13-42,33.5-42c17.8,0,22.3,11.6,26.1,22.5 c3.6,10.3,9.9,9.2,9.9,20.5c0,8.2-1.8,7-1.8,12.3c0,4.5,3.4,8.2,6.4,14.1c2.5,4.8,4.8,11.2,4.8,20.6h-99c0-12.1,7.2-17.6,14.7-24.3 c3.2-2.9,6.5-5.9,9.2-9.8;\\n                M45.1,109.5c-5.5-0.2-27.6-8.4-27.6-27c0-17.9,14.8-42,32.5-42c15.4,0,24,10.4,26.1,21.5 c1.3,6.7,9.9,9.8,9.9,21.5c0,8.2-0.8,6-0.8,11.3c0,7.7,12.8,9,20.8,15c7.7,5.8,15.5,16.7,15.5,16.7h-110c0-4.8,1.7-11.3,5-16 c3.2-4.5,4.5-8.3,5-15;\\n                M36,120c-5.5-0.2-28.5-11.9-28.5-30.5c0-16.2,12.5-42,33-42c17.8,0,21.8,9.6,25.6,20.5 C69.7,78.3,76,78.2,76,89.5c0,8.2-0.8,4-0.8,9.3c0,5.9,16.5,7.8,28.4,15.9c8,5.5,17.9,11.8,17.9,11.8h-110c0-2.1-1.2-5.2-1.9-14.5 c-0.3-3.6-0.5-8.1-0.5-13.9;\\n                M37,119.5c-15,0.1-33.5-12.7-33.5-30C3.5,73.3,16,47,36.5,47c17.8,0,22.8,11,26,22 C65.6,79.4,73,79.2,73,90.5c0,4-1.8,6.6-1.8,8.3c0,5.9,14.2,6.4,26.4,15.9c7.7,6,13.9,11.8,13.9,11.8H7.5c-1.2-3.4-1.8-7.3-1.9-11.2 c-0.2-5.1,0.3-10.1,0.9-13.7;\\n                M40.5,121.5c-12.6,0-30-13.4-30-29C10.5,76.3,23,53,43.5,53c14.5,0,22.8,9.6,25,22 c1.2,6.9,10,9.2,10,20.5c0,4,0,5.6,0,7.3c0,4.9,6.1,7.5,11.2,11.9c5.8,5,7.2,11.8,7.2,11.8H8.5c0-1.5-0.6-6.1,0.4-11.8 c0.6-3.5,1.9-7.5,4.3-11.6;\\n                M48.5,121.5c-12.6,0-25-6.3-25-18c0-16.2,13.7-47,36-47c15.6,0,24.8,9.1,27,21.5 c1.2,6.9,7,9.2,7,18.5c0,9.5-4,11-4,22c0,4.1,0.5,5,1,6c0.5,1.2,1,2,1,2h-81c0-5.3,3.1-8.3,6.3-11.5c2.6-2.6,5.4-5.3,6.7-9.5;\\n                M68.5,121.5c-12.6,0-33-5.8-33-23c0-9.2,11.8-36,37-36c15.6,0,25.8,8.1,28,20.5 c1.2,6.9,4,6.2,4,15.5c0,9.5-5,15.1-5,21c0,1.9,1,2.3,1,5c0,1.2,0,2,0,2h-91c0.5-7.6,7.1-11.1,13.7-15.7c4.9-3.4,9.9-7.5,12.3-14.3;\\n                M73.5,117.5c-12.6,0-30-6.2-30-25c0-14.2,20.9-37,38-37c17.6,0,25.8,11.1,28,23.5 c1.2,6.9,3,7.2,3,16.5c0,12.1-6,16.1-6,22c0,4.2,2,5.3,2,8c0,1.2,0,1,0,1H7.5c2.1-9.4,10.4-13.3,19.2-19.4 c7.1-5,14.4-11.5,18.8-23.6;\\n                M80.5,115.5c-12.6,0-32-9.2-32-28c0-14.2,22.9-35,40-35c17.6,0,25.8,12.1,28,24.5 c1.2,6.9,3,6.2,3,15.5c0,12.1-6,19.1-6,25c0,4.2,2,5.3,2,8c0,1.2,0,1,0,1h-102c2.3-8.7,11.6-11.7,20.8-20.1 c5.3-4.8,10.5-11.4,14.2-21.9;\\n                M67.1,109.5c-9.6,0-23.6-8.8-23.6-24c0-12.1,17.8-41,37.5-41c15.6,0,23.3,10.6,25.1,20.5 c1.9,10.7,3.9,8.2,3.9,19.5c0,8.2-3.8,17-3.8,22.3c0,3.9,1.4,7.4,2.9,10.5c1.7,3.5,2.4,6.6,2.4,9.2H9.5c0-13.7,10.8-14,21.1-23 c5.6-4.9,11-12.4,14.5-26\\n            \\\"/>\\n        </path>\\n        <path id=\\\"beak\\\" fill=\\\"#7b8c68\\\">\\n            <animate attributeName=\\\"d\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"\\n                M78.29,70c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S78.29,85.5,78.29,70Z;\\n                M62.29,64c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S62.29,79.5,62.29,64Z;\\n                M48.29,67c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S48.29,82.5,48.29,67Z;\\n                M36.29,73c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S36.29,88.5,36.29,73Z;\\n                M35.29,75c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S35.29,90.5,35.29,75Z;\\n                M41.29,81c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S41.29,96.5,41.29,81Z;\\n                M59.29,84c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S59.29,99.5,59.29,84Z;\\n                M72.29,89c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S72.29,104.5,72.29,89Z;\\n                M80.29,82c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S80.29,97.5,80.29,82Z;\\n                M87.29,78c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S87.29,93.5,87.29,78Z;\\n                M78.29,70c0-9.92,2.5-14,8-14s8,2.17,8,10.67c0,15.92-7,26.33-7,26.33S78.29,85.5,78.29,70Z\\n            \\\"/>\\n        </path>\\n        <ellipse id=\\\"eye-right\\\" rx=\\\"3\\\" ry=\\\"4\\\">\\n            <animate attributeName=\\\"cx\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"100;84;70;58;57;63;81;94;102;109;100\\\"/>\\n            <animate attributeName=\\\"cy\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"62;56;59;65;67;73;76;81;74;70;62\\\"/>\\n        </ellipse>\\n        <ellipse id=\\\"eye-left\\\" rx=\\\"3\\\" ry=\\\"4\\\">\\n            <animate attributeName=\\\"cx\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"67.5;51.5;37.5;25.5;24.5;30.5;48.5;61.5;69.5;76.5;67.5\\\"/>\\n            <animate attributeName=\\\"cy\\\" dur={{this.dur}} repeatCount=\\\"indefinite\\\" keyTimes=\\\"0;0.1;0.2;0.3;0.4;0.5;0.6;0.7;0.8;0.9;1\\\" values=\\\"62;56;59;65;67;73;76;81;74;70;62\\\"/>\\n        </ellipse>\\n    </svg>\\n    <br>\\n    {{#unless @hideSpeedSlider}}\\n        <input style=\\\"width:10vw;display:block;margin:auto;\\\" type=\\\"range\\\" min=\\\"200\\\" max=\\\"2000\\\" value={{this.value}} step=\\\"1\\\" id=\\\"animationDuration\\\" onchange={{this.updateDuration}} oninput={{this.updateDuration}}>\\n    {{/unless}}\\n</div>\",\"moduleName\":\"tt4/components/addon/party-parrot.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/party-parrot.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\nexport default class PartyParrotComponent extends Component {\n    @tracked protected value: number = 500;\n    @tracked protected dur: string = '500ms';\n\n    @action\n    protected updateDuration(event: any) {\n        const newVal = Math.abs(event.target.value);\n        this.dur = 2200 - newVal + 'ms';\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Addon::Wizard @pages={{4}} @close={{fn @close}} @currentPage={{this.currentPage}} @pageChange={{fn (mut this.currentPage)}} as |W|>\\n    <W.Header>{{t 'report-template-wizard.header'}}</W.Header>\\n    <W.Steps @useSubmenus={{true}} @pageNames={{this.submenus}} @infoText={{this.infoText}} @isDisabled={{this.isDisabled}} />\\n    <W.Content>\\n        {{component this.currentPageComponent\\n        collectValuesToObject=(fn this.collectValuesToObject)\\n        removeValuesFromObject=(fn this.removeValuesFromObject)\\n        moveValuesInObject=(fn this.moveValuesInObject)\\n        setFilterOrder=(fn this.setFilterOrder)\\n        values=this.values\\n        columns=@columns\\n        form=@form\\n        mandatoryFilters=@filter\\n        errorEmpty=this.isDisabled\\n        setValues=(fn this.setValues)\\n        reorderFilters=(fn this.reorderFilters)\\n        userLevelOptions=this.userLevelOptions\\n        additionalFilters=@additionalFilters\\n        }}\\n    </W.Content>\\n    <W.Buttons @done={{fn @saveTemplate this.values}} @isDisabled={{this.isDisabled}} />\\n</Addon::Wizard>\\n\", {\"contents\":\"<Addon::Wizard @pages={{4}} @close={{fn @close}} @currentPage={{this.currentPage}} @pageChange={{fn (mut this.currentPage)}} as |W|>\\n    <W.Header>{{t 'report-template-wizard.header'}}</W.Header>\\n    <W.Steps @useSubmenus={{true}} @pageNames={{this.submenus}} @infoText={{this.infoText}} @isDisabled={{this.isDisabled}} />\\n    <W.Content>\\n        {{component this.currentPageComponent\\n        collectValuesToObject=(fn this.collectValuesToObject)\\n        removeValuesFromObject=(fn this.removeValuesFromObject)\\n        moveValuesInObject=(fn this.moveValuesInObject)\\n        setFilterOrder=(fn this.setFilterOrder)\\n        values=this.values\\n        columns=@columns\\n        form=@form\\n        mandatoryFilters=@filter\\n        errorEmpty=this.isDisabled\\n        setValues=(fn this.setValues)\\n        reorderFilters=(fn this.reorderFilters)\\n        userLevelOptions=this.userLevelOptions\\n        additionalFilters=@additionalFilters\\n        }}\\n    </W.Content>\\n    <W.Buttons @done={{fn @saveTemplate this.values}} @isDisabled={{this.isDisabled}} />\\n</Addon::Wizard>\\n\",\"moduleName\":\"tt4/components/addon/report-template-wizard.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/report-template-wizard.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { set, action } from '@ember/object';\nimport { A, isArray } from '@ember/array';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\nimport { htmlSafe } from '@ember/template';\n/* istanbul ignore next */\nexport default class ReportTemplateWizardComponent extends Component {\n    @service intl;\n    @service forms;\n    @service session;\n\n    @tracked currentPage;\n    @tracked values;\n    @tracked columns;\n    @tracked filters;\n\n    get currentPageComponent() {\n        return 'addon/report-template-wizard/page' + this.currentPage;\n    }\n\n    get infoText() {\n        return htmlSafe(this.intl.t('report-template-wizard.page' + this.currentPage));\n    }\n\n    get isDisabled() {\n        return isEmpty(this.values.name);\n    }\n\n    get userLevelOptions() {\n        const userlevelField = this.forms.fieldArray('user').findBy('name', 'userlevel');\n\n        return userlevelField.options.map((option) => {\n            if (parseInt(option, 10) > 9) {\n                return {\n                    id: parseInt(option, 10),\n                    name: option.substring(2),\n                };\n            } else {\n                const id = parseInt(option, 10);\n                return {\n                    id,\n                    name: this.intl.t('user.userlevel.' + id),\n                };\n            }\n        });\n    }\n\n    constructor() {\n        super(...arguments);\n        this.submenus = ['general', 'sums', 'columns', 'filters'];\n        this.currentPage = 1;\n        const defaultFilters = this.getDefaultFilters(this.args.filter);\n\n        if (this.args.templateValues) {\n            this.values = {\n                name: this.args.templateValues.name,\n                limit: this.args.templateValues.limit,\n                sums: JSON.parse(this.args.templateValues.sums),\n                sumType: this.args.templateValues.sumType,\n                columns: JSON.parse(this.args.templateValues.columns),\n                filters: JSON.parse(this.args.templateValues.filters),\n                userlevels: this.args.templateValues.userlevels,\n            };\n        } else {\n            this.values = {\n                name: null,\n                limit: null,\n                sums: A([]),\n                sumType: 'nosum',\n                columns: A([]),\n                filters: defaultFilters,\n                userlevels: null,\n            };\n        }\n    }\n\n    @action\n    collectValuesToObject(name, value, selected = null) {\n        switch (name) {\n            case 'columns':\n                this.values.columns.pushObject(value);\n                break;\n            case 'sums':\n                this.values.sums.pushObject(value);\n                break;\n            case 'filters':\n                if (selected) {\n                    if (isArray(selected)) selected = selected.map((sel) => sel.id).join(',');\n                    this.values.filters[value] = selected.id ? selected.id : selected;\n                } else {\n                    this.values.filters[value] = null;\n                }\n                break;\n            case 'sumType':\n                set(this, 'values.sumType', value);\n                if (value === 'nosum') set(this, 'values.sums', A([]));\n                break;\n            default:\n                set(this, 'values.' + name, value);\n        }\n        this.values = this.values;\n    }\n\n    @action\n    removeValuesFromObject(name, value) {\n        switch (name) {\n            case 'columns':\n                this.values.columns.removeObject(value);\n                break;\n            case 'sums':\n                this.values.sums.removeObject(value);\n                break;\n            case 'filters':\n                delete this.values.filters[value];\n                break;\n            default:\n                set(this, 'values.' + name, null);\n        }\n        this.values = this.values;\n    }\n\n    @action\n    moveValuesInObject(col, offset) {\n        let index = this.values.columns.indexOf(col);\n        this.values.columns.removeObject(col);\n        let newIndex = index + offset;\n        newIndex =\n            newIndex > this.values.columns.length\n                ? 0\n                : newIndex < 0\n                  ? this.values.columns.length\n                  : newIndex;\n        this.values.columns.insertAt(newIndex, col);\n        this.values = this.values;\n    }\n\n    @action\n    setFilterOrder(voluntary, mandatory) {\n        const objArray = Object.values(mandatory).concat(Object.values(voluntary));\n        let order = [];\n        objArray.forEach((rows) => {\n            rows.forEach((row) => {\n                order.pushObject({ form: row.form, name: row.name });\n            });\n        });\n        set(this, 'values.filterOrder', order);\n    }\n\n    @action\n    setValues(values, type) {\n        set(this, 'values.' + type, values);\n        this.values = this.values;\n    }\n\n    @action\n    reorderFilters(what, to) {\n        let moving = {};\n\n        var i = 0;\n        var spliceIndex = null;\n        let indexOfDeleted = null;\n\n        for (const [filterName, filterValue] of Object.entries(this.values.filters)) {\n            let filterNameIndex = filterName.split('.').length > 2 ? 1 : 0;\n            // check where to insert filters that we are moving\n            if (\n                (filterName.indexOf('.') > -1 && filterName.split('.')[filterNameIndex] == to) ||\n                (to == 'current' && filterName.indexOf('.') == -1 && !spliceIndex)\n            ) {\n                spliceIndex = i;\n            }\n            // remove all filters that we are moving\n            if (\n                (filterName.indexOf('.') > -1 && filterName.split('.')[filterNameIndex] == what) ||\n                (what == 'current' && filterName.indexOf('.') == -1)\n            ) {\n                moving[filterName] = filterValue;\n                delete this.values.filters[filterName];\n                indexOfDeleted = i;\n            }\n            i++;\n        }\n        // make arrays of objects so we can use splice to merge them\n        let filtersArr = Object.entries(this.values.filters);\n        let movingArr = Object.entries(moving);\n\n        spliceIndex = indexOfDeleted < spliceIndex ? spliceIndex - 1 : spliceIndex;\n        if (spliceIndex < 0) spliceIndex = 0;\n\n        filtersArr.splice(spliceIndex, 0, ...movingArr);\n\n        // make object from array\n        this.values.filters = Object.fromEntries(filtersArr);\n        this.values = this.values;\n    }\n\n    getDefaultFilters(defaultFilters) {\n        if (!defaultFilters) return {};\n        Object.keys(defaultFilters).forEach((filter) => {\n            if (!this.forms.fieldExists(this.args.form, filter)) return;\n            const field = this.forms.field(this.args.form, filter);\n            if (field.type === 'date') defaultFilters[filter] = 'this_week';\n        });\n\n        return defaultFilters;\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"\\n<div class=\\\"report-template-wizard-columns\\\">\\n    {{#if (eq @valueType \\\"sums\\\")}}\\n        <div class=\\\"radio-group\\\">\\n            <RadioButton @value=\\\"nosum\\\" @groupValue={{@sumType}} @changed={{fn @collectValuesToObject 'sumType'}}>\\n                <div class=\\\"inline sum-button\\\" data-anchor=\\\"template-wizard-nosum\\\">{{t \\\"report-template-wizard.no_sum\\\"}}</div>\\n            </RadioButton>\\n            <RadioButton @value=\\\"sumby\\\" @groupValue={{@sumType}} @changed={{fn @collectValuesToObject 'sumType'}}>\\n                <div class=\\\"inline sum-button\\\" data-anchor=\\\"template-wizard-sumby\\\">{{t \\\"report-template-wizard.sumby\\\"}}</div>\\n            </RadioButton>\\n        </div>\\n    {{/if}}\\n    <div class=\\\"wizard-column {{@valueType}} {{if this.isDisabled \\\"disabled\\\"}}\\\" data-anchor=\\\"template-wizard-not-selected-rows\\\">\\n        <h4>{{t (concat \\\"wizard-column.all-\\\" @valueType)}}</h4>\\n        {{#each (sort this.notSelectedColumns sortBy=\\\"translated_name\\\") as |col|}}\\n            <div class=\\\"flex-row\\\" data-anchor={{concat \\\"template-wizard-not-selected-\\\" col.name}}>\\n                <div role=\\\"button\\\" class=\\\"col\\\" onclick={{fn @collectValuesToObject @valueType col}}>{{col.translated_name}}</div>\\n            </div>\\n        {{/each}}\\n    </div>\\n\\n    <div class=\\\"wizard-column {{@valueType}} {{if this.isDisabled \\\"disabled\\\"}} selected-rows\\\" data-anchor=\\\"template-wizard-selected-sumby-rows\\\">\\n        <h4>{{t (concat \\\"wizard-column.selected-\\\" @valueType)}}</h4>\\n        {{#each @values as |col|}}\\n        <Addon::ReportTemplateWizard::DraggableItem @draggable={{true}} @draggablename={{col.external_type}} @dropped={{fn this.dropped}} @anchorName={{concat \\\"template-wizard-selected-sumby-\\\" col.name}}>\\n\\n            <div class=\\\"col\\\">\\n                <div class=\\\"drag\\\"><span class=\\\"move move-DragHandle\\\"></span></div>\\n                <div class=\\\"name\\\">{{col.translated_name}}</div>\\n                <div class=\\\"delete\\\"><span role=\\\"button\\\" class=\\\"move move-Delete\\\" onclick={{fn @removeValuesFromObject @valueType col}}></span></div>\\n            </div>\\n\\n        </Addon::ReportTemplateWizard::DraggableItem>\\n        {{else}}\\n        <div class=\\\"empty-placeholder\\\">\\n            <div class=\\\"empty-placeholder-title\\\">{{t \\\"report-template-wizard.no-selected-columns-title\\\"}}</div>\\n            <div class=\\\"empty-placeholder-subtitle\\\">{{t \\\"report-template-wizard.no-selected-columns-subtitle\\\"}}</div>\\n        </div>\\n        {{/each}}\\n    </div>\\n</div>\", {\"contents\":\"\\n<div class=\\\"report-template-wizard-columns\\\">\\n    {{#if (eq @valueType \\\"sums\\\")}}\\n        <div class=\\\"radio-group\\\">\\n            <RadioButton @value=\\\"nosum\\\" @groupValue={{@sumType}} @changed={{fn @collectValuesToObject 'sumType'}}>\\n                <div class=\\\"inline sum-button\\\" data-anchor=\\\"template-wizard-nosum\\\">{{t \\\"report-template-wizard.no_sum\\\"}}</div>\\n            </RadioButton>\\n            <RadioButton @value=\\\"sumby\\\" @groupValue={{@sumType}} @changed={{fn @collectValuesToObject 'sumType'}}>\\n                <div class=\\\"inline sum-button\\\" data-anchor=\\\"template-wizard-sumby\\\">{{t \\\"report-template-wizard.sumby\\\"}}</div>\\n            </RadioButton>\\n        </div>\\n    {{/if}}\\n    <div class=\\\"wizard-column {{@valueType}} {{if this.isDisabled \\\"disabled\\\"}}\\\" data-anchor=\\\"template-wizard-not-selected-rows\\\">\\n        <h4>{{t (concat \\\"wizard-column.all-\\\" @valueType)}}</h4>\\n        {{#each (sort this.notSelectedColumns sortBy=\\\"translated_name\\\") as |col|}}\\n            <div class=\\\"flex-row\\\" data-anchor={{concat \\\"template-wizard-not-selected-\\\" col.name}}>\\n                <div role=\\\"button\\\" class=\\\"col\\\" onclick={{fn @collectValuesToObject @valueType col}}>{{col.translated_name}}</div>\\n            </div>\\n        {{/each}}\\n    </div>\\n\\n    <div class=\\\"wizard-column {{@valueType}} {{if this.isDisabled \\\"disabled\\\"}} selected-rows\\\" data-anchor=\\\"template-wizard-selected-sumby-rows\\\">\\n        <h4>{{t (concat \\\"wizard-column.selected-\\\" @valueType)}}</h4>\\n        {{#each @values as |col|}}\\n        <Addon::ReportTemplateWizard::DraggableItem @draggable={{true}} @draggablename={{col.external_type}} @dropped={{fn this.dropped}} @anchorName={{concat \\\"template-wizard-selected-sumby-\\\" col.name}}>\\n\\n            <div class=\\\"col\\\">\\n                <div class=\\\"drag\\\"><span class=\\\"move move-DragHandle\\\"></span></div>\\n                <div class=\\\"name\\\">{{col.translated_name}}</div>\\n                <div class=\\\"delete\\\"><span role=\\\"button\\\" class=\\\"move move-Delete\\\" onclick={{fn @removeValuesFromObject @valueType col}}></span></div>\\n            </div>\\n\\n        </Addon::ReportTemplateWizard::DraggableItem>\\n        {{else}}\\n        <div class=\\\"empty-placeholder\\\">\\n            <div class=\\\"empty-placeholder-title\\\">{{t \\\"report-template-wizard.no-selected-columns-title\\\"}}</div>\\n            <div class=\\\"empty-placeholder-subtitle\\\">{{t \\\"report-template-wizard.no-selected-columns-subtitle\\\"}}</div>\\n        </div>\\n        {{/each}}\\n    </div>\\n</div>\",\"moduleName\":\"tt4/components/addon/report-template-wizard/column-selector.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/report-template-wizard/column-selector.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { isEmpty } from '@ember/utils';\n/* istanbul ignore next */\nexport default class ReportTemplateWizardColumnSelectorComponent extends Component {\n    get sumType() {\n        return this.args.sumType;\n    }\n\n    get notSelectedColumns() {\n        const groupableColumnsList = [\n            'date',\n            'number',\n            'hours',\n            'price',\n            'big_price',\n            'dropdown_values',\n            'dropdown_options',\n            'minutes',\n        ];\n        const groupByColumnsList = ['database', 'dropdown_values', 'dropdown_options', 'date'];\n\n        if (this.sumType === 'sumby' && this.args.valueType === 'columns') {\n            const allowColumnsInSums = this.args.sums.map((col) => col.external_type);\n            return this.args.columns.filter(\n                (col) =>\n                    (allowColumnsInSums.includes(col.external_type) ||\n                        groupableColumnsList.includes(col.type)) &&\n                    !this.args.values.findBy('external_type', col.external_type),\n            );\n        }\n        if (this.args.valueType === 'sums') {\n            return this.args.columns.filter(\n                (column) =>\n                    groupByColumnsList.includes(column.type) &&\n                    !this.args.values.findBy('external_type', column.external_type),\n            );\n        }\n        if (isEmpty(this.args.values)) return this.args.columns;\n        return this.args.columns.filter(\n            (column) => !this.args.values.findBy('external_type', column.external_type),\n        );\n    }\n\n    get isDisabled() {\n        return (\n            this.args.valueType === 'sums' &&\n            (this.sumType === 'nosum' || this.sumType === 'onlysum')\n        );\n    }\n\n    @action\n    dropped(to, what) {\n        let values = this.args.values;\n        var index1 = values.indexOf(values.findBy('external_type', what));\n        var index2 = values.indexOf(values.findBy('external_type', to));\n        var whatObj = values.findBy('external_type', what);\n        values.splice(index1, 1);\n        values.splice(index2, 0, whatObj);\n        this.args.setValues(values, this.sumType);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"draggable-item\\\" role=\\\"button\\\" data-anchor={{@anchorName}}\\n{{on \\\"dragstart\\\" this.dragHasStarted}}\\n{{on \\\"drop\\\" this.drop}}\\n{{on \\\"dragover\\\" this.dragOver}}\\n{{on \\\"dragleave\\\" this.dragLeave}}\\n{{on \\\"dragenter\\\" this.dragEnter}}\\ndraggable={{@draggable}}>\\n    <div class={{this.dragClass}}></div>\\n    {{yield}}\\n</div>\", {\"contents\":\"<div class=\\\"draggable-item\\\" role=\\\"button\\\" data-anchor={{@anchorName}}\\n{{on \\\"dragstart\\\" this.dragHasStarted}}\\n{{on \\\"drop\\\" this.drop}}\\n{{on \\\"dragover\\\" this.dragOver}}\\n{{on \\\"dragleave\\\" this.dragLeave}}\\n{{on \\\"dragenter\\\" this.dragEnter}}\\ndraggable={{@draggable}}>\\n    <div class={{this.dragClass}}></div>\\n    {{yield}}\\n</div>\",\"moduleName\":\"tt4/components/addon/report-template-wizard/draggable-item.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/report-template-wizard/draggable-item.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n/* istanbul ignore next */\nexport default class ReportTemplateWizardDraggableItemComponent extends Component {\n    @tracked draggable;\n    @tracked dragClass;\n\n    constructor() {\n        super(...arguments);\n        this.draggableName = this.args.draggablename;\n        this.dragClass = 'disabled';\n    }\n\n    @action\n    dragHasStarted(event) {\n        event.dataTransfer.setData('text/data', this.draggableName);\n    }\n\n    @action\n    drop(event) {\n        this.dragClass = 'inactive';\n        const data = event.dataTransfer.getData('text/data');\n        if (!data || data == this.draggableName) return;\n        this.args.dropped(this.draggableName, data, event);\n    }\n\n    @action\n    dragLeave(event) {\n        event.preventDefault();\n        this.dragClass = 'inactive';\n    }\n\n    @action\n    dragOver(event) {\n        event.preventDefault();\n        this.dragClass = 'active';\n    }\n\n    @action\n    dragEnter(event) {\n        event.preventDefault();\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#each-in @values as |form fields|}}\\n    <Addon::ReportTemplateWizard::DraggableItem @draggable={{@draggable}} @draggablename={{if (is-equal form @form) \\\"current\\\" form}} @dropped={{fn @dropped}} >\\n        <div class=\\\"col\\\">\\n            <div class=\\\"drag\\\"><span class=\\\"move move-DragHandle\\\"></span></div>\\n            <div class=\\\"name\\\">{{t (if (is-equal form @form) (concat \\\"form.\\\"@form) (concat \\\"report.\\\" @form \\\".\\\" form))}}</div>\\n        </div>\\n        {{#each fields as |field|}}\\n            <div class=\\\"filter-field\\\" data-anchor={{concat \\\"template-wizard-filter-\\\" field.name}}>\\n                <span class=\\\"filter-name\\\" title={{field.translated_name}}>{{field.translated_name}}:</span>\\n                {{#if  (or (eq field.type \\\"dropdown_values\\\") (eq field.type \\\"status\\\"))}}\\n                    <PowerSelect @selected={{field.selected}} @options={{field.options}} @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}} as |option|>\\n                        {{#if (eq field.type \\\"status\\\")}}\\n                            {{t (concat \\\"status.\\\" option)}}\\n                        {{else if field.options.form}}\\n                            {{t (concat form \\\".\\\" field.name \\\".\\\" option)}}\\n                        {{else}}\\n                            {{option}}\\n                        {{/if}}\\n                    </PowerSelect>\\n                {{else if (eq field.type 'date')}}\\n                    <PowerSelect @selected={{field.selected}} @options={{@dateRanges}} @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}} as |option|>\\n                        {{#if option.name}}{{option.name}}{{else}}{{option}}{{/if}}\\n                    </PowerSelect>\\n                {{else if (and (eq field.type 'database') (eq form @form))}}\\n                    <Addon::Fields::Multiselect\\n                        @form={{field.form}}\\n                        @name={{field.name}}\\n                        @options={{hash form=field.options.form fields=field.options.fields}}\\n                        @value={{field.selected}}\\n                        @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}}\\n                    />\\n                {{else}}\\n                    {{#if (includes field.name this.showEmptySelection)}}\\n                        <Addon::Fields::Database\\n                            @form={{field.form}}\\n                            @name={{field.name}}\\n                            @options={{hash form=field.options.form fields=field.options.fields}}\\n                            @value={{field.selected}}\\n                            @forceNormalDropdown={{true}}\\n                            @showEmptySelection={{true}}\\n                            @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}}\\n                        />\\n                    {{else}}\\n                        <Addon::Fields::Database\\n                            @form={{field.form}}\\n                            @name={{field.name}}\\n                            @options={{hash form=field.options.form fields=field.options.fields}}\\n                            @value={{field.selected}}\\n                            @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}}\\n                        />\\n                    {{/if}}\\n                {{/if}}\\n\\n                {{#if @showRemove}}\\n                    <span role=\\\"button\\\" class=\\\"trashcan-icon move move-Delete\\\" {{on 'click' (fn @removeAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name))}}></span>\\n                    {{else}}\\n                    <div class=\\\"trashcan-icon\\\"></div>\\n                {{/if}}\\n            </div>\\n        {{/each}}\\n    </Addon::ReportTemplateWizard::DraggableItem>\\n\\n{{/each-in}}\", {\"contents\":\"{{#each-in @values as |form fields|}}\\n    <Addon::ReportTemplateWizard::DraggableItem @draggable={{@draggable}} @draggablename={{if (is-equal form @form) \\\"current\\\" form}} @dropped={{fn @dropped}} >\\n        <div class=\\\"col\\\">\\n            <div class=\\\"drag\\\"><span class=\\\"move move-DragHandle\\\"></span></div>\\n            <div class=\\\"name\\\">{{t (if (is-equal form @form) (concat \\\"form.\\\"@form) (concat \\\"report.\\\" @form \\\".\\\" form))}}</div>\\n        </div>\\n        {{#each fields as |field|}}\\n            <div class=\\\"filter-field\\\" data-anchor={{concat \\\"template-wizard-filter-\\\" field.name}}>\\n                <span class=\\\"filter-name\\\" title={{field.translated_name}}>{{field.translated_name}}:</span>\\n                {{#if  (or (eq field.type \\\"dropdown_values\\\") (eq field.type \\\"status\\\"))}}\\n                    <PowerSelect @selected={{field.selected}} @options={{field.options}} @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}} as |option|>\\n                        {{#if (eq field.type \\\"status\\\")}}\\n                            {{t (concat \\\"status.\\\" option)}}\\n                        {{else if field.options.form}}\\n                            {{t (concat form \\\".\\\" field.name \\\".\\\" option)}}\\n                        {{else}}\\n                            {{option}}\\n                        {{/if}}\\n                    </PowerSelect>\\n                {{else if (eq field.type 'date')}}\\n                    <PowerSelect @selected={{field.selected}} @options={{@dateRanges}} @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}} as |option|>\\n                        {{#if option.name}}{{option.name}}{{else}}{{option}}{{/if}}\\n                    </PowerSelect>\\n                {{else if (and (eq field.type 'database') (eq form @form))}}\\n                    <Addon::Fields::Multiselect\\n                        @form={{field.form}}\\n                        @name={{field.name}}\\n                        @options={{hash form=field.options.form fields=field.options.fields}}\\n                        @value={{field.selected}}\\n                        @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}}\\n                    />\\n                {{else}}\\n                    {{#if (includes field.name this.showEmptySelection)}}\\n                        <Addon::Fields::Database\\n                            @form={{field.form}}\\n                            @name={{field.name}}\\n                            @options={{hash form=field.options.form fields=field.options.fields}}\\n                            @value={{field.selected}}\\n                            @forceNormalDropdown={{true}}\\n                            @showEmptySelection={{true}}\\n                            @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}}\\n                        />\\n                    {{else}}\\n                        <Addon::Fields::Database\\n                            @form={{field.form}}\\n                            @name={{field.name}}\\n                            @options={{hash form=field.options.form fields=field.options.fields}}\\n                            @value={{field.selected}}\\n                            @onChange={{fn @collectAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name)}}\\n                        />\\n                    {{/if}}\\n                {{/if}}\\n\\n                {{#if @showRemove}}\\n                    <span role=\\\"button\\\" class=\\\"trashcan-icon move move-Delete\\\" {{on 'click' (fn @removeAndSend (concat field.form \\\".\\\" form \\\".\\\" field.name))}}></span>\\n                    {{else}}\\n                    <div class=\\\"trashcan-icon\\\"></div>\\n                {{/if}}\\n            </div>\\n        {{/each}}\\n    </Addon::ReportTemplateWizard::DraggableItem>\\n\\n{{/each-in}}\",\"moduleName\":\"tt4/components/addon/report-template-wizard/filter-box.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/report-template-wizard/filter-box.hbs\"}});\nimport Component from '@glimmer/component';\n\nexport default class ReportTemplateWizardFilterBoxComponent extends Component {\n    showEmptySelection = ['worktimegroup'];\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"report-template-wizard-general\\\">\\n    <label>{{t \\\"report-template-wizard.template.name\\\"}}</label><sup><span class=\\\"glyphicon glyphicon-asterisk field-icon\\\"></span></sup>\\n    {{#if @errorEmpty}}<span class=\\\"text-danger pull-right\\\">{{t \\\"validation.error.mandatory\\\"}}</span>{{/if}}\\n    <Input @type=\\\"text\\\" @value={{@values.name}} @input={{fn @collectValuesToObject 'name' @values.name}} @class=\\\"form-control add-fields\\\" data-anchor=\\\"template-wizard-name-field\\\"/>\\n    {{#if (is-equal this.session.currentUser.userlevel \\\"5\\\")}}\\n        <Addon::BootstrapContainer @text={{t \\\"report-template-wizard.userlevels\\\"}} @anchorName=\\\"template-wizard-roles-field\\\" >\\n            <PowerSelectMultiple\\n                @class=\\\"form-control add-fields\\\"\\n                @searchEnabled={{false}}\\n                @options={{@userLevelOptions}}\\n                @selected={{@values.userlevels}}\\n                @onChange={{fn @collectValuesToObject 'userlevels'}} as |option|>\\n                {{option.name}}\\n            </PowerSelectMultiple>\\n        </Addon::BootstrapContainer>\\n    {{/if}}\\n\\n    <div class=\\\"rows-selector\\\">\\n        <label>{{t \\\"report-template-wizard.rowsperpage\\\"}}</label>\\n        <select class=\\\"form-control\\\" {{on 'change' this.setLimit}} data-anchor=\\\"template-wizard-rows-limit-field\\\">\\n            <option value={{25}} selected={{eq 25 @values.limit}}>{{25}} {{t \\\"template-wizard.rows-per-page\\\"}}</option>\\n            <option value={{50}} selected={{eq 50 @values.limit}}>{{50}} {{t \\\"template-wizard.rows-per-page\\\"}}</option>\\n            <option value={{100}} selected={{eq 100 @values.limit}}>{{100}} {{t \\\"template-wizard.rows-per-page\\\"}}</option>\\n        </select>\\n    </div>\\n</div>\\n\\n\", {\"contents\":\"<div class=\\\"report-template-wizard-general\\\">\\n    <label>{{t \\\"report-template-wizard.template.name\\\"}}</label><sup><span class=\\\"glyphicon glyphicon-asterisk field-icon\\\"></span></sup>\\n    {{#if @errorEmpty}}<span class=\\\"text-danger pull-right\\\">{{t \\\"validation.error.mandatory\\\"}}</span>{{/if}}\\n    <Input @type=\\\"text\\\" @value={{@values.name}} @input={{fn @collectValuesToObject 'name' @values.name}} @class=\\\"form-control add-fields\\\" data-anchor=\\\"template-wizard-name-field\\\"/>\\n    {{#if (is-equal this.session.currentUser.userlevel \\\"5\\\")}}\\n        <Addon::BootstrapContainer @text={{t \\\"report-template-wizard.userlevels\\\"}} @anchorName=\\\"template-wizard-roles-field\\\" >\\n            <PowerSelectMultiple\\n                @class=\\\"form-control add-fields\\\"\\n                @searchEnabled={{false}}\\n                @options={{@userLevelOptions}}\\n                @selected={{@values.userlevels}}\\n                @onChange={{fn @collectValuesToObject 'userlevels'}} as |option|>\\n                {{option.name}}\\n            </PowerSelectMultiple>\\n        </Addon::BootstrapContainer>\\n    {{/if}}\\n\\n    <div class=\\\"rows-selector\\\">\\n        <label>{{t \\\"report-template-wizard.rowsperpage\\\"}}</label>\\n        <select class=\\\"form-control\\\" {{on 'change' this.setLimit}} data-anchor=\\\"template-wizard-rows-limit-field\\\">\\n            <option value={{25}} selected={{eq 25 @values.limit}}>{{25}} {{t \\\"template-wizard.rows-per-page\\\"}}</option>\\n            <option value={{50}} selected={{eq 50 @values.limit}}>{{50}} {{t \\\"template-wizard.rows-per-page\\\"}}</option>\\n            <option value={{100}} selected={{eq 100 @values.limit}}>{{100}} {{t \\\"template-wizard.rows-per-page\\\"}}</option>\\n        </select>\\n    </div>\\n</div>\\n\\n\",\"moduleName\":\"tt4/components/addon/report-template-wizard/page1.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/report-template-wizard/page1.hbs\"}});\nimport Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\n/* istanbul ignore next */\nexport default class ReportTemplateWizardPage1Component extends Component {\n    @service session;\n\n    @action\n    setLimit(event) {\n        if (!event.target.value) return;\n        this.args.collectValuesToObject('limit', parseInt(event.target.value));\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Addon::ReportTemplateWizard::ColumnSelector\\n        @columns={{@columns}}\\n        @values={{@values.sums}}\\n        @sumType={{@values.sumType}}\\n        @valueType=\\\"sums\\\"\\n        @collectValuesToObject={{fn @collectValuesToObject}}\\n        @removeValuesFromObject={{fn @removeValuesFromObject}}\\n        @moveValuesInObject={{fn @moveValuesInObject}}\\n        @setValues={{fn @setValues}}\\n/>\", {\"contents\":\"<Addon::ReportTemplateWizard::ColumnSelector\\n        @columns={{@columns}}\\n        @values={{@values.sums}}\\n        @sumType={{@values.sumType}}\\n        @valueType=\\\"sums\\\"\\n        @collectValuesToObject={{fn @collectValuesToObject}}\\n        @removeValuesFromObject={{fn @removeValuesFromObject}}\\n        @moveValuesInObject={{fn @moveValuesInObject}}\\n        @setValues={{fn @setValues}}\\n/>\",\"moduleName\":\"tt4/components/addon/report-template-wizard/page2.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/report-template-wizard/page2.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Addon::ReportTemplateWizard::ColumnSelector\\n        @columns={{@columns}}\\n        @values={{@values.columns}}\\n        @sums={{@values.sums}}\\n        @sumType={{@values.sumType}}\\n        @valueType=\\\"columns\\\"\\n        @collectValuesToObject={{fn @collectValuesToObject}}\\n        @removeValuesFromObject={{fn @removeValuesFromObject}}\\n        @moveValuesInObject={{fn @moveValuesInObject}}\\n        @setValues={{fn @setValues}}\\n/>\", {\"contents\":\"<Addon::ReportTemplateWizard::ColumnSelector\\n        @columns={{@columns}}\\n        @values={{@values.columns}}\\n        @sums={{@values.sums}}\\n        @sumType={{@values.sumType}}\\n        @valueType=\\\"columns\\\"\\n        @collectValuesToObject={{fn @collectValuesToObject}}\\n        @removeValuesFromObject={{fn @removeValuesFromObject}}\\n        @moveValuesInObject={{fn @moveValuesInObject}}\\n        @setValues={{fn @setValues}}\\n/>\",\"moduleName\":\"tt4/components/addon/report-template-wizard/page3.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/report-template-wizard/page3.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"report-template-wizard-columns\\\">\\n    <div class=\\\"wizard-column\\\">\\n        <div class=\\\"all-filters-header\\\">\\n            <h4>{{t (concat \\\"wizard-column.all-filters\\\")}}</h4>\\n            <XToggle\\n                @theme='material'\\n                @value={{this.advancedMode}}\\n                @onToggle={{fn (mut this.advancedMode)}}\\n                @size='medium'\\n                @onLabel={{t \\\"general.advancedMode\\\"}}\\n                @offLabel=\\\"\\\"\\n                @showLabels={{true}}\\n                data-anchor=\\\"template-wizard-filters-advanced-mode\\\"\\n            />\\n        </div>\\n\\n        {{#each (sort this.filterArray sortBy=\\\"translated_name\\\") as |form|}}\\n            <div class=\\\"filter-container\\\">\\n                {{#if this.advancedMode}}\\n                <div role=\\\"button\\\" class=\\\"col\\\" {{on 'click' (fn this.showFields form.name)}}>\\n                    {{form.translated_name}}\\n                    <div class=\\\"delete\\\"><span class=\\\"{{if (get this.isOpen form.name) \\\"move move-SortUp\\\" \\\"move move-SortDown\\\"}} pull-right\\\"></span></div>\\n                </div>\\n                {{/if}}\\n                {{#if (or (get this.isOpen form.name) (not this.advancedMode))}}\\n                    {{#each (sort form.fields sortBy=\\\"translated_name\\\") as |filter|}}\\n                        <div role=\\\"button\\\" class=\\\"filter-field\\\" {{on 'click' (fn this.collectAndSend (concat filter.form \\\".\\\" form.name \\\".\\\" filter.name) null)}}>{{filter.translated_name}}</div>\\n                    {{/each}}\\n                {{/if}}\\n            </div>\\n        {{/each}}\\n    </div>\\n\\n    <div class=\\\"wizard-column\\\">\\n        <h4>{{t \\\"wizard-column.selected-filters\\\"}}</h4>\\n        <div class=\\\"filter-container\\\">\\n            {{#if this.filterValues.mandatory}}\\n                <h6>{{t \\\"filter-selector.mandatory-filters\\\"}}</h6>\\n                <Addon::ReportTemplateWizard::FilterBox @form={{@form}} @values={{this.filterValues.mandatory}} @dateRanges={{this.dateRanges}} @collectAndSend={{fn this.collectAndSend}} @removeAndSend={{fn this.removeAndSend}} @draggable={{false}} />\\n            {{/if}}\\n\\n            {{#if this.filterValues.voluntary}}\\n                <h6>{{t \\\"filter-selector.voluntary-filters\\\"}}</h6>\\n                <Addon::ReportTemplateWizard::FilterBox @form={{@form}} @dropped={{fn this.dropped}} @values={{this.filterValues.voluntary}} @dateRanges={{this.dateRanges}} @collectAndSend={{fn this.collectAndSend}} @removeAndSend={{fn this.removeAndSend}} @showRemove={{true}} @draggable={{true}} />\\n            {{/if}}\\n         </div>\\n    </div>\\n</div>\", {\"contents\":\"<div class=\\\"report-template-wizard-columns\\\">\\n    <div class=\\\"wizard-column\\\">\\n        <div class=\\\"all-filters-header\\\">\\n            <h4>{{t (concat \\\"wizard-column.all-filters\\\")}}</h4>\\n            <XToggle\\n                @theme='material'\\n                @value={{this.advancedMode}}\\n                @onToggle={{fn (mut this.advancedMode)}}\\n                @size='medium'\\n                @onLabel={{t \\\"general.advancedMode\\\"}}\\n                @offLabel=\\\"\\\"\\n                @showLabels={{true}}\\n                data-anchor=\\\"template-wizard-filters-advanced-mode\\\"\\n            />\\n        </div>\\n\\n        {{#each (sort this.filterArray sortBy=\\\"translated_name\\\") as |form|}}\\n            <div class=\\\"filter-container\\\">\\n                {{#if this.advancedMode}}\\n                <div role=\\\"button\\\" class=\\\"col\\\" {{on 'click' (fn this.showFields form.name)}}>\\n                    {{form.translated_name}}\\n                    <div class=\\\"delete\\\"><span class=\\\"{{if (get this.isOpen form.name) \\\"move move-SortUp\\\" \\\"move move-SortDown\\\"}} pull-right\\\"></span></div>\\n                </div>\\n                {{/if}}\\n                {{#if (or (get this.isOpen form.name) (not this.advancedMode))}}\\n                    {{#each (sort form.fields sortBy=\\\"translated_name\\\") as |filter|}}\\n                        <div role=\\\"button\\\" class=\\\"filter-field\\\" {{on 'click' (fn this.collectAndSend (concat filter.form \\\".\\\" form.name \\\".\\\" filter.name) null)}}>{{filter.translated_name}}</div>\\n                    {{/each}}\\n                {{/if}}\\n            </div>\\n        {{/each}}\\n    </div>\\n\\n    <div class=\\\"wizard-column\\\">\\n        <h4>{{t \\\"wizard-column.selected-filters\\\"}}</h4>\\n        <div class=\\\"filter-container\\\">\\n            {{#if this.filterValues.mandatory}}\\n                <h6>{{t \\\"filter-selector.mandatory-filters\\\"}}</h6>\\n                <Addon::ReportTemplateWizard::FilterBox @form={{@form}} @values={{this.filterValues.mandatory}} @dateRanges={{this.dateRanges}} @collectAndSend={{fn this.collectAndSend}} @removeAndSend={{fn this.removeAndSend}} @draggable={{false}} />\\n            {{/if}}\\n\\n            {{#if this.filterValues.voluntary}}\\n                <h6>{{t \\\"filter-selector.voluntary-filters\\\"}}</h6>\\n                <Addon::ReportTemplateWizard::FilterBox @form={{@form}} @dropped={{fn this.dropped}} @values={{this.filterValues.voluntary}} @dateRanges={{this.dateRanges}} @collectAndSend={{fn this.collectAndSend}} @removeAndSend={{fn this.removeAndSend}} @showRemove={{true}} @draggable={{true}} />\\n            {{/if}}\\n         </div>\\n    </div>\\n</div>\",\"moduleName\":\"tt4/components/addon/report-template-wizard/page4.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/report-template-wizard/page4.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { set, get, action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\nimport { isArray } from '@ember/array';\n/* istanbul ignore next */\nexport default class ReportTemplateWizardPage4Component extends Component {\n    @service intl;\n    @service forms;\n    @service store;\n\n    @tracked filters;\n    @tracked filterValues;\n    @tracked advancedMode;\n\n    get dateRanges() {\n        return [\n            { id: 'this_week', name: this.intl.t('general.period.this_week') },\n            { id: 'last_week', name: this.intl.t('general.period.last_week') },\n            { id: 'this_month', name: this.intl.t('general.period.this_month') },\n            { id: 'last_month', name: this.intl.t('general.period.last_month') },\n            { id: 'this_year', name: this.intl.t('general.period.this_year') },\n            { id: 'last_year', name: this.intl.t('general.period.last_year') },\n            { id: 'this_salaryperiod', name: this.intl.t('general.period.this_salaryperiod') },\n        ];\n    }\n\n    get filterArray() {\n        const filterThese = ['dropdown_values', 'database', 'date', 'status'];\n        let filterObj = [];\n        let filters = this.forms\n            .fieldArray(this.args.form)\n            .filter((f) => filterThese.includes(f.type));\n        filterObj.push({\n            name: this.args.form,\n            translated_name: this.intl.t('form.' + this.args.form),\n            fields: filters.filter((r) => this.args.form !== r.name),\n        });\n\n        // disclude filters that are mandatory or hard coded\n        const disclude = {};\n        if (this.args.mandatoryFilters) {\n            Object.keys(this.args.mandatoryFilters).forEach((fil) => {\n                const field = fil.includes('.') ? fil.split('.')[0] : this.args.form;\n                const filter = fil.includes('.') ? fil.split('.')[1] : fil;\n                if (disclude[field]) disclude[field].push(filter);\n                else disclude[field] = [filter];\n            });\n        }\n\n        filters.forEach((fil) => {\n            if (fil.type === 'database') {\n                const translation = this.intl.t('report.' + this.args.form + '.' + fil.name);\n                let filteredArray = this.forms\n                    .fieldArray(fil.options.form)\n                    .filter((f) => this.showFilter(f, filterThese, fil.name));\n                if (disclude[fil.name])\n                    filteredArray = filteredArray.filter((item) =>\n                        disclude[fil.name].includes(item.name),\n                    );\n                if (!isEmpty(filteredArray))\n                    filterObj.push({\n                        name: fil.name,\n                        translated_name: translation,\n                        fields: filteredArray,\n                    });\n            }\n        });\n\n        return filterObj;\n    }\n\n    showFilter(f, filterThese, filName) {\n        if (this.advancedMode && filterThese.includes(f.type)) return true;\n        if (!this.advancedMode && this.args.additionalFilters.includes(filName + '.' + f.name))\n            return true;\n        return false;\n    }\n\n    getFilterValues() {\n        //if (!this.filters) return {}\n        let obj = {};\n        let anotherObj = {};\n\n        Object.entries(this.filters).forEach((f) => {\n            let filter = f[0].includes('.') ? f[0].split('.') : f[0];\n            let form = isArray(filter) ? filter[0] : this.args.form;\n            let field = isArray(filter) ? (filter.length > 2 ? filter[2] : filter[1]) : f[0];\n            let filterForm = isArray(filter)\n                ? filter.length > 2\n                    ? filter[1]\n                    : filter[0]\n                : this.args.form;\n            let fieldData = this.forms.fieldExists(form, field)\n                ? this.forms.field(form, field)\n                : null;\n            if (!fieldData) return;\n            fieldData.options =\n                fieldData.options && fieldData.type === 'dropdown_values'\n                    ? fieldData.options.mapBy('id')\n                    : fieldData.options;\n            if (fieldData.type === 'date') {\n                fieldData.selected = this.dateRanges.findBy('id', f[1])\n                    ? this.dateRanges.findBy('id', f[1])\n                    : f[1];\n            } else if (fieldData.type === 'database' && f[1] && f[1] !== '(empty)') {\n                fieldData.selected = f[1]\n                    .split(',')\n                    .map((id) => this.store.peekRecord(fieldData.options.form, id));\n                if (form !== this.args.form) fieldData.selected = fieldData.selected[0];\n            } else fieldData.selected = f[1];\n            if (this.args.mandatoryFilters) {\n                const keys = Object.keys(this.args.mandatoryFilters);\n                if (keys.includes(fieldData.name) && fieldData.form === this.args.form)\n                    fieldData.mandatory = true;\n            }\n\n            if (fieldData.mandatory) {\n                if (!anotherObj[filterForm]) anotherObj[filterForm] = [fieldData];\n                else anotherObj[filterForm].push(fieldData);\n            } else {\n                if (!obj[filterForm]) obj[filterForm] = [fieldData];\n                else obj[filterForm].push(fieldData);\n            }\n        });\n        return { mandatory: anotherObj, voluntary: obj };\n    }\n\n    constructor() {\n        super(...arguments);\n        this.isOpen = {};\n        this.showAll = false;\n        this.advancedMode = false;\n        this.filters = this.args.values.filters;\n        this.filterValues = this.getFilterValues();\n    }\n\n    @action\n    showFields(name) {\n        if (get(this.isOpen, name)) {\n            set(this, 'isOpen.' + name, false);\n        } else {\n            set(this, 'isOpen.' + name, true);\n        }\n    }\n\n    @action\n    collectAndSend(value, selected = null) {\n        const splitValue = value.split('.');\n        if (splitValue[0] === splitValue[1]) {\n            splitValue.splice(0, 1);\n            value = splitValue.join('.');\n        }\n        const updatedValue = splitValue[0] === this.args.form ? splitValue[1] : value;\n        if (selected) {\n            if (isArray(selected)) selected = selected.map((sel) => sel.id ?? sel).join(',');\n            this.filters[updatedValue] = selected.id ? selected.id : selected;\n        } else {\n            this.filters[updatedValue] = null;\n        }\n        //notifyPropertyChange(this, 'filters')\n        this.filterValues = this.getFilterValues();\n        this.args.collectValuesToObject('filters', updatedValue, selected);\n    }\n\n    @action\n    removeAndSend(value) {\n        const splitValue = value.split('.');\n        if (splitValue[0] === splitValue[1]) {\n            splitValue.splice(0, 1);\n            value = splitValue.join('.');\n        }\n        const updatedValue = splitValue[0] === this.args.form ? splitValue[1] : value;\n\n        delete this.filters[updatedValue];\n        this.filters = this.filters;\n\n        this.args.removeValuesFromObject('filters', updatedValue);\n        //notifyPropertyChange(this, 'filters')\n        this.filterValues = this.getFilterValues();\n    }\n\n    @action\n    expandOrMinimizeAll(value) {\n        set(this, 'showAll', value);\n        this.filterArray.forEach((item) => {\n            set(this, 'isOpen.' + item.name, value);\n        });\n    }\n\n    @action\n    dropped(to, what) {\n        this.args.reorderFilters(what, to);\n        this.filters = this.args.values.filters;\n        this.filterValues = this.getFilterValues();\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{!-- template-lint-disable no-inline-styles --}}\\n{{#if this.preformatted}}\\n    {{this.preformatted.value}}\\n{{else if this.typeIsArray }}\\n    {{#each @value as |row|}}\\n        <span class=\\\"databasearray_row\\\">\\n        {{#each this.fieldObj.options.fields as |f|}}\\n            {{#if (and (eq f 'attachments') (eq this.fieldObj.options.form 'workpermit'))}}\\n                <LinkTo @query={{hash modal=(concat \\\"workpermit,\\\" @form \\\",\\\" row.id \\\",\\\" @record.id)}} @class=\\\"clickable\\\">\\n                    {{collector-value-format field=f form=this.fieldObj.options.form value=(get row f)}}\\n                </LinkTo>\\n            {{else}}\\n                {{collector-value-format field=f form=this.fieldObj.options.form value=(get row f)}}\\n            {{/if}}\\n        {{/each}}\\n        </span>\\n        <br />\\n    {{/each}}\\n{{else}}\\n    {{#let (collector-value-format field=this.fieldObj.name form=this.fieldObj.form value=@value record=@record isImageModal=true) as |formatted|}}\\n        {{#if (and formatted.isImage formatted.src)}}\\n            <div role=\\\"button\\\" style={{htmlsafe (concat 'background-image: url(\\\"' formatted.src '\\\")')}} class=\\\"{{formatted.classes}} clickable\\\" {{on 'click' (fn (mut this.previewFile) (or formatted.fullSrc formatted.src))}} {{on 'click' (fn (mut this.showImageModal))}} />\\n        {{else}}\\n            {{formatted}}\\n        {{/if}}\\n    {{/let}}\\n{{/if}}\\n\\n{{#if this.showImageModal}}\\n    <Addon::Modal @close={{fn (mut this.showImageModal) false}} @outsideClose={{true}} @classes=\\\"\\\">\\n        <img class=\\\"ember-movenium-popupimage\\\" src={{this.previewFile}} alt=\\\"\\\" role=\\\"none\\\">\\n    </Addon::Modal>\\n{{/if}}\", {\"contents\":\"{{!-- template-lint-disable no-inline-styles --}}\\n{{#if this.preformatted}}\\n    {{this.preformatted.value}}\\n{{else if this.typeIsArray }}\\n    {{#each @value as |row|}}\\n        <span class=\\\"databasearray_row\\\">\\n        {{#each this.fieldObj.options.fields as |f|}}\\n            {{#if (and (eq f 'attachments') (eq this.fieldObj.options.form 'workpermit'))}}\\n                <LinkTo @query={{hash modal=(concat \\\"workpermit,\\\" @form \\\",\\\" row.id \\\",\\\" @record.id)}} @class=\\\"clickable\\\">\\n                    {{collector-value-format field=f form=this.fieldObj.options.form value=(get row f)}}\\n                </LinkTo>\\n            {{else}}\\n                {{collector-value-format field=f form=this.fieldObj.options.form value=(get row f)}}\\n            {{/if}}\\n        {{/each}}\\n        </span>\\n        <br />\\n    {{/each}}\\n{{else}}\\n    {{#let (collector-value-format field=this.fieldObj.name form=this.fieldObj.form value=@value record=@record isImageModal=true) as |formatted|}}\\n        {{#if (and formatted.isImage formatted.src)}}\\n            <div role=\\\"button\\\" style={{htmlsafe (concat 'background-image: url(\\\"' formatted.src '\\\")')}} class=\\\"{{formatted.classes}} clickable\\\" {{on 'click' (fn (mut this.previewFile) (or formatted.fullSrc formatted.src))}} {{on 'click' (fn (mut this.showImageModal))}} />\\n        {{else}}\\n            {{formatted}}\\n        {{/if}}\\n    {{/let}}\\n{{/if}}\\n\\n{{#if this.showImageModal}}\\n    <Addon::Modal @close={{fn (mut this.showImageModal) false}} @outsideClose={{true}} @classes=\\\"\\\">\\n        <img class=\\\"ember-movenium-popupimage\\\" src={{this.previewFile}} alt=\\\"\\\" role=\\\"none\\\">\\n    </Addon::Modal>\\n{{/if}}\",\"moduleName\":\"tt4/components/addon/value-format.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/value-format.hbs\"}});\nimport Component from '@glimmer/component';\nimport FormsService from 'tt4/injections/services/forms';\nimport moment from 'moment';\nimport { inject as service } from '@ember/service';\nimport { IField } from 'tt4/ember-movenium/interfaces/forms';\n\ninterface IValueFormat {\n    field: string;\n    form: string;\n    value: string;\n}\n\nexport default class ValueFormatComponent extends Component<IValueFormat> {\n    @service private forms: FormsService;\n\n    get typeIsArray(): boolean {\n        return this.fieldObj?.type === 'databasearray' || this.fieldObj?.type === 'work_permit_attachment';\n    }\n\n    get preformatted(): object | null {\n        if (this.args.field === 'row_info.created' || this.args.field === 'row_info.modified') {\n            return { value: this.args.value ? moment(this.args.value).format('LLL') : null };\n        } else {\n            return null;\n        }\n    }\n\n    get fieldObj(): IField | null {\n        if (!this.forms.fieldExists(this.args.form, this.args.field)) return null;\n        return this.forms.field(this.args.form, this.args.field);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<Addon::Modal @close={{@close}} @classes={{array \\\"ember-movenium-wizard\\\"}} as |M|>\\n    <M.Header>\\n        {{yield (hash\\n            Header=(component \\\"addon/wizard/header\\\" )\\n        )}}\\n    </M.Header>\\n    <M.Body>\\n        {{yield (hash\\n            Steps=(component \\\"addon/wizard/steps\\\" pages=@pages currentPage=this.currentPage pageChange=this.pageChange )\\n            Content=(component \\\"addon/wizard/content\\\" )\\n        )}}\\n    </M.Body>\\n    <M.Footer>\\n        {{yield (hash\\n            Buttons=(component \\\"addon/wizard/buttons\\\" pages=@pages close=@close currentPage=this.currentPage pageChange=this.pageChange skipCloseOnDone=@skipCloseOnDone saving=@saving )\\n        )}}\\n    </M.Footer>\\n</Addon::Modal>\\n\", {\"contents\":\"<Addon::Modal @close={{@close}} @classes={{array \\\"ember-movenium-wizard\\\"}} as |M|>\\n    <M.Header>\\n        {{yield (hash\\n            Header=(component \\\"addon/wizard/header\\\" )\\n        )}}\\n    </M.Header>\\n    <M.Body>\\n        {{yield (hash\\n            Steps=(component \\\"addon/wizard/steps\\\" pages=@pages currentPage=this.currentPage pageChange=this.pageChange )\\n            Content=(component \\\"addon/wizard/content\\\" )\\n        )}}\\n    </M.Body>\\n    <M.Footer>\\n        {{yield (hash\\n            Buttons=(component \\\"addon/wizard/buttons\\\" pages=@pages close=@close currentPage=this.currentPage pageChange=this.pageChange skipCloseOnDone=@skipCloseOnDone saving=@saving )\\n        )}}\\n    </M.Footer>\\n</Addon::Modal>\\n\",\"moduleName\":\"tt4/components/addon/wizard.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/wizard.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\ninterface IWizard {\n    pages: number;\n    currentPage: number;\n    pageChange?(args0: number): void;\n}\n\nexport default class WizardComponent extends Component<IWizard> implements IWizard {\n    public pages!: number;\n    @tracked public currentPage: number = 1;\n\n    @action\n    public pageChange(page: number) {\n        this.currentPage = page;\n        if (this.args.pageChange) this.args.pageChange(page);\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"wizard-button-group\\\">\\n    {{#if @onlySave}}\\n        <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button auto-left\\\" {{on 'click' @save}} disabled={{@isDisabled}}>{{t \\\"general.save\\\"}}</button>\\n    {{else}}\\n\\n        <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-exit-button\\\" {{on 'click' @close}}>{{t \\\"general.exit\\\"}}</button>\\n        {{#unless this.hidePrevious}}\\n            <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button auto-left\\\" {{on 'click' this.previous}}>{{this.arrowLeft}} {{t \\\"general.previous\\\"}}</button>\\n        {{/unless}}\\n        {{#if this.isLastPage}}\\n                <Addon::LoadingButton\\n                    @classes=\\\"ember-movenium-button ember-movenium-save-button {{if @hideDone \\\"invisible\\\"}}\\\"\\n                    @disabled={{if @disabled @disabled @loading}}\\n                    @loading={{@loading}}\\n                    @onClick={{action this.done}}\\n                    @buttonText={{t \\\"general.done\\\"}}\\n                />\\n        {{else}}\\n            {{#unless @hideNext}}\\n                <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button {{if this.hidePrevious \\\"auto-left\\\" \\\"\\\"}}\\\" {{on 'click' this.next}} disabled={{@isDisabled}}>{{t \\\"general.next\\\"}} {{this.arrowRight}}</button>\\n            {{/unless}}\\n        {{/if}}\\n\\n    {{/if}}\\n</div>\", {\"contents\":\"<div class=\\\"wizard-button-group\\\">\\n    {{#if @onlySave}}\\n        <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button auto-left\\\" {{on 'click' @save}} disabled={{@isDisabled}}>{{t \\\"general.save\\\"}}</button>\\n    {{else}}\\n\\n        <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-exit-button\\\" {{on 'click' @close}}>{{t \\\"general.exit\\\"}}</button>\\n        {{#unless this.hidePrevious}}\\n            <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button auto-left\\\" {{on 'click' this.previous}}>{{this.arrowLeft}} {{t \\\"general.previous\\\"}}</button>\\n        {{/unless}}\\n        {{#if this.isLastPage}}\\n                <Addon::LoadingButton\\n                    @classes=\\\"ember-movenium-button ember-movenium-save-button {{if @hideDone \\\"invisible\\\"}}\\\"\\n                    @disabled={{if @disabled @disabled @loading}}\\n                    @loading={{@loading}}\\n                    @onClick={{action this.done}}\\n                    @buttonText={{t \\\"general.done\\\"}}\\n                />\\n        {{else}}\\n            {{#unless @hideNext}}\\n                <button type=\\\"button\\\" class=\\\"ember-movenium-button ember-movenium-save-button {{if this.hidePrevious \\\"auto-left\\\" \\\"\\\"}}\\\" {{on 'click' this.next}} disabled={{@isDisabled}}>{{t \\\"general.next\\\"}} {{this.arrowRight}}</button>\\n            {{/unless}}\\n        {{/if}}\\n\\n    {{/if}}\\n</div>\",\"moduleName\":\"tt4/components/addon/wizard/buttons.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/wizard/buttons.hbs\"}});\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { htmlSafe } from '@ember/template';\n\ninterface IWizardButtons {\n    onlySave?: boolean;\n    hideDone?: boolean;\n    hideNext?: boolean;\n    skipCloseOnDone?: boolean;\n    currentPage: number;\n    pages?: number;\n    close?(): void;\n    done?(): void;\n    save?(): void;\n    pageChange?(args0: number): void;\n}\n\nexport default class WizardButtonsComponent\n    extends Component<IWizardButtons>\n    implements IWizardButtons\n{\n    @tracked public currentPage!: number;\n\n    protected arrowRight: any = htmlSafe('<span class=\"glyphicon glyphicon-chevron-right\"></span>');\n    protected arrowLeft: any = htmlSafe('<span class=\"glyphicon glyphicon-chevron-left\"></span>');\n\n    get hidePrevious(): boolean {\n        return this.args.currentPage <= 1;\n    }\n\n    get isLastPage(): boolean {\n        return this.args.currentPage === this.args.pages;\n    }\n\n    @action\n    public next() {\n        if (this.args.pageChange) this.args.pageChange(this.args.currentPage + 1);\n    }\n\n    @action\n    public previous() {\n        if (this.args.pageChange) this.args.pageChange(this.args.currentPage - 1);\n    }\n\n    @action\n    public done() {\n        if (this.args.done) this.args.done();\n        if (this.args.close && !this.args.skipCloseOnDone) this.args.close();\n    }\n}\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"content\\\">\\n    {{yield}}\\n</div>\\n\", {\"contents\":\"<div class=\\\"content\\\">\\n    {{yield}}\\n</div>\\n\",\"moduleName\":\"tt4/components/addon/wizard/content.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/wizard/content.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{yield}}\\n\", {\"contents\":\"{{yield}}\\n\",\"moduleName\":\"tt4/components/addon/wizard/header.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/wizard/header.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<div class=\\\"stepwizard\\\">\\n    <div class=\\\"stepwizard-row setup-panel\\\">\\n\\n        {{#each this.steps as |name step|}}\\n            <div class=\\\"stepwizard-step\\\">\\n                {{#if @useSubmenus}}\\n                    <div class=\\\"submenu-buttons submenu-steps\\\">\\n                        <span role=\\\"button\\\" {{on 'click' (fn @pageChange (add step 1))}} class=\\\"submenu-item {{if (eq @currentPage (add step 1)) \\\"active\\\"}} {{if @isDisabled \\\"disabled\\\"}}\\\">{{t (get this.translatedPageNames step)}}</span>\\n                    </div>\\n                {{else}}\\n                    <span role=\\\"button\\\" {{on 'click' (fn @pageChange (add step 1))}} class=\\\"step-button {{if (eq @currentPage (add step 1)) \\\"ember-movenium-saved-next-button\\\" \\\"ember-movenium-grey-circle-button\\\"}}\\\">{{add step 1}}</span>\\n                    <p>\\n                        {{#if this.translatedPageNames}}\\n                            {{t (get this.translatedPageNames step)}}\\n                        {{else}}\\n                            {{t \\\"general.page\\\"}} {{add step 1}}\\n                        {{/if}}\\n                    </p>\\n                {{/if}}\\n            </div>\\n        {{/each}}\\n        {{#if @infoText}}\\n            <span role=\\\"button\\\" class=\\\"move move-Info step-wizard-info-button\\\" {{on 'click' this.togglePopover}}>\\n                <EmberPopover @text={{@infoText}} @event=\\\"none\\\" @isShown={{this.showTooltip}} @hideOn=\\\"click\\\" @side=\\\"top\\\" />\\n            </span>\\n        {{/if}}\\n    </div>\\n</div>\", {\"contents\":\"<div class=\\\"stepwizard\\\">\\n    <div class=\\\"stepwizard-row setup-panel\\\">\\n\\n        {{#each this.steps as |name step|}}\\n            <div class=\\\"stepwizard-step\\\">\\n                {{#if @useSubmenus}}\\n                    <div class=\\\"submenu-buttons submenu-steps\\\">\\n                        <span role=\\\"button\\\" {{on 'click' (fn @pageChange (add step 1))}} class=\\\"submenu-item {{if (eq @currentPage (add step 1)) \\\"active\\\"}} {{if @isDisabled \\\"disabled\\\"}}\\\">{{t (get this.translatedPageNames step)}}</span>\\n                    </div>\\n                {{else}}\\n                    <span role=\\\"button\\\" {{on 'click' (fn @pageChange (add step 1))}} class=\\\"step-button {{if (eq @currentPage (add step 1)) \\\"ember-movenium-saved-next-button\\\" \\\"ember-movenium-grey-circle-button\\\"}}\\\">{{add step 1}}</span>\\n                    <p>\\n                        {{#if this.translatedPageNames}}\\n                            {{t (get this.translatedPageNames step)}}\\n                        {{else}}\\n                            {{t \\\"general.page\\\"}} {{add step 1}}\\n                        {{/if}}\\n                    </p>\\n                {{/if}}\\n            </div>\\n        {{/each}}\\n        {{#if @infoText}}\\n            <span role=\\\"button\\\" class=\\\"move move-Info step-wizard-info-button\\\" {{on 'click' this.togglePopover}}>\\n                <EmberPopover @text={{@infoText}} @event=\\\"none\\\" @isShown={{this.showTooltip}} @hideOn=\\\"click\\\" @side=\\\"top\\\" />\\n            </span>\\n        {{/if}}\\n    </div>\\n</div>\",\"moduleName\":\"tt4/components/addon/wizard/steps.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/addon/wizard/steps.hbs\"}});\nimport Component from '@glimmer/component';\nimport { isArray } from '@ember/array';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\ninterface IWizardSteps {\n    pageNames?: [];\n    pages?: number;\n    useSubmenus?: boolean;\n    currentPage?: number;\n    isDisabled?: boolean;\n    infoText?: string;\n    pageChange?(args0: number): void;\n}\n\nexport default class WizardStepsComponent extends Component<IWizardSteps> implements IWizardSteps {\n    public pageNames: [] = [];\n    @tracked public showTooltip: boolean = false;\n\n    get steps() {\n        const list = [];\n        let pages = isArray(this.args.pageNames) ? this.args.pageNames.length : this.args.pages;\n        if (!pages) pages = 1;\n\n        for (let i = 1; i <= pages; i++) {\n            list.push(i);\n        }\n        return list;\n    }\n\n    get translatedPageNames() {\n        if (this.args.pageNames) {\n            const pages = this.args.pageNames.map((name) => {\n                return 'wizard.page.' + name;\n            });\n            return pages;\n        } else {\n            return this.steps;\n        }\n    }\n\n    @action\n    protected togglePopover() {\n        this.showTooltip = !this.showTooltip;\n    }\n}\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/address-info.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AddressInfoComponent;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nAddressInfoComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    admintool: Ember.inject.service(),\n    countryLists: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    errors: Em.Object.create({\n        street: false,\n        zip: false,\n        town: false,\n        country: false,\n    }),\n    actions: {\n        change: function (field, value) {\n            if (this.get('billingData.use_company_address')) {\n                this.set('billingData.' + field, value);\n            }\n            return this.set('errors.' + field, false);\n        },\n        save: function () {\n            var field, hasError, i, len, promise, ref;\n            hasError = false;\n            ref = ['street', 'zip', 'town', 'country'];\n            for (i = 0, len = ref.length; i < len; i++) {\n                field = ref[i];\n                if (!this.get('data.' + field) || this.get('data.' + field) === '') {\n                    this.set('errors.' + field, true);\n                    hasError = true;\n                } else {\n                    this.set('errors.' + field, false);\n                }\n            }\n            if (!hasError) {\n                promise = this.get('admintool').ajax({\n                    url: 'customer_info',\n                    method: 'PUT',\n                    data: {\n                        street: this.get('data.street'),\n                        zip: this.get('data.zip'),\n                        town: this.get('data.town'),\n                        country: this.get('data.country'),\n                        specifier: this.get('data.specifier'),\n                    },\n                });\n                // first save address-info\n                return promise.then(() => {\n                    // then if \"use company address\" is checked in billing-info, save address to billing-info also\n                    if (\n                        this.get('billingData.use_company_address') &&\n                        this.get('billingtype') === 'paper'\n                    ) {\n                        promise = this.get('admintool').ajax({\n                            url: 'billinginfo',\n                            method: 'PUT',\n                            data: {\n                                street: this.get('data.street'),\n                                zip: this.get('data.zip'),\n                                town: this.get('data.town'),\n                                country: this.get('data.country'),\n                                //invoice_ref: @get 'billingData.invoice_ref'\n                                billingtype: 'paper',\n                            },\n                        });\n                        return promise.then(() => {\n                            return this.get('notifications').success(\n                                this.get('intl').t('general.saved'),\n                                {\n                                    autoClear: true,\n                                },\n                            );\n                        });\n                    } else {\n                        return this.get('notifications').success(\n                            this.get('intl').t('general.saved'),\n                            {\n                                autoClear: true,\n                            },\n                        );\n                    }\n                });\n            }\n        },\n    },\n});\n\nexport default AddressInfoComponent;\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"\\n<svg class={{all-clear-icon}} width=\\\"128\\\" height=\\\"128\\\" viewBox=\\\"0 0 128 128\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n        <g clip-path=\\\"url(#clip0_1121_1131)\\\">\\n            <path d=\\\"M80.0999 93.34C77.9699 94.12 77.0299 99.46 75.7299 99.05C72.9799 98.21 70.1699 95.05 68.8299 99.53C68.0199 102.2 63.0599 102.43 63.0599 102.43\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M60.5099 27.32C60.5099 27.32 59.2199 26 57.9999 26.27C56.7799 26.54 56.3999 28.17 55.4199 28.27C52.4799 28.52 49.4199 29.55 49.1799 30.1\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M72.2799 25C71.7599 23.59 71.2799 22.42 70.8899 21.54C68.6399 16.7 63.8899 13.02 57.8899 13.68C48.5899 14.91 39.3799 16.79 30.3399 19.29C25.8099 20.55 24.5799 22.6 24.1899 25.84C23.8399 28.71 24.7199 31.57 24.8399 35.57C24.9999 40.64 22.7499 43.64 18.9199 45.57C15.7399 47.2 13.5599 47.75 10.8099 48.97C6.85993 50.76 5.42993 53 6.21993 58.27C8.48993 73.6 15.6999 97.11 21.1399 111.65C22.8399 116.19 24.6099 122.91 34.8999 121.52C44.9499 120.15 74.4399 113.35 82.5999 109.16C87.5299 106.68 90.4999 101.5 90.1599 96C89.9299 92.77 88.4199 85.26 86.3199 76.16\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M29 19.74C24.22 21.42 19.5599 23.74 12.9999 35.2C7.72995 44.37 5.58995 48.07 5.99995 56.34\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M49.7899 105.24C47.6099 105.12 49.3199 108.46 44.8899 106.75C43.3699 106.15 42.4899 108.57 40.3899 109.11C39.2599 109.47 38.0399 108.92 37.5599 107.84C36.3099 106.75 35.8899 109.48 34.7099 109.65C33.5299 109.82 31.9499 108.53 30.9399 109.13\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path opacity=\\\"0.25\\\" d=\\\"M120.15 55C123.15 42.71 115.39 30.05 102.77 26.71C90.15 23.37 77.47 30.6 74.45 42.88C71.43 55.16 79.21 67.88 91.83 71.18C104.45 74.48 117.13 67.26 120.15 55V55ZM110.8 43.47C106.63 46.58 101.15 51.73 96.46 55.84C92.99 58.84 91.4 58.53 89.89 57.07C87.74 55 83.13 45.92 83.43 45C83.73 44.08 86.75 43.85 86.75 43.85C87.87 44.66 89.93 49 91.08 51.22C94.9 45.16 98.61 42.22 104.61 39.87C105.64 39.51 114.69 40.57 110.8 43.47V43.47Z\\\" fill=\\\"#3191CF\\\"/>\\n            <path d=\\\"M118.71 53.9C115.15 67.07 102.54 74.57 88.41 71.32C74.28 68.07 67.44 54.2 71 41C74.56 27.8 86.09 19.47 101.3 23.58C114.48 27.14 122.27 40.7 118.72 53.88V53.9H118.71Z\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M83.46 45.67C83.01 44.73 88.68 42.76 89.04 43.35C89.86 44.91 90.57 46.52 91.16 48.18C91.65 49.36 92.51 49.65 93.16 48.7C96.27 44.62 99.94 40.99 104.04 37.91C105.41 36.98 109.04 41.65 108.04 42.33C103.04 46.02 98.17 51.33 93.93 56.72C93.41 57.57 92.37 57.95 91.43 57.62C90.41 57.42 89.4 57.13 88.43 56.75C87.73 56.44 87.21 55.83 87 55.09C86.02 51.88 84.84 48.73 83.46 45.67V45.67Z\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M113 35.72C110.43 31.49 106.45 28.3 101.76 26.72\\\" stroke=\\\"#3191CF\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M20.2899 61.82C20.2899 61.82 21.2899 58.3 23.7099 57.82C26.1299 57.34 28.5899 60.52 29.8799 59.36C33.6399 56.01 33.4199 59.43 35.5999 58.36C37.7799 57.29 42.9199 54.3 43.9499 55.41C45.7099 57.28 48.7799 56.62 48.7799 56.62\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M23.88 75C26.46 74.58 29.56 76.66 30.79 76C33.39 74.61 35.15 72.14 38.34 73.69C40.25 74.61 45.63 72.89 45.63 72.89\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M52.61 70.84C52.61 70.84 53.23 68.75 54.69 68.44C56.15 68.13 57.33 69.59 58.39 69.16C61.55 67.9 65.28 67.37 65.78 67.83\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M27 85.94C27 85.94 30.66 85.16 32.65 86.94C33.82 87.94 40.06 84.83 42.7 83.68C45.34 82.53 44.91 85.86 49.52 82.43C51.11 81.25 53.42 82.62 56.3 82.01C59.18 81.4 59.16 79.68 59.16 79.68C60.16 78.26 62.07 80.11 63.6 79.68C65.13 79.25 66.46 77.5 68.03 77.46\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n        </g>\\n        <defs>\\n            <clipPath id=\\\"clip0_1121_1131\\\">\\n                <rect width=\\\"128\\\" height=\\\"128\\\" fill=\\\"white\\\"/>\\n            </clipPath>\\n        </defs>\\n</svg>\", {\"contents\":\"\\n<svg class={{all-clear-icon}} width=\\\"128\\\" height=\\\"128\\\" viewBox=\\\"0 0 128 128\\\" fill=\\\"none\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\">\\n        <g clip-path=\\\"url(#clip0_1121_1131)\\\">\\n            <path d=\\\"M80.0999 93.34C77.9699 94.12 77.0299 99.46 75.7299 99.05C72.9799 98.21 70.1699 95.05 68.8299 99.53C68.0199 102.2 63.0599 102.43 63.0599 102.43\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M60.5099 27.32C60.5099 27.32 59.2199 26 57.9999 26.27C56.7799 26.54 56.3999 28.17 55.4199 28.27C52.4799 28.52 49.4199 29.55 49.1799 30.1\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M72.2799 25C71.7599 23.59 71.2799 22.42 70.8899 21.54C68.6399 16.7 63.8899 13.02 57.8899 13.68C48.5899 14.91 39.3799 16.79 30.3399 19.29C25.8099 20.55 24.5799 22.6 24.1899 25.84C23.8399 28.71 24.7199 31.57 24.8399 35.57C24.9999 40.64 22.7499 43.64 18.9199 45.57C15.7399 47.2 13.5599 47.75 10.8099 48.97C6.85993 50.76 5.42993 53 6.21993 58.27C8.48993 73.6 15.6999 97.11 21.1399 111.65C22.8399 116.19 24.6099 122.91 34.8999 121.52C44.9499 120.15 74.4399 113.35 82.5999 109.16C87.5299 106.68 90.4999 101.5 90.1599 96C89.9299 92.77 88.4199 85.26 86.3199 76.16\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M29 19.74C24.22 21.42 19.5599 23.74 12.9999 35.2C7.72995 44.37 5.58995 48.07 5.99995 56.34\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M49.7899 105.24C47.6099 105.12 49.3199 108.46 44.8899 106.75C43.3699 106.15 42.4899 108.57 40.3899 109.11C39.2599 109.47 38.0399 108.92 37.5599 107.84C36.3099 106.75 35.8899 109.48 34.7099 109.65C33.5299 109.82 31.9499 108.53 30.9399 109.13\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path opacity=\\\"0.25\\\" d=\\\"M120.15 55C123.15 42.71 115.39 30.05 102.77 26.71C90.15 23.37 77.47 30.6 74.45 42.88C71.43 55.16 79.21 67.88 91.83 71.18C104.45 74.48 117.13 67.26 120.15 55V55ZM110.8 43.47C106.63 46.58 101.15 51.73 96.46 55.84C92.99 58.84 91.4 58.53 89.89 57.07C87.74 55 83.13 45.92 83.43 45C83.73 44.08 86.75 43.85 86.75 43.85C87.87 44.66 89.93 49 91.08 51.22C94.9 45.16 98.61 42.22 104.61 39.87C105.64 39.51 114.69 40.57 110.8 43.47V43.47Z\\\" fill=\\\"#3191CF\\\"/>\\n            <path d=\\\"M118.71 53.9C115.15 67.07 102.54 74.57 88.41 71.32C74.28 68.07 67.44 54.2 71 41C74.56 27.8 86.09 19.47 101.3 23.58C114.48 27.14 122.27 40.7 118.72 53.88V53.9H118.71Z\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M83.46 45.67C83.01 44.73 88.68 42.76 89.04 43.35C89.86 44.91 90.57 46.52 91.16 48.18C91.65 49.36 92.51 49.65 93.16 48.7C96.27 44.62 99.94 40.99 104.04 37.91C105.41 36.98 109.04 41.65 108.04 42.33C103.04 46.02 98.17 51.33 93.93 56.72C93.41 57.57 92.37 57.95 91.43 57.62C90.41 57.42 89.4 57.13 88.43 56.75C87.73 56.44 87.21 55.83 87 55.09C86.02 51.88 84.84 48.73 83.46 45.67V45.67Z\\\" stroke=\\\"#3191CF\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M113 35.72C110.43 31.49 106.45 28.3 101.76 26.72\\\" stroke=\\\"#3191CF\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M20.2899 61.82C20.2899 61.82 21.2899 58.3 23.7099 57.82C26.1299 57.34 28.5899 60.52 29.8799 59.36C33.6399 56.01 33.4199 59.43 35.5999 58.36C37.7799 57.29 42.9199 54.3 43.9499 55.41C45.7099 57.28 48.7799 56.62 48.7799 56.62\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M23.88 75C26.46 74.58 29.56 76.66 30.79 76C33.39 74.61 35.15 72.14 38.34 73.69C40.25 74.61 45.63 72.89 45.63 72.89\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M52.61 70.84C52.61 70.84 53.23 68.75 54.69 68.44C56.15 68.13 57.33 69.59 58.39 69.16C61.55 67.9 65.28 67.37 65.78 67.83\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n            <path d=\\\"M27 85.94C27 85.94 30.66 85.16 32.65 86.94C33.82 87.94 40.06 84.83 42.7 83.68C45.34 82.53 44.91 85.86 49.52 82.43C51.11 81.25 53.42 82.62 56.3 82.01C59.18 81.4 59.16 79.68 59.16 79.68C60.16 78.26 62.07 80.11 63.6 79.68C65.13 79.25 66.46 77.5 68.03 77.46\\\" stroke=\\\"#445D82\\\" stroke-width=\\\"2\\\" stroke-linecap=\\\"round\\\" stroke-linejoin=\\\"round\\\"/>\\n        </g>\\n        <defs>\\n            <clipPath id=\\\"clip0_1121_1131\\\">\\n                <rect width=\\\"128\\\" height=\\\"128\\\" fill=\\\"white\\\"/>\\n            </clipPath>\\n        </defs>\\n</svg>\",\"moduleName\":\"tt4/components/all-clear-icon.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/all-clear-icon.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/api-report.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ApiReportComponent;\n\nimport Ember from 'ember';\n\nimport pdfExport from '../mixins/pdf-export';\n\nimport csvExport from '../mixins/csv-export';\n\nimport $ from 'jquery';\n\nApiReportComponent = Ember.Component.extend(pdfExport, csvExport, {\n    Collector: Ember.inject.service('collector-service'),\n    admintool: Ember.inject.service('admintool'),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    translationPrefix: null,\n    path: '',\n    rowsPerPage: 30,\n    initData: Ember.on(\n        'init',\n        Ember.observer('query', 'currentPage', 'url', function () {\n            var c, promise;\n            c = this.get('Collector');\n            if (this.get('host') && this.get('host') === 'ADMINTOOLURL') {\n                promise = this.get('admintool').get(this.get('url'), this.get('query'));\n            } else {\n                promise = c.ttapi({\n                    url: this.get('url'),\n                });\n            }\n            promise.then((data) => {\n                var i, j, key, len, len1, obj, object_data, ref, ret, row;\n                this.set('rows', data.count);\n                if (!this.get('noPagination')) {\n                    this.set('pageCount', Math.ceil(data.count / this.get('rowsPerPage')));\n                }\n                ret = data.data;\n                if (data.count > 0 && data.data[0] instanceof Array) {\n                    object_data = [];\n                    ref = data.data;\n                    for (i = 0, len = ref.length; i < len; i++) {\n                        row = ref[i];\n                        obj = {};\n                        for (key = j = 0, len1 = row.length; j < len1; key = ++j) {\n                            data = row[key];\n                            obj[key] = data;\n                        }\n                        object_data.push(obj);\n                    }\n                    ret = object_data;\n                }\n                return this.set('data', ret);\n            });\n            return promise;\n        }),\n    ),\n    query: Ember.computed.alias('filters'),\n    url: Ember.computed('query', 'currentPage', 'rowsPerPage', 'path', function () {\n        var query, query_str_arr, rowsPerPage, url;\n        url = this.get('path');\n        query = this.get('query');\n        if (query) {\n            query_str_arr = [];\n            $.each(query, function (key, item) {\n                if (!item.value) {\n                    return;\n                }\n                return query_str_arr.push(item.name + '=' + item.value);\n            });\n            url += (url.includes('?') ? '&' : '?') + query_str_arr.join('&');\n        }\n        if (!this.get('noPagination')) {\n            rowsPerPage = this.get('rowsPerPage');\n            url += '&limit=' + rowsPerPage;\n            if (rowsPerPage !== 'all') {\n                url += '&offset=' + rowsPerPage * (this.get('currentPage') - 1);\n            }\n        }\n        // if no query-params, replace first & with ? so url is correct\n        if (url.indexOf('?') === -1) {\n            url = url.replace('&', '?');\n        }\n        return url;\n    }),\n    data: Em.A([]),\n    columns: Em.computed('data', function () {\n        var columns, firstRow;\n        if (!this.get('data')) {\n            return Em.A([]);\n        }\n        firstRow = this.get('data.firstObject');\n        if (!firstRow) {\n            return Em.A([]);\n        }\n        columns = Em.A([]);\n        $.each(firstRow, function (key, item) {\n            return columns.pushObject(key);\n        });\n        return columns;\n    }),\n    translatedColumns: Em.computed('columns', function () {\n        var columns, intl, translated_columns, translationPrefix;\n        translationPrefix = this.get('translationPrefix');\n        if (translationPrefix) {\n            columns = this.get('columns');\n            intl = this.get('intl');\n            translated_columns = [];\n            $.each(columns, (key, item) => {\n                return translated_columns.push(intl.t(translationPrefix + '.' + item));\n            });\n            return translated_columns;\n        }\n        return this.get('columns');\n    }),\n    asPdfElement: Ember.computed('columns', 'data', 'translatedColumns', function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            this.set('rowsPerPage', 'all');\n            return this.initData().then(() => {\n                this.set('rowsPerPage', 30);\n                return resolve(\n                    this.createPdfTableElement(\n                        this.get('columns'),\n                        this.get('data'),\n                        this.get('translatedColumns'),\n                    ),\n                );\n            });\n        });\n    }),\n    asCsvElement: Ember.computed('columns', 'data', 'translatedColumns', function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            this.set('rowsPerPage', 'all');\n            return this.initData().then(() => {\n                return resolve(\n                    this.createCsvElement(\n                        this.get('columns'),\n                        this.get('data'),\n                        this.get('translatedColumns'),\n                    ),\n                );\n            });\n        });\n    }),\n    /*\n\n  PROPERTIES FOR PAGINATION\n\n  */\n    currentPage: 1,\n    showPagination: Ember.computed.gt('pageCount', 1),\n    pages: Ember.computed('pageCount', function () {\n        var ref;\n        return Em.A(\n            function () {\n                var results = [];\n                for (\n                    var i = 1, ref = this.get('pageCount');\n                    1 <= ref ? i <= ref : i >= ref;\n                    1 <= ref ? i++ : i--\n                ) {\n                    results.push(i);\n                }\n                return results;\n            }.apply(this),\n        );\n    }),\n    hasPreviousPage: Ember.computed.gt('currentPage', 1),\n    hasNextPage: Ember.computed('currentPage', 'pageCount', function () {\n        return this.get('currentPage') < this.get('pageCount');\n    }),\n    actions: {\n        catchActions: function (action, params) {\n            if (action === 'checkedRowsAction') {\n                return params.action.func.bind(this)(params.rows);\n            } else {\n                return this.sendAction(action, params);\n            }\n        },\n        nextPage: function () {\n            return this.set('currentPage', this.get('currentPage') + 1);\n        },\n        previousPage: function () {\n            return this.set('currentPage', this.get('currentPage') - 1);\n        },\n        changePage: function (page) {\n            return this.set('currentPage', page);\n        },\n        export_pdf: function () {\n            var c, self, store;\n            self = this;\n            c = this.get('Collector');\n            store = this.get('store');\n            return this.get('asPdfElement').then((element) => {\n                if (self.get('pdfSubHeader')) {\n                    return self.get('query').forEach(function (qPart) {\n                        if (qPart['name'] === self.get('pdfSubHeader')) {\n                            return store\n                                .findRecord(qPart['name'], qPart['value'])\n                                .then(function (data) {\n                                    var addHeader;\n                                    addHeader =\n                                        c.getTranslationForColumn('presence', qPart['name']) +\n                                        ': ' +\n                                        data.get('name');\n                                    return self\n                                        .createPdfFromElements([element], 'download', addHeader, 22)\n                                        .then(function (file) {\n                                            if (\n                                                typeof cordova !== 'undefined' &&\n                                                cordova !== null\n                                            ) {\n                                                return self\n                                                    .get('cordova')\n                                                    .openFile(file, 'application/pdf');\n                                            }\n                                        });\n                                });\n                        }\n                    });\n                } else {\n                    return this.createPdfFromElements([element]).then(function (file) {\n                        if (typeof cordova !== 'undefined' && cordova !== null) {\n                            return self.get('cordova').openFile(file, 'application/pdf');\n                        }\n                    });\n                }\n            });\n        },\n        export_csv: function () {\n            return this.get('asCsvElement').then((element) => {\n                return this.createCsvFromElements(element);\n            });\n        },\n    },\n});\n\nexport default ApiReportComponent;\n","define(\"tt4/components/area-chart\", [\"exports\", \"ember-google-charts/components/area-chart\"], function (_exports, _areaChart) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _areaChart.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/array-input.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ArrayInputComponent;\n\nimport Ember from 'ember';\n\nArrayInputComponent = Ember.Component.extend({\n    makeArray: Em.on('init', function () {\n        var arr, i, item, len, value;\n        value = this.get('value');\n        if (value) {\n            if (typeof value === 'string') {\n                value = JSON.parse(this.get('value'));\n            }\n            if (Array.isArray(value)) {\n                arr = Em.A([]);\n                for (i = 0, len = value.length; i < len; i++) {\n                    item = value[i];\n                    arr.pushObject({\n                        value: parseInt(item, 10),\n                    });\n                }\n                return this.set('array', arr);\n            }\n        }\n    }),\n    setValue: Em.observer('array.[]', 'array.@each.value', function () {\n        var i, item, len, ref, value;\n        value = [];\n        ref = this.get('array');\n        for (i = 0, len = ref.length; i < len; i++) {\n            item = ref[i];\n            if (item.value !== '') {\n                value.push(item.value);\n            }\n        }\n        return Ember.run.once(this, function () {\n            return this.set('value', JSON.stringify(value));\n        });\n    }),\n    setAddText: Em.observer('addText', function () {\n        if (!this.get('addText')) {\n            return this.set('addText', 'general.add');\n        }\n    }),\n    actions: {\n        add: function () {\n            if (!this.get('array')) {\n                this.set('array', Em.A([]));\n            }\n            return this.get('array').pushObject({\n                value: '',\n            });\n        },\n        remove: function (obj) {\n            return this.get('array').removeObject(obj);\n        },\n    },\n});\n\nexport default ArrayInputComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/array-input2.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ObjectInputComponent;\n\nimport Ember from 'ember';\n\nimport { t } from 'ember-intl';\n\nObjectInputComponent = Ember.Component.extend({\n    // Where the objects live\n    objects: Em.A([]),\n    // We have to convert to objects instead of plain array so we can bind in template\n    placeholderObjects: Em.computed('objects.[]', function () {\n        var i, len, object, objects, obs;\n        objects = this.get('objects');\n        obs = Em.A([]);\n        for (i = 0, len = objects.length; i < len; i++) {\n            object = objects[i];\n            obs.push({\n                value: object,\n            });\n        }\n        return obs;\n    }),\n    obsPlacehoder: Em.observer('placeholderObjects.@each.value', function () {\n        var i, k, len, obj, obs, results;\n        obs = this.get('placeholderObjects');\n        results = [];\n        for (k = i = 0, len = obs.length; i < len; k = ++i) {\n            obj = obs[k];\n            results.push(this.set('objects.' + k, obj.value));\n        }\n        return results;\n    }),\n    // Save button text\n    saveText: t('general.save'),\n    // Add button text\n    addText: t('general.add'),\n    // You can disable all inputs and buttons\n    disabled: false,\n    actions: {\n        // Add objects to our array\n        add: function () {\n            return this.get('objects').pushObject('');\n        },\n        // Remove objects from our array\n        remove: function (obj, index) {\n            return this.get('objects').removeObject(obj.value);\n        },\n        // Send save action with our array\n        save: function () {\n            if (this.get('save')) {\n                return this.save(this.get('objects'));\n            }\n        },\n    },\n});\n\nexport default ObjectInputComponent;\n","define(\"tt4/components/bar-chart\", [\"exports\", \"ember-google-charts/components/bar-chart\"], function (_exports, _barChart) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _barChart.default;\n    }\n  });\n});\n","define(\"tt4/components/basic-dropdown-content\", [\"exports\", \"ember-basic-dropdown/components/basic-dropdown-content\"], function (_exports, _basicDropdownContent) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _basicDropdownContent.default;\n    }\n  });\n});\n","define(\"tt4/components/basic-dropdown-optional-tag\", [\"exports\", \"ember-basic-dropdown/components/basic-dropdown-optional-tag\"], function (_exports, _basicDropdownOptionalTag) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _basicDropdownOptionalTag.default;\n    }\n  });\n});\n","define(\"tt4/components/basic-dropdown-trigger\", [\"exports\", \"ember-basic-dropdown/components/basic-dropdown-trigger\"], function (_exports, _basicDropdownTrigger) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _basicDropdownTrigger.default;\n    }\n  });\n});\n","define(\"tt4/components/basic-dropdown\", [\"exports\", \"ember-basic-dropdown/components/basic-dropdown\"], function (_exports, _basicDropdown) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _basicDropdown.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/billing-info.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar BillingInfoComponent;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport $ from 'jquery';\n\nBillingInfoComponent = Ember.Component.extend({\n    session: Ember.inject.service(),\n    admintool: Ember.inject.service(),\n    countryLists: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    didInsertElement: function () {\n        return $('#' + this.get('billingtype')).addClass('in');\n    },\n    /*\n  billingTypes: Em.A [\n      Em.Object.create({name:'email',show:true})\n      Em.Object.create({name:'e_invoice',show:false})\n      Em.Object.create({name:'paper',show:false})\n  ]\n  */\n    errors: Ember.Object.create({\n        street: false,\n        zip: false,\n        town: false,\n        country: false,\n    }),\n    showEinvoiceOption: Em.computed(function () {\n        //console.log @get('session.currentUser.company_info.country')\n        if (this.get('session.currentUser.company_info.country') === 'fi') {\n            return true;\n        }\n        return false;\n    }),\n    getEinvoicingOperators: Em.on('init', function () {\n        /*\n    promise = new Ember.RSVP.Promise (resolve, reject) =>\n        promise = @get('admintool').ajax\n            url: \"operators\"\n            method: \"get\"\n\n        promise.then (data) ->\n            resolve data\n    promise.then (data) =>\n    */\n        var data;\n        data = [\n            {\n                id: 'apix',\n                name: 'Apix Messaging Oy (003723327487)',\n            },\n            {\n                id: 'basware',\n                name: 'BasWare Einvoices Oy (BAWCFI22)',\n            },\n            {\n                id: 'basware_oyj',\n                name: 'BasWare Oyj (003705925424)',\n            },\n            {\n                id: 'cgi',\n                name: 'CGI - Logica (003703575029)',\n            },\n            {\n                id: 'danske_bank',\n                name: 'Danske Bank Oyj (DABAFIHH)',\n            },\n            {\n                id: 'enfo',\n                name: 'Enfo Oy (003718062728)',\n            },\n            {\n                id: 'enfo_oyj',\n                name: 'Enfo Oyj (003714377140)',\n            },\n            {\n                id: 'inex',\n                name: 'InExchange Factorum AB (INEXCHANGE)',\n            },\n            {\n                id: 'liaison',\n                name: 'LIAISON Technologies Oy (003708599126)',\n            },\n            {\n                id: 'maventa',\n                name: 'Maventa Services (003721291126)',\n            },\n            {\n                id: 'nordea',\n                name: 'Nordea (NDEAFIHH)',\n            },\n            {\n                id: 'notebeat',\n                name: 'Notebeat Oy (003717203971)',\n            },\n            {\n                id: 'op',\n                name: 'OP-Pohjola-ryhmä (OKOYFIHH)',\n            },\n            {\n                id: 'opus',\n                name: 'OpusCapita Group Oy - Itella (003710948874)',\n            },\n            {\n                id: 'pagero',\n                name: 'Pagero (003723609900)',\n            },\n            {\n                id: 'pop',\n                name: 'POP Pankit (POPFFI22)',\n            },\n            {\n                id: 's_pankki',\n                name: 'S-Pankki Oy (SBANFIHH)',\n            },\n            {\n                id: 'sampo',\n                name: 'Sampo Pankki Oyj (PSPBFIHH)',\n            },\n            {\n                id: 'handelsbank',\n                name: 'Svenska HAndelsbanken AB (HANDFIHH)',\n            },\n            {\n                id: 'saasto',\n                name: 'Säästöpankit (ITELFIHH)',\n            },\n            {\n                id: 'tapiola',\n                name: 'Tapiola Pankki (TAPIFI22)',\n            },\n            {\n                id: 'teliasonera',\n                name: 'TeliaSonera Finland Oyj (003714756079)',\n            },\n            {\n                id: 'tieto',\n                name: 'Tieto Oyj (003701011385)',\n            },\n            {\n                id: 'aland',\n                name: 'Ålandsbanken Abp (AABAFI22)',\n            },\n            {\n                id: 'opus_solutions',\n                name: 'OpusCapita Solutions Oy (E204503)',\n            },\n        ];\n        return this.set('eInvoicingOperators', data);\n    }),\n    billingtype: 'email',\n    invoicingAddress: Em.computed(function () {\n        return {\n            email: this.get('session.currentUser.email'),\n        };\n    }),\n    save_company_info: function () {\n        var promise;\n        promise = this.get('admintool').ajax({\n            url: 'customer_info',\n            method: 'PUT',\n            data: {\n                street: this.get('customerData.street'),\n                zip: this.get('customerData.zip'),\n                town: this.get('customerData.town'),\n                country: this.get('customerData.country'),\n                specifier: this.get('customerData.specifier'),\n            },\n        });\n        return promise.then(() => {\n            // close only if shown in modal\n            if (this.get('close')) {\n                $('.modal').modal('hide');\n                return this.close();\n            } else {\n                return this.get('notifications').success(this.get('intl').t('general.saved'), {\n                    autoClear: true,\n                });\n            }\n        });\n    },\n    actions: {\n        copy_fields: function (checked) {\n            if (checked) {\n                this.set('invoicingAddress.zip', this.get('customerData.zip'));\n                this.set('invoicingAddress.town', this.get('customerData.town'));\n                this.set('invoicingAddress.country', this.get('customerData.country'));\n                return this.set('invoicingAddress.street', this.get('customerData.street'));\n            }\n        },\n        setBillingType: function (btype) {\n            return this.set('billingtype', btype);\n        },\n        edit: function () {\n            this.set('editmode', true);\n            return this.send('save');\n        },\n        close: function () {\n            $('.modal').modal('hide');\n            if (this.get('close')) {\n                return this.close();\n            }\n        },\n        save: function () {\n            var data_arr, field, hasError, i, len, method, promise, ref;\n            data_arr = {};\n            if (this.get('editmode')) {\n                method = 'PUT';\n            } else {\n                method = 'POST';\n            }\n            if (this.get('billingtype') === 'eInvoice') {\n                this.set('invoicingAddress.email', null);\n                this.set('invoicingAddress.zip', null);\n                this.set('invoicingAddress.town', null);\n                this.set('invoicingAddress.country', null);\n                this.set('invoicingAddress.street', null);\n            } else if (this.get('billingtype') === 'email') {\n                this.set('invoicingAddress.zip', null);\n                this.set('invoicingAddress.town', null);\n                this.set('invoicingAddress.country', null);\n                this.set('invoicingAddress.e_invoice_operator', null);\n                this.set('invoicingAddress.e_invoice_address', null);\n            } else if (this.get('billingtype') === 'paper') {\n                this.set('invoicingAddress.e_invoice_operator', null);\n                this.set('invoicingAddress.e_invoice_address', null);\n                this.set('invoicingAddress.email', null);\n            }\n            if (\n                this.get('invoicingAddress.use_company_address') &&\n                this.get('billingtype') === 'paper'\n            ) {\n                data_arr['street'] = this.get('customerData.street');\n                data_arr['zip'] = this.get('customerData.zip');\n                data_arr['town'] = this.get('customerData.town');\n                data_arr['country'] = this.get('customerData.country');\n            } else {\n                data_arr['street'] = this.get('invoicingAddress.street');\n                data_arr['zip'] = this.get('invoicingAddress.zip');\n                data_arr['town'] = this.get('invoicingAddress.town');\n                data_arr['country'] = this.get('invoicingAddress.country');\n            }\n            data_arr['billingtype'] = this.get('billingtype');\n            data_arr['email'] = this.get('invoicingAddress.email');\n            data_arr['e_invoice_operator'] = this.get('invoicingAddress.e_invoice_operator');\n            data_arr['e_invoice_address'] = this.get('invoicingAddress.e_invoice_address');\n            data_arr['invoice_ref'] = this.get('invoicingAddress.invoice_ref');\n            data_arr['use_company_address'] = this.get('invoicingAddress.use_company_address');\n            hasError = false;\n            if (this.get('billingtype') === 'eInvoice') {\n                ref = ['street', 'zip', 'town', 'country'];\n                for (i = 0, len = ref.length; i < len; i++) {\n                    field = ref[i];\n                    if (\n                        !this.get(\n                            'customerData.' + field || this.get('customerData.' + field === ''),\n                        )\n                    ) {\n                        this.set('errors.' + field, true);\n                        hasError = true;\n                    } else {\n                        this.set('errors.' + field, false);\n                    }\n                }\n            }\n            if (!hasError) {\n                promise = this.get('admintool').ajax({\n                    url: 'billinginfo',\n                    method: method,\n                    data: data_arr,\n                });\n                return promise.then(() => {\n                    // save also address-info if \"use company address\" is checked\n                    if (this.get('popup')) {\n                        return this.save_company_info();\n                    } else {\n                        if (this.get('close')) {\n                            $('.modal').modal('hide');\n                            return this.close();\n                        } else {\n                            return this.get('notifications').success(\n                                this.get('intl').t('general.saved'),\n                                {\n                                    autoClear: true,\n                                },\n                            );\n                        }\n                    }\n                });\n            }\n        },\n    },\n});\n\nexport default BillingInfoComponent;\n","import BootstrapDatepickerInlineComponent from 'ember-cli-bootstrap-datepicker/components/bootstrap-datepicker-inline';\n\nexport default BootstrapDatepickerInlineComponent;\n","import BootstrapDatepickerComponent from 'ember-cli-bootstrap-datepicker/components/bootstrap-datepicker';\n\nexport default BootstrapDatepickerComponent;\n","define(\"tt4/components/bs-accordion\", [\"exports\", \"ember-bootstrap/components/bs-accordion\"], function (_exports, _bsAccordion) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _bsAccordion.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-accordion/item\", [\"exports\", \"ember-bootstrap/components/bs-accordion/item\"], function (_exports, _item) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _item.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-accordion/item/body\", [\"exports\", \"ember-bootstrap/components/bs-accordion/item/body\"], function (_exports, _body) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _body.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-accordion/item/title\", [\"exports\", \"ember-bootstrap/components/bs-accordion/item/title\"], function (_exports, _title) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _title.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-button-group\", [\"exports\", \"ember-bootstrap/components/bs-button-group\"], function (_exports, _bsButtonGroup) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _bsButtonGroup.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-button-group/button\", [\"exports\", \"ember-bootstrap/components/bs-button-group/button\"], function (_exports, _button) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _button.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-button\", [\"exports\", \"ember-bootstrap/components/bs-button\"], function (_exports, _bsButton) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _bsButton.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-collapse\", [\"exports\", \"ember-bootstrap/components/bs-collapse\"], function (_exports, _bsCollapse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _bsCollapse.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-dropdown\", [\"exports\", \"ember-bootstrap/components/bs-dropdown\"], function (_exports, _bsDropdown) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _bsDropdown.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-dropdown/button\", [\"exports\", \"ember-bootstrap/components/bs-dropdown/button\"], function (_exports, _button) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _button.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-dropdown/menu\", [\"exports\", \"ember-bootstrap/components/bs-dropdown/menu\"], function (_exports, _menu) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _menu.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-dropdown/menu/divider\", [\"exports\", \"ember-bootstrap/components/bs-dropdown/menu/divider\"], function (_exports, _divider) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _divider.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-dropdown/menu/item\", [\"exports\", \"ember-bootstrap/components/bs-dropdown/menu/item\"], function (_exports, _item) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _item.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-dropdown/menu/link-to\", [\"exports\", \"ember-bootstrap/components/bs-dropdown/menu/link-to\"], function (_exports, _linkTo) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _linkTo.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-dropdown/toggle\", [\"exports\", \"ember-bootstrap/components/bs-dropdown/toggle\"], function (_exports, _toggle) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _toggle.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-modal\", [\"exports\", \"ember-bootstrap/components/bs-modal\"], function (_exports, _bsModal) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _bsModal.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-modal/body\", [\"exports\", \"ember-bootstrap/components/bs-modal/body\"], function (_exports, _body) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _body.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-modal/dialog\", [\"exports\", \"ember-bootstrap/components/bs-modal/dialog\"], function (_exports, _dialog) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _dialog.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-modal/footer\", [\"exports\", \"ember-bootstrap/components/bs-modal/footer\"], function (_exports, _footer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _footer.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-modal/header\", [\"exports\", \"ember-bootstrap/components/bs-modal/header\"], function (_exports, _header) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _header.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-modal/header/close\", [\"exports\", \"ember-bootstrap/components/bs-modal/header/close\"], function (_exports, _close) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _close.default;\n    }\n  });\n});\n","define(\"tt4/components/bs-modal/header/title\", [\"exports\", \"ember-bootstrap/components/bs-modal/header/title\"], function (_exports, _title) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _title.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/cc-report.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CcReportComponent;\n\nimport Ember from 'ember';\n\nimport pdfExport from '../mixins/pdf-export';\n\nimport chartComp from './chart-comp';\n\nimport $ from 'jquery';\n\nimport { isArray } from '@ember/array';\n\nimport { htmlSafe } from '@ember/template';\n\nimport collector from 'tt4/classes/collector';\n\nCcReportComponent = Ember.Component.extend(pdfExport, {\n    Collector: Ember.inject.service('collector-service'),\n    sessionGlobals: Ember.inject.service(),\n    //# integration key in CloudConnector\n    key: null,\n    //# Query parameters for fetching data from api\n    query: null,\n    //# Show data as chart\n    isChart: false,\n    rowsPerPage: 25,\n    currentPage: 1,\n    didInsertElement: function () {\n        return this.refreshSettings();\n    },\n    refreshSettings: function () {\n        var getSettings, self, settings;\n        getSettings = ['key', 'query'];\n        settings = this.get('settings');\n        if (!settings) {\n            return;\n        }\n        self = this;\n        return $.each(getSettings, function (key, item) {\n            var new_value, old_value;\n            if ((!item) in settings) {\n                return;\n            }\n            old_value = self.get(item);\n            new_value = settings[item];\n            if (old_value !== new_value) {\n                return self.set(item, new_value);\n            }\n        });\n    }.observes('settings.key', 'settings.query'),\n    isHtml: Ember.computed('type', function () {\n        return 'html' === this.get('type');\n    }),\n    data: Ember.computed(function () {}),\n    dataFromCC: Ember.on(\n        'init',\n        Ember.observer('query', 'currentPage', function () {\n            var c, key, promise;\n            key = this.get('key');\n            if (!key) {\n                return null;\n            }\n            c = this.get('Collector');\n            this.set('loading', true);\n            this.set('error', false);\n            this.set('error_description', null);\n            this.set('data', null);\n            this.set('chartData', null);\n            this.set('isChart', false);\n            this.set('html', null);\n            promise = c.ccapi({\n                url: this.createUrl(),\n                method: this.requestMethod ? this.requestMethod : 'GET',\n            });\n            promise.then((data) => {\n                var array, error;\n                this.set('loading', false);\n                if (this.get('type') === 'html') {\n                    this.set('html', new Ember.String.htmlSafe(data));\n                    return;\n                }\n                if (!data) {\n                    this.set('data', []);\n                    this.set('chartData', null);\n                    this.set('isChart', false);\n                    return;\n                }\n                try {\n                    array = JSON.parse(data);\n                } catch (error1) {\n                    error = error1;\n                    this.set('error', 'parse_error');\n                    this.set('error_description', data);\n                    throw new Error(\n                        'Could not parse CC response for integration ' + key + ' ' + error,\n                    );\n                }\n                this.set('pageCount', Math.ceil(array.count / this.get('rowsPerPage')));\n                if (array.chart_type === 'table') {\n                    this.set('data', this.getFormattedData(array.data));\n                    this.set('chartData', null);\n                    return this.set('isChart', false);\n                } else {\n                    this.set('data', null);\n                    this.set('chartData', array);\n                    return this.set('isChart', true);\n                }\n            });\n            return promise;\n        }),\n    ),\n    asPdfElement: Ember.computed(function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise;\n            promise = this.dataFromCC();\n            return promise.then(() => {\n                var component;\n                if (this.get('isChart')) {\n                    component = chartComp.create({\n                        api_url: this.get('url'),\n                        type: 'table',\n                        usecontainer: $('<div></div>'),\n                    });\n                    component.set('data', this.get('chartData'));\n                    return resolve({\n                        image: component.get('chart').getImageURI(),\n                        width: 250,\n                    });\n                } else {\n                    return resolve(\n                        this.createPdfTableElement(this.get('columns'), this.get('data')),\n                    );\n                }\n            });\n        });\n    }),\n    asCsvArray: Ember.computed(function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise, rows;\n            promise = this.dataFromCC();\n            rows = [];\n            return promise.then(() => {\n                var column, columns, csv_data, i, j, len, len1, newrow, row;\n                rows.push(this.get('columns'));\n                csv_data = this.get('data');\n                columns = this.get('columns');\n                for (i = 0, len = csv_data.length; i < len; i++) {\n                    row = csv_data[i];\n                    newrow = [];\n                    for (j = 0, len1 = columns.length; j < len1; j++) {\n                        column = columns[j];\n                        newrow.push(row[column]);\n                    }\n                    rows.push(newrow);\n                }\n                return resolve(rows);\n            });\n        });\n    }),\n    //        header: @get 'settings.header'\n    createUrl: function () {\n        var i, item, len, query, query_str_arr, url;\n        url = this.get('key');\n        if (!url) {\n            return;\n        }\n        query = this.get('query');\n        if (!query) {\n            query = this.getDefaultQuery();\n        }\n        if (query) {\n            query_str_arr = [];\n            for (i = 0, len = query.length; i < len; i++) {\n                item = query[i];\n                if (!item.value) {\n                    return;\n                }\n                query_str_arr.push(item.name + '=' + item.value);\n            }\n            url += '?' + query_str_arr.join('&');\n            if (!this.get('isChart')) {\n                url +=\n                    '&limit=' +\n                    this.get('rowsPerPage') +\n                    '&offset=' +\n                    this.get('rowsPerPage') * (this.get('currentPage') - 1);\n            }\n        }\n        return url;\n    },\n    getDefaultQuery: function () {\n        var param, param_arr, params;\n        if (!this.get('query')) {\n            // this is not the correct way to do this but only way I figured out :|\n            // form-filters should be able to update these automatically - Veikko\n            params = this.get('sessionGlobals').get('filters_worktime') || {};\n            if (!params.date) {\n                params.date =\n                    moment().startOf('isoweek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD');\n            }\n            param_arr = Em.A([]);\n            for (param in params) {\n                if (Em.isPresent(params[param])) {\n                    param_arr.push({\n                        name: param,\n                        value: params[param],\n                    });\n                }\n            }\n            return param_arr;\n        }\n    },\n    // This function formats hdfile fields as htmlSafe so they are shown correctly in report and not \"[Object object]\"\n    getFormattedData: function (data) {\n        return data.map((row) => {\n            var obj;\n            obj = {};\n            Object.entries(row).forEach((val) => {\n                var html;\n                html = '';\n                if (isArray(val[1])) {\n                    val[1].forEach((file) => {\n                        var previewFile;\n                        if (file.s3thumb) {\n                            return (html +=\n                                '<div class=\"img-thumb\" style=\"background-image: url(' +\n                                file.s3thumb +\n                                ')\"></div>');\n                        } else if (file.url) {\n                            previewFile = this.get('Collector').makeFileUrl(\n                                collector.api_url() + '/',\n                                file.url,\n                            );\n                            return (html +=\n                                '<a class=\"file-preview\" href=' +\n                                previewFile +\n                                '>' +\n                                file.name +\n                                '</a>');\n                        }\n                    });\n                    return (obj[val[0]] = html ? htmlSafe(html) : val[1]);\n                } else {\n                    return (obj[val[0]] = val[1]);\n                }\n            });\n            return obj;\n        });\n    },\n    columns: Em.computed('data', function () {\n        var columns, firstRow;\n        if (!this.get('data')) {\n            return Em.A([]);\n        }\n        firstRow = this.get('data.firstObject');\n        if (!firstRow) {\n            return Em.A([]);\n        }\n        columns = Em.A([]);\n        $.each(firstRow, function (key, item) {\n            return columns.pushObject(key);\n        });\n        return columns;\n    }),\n});\n\nexport default CcReportComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/chart-comp.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ChartComponent;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nimport { getAssetFolder, getScriptsInOrder } from 'tt4/utils/getScript';\n\nChartComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    layoutName: 'components/chart',\n    name: 'chart',\n    id: null,\n    data: null,\n    // with this chart can fetch its data directly over api\n    datapoint: null,\n    // when using datapoint api request params can be setted with filter (ie. {test: 'value'})\n    filters: null,\n    two_series: false,\n    export_pdf: false,\n    showExport: Ember.computed(function () {\n        var exports;\n        exports = [];\n        if (typeof cordova === 'undefined' || cordova === null) {\n            exports.push('pdf');\n        }\n        return exports;\n    }),\n    didInsertElement: function () {\n        if (this.get('datapoint')) {\n            return this.fetch_data();\n        } else {\n            return this.drawChart();\n        }\n    },\n    fetch_data: function () {\n        var datapoint, filter_arr, filters, self, url;\n        datapoint = this.get('datapoint');\n        if (!datapoint) {\n            return;\n        }\n        filters = this.get('filters');\n        url = this.get('api_url') + datapoint;\n        if (filters) {\n            filter_arr = [];\n            filters.forEach(function (item) {\n                return filter_arr.push(item.key + '=' + item.value);\n            });\n            url += '?' + filter_arr.join('&');\n        }\n        self = this;\n        return $.ajax({\n            url: url,\n            type: 'GET',\n            //headers: {'Authorization': 'Bearer '+localStorage.access_token}\n        }).done(function (data) {\n            return self.set('data', data);\n        });\n    }.observes('datapoint', 'filters'),\n    // draw chart or multiple chart when ever property data changes\n    drawChart: function () {\n        var container, data, parsed, raw_data, type;\n        raw_data = this.get('data');\n        if (typeof raw_data === 'string') {\n            raw_data = JSON.parse(raw_data);\n        }\n        if (!raw_data) {\n            return;\n        }\n        // Instantiate and draw our chart, passing in some options\n        container = this.get('usecontainer') || $('div.chart', this.element);\n        if ('chart_type' in raw_data) {\n            parsed = this.parse_data(raw_data.data, 'nottable');\n            this.draw_single_chart(container.get(0), raw_data.chart_type, parsed.google_data);\n            return;\n        }\n        type = this.get('type');\n        data = this.parse_data(raw_data, type);\n        if (data.constructor !== Array) {\n            return this.draw_single_chart(container.get(0), type, data.google_data);\n        } else {\n            return this.drawMultipleCharts(container, data);\n        }\n    }.observes('data'),\n    // render multiple charts if data contains array\n    drawMultipleCharts: function (container, data) {\n        var self;\n        self = this;\n        container.empty();\n        return $.each(data, function (key, item) {\n            var subcontainer;\n            if (item.header) {\n                $('<h2>' + item.header + '</h2>').appendTo(container);\n            } else {\n                $('<br><br>').appendTo(container);\n            }\n            subcontainer = $('<div class=\"' + key + '\"></div>');\n            subcontainer.appendTo(container);\n            return self.draw_single_chart(subcontainer.get(0), item.type, item.google_data);\n        });\n    },\n    // call the actual google visulization draw method for every chart\n    draw_single_chart: function (container, type, data) {\n        var chart, colors_arr, columns, i, linecolors, multiple_series, options, self, series;\n        switch (type) {\n            case 'table':\n                options = {\n                    cssClassNames: {\n                        tableCell: 'reportCell',\n                    },\n                };\n                chart = new google.visualization.Table(container);\n                break;\n            case 'pie':\n                if (this.get('options')) {\n                    options = this.get('options');\n                } else {\n                    options = {\n                        //is3D: true\n                        chartArea: {\n                            width: '100%',\n                            height: '100%',\n                        },\n                        height: 350,\n                    };\n                }\n                chart = new google.visualization.PieChart(container);\n                if (this.get('onSelect'))\n                    google.visualization.events.addListener(chart, 'select', () => {\n                        var selectedItem = chart.getSelection()[0];\n                        this.get('onSelect')(\n                            selectedItem.row,\n                            this.get('data')[selectedItem.row + 1][0],\n                        );\n                    });\n                break;\n            case 'bars':\n                options = {\n                    //is3D: true\n                    //chartArea:{left:0,top:0,width:\"100%\",height:\"100%\"}\n                    height: 350,\n                };\n                chart = new google.visualization.BarChart(container);\n                break;\n            case 'column':\n                options = {\n                    //is3D: true\n                    //chartArea:{left:0,top:0,width:\"100%\",height:\"100%\"}\n                    height: 350,\n                };\n                chart = new google.visualization.ColumnChart(container);\n                break;\n            case 'tree':\n                chart = new google.visualization.OrgChart(container);\n                options = {\n                    size: 'large',\n                };\n                break;\n            //                    nodeClass: 'org-chart-node'\n            case 'gauge':\n                chart = new google.visualization.Gauge(container);\n                if (this.get('options')) {\n                    options = this.get('options');\n                } else {\n                    options = {\n                        width: 350,\n                        height: 150,\n                    };\n                }\n                break;\n            default:\n                columns = [];\n                series = {};\n                i = 0;\n                while (i < data.getNumberOfColumns()) {\n                    columns.push(i);\n                    if (i > 0) {\n                        series[i - 1] = {};\n                    }\n                    i++;\n                }\n                linecolors = [\n                    '#3366cc',\n                    '#dc3912',\n                    '#ff9900',\n                    '#109618',\n                    '#990099',\n                    '#0099c6',\n                    '#dd4477',\n                    '#66aa00',\n                    '#b82e2e',\n                    '#316395',\n                    '#994499',\n                    '#22aa99',\n                    '#aaaa11',\n                    '#6633cc',\n                    '#e67300',\n                    '#8b0707',\n                    '#651067',\n                    '#329262',\n                    '#5574a6',\n                    '#3b3eac',\n                    '#b77322',\n                    '#16d620',\n                    '#b91383',\n                    '#f4359e',\n                    '#9c5935',\n                    '#a9c413',\n                    '#2a778d',\n                    '#668d1c',\n                    '#bea413',\n                    '#0c5922',\n                    '#743411',\n                ];\n                if (this.get('options')) {\n                    options = this.get('options');\n                } else {\n                    options = {\n                        height: 350,\n                        width: '100%',\n                        colors: [\n                            '#3366cc',\n                            '#dc3912',\n                            '#ff9900',\n                            '#109618',\n                            '#990099',\n                            '#0099c6',\n                            '#dd4477',\n                            '#66aa00',\n                            '#b82e2e',\n                            '#316395',\n                            '#994499',\n                            '#22aa99',\n                            '#aaaa11',\n                            '#6633cc',\n                            '#e67300',\n                            '#8b0707',\n                            '#651067',\n                            '#329262',\n                            '#5574a6',\n                            '#3b3eac',\n                            '#b77322',\n                            '#16d620',\n                            '#b91383',\n                            '#f4359e',\n                            '#9c5935',\n                            '#a9c413',\n                            '#2a778d',\n                            '#668d1c',\n                            '#bea413',\n                            '#0c5922',\n                            '#743411',\n                        ],\n                    };\n                }\n                if (this.get('multiple_series')) {\n                    multiple_series = this.get('multiple_series');\n                    options.vAxes = multiple_series.vAxes;\n                    options.series = multiple_series.series;\n                    options.legend = {\n                        position: 'top',\n                        textStyle: {\n                            fontSize: 14,\n                        },\n                    };\n                }\n                options.chartArea = {\n                    left: 25,\n                    top: 10,\n                    width: '75%',\n                    height: '80%',\n                };\n                chart = new google.visualization.LineChart(container);\n                self = this;\n                google.visualization.events.addListener(chart, 'select', function () {\n                    var col, sel, show_columns, view;\n                    if (self.get('selectionHandler')) {\n                        return self.selectionHandler(chart.getSelection());\n                    } else {\n                        sel = chart.getSelection();\n                        show_columns = [];\n                        if (sel.length > 0) {\n                            // if row is null, we clicked on the legend\n                            if (sel[0].row === null) {\n                                col = sel[0].column;\n                                if (options.colors[col - 1] !== '#CCC') {\n                                    options.colors[col - 1] = '#CCC';\n                                } else {\n                                    options.colors[col - 1] = linecolors[col - 1];\n                                }\n                                view = new google.visualization.DataView(data);\n                                view.setColumns(columns);\n                                chart.draw(view, options);\n                            }\n                        }\n                    }\n                });\n        }\n        if (this.get('selectionHandler')) {\n            options.animation = {};\n        } else if (type === 'column') {\n            options.animation = {\n                startup: true,\n                duration: 200,\n            };\n        } else {\n            options.animation = {\n                startup: true,\n                duration: 1000,\n            };\n        }\n        if (options.hAxis == null) {\n            options.hAxis = {};\n        }\n        if (this.get('Xmax')) {\n            options.hAxis.maxValue = this.get('Xmax');\n        }\n        if (this.get('Xmin')) {\n            options.hAxis.minValue = this.get('Xmin');\n        }\n        if (options.vAxis == null) {\n            options.vAxis = {};\n        }\n        if (this.get('Ymax')) {\n            options.vAxis.maxValue = this.get('Ymax');\n        }\n        if (this.get('Ymin')) {\n            options.vAxis.minValue = this.get('Ymin');\n        }\n        //options.backgroundColor = '#E4E4E4'\n        if (this.get('colors')) {\n            colors_arr = this.get('colors').split(',');\n            options.colors = colors_arr;\n        }\n        this.set('options', options);\n        this.set('drawnData', data);\n        chart.draw(data, options);\n        return this.set('chart', chart);\n    },\n    // parse raw data returned from api to format which can be used to call google visulization\n    // format for single chart is {columns: {...}, rows: [...]}\n    // format when returning multiple charts is [{header: ..., columns: {...}, rows: [...]},...]\n    parse_data: function (raw_data, default_type) {\n        var self, temp;\n        if (raw_data.constructor !== Array || default_type !== 'table') {\n            return this.get_google_chart_data(default_type, raw_data);\n        }\n        // else contains many tables\n        self = this;\n        temp = [];\n        $.each(raw_data, function (index, item) {\n            return temp.push(self.get_google_chart_data(default_type, item));\n        });\n        return temp;\n    },\n    // parse one chart data for google visualization\n    get_google_chart_data: function (default_type, raw_data) {\n        var google_data, type;\n        type = 'type' in raw_data ? raw_data.type : default_type;\n        if (type === 'table') {\n            google_data = this.parse_single_table(raw_data);\n        } else {\n            google_data = google.visualization.arrayToDataTable(raw_data);\n        }\n        return {\n            header: raw_data.header,\n            type: type,\n            google_data: google_data,\n        };\n    },\n    // parses table data for google visualization\n    parse_single_table: function (raw_data) {\n        var data, dk, drow, format, j, k, l, len, len1, len2, m, r, real_rows, ref, ref1, row, self;\n        self = this;\n        data = new google.visualization.DataTable();\n        Ember.assert('table data contains no columns', raw_data.columns);\n        $.each(raw_data.columns, function (index, item) {\n            var t;\n            if (item.type === 'int' || item.type === 'percent') {\n                t = 'number';\n            } else {\n                t = item.type;\n            }\n            return data.addColumn(t, self.get('intl').t('chart.' + item.text));\n        });\n        Ember.assert('table data contains no rows', raw_data.rows);\n        real_rows = [];\n        ref = raw_data.rows;\n        for (k = j = 0, len = ref.length; j < len; k = ++j) {\n            row = ref[k];\n            r = [];\n            ref1 = raw_data.columns;\n            for (dk = l = 0, len1 = ref1.length; l < len1; dk = ++l) {\n                drow = ref1[dk];\n                if (drow.type === 'number') {\n                    r[dk] = {\n                        v: parseFloat(row[dk]),\n                        f: row[dk],\n                    };\n                } else if (drow.type === 'int') {\n                    r[dk] = {\n                        v: parseFloat(row[dk]),\n                        f: row[dk],\n                    };\n                } else if (drow.type === 'percent') {\n                    format = '';\n                    if (row[dk]) {\n                        format = row[dk] + ' %';\n                    }\n                    r[dk] = {\n                        v: parseFloat(row[dk]),\n                        f: format,\n                    };\n                } else {\n                    r[dk] = row[dk];\n                }\n            }\n            real_rows.push(r);\n        }\n        data.addRows(real_rows);\n        for (k = m = 0, len2 = real_rows.length; m < len2; k = ++m) {\n            row = real_rows[k];\n            data.setProperty(k, 0, 'className', 'tableCellFixedWidth');\n        }\n        return data;\n    },\n    willDestroyElement: function () {\n        if (this.get('chart') && Ember.typeOf(this.get('chart').clearChart) === 'function') {\n            return this.get('chart').clearChart();\n        }\n    },\n    actions: {\n        redraw: function () {\n            return this.drawChart();\n        },\n        save_pdf: function (param) {\n            var assetsfolder, chart, docDefinition;\n            this.set('showLoader', true);\n            chart = this.get('chart');\n            docDefinition = {\n                content: {\n                    image: chart.getImageURI(),\n                    width: 800,\n                },\n                pageSize: 'A4',\n                pageOrientation: 'landscape',\n                pageMargins: [0, 20, 0, 0],\n            };\n            assetsfolder = getAssetFolder('assets');\n            return getScriptsInOrder([\n                assetsfolder + 'pdfmake_v0.1.68.min.js',\n                assetsfolder + 'vfs_fonts_v0.1.68.min.js',\n            ]).then(() => {\n                createPdf(docDefinition).download('export.pdf');\n                return this.set('showLoader', false);\n            });\n        },\n    },\n});\n\nexport default ChartComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/collector-field.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport localization from '../classes/localization';\n\nimport collector from '../classes/collector';\n\nimport validatorClass from 'tt4/classes/validations';\n\nimport { htmlSafe } from '@ember/string';\n\nconst { getOwner, get } = Ember;\n\nCollectorFieldComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    localStorageWrapper: Em.inject.service(),\n    session: Em.inject.service(),\n    gui: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    userId: Ember.computed('session.currentUser.id', function () {\n        return this.get('session.currentUser.id');\n    }),\n    title: true,\n    external_errors: Em.A([]),\n    init: function () {\n        var cust_value,\n            defaultValue,\n            default_value,\n            ext,\n            feature,\n            field,\n            fieldExt,\n            fields,\n            j,\n            key,\n            l,\n            len,\n            len1,\n            merged_values,\n            modelName,\n            name,\n            options,\n            ref,\n            ref1,\n            ref2,\n            ref3,\n            v,\n            val,\n            value;\n        this._super();\n        field = this.get('field');\n        if (!field) {\n            return;\n        }\n        // super HAX ...\n        // database fields cannot update model if alias\n        // other fields can but they need to be alias so parent controllers can change their values\n        if ((ref = get(field, 'type')) === 'database' || ref === 'timerlink') {\n            Ember.defineProperty(\n                this,\n                'value',\n                Ember.computed.oneWay('model.' + this.get('field.ext')),\n            );\n        } else {\n            Ember.defineProperty(\n                this,\n                'value',\n                Ember.computed.alias('model.' + this.get('field.ext')),\n            );\n        }\n        ext = this.get('field.ext');\n        if (ext && ext.indexOf('_plus', ext.length - 5) !== -1) {\n            name = ext.substring(0, ext.length - 5);\n            Ember.defineProperty(this, 'plus', Ember.computed.alias('model.' + name + '_plus'));\n            Ember.defineProperty(this, 'minus', Ember.computed.alias('model.' + name + '_minus'));\n            this.set('plusminus', true);\n        }\n        if (ext === 'location') {\n            this.set('field.type', 'gpslocation');\n        }\n        if (ext === 'end_location') {\n            this.set('field.type', 'gpslocation');\n        }\n        if (ext === 'location_map') {\n            this.set('field.type', 'gpslocationmap');\n        }\n        if (\n            ext === 'weather' &&\n            this.get('value') &&\n            Ember.typeOf(this.get('value')) === 'string'\n        ) {\n            this.set('value', JSON.parse(this.get('value')));\n        }\n        if (this.get('field.type') === 'signature') {\n            val = this.get('value');\n            if (val != null && val.length > 0) {\n                val = val[0];\n            }\n            if (val != null && val.url) {\n                if (val.url.substring(0, 4) !== 'http') {\n                    this.set('value.url', collector.api_url() + '/' + val.url);\n                }\n            }\n        }\n        if (this.get('field.type') === 'radio') {\n            modelName = this.model.constructor.modelName;\n            fieldExt = this.field.ext;\n            options = this.get('field.options');\n            if (typeof options[0] !== 'object') {\n                options = options.map(function (val) {\n                    return {\n                        value: val,\n                        text: modelName + '.' + fieldExt + '.' + val,\n                    };\n                });\n                this.set('field.options', options);\n            }\n        }\n        // merge field features with customization features\n        if (this.get('field.customization.features') && field.features) {\n            ref1 = field.features;\n            for (feature in ref1) {\n                value = ref1[feature];\n                //merge if values aren't same\n                if (\n                    this.get('field.customization.features')[feature] !== value &&\n                    this.get('field.customization.features')[feature] !== void 0\n                ) {\n                    merged_values = [];\n                    cust_value = this.get('field.customization.features')[feature];\n                    //put from customization\n                    if (typeof cust_value === 'object') {\n                        cust_value.forEach((val) => {\n                            return merged_values.push(val);\n                        });\n                    } else {\n                        merged_values.push(cust_value);\n                    }\n                    //put features from api to array\n                    if (typeof value === 'object') {\n                        value.forEach((val) => {\n                            return merged_values.push(val);\n                        });\n                    } else {\n                        merged_values.push(value);\n                    }\n                    field.features[feature] = merged_values;\n                }\n            }\n        }\n        // Set default values for the field that comes from forms settings\n        if (\n            field &&\n            field.features.default_value &&\n            this.get('model.isNew') &&\n            this.get('value') == null\n        ) {\n            default_value = (function () {\n                switch (field.features.default_value) {\n                    case 'today':\n                        return moment().format('YYYY-MM-DD');\n                    default:\n                        return field.features.default_value;\n                }\n            })();\n            if (field.type === 'dropdown_values') {\n                default_value = default_value.toString();\n            }\n            default_value = default_value.value != null ? default_value.value : default_value;\n            Ember.run.next(this, () => {\n                this.set('value', default_value);\n                this.set('model.' + this.get('field.ext'), default_value);\n                return this.send('validate');\n            });\n        }\n        //default values for fields\n        if (\n            this.get('model.isNew') &&\n            this.get('field.customization.defaultValue') &&\n            this.get('value') == null\n        ) {\n            defaultValue = this.get('field.customization.defaultValue');\n            this.set('value', defaultValue);\n            this.set('model.' + this.get('field.ext'), defaultValue);\n        }\n        if (field && typeof field.features.mandatory === 'object') {\n            ref2 = field.features.mandatory;\n            for (j = 0, len = ref2.length; j < len; j++) {\n                fields = ref2[j];\n                for (key in fields) {\n                    v = fields[key];\n                    Ember.defineProperty(this, 'conditional', Ember.computed.alias('model.' + key));\n                }\n            }\n        }\n        if (field && typeof field.features.hide === 'object') {\n            ref3 = field.features.hide;\n            for (l = 0, len1 = ref3.length; l < len1; l++) {\n                fields = ref3[l];\n                for (key in fields) {\n                    v = fields[key];\n                    Ember.defineProperty(\n                        this,\n                        'hide_conditional',\n                        Ember.computed.alias('model.' + key),\n                    );\n                }\n            }\n        }\n        if (\n            this.get('field.features.mandatory') &&\n            typeof this.get('field.features.mandatory') !== 'object'\n        ) {\n            this.set('_mandatory', true);\n            if (\n                !(\n                    this.get('field.type') === 'dropdown_country' ||\n                    (this.get('field.options') &&\n                        this.get('field.options.firstObject') !== '' &&\n                        this.get('field.type') !== 'database' &&\n                        this.get('field.type') !== 'dropdown_values')\n                )\n            ) {\n                if (\n                    (this.get('value') instanceof Ember.ObjectProxy ||\n                        this.get('value') instanceof Ember.ArrayProxy) &&\n                    Ember.isEmpty(this.get('value.content')) &&\n                    !this.get('hide')\n                ) {\n                    if (this.get('errors')) {\n                        this.errors.push(this.field.ext);\n                    } else {\n                        this.errors = [this.field.ext];\n                    }\n                } else if (!Ember.isPresent(this.get('value')) && !this.get('hide')) {\n                    if (this.get('errors')) {\n                        this.errors.push(this.field.ext);\n                    } else {\n                        this.errors = [this.field.ext];\n                    }\n                }\n            }\n        }\n        if (this.get('field.type') === 'timeclean_imei') {\n            this.set('buttonText', 'project.add.imei');\n        }\n        if (this.get('field.customization.hide_title' || !this.get('settings.title'))) {\n            this.set('title', false);\n        }\n        if (this.get('field.features.stashed') && !this.get('show_stashed')) {\n            this.set('hide', true);\n        }\n        if (this.get('field.validateOnInit') && this.get('value')) {\n            this.send('validate');\n        }\n        if (typeof this.get === 'function' ? this.get('external_errors') : void 0) {\n            return this.get('external_errors').clear();\n        }\n    },\n    setDefaultValue: Em.on(\n        'init',\n        Em.observer('session.currentUser.id', function () {\n            var defValue, self;\n            if (\n                localStorage &&\n                !this.get('value') &&\n                !this.get('settings.edit') &&\n                !this.get('settings.report')\n            ) {\n                self = this;\n                switch (this.get('field.type')) {\n                    case 'database':\n                        defValue = this.get('localStorageWrapper').getUserSetting(\n                            this.get('field.options.form'),\n                        );\n                        defValue = parseInt(defValue, 10);\n                        if (\n                            defValue &&\n                            this.get('model.isNew') &&\n                            !this.get('hide') &&\n                            !this.get('field.features.do_not_preselect')\n                        ) {\n                            //@set 'value', defValue\n                            return this.Collector.get('store')\n                                .findRecord(this.get('field.options.form'), defValue, {\n                                    reload: true,\n                                })\n                                .then(\n                                    (row) => {\n                                        return Ember.run.next(this, () => {\n                                            if (row.get('row_info.status') !== 'removed') {\n                                                this.set('value', row);\n                                                return this.send('validate');\n                                            }\n                                        });\n                                    },\n                                    (reason) => {\n                                        return this.get('localStorageWrapper').setUserSetting(\n                                            this.get('field.options.form'),\n                                            null,\n                                        );\n                                    },\n                                );\n                        }\n                }\n            }\n        }),\n    ),\n    storeDefaultValue: function () {\n        var ref, tmp_value, value;\n        if (localStorage && this.get('value')) {\n            switch (this.get('field.type')) {\n                case 'database':\n                    value = this.get('value');\n                    if (!((ref = Ember.typeOf(value)) === 'number' || ref === 'string')) {\n                        tmp_value = value.get('id');\n                    } else {\n                        tmp_value = value;\n                    }\n                    return this.get('localStorageWrapper').setUserSetting(\n                        this.get('field.options.form'),\n                        parseInt(tmp_value),\n                    );\n            }\n        }\n    },\n    name: Ember.computed('intl.locale', function () {\n        var name;\n        if (this.get('field.type') === 'checkboxgroup') {\n            name = this.get('field.name')\n                ? this.get('field.name')\n                : this.get('intl').t(\n                      this.get('model.constructor.modelName') + 's.' + this.get('field.ext'),\n                  );\n            return name;\n        }\n        if (this.get('model.constructor.modelName').includes('measurement-custom')) {\n            name = this.get('field.name')\n                ? this.get('field.name')\n                : this.get('intl').t('tr' + '.' + this.get('field.ext'));\n            return name;\n        }\n        if (this.get('field.customization.translation')) {\n            //translation from customization\n            return htmlSafe(this.get('intl').t(this.get('field.customization.translation')));\n        }\n        if (this.get('field.translation')) {\n            return htmlSafe(this.get('intl').t(this.get('field.translation')));\n        }\n        return htmlSafe(\n            this.get('field.name') ||\n                this.get('intl').t(\n                    this.get('model.constructor.modelName') + '.' + this.get('field.ext'),\n                ),\n        );\n    }),\n    unit: Ember.computed(function () {\n        switch (this.get('field.type')) {\n            case 'minutes':\n                return 'min';\n            case 'price':\n                if (this.get('session.currentUser.company_info.country') === 'se') {\n                    return 'SEK';\n                } else {\n                    return '€';\n                }\n                break;\n            case 'big_price':\n                return '€';\n            default:\n                return this.get('field.options');\n        }\n    }),\n    valuePreview: Ember.computed('value', 'intl.locale', function () {\n        var dropdowns, ref, value;\n        value = this.Collector.format(\n            this.get('value'),\n            this.get('field'),\n            null,\n            this.get('model'),\n        );\n        if (this.get('formatter')) {\n            dropdowns = ['dropdown_values'];\n            if (\n                value === this.get('value') &&\n                this.get('field.type') !== 'embedded' &&\n                this.get('field.type') !== 'object'\n            ) {\n                value = this.get('formatter')(this.get('field.ext'), this.get('value'), this);\n            } else if (((ref = this.get('field.type')), indexOf.call(dropdowns, ref) >= 0)) {\n                value = this.get('formatter')(\n                    this.get('field.ext'),\n                    this.get('value'),\n                    this,\n                    value,\n                );\n            }\n        }\n        return value;\n    }),\n    popoverContents: '...',\n    prompt: Ember.computed('intl.locale', function () {\n        return this.get('intl').t('general.select_choose');\n    }),\n    update: Ember.observer('value', function () {\n        if (this.get('field.type') === 'databasearray' || this.get('field.type') === 'work_permit_attachment') {\n            return;\n        }\n        return Ember.run.next(() => {\n            var str;\n            // if record is already deleted do not try to set anything to it\n            if (this.get('model.currentState.stateName') === 'root.deleted.saved') {\n                return;\n            }\n            if (this.isDestroyed || this.isDestroying) {\n                return;\n            }\n            str = 'model.' + this.get('field.ext');\n\n            this.sendAction('FieldValueUpdated', this.get('field.ext'), this.get('value'));\n\n            return this.set(str, this.get('value'));\n        });\n    }),\n    static_content: Ember.computed('intl.locale', function () {\n        var j, l, len, len1, month_count, new_option, obj, option, options, real_options;\n        real_options = [];\n        if (this.get('field.type') === 'dropdown_country') {\n            real_options = this.get('countries');\n        } else if (this.get('field.type') === 'dropdown_userlevel') {\n            options = this.get('field.options');\n            if (Ember.typeOf(options) === 'string' && options.indexOf(',') !== -1) {\n                options = options.split(',');\n            }\n            for (j = 0, len = options.length; j < len; j++) {\n                option = options[j];\n                if (option) {\n                    if (typeof option !== 'object') {\n                        new_option = {};\n                        new_option.id = option;\n                        option = new_option;\n                    }\n                    //hide admin from own roles\n                    if (\n                        parseInt(option.id) === 5 &&\n                        parseInt(this.get('session.currentUser.userlevel')) > 9\n                    ) {\n                        continue;\n                    }\n                    if (parseInt(option.id) > 9) {\n                        option.value = option.id.substring(2);\n                        option.id = parseInt(option.id).toString(); // to remove all but numbers (in case of own userroles)\n                    } else {\n                        option.value = this.get('intl').t(\n                            this.get('model.constructor.modelName') +\n                                '.' +\n                                this.get('field.ext') +\n                                '.' +\n                                option.id,\n                        );\n                    }\n                    real_options.push(option);\n                }\n            }\n        } else if (this.get('field.type') === 'month_dropdown') {\n            month_count = 0;\n            while (month_count < 36) {\n                obj = {\n                    id: moment().subtract(month_count, 'months').format('YYYY-MM'),\n                    value: moment().subtract(month_count, 'months').format('MMMM YYYY'),\n                };\n                real_options.push(obj);\n                month_count++;\n            }\n        } else {\n            options = this.get('field.options');\n            if (options) {\n                for (l = 0, len1 = options.length; l < len1; l++) {\n                    option = options[l];\n                    if (option) {\n                        if (typeof option !== 'object') {\n                            new_option = {};\n                            new_option.id = option;\n                            option = new_option;\n                        }\n                        if (!('name' in this.get('field')) || option.value == null) {\n                            if (\n                                this.get('intl').exists(\n                                    this.get('model.constructor.modelName') +\n                                        '.' +\n                                        this.get('field.ext') +\n                                        '.' +\n                                        option.id,\n                                )\n                            ) {\n                                option.value = this.get('intl').t(\n                                    this.get('model.constructor.modelName') +\n                                        '.' +\n                                        this.get('field.ext') +\n                                        '.' +\n                                        option.id,\n                                );\n                            }\n                        }\n                        real_options.push(option);\n                    }\n                }\n            }\n        }\n        return real_options;\n    }),\n    useAjaxDropdown: Ember.computed.gte('db_options.length', 30),\n    layoutName: 'fields/field',\n    mainLayoutName: Ember.computed('content.name', 'model', 'edit', function () {\n        if (this.get('settings.preview')) {\n            return 'fields/preview';\n        } else if (this.get('settings.report') && !this.get('edit')) {\n            return 'fields/report';\n        }\n        return 'fields/fields-main';\n    }),\n    innerTemplateName: Ember.computed('content.name', 'edit', function () {\n        if (this.get('settings.preview') && !this.get('edit')) {\n            return 'fields/preview';\n        }\n        if (this.get('field.customization.template')) {\n            return this.get('field.customization.template');\n        }\n        switch (this.get('field.type')) {\n            case 'dropdown_values':\n            case 'dropdown_options':\n            case 'dropdown_userlevel':\n            case 'dropdown_country':\n            case 'dropdown_language':\n            case 'month_dropdown':\n                return 'fields/dropdown';\n            case 'database':\n                return 'fields/database';\n            case 'textbox':\n            case 'embedded':\n            case 'object':\n                return 'fields/textbox';\n            case 'number':\n                return 'fields/number';\n            case 'minutes':\n                return 'fields/number';\n            case 'hours':\n                return 'fields/hours';\n            case 'time_new':\n                return 'fields/time';\n            case 'textarea_varchar':\n                return 'fields/textarea';\n            case 'textarea':\n                return 'fields/textarea';\n            case 'price':\n                return 'fields/number';\n            case 'radio':\n                return 'fields/radio';\n            case 'big_price':\n                return 'fields/number';\n            case 'decimal':\n                return 'fields/number';\n            case 'checkbox':\n                return 'fields/checkbox';\n            case 'date':\n                return 'fields/date';\n            case 'checkboxgroup':\n                return 'fields/checkboxgroup';\n            case 'hdfile':\n                return 'fields/file';\n            case 'password':\n                return 'fields/password';\n            case 'username':\n                return 'fields/username';\n            case 'timeclean_imei':\n                return 'fields/array';\n            case 'gpslocation':\n                return 'fields/gpslocation';\n            case 'gpslocationmap':\n                return 'fields/gpslocationmap';\n            case 'multiselect':\n                return 'fields/multiselect';\n            case 'signature':\n                return 'fields/signature';\n            case 'label':\n                return 'fields/label';\n            case 'weather':\n                return 'fields/weather';\n            case 'fileupload':\n            case 'row_linker':\n            case 'rowlink':\n            case 'status':\n                return 'fields/notsupported';\n            case 'databasearray':\n                return 'fields/databasearray';\n            case 'timerlink':\n                return 'fields/timerlink';\n            case 'work_permit_attachment':\n                return 'fields/work_permit_attachment';\n        }\n        return 'fields/notfound';\n    }),\n    img_src: Ember.computed(function () {\n        if (this.get('value.url')) {\n            return collector.api_url() + '/' + this.get('value.url');\n        }\n    }),\n    userlevelInfo: Ember.computed(function () {\n        var linkToCommunity, linkToCommunityMovenium, linkToCommunityOtta;\n        if (this.intl.primaryLocale !== 'fi') {\n            return null;\n        }\n        linkToCommunityMovenium =\n            'https://ohjeet.visma.fi/articles/#!visma-movenium/k-ytt-j-roolit';\n        linkToCommunityOtta = this.get('intl').t('click.help_link.to.community_otta');\n        const brand = get(this, 'gui').getBrand();\n\n        // eslint-disable-next-line no-irregular-whitespace\n        if (brand === 'otta') {\n            linkToCommunity = linkToCommunityOtta;\n        } else {\n            linkToCommunity = linkToCommunityMovenium;\n        }\n        return htmlSafe(\n            this.intl.t('user.userlevel.info', {\n                link:\n                    \"<a href='\" +\n                    linkToCommunity +\n                    \"'>\" +\n                    this.intl.t('user.userlevel.info.link') +\n                    '<span class=\"move move-external-link\"></span></a>',\n            }),\n        );\n    }),\n    mandatory: Ember.computed('_mandatory', 'conditional', function () {\n        var errors, fields, index, mandatory, ref, ref1;\n        if (this.get('_mandatory')) {\n            return this.get('_mandatory');\n        }\n        if (!this.get('model.isDeleted')) {\n            fields = this.get('field.features.mandatory');\n            if (!fields) {\n                return;\n            }\n            if (typeof fields === 'boolean') {\n                return fields;\n            }\n            mandatory = validatorClass._is_visible(\n                this.get('model'),\n                this.get('field.features.mandatory'),\n            );\n            errors = this.errors;\n            if (mandatory && (!this.get('value') || this.get('value') === null)) {\n                if (errors) {\n                    if (((ref = this.get('field.ext')), indexOf.call(errors, ref) < 0)) {\n                        this.errors.push(this.field.ext);\n                    }\n                } else {\n                    this.errors = [this.field.ext];\n                }\n            } else {\n                Ember.run.once(this, function () {\n                    return this.set('error', null);\n                });\n                if (errors) {\n                    if (((ref1 = this.get('field.ext')), indexOf.call(errors, ref1) >= 0)) {\n                        index = errors.indexOf(this.field.ext);\n                        if (index > -1) {\n                            errors.splice(index, 1);\n                        }\n                        this.set('errors', errors);\n                    }\n                }\n            }\n            return mandatory;\n        }\n    }),\n    hide: Ember.computed('hide_conditional', 'innerTemplateName', function () {\n        var field, mandatory, setting;\n        if (this.get('innerTemplateName') === 'fields/notsupported') {\n            return true;\n        }\n        if (this.get('innerTemplateName') === 'fields/notfound') {\n            return true;\n        }\n        if (!this.get('model.isDeleted')) {\n            field = this.get('field');\n            if (this.get('field.customization.hide')) {\n                return true;\n            } else if (this.get('field.customization.hide') === false) {\n                return false;\n            }\n            if (this.get('field.features.hidden') && typeof field.features.hidden !== 'object') {\n                return true;\n            }\n            if (this.get('field.features.hide_tt4') && typeof setting !== 'object') {\n                return true;\n            }\n            setting = get(field, 'features.hide');\n            mandatory = this.get('mandatory'); // used only to trigger mandatory-computed (doesn't trigger automatically if field is hidden)\n            if (!setting) {\n                return;\n            }\n            if (typeof setting === 'boolean') {\n                return setting;\n            }\n            if (setting && typeof setting === 'object' && get(setting, 'condition')) {\n                if (get(setting, 'condition') === '$editing' && !this.get('model.isNew')) {\n                    return true;\n                }\n                if (get(setting, 'condition') === \"'!$editing'\" && this.get('model.isNew')) {\n                    return true;\n                }\n            }\n            return !validatorClass._is_visible(this.get('model'), setting);\n        }\n    }),\n    _templateChanged: Ember.observer('layoutName', function () {\n        return this.rerender();\n    }),\n    focusOut: function (event) {\n        this.send('validate');\n        if (this.get('edit')) {\n            return this.send('save');\n        }\n    },\n    focusIn: function (event) {\n        return this.set('error', false);\n    },\n    show: Ember.computed(function () {\n        return this.get('settings.show');\n    }),\n    observeError: Em.observer('error', function () {\n        var errors, field, ref, ref1;\n        errors = this.get('errors');\n        if (this.get('error')) {\n            this.set('ok', false);\n            this.set('wait', false);\n            if (this.get('errors')) {\n                if (((ref = this.get('field.ext')), indexOf.call(this.get('errors'), ref) < 0)) {\n                    return this.errors.push(this.field.ext);\n                }\n            } else {\n                return Ember.set(this, 'errors', [this.get('field.ext')]);\n            }\n        } else {\n            if (this.get('settings.setOKtoAllFields')) {\n                this.set('ok', true);\n            }\n            if (errors) {\n                if (((ref1 = this.get('field.ext')), indexOf.call(errors, ref1) >= 0)) {\n                    field = this.get('field.ext');\n                    errors.removeObject(field);\n                    return Ember.set(this, 'errors', errors);\n                }\n            }\n        }\n    }),\n    observeErrors: Ember.observer('errors', 'save', function () {\n        var ref;\n        if (this.get('errors')) {\n            if (\n                ((ref = this.get('field.ext')), indexOf.call(this.get('errors'), ref) >= 0) &&\n                this.get('save')\n            ) {\n                return this.send('validate');\n            }\n        }\n    }),\n    fieldRoute: Em.computed('field', 'model', function () {\n        var ref, tmp_value, value;\n        value = this.get('value');\n        if (!value) {\n            tmp_value = null;\n        } else if (\n            !(\n                (ref = Ember.typeOf(value)) === 'number' ||\n                ref === 'string' ||\n                ref === 'object' ||\n                ref === 'array'\n            )\n        ) {\n            tmp_value = value.get('id');\n        } else {\n            tmp_value = value;\n        }\n        return {\n            form: this.get('model.constructor.modelName'),\n            type: this.get('field.type'),\n            value: tmp_value,\n            features: this.get('field.features'),\n            name: this.get('field.ext'),\n            options: this.get('field.options'),\n            filterOptions: this.get('field.filterOptions'),\n        };\n    }),\n    map_visible: false,\n    check_username: function () {\n        var data, promise;\n        data = {\n            validate: true,\n        };\n        data['email'] = this.get('value');\n        promise = this.Collector.ajax({\n            url: 'createService',\n            method: 'post',\n            data: data,\n        });\n        promise.then((back) => {\n            this.set('ok', true);\n            return this.set('wait', false);\n        });\n        return promise.catch((back) => {\n            this.set('wait', false);\n\n            // The back variable only contains a JS error object, so we must determine\n            // the error message displayed based on the message. These messages are returned\n            // from a vendor script and as such are subject to change, so this isn't optimal.\n            // The identified fail case messages here are:\n            // 'Request was formatted incorrectly.' - Invalid characters in username\n            // 'The ajax operation failed due to a conflict' - Username already exists\n\n            // Use this as the default so a value always exists, then override it if necessary.\n            var error_message = 'field.error.username_in_use';\n\n            if ((back?.message ?? '').includes('Request was formatted incorrectly')) {\n                error_message = 'field.error.username_characters';\n            }\n\n            return this.set('error', this.get('intl').t(error_message));\n        });\n    },\n    actions: {\n        dateInputClicked: function (value) {\n            if (this.get('field.features.onclick_default_value') && (!value || value === void 0)) {\n                return this.set('value', this.get('field.features.onclick_default_value'));\n            }\n        },\n        show_map: function () {\n            var map_visible;\n            map_visible = this.get('map_visible');\n            if (map_visible === true) {\n                return this.set('map_visible', false);\n            } else {\n                return this.set('map_visible', true);\n            }\n        },\n        updatePopoverContents: function () {\n            var c, form, ids, promise;\n            // this is now called only by multiselect field\n            c = this.get('Collector');\n            form = this.get('field.options.form');\n            ids = this.get('value');\n            promise = c.getRecordArray(form, ids, true);\n            return promise.then((arr) => {\n                var names;\n                names = Em.A(arr).mapBy('name');\n                return this.set('popoverContents', names.join('<br>'));\n            });\n        },\n        removeFile: function () {\n            this.set('img_src', null);\n            return this.set('value', 'remove');\n        },\n        validate: function () {\n            var arr,\n                check_id,\n                e,\n                isJson,\n                item,\n                item_arr,\n                j,\n                l,\n                len,\n                len1,\n                len2,\n                m,\n                minutes,\n                nationality,\n                ref,\n                ref1,\n                ref2,\n                ref3,\n                self,\n                split,\n                validator,\n                validator_key_arr,\n                value;\n            if (this.get('errors')) {\n                if (((ref = this.get('field.ext')), indexOf.call(this.get('errors'), ref) >= 0)) {\n                    this.set('error', true);\n                }\n            }\n            //@set('errors', Em.A [] )\n            if (this.get('field.features.validate_check')) {\n                validator = {};\n                if (Array.isArray(this.get('field.features.validate_check'))) {\n                    ref1 = this.get('field.features.validate_check');\n                    for (j = 0, len = ref1.length; j < len; j++) {\n                        item = ref1[j];\n                        if (item.substring(0, 9) === 'exact_len') {\n                            item_arr = item.split(':');\n                            validator.length = parseInt(item_arr[1], 10);\n                        }\n                        if (item.substring(0, 9) === 'minLength') {\n                            item_arr = item.split(':');\n                            validator.minLength = parseInt(item_arr[1], 10);\n                        }\n                        if (item.substring(0, 9) === 'maxLength') {\n                            item_arr = item.split(':');\n                            validator.maxLength = parseInt(item_arr[1], 10);\n                        }\n                        if (item === 'number') {\n                            validator.number = true;\n                        }\n                        if (item === 'email') {\n                            validator.email = true;\n                        }\n                        if (item === 'birthdate') {\n                            validator.birthdate = true;\n                        }\n                        if (item.substring(0, 6) === 'remote') {\n                            item_arr = item.split(':');\n                            //SUP-1389 if TT3 has remote:check_rfid_tag-setting, set field as unique\n                            if (item_arr[1] === 'check_rfid_tag') {\n                                this.set('field.features.unique', true);\n                            }\n                            validator.remote = item_arr[1];\n                        }\n                        if (item.substring(0, 5) === 'match') {\n                            item_arr = item.split(':');\n                            validator.match = item_arr[1];\n                        }\n                        if (item.substring(0, 10) === 'date_after') {\n                            item_arr = item.split(':');\n                            validator.date_after = item_arr[1];\n                        }\n                        if (item === 'digits') {\n                            validator.digits = true;\n                        }\n                        if (item === 'phoneNumber') {\n                            validator.phoneNumber = true;\n                        }\n                        if (item === 'positiveNumber') {\n                            validator.positive = true;\n                        }\n                        if (item === 'date_not_past') {\n                            validator.date_not_past = true;\n                        }\n                        if (item === 'password') {\n                            validator.password = true;\n                        }\n                    }\n                } else {\n                    validator[this.get('field.features.validate_check')] = true;\n                }\n            }\n            this.set('error', null);\n            if (this.get('mandatory')) {\n                if (!Ember.isPresent(this.get('value'))) {\n                    this.set('error', this.get('intl').t('field.error.mandatory'));\n                } else if (\n                    (this.get('value') instanceof Ember.ObjectProxy ||\n                        this.get('value') instanceof Ember.ArrayProxy) &&\n                    Ember.isEmpty(this.get('value.content'))\n                ) {\n                    this.set('error', this.get('intl').t('field.error.mandatory'));\n                }\n            }\n            if (\n                this.get('field.minValue') !== void 0 &&\n                this.get('value') < this.get('field.minValue')\n            ) {\n                this.set('error', this.get('intl').t('field.error.number_out_of_bounds'));\n            }\n            if (validator && validator.length) {\n                isJson = false;\n                value = this.get('value');\n                try {\n                    JSON.parse(value);\n                    isJson = true;\n                } catch (error) {\n                    e = error;\n                    isJson = false;\n                }\n                if (isJson && Array.isArray(JSON.parse(value))) {\n                    ref2 = JSON.parse(value);\n                    for (l = 0, len1 = ref2.length; l < len1; l++) {\n                        item = ref2[l];\n                        if (item.toString().trim().length !== validator.length) {\n                            this.set(\n                                'error',\n                                this.get('intl').t('field.error.length', {\n                                    length: validator.length,\n                                }),\n                            );\n                        }\n                    }\n                } else if (value && value.trim().length !== validator.length) {\n                    this.set(\n                        'error',\n                        this.get('intl').t('field.error.length', {\n                            length: validator.length,\n                        }),\n                    );\n                }\n            } else if (validator && Object.keys(validator)[0].indexOf(':') !== -1) {\n                validator_key_arr = Object.keys(validator)[0].split(':');\n                validator = {};\n                validator[validator_key_arr[0]] = parseInt(validator_key_arr[1]);\n            }\n            if (\n                validator &&\n                validator.maxLength &&\n                this.get('value.length') > validator.maxLength\n            ) {\n                this.set(\n                    'error',\n                    this.get('intl').t('field.error.maxLength', {\n                        length: validator.maxLength,\n                    }),\n                );\n            }\n            if (\n                validator &&\n                validator.minLength &&\n                this.get('value.length') < validator.minLength\n            ) {\n                this.set(\n                    'error',\n                    this.get('intl').t('field.error.minLength', {\n                        length: validator.minLength,\n                    }),\n                );\n            }\n            if (validator && validator.number && isNaN(this.get('value'))) {\n                this.set('error', this.get('intl').t('field.error.number'));\n            }\n            if (\n                validator &&\n                validator.email &&\n                this.get('value') &&\n                !/^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i.test(\n                    this.get('value'),\n                )\n            ) {\n                this.set('error', this.get('intl').t('field.error.email'));\n            }\n            if (\n                validator &&\n                validator.birthdate &&\n                moment(this.get('value')).isAfter(moment().subtract(10, 'years'))\n            ) {\n                this.set('error', this.get('intl').t('field.error.birthdate'));\n            }\n            if (validator && validator.match) {\n                if (this.get('model.' + validator.match) !== this.get('value')) {\n                    this.set('error', this.get('intl').t('field.error.no_match'));\n                }\n            }\n            if (validator && validator.digits) {\n                if (Array.isArray(JSON.parse(this.get('value')))) {\n                    ref3 = JSON.parse(this.get('value'));\n                    for (m = 0, len2 = ref3.length; m < len2; m++) {\n                        item = ref3[m];\n                        if (Number(item) !== parseInt(item, 10)) {\n                            this.set('error', this.get('intl').t('field.error.digits'));\n                        }\n                    }\n                } else if (Number(this.get('value')) !== parseInt(this.get('value'), 10)) {\n                    this.set('error', this.get('intl').t('field.error.digits'));\n                }\n            }\n            if (validator && validator.positiveNumber && this.get('value') < 0) {\n                this.set('error', this.get('intl').t('field.error.negative'));\n            }\n            if (\n                validator &&\n                validator.date_not_past &&\n                moment().isAfter(this.get('value'), 'day')\n            ) {\n                this.set('error', this.get('intl').t('field.error.date_not_past'));\n            }\n            if (\n                validator &&\n                validator.password &&\n                this.get('value.length') < 8 &&\n                this.get('value.length') !== 6 &&\n                this.get('value.length') !== 0\n            ) {\n                this.set('error', this.get('intl').t('field.error.password'));\n            }\n            if (validator && validator.date_after) {\n                if (this.get('model.' + validator.date_after) > this.get('value')) {\n                    this.set('error', this.get('intl').t('field.error.date_after'));\n                }\n            }\n            if (\n                this.get('field.type') === 'username' &&\n                this.get('value') &&\n                !/^[a-z\\d_.@-]+$/i.test(this.get('value'))\n            ) {\n                this.set('error', this.get('intl').t('field.error.username_characters'));\n            }\n            // SKV number check..\n            if (this.get('value') && validator && 'skv_number' in validator) {\n                if (!/^([a-z\\d]{13})$/i.test(this.get('value'))) {\n                    this.set('error', this.get('intl').t('field.error.skv'));\n                }\n                this.set('value', this.get('value').toUpperCase());\n            }\n            // Personal identity number check..\n            if (\n                this.get('value') &&\n                this.get('field.features.validate_check') &&\n                this.get('model.personid')\n            ) {\n                check_id = this.get('field.features.validate_check');\n                if (\n                    typeof check_id === 'string' &&\n                    check_id.substring(0, 4) === 'PIN:' &&\n                    this.get('model.homecountry')\n                ) {\n                    nationality = this.get('model.homecountry').toUpperCase();\n                    if (nationality === 'SE') {\n                        if (this.get('value').length !== 13 && this.get('value').length !== 11) {\n                            this.set(\n                                'error',\n                                this.get('intl').t('field.error.personal_identity_number'),\n                            );\n                        }\n                        if (\n                            !/^(([\\d]{2})|([1-2][0|9][\\d]{2}))(0[\\d]|1[012])(0[\\d]|[1-9]\\d)-[\\d]{3}[A-Z\\d]$/i.test(\n                                this.get('value'),\n                            )\n                        ) {\n                            this.set(\n                                'error',\n                                this.get('intl').t('field.error.personal_identity_number'),\n                            );\n                        }\n                    } else if (nationality === 'FI') {\n                        if (\n                            !/^((0[\\d]|[12]\\d|3[01])(0?[\\d]|1[012])[\\d]{2}-[\\d]{3}[a-z\\d])$/i.test(\n                                this.get('value'),\n                            )\n                        ) {\n                            this.set(\n                                'error',\n                                this.get('intl').t('field.error.personal_identity_number'),\n                            );\n                        }\n                    }\n                    this.set('value', this.get('value').toUpperCase());\n                }\n            }\n            // ID06 number check..\n            if (this.get('value') && validator && 'id06_number' in validator) {\n                if (!/^[a-z]{2}-[\\d]{2}(0?[\\d]|1[012])-[\\d]{6}$/i.test(this.get('value'))) {\n                    this.set('error', this.get('intl').t('field.error.id06_number'));\n                }\n                this.set('value', this.get('value').toUpperCase());\n            }\n            // Project number check..\n            if (this.get('value') && validator && 'project_number' in validator) {\n                if (isFinite(this.get('value'))) {\n                    if (parseInt(this.get('value'), 10) === 0) {\n                        this.set('error', this.get('intl').t('field.error.project_number'));\n                    }\n                }\n            }\n            //phone number checking\n            if (this.get('value') && this.get('field.ext') === 'phone') {\n                if (\n                    !/^\\+(9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[^0]\\d{1,14}$/i.test(\n                        this.get('value'),\n                    )\n                ) {\n                    this.set('error', this.get('intl').t('field.error.phone_number'));\n                }\n            }\n            if (validator && validator.phoneNumber && this.get('value')) {\n                if (\n                    !/^\\+(9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[^0]\\d{1,14}$/i.test(\n                        this.get('value'),\n                    )\n                ) {\n                    this.set('error', this.get('intl').t('field.error.phone_number'));\n                }\n            }\n            if (!this.get('error') && this.get('field.features.unique') && this.get('value')) {\n                this.set('wait', true);\n                this.set('ok', false);\n                self = this;\n                arr = {};\n                arr[this.get('field.ext')] = this.get('value');\n                this.Collector.get('store')\n                    .query(this.get('model.constructor.modelName'), arr)\n                    .then(function (rows) {\n                        var fieldname;\n                        fieldname = Ember.String.isHTMLSafe(self.get('name'))\n                            ? self.get('name').string\n                            : self.get('name');\n                        if (\n                            rows.get('length') > 0 &&\n                            rows.get('firstObject.id') !== self.get('model.id')\n                        ) {\n                            self.set(\n                                'error',\n                                self.get('intl').t('field.error.unique', {\n                                    field: fieldname.toLowerCase(),\n                                    value: self.get('value'),\n                                }),\n                            );\n                        } else {\n                            self.set('ok', true);\n                        }\n                        return self.set('wait', false);\n                    });\n            }\n            // this is a special validation\n            if (!this.get('error') && validator && validator.remote === 'username') {\n                this.set('value', this.get('model.username'));\n                if (!this.get('value')) {\n                    this.set('error', this.get('intl').t('field.error.mandatory'));\n                } else {\n                    this.set('ok', false);\n                    Em.run.debounce(this, this.check_username, 700);\n                }\n            }\n            if (validator && validator.forced_pause) {\n                if (this.get('model.pause')) {\n                    // check for start-end or work_hours\n                    if (this.get('model.endtime')) {\n                        minutes = moment(\n                            this.get('model.date') + ' ' + this.get('model.endtime'),\n                        ).diff(\n                            moment(this.get('model.date') + ' ' + this.get('model.starttime')),\n                            'minutes',\n                        );\n                        if (minutes < 0) {\n                            minutes += 1440;\n                        }\n                    } else {\n                        split = this.get('model.work_hours').split(':');\n                        minutes = parseInt(split[0], 10) * 60 + parseInt(split[1], 10);\n                    }\n                    if (minutes > 360 && this.get('model.pause') < 30) {\n                        this.set('error', this.get('intl').t('validation.error.forced_pause'));\n                    }\n                }\n            }\n            //return resolve()\n            return this.storeDefaultValue();\n        },\n        check: function (key, way) {\n            if (!way) {\n                if (\n                    this.get('model.' + this.get('field.ext')) === null ||\n                    this.get('model.' + this.get('field.ext')) == null\n                ) {\n                    this.set('model.' + this.get('field.ext'), Em.A([key]));\n                } else {\n                    this.get('model.' + this.get('field.ext')).pushObject(key);\n                }\n            } else {\n                this.get('model.' + this.get('field.ext')).removeObject(key);\n            }\n            return this.set('checkboxes', this.getCheckboxes());\n        },\n        edit: function () {\n            this.set('saving', false);\n            if (this.get('field.features.hide')) {\n                return;\n            }\n            switch (this.get('field.type')) {\n                case 'fileupload':\n                case 'username':\n                case 'row_linker':\n                case 'rowlink':\n                case 'status':\n                case 'gpslocation':\n                case 'signature':\n                    break;\n                default:\n                    return this.toggleProperty('edit');\n            }\n        },\n        cancel: function () {\n            this.get('model').rollbackAttributes();\n            return this.set('edit', false);\n        },\n        save: function () {\n            var model, promise, self;\n            self = this;\n            this.send('validate');\n            if (!(this.get('errors.length') > 0)) {\n                model = this.get('model');\n                if (model.get('hasDirtyAttributes')) {\n                    promise = model.save();\n                    return promise.then(function () {\n                        return self.set('edit', false);\n                    });\n                } else {\n                    return self.set('edit', false);\n                }\n            }\n        },\n        send: function (type, param) {\n            return this.sendAction('generalAddAction', type, param);\n        },\n        bubbleChange: function (value, fieldName) {\n            return this.set('model.' + fieldName, value);\n        },\n        changeValue: function (value, fieldName) {\n            this.set('value', value);\n            if (!value) {\n                this.set('model.' + this.get('field.ext'), null);\n                return this.send('validate');\n            } else {\n                return this.Collector.get('store')\n                    .findRecord(this.get('field.options.form'), value)\n                    .then((row) => {\n                        this.set('model.' + this.get('field.ext'), row);\n                        this.set('value', row);\n                        return this.send('validate');\n                    });\n            }\n        },\n        customChangeValue: function (value, fieldName) {\n            if (this.get('model.isDeleted')) {\n                return;\n            }\n            this.set('model.' + this.get('field.ext'), value);\n            this.set('value', value);\n            Ember.run.next(this, function () {\n                return this.send('validate');\n            });\n            if (this.get('field.type') === 'database' && !Ember.isPresent(value)) {\n                this.get('localStorageWrapper').removeUserSetting(this.get('field.options.form'));\n            }\n            return this.sendAction('generalAddAction', value, fieldName);\n        },\n        changeValueByDOMEvent: function (event) {\n            var value;\n            value = event.target.value;\n            this.set('model.' + this.get('field.ext'), value);\n            this.set('value', value);\n            this.send('validate');\n            return this.sendAction('generalAddAction', value, this.get('field.ext'));\n        },\n        //pass from component to applicationcontroller\n        showSignModal: function (name, model, variable) {\n            return this.sendAction('action', name, model, variable);\n        },\n    },\n    becomeFocused: Ember.on('didRender', function () {\n        if (!this.get('edit')) {\n            return;\n        }\n        return $('select,input', this.element).focus();\n    }),\n    observeUsername: Em.on(\n        'init',\n        Em.observer('model.username', function () {\n            if (this.get('field.type') === 'username' && this.get('model.username')) {\n                return this.send('validate');\n            }\n        }),\n    ),\n    observeHomecountry: Ember.observer('model.homecountry', function () {\n        var check_id;\n        if (this.get('field.features.validate_check') && this.get('model.personid')) {\n            check_id = this.get('field.features.validate_check');\n            if (typeof check_id === 'string' && check_id.substring(0, 4) === 'PIN:') {\n                return this.send('validate');\n            }\n        }\n    }),\n    show_generated_password: true,\n    password_observer: Em.observer('model.password', function () {\n        if (this.get('model.password')) {\n            return this.set('show_generated_password', false);\n        }\n    }),\n    observeValue: Ember.observer('value', function () {\n        var model;\n        model = this.get('model');\n        if (model.get('isDeleted') || model.send == null) {\n            return;\n        }\n        return model.send('becomeDirty');\n    }),\n    saving: false,\n    checkboxes: Ember.computed('field.type', function () {\n        var checkboxes;\n        checkboxes = Em.A([]);\n        if (this.get('field.type') === 'checkboxgroup') {\n            checkboxes = this.getCheckboxes();\n        }\n        return checkboxes;\n    }),\n    getCheckboxes: function () {\n        var checked, key, options_arr, ref, text, value;\n        options_arr = Ember.A([]);\n        ref = this.get('field.options');\n        for (key in ref) {\n            value = ref[key];\n            checked = false;\n            if (Array.isArray(this.get('model.' + this.get('field.ext')))) {\n                if (indexOf.call(this.get('model.' + this.get('field.ext')), key) >= 0) {\n                    checked = true;\n                }\n            }\n            text =\n                value.substring(0, 1) === '$'\n                    ? this.get('intl').t(\n                          this.get('model.constructor.modelName') +\n                              's.' +\n                              this.get('field.ext') +\n                              '.' +\n                              key,\n                      )\n                    : value;\n            if (text === value && this.get('intl').exists(value)) {\n                text = this.get('intl').t(value);\n            }\n            options_arr.pushObject(\n                Ember.Object.create({\n                    checked: checked,\n                    key: key,\n                    text: text,\n                }),\n            );\n        }\n        return options_arr;\n    },\n    disabled: Em.computed('field', 'model', function () {\n        var condition, j, k, len, ref, ref1, set, v;\n        if (\n            get(this, 'model') &&\n            !get(this, 'model.isNew') &&\n            get(this, 'field.features.lock_value')\n        ) {\n            ref = get(this, 'field.features.lock_value');\n            for (j = 0, len = ref.length; j < len; j++) {\n                set = ref[j];\n                for (k in set) {\n                    v = set[k];\n                    if (((ref1 = get(this, 'model.' + k)), indexOf.call(v.split(','), ref1) >= 0)) {\n                        return true;\n                    }\n                }\n            }\n        }\n        if (typeof this.get('field.features.disabled') === 'object') {\n            condition = this.get('field.features.disabled.condition');\n            if (\n                condition &&\n                condition.indexOf('$editing') >= 0 &&\n                this.get('field.features.disabled.value') === true &&\n                this.get('settings.edit') === true &&\n                (condition.indexOf('$wap') === -1 || this.get('field.ext') === 'starttime')\n            ) {\n                return true;\n            } else if (\n                this.get('field.features.disabled.value') === true &&\n                !this.get('field.features.disabled.condition')\n            ) {\n                return true;\n            }\n        } else if (this.get('field.features.disabled')) {\n            return true;\n        }\n        return false;\n    }),\n    dropdown_date: Ember.computed(function () {\n        var arr, date, date_interval, end, i, j, ref, ref1, splitted, start;\n        date_interval = this.get('field.features.date_interval');\n        if (!date_interval) {\n            return null;\n        }\n        //only when adding\n        if (this.get('model.isNew')) {\n            this.set('value', moment().format('YYYY-MM-DD'));\n        }\n        if (date_interval === 'locked') {\n            return 'locked';\n        }\n        arr = Em.A();\n        splitted = ('' + date_interval).split(',');\n        if (splitted.length > 1) {\n            start = splitted[1] * -1;\n            end = splitted[0];\n        } else {\n            start = 0;\n            end = date_interval;\n        }\n        for (\n            i = j = ref = start, ref1 = end;\n            ref <= ref1 ? j < ref1 : j > ref1;\n            i = ref <= ref1 ? ++j : --j\n        ) {\n            date = moment().subtract(i, 'days');\n            arr.push(\n                Ember.Object.create({\n                    id: date.format('YYYY-MM-DD'),\n                    name: date.format('dddd L'),\n                }),\n            );\n        }\n        return arr;\n    }),\n    showPassword: Ember.computed('value', function () {\n        if (this.get('show_generated_password') && this.get('value') !== 'secured') {\n            return true;\n        } else {\n            return this.get('value') === 'secured';\n        }\n    }),\n    countries: [\n        {\n            id: 'fi',\n            value: 'Finland',\n        },\n        {\n            id: 'se',\n            value: 'Sweden',\n        },\n        {\n            id: 'ee',\n            value: 'Estonia',\n        },\n        {\n            id: 'pl',\n            value: 'Poland',\n        },\n        {\n            id: 'lt',\n            value: 'Lithuania',\n        },\n        {\n            id: 'lv',\n            value: 'Latvia',\n        },\n        {\n            id: 'ru',\n            value: 'Russian Federation',\n        },\n        {\n            id: 'af',\n            value: 'Afghanistan',\n        },\n        {\n            id: 'ax',\n            value: 'Aland Islands',\n        },\n        {\n            id: 'al',\n            value: 'Albania',\n        },\n        {\n            id: 'dz',\n            value: 'Algeria',\n        },\n        {\n            id: 'as',\n            value: 'American Samoa',\n        },\n        {\n            id: 'ad',\n            value: 'Andorra',\n        },\n        {\n            id: 'ao',\n            value: 'Angola',\n        },\n        {\n            id: 'ai',\n            value: 'Anguilla',\n        },\n        {\n            id: 'aq',\n            value: 'Antarctica',\n        },\n        {\n            id: 'ag',\n            value: 'Antigua And Barbuda',\n        },\n        {\n            id: 'ar',\n            value: 'Argentina',\n        },\n        {\n            id: 'am',\n            value: 'Armenia',\n        },\n        {\n            id: 'aw',\n            value: 'Aruba',\n        },\n        {\n            id: 'au',\n            value: 'Australia',\n        },\n        {\n            id: 'at',\n            value: 'Austria',\n        },\n        {\n            id: 'az',\n            value: 'Azerbaijan',\n        },\n        {\n            id: 'bs',\n            value: 'Bahamas',\n        },\n        {\n            id: 'bh',\n            value: 'Bahrain',\n        },\n        {\n            id: 'bd',\n            value: 'Bangladesh',\n        },\n        {\n            id: 'bb',\n            value: 'Barbados',\n        },\n        {\n            id: 'by',\n            value: 'Belarus',\n        },\n        {\n            id: 'be',\n            value: 'Belgium',\n        },\n        {\n            id: 'bz',\n            value: 'Belize',\n        },\n        {\n            id: 'bj',\n            value: 'Benin',\n        },\n        {\n            id: 'bm',\n            value: 'Bermuda',\n        },\n        {\n            id: 'bt',\n            value: 'Bhutan',\n        },\n        {\n            id: 'bo',\n            value: 'Bolivia, Plurinational State Of',\n        },\n        {\n            id: 'bq',\n            value: 'Bonaire, Sint Eustatius And Saba',\n        },\n        {\n            id: 'ba',\n            value: 'Bosnia And Herzegovina',\n        },\n        {\n            id: 'bw',\n            value: 'Botswana',\n        },\n        {\n            id: 'bv',\n            value: 'Bouvet Island',\n        },\n        {\n            id: 'br',\n            value: 'Brazil',\n        },\n        {\n            id: 'io',\n            value: 'British Indian Ocean Territory',\n        },\n        {\n            id: 'bn',\n            value: 'Brunei Darussalam',\n        },\n        {\n            id: 'bg',\n            value: 'Bulgaria',\n        },\n        {\n            id: 'bf',\n            value: 'Burkina Faso',\n        },\n        {\n            id: 'bi',\n            value: 'Burundi',\n        },\n        {\n            id: 'kh',\n            value: 'Cambodia',\n        },\n        {\n            id: 'cm',\n            value: 'Cameroon',\n        },\n        {\n            id: 'ca',\n            value: 'Canada',\n        },\n        {\n            id: 'cv',\n            value: 'Cape Verde',\n        },\n        {\n            id: 'ky',\n            value: 'Cayman Islands',\n        },\n        {\n            id: 'cf',\n            value: 'Central African Republic',\n        },\n        {\n            id: 'td',\n            value: 'Chad',\n        },\n        {\n            id: 'cl',\n            value: 'Chile',\n        },\n        {\n            id: 'cn',\n            value: 'China',\n        },\n        {\n            id: 'cx',\n            value: 'Christmas Island',\n        },\n        {\n            id: 'cc',\n            value: 'Cocos (keeling) Islands',\n        },\n        {\n            id: 'co',\n            value: 'Colombia',\n        },\n        {\n            id: 'km',\n            value: 'Comoros',\n        },\n        {\n            id: 'cg',\n            value: 'Congo',\n        },\n        {\n            id: 'cd',\n            value: 'Congo, The Democratic Republic Of The',\n        },\n        {\n            id: 'ck',\n            value: 'Cook Islands',\n        },\n        {\n            id: 'cr',\n            value: 'Costa Rica',\n        },\n        {\n            id: 'ci',\n            value: \"Cote D'ivoire\",\n        },\n        {\n            id: 'hr',\n            value: 'Croatia',\n        },\n        {\n            id: 'cu',\n            value: 'Cuba',\n        },\n        {\n            id: 'cw',\n            value: 'Curacao',\n        },\n        {\n            id: 'cy',\n            value: 'Cyprus',\n        },\n        {\n            id: 'cz',\n            value: 'Czech Republic',\n        },\n        {\n            id: 'dk',\n            value: 'Denmark',\n        },\n        {\n            id: 'dj',\n            value: 'Djibouti',\n        },\n        {\n            id: 'dm',\n            value: 'Dominica',\n        },\n        {\n            id: 'do',\n            value: 'Dominican Republic',\n        },\n        {\n            id: 'ec',\n            value: 'Ecuador',\n        },\n        {\n            id: 'eg',\n            value: 'Egypt',\n        },\n        {\n            id: 'sv',\n            value: 'El Salvador',\n        },\n        {\n            id: 'gq',\n            value: 'Equatorial Guinea',\n        },\n        {\n            id: 'er',\n            value: 'Eritrea',\n        },\n        {\n            // Moved to top\n            // {id: \"ee\", value: \"Estonia\"}\n            id: 'et',\n            value: 'Ethiopia',\n        },\n        {\n            id: 'fk',\n            value: 'Falkland Islands (malvinas)',\n        },\n        {\n            id: 'fo',\n            value: 'Faroe Islands',\n        },\n        {\n            id: 'fj',\n            value: 'Fiji',\n        },\n        {\n            id: 'fr',\n            value: 'France',\n        },\n        {\n            id: 'gf',\n            value: 'French Guiana',\n        },\n        {\n            id: 'pf',\n            value: 'French Polynesia',\n        },\n        {\n            id: 'tf',\n            value: 'French Southern Territories',\n        },\n        {\n            id: 'ga',\n            value: 'Gabon',\n        },\n        {\n            id: 'gm',\n            value: 'Gambia',\n        },\n        {\n            id: 'ge',\n            value: 'Georgia',\n        },\n        {\n            id: 'de',\n            value: 'Germany',\n        },\n        {\n            id: 'gh',\n            value: 'Ghana',\n        },\n        {\n            id: 'gi',\n            value: 'Gibraltar',\n        },\n        {\n            id: 'gr',\n            value: 'Greece',\n        },\n        {\n            id: 'gl',\n            value: 'Greenland',\n        },\n        {\n            id: 'gd',\n            value: 'Grenada',\n        },\n        {\n            id: 'gp',\n            value: 'Guadeloupe',\n        },\n        {\n            id: 'gu',\n            value: 'Guam',\n        },\n        {\n            id: 'gt',\n            value: 'Guatemala',\n        },\n        {\n            id: 'gg',\n            value: 'Guernsey',\n        },\n        {\n            id: 'gn',\n            value: 'Guinea',\n        },\n        {\n            id: 'gw',\n            value: 'Guinea-bissau',\n        },\n        {\n            id: 'gy',\n            value: 'Guyana',\n        },\n        {\n            id: 'ht',\n            value: 'Haiti',\n        },\n        {\n            id: 'hm',\n            value: 'Heard Island And Mcdonald Islands',\n        },\n        {\n            id: 'va',\n            value: 'Holy See (vatican City State)',\n        },\n        {\n            id: 'hn',\n            value: 'Honduras',\n        },\n        {\n            id: 'hk',\n            value: 'Hong Kong',\n        },\n        {\n            id: 'hu',\n            value: 'Hungary',\n        },\n        {\n            id: 'is',\n            value: 'Iceland',\n        },\n        {\n            id: 'in',\n            value: 'India',\n        },\n        {\n            id: 'id',\n            value: 'Indonesia',\n        },\n        {\n            id: 'ir',\n            value: 'Iran, Islamic Republic Of',\n        },\n        {\n            id: 'iq',\n            value: 'Iraq',\n        },\n        {\n            id: 'ie',\n            value: 'Ireland',\n        },\n        {\n            id: 'im',\n            value: 'Isle Of Man',\n        },\n        {\n            id: 'il',\n            value: 'Israel',\n        },\n        {\n            id: 'it',\n            value: 'Italy',\n        },\n        {\n            id: 'jm',\n            value: 'Jamaica',\n        },\n        {\n            id: 'jp',\n            value: 'Japan',\n        },\n        {\n            id: 'je',\n            value: 'Jersey',\n        },\n        {\n            id: 'jo',\n            value: 'Jordan',\n        },\n        {\n            id: 'kz',\n            value: 'Kazakhstan',\n        },\n        {\n            id: 'ke',\n            value: 'Kenya',\n        },\n        {\n            id: 'ki',\n            value: 'Kiribati',\n        },\n        {\n            id: 'kp',\n            value: \"Korea, Democratic People's Republic Of\",\n        },\n        {\n            id: 'kr',\n            value: 'Korea, Republic Of',\n        },\n        {\n            id: 'xk',\n            value: 'Kosovo',\n        },\n        {\n            id: 'kw',\n            value: 'Kuwait',\n        },\n        {\n            id: 'kg',\n            value: 'Kyrgyzstan',\n        },\n        {\n            id: 'la',\n            value: \"Lao People's Democratic Republic\",\n        },\n        {\n            // Moved too top\n            // {id: \"lv\", value: \"Latvia\"}\n            id: 'lb',\n            value: 'Lebanon',\n        },\n        {\n            id: 'ls',\n            value: 'Lesotho',\n        },\n        {\n            id: 'lr',\n            value: 'Liberia',\n        },\n        {\n            id: 'ly',\n            value: 'Libyan Arab Jamahiriya',\n        },\n        {\n            id: 'li',\n            value: 'Liechtenstein',\n        },\n        {\n            // Moved to top\n            // {id: \"lt\", value: \"Lithuania\"}\n            id: 'lu',\n            value: 'Luxembourg',\n        },\n        {\n            id: 'mo',\n            value: 'Macao',\n        },\n        {\n            id: 'mk',\n            value: 'Macedonia, The Former Yugoslav Republic Of',\n        },\n        {\n            id: 'mg',\n            value: 'Madagascar',\n        },\n        {\n            id: 'mw',\n            value: 'Malawi',\n        },\n        {\n            id: 'my',\n            value: 'Malaysia',\n        },\n        {\n            id: 'mv',\n            value: 'Maldives',\n        },\n        {\n            id: 'ml',\n            value: 'Mali',\n        },\n        {\n            id: 'mt',\n            value: 'Malta',\n        },\n        {\n            id: 'mh',\n            value: 'Marshall Islands',\n        },\n        {\n            id: 'mq',\n            value: 'Martinique',\n        },\n        {\n            id: 'mr',\n            value: 'Mauritania',\n        },\n        {\n            id: 'mu',\n            value: 'Mauritius',\n        },\n        {\n            id: 'yt',\n            value: 'Mayotte',\n        },\n        {\n            id: 'mx',\n            value: 'Mexico',\n        },\n        {\n            id: 'fm',\n            value: 'Micronesia, Federated States Of',\n        },\n        {\n            id: 'md',\n            value: 'Moldova, Republic Of',\n        },\n        {\n            id: 'mc',\n            value: 'Monaco',\n        },\n        {\n            id: 'mn',\n            value: 'Mongolia',\n        },\n        {\n            id: 'me',\n            value: 'Montenegro',\n        },\n        {\n            id: 'ms',\n            value: 'Montserrat',\n        },\n        {\n            id: 'ma',\n            value: 'Morocco',\n        },\n        {\n            id: 'mz',\n            value: 'Mozambique',\n        },\n        {\n            id: 'mm',\n            value: 'Myanmar',\n        },\n        {\n            id: 'na',\n            value: 'Namibia',\n        },\n        {\n            id: 'nr',\n            value: 'Nauru',\n        },\n        {\n            id: 'np',\n            value: 'Nepal',\n        },\n        {\n            id: 'nl',\n            value: 'Netherlands',\n        },\n        {\n            id: 'nc',\n            value: 'New Caledonia',\n        },\n        {\n            id: 'nz',\n            value: 'New Zealand',\n        },\n        {\n            id: 'ni',\n            value: 'Nicaragua',\n        },\n        {\n            id: 'ne',\n            value: 'Niger',\n        },\n        {\n            id: 'ng',\n            value: 'Nigeria',\n        },\n        {\n            id: 'nu',\n            value: 'Niue',\n        },\n        {\n            id: 'nf',\n            value: 'Norfolk Island',\n        },\n        {\n            id: 'mp',\n            value: 'Northern Mariana Islands',\n        },\n        {\n            id: 'no',\n            value: 'Norway',\n        },\n        {\n            id: 'om',\n            value: 'Oman',\n        },\n        {\n            id: 'pk',\n            value: 'Pakistan',\n        },\n        {\n            id: 'pw',\n            value: 'Palau',\n        },\n        {\n            id: 'ps',\n            value: 'Palestinian Territory, Occupied',\n        },\n        {\n            id: 'pa',\n            value: 'Panama',\n        },\n        {\n            id: 'pg',\n            value: 'Papua New Guinea',\n        },\n        {\n            id: 'py',\n            value: 'Paraguay',\n        },\n        {\n            id: 'pe',\n            value: 'Peru',\n        },\n        {\n            id: 'ph',\n            value: 'Philippines',\n        },\n        {\n            id: 'pn',\n            value: 'Pitcairn',\n        },\n        {\n            // Moved to top\n            // {id: \"pl\", value: \"Poland\"}\n            id: 'pt',\n            value: 'Portugal',\n        },\n        {\n            id: 'pr',\n            value: 'Puerto Rico',\n        },\n        {\n            id: 'qa',\n            value: 'Qatar',\n        },\n        {\n            id: 're',\n            value: 'Reunion',\n        },\n        {\n            id: 'ro',\n            value: 'Romania',\n        },\n        {\n            // Moved to top\n            // {id: \"ru\", value: \"Russian Federation\"}\n            id: 'rw',\n            value: 'Rwanda',\n        },\n        {\n            id: 'bl',\n            value: 'Saint Barthelemy',\n        },\n        {\n            id: 'sh',\n            value: 'Saint Helena, Ascension And Tristan Da Cunha',\n        },\n        {\n            id: 'kn',\n            value: 'Saint Kitts And Nevis',\n        },\n        {\n            id: 'lc',\n            value: 'Saint Lucia',\n        },\n        {\n            id: 'mf',\n            value: 'Saint Martin (french Part)',\n        },\n        {\n            id: 'pm',\n            value: 'Saint Pierre And Miquelon',\n        },\n        {\n            id: 'vc',\n            value: 'Saint Vincent And The Grenadines',\n        },\n        {\n            id: 'ws',\n            value: 'Samoa',\n        },\n        {\n            id: 'sm',\n            value: 'San Marino',\n        },\n        {\n            id: 'st',\n            value: 'Sao Tome And Principe',\n        },\n        {\n            id: 'sa',\n            value: 'Saudi Arabia',\n        },\n        {\n            id: 'sn',\n            value: 'Senegal',\n        },\n        {\n            id: 'rs',\n            value: 'Serbia',\n        },\n        {\n            id: 'sc',\n            value: 'Seychelles',\n        },\n        {\n            id: 'sl',\n            value: 'Sierra Leone',\n        },\n        {\n            id: 'sg',\n            value: 'Singapore',\n        },\n        {\n            id: 'sx',\n            value: 'Sint Maarten (dutch Part)',\n        },\n        {\n            id: 'sk',\n            value: 'Slovakia',\n        },\n        {\n            id: 'si',\n            value: 'Slovenia',\n        },\n        {\n            id: 'sb',\n            value: 'Solomon Islands',\n        },\n        {\n            id: 'so',\n            value: 'Somalia',\n        },\n        {\n            id: 'za',\n            value: 'South Africa',\n        },\n        {\n            id: 'gs',\n            value: 'South Georgia And The South Sandwich Islands',\n        },\n        {\n            id: 'es',\n            value: 'Spain',\n        },\n        {\n            id: 'lk',\n            value: 'Sri Lanka',\n        },\n        {\n            id: 'sd',\n            value: 'Sudan',\n        },\n        {\n            id: 'sr',\n            value: 'Suriname',\n        },\n        {\n            id: 'sj',\n            value: 'Svalbard And Jan Mayen',\n        },\n        {\n            id: 'sz',\n            value: 'Swaziland',\n        },\n        {\n            // Moved to top\n            //{id: \"se\", value: \"Sweden\"}\n            id: 'ch',\n            value: 'Switzerland',\n        },\n        {\n            id: 'sy',\n            value: 'Syrian Arab Republic',\n        },\n        {\n            id: 'tw',\n            value: 'Taiwan, Province Of China',\n        },\n        {\n            id: 'tj',\n            value: 'Tajikistan',\n        },\n        {\n            id: 'tz',\n            value: 'Tanzania, United Republic Of',\n        },\n        {\n            id: 'th',\n            value: 'Thailand',\n        },\n        {\n            id: 'tl',\n            value: 'Timor-leste',\n        },\n        {\n            id: 'tg',\n            value: 'Togo',\n        },\n        {\n            id: 'tk',\n            value: 'Tokelau',\n        },\n        {\n            id: 'to',\n            value: 'Tonga',\n        },\n        {\n            id: 'tt',\n            value: 'Trin{idad And Tobago',\n        },\n        {\n            id: 'tn',\n            value: 'Tunisia',\n        },\n        {\n            id: 'tr',\n            value: 'Turkey',\n        },\n        {\n            id: 'tm',\n            value: 'Turkmenistan',\n        },\n        {\n            id: 'tc',\n            value: 'Turks And Caicos Islands',\n        },\n        {\n            id: 'tv',\n            value: 'Tuvalu',\n        },\n        {\n            id: 'ug',\n            value: 'Uganda',\n        },\n        {\n            id: 'ua',\n            value: 'Ukraine',\n        },\n        {\n            id: 'ae',\n            value: 'United Arab Emirates',\n        },\n        {\n            id: 'gb',\n            value: 'United Kingdom',\n        },\n        {\n            id: 'us',\n            value: 'United States',\n        },\n        {\n            id: 'um',\n            value: 'United States Minor Outlying Islands',\n        },\n        {\n            id: 'uy',\n            value: 'Uruguay',\n        },\n        {\n            id: 'uz',\n            value: 'Uzbekistan',\n        },\n        {\n            id: 'vu',\n            value: 'Vanuatu',\n        },\n        {\n            id: 'va',\n            value: 'Vatican City State',\n        },\n        {\n            id: 've',\n            value: 'Venezuela, Bolivarian Republic Of',\n        },\n        {\n            id: 'vn',\n            value: 'Viet Nam',\n        },\n        {\n            id: 'vg',\n            value: 'Virgin Islands, British',\n        },\n        {\n            id: 'vi',\n            value: 'Virgin Islands, U.s.',\n        },\n        {\n            id: 'wf',\n            value: 'Wallis And Futuna',\n        },\n        {\n            id: 'eh',\n            value: 'Western Sahara',\n        },\n        {\n            id: 'ye',\n            value: 'Yemen',\n        },\n        {\n            id: 'zm',\n            value: 'Zambia',\n        },\n        {\n            id: 'zw',\n            value: 'Zimbabwe',\n        },\n    ],\n});\n\nexport default CollectorFieldComponent;\n","define(\"tt4/components/copy-button\", [\"exports\", \"ember-cli-clipboard/components/copy-button\"], function (_exports, _copyButton) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _copyButton.default;\n    }\n  });\n});\n","import Component from '@glimmer/component';\n\nexport default class DashBoardWidgetsTimecard2Component extends Component {}\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/date-input.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DateInputComponent;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nDateInputComponent = Ember.TextField.extend({\n    tagName: 'input',\n    attributeBindings: ['type', 'min'],\n    type: 'text',\n    isValueNull: Ember.computed('value', function () {\n        if (this.get('value') === null && !Modernizr.inputtypes.date) {\n            return $(this.element).val('');\n        }\n    }),\n    showNativeControl: Ember.computed('value', {\n        get: function () {\n            if (this._value) {\n                return this._value;\n            }\n            if (window.navigator.userAgent.indexOf('Edge') > -1) {\n                return false;\n            }\n            return Modernizr.inputtypes.date;\n        },\n        set: function (key, value) {\n            return (this._value = value);\n        },\n    }),\n    didInsertElement: function () {\n        var nowDate, onChangeDate, self, startdate;\n        if (!this.get('showNativeControl')) {\n            //            @set 'type', 'text'\n            self = this;\n            onChangeDate = function (e) {\n                return self.set('value', moment(e.date).format('YYYY-MM-DD'));\n            };\n            startdate = '';\n            if (this.get('startDate')) {\n                startdate = new Date(this.get('startDate'));\n            } else {\n                nowDate = new Date();\n                startdate = new Date('1900', nowDate.getMonth(), nowDate.getDate(), 0, 0, 0, 0); //ugly hack to get datepicker work\n            }\n            return $(this.element)\n                .datepicker({\n                    format: 'yyyy-mm-dd',\n                    language: localStorage.lang,\n                    autoclose: true,\n                    todayHighlight: true,\n                    startDate: startdate,\n                    clearBtn: true,\n                    disableTouchKeyboard: true,\n                    orientation: 'bottom',\n                })\n                .on('changeDate', onChangeDate);\n        }\n    },\n    didReceiveAttrs: function () {\n        if (this.get('showNativeControl')) {\n            this.set('type', 'date');\n        }\n        if (this.get('startDate')) {\n            return this.set('min', this.get('startDate'));\n        }\n    },\n});\n\nexport default DateInputComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/draggable_dropzone.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DraggableDropzoneComponent;\n\nimport Ember from 'ember';\n\nDraggableDropzoneComponent = Ember.Component.extend({\n    classNames: ['draggable-dropzone'],\n    classNameBindings: ['dragClass'],\n    dragClass: 'deactivated',\n    attributeBindings: ['data-field'],\n    dragLeave: function (event) {\n        event.preventDefault();\n        return this.set('dragClass', 'deactivated');\n    },\n    dragOver: function (event) {\n        event.stopPropagation();\n        this.set('dragClass', 'activated');\n        return false;\n    },\n    dragEnter: function (event) {\n        event.stopPropagation();\n        return false;\n    },\n    drop: function (event) {\n        var data, msie, setDataString, trident, userAgent;\n        this.set('dragClass', 'deactivated');\n        userAgent = window.navigator.userAgent;\n        msie = userAgent.indexOf('MSIE ');\n        trident = userAgent.indexOf('Trident/');\n        if (msie > 0 || trident > 0) {\n            setDataString = 'text';\n        } else {\n            setDataString = 'text/data';\n        }\n        //console.log setDataString\n        data = event.dataTransfer.getData(setDataString);\n        //console.log \"dropped\", data\n        if (this.get('dropped')) {\n            return this.dropped(data, event);\n        }\n    },\n});\n\nexport default DraggableDropzoneComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/draggable_item.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DraggableItemComponent;\n\nimport Ember from 'ember';\n\nDraggableItemComponent = Ember.Component.extend({\n    classNames: ['draggable-item'],\n    attributeBindings: ['draggable'],\n    draggable: 'true',\n    dragStart: function (event) {\n        var msie, setDataString, trident, userAgent;\n        //console.log \"drag start: \",  @get('content')\n        userAgent = window.navigator.userAgent;\n        msie = userAgent.indexOf('MSIE ');\n        trident = userAgent.indexOf('Trident/');\n        if (msie > 0 || trident > 0) {\n            setDataString = 'text';\n        } else {\n            setDataString = 'text/data';\n        }\n        return event.dataTransfer.setData(setDataString, this.get('content'));\n    },\n});\n\nexport default DraggableItemComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/drop-down-search-input.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DropDownSearchInputComponent;\n\nimport Ember from 'ember';\n\nimport DropDownSearch from './drop-down-search';\n\nDropDownSearchInputComponent = DropDownSearch.extend({\n    layoutName: 'components/drop-down-search',\n    placeholder: 'general.write_or_search',\n    actions: {\n        focusOut: function () {\n            return this.set('showOptions', false);\n        },\n    },\n});\n\nexport default DropDownSearchInputComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/drop-down-search.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DropDownSearchComponent;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nDropDownSearchComponent = Ember.Component.extend({\n    // If we show options or not\n    showOptions: false,\n    // Field value\n    value: null,\n    // default class\n    classes: 'form-control',\n    // All options\n    options: [],\n    observeValue: Ember.observer('value', function () {\n        if (this.get('value.string')) {\n            return this.sendAction('change', this.get('value.string'));\n        } else {\n            return this.sendAction('change', this.get('value'));\n        }\n    }),\n    // Filtered options by search value\n    _options: Ember.computed('options', 'value', function () {\n        var regexp;\n        if (this.get('value')) {\n            regexp = new RegExp(this.get('value'), 'i');\n            return this.get('options').filter(function (item) {\n                if (typeof item === 'object') {\n                    return regexp.test(item.name);\n                }\n                return regexp.test(item);\n            });\n        } else {\n            return this.get('options');\n        }\n    }),\n    setValue: Em.on(\n        'init',\n        Em.observer('input', function () {\n            if (!this.get('input')) {\n                return;\n            }\n            if (Array.isArray(this.get('options')[0])) {\n                return this.set('value', this.get('options').find(this.get('input')));\n            } else {\n                return this.set('value', this.get('options').findBy('id', this.get('input')).name);\n            }\n        }),\n    ),\n    actions: {\n        focusIn: function () {\n            return this.set('showOptions', true);\n        },\n        touched: function () {},\n        // this is dummy method.. for some reason browser click fails without this\n        focusOut: function () {\n            this.set('showOptions', false);\n            return this.send('hasOption');\n        },\n        select: function (option) {\n            var value;\n            $('input', this.element).blur();\n            if (option) {\n                if (option.get != null) {\n                    value = option.get('name');\n                } else if (option.id) {\n                    value = option.name;\n                } else {\n                    value = option;\n                }\n                this.set('value', value);\n            } else {\n                this.set('value', null);\n            }\n            return this.sendAction('bubbleChange', option);\n        },\n        hasOption: function () {\n            var empty, i, len, option, options, val;\n            empty = false;\n            options = this.get('_options');\n            if (options.length === 0) {\n                empty = true;\n            }\n            for (i = 0, len = options.length; i < len; i++) {\n                option = options[i];\n                val = option.id ? option.name : option;\n                if (this.get('value') === !val) {\n                    empty = true;\n                } else {\n                    this.sendAction('bubbleChange', option);\n                }\n            }\n            if (empty) {\n                return this.set('value', null);\n            }\n        },\n    },\n});\n\nexport default DropDownSearchComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/drop-down.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DropDownComponent;\n\nimport Ember from 'ember';\n\nDropDownComponent = Ember.Component.extend({\n    sessionGlobals: Ember.inject.service(),\n\n    // Properties\n\n    // Value of the selected option\n    value: null,\n    // Prompt that is shown if nothing is selected\n    prompt: null,\n    autoclear: false,\n    // Options to show in the dropdown\n    // FORMAT: [\n    //   {id: <string|number>, name: <string|number>}\n    // ]\n    options: null,\n    // default class\n    classes: 'form-control',\n    optionGroups: null,\n    disabled: false,\n    didRender: function () {\n        var select;\n        // hax for ff .. https://stackoverflow.com/a/10096033\n        select = this.element.getElementsByTagName('select')[0];\n        return (select.value = this.get('value') ? this.get('value') : '');\n    },\n    showingRemoved: Em.computed('value', function () {\n        var show_removed_arr;\n        if (this.get('useAsFilter')) {\n            show_removed_arr = this.get('sessionGlobals').get('show_removed');\n            if (show_removed_arr && show_removed_arr[this.get('field.name')]) {\n                return true;\n            } else {\n                return false;\n            }\n        }\n    }),\n\n    // Actions\n\n    actions: {\n        // Sets the selected ID to components property VALUE\n        select: function (id) {\n            // if we use this as a filter, do not update value as it can overwrite database-field defaultValueForNormalDropdown-computed\n            if (this.get('useAsFilter')) {\n                if (id === 'show_removed') {\n                    this.set('showingRemoved', true);\n                }\n                if (id === 'hide_removed') {\n                    this.set('showingRemoved', false);\n                }\n                this.sendAction('bubbleChange', id);\n                return;\n            }\n            if (id !== 'show_removed' && id !== 'hide_removed') {\n                this.set('value', id);\n            }\n            // very ugly hack but does it's thing\n            if (this.get('autoclear')) {\n                this.set('optionGroups', true);\n                Em.run.later(\n                    this,\n                    () => {\n                        this.set('value', null);\n                        return this.set('optionGroups', false);\n                    },\n                    100,\n                );\n            }\n            return this.sendAction('bubbleChange', id);\n        },\n    },\n});\n\nexport default DropDownComponent;\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"{{#if (needs \\\"development\\\")}}<span class=\\\"label label-warning\\\">{{@text}}</span>{{/if}}\", {\"contents\":\"{{#if (needs \\\"development\\\")}}<span class=\\\"label label-warning\\\">{{@text}}</span>{{/if}}\",\"moduleName\":\"tt4/components/dump-dev.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/dump-dev.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","define(\"tt4/components/ember-modal-dialog-positioned-container\", [\"exports\", \"ember-modal-dialog/components/positioned-container\"], function (_exports, _positionedContainer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _positionedContainer.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-modal-dialog/-basic-dialog\", [\"exports\", \"ember-modal-dialog/components/basic-dialog\"], function (_exports, _basicDialog) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _basicDialog.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-modal-dialog/-in-place-dialog\", [\"exports\", \"ember-modal-dialog/components/in-place-dialog\"], function (_exports, _inPlaceDialog) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _inPlaceDialog.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-modal-dialog/-liquid-dialog\", [\"exports\", \"ember-modal-dialog/components/liquid-dialog\"], function (_exports, _liquidDialog) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _liquidDialog.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-modal-dialog/-liquid-tether-dialog\", [\"exports\", \"ember-modal-dialog/components/liquid-tether-dialog\"], function (_exports, _liquidTetherDialog) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _liquidTetherDialog.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-modal-dialog/-tether-dialog\", [\"exports\", \"ember-modal-dialog/components/tether-dialog\"], function (_exports, _tetherDialog) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _tetherDialog.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-popover\", [\"exports\", \"ember-tooltips/components/ember-popover\"], function (_exports, _emberPopover) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPopover.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-popper-targeting-parent\", [\"exports\", \"ember-popper/components/ember-popper-targeting-parent\"], function (_exports, _emberPopperTargetingParent) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPopperTargetingParent.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-popper\", [\"exports\", \"ember-popper/components/ember-popper\"], function (_exports, _emberPopper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPopper.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-table\", [\"exports\", \"ember-table/components/ember-table/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-tbody\", [\"exports\", \"ember-table/components/ember-tbody/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-td\", [\"exports\", \"ember-table/components/ember-td/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-tether\", [\"exports\", \"ember-tether/components/ember-tether\"], function (_exports, _emberTether) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberTether.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-tfoot\", [\"exports\", \"ember-table/components/ember-tfoot/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-th\", [\"exports\", \"ember-table/components/ember-th/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-th/resize-handle\", [\"exports\", \"ember-table/components/ember-th/resize-handle/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-th/sort-indicator\", [\"exports\", \"ember-table/components/ember-th/sort-indicator/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-thead\", [\"exports\", \"ember-table/components/ember-thead/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-tooltip\", [\"exports\", \"ember-tooltips/components/ember-tooltip\"], function (_exports, _emberTooltip) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberTooltip.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-tr\", [\"exports\", \"ember-table/components/ember-tr/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/ember-wormhole\", [\"exports\", \"ember-wormhole/components/ember-wormhole\"], function (_exports, _emberWormhole) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberWormhole.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/error-popup.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ErrorPopupComponent;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nErrorPopupComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    didInsertElement: function () {\n        return $('.error_msg').hide();\n    },\n    error_msg: Ember.computed('error', function () {\n        var message, msg, translated;\n        $('.error_msg').show();\n        msg = this.get('error.responseText');\n        // go to top of the page\n        $(document).scrollTop(0);\n        translated = this.get('intl').t('errors.' + msg);\n        if (translated.string && translated.string.substring(0, 19) !== 'Missing translation') {\n            message = translated.string;\n        } else {\n            message =\n                msg + ' ' + this.get('error.statusText') + ' (' + this.get('error.status') + ')';\n        }\n        // fadeout with delay\n        setTimeout(function () {\n            return $('.error_msg').fadeOut('slow');\n        }, 4000);\n        return message;\n    }),\n});\n\nexport default ErrorPopupComponent;\n","define(\"tt4/components/export-selector-onselect\", [\"exports\", \"ember-cli-data-export/components/export-selector-onselect\"], function (_exports, _exportSelectorOnselect) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _exportSelectorOnselect.default;\n    }\n  });\n});\n","define(\"tt4/components/export-selector\", [\"exports\", \"ember-cli-data-export/components/export-selector\"], function (_exports, _exportSelector) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _exportSelector.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/fast-select.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FastSelectComponent;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nFastSelectComponent = Ember.Component.extend({\n    didInsertElement: function () {\n        var self;\n        self = this;\n        this.renderOptions();\n        return $('select', this.element).change(function () {\n            var optionid;\n            optionid = $(this).find('option:selected').get(0).id;\n            return self.set('value', optionid);\n        });\n    },\n    renderOptions: function () {\n        var content, first, prompt, select, self, value;\n        self = this;\n        content = this.get('content');\n        select = $('select', this.element);\n        prompt = this.get('prompt');\n        value = this.get('value');\n        if (prompt) {\n            select.append('<option id=\"\">' + prompt + '</option>');\n        }\n        //try to get object id\n        first = content.get('firstObject.id');\n        //try to get string\n        if (!first) {\n            first = content.get('firstObject.string');\n        }\n        //get whole object\n        if (!first) {\n            first = content.get('firstObject');\n        }\n        if (!prompt && !value) {\n            self.set('value', first);\n        }\n        return content.forEach(function (item) {\n            if (!item.id) {\n                return select.append(\n                    '<option id=\"' +\n                        item +\n                        '\"' +\n                        (value && (value === item || value === item.string)\n                            ? ' selected=\"selected\"'\n                            : '') +\n                        '>' +\n                        item +\n                        '</option>',\n                );\n            } else {\n                return select.append(\n                    '<option id=\"' +\n                        item.id +\n                        '\"' +\n                        (value && value === item.id ? ' selected=\"selected\"' : '') +\n                        '>' +\n                        item.value +\n                        '</option>',\n                );\n            }\n        });\n    },\n    didReceiveAttrs: function () {\n        if (!this.get('class')) {\n            if (this.get('parentView.edit')) {\n                return this.set('class', 'form-control inline-input');\n            } else {\n                return this.set('class', 'form-control');\n            }\n        }\n    },\n    obs: function () {\n        var select;\n        select = $('select', this.element);\n        if (select) {\n            return select.find(\"option[id='\" + this.get('value') + \"']\").prop('selected', true);\n        }\n    }.observes('value'),\n});\n\nexport default FastSelectComponent;\n","define(\"tt4/components/file-dropzone\", [\"exports\", \"ember-file-upload/components/file-dropzone/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/file-upload\", [\"exports\", \"ember-file-upload/components/file-upload/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/fileupload-preview.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FileuploadPreviewComponent;\n\nimport Ember from 'ember';\n\nFileuploadPreviewComponent = Ember.Component.extend({\n    tagName: 'canvas',\n    attributeBindings: ['width', 'height'],\n    didInsertElement: function () {\n        var canvas;\n        canvas = this.get('element').getContext('2d');\n        this.set('canvas', canvas);\n        this._empty(canvas);\n        return this.draw();\n    },\n    draw: function () {\n        var canvas, image, self;\n        self = this;\n        canvas = this.get('canvas');\n        this._empty(canvas);\n        image = new Image();\n        image.onload = function () {\n            canvas = self.get('canvas');\n            return canvas.drawImage(image, 0, 0, image.width, image.height);\n        };\n        return (image.src = this.get('data'));\n    }.observes('data'),\n    _empty: function (canvas) {\n        if (canvas) {\n            canvas.fillStyle = '#fff';\n            return canvas.fillRect(0, 0, this.get('width'), this.get('height'));\n        }\n    },\n});\n\nexport default FileuploadPreviewComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/general-report-row.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GeneralReportRowComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport config from '../config/environment';\n\nimport { pluralize } from 'ember-inflector';\n\nGeneralReportRowComponent = Ember.Component.extend({\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    analytics: Ember.inject.service(),\n    moment: Ember.inject.service(),\n    capi: Ember.inject.service(),\n    tagName: 'tr',\n    classNameBindings: ['showLock'],\n    fieldSettings: Em.A({\n        report: true,\n        title: false,\n    }),\n    editModal: Ember.computed('form', 'model', function () {\n        return [this.get('form'), this.get('model.id')];\n    }),\n    dynamicEditParams: Ember.computed('form', 'model', function () {\n        var fields, params;\n        fields = this.get('editRoute.fields');\n        params = [this.get('editRoute.route')];\n        fields.forEach((field) => {\n            var value;\n            value = this.get('model.' + field);\n            if (Ember.typeOf(value) === 'instance') {\n                value = value.get('id');\n            }\n            return params.push(value);\n        });\n        return params;\n    }),\n    historyModal: Ember.computed('form', 'model', function () {\n        return [this.get('form'), this.get('model.id'), 'history'];\n    }),\n    click: function () {\n        return this.sendAction('rowAction', this.get('model'));\n    },\n    showLock: Ember.computed('form', 'canEdit', function () {\n        if (this.get('model.row_info.status') === 'locked' && this.get('canEdit') === false) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n    form: null,\n    didInsertElement: function () {\n        return this.set('form', this.get('model.constructor.modelName'));\n    },\n    //    edit: true\n    canEdit: Ember.computed('form', 'canRestore', function () {\n        var canEdit;\n        if (this.get('canRestore')) {\n            return false;\n        }\n        // a bit bubblegum, but this is needed because capi does not have this kind of privilege-thing\n        if (\n            this.get('settings.disableStatus') &&\n            this.get('model.status') === this.get('settings.disableStatus')\n        ) {\n            return false;\n        }\n        canEdit = true;\n        if (this.get('settings.hideEdit')) {\n            canEdit = false;\n        } else {\n            canEdit =\n                collector.getPrivilege(this.get('form'), 'edit') && this.get('model.isEditable');\n        }\n        return canEdit;\n    }),\n    canShow: Ember.computed('canEdit', function () {\n        if (this.get('canEdit') === false) {\n            return !this.get('settings.hideShow');\n        }\n        return true;\n    }),\n    canRemove: Ember.computed('form', 'canRestore', function () {\n        if (this.get('canRestore')) {\n            return false;\n        }\n        if (!this.get('settings.hideRemove') && !collector.hasErrors(this.get('form'))) {\n            return (\n                collector.getPrivilege(this.get('form'), 'remove') && this.get('model.isRemovable')\n            );\n        }\n    }),\n    canRestore: Ember.computed('form', function () {\n        if (this.get('rowStatus') === 'removed' && !collector.hasErrors(this.get('form'))) {\n            return true;\n        }\n    }),\n    rowColumns: Ember.on(\n        'init',\n        Ember.observer('columns.[]', 'model', 'checked.[]', 'edit', function () {\n            var col, cols, fields, i, len, ref, self;\n            self = this;\n            fields = Em.A([]);\n            cols = this.get('columns');\n            if (!cols) {\n                return;\n            }\n            for (i = 0, len = cols.length; i < len; i++) {\n                col = cols[i];\n                Ember.set(col, 'obj.ext', col.ext);\n                Ember.set(\n                    col,\n                    'obj.clickable',\n                    (ref = col.obj.type) === 'multiselect' || ref === 'databasearray',\n                );\n                fields.pushObject(col.obj);\n            }\n            return this.set('fields', fields);\n        }),\n    ),\n    checkedClass: 'unchecked',\n    checked: function () {\n        var self;\n        self = this;\n        this.set('isChecked', false);\n        this.set('checkedClass', 'unchecked');\n        if (!this.get('allChecked')) {\n            return;\n        }\n        return this.get('allChecked').forEach(function (item) {\n            if (item.get == null) {\n                // shared application items are not ember objects\n                item = Ember.Object.create(item);\n            }\n            if (item.get('id') === self.get('model.id')) {\n                self.set('checkedClass', 'checked');\n                return self.set('isChecked', true);\n            }\n        });\n    }.observes('allChecked.[]'),\n    editRoute: Ember.computed('settings.editRoute', function () {\n        var settings;\n        settings = this.get('settings');\n        if (settings != null) {\n            if (settings.get('editRoute')) {\n                return settings.get('editRoute');\n            }\n        }\n        return this.get('form') + 's.edit';\n    }),\n    historyRoute: Ember.computed('settings.historyRoute', function () {\n        var settings;\n        settings = this.get('settings');\n        if (settings != null) {\n            if (settings.get('historyRoute')) {\n                return settings.get('historyRoute');\n            }\n        }\n        return this.get('form') + 's.history';\n    }),\n    modified_class: Em.computed('model.row_info.modified', function () {\n        var created_days, created_diff, days, diff;\n        if (!this.get('model.row_info.modified')) {\n            return false;\n        }\n        diff =\n            moment.utc().startOf('day').unix() -\n            moment.utc(this.get('model.row_info.modified')).startOf('day').unix();\n        days = moment.duration(diff, 'seconds').asDays();\n        //return false if edited in the same day\n        created_diff =\n            moment.utc(this.get('model.row_info.modified')).startOf('day').unix() -\n            moment.utc(this.get('model.row_info.created')).startOf('day').unix();\n        created_days = moment.duration(created_diff, 'seconds').asDays();\n        if (created_days === 0) {\n            if (days > 0) {\n                return false;\n            }\n            return 'general-report-modified modified-since-today';\n        }\n        if (days > 14) {\n            return false;\n        }\n        return 'general-report-modified modified-since-' + days;\n    }),\n    modified_tooltip_format: Em.computed('modified_class', function () {\n        if (this.get('modified_class') === 'general-report-modified modified-since-today') {\n            return 'LT';\n        } else {\n            return 'L';\n        }\n    }),\n    actions: {\n        clicked: function (field) {\n            var ref;\n            if (!((ref = field.type) === 'multiselect' || ref === 'databasearray')) {\n                return;\n            }\n            return this.sendAction('bubbleTransition', {\n                queryParams: {\n                    modal: ['modalrows', this.get('form') + '.' + field.ext, this.get('model.id')],\n                },\n            });\n        },\n        openlock: function (row) {\n            var form, form_plural, model;\n            model = this.get('model');\n            if (!model.get('row_info.privilege_openlock')) {\n                return;\n            }\n            form = this.get('form');\n            form_plural = pluralize(this.get('form')).camelize();\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_openlock'))\n                .then((con) => {\n                    var data;\n                    if (con) {\n                        data = {};\n                        data[form] = {\n                            locked: false,\n                        };\n                        return this.get('capi')\n                            .request('/' + form_plural + '/' + row.get('id') + '?validation=off', {\n                                dataType: 'json',\n                                type: 'PUT',\n                                data: JSON.stringify(data),\n                            })\n                            .then(() => {\n                                model.set('export_salary', '');\n                                model.set('export_absence', '');\n                                model.set('row_info.privilege_edit', true);\n                                model.set('row_info.privilege_remove', true);\n                                model.set('row_info.status', 'normal');\n                                model.set('row_info.modified', true);\n                                return model.save();\n                            });\n                    }\n                });\n        },\n        delete: function (row) {\n            if (collector.hasErrors(this.get('form'))) {\n                return;\n            }\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    if (con) {\n                        return row.destroyRecord().then((ret) => {\n                            row.unloadRecord();\n                            if (this.isDestroyed || this.isDestroying) {\n                                return;\n                            }\n                            return this.sendAction('bubbleAction', 'delete', row);\n                        });\n                    }\n                });\n        },\n        //        show: ->\n        //            self = @\n        //            currentController = @get('parentController.currentController')\n        //            #controller.set 'model', @get 'model'\n        //            currentController.transitionToRoute(\"show\", @get 'model').then (newRoute) ->\n        //                if self.get('parentController.currentController.cancelRoute')\n        //                    newRoute.controller.set 'cancelRoute', self.get('parentController.currentController.cancelRoute')\n        restore: function (row) {\n            var form, form_camelcase, form_plural;\n            if (collector.hasErrors(this.get('form'))) {\n                return;\n            }\n            form = this.get('form');\n            form_plural = pluralize(this.get('form')).camelize();\n            form_camelcase = this.get('form').camelize(); // form has to be camelcased if it has underscores\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_restore'))\n                .then((con) => {\n                    if (con) {\n                        return this.get('capi')\n                            .request('/' + form_plural + '/' + row.id + '?validation=off', {\n                                dataType: 'json',\n                                type: 'PUT',\n                                data: '{\"' + form_camelcase + '\":{\"row_info.status\":\"normal\"}}',\n                            })\n                            .then(() => {\n                                return row.unloadRecord();\n                            });\n                    }\n                });\n        },\n        save: function () {\n            var self;\n            self = this;\n            if (collector.hasErrors(this.get('form'))) {\n                this.set('edit', false);\n                this.get('model').rollbackAttributes();\n                return;\n            }\n            return this.get('model')\n                .save()\n                .then(function () {\n                    return self.set('edit', false);\n                });\n        },\n        check: function () {\n            if (this.get('isChecked')) {\n                this.set('checkedClass', 'unchecked');\n                return this.get('allChecked').removeObject(this.get('model'));\n            } else {\n                this.set('checkedClass', 'checked');\n                return this.get('allChecked').pushObject(this.get('model'));\n            }\n        },\n        clickRowAction: function (type) {\n            return this.get('analytics').trackEvent({\n                category: this.form + ' report row actions',\n                action: type,\n                label: 'General-report',\n            });\n        },\n    },\n});\n\nexport default GeneralReportRowComponent;\n","define(\"tt4/components/geo-chart\", [\"exports\", \"ember-google-charts/components/geo-chart\"], function (_exports, _geoChart) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _geoChart.default;\n    }\n  });\n});\n","define(\"tt4/components/google-chart\", [\"exports\", \"ember-google-charts/components/google-chart\"], function (_exports, _googleChart) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _googleChart.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/gps-forced-dropdown.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GpsForcedDropdown;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nGpsForcedDropdown = Ember.Component.extend({\n    store: Ember.inject.service(),\n    classes: 'form-control add-fields',\n    actions: {\n        changeValue: function (value) {\n            return this.sendAction('change', value, 'project');\n        },\n    },\n});\n\nexport default GpsForcedDropdown;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/gps-location-map.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GpsLocationMapComponent;\n\nimport Ember from 'ember';\n\nimport { getImageFromUrl, resizeImage } from 'tt4/utils/file-util';\n\nimport $ from 'jquery';\n\nGpsLocationMapComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    google: Ember.inject.service(),\n    map: null,\n    //tmp array for markers\n    markers: [],\n    allMarkers: Em.A([]),\n    allCircles: Em.A([]),\n    allPaths: Em.A([]),\n    zoomLevel: 8,\n    skipPositionUpdate: false,\n    //initialize map\n    insertMap: Em.on('didInsertElement', function () {\n        var container, firstobj, lat, lng, loc, map, options, self, styleArray;\n        container = $('.map-canvas', this.element)[0];\n        styleArray = [\n            {\n                featureType: 'road',\n                elementType: 'geometry.fill',\n                stylers: [\n                    {\n                        color: '#0c9d58',\n                    },\n                ],\n            },\n            {\n                featureType: 'water',\n                stylers: [\n                    {\n                        hue: '#00ccff',\n                    },\n                    {\n                        saturation: -22,\n                    },\n                ],\n            },\n            {\n                featureType: 'landscape',\n                stylers: [\n                    {\n                        hue: '#00ff5e',\n                    },\n                    {\n                        saturation: -56,\n                    },\n                    {\n                        lightness: 23,\n                    },\n                ],\n            },\n            {\n                stylers: [\n                    {\n                        lightness: 21,\n                    },\n                    {\n                        saturation: -26,\n                    },\n                ],\n            },\n        ];\n        self = this;\n        if (this.get('value')) {\n            loc = JSON.parse(this.get('value'));\n            lat = loc.latitude;\n            lng = loc.longitude;\n        } else if (this.get('wtmarkers') && this.get('wtmarkers.firstObject.wStartLoc')) {\n            firstobj = this.get('wtmarkers.firstObject.wStartLoc');\n            lat = firstobj.latitude;\n            lng = firstobj.longitude;\n        } else if (this.get('wtmarkers') && this.get('wtmarkers.firstObject.wEndLoc')) {\n            firstobj = this.get('wtmarkers.firstObject.wEndLoc');\n            lat = firstobj.latitude;\n            lng = firstobj.longitude;\n        } else if (this.get('projectmarkers') && this.get('projectmarkers.firstObject.project')) {\n            firstobj = this.get('projectmarkers.firstObject.project');\n            lat = firstobj.latitude;\n            lng = firstobj.longitude;\n        } else {\n            lat = 61.084857;\n            lng = 26.087036;\n            if (navigator.geolocation) {\n                navigator.geolocation.watchPosition(function (location) {\n                    var locs;\n                    lat = location.coords.latitude;\n                    lng = location.coords.longitude;\n                    locs = new window.google.maps.LatLng(lat, lng);\n                    map.panTo(locs);\n                    return map.setZoom(15);\n                });\n            }\n        }\n        options = {\n            center: new window.google.maps.LatLng(lat, lng),\n            zoom: self.get('zoomLevel'),\n            styles: styleArray,\n            disableDefaultUI: true,\n            zoomControl: true,\n        };\n        map = new window.google.maps.Map(container, options);\n        if (this.get('value')) {\n            self.placeMarkerAndPanTo(new window.google.maps.LatLng(lat, lng), map);\n        }\n        if (this.get('projectmode')) {\n            map.addListener('click', function (e) {\n                return self.placeMarkerAndPanTo(e.latLng, map);\n            });\n        }\n        if (this.get('wtmarkers')) {\n            this.addWtMarkers(map);\n        }\n        if (this.get('projectmarkers')) {\n            this.addProjectMarkers(map);\n        }\n        return this.set('map', map);\n    }),\n    observeMarkers: Em.observer('wtmarkers.[]', function () {\n        this.clearMarkers();\n        this.clearCircles();\n        this.clearPaths();\n        return this.addWtMarkers(this.get('map'));\n    }),\n    observeProjectMarkers: Em.observer('projectmarkers.[]', function () {\n        this.clearMarkers();\n        this.clearPaths();\n        return this.addProjectMarkers(this.get('map'));\n    }),\n    clearMarkers: function () {\n        this.setMap(null, this.get('allMarkers'));\n        return this.set('allMarkers', Em.A([]));\n    },\n    clearCircles: function () {\n        this.setMap(null, this.get('allCircles'));\n        return this.set('allCircles', Em.A([]));\n    },\n    clearPaths: function () {\n        this.setMap(null, this.get('allPaths'));\n        return this.set('allPaths', Em.A([]));\n    },\n    setMap: function (map, objs) {\n        var i, len, obj, results1;\n        results1 = [];\n        for (i = 0, len = objs.length; i < len; i++) {\n            obj = objs[i];\n            results1.push(obj.setMap(map));\n        }\n        return results1;\n    },\n    //add only project markers\n    addProjectMarkers: function (map) {\n        var count, i, label, len, m, plat, platlng, plng, ref, results1, self;\n        self = this;\n        count = 1;\n        ref = this.projectmarkers;\n        results1 = [];\n        for (i = 0, len = ref.length; i < len; i++) {\n            m = ref[i];\n            plat = m.project.latitude;\n            plng = m.project.longitude;\n            platlng = new window.google.maps.LatLng(plat, plng);\n            label = m.project.label;\n            self.placeMarkerWithDelay('project', platlng, map, count * 100, label);\n            results1.push(count++);\n        }\n        return results1;\n    },\n    //add worktime markers\n    addWtMarkers: function (map) {\n        var coords,\n            count,\n            endCoords,\n            i,\n            len,\n            m,\n            plat,\n            platlng,\n            plng,\n            radius,\n            ref,\n            results1,\n            self,\n            wEndLat,\n            wEndLatLng,\n            wEndLng,\n            wStartLat,\n            wStartLatLng,\n            wStartLng;\n        self = this;\n        count = 1;\n        ref = this.wtmarkers;\n        results1 = [];\n        for (i = 0, len = ref.length; i < len; i++) {\n            m = ref[i];\n            //worktime markers\n            if (m.wStartLoc) {\n                wStartLat = m.wStartLoc.latitude;\n                wStartLng = m.wStartLoc.longitude;\n                wStartLatLng = new window.google.maps.LatLng(wStartLat, wStartLng);\n            }\n            if (m.wEndLoc) {\n                wEndLat = m.wEndLoc.latitude;\n                wEndLng = m.wEndLoc.longitude;\n                wEndLatLng = new window.google.maps.LatLng(wEndLat, wEndLng);\n            }\n            //if accuracy is bigger than 100m (and lower than 10km), show circle around marker\n            radius = 0;\n            if (m.wStartLoc && m.wStartLoc.accuracy < 10000 && m.wStartLoc.accuracy > 100) {\n                radius = m.wStartLoc.accuracy;\n            }\n            if (m.wStartLoc && m.wEndLoc) {\n                self.placeMarkerWithDelay('worktimeEnd', wEndLatLng, map, count * 100, m.wLabel);\n                self.placeMarkerWithDelay(\n                    'worktimeStart',\n                    wStartLatLng,\n                    map,\n                    count * 100,\n                    m.wLabel,\n                    radius,\n                );\n            } else if (!m.wStartLoc && m.wEndLoc) {\n                self.placeMarkerWithDelay('worktime', wEndLatLng, map, count * 100, m.wLabel);\n            } else {\n                self.placeMarkerWithDelay(\n                    'worktime',\n                    wStartLatLng,\n                    map,\n                    count * 100,\n                    m.wLabel,\n                    radius,\n                );\n            }\n            count++;\n            //add also project marker and line\n            if (m.project) {\n                //project markers\n                plat = m.project.latitude;\n                plng = m.project.longitude;\n                platlng = new window.google.maps.LatLng(plat, plng);\n                self.placeMarkerWithDelay('project', platlng, map, count * 100, m.project.label);\n                coords = [wStartLatLng, platlng];\n                self.placeLineWithDelay(coords, map, count * 100);\n                endCoords = [wEndLatLng, platlng];\n                self.placeLineWithDelay(endCoords, map, count * 100);\n                results1.push(count++);\n            } else {\n                results1.push(void 0);\n            }\n        }\n        return results1;\n    },\n    //add marker with animation and delay\n    placeMarkerWithDelay: function (type, latLng, map, delay, label, radius = 0) {\n        return Ember.run.later(() => {\n            var icon, marker;\n            if (type === 'worktime') {\n                icon = 'img/gpsmap-user-icon.png';\n            } else if (type === 'worktimeStart') {\n                icon = {\n                    url: 'img/Play.png',\n                    anchor: new google.maps.Point(12, 12),\n                };\n            } else if (type === 'worktimeEnd') {\n                icon = {\n                    url: 'img/Stop.png',\n                    anchor: new google.maps.Point(12, 12),\n                };\n            } else if (type === 'project') {\n                icon = 'img/gpsmap-project-icon.png';\n            }\n            marker = new window.google.maps.Marker({\n                position: latLng,\n                map: map,\n                icon: icon,\n                animation: google.maps.Animation.DROP,\n                title: label,\n            });\n            if (radius > 0) {\n                radius = new google.maps.Circle({\n                    strokeColor: '#24E268',\n                    strokeOpacity: 0.5,\n                    strokeWeight: 1,\n                    fillColor: '#24E268',\n                    fillOpacity: 0.2,\n                    map: map,\n                    center: latLng,\n                    radius: radius,\n                });\n                this.get('allCircles').pushObject(radius);\n            }\n            return this.get('allMarkers').pushObject(marker);\n        }, delay);\n    },\n    //add line with delay\n    placeLineWithDelay: function (coords, map, delay) {\n        return Ember.run.later(() => {\n            var path;\n            path = new google.maps.Polyline({\n                path: coords,\n                geodesic: true,\n                strokeColor: '#FF0000',\n                strokeOpacity: 1.0,\n                strokeWeight: 2,\n            });\n            path.setMap(map);\n            return this.get('allPaths').pushObject(path);\n        }, delay);\n    },\n    //add marker by click and remove previous\n    placeMarkerAndPanTo: function (latLng, map) {\n        var i, len, loc, m, marker, ref;\n        ref = this.get('markers');\n        for (i = 0, len = ref.length; i < len; i++) {\n            m = ref[i];\n            m.setMap(null);\n        }\n        this.set('markers', []);\n        marker = new window.google.maps.Marker({\n            position: latLng,\n            map: map,\n        });\n        this.get('markers').push(marker);\n        //set location to value\n        loc = {};\n        loc.latitude = marker.position.lat();\n        loc.longitude = marker.position.lng();\n        this.set('value', JSON.stringify(loc));\n        return map.panTo(latLng);\n    },\n    updateLocation: true,\n    //listen changes in address fields\n    addressObserver: Ember.observer('model.address', 'model.zip', 'model.city', function () {\n        //dont run every model change, only after 1.5s of last change\n        if (this.get('updateLocation')) {\n            return Ember.run.debounce(this, this.geocodeAddress, 1500);\n        }\n    }),\n    updateCenterPoint: function () {\n        var map, pos, value;\n        map = this.get('map');\n        value = JSON.parse(this.get('value'));\n        pos = new window.google.maps.LatLng(value.latitude, value.longitude);\n        map.setCenter(pos);\n        this.placeMarkerAndPanTo(pos, map);\n        map.setZoom(15);\n    },\n    //listen changes in value field and update address\n    locationObserver: Ember.observer('value', function () {\n        var geocoder, latlng, self, value;\n        value = JSON.parse(this.get('value'));\n        latlng = {\n            lat: value.latitude,\n            lng: value.longitude,\n        };\n        //if model not set, just update map\n        if (!this.get('model')) {\n            if (this.get('skipPositionUpdate') === false) {\n                Em.run.debounce(this, this.updateCenterPoint, 1500);\n            }\n            return;\n        }\n        //get address\n        geocoder = new window.google.maps.Geocoder();\n        self = this;\n        return geocoder.geocode(\n            {\n                location: latlng,\n            },\n            function (results, status) {\n                var address, city, url, zip;\n                if (status !== 'OK') {\n                    return;\n                }\n                if (results[0].address_components.length === 4) {\n                    address = results[0].address_components[0]['long_name'];\n                    zip = results[0].address_components[3]['short_name'];\n                    city = results[0].address_components[1]['short_name'];\n                } else if (results[0].address_components.length === 5) {\n                    address =\n                        results[0].address_components[1]['long_name'] +\n                        ' ' +\n                        results[0].address_components[0]['short_name'];\n                    //zip = results[0].address_components[4]['short_name']\n                    zip = results[0].address_components[4]['short_name'];\n                    city = results[0].address_components[2]['short_name'];\n                } else if (results[0].address_components.length === 8) {\n                    address =\n                        results[0].address_components[1]['long_name'] +\n                        ' ' +\n                        results[0].address_components[0]['short_name'];\n                    //zip = results[0].address_components[4]['short_name']\n                    zip = results[0].address_components[7]['short_name'];\n                    city = results[0].address_components[2]['short_name'];\n                } else if (results[0].address_components.length === 6) {\n                    address =\n                        results[0].address_components[1]['long_name'] +\n                        ' ' +\n                        results[0].address_components[0]['short_name'];\n                    zip = results[0].address_components[5]['short_name'];\n                    city = results[0].address_components[2]['short_name'];\n                    self.set('updateLocation', false);\n                } else {\n                    address =\n                        results[0].address_components[1]['long_name'] +\n                        ' ' +\n                        results[0].address_components[0]['short_name'];\n                    zip = results[0].address_components[4]['short_name'];\n                    city = results[0].address_components[2]['short_name'];\n                }\n                self.set('updateLocation', false);\n                if (self.get('model')) {\n                    if (!(typeof self.get === 'function' ? self.get('model.image') : void 0)) {\n                        url = self.get('google').streetViewUrl(value);\n                        getImageFromUrl(url).then((file) => {\n                            var file_data;\n                            file_data = {};\n                            file_data.name = 'file';\n                            return resizeImage(file, 600, 300, 60).then((resized) => {\n                                file_data.file = resized;\n                                return resizeImage(resized, 200, 100, 60).then((resized) => {\n                                    file_data.preview = resized;\n                                    return self.set('model.image', [file_data]);\n                                });\n                            });\n                        });\n                    }\n                    if (!(typeof self.get === 'function' ? self.get('model.address') : void 0)) {\n                        self.set('model.address', address);\n                    }\n                    if (!(typeof self.get === 'function' ? self.get('model.zip') : void 0)) {\n                        self.set('model.zip', zip);\n                    }\n                    if (!(typeof self.get === 'function' ? self.get('model.city') : void 0)) {\n                        return self.set('model.city', city);\n                    }\n                }\n            },\n        );\n    }),\n    //geocode address\n    geocodeAddress: function () {\n        var address, geocoder, self;\n        self = this;\n        if (this.get('model.address') && this.get('model.city')) {\n            address = this.get('model.address') + ', ' + this.get('model.city');\n            geocoder = new window.google.maps.Geocoder();\n            return geocoder.geocode(\n                {\n                    address: address,\n                },\n                function (results, status) {\n                    var map;\n                    if (status === window.google.maps.GeocoderStatus.OK) {\n                        map = self.get('map');\n                        map.setCenter(results[0].geometry.location);\n                        self.placeMarkerAndPanTo(results[0].geometry.location, map);\n                        return map.setZoom(15);\n                    }\n                },\n            );\n        }\n    },\n});\n\nexport default GpsLocationMapComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/gps-location.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GpsLocationComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nGpsLocationComponent = Ember.Component.extend({\n    gps: Ember.inject.service(),\n    store: Ember.inject.service(),\n    notSupported: Ember.computed.alias('gps.lastError'),\n    lockedPosition: Ember.computed(\n        'gps.lockedPosition',\n        'gps.lockedLatitude',\n        'gps.lockedLongitude',\n        'gps.lockedAccuracy',\n        function () {\n            var position;\n            if (!this.get('gps.lockedPosition')) {\n                Ember.run.next(this, () => {\n                    return this.set('value', null);\n                });\n                return null;\n            } else {\n                position = {\n                    latitude: this.get('gps.lockedLatitude'),\n                    longitude: this.get('gps.lockedLongitude'),\n                    accuracy: this.get('gps.lockedAccuracy'),\n                };\n                Ember.run.next(this, () => {\n                    return this.set('value', JSON.stringify(position));\n                });\n                return position;\n            }\n        },\n    ),\n    distance: Ember.computed('model.project.id', 'lockedPosition', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                return this.get('store')\n                    .query(\n                        'project',\n                        {\n                            id: this.get('model.project.id'),\n                        },\n                        {\n                            reload: true,\n                        },\n                    )\n                    .then((project) => {\n                        var distance, projectCoords;\n                        if (!project.get('location_map')) {\n                            resolve({\n                                value: null,\n                            });\n                            return;\n                        }\n                        projectCoords = JSON.parse(project.get('location_map'));\n                        distance = this.get('gps').getDistance(\n                            {\n                                lat: projectCoords.latitude,\n                                lon: projectCoords.longitude,\n                            },\n                            {\n                                lat: this.get('lockedPosition.latitude'),\n                                lon: this.get('lockedPosition.longitude'),\n                            },\n                        );\n                        return resolve({\n                            value: Math.round(distance) + 'm',\n                        });\n                    });\n            }),\n        });\n    }),\n});\n\nexport default GpsLocationComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/help-dialog.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar HelpDialogComponent;\n\nimport Ember from 'ember';\n\nHelpDialogComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    loadText: function () {\n        var promise;\n        promise = this.get('Collector').ttapi({\n            method: 'get',\n            url: 'get_translation',\n            data: {\n                translation_key: this.get('translation_key'),\n                lang: this.get('intl.primaryLocale'),\n            },\n        });\n        return promise.then((back) => {\n            return this.set('content', new Ember.String.htmlSafe(back.string));\n        });\n    },\n    actions: {\n        show_help: function () {\n            this.loadText();\n            return this.set('show_dialog', true);\n        },\n        removeModal: function () {\n            $('.modal').modal('hide');\n            return this.set('show_dialog', false);\n        },\n    },\n});\n\nexport default HelpDialogComponent;\n","define(\"tt4/components/line-chart\", [\"exports\", \"ember-google-charts/components/line-chart\"], function (_exports, _lineChart) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _lineChart.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/loader-icon.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar LoaderIconComponent;\n\nimport Ember from 'ember';\n\nLoaderIconComponent = Ember.Component.extend();\n\nexport default LoaderIconComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/mass-edit.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MassEditComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nMassEditComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    dialogs: Em.inject.service(),\n    evented: Em.inject.service(),\n    flags: Em.inject.service(),\n    didReceiveAttrs: function () {\n        var c, fields, i, item, len, results;\n        this._super(...arguments);\n        this.set('values', {});\n        c = this.get('Collector');\n        fields = c.fieldArray(this.get('form'));\n        results = [];\n        for (i = 0, len = fields.length; i < len; i++) {\n            item = fields[i];\n            Ember.set(item.features, 'selected', false);\n            if (item.features.mandatory === true) {\n                results.push(Ember.set(item.features, 'dontshowCheckbox', true));\n            } else {\n                results.push(void 0);\n            }\n        }\n        return results;\n    },\n    executing: false,\n    recalculations: Ember.computed(function () {\n        var list;\n        list = [];\n        if (\n            this.get('form') === 'worktime' &&\n            this.get('Collector').testNeeds(['products.overtime'])\n        ) {\n            list.push({\n                value: 'overtime',\n                text: 'settings.timetracker.overtime',\n            });\n        }\n        if (\n            this.get('form') === 'worktime' &&\n            this.get('Collector').testNeeds(['products.saldo'])\n        ) {\n            list.push({\n                value: 'saldo',\n                text: 'settings.timetracker.saldo',\n            });\n        }\n        if (\n            this.get('flags').test('recalculate-autopause') &&\n            this.get('form') === 'worktime' &&\n            this.get('Collector').testNeeds(['products.autopause'])\n        ) {\n            list.push({\n                value: 'autopause',\n                text: 'settings.timetracker.autopause',\n            });\n        }\n        return list;\n    }),\n    clearValueArray: ['date', 'dropdown_userlevel'],\n    // when cancel is clicked this is set and executing is halted\n    die_signal: false,\n    alldone: false,\n    values: {},\n    progress: Ember.computed('numericalProgress', function () {\n        return this.get('numericalProgress') + ' %';\n    }),\n    progressStyle: Ember.computed('progress', function () {\n        return Ember.String.htmlSafe('width: ' + this.get('numericalProgress') + '%');\n    }),\n    ids: Ember.computed('idsStr', function () {\n        return this.get('idsStr').split(',');\n    }),\n    rowCount: Ember.computed(function () {\n        var filtered_rows, ids, rows;\n        ids = this.get('ids');\n        rows = this.get('store').peekAll(this.get('form'));\n        filtered_rows = rows.filter((row) => {\n            if (ids.indexOf(row.get('id')) > -1 && row.get('row_info.status') !== 'locked') {\n                return true;\n            }\n        });\n        return 0 + filtered_rows.get('length');\n    }),\n    locked_rows: Em.computed(function () {\n        var ids, locked_rows, rows;\n        ids = this.get('ids');\n        rows = this.get('store').peekAll(this.get('form'));\n        locked_rows = rows.filter((row) => {\n            if (ids.indexOf(row.get('id')) > -1 && row.get('row_info.status') === 'locked') {\n                return true;\n            }\n        });\n        return locked_rows.length;\n    }),\n    fields: Ember.computed('form', function () {\n        var acceptedFieldNames, acceptedFields, c, fields, hideFields, intl, usableFields;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        acceptedFields = [\n            'dropdown_values',\n            'database',\n            'date',\n            'number',\n            'dropdown_userlevel',\n            'multiselect',\n            'checkbox',\n            'checkboxgroup',\n            'dropdown_options',\n            'hours',\n            'decimal',\n            'time_new',\n            'price',\n            'minutes',\n            'datetime',\n        ];\n        acceptedFieldNames = ['export_salary', 'export_absence', 'id06control'];\n        hideFields = ['worktime.worktype', 'user.emp_relation'];\n        fields = c.fieldArray(this.get('form'));\n        usableFields = fields.filter((field) => {\n            var ref, ref1, ref2;\n            if (((ref = field.name), indexOf.call(acceptedFieldNames, ref) >= 0)) {\n                return true;\n            }\n            if (field.features.disabled) {\n                return false;\n            }\n            // hide field form massedit if it is hidden from normal adding\n            if (field.features.hide && field.features.hide.condition !== '!$editing') {\n                return false;\n            }\n            if (\n                ((ref1 = this.get('form') + '.' + field.name), indexOf.call(hideFields, ref1) >= 0)\n            ) {\n                return false;\n            }\n            if (((ref2 = field.type), indexOf.call(acceptedFields, ref2) >= 0)) {\n                return true;\n            }\n        });\n        return usableFields.map(function (item) {\n            var options;\n            item.prompt = intl.t('massedit.nochange');\n            if (item.features.remove_empty_selection) {\n                item.show_prompt = true;\n            }\n            if (item.type === 'checkbox') {\n                options = [\n                    {\n                        id: '1',\n                        value: intl.t('general.yes'),\n                    },\n                    {\n                        id: '2',\n                        value: intl.t('general.no'),\n                    },\n                ];\n                item.options = options;\n                item.type = 'dropdown_values';\n                Ember.set(item.features, 'dontshowCheckbox', true);\n            }\n            return item;\n        });\n    }),\n    getChanges: function () {\n        var key, ref, ret, value;\n        ret = [];\n        ref = this.get('values');\n        for (key in ref) {\n            value = ref[key];\n            if (value === '(empty)') {\n                ret.push({\n                    key: key,\n                    value: null,\n                });\n            } else {\n                if (Em.isPresent(value)) {\n                    ret.push({\n                        key: key,\n                        value: value,\n                    });\n                }\n            }\n        }\n        return ret;\n    },\n    execute_one: function (heap, count) {\n        var change, changes, form, i, id, len, originals, promise, record, store, userId;\n        id = heap.popObject();\n        userId = this.get('session.currentUser.id');\n        if (!id) {\n            return;\n        }\n        store = this.get('store');\n        form = this.get('form');\n        record = store.peekRecord(form, id);\n        // locked rows cannot be edited\n        if (record.get('row_info.status') === 'locked') {\n            return this.goNext(heap, count);\n        } else {\n            changes = this.getChanges();\n            originals = {};\n            originals[record.get('id')] = record.serialize();\n            for (i = 0, len = changes.length; i < len; i++) {\n                change = changes[i];\n                if (change.key === 'userlevel' && id === userId && form === 'user') {\n                    this.get('dialogs').alert(this.get('intl').t('massedit.self_selected'));\n                    continue;\n                } else {\n                    record.set(change.key, change.value);\n                }\n            }\n            if (this.get('selectedRecalculation')) {\n                record.set('metadata', {\n                    recalculate: this.get('selectedRecalculation'),\n                });\n            }\n            promise = record.save();\n            return promise.then(\n                () => {\n                    return this.goNext(heap, count);\n                },\n                (e) => {\n                    this.pushError(record, e, originals);\n                    return this.goNext(heap, count);\n                },\n            );\n        }\n    },\n    pushError: function (record, e, originals) {\n        var attr, c, field, key, ref;\n        c = this.get('Collector');\n        ref = originals[record.get('id')];\n        // Sadly we have to do it like this because ember still doesn't support rolling back relationships\n        for (key in ref) {\n            attr = ref[key];\n            if (key === 'row_info') {\n                continue;\n            }\n            field = c.field(record.get('constructor.modelName'), key);\n            if (field.type === 'database' && attr) {\n                record.set(key, this.get('store').peekRecord(field.options.form, attr));\n            } else {\n                record.set(key, attr);\n            }\n        }\n        record.rollbackAttributes();\n        return this.get('errors').pushObject(\n            Ember.Object.create({\n                row: record,\n                error: e,\n            }),\n        );\n    },\n    modelFields: Ember.computed('form', function () {\n        return this.get('Collector').fieldArray(this.get('form'));\n    }),\n    goNext: function (heap, count) {\n        this.set('numericalProgress', Math.floor(((count - heap.length) / count) * 1000) / 10);\n        if (heap.length === 0) {\n            this.evented.storeEvent('update', this.form, null);\n            this.set('alldone', true);\n            this.set('values', {});\n            if (this.close && this.errors.length < 1) {\n                this.close();\n            }\n        }\n        if (this.get('die_signal')) {\n            alert('Mass edit cancelled!');\n            this.set('alldone', true);\n            this.set('values', {});\n            return;\n        }\n        return this.execute_one(heap, count);\n    },\n    actions: {\n        clearValue: function (object) {\n            if (Ember.get(object.features, 'selected')) {\n                Ember.set(object.features, 'selected', false);\n                return Ember.set(this, 'values.' + object.name, null);\n            } else {\n                Ember.set(object.features, 'selected', true);\n                return Ember.set(this, 'values.' + object.name, '(empty)');\n            }\n        },\n        start: function () {\n            var heap;\n            this.set('executing', true);\n            this.set('errors', Em.A());\n            this.set('numericalProgress', 0);\n            heap = Em.A(this.get('ids'));\n            return this.execute_one(heap, heap.length);\n        },\n        cancel: function () {\n            return this.set('die_signal', true);\n        },\n        back: function () {\n            if (this.inModal) {\n                if (this.close) {\n                    return this.close();\n                }\n            } else {\n                if (this.getback) {\n                    return this.getback();\n                }\n            }\n        },\n        valueChanged: function (value, fieldName) {\n            return Ember.set(this, 'values.' + fieldName, value);\n        },\n    },\n});\n\nexport default MassEditComponent;\n","define(\"tt4/components/maybe-in-element\", [\"exports\", \"ember-maybe-in-element/components/maybe-in-element\"], function (_exports, _maybeInElement) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _maybeInElement.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/menu-bar.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MenuComponent,\n    indexOf = [].indexOf;\n\nimport collector from '../classes/collector';\n\nimport config from '../config/environment';\n\nimport $ from 'jquery';\n\nEmber.LinkComponent.reopen({\n    attributeBindings: ['role'],\n});\n\nMenuComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    layoutName: 'menu',\n    tagName: 'ul',\n    classNames: ['nav'],\n    classNameBindings: ['sidemenu:nav-tabs:nav-sidebar'],\n    attributeBindings: ['role'],\n    refreshMenu: false,\n    role: Ember.computed(function () {\n        if (this.get('sidemenu')) {\n            return 'tablist';\n        }\n    }),\n    // go thru menu_settings and return all menus that has right privileges\n    menus: Ember.computed(\n        'active',\n        'settings',\n        'intl.primaryLocale',\n        'refreshMenu',\n        'session.currentUser',\n        function () {\n            var active_menu, c, menu_skeleton, menu_variables, self, temp;\n            self = this;\n            menu_skeleton = this.get('settings');\n            menu_variables = this.get('variables');\n            active_menu = this.get('active');\n            c = this.get('Collector');\n            temp = Ember.A([]);\n            $.each(menu_skeleton, function (item) {\n                var variables;\n                if (menu_variables[item] && !menu_variables[item].show_only_add) {\n                    variables = menu_variables[item];\n                    variables.keyname = item;\n                    if (\n                        collector.getPrivilege(variables.form, variables.action) ||\n                        config.APP.KIOSK\n                    ) {\n                        Ember.set(variables, 'active', item === active_menu);\n                        if (!(variables.hide_leftmenu && self.get('hide_extra'))) {\n                            return temp.push(variables);\n                        }\n                    }\n                }\n            });\n            if (c.testNeeds(['worktime'])) {\n                temp.push(menu_variables.comboreport);\n            }\n            if (!config.APP.KIOSK) {\n                temp = this.customLinks(temp);\n            }\n            return temp;\n        },\n    ),\n    customLinks: function (links) {\n        var forms, hide_menus, self;\n        self = this;\n        forms = this.Collector.forms();\n        if (!forms) {\n            return links;\n        }\n        hide_menus = [];\n        if (localStorage && localStorage.hide_menus) {\n            hide_menus = JSON.parse(localStorage.hide_menus);\n        }\n        $.each(forms, function (key, item) {\n            var hide, name;\n            hide = false;\n            if (indexOf.call(hide_menus, key) >= 0) {\n                hide = true;\n            }\n            if (hide && self.get('hide_extra')) {\n                return;\n            }\n            if (key.substring(0, 11) === 'measurement') {\n                if (collector.getPrivilege(key, 'add')) {\n                    name = key.substring(12).toLowerCase();\n                    if (item.name != null) {\n                        name = item.name;\n                    }\n                    return links.push(\n                        Em.Object.create({\n                            link: 'site_safety.measurement.graphs',\n                            link_param: key.substring(12).toLowerCase(),\n                            icon: 'move move-Length',\n                            text: name,\n                            hide_leftmenu: hide,\n                            keyname: key,\n                        }),\n                    );\n                }\n            } else if (item.name != null) {\n                name = item.name;\n                return links.push(\n                    Em.Object.create({\n                        link: 'forms.form-report',\n                        link_param: key,\n                        icon: 'move move-Length',\n                        text: name,\n                        hide_leftmenu: hide,\n                        keyname: key,\n                    }),\n                );\n            }\n        });\n        return links;\n    },\n    //    setHideMenus: Em.on('init', ->\n    //        if localStorage && localStorage.hide_menus\n    //            @set('hide_menus', Em.A(JSON.parse(localStorage.hide_menus)))\n    //    )\n    hide_menus: Em.A([]),\n    sidebar: Ember.computed.equal('type', 'sidebar'),\n    sidr: Ember.computed.equal('type', 'sidr'),\n    actions: {\n        closeSidr: function () {\n            this.set('editmode', false);\n            return $.sidr('close');\n        },\n        editmode: function () {\n            return this.toggleProperty('editmode');\n        },\n        invalidateSession: function () {\n            delete localStorage['first-time-loader-greeting'];\n            localStorage.removeItem('ember_simple_auth-session');\n            return location.reload();\n        },\n        toggleMenuVisibility: function (item) {\n            return item.toggleProperty('hide_leftmenu');\n        },\n        saveMenuState: function (items) {\n            var a;\n            a = items.filterBy('hide_leftmenu', true).mapBy('keyname');\n            this.set('hide_menus', Em.A(a));\n            localStorage.setItem('hide_menus', JSON.stringify(a));\n            this.toggleProperty('refreshMenu');\n            return this.send('closeSidr');\n        },\n    },\n});\n\nexport default MenuComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/message-board-forced.coffee.old\n// Generated by CoffeeScript 2.6.1\n\n/*\n * this component gets forced and unread messages and shows them in modal\n */\nvar MessageBoardForcedComponent;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport $ from 'jquery';\n\nMessageBoardForcedComponent = Ember.Component.extend({\n    session: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    forcedArr: Em.A([]),\n    didInsertElement: function () {\n        var self;\n        self = this;\n        //do not fetch forced messaged if impersonated user\n        if (this.get('session.session.content.authenticated.scope')) {\n            return;\n        }\n        return $.ajax({\n            url: self.get('ttapi').host + '/messageboard/forced',\n            type: 'GET',\n            headers: {\n                Authorization: 'Bearer ' + self.get('session.session.authenticated.access_token'),\n            },\n            success: function (data) {\n                var error, json;\n                //convert to json object and set as ember object\n                if (data != null) {\n                    try {\n                        if ('string' === typeof data) {\n                            json = $.parseJSON(data);\n                        }\n                    } catch (error1) {\n                        error = error1;\n                        throw new Ember.Error('unvalid JSON from messageboard forced: ' + data);\n                    }\n                    if (json) {\n                        return Ember.run(function () {\n                            var msg, msgs;\n                            msgs = Ember.Object.create(json);\n                            if (msgs.messageboards == null) {\n                                return;\n                            }\n                            msg = msgs.messageboards;\n                            return msg.forEach(function (tmp) {\n                                if (tmp.forced) {\n                                    return self.forcedArr.pushObject(tmp);\n                                }\n                            });\n                        });\n                    }\n                }\n            },\n        });\n    },\n});\n\nexport default MessageBoardForcedComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/modal-array.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ModalArrayComponent;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport $ from 'jquery';\n\nModalArrayComponent = Ember.Component.extend({\n    session: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    tagName: '',\n    to_users: Em.A([]),\n    didInsertElement: function () {\n        if (this.get('array.firstObject')) {\n            this.set('currentMessage', this.get('array.firstObject'));\n            this.getNames();\n            return $('#array-modal').modal('show');\n        }\n    },\n    getNames: function () {\n        var readed_users, self, session;\n        session = this.get('session');\n        if (session) {\n            if (this.Collector.getUserlevel(session) !== 5) {\n                return;\n            }\n        }\n        self = this;\n        readed_users = this.get('currentMessage.readed');\n        return this.get('store')\n            .findByIds('user', this.get('currentMessage.to'))\n            .then(function (arr) {\n                var i, len, to_users, user, user_obj;\n                to_users = [];\n                for (i = 0, len = arr.length; i < len; i++) {\n                    user = arr[i];\n                    user_obj = {};\n                    user_obj.name = user.get('lastname') + ' ' + user.get('firstname');\n                    //check if user is in \"readed\"-array\n                    if (readed_users != null) {\n                        if (readed_users.indexOf(user.get('id')) !== -1) {\n                            user_obj.readed = true;\n                        }\n                    }\n                    to_users.push(user_obj);\n                }\n                return self.set('to_users', to_users);\n            });\n    },\n    actions: {\n        closeAndMarkAsRead: function (row) {\n            var arr, params;\n            // here we have to somehow mark message as read\n            params = {};\n            params.rowid = row.id;\n            this.get('ttapi').request('/msgboard', {\n                type: 'POST',\n                data: params,\n            });\n            arr = this.get('array');\n            arr.removeAt(0);\n            this.set('currentMessage', this.get('array.firstObject'));\n            if (arr.length === 0) {\n                return $('#array-modal').modal('hide');\n            }\n        },\n    },\n});\n\nexport default ModalArrayComponent;\n","define(\"tt4/components/modal-dialog\", [\"exports\", \"ember-modal-dialog/components/modal-dialog\"], function (_exports, _modalDialog) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _modalDialog.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/multi-buttons.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MultiButtonsComponent;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nMultiButtonsComponent = Ember.Component.extend({\n    // button array Em.A Ember.Object.create {id: id,name: text}\n    content: null,\n    orderable: false,\n    initValues: Ember.on('init', 'didReceiveAttrs',  function () {\n        var content, counter, values;\n        values = this.get('values');\n        content = this.get('content');\n        if (values) {\n            counter = 1;\n            return $.each(values, (key, item) => {\n                var object;\n                object = content.find(function (test) {\n                    return test.id === item;\n                });\n                if (!object) {\n                    return;\n                }\n                object.set('active', true);\n                if (this.get('orderable')) {\n                    return object.set('order', counter++);\n                }\n            });\n        } else {\n            return Ember.run.next(this, function () {\n                return this.set('values', Em.A([]));\n            });\n        }\n    }),\n    updateValues: function () {\n        var content, values;\n        values = Em.A([]);\n        content = this.get('content');\n        $.each(content.sortBy('order'), (key, item) => {\n            if (item.get('active')) {\n                return values.pushObject(item.get('id'));\n            }\n        });\n        return Ember.run.next(this, function () {\n            return this.set('values', values);\n        });\n    },\n    reorderButtons: function () {\n        var content, counter;\n        content = this.get('content');\n        counter = 1;\n        return $.each(content.sortBy('order'), (key, item) => {\n            if (item.get('active')) {\n                return item.set('order', counter++);\n            }\n        });\n    },\n    actions: {\n        click: function (button) {\n            var values;\n            if (this.get('singleSelectMode')) {\n                this.get('content').forEach((btn) => {\n                    return btn.set('active', false);\n                });\n                button.set('active', true);\n                this.updateValues();\n                return;\n            }\n            values = this.get('values');\n            if (button.get('active')) {\n                button.set('order', null);\n                button.set('active', false);\n                if (this.get('orderable')) {\n                    this.reorderButtons();\n                }\n            } else {\n                if (this.get('orderable')) {\n                    button.set('order', values.length + 1);\n                }\n                button.set('active', true);\n            }\n            return this.updateValues();\n        },\n    },\n});\n\nexport default MultiButtonsComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/notices-graph.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar NoticesGraphComponent;\n\nimport Ember from 'ember';\n\nNoticesGraphComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    classNames: ['notices-graph-container'],\n    // DATA\n    data: Ember.computed('all', 'overdue', function () {\n        var all, intl, overdue, solved;\n        intl = this.get('intl');\n        all = this.get('all');\n        overdue = this.get('overdue');\n        solved = all - this.get('not_solved');\n        return [\n            ['Title', 'Value'],\n            [intl.t('site-safety.overview.notices_total'), all],\n            [intl.t('site-safety.overview.notices_solved'), solved],\n            [intl.t('site-safety.overview.notices_overdue'), overdue],\n        ];\n    }),\n    // COLORS\n    colors: '#FFC56C,#5CB85C,#D9534F',\n    // OPTIONS\n    options: {\n        pieHole: 0.9,\n        chartArea: {\n            width: '90%',\n            height: '95%',\n        },\n        height: 200,\n        width: 350,\n        pieSliceTextStyle: {\n            color: 'black',\n            fontSize: 20,\n        },\n        pieSliceText: 'value',\n    },\n});\n\n//        slices: {\n//            1: {offset: 0.05}\n//            2: {offset: 0.05}\n//            3: {offset: 0.05}\n//        }\nexport default NoticesGraphComponent;\n","define(\"tt4/components/notification-container\", [\"exports\", \"ember-cli-notifications/components/notification-container\"], function (_exports, _notificationContainer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _notificationContainer.default;\n    }\n  });\n});\n","import NotificationMessage from 'ember-cli-notifications/components/notification-message';\n\nimport config from 'ember-get-config';\n\nconst globals = config['ember-cli-notifications'] || {}; // Import app config object\n\nexport default NotificationMessage.extend({\n  init() {\n    this._super(...arguments);\n    this.icons = globals.icons || 'svg';\n    this.svgs = {\n        'success': 'success',\n        'warning': 'warning',\n        'info': 'info',\n        'error': 'error',\n    };\n  }\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/object-input.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ObjectInputComponent;\n\nimport Ember from 'ember';\n\nimport { t } from 'ember-intl';\n\nObjectInputComponent = Ember.Component.extend({\n    // Where the objects live\n    objects: Em.A([]),\n    session: Em.inject.service(),\n    intl: Em.inject.service(),\n    impersonate: Em.computed(function () {\n        return this.get('session.session.content.authenticated.scope');\n    }),\n    // We have to convert to objects instead of plain array so we can bind in template\n    placeholderObjects: Em.computed('objects.[]', function () {\n        var i, len, locked, object, objects, obs;\n        objects = this.get('objects');\n        obs = Em.A([]);\n        for (i = 0, len = objects.length; i < len; i++) {\n            object = objects[i];\n            if (object['id'] !== '') {\n                locked = true;\n            } else {\n                locked = false;\n            }\n            obs.push({\n                name: object['name'],\n                id: object['id'],\n                locked: locked,\n                check_id: Math.random().toString(32).substr(7),\n            });\n        }\n        return obs;\n    }),\n    // Save button text\n    saveText: null,\n    // Add button text\n    addText: null,\n    // You can disable all inputs and buttons\n    disabled: false,\n    actions: {\n        // Add objects to our array\n        add: function () {\n            return this.get('placeholderObjects').pushObject({\n                id: '',\n                name: '',\n            });\n        },\n        // Remove objects from our array\n        remove: function (obj) {\n            this.get('placeholderObjects').removeObject(obj);\n            return this.send('save');\n        },\n        // Send save action with our array\n        save: function () {\n            var arr, i, k, len, obj, ref;\n            //console.log @get('placeholderObjects')\n            arr = [];\n            ref = this.get('placeholderObjects');\n            for (k = i = 0, len = ref.length; i < len; k = ++i) {\n                obj = ref[k];\n                arr.push({\n                    id: obj['id'],\n                    name: obj['name'],\n                });\n            }\n            this.set('objects', arr);\n            if (this.get('save')) {\n                return this.save(this.get('objects'));\n            }\n        },\n        // validate external\n        validateKeys: function (obj) {\n            var i, len, name, object, objects, ref, string;\n            if (obj['name'] === '') {\n                return Ember.set(obj, 'id', '');\n            } else {\n                if (!obj['locked']) {\n                    name = obj['name'];\n                    string = name\n                        .toString()\n                        .underscore()\n                        .replace(/[^\\w\\s]/gi, '')\n                        .substr(0, 20);\n                    if (string === '') {\n                        string = Math.random()\n                            .toString(32)\n                            .replace(/[^a-z]+/g, '')\n                            .substr(2, 5);\n                    }\n                    // check if key already exists and add some random crap\n                    objects = this.get('objects');\n                    ref = this.get('placeholderObjects');\n                    for (i = 0, len = ref.length; i < len; i++) {\n                        object = ref[i];\n                        if (object['check_id'] !== obj['check_id']) {\n                            if (object['id'] === string) {\n                                string +=\n                                    '_' +\n                                    Math.random()\n                                        .toString(32)\n                                        .replace(/[^a-z]+/g, '')\n                                        .substr(2, 5);\n                                break;\n                            }\n                        }\n                    }\n                    return Ember.set(obj, 'id', string);\n                }\n            }\n        },\n    },\n    init: function () {\n        this._super();\n        this.set('saveText', this.get('intl').t('general.save'));\n        return this.set('addText', this.get('intl').t('general.add'));\n    },\n});\n\nexport default ObjectInputComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/pagi-nate.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PagiNateComponent;\n\nimport Ember from 'ember';\n\nPagiNateComponent = Ember.Component.extend({\n    // Evil Markus commented this because should be handled in controller/parent company and was messing up in reports with loading state.\n    // Let's see what breaks\n    //    didInsertElement: ->\n    //        @set 'currentPage', 1\n    currentPage: null,\n    showPagination: Ember.computed.gt('pageCount', 1),\n    pages: Ember.computed('pageCount', 'currentPage', function () {\n        var currentPage,\n            end,\n            limiter,\n            middle,\n            midpoint,\n            pageCount,\n            pages,\n            ref,\n            ref1,\n            ref2,\n            ref3,\n            start;\n        pageCount = this.get('pageCount');\n        currentPage = this.get('currentPage');\n        limiter = function (item) {\n            return item >= 1 && item <= pageCount;\n        };\n        start = [1, 2, 3, 4].filter(limiter);\n        end = function () {\n            var results = [];\n            for (\n                var j = (ref = pageCount - 3), ref1 = pageCount + 1;\n                ref <= ref1 ? j < ref1 : j > ref1;\n                ref <= ref1 ? j++ : j--\n            ) {\n                results.push(j);\n            }\n            return results;\n        }\n            .apply(this)\n            .filter(limiter);\n        pages = this.union(start, end);\n        midpoint = currentPage;\n        if (currentPage < 8) {\n            midpoint = 8;\n        }\n        if (currentPage + 8 > pageCount) {\n            midpoint = pageCount - 8;\n        }\n        middle = function () {\n            var results = [];\n            for (\n                var j = (ref2 = midpoint - 3), ref3 = midpoint + 4;\n                ref2 <= ref3 ? j < ref3 : j > ref3;\n                ref2 <= ref3 ? j++ : j--\n            ) {\n                results.push(j);\n            }\n            return results;\n        }\n            .apply(this)\n            .filter(limiter);\n        pages = this.union(pages, middle);\n        return this.fillCaps(pages);\n    }),\n    showCurrentpageOverLimit: Ember.computed('currentPage', function () {\n        return (\n            this.get('queryLimitFull') &&\n            this.get('currentPage') !== this.get('pageCount') &&\n            !this.get('hasNextPage')\n        );\n    }),\n    // if there are caps between numbers fill those with ... (or with number if cap length is only 1)\n    fillCaps: function (array) {\n        var break_indexes, i, j, last, len, ref;\n        last = 0;\n        break_indexes = [];\n        array.forEach(function (val, key) {\n            if (last + 1 !== val) {\n                break_indexes.push([key, last + 2 === val ? last + 1 : '...']);\n            }\n            return (last = val);\n        });\n        ref = break_indexes.reverse();\n        for (j = 0, len = ref.length; j < len; j++) {\n            i = ref[j];\n            array.splice(i[0], 0, i[1]);\n        }\n        return array;\n    },\n    // union two arrays of numbers to one array with unique values\n    union: function (arr1, arr2) {\n        var onlyUnique, sortNumber;\n        onlyUnique = function (value, index, self) {\n            return self.indexOf(value) === index;\n        };\n        sortNumber = function (a, b) {\n            return a - b;\n        };\n        return arr1.concat(arr2).filter(onlyUnique).sort(sortNumber);\n    },\n    hasPreviousPage: Ember.computed.gt('currentPage', 1),\n    hasNextPage: Ember.computed('currentPage', 'pageCount', function () {\n        return this.get('currentPage') < this.get('pageCount');\n    }),\n    actions: {\n        nextPage: function () {\n            this.set('currentPage', parseInt(this.get('currentPage'), 10) + 1);\n            if (this.get('pageChange')) {\n                return this.get('pageChange')(this.get('currentPage'));\n            }\n        },\n        previousPage: function () {\n            this.set('currentPage', parseInt(this.get('currentPage'), 10) - 1);\n            if (this.get('pageChange')) {\n                return this.get('pageChange')(this.get('currentPage'));\n            }\n        },\n        changePage: function (page) {\n            if (page === '...') {\n                return;\n            }\n            this.set('currentPage', page);\n            if (this.get('pageChange')) {\n                return this.get('pageChange')(this.get('currentPage'));\n            }\n        },\n    },\n});\n\nexport default PagiNateComponent;\n","define(\"tt4/components/pie-chart\", [\"exports\", \"ember-google-charts/components/pie-chart\"], function (_exports, _pieChart) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _pieChart.default;\n    }\n  });\n});\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<svg class={{if @disabled \\\"play-button-disabled\\\"\\\"play-button\\\"}} xmlns=\\\"http://www.w3.org/2000/svg\\\" width={{if @width @width \\\"70\\\"}} height={{if @height @height \\\"70\\\"}} viewBox=\\\"0 0 99 99\\\" {{action @click}}>\\n    <circle cx=\\\"49.5\\\" cy=\\\"49.5\\\" r=\\\"49.5\\\"/>\\n    <path d=\\\"M17.521,6.129a4,4,0,0,1,6.957,0l14.13,24.9A4,4,0,0,1,35.13,37H6.87a4,4,0,0,1-3.479-5.974Z\\\" transform=\\\"translate(75 28.5) rotate(90)\\\" fill=\\\"#fff\\\"/>\\n</svg>\", {\"contents\":\"<svg class={{if @disabled \\\"play-button-disabled\\\"\\\"play-button\\\"}} xmlns=\\\"http://www.w3.org/2000/svg\\\" width={{if @width @width \\\"70\\\"}} height={{if @height @height \\\"70\\\"}} viewBox=\\\"0 0 99 99\\\" {{action @click}}>\\n    <circle cx=\\\"49.5\\\" cy=\\\"49.5\\\" r=\\\"49.5\\\"/>\\n    <path d=\\\"M17.521,6.129a4,4,0,0,1,6.957,0l14.13,24.9A4,4,0,0,1,35.13,37H6.87a4,4,0,0,1-3.479-5.974Z\\\" transform=\\\"translate(75 28.5) rotate(90)\\\" fill=\\\"#fff\\\"/>\\n</svg>\",\"moduleName\":\"tt4/components/play-button.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/play-button.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/plus-menu.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PlusMenuComponent;\n\nimport Ember from 'ember';\n\nimport menu from '../mixins/menu';\n\nPlusMenuComponent = Ember.Component.extend(menu, {\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    analytics: Ember.inject.service(),\n\n    init() {\n        this._super(...arguments);\n        // we need to bind this components context to the function 'trackDropdownOpen' so we can call analytics from within the function\n        this.trackDropdownOpen = this.trackDropdownOpen.bind(this);\n    },\n\n    didInsertElement: function () {\n        //close display-menu only if clicked outside of it\n        return $('body').on('click touchend', (e) => {\n            $('#add-menu-desktop').attr('data-anchor', 'navigation-top-plus');\n\n            if (\n                !$('#add-menu-desktop').is(e.target) &&\n                $('#add-menu-desktop').has(e.target).length === 0\n            ) {\n                $('#add-menu-desktop').addClass('plusClose');\n\n                if (this.get('isDestroyed')) {\n                    return;\n                }\n                this.set('plusState', false);\n            }\n        });\n    },\n    plusState: false,\n    isAddPage: Ember.computed('path', 'session.currentUser', function () {\n        var i, len, link, links, path;\n        if (!this.get('session.currentUser')) {\n            return;\n        }\n        path = this.get('path');\n        if (!path) {\n            return;\n        }\n        if (path.slice(-6) === '.index') {\n            path = path.slice(0, -6);\n        }\n        if (path === 'loading' || path === 'error') {\n            return false;\n        }\n        links = this.getAddLinks();\n        for (i = 0, len = links.length; i < len; i++) {\n            link = links[i];\n            if (path.indexOf('saved') !== -1) {\n                return true;\n            }\n            if (Ember.isArray(link.link) && path.indexOf(link.link[0]) !== -1) {\n                return true;\n            }\n        }\n        return false;\n    }),\n    addLinks: Ember.computed(\n        'session.currentUser',\n        'intl.primaryLocale',\n        'refreshMenus',\n        function () {\n            if (!this.get('session.currentUser')) {\n                return;\n            }\n            return this.getAddLinks();\n        },\n    ),\n    plusLinks: Ember.computed(\n        'session.currentUser',\n        'intl.primaryLocale',\n        'refreshMenus',\n        function () {\n            var even, links, odd, plusarray, v;\n            if (!this.get('session.currentUser')) {\n                return;\n            }\n            links = this.getAddLinks();\n            if (links.length < 10) {\n                return false;\n            } else {\n                odd = (function () {\n                    var i, len, results;\n                    results = [];\n                    for (i = 0, len = links.length; i < len; i += 2) {\n                        v = links[i];\n                        results.push(v);\n                    }\n                    return results;\n                })();\n                even = (function () {\n                    var i, len, ref, results;\n                    ref = links.slice(1);\n                    results = [];\n                    for (i = 0, len = ref.length; i < len; i += 2) {\n                        v = ref[i];\n                        results.push(v);\n                    }\n                    return results;\n                })();\n                plusarray = [odd, even];\n                return plusarray;\n            }\n        },\n    ),\n    addLinksReversed: Ember.computed(\n        'session.currentUser',\n        'intl.primaryLocale',\n        'refreshMenus',\n        function () {\n            var links;\n            if (!this.get('session.currentUser')) {\n                return;\n            }\n            links = this.getAddLinks();\n            links.reverse();\n            return links;\n        },\n    ),\n    // set the analytics category for the plus menu\n    trackDropdownOpen: function () {\n        return this.set('analytics.customData', { category: 'plus-menu' });\n    },\n    actions: {\n        toggleplusMenu: function () {\n            if (this.get('isDestroyed')) {\n                return;\n            }\n            this.toggleProperty('plusState');\n            return false;\n        },\n        closeplusMenu: function () {\n            this.toggleProperty('plusmobileState');\n            return false;\n        },\n        toggleScroll: function () {\n            Ember.run.later(\n                this,\n                function () {\n                    var elmt;\n                    elmt = $(this.get('element')).find('.mobile-button-inner')[0];\n                    if (!elmt) {\n                        return this.send('toggleScroll');\n                    }\n                    return (elmt.scrollTop = elmt.scrollHeight);\n                },\n                50,\n            );\n            return false;\n        },\n        goToSkvLink: function (link) {\n            return window.open(link, '_blank');\n        },\n    },\n});\n\nexport default PlusMenuComponent;\n","define(\"tt4/components/power-calendar-multiple\", [\"exports\", \"ember-power-calendar/components/power-calendar-multiple\"], function (_exports, _powerCalendarMultiple) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerCalendarMultiple.default;\n    }\n  });\n});\n","define(\"tt4/components/power-calendar-multiple/days\", [\"exports\", \"ember-power-calendar/components/power-calendar-multiple/days\"], function (_exports, _days) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _days.default;\n    }\n  });\n});\n","define(\"tt4/components/power-calendar-range\", [\"exports\", \"ember-power-calendar/components/power-calendar-range\"], function (_exports, _powerCalendarRange) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerCalendarRange.default;\n    }\n  });\n});\n","define(\"tt4/components/power-calendar-range/days\", [\"exports\", \"ember-power-calendar/components/power-calendar-range/days\"], function (_exports, _days) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _days.default;\n    }\n  });\n});\n","define(\"tt4/components/power-calendar\", [\"exports\", \"ember-power-calendar/components/power-calendar\"], function (_exports, _powerCalendar) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerCalendar.default;\n    }\n  });\n});\n","define(\"tt4/components/power-calendar/days\", [\"exports\", \"ember-power-calendar/components/power-calendar/days\"], function (_exports, _days) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _days.default;\n    }\n  });\n});\n","define(\"tt4/components/power-calendar/nav\", [\"exports\", \"ember-power-calendar/components/power-calendar/nav\"], function (_exports, _nav) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _nav.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select-multiple-with-create\", [\"exports\", \"ember-power-select-with-create/components/power-select-multiple-with-create\"], function (_exports, _powerSelectMultipleWithCreate) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerSelectMultipleWithCreate.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select-multiple\", [\"exports\", \"ember-power-select/components/power-select-multiple\"], function (_exports, _powerSelectMultiple) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerSelectMultiple.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select-multiple/trigger\", [\"exports\", \"ember-power-select/components/power-select-multiple/trigger\"], function (_exports, _trigger) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _trigger.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select-with-create\", [\"exports\", \"ember-power-select-with-create/components/power-select-with-create\"], function (_exports, _powerSelectWithCreate) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerSelectWithCreate.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select-with-create/suggested-option\", [\"exports\", \"ember-power-select-with-create/components/power-select-with-create/suggested-option\"], function (_exports, _suggestedOption) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _suggestedOption.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select\", [\"exports\", \"ember-power-select/components/power-select\"], function (_exports, _powerSelect) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerSelect.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select/before-options\", [\"exports\", \"ember-power-select/components/power-select/before-options\"], function (_exports, _beforeOptions) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _beforeOptions.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select/no-matches-message\", [\"exports\", \"ember-power-select/components/power-select/no-matches-message\"], function (_exports, _noMatchesMessage) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _noMatchesMessage.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select/options\", [\"exports\", \"ember-power-select/components/power-select/options\"], function (_exports, _options) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _options.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select/placeholder\", [\"exports\", \"ember-power-select/components/power-select/placeholder\"], function (_exports, _placeholder) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _placeholder.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select/power-select-group\", [\"exports\", \"ember-power-select/components/power-select/power-select-group\"], function (_exports, _powerSelectGroup) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerSelectGroup.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select/search-message\", [\"exports\", \"ember-power-select/components/power-select/search-message\"], function (_exports, _searchMessage) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _searchMessage.default;\n    }\n  });\n});\n","define(\"tt4/components/power-select/trigger\", [\"exports\", \"ember-power-select/components/power-select/trigger\"], function (_exports, _trigger) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _trigger.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/project-help.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectHelpComponent;\n\nimport Ember from 'ember';\n\nProjectHelpComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    helptext: null,\n    projectidObs: Ember.observer('projectid', function () {\n        return Ember.run.once(this, this.processProjectChange);\n    }),\n    // Ensure we also run once on initial attrs when projectid already set\n    didReceiveAttrs() {\n        this._super(...arguments);\n        if (this.get('projectid')) {\n            Ember.run.once(this, this.processProjectChange);\n        }\n    },\n    processProjectChange: function () {\n        var self, store;\n        self = this;\n        this.set('helptext', null);\n        //get project info\n        store = this.get('store');\n        if (this.get('projectid')) {\n            return store\n                .findRecord('project', this.get('projectid'), {\n                    reload: true,\n                })\n                .then(function (data) {\n                    return self.set('helptext', data.get('help'));\n                });\n        } else {\n            return self.set('helptext', null);\n        }\n    },\n});\n\nexport default ProjectHelpComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/project-info.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectInfoComponent;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nProjectInfoComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    ttapi: Ember.inject.service(),\n    record: Ember.computed('project', function () {\n        return this.get('store').findRecord('project', this.get('project'));\n    }),\n    tr: Ember.computed('project', function () {\n        var c, project;\n        c = this.get('Collector');\n        project = this.get('project');\n        if (c.testNeedsOne('tr')) {\n            return this.get('store').query('tr', {\n                project: project,\n                date:\n                    moment().subtract(1, 'months').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD'),\n            });\n        }\n    }),\n    tr_mean: Ember.computed('tr', function () {\n        var color, mean, trs;\n        trs = this.get('tr');\n        mean = this.calculateMean(trs, 'tr_rating');\n        color = this.getRatingColor(mean);\n        return {\n            mean: mean.toFixed(0) + '%',\n            color: color,\n        };\n    }),\n    mvr: Ember.computed('project', function () {\n        var c, project;\n        c = this.get('Collector');\n        project = this.get('project');\n        if (c.testNeedsOne('mvr')) {\n            return this.get('store').query('mvr', {\n                project: project,\n                date:\n                    moment().subtract(1, 'months').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD'),\n            });\n        }\n    }),\n    mvr_mean: Ember.computed('mvr', function () {\n        var color, mean, mvrs;\n        mvrs = this.get('mvr');\n        mean = this.calculateMean(mvrs, 'mvr_rating');\n        color = this.getRatingColor(mean);\n        return {\n            mean: mean.toFixed(0) + '%',\n            color: color,\n        };\n    }),\n    getRatingColor: function (value) {\n        if (value >= 95) {\n            return 'good-rating';\n        } else if (value >= 90) {\n            return 'decent-rating';\n        } else if (value < 90) {\n            return 'bad-rating';\n        } else {\n            return 'default';\n        }\n    },\n    calculateMean: function (data, field) {\n        var total;\n        if (data.get('content.meta.count') === 0) {\n            return '-';\n        }\n        total = 0;\n        data.forEach(function (item) {\n            return (total += item.get(field));\n        });\n        return total / data.get('content.meta.count');\n    },\n    events: Em.computed('project', function () {\n        var c, project;\n        c = this.get('Collector');\n        project = this.get('project');\n        if (c.testNeedsOne('worksitediary')) {\n            return this.get('store').query('worksitediary', {\n                project: project,\n                date:\n                    moment().startOf('week').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('week').format('YYYY-MM-DD'),\n                sideload: ['user.firstname', 'user.lastname', 'user.image'],\n            });\n        }\n    }),\n    event_fields: Ember.computed(function () {\n        var obj;\n        obj = {\n            first_row: this.hasFields(['title'], 'worksitediary'),\n            rows: [\n                this.hasFields(['description'], 'worksitediary'),\n                this.hasFields(['weather'], 'worksitediary'),\n                this.hasFields(['images'], 'worksitediary'),\n            ],\n        };\n        return obj;\n    }),\n    hasFields: function (fields, form = null) {\n        var c, field, i, len, ret;\n        c = this.get('Collector');\n        if (!form) {\n            form = 'user';\n        }\n        ret = [];\n        for (i = 0, len = fields.length; i < len; i++) {\n            field = fields[i];\n            if (c.fieldExists(form, field)) {\n                ret.push(field);\n            }\n        }\n        return ret;\n    },\n    actions: {\n        openSkvLink: function () {\n            return window.open(\n                this.get('ttapi').host +\n                    '/personalliggare?partnerid=' +\n                    this.get('session.currentUser.partnerid') +\n                    '&pl_number=' +\n                    this.get('record.skv_number'),\n                '_blank',\n            );\n        },\n        toggleMap: function () {\n            var elmt;\n            elmt = $(this.get('element')).find('.project-info-content')[0];\n            this.toggleProperty('show_map');\n            return Ember.run.later(\n                this,\n                function () {\n                    return (elmt.scrollTop = elmt.scrollHeight);\n                },\n                50,\n            );\n        },\n        removeProjectModal: function () {\n            return this.set('project', '');\n        },\n    },\n});\n\nexport default ProjectInfoComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/promo-component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PromoComponentComponent;\n\nimport Ember from 'ember';\n\nPromoComponentComponent = Ember.Component.extend({\n    showMessage: Em.computed(function () {\n        if (\n            this.get('start') &&\n            this.get('end') &&\n            moment().format('YYYY-MM-DD') >= this.get('start') &&\n            moment().format('YYYY-MM-DD') <= this.get('end')\n        ) {\n            return true;\n        }\n        return false;\n    }),\n});\n\nexport default PromoComponentComponent;\n","import Ember from 'ember';\nimport { get, set } from '@ember/object';\nimport Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\nimport EmberError from '@ember/error';\nimport { htmlSafe } from '@ember/template';\nimport { later } from '@ember/runloop';\n\n//get promotion messages from AT2\n\nconst PromoMessagesComponent = Component.extend({\n    session: service(),\n    Collector: service('collector-service'),\n    localStorageWrapper: service(),\n    dialogs: service(),\n    router: service(),\n    promoMessages: service(),\n\n    forcedArr: A([]),\n\n    didInsertElement() {\n        if (!Ember.testing) {\n            return later(\n                this,\n                () => {\n                    return this.checkmessages();\n                },\n                6000,\n            );\n        }\n    },\n\n    actions: {\n        closeModal() {\n            return set(this, 'show', false);\n        },\n    },\n\n    checkmessages() {\n        // do not show promo-messages on the day that service was created\n        if (\n            moment(get(this, 'session.currentUser.company_info.row_info.created')).format(\n                'YYYY-MM-DD',\n            ) === moment().format('YYYY-MM-DD')\n        ) {\n            return;\n        }\n        // do not show promo-messages if service has company name as empty, trying to not show welcome wizard and promomessages on each other\n        if (get(this, 'session.currentUser.company_info.company_name') === 'empty') {\n            return;\n        }\n        // do not show promo-messages if new user who is changing password\n        if (get(this, 'router.currentRouteName') === 'changepassword') {\n            return;\n        }\n\n        //do not fetch messages if impersonated user\n        if (get(this, 'session.session.content.authenticated.scope')) {\n            return;\n        }\n\n        //const products = get(\"Collector\").get(\"products\");\n        const products = get(this, 'Collector.products');\n        const country = get(this, 'session.currentUser.company_info.country');\n        const userlevel = get(this, 'session.currentUser.userlevel');\n\n        //return if any of the parameter is null\n        if (!products || !country || !userlevel) {\n            return;\n        }\n\n        const promise = this.promoMessages.getMessages({\n            country,\n            userlevel,\n            prods: products,\n            new: true,\n        });\n        const read_msgs = A([]);\n        const subtle_msgs = A([]);\n        const ls_key = get(this, 'session.currentUser.id') + '_promomessages';\n        const ls_sub_key = get(this, 'session.currentUser.id') + '_promomessages_subtle';\n        const already_read = A(get(this, 'localStorageWrapper').getItem(ls_key));\n\n        return promise.then(\n            (data) => {\n                //convert to json object and set as ember object\n                if (data != null) {\n                    const msg = data.data;\n                    if (msg != null) {\n                        msg.forEach((tmp) => {\n                            if (already_read.indexOf(tmp.id) === -1) {\n                                tmp.message = htmlSafe(tmp.message);\n                                tmp.short_description = htmlSafe(tmp.short_description);\n                                if (tmp.forced === true) {\n                                    get(this, 'forcedArr').pushObject(tmp);\n                                    return read_msgs.push(tmp.id);\n                                } else {\n                                    return subtle_msgs.push(tmp);\n                                }\n                            }\n                        });\n\n                        const all_read = already_read.concat(read_msgs);\n\n                        get(this, 'localStorageWrapper').setItems(ls_key, all_read);\n                        return get(this, 'localStorageWrapper').setItems(ls_sub_key, subtle_msgs);\n                    }\n                }\n            },\n\n            function (reason) {\n                throw new EmberError(\n                    'promomessages fetch fail: ' +\n                        (() => {\n                            try {\n                                return JSON.stringify(reason);\n                            } catch (error) {\n                                return (reason = error);\n                            }\n                        })(),\n                );\n            },\n        );\n    },\n});\n\nexport default PromoMessagesComponent;\n","define(\"tt4/components/radio-button-input\", [\"exports\", \"ember-radio-button/components/radio-button-input\"], function (_exports, _radioButtonInput) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _radioButtonInput.default;\n    }\n  });\n});\n","define(\"tt4/components/radio-button\", [\"exports\", \"ember-radio-button/components/radio-button\"], function (_exports, _radioButton) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _radioButton.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/range-picker.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RangePickerComponent;\n\nimport Ember from 'ember';\n\nimport { t } from 'ember-intl';\n\nimport $ from 'jquery';\n\nRangePickerComponent = Ember.Component.extend({\n    store: Em.inject.service(),\n    classNames: [],\n    attributeBindings: ['start', 'end', 'serverFormat'],\n    start: void 0,\n    end: void 0,\n    timePicker: false,\n    format: moment.localeData().longDateFormat('L'),\n    serverFormat: 'YYYY-MM-DD',\n    rangeText: Ember.computed('start', 'end', 'value', function () {\n        var end, format, serverFormat, split, start, value;\n        format = this.get('format');\n        serverFormat = this.get('serverFormat');\n        start = this.get('start');\n        end = this.get('end');\n        if ((value = this.get('value'))) {\n            split = value.split('_');\n            return (\n                moment(split[0], serverFormat).format(format) +\n                this.get('separator') +\n                moment(split[1], serverFormat).format(format)\n            );\n        } else if (!Ember.isEmpty(start) && !Ember.isEmpty(end)) {\n            return (\n                moment(start, serverFormat).format(format) +\n                this.get('separator') +\n                moment(end, serverFormat).format(format)\n            );\n        }\n        return '';\n    }),\n    opens: null,\n    drops: null,\n    separator: ' - ',\n    singleDatePicker: false,\n    placeholder: null,\n    buttonClasses: ['btn'],\n    applyClass: null,\n    cancelClass: null,\n    limit: {\n        days: 365,\n    },\n    ranges: {\n        Today: [moment(), moment()],\n        Yesterday: [moment().subtract(1, 'days'), moment().subtract(1, 'days')],\n        'Last 7 Days': [moment().subtract(6, 'days'), moment()],\n        'Last 30 Days': [moment().subtract(29, 'days'), moment()],\n        'This Month': [moment().startOf('month'), moment().endOf('month')],\n        'Last Month': [\n            moment().subtract(1, 'month').startOf('month'),\n            moment().subtract(1, 'month').endOf('month'),\n        ],\n    },\n    removeDropdownOnDestroy: false,\n    cancelLabel: t('general.cancel'),\n    applyAction: null,\n    cancelAction: null,\n    customRangeLabel: t('rangepicker.custom_range'),\n    //Init the dropdown when the component is added to the DOM\n    didInsertElement: function () {\n        var d, endDate, momentEndDate, momentStartDate, self, splitted, startDate, value;\n        self = this;\n        value = this.get('value');\n        if (value) {\n            splitted = value.split('_');\n            momentStartDate = moment(splitted[0], this.get('serverFormat'));\n            momentEndDate = moment(splitted[1], this.get('serverFormat'));\n        } else {\n            momentStartDate = moment(this.get('start'), this.get('serverFormat'));\n            momentEndDate = moment(this.get('end'), this.get('serverFormat'));\n        }\n        startDate = momentStartDate.isValid() ? momentStartDate : void 0;\n        endDate = momentEndDate.isValid() ? momentEndDate : void 0;\n        d = new $.Deferred();\n        if (this.get('ranges')) {\n            this.get('ranges').then(function (ranges) {\n                return d.resolve(ranges);\n            });\n        } else {\n            d.resolve();\n        }\n        return d.then((ranges) => {\n            var options;\n            options = {\n                locale: {\n                    cancelLabel: this.get('cancelLabel'),\n                    format: this.get('format'),\n                    customRangeLabel: this.get('customRangeLabel'),\n                },\n                autoUpdateInput: false,\n                startDate: startDate,\n                endDate: endDate,\n                opens: this.get('opens'),\n                autoApply: this.get('autoApply'),\n                timePicker: this.get('timePicker'),\n                buttonClasses: this.get('buttonClasses'),\n                applyClass: this.get('applyClass'),\n                cancelClass: this.get('cancelClass'),\n                separator: this.get('separator'),\n                singleDatePicker: this.get('singleDatePicker'),\n                drops: this.get('drops'),\n                linkedCalendars: false,\n                dateLimit: this.get('limit'),\n                alwaysShowCalendars: true,\n            };\n            if (ranges && !$.isEmptyObject(ranges)) {\n                options.ranges = ranges;\n            }\n            $('.daterangepicker-input', this.element).daterangepicker(options);\n            $('.daterangepicker-input', this.element).on(\n                'show.daterangepicker',\n                function (ev, picker) {\n                    var serverFormat;\n                    serverFormat = self.get('serverFormat');\n                    startDate = moment(self.get('start'), serverFormat);\n                    endDate = moment(self.get('end'), serverFormat);\n                    value = self.get('value');\n                    if (value) {\n                        splitted = value.split('_');\n                        picker.setStartDate(moment(splitted[0], serverFormat));\n                        return picker.setEndDate(moment(splitted[1], serverFormat));\n                    } else if (startDate.isValid() && endDate.isValid()) {\n                        picker.setStartDate(startDate);\n                        return picker.setEndDate(endDate);\n                    }\n                },\n            );\n            $('.daterangepicker-input', this.element).on(\n                'apply.daterangepicker',\n                function (ev, picker) {\n                    var applyAction, end, start;\n                    start = picker.startDate.format(self.get('serverFormat'));\n                    end = picker.endDate.format(self.get('serverFormat'));\n                    applyAction = self.get('applyAction');\n                    if (applyAction) {\n                        Ember.assert(\n                            'applyAction for date-range-picker must be a function',\n                            typeof applyAction === 'function',\n                        );\n                        return applyAction(start, end);\n                    } else {\n                        self.setProperties({ start, end });\n                        return self.set('value', start + '_' + end);\n                    }\n                },\n            );\n            return $('.daterangepicker-input', this.element).on(\n                'cancel.daterangepicker',\n                function () {\n                    var cancelAction;\n                    cancelAction = self.get('cancelAction');\n                    if (cancelAction) {\n                        Ember.assert(\n                            'cancelAction for date-range-picker must be a function',\n                            typeof cancelAction === 'function',\n                        );\n                        return cancelAction();\n                    } else {\n                        self.set('start', self.get('start'));\n                        return self.set('end', self.get('end'));\n                    }\n                },\n            );\n        });\n    },\n    //Remove the hidden dropdown when this component is destroyed\n    willDestroy: function () {\n        if (this.get('removeDropdownOnDestroy')) {\n            return $('.daterangepicker').remove();\n        }\n    },\n});\n\nexport default RangePickerComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/record-comp-export.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RecordCompExportComponent;\n\nimport Ember from 'ember';\n\nimport recordComp from '../pods/collector/record-comp/component';\n\nimport config from '../config/environment';\n\nimport { isTimeoutError } from 'ember-ajax/errors';\n\nRecordCompExportComponent = recordComp.extend({\n    layoutName: 'collector/record-comp',\n    Collector: Em.inject.service('collector-service'),\n    intl: Em.inject.service(),\n    store: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    ttapi: Em.inject.service(),\n    session: Em.inject.service(),\n    error: Em.inject.service(),\n    ajax: Em.inject.service(),\n    cc: Em.inject.service(),\n    flags: Em.inject.service(),\n    save_record: function () {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var record, user;\n            record = this.get('record');\n            //get user before saving, because that gets somehow current user\n            user = record.get('user');\n            // we must save the record (the export row) once here so we can get it's id before calling cc\n            return record.save().then((back) => {\n                return this.get('store')\n                    .findRecord('wage_period', record.get('export_period_name.id'), {\n                        reload: true,\n                    })\n                    .then(() => {\n                        var field, fields, include_old_rows, options, params;\n                        if (record.get('include_old_rows')) {\n                            params = [\n                                'date=' +\n                                    moment(record.get('export_period_name.period_start_date'))\n                                        .subtract(3, 'months')\n                                        .format('YYYY-MM-DD') +\n                                    '_' +\n                                    record.get('export_period_name.period_end_date'),\n                            ];\n                        } else {\n                            params = [\n                                'date=' +\n                                    record.get('export_period_name.period_start_date') +\n                                    '_' +\n                                    record.get('export_period_name.period_end_date'),\n                            ];\n                        }\n                        params.push('exportid=' + back.id);\n                        if (user) {\n                            params.push('user=' + user.get('id'));\n                        }\n                        if ((include_old_rows = record.get('include_old_rows'))) {\n                            params.push('include_old_rows=' + include_old_rows);\n                        }\n                        if (record.get('worktimegroup')) {\n                            params.push('worktimegroup=' + record.get('worktimegroup.id'));\n                        }\n                        params.push('export_wage_period_id=' + record.get('export_period_name.id'));\n                        fields = this.get('Collector').fields(this.get('form'));\n                        for (field in fields) {\n                            options = fields[field];\n                            if (\n                                !(\n                                    field === 'worktimegroup' ||\n                                    field === 'date' ||\n                                    field === 'export_description' ||\n                                    field === 'export_name' ||\n                                    field === 'export_period_file' ||\n                                    field === 'export_period_name' ||\n                                    field === 'include_old_rows' ||\n                                    field === 'user'\n                                )\n                            ) {\n                                params.push(\n                                    field +\n                                        '=' +\n                                        (options.type === 'database'\n                                            ? record.get(field + '.id')\n                                            : record.get(field)),\n                                );\n                            }\n                        }\n                        Ember.assert(\n                            !this.get('selectedIntegration'),\n                            'integration is not selected.. this should never happen',\n                        );\n                        return this.callCC(\n                            this.get('selectedIntegration'),\n                            params,\n                            record,\n                            resolve,\n                            reject,\n                        );\n                    });\n            });\n        });\n    },\n    callCC: function (key, params, record, resolve, reject) {\n        var access_token, data, promise, queryParams, queryParamsString, timeout;\n        data = {};\n        params.forEach((item) => {\n            return (data[item.split('=')[0]] = item.split('=')[1]);\n        });\n        if (config.environment === 'development') {\n            data.capi_url = 'http://capi/';\n            data.ttapi_url = 'http://ttapi/';\n            data.cc_url = 'http://ccbackend/trigger/';\n        } else {\n            data.capi_url = config.APP.COLLECTOR_API_URL + '/';\n            data.ttapi_url = this.get('ttapi').host + '/';\n            data.cc_url = this.get('cc').host + '/';\n        }\n        access_token = this.get('session.session.authenticated.access_token');\n        data.token = access_token;\n        data.exportName = record.get('constructor.modelName');\n        timeout = 50000;\n        //promise = @get('ttapi')._post \"/ccrequest/\" + key, JSON.stringify(data)\n        queryParams = [];\n        if (this.getSalaryVersion() !== 1) {\n            queryParams.push('salaryversion=' + this.getSalaryVersion());\n        }\n        // removing the flag\n        // Remove these lines and ttapi ccController row that supports this \"private\" queryParam. And change ttapi so public=true is never used.\n        if (this.get('flags').test('private-export-files')) {\n            queryParams.push('private=true');\n        }\n        if (this.get('flags').test('export-slow-ccrequest')) {\n            queryParams.push('slowRequest=true'); // this parameter makes ttapi to call cc with webhooks that saves the response file when cc is done\n            timeout = 1000; // we timeout request every time so user is informed that file is returned later\n        }\n\n        // if key already has ? in it (for example ?_v=1), do not add ? again, use & instead\n        if (key.indexOf('?') === -1) {\n            queryParamsString = queryParams.length > 0 ? '?' + queryParams.join('&') : '';\n        } else {\n            queryParamsString = queryParams.length > 0 ? '&' + queryParams.join('&') : '';\n        }\n        promise = this.get('ajax').request(\n            this.get('ttapi').host + '/ccrequest/' + key + queryParamsString,\n            {\n                method: 'post',\n                timeout: timeout,\n                headers: {\n                    Authorization: 'Bearer ' + access_token,\n                },\n                data: JSON.stringify(data),\n            },\n        );\n        return promise\n            .then((back, textStatus, jqXHR) => {\n                var downloadFile, message;\n                back = back.ret;\n                downloadFile = true;\n                if (back === '') {\n                    this.get('dialogs').alert(this.get('intl').t('export.no_data'));\n                    reject();\n                    return;\n                }\n                if (back.error != null) {\n                    message = this.get('intl').t('general.ccerror', {\n                        error: back.error,\n                    });\n                    this.get('dialogs').alert(\n                        new Ember.String.htmlSafe(message.replace('\\n', '<br>')),\n                    );\n                    reject();\n                    return;\n                }\n                if (Ember.typeOf(back) === 'array') {\n                    message = this.get('intl').t('general.ccresponsemessage', {\n                        response: back.mapBy('response').join('\\n'),\n                    });\n                    this.get('dialogs').alert(\n                        new Ember.String.htmlSafe(message.replace(/\\n/g, '<br>')),\n                    );\n                    back = back.mapBy('response').join('\\n');\n                    downloadFile = false;\n                }\n                return this.get('store')\n                    .findRecord(record.get('constructor.modelName'), record.get('id'), {\n                        reload: true,\n                    })\n                    .then((back) => {\n                        var a, file_url, files;\n                        files = back.get('export_period_file');\n                        file_url = config.APP.COLLECTOR_API_URL + '/' + files[0].url;\n                        if (downloadFile) {\n                            a = document.createElement('a');\n                            a.href = file_url;\n                            a.target = '_blank';\n                            a.download = files[0].name;\n                            document.body.appendChild(a);\n                            a.click();\n                        }\n                        return resolve();\n                    });\n            })\n            .catch((reason) => {\n                if (isTimeoutError(reason)) {\n                    this.get('dialogs').alert(this.get('intl').t('export.timeout_error'));\n                    return resolve();\n                } else {\n                    this.get('error').notify(reason);\n                    return resolve();\n                }\n            });\n    },\n    getFilename: function (record, jqXHR) {\n        var default_name, given, given_arr;\n        default_name = record.get('export_name').replace(/[^A-Za-z0-9]/g, '') || 'export';\n        default_name += '.csv';\n        given = jqXHR.getResponseHeader('Content-Disposition');\n        if (given) {\n            given_arr = given.split('=');\n            if (given_arr[0] === 'filename' && given_arr.length === 2) {\n                return given_arr[1];\n            }\n        }\n        return default_name;\n    },\n    getSalaryVersion: function () {\n        if (this.get('Collector').testNeeds(['products.salarytype_v2'])) {\n            return 2;\n        } else {\n            return 1;\n        }\n    },\n});\n\nexport default RecordCompExportComponent;\n","import { inject as service } from '@ember/service';\n\nimport Component from '@ember/component';\nimport pdf_measurement_mixin from '../mixins/sitesafety-export';\nimport formatted_pdf_measurement_mixin from '../mixins/sitesafety-formatted-export';\nimport { get, set, computed } from '@ember/object';\nimport { A } from '@ember/array';\n\nconst RecordListComponent = Component.extend(\n    pdf_measurement_mixin,\n    formatted_pdf_measurement_mixin,\n    {\n        store: service(),\n        analytics: service(),\n        Collector: service('collector-service'),\n        error: service(),\n        fileExports: service(),\n        intl: service(),\n        tagName: 'ul',\n        class: 'list-group',\n        fieldSettings: A({\n            report: true,\n            preview: true,\n            title: true,\n            show: true,\n        }),\n\n        currentForm: computed('model', function () {\n            return get(this, 'model.constructor.modelName');\n        }),\n\n        exports: computed('model', function () {\n            if (\n                get(this, 'model.constructor.modelName') === 'tr' ||\n                get(this, 'model.constructor.modelName') === 'mvr'\n            ) {\n                return [\n                    {\n                        export: 'measurement_pdf',\n                        translation: get(this, 'intl').t('general.export'),\n                    },\n                    {\n                        export: 'formatted_measurement_pdf',\n                        translation: get(this, 'intl').t('site_safety.export_formatted'),\n                    },\n                ];\n            } else {\n                return [{ export: 'pdf', translation: get(this, 'intl').t('general.export') }];\n            }\n        }),\n        actions: {\n            async export(type) {\n                get(this, 'analytics').trackEvent({ category: 'Show page export', action: type });\n                set(this, 'showLoader', true);\n                if (type === 'pdf') {\n                    try {\n                        const form = get(this, 'model.constructor.modelName').replace(/-/g, '_');\n                        await this.fileExports.createPdfFull(\n                            form,\n                            [{ id: get(this, 'model.id') }],\n                            {},\n                        );\n                    } catch (error) {\n                        this.error.notify(error);\n                    } finally {\n                        set(this, 'showLoader', false);\n                    }\n                } else if (type === 'measurement_pdf') {\n                    this.exportMeasurementPdf(get(this, 'fields'), get(this, 'model'));\n                    return set(this, 'showLoader', false);\n                } else if (type === 'formatted_measurement_pdf') {\n                    let this_fields;\n                    const modelsArr = [get(this, 'model')];\n                    if (get(this, 'model.constructor.modelName') === 'tr') {\n                        this_fields = this.Collector.fields('tr');\n                    } else {\n                        this_fields = this.Collector.fields('mvr');\n                    }\n                    return this.createMeasurementPdf(this_fields, modelsArr).then(() =>\n                        this._setLoaderFalse(),\n                    );\n                }\n            },\n\n            filterFields(field) {\n                return !field.features?.hide_column;\n            },\n        },\n        _setLoaderFalse() {\n            return set(this, 'showLoader', false);\n        },\n    },\n);\n\nexport default RecordListComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/salary-period-adder.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SalaryPeriodAdderComponent;\n\nimport Ember from 'ember';\n\nSalaryPeriodAdderComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    multi: false,\n    amount: 2,\n    period: 'month',\n    from: moment().startOf('month').format('YYYY-MM-DD'),\n    amount_options: Ember.computed(function () {\n        return [\n            {\n                id: 2,\n                name: this.get('intl').t('salary_period.adder.amount.2'),\n            },\n            {\n                id: 4,\n                name: this.get('intl').t('salary_period.adder.amount.4'),\n            },\n            {\n                id: 6,\n                name: this.get('intl').t('salary_period.adder.amount.6'),\n            },\n            {\n                id: 8,\n                name: this.get('intl').t('salary_period.adder.amount.8'),\n            },\n            {\n                id: 12,\n                name: this.get('intl').t('salary_period.adder.amount.12'),\n            },\n        ];\n    }),\n    period_options: Ember.computed(function () {\n        return [\n            {\n                id: 'month',\n                name: this.get('intl').t('salary_period.adder.period.month'),\n            },\n            {\n                id: 'week2',\n                name: this.get('intl').t('salary_period.adder.period.week2'),\n            },\n            {\n                id: 'week4',\n                name: this.get('intl').t('salary_period.adder.period.week4'),\n            },\n        ];\n    }),\n    actions: {\n        create: function () {\n            var amount, end, from, i, period, promises, records, ref, store;\n            this.set('saving', true);\n            this.set('disabled', true);\n            store = this.get('store');\n            amount = this.get('amount');\n            period = this.get('period');\n            from = this.get('from');\n            records = [];\n            for (i = 1, ref = amount; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n                end = (function () {\n                    switch (period) {\n                        case 'month':\n                            return moment(from)\n                                .add(1, 'month')\n                                .subtract(1, 'day')\n                                .format('YYYY-MM-DD');\n                        case 'week2':\n                            return moment(from)\n                                .add(2, 'week')\n                                .subtract(1, 'day')\n                                .format('YYYY-MM-DD');\n                        case 'week4':\n                            return moment(from)\n                                .add(4, 'week')\n                                .subtract(1, 'day')\n                                .format('YYYY-MM-DD');\n                    }\n                })();\n                records.push(\n                    store.createRecord('wage-period', {\n                        period_name: moment(from).format('L') + ' - ' + moment(end).format('L'),\n                        period_start_date: from,\n                        period_end_date: end,\n                    }),\n                );\n                from = (function () {\n                    switch (period) {\n                        case 'month':\n                            return moment(from).add(1, 'month').format('YYYY-MM-DD');\n                        case 'week2':\n                            return moment(from).add(2, 'week').format('YYYY-MM-DD');\n                        case 'week4':\n                            return moment(from).add(4, 'week').format('YYYY-MM-DD');\n                    }\n                })();\n            }\n            promises = records.invoke('save');\n            return Ember.RSVP.Promise.all(promises).then(() => {\n                if (this.get('closeEditor')) {\n                    this.closeEditor(this.get('settings'));\n                }\n                this.set('saving', true);\n                return this.set('disabled', true);\n            });\n        },\n        setmulti: function (multi) {\n            return this.set('multi', multi);\n        },\n        closeEditor: function () {\n            if (this.get('closeEditor')) {\n                return this.closeEditor(this.get('settings'));\n            }\n        },\n        recordSaved: function (settings, record) {\n            if (this.get('closeEditor')) {\n                return this.closeEditor(settings, record);\n            }\n        },\n    },\n});\n\nexport default SalaryPeriodAdderComponent;\n","define(\"tt4/components/scatter-chart\", [\"exports\", \"ember-google-charts/components/scatter-chart\"], function (_exports, _scatterChart) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _scatterChart.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/select-comp.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SelectCompComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport $ from 'jquery';\n\nSelectCompComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    content: [],\n    value: null,\n    init: function () {\n        this._super(...arguments);\n        if (this.get('promptTranslation')) {\n            this.set('prompt', this.get('intl').t(this.get('promptTranslation')));\n        }\n        if (!this.get('value') && !this.get('prompt')) {\n            return this.set('value', this.get('content.firstObject.id'));\n        }\n    },\n    options: Ember.computed(function () {\n        var field;\n        field = collector.getFormObject(this.get('form') + '.' + this.get('field'));\n        if (field && field.options.fields != null) {\n            return field.options.fields;\n        }\n        return ['name'];\n    }),\n    actions: {\n        change: function () {\n            var content, selectedEl, selectedIndex, selectedValue;\n            selectedEl = $('select', this.element)[0];\n            selectedIndex = selectedEl.selectedIndex;\n            if (this.get('prompt')) {\n                selectedIndex--;\n            }\n            if (typeof content === 'undefined' || content === null) {\n                //            content = @get 'content.content.content'\n                content = this.get('content');\n            }\n            selectedValue = content.objectAt(selectedIndex);\n            if (!selectedValue) {\n                return this.set('value', null);\n            } else if (this.get('relation')) {\n                if (selectedValue.record) {\n                    return this.set('value', selectedValue.record);\n                } else {\n                    return this.set('value', selectedValue);\n                }\n            } else {\n                return this.set('value', selectedValue.get('id'));\n            }\n        },\n    },\n});\n\nexport default SelectCompComponent;\n","import SelectList from 'ember-select-list/components/select-list';\n\nexport default SelectList;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/side-menu.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SideMenuComponent;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport menu from '../mixins/menu';\n\nSideMenuComponent = Ember.Component.extend(menu, {\n    session: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    skvReport: Ember.inject.service(),\n    layoutName: 'side-menu',\n    editmode: false,\n    init: function () {\n        this._super(...arguments);\n        if (typeof cordova !== 'undefined' && cordova !== null) {\n            return cordova.getAppVersion.getVersionNumber().then((version) => {\n                return this.set(\n                    'version',\n                    this.get('intl').t('application.version') +\n                        ': ' +\n                        this.get('gui').version() +\n                        ' APP: ' +\n                        version,\n                );\n            });\n        } else {\n            return this.set(\n                'version',\n                this.get('intl').t('application.version') + ': ' + this.get('gui').version(),\n            );\n        }\n    },\n    skv_report: Ember.computed('session.currentUser', function () {\n        return this.get('skvReport.skvReportLink');\n    }),\n    actions: {\n        close: function (menu) {\n            if (this.get('close')) {\n                this.close();\n            }\n            if (menu && this.get('transition')) {\n                return this.transition(menu.link);\n            }\n        },\n        editmode: function () {\n            return this.toggleProperty('editmode');\n        },\n        toggleMenuVisibility: function (item) {\n            return item.toggleProperty('hide_leftmenu');\n        },\n        saveMenuState: function () {\n            this.saveLeftmenuHidings(this.get('menus'));\n            return this.send('close');\n        },\n        invalidateSession: function () {\n            delete localStorage['first-time-loader-greeting'];\n            if (this.get('logout')) {\n                return this.logout();\n            }\n        },\n        openLink: function (url) {\n            return window.open(url, '_blank');\n        },\n        openFeedbackModal: function () {\n            this.send('close');\n            return this.set('showFeedbackModal', true);\n        },\n        closeModal: function () {\n            return this.set('showFeedbackModal', false);\n        },\n    },\n});\n\nexport default SideMenuComponent;\n","import sortableGroup from 'ember-sortable/components/sortable-group';\n\nexport default sortableGroup;\n","import sortableHandle from 'ember-sortable/components/sortable-handle';\n\nexport default sortableHandle;\n\n","import sortableItem from 'ember-sortable/components/sortable-item';\n\nexport default sortableItem;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/spin-button.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SpinButtonComponent;\n\nimport Ember from 'ember';\n\nSpinButtonComponent = Ember.Component.extend({\n    classNames: ['button'],\n    classes: 'btn-warning',\n    spinIsLoading: false,\n    saveButtonText: null,\n    showDisable: Ember.computed('spinIsLoading', 'disabled', function () {\n        if (this.get('disabled')) {\n            return true;\n        } else if (this.get('spinIsLoading')) {\n            return true;\n        }\n        return false;\n    }),\n    actions: {\n        showLoading: function () {\n            if (!this.get('spinIsLoading')) {\n                this.set('spinIsLoading', true);\n                if (this.get('action')) {\n                    this.action();\n                }\n            }\n        },\n    },\n});\n\nexport default SpinButtonComponent;\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" style=\\\"margin-bottom: -2px\\\" width=\\\"{{@size}}px\\\" height=\\\"{{@size}}px\\\" viewBox=\\\"0 0 100 100\\\" preserveAspectRatio=\\\"xMidYMid\\\" data-darkreader-inline-bgimage=\\\"\\\" data-darkreader-inline-bgcolor=\\\"\\\">\\n<g transform=\\\"rotate(0 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.9523809523809523s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(17.142857142857142 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.9047619047619048s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(34.285714285714285 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.8571428571428571s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(51.42857142857143 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.8095238095238095s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(68.57142857142857 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.7619047619047619s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(85.71428571428571 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.7142857142857143s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(102.85714285714286 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.6666666666666666s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(120 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.6190476190476191s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(137.14285714285714 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.5714285714285714s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(154.28571428571428 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.5238095238095238s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(171.42857142857142 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.47619047619047616s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(188.57142857142858 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.42857142857142855s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(205.71428571428572 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.38095238095238093s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(222.85714285714286 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.3333333333333333s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(240 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.2857142857142857s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(257.14285714285717 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.23809523809523808s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(274.2857142857143 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.19047619047619047s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(291.42857142857144 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.14285714285714285s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(308.57142857142856 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.09523809523809523s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(325.7142857142857 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.047619047619047616s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(342.85714285714283 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"0s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g>\\n</svg>\", {\"contents\":\"<svg xmlns=\\\"http://www.w3.org/2000/svg\\\" xmlns:xlink=\\\"http://www.w3.org/1999/xlink\\\" style=\\\"margin-bottom: -2px\\\" width=\\\"{{@size}}px\\\" height=\\\"{{@size}}px\\\" viewBox=\\\"0 0 100 100\\\" preserveAspectRatio=\\\"xMidYMid\\\" data-darkreader-inline-bgimage=\\\"\\\" data-darkreader-inline-bgcolor=\\\"\\\">\\n<g transform=\\\"rotate(0 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.9523809523809523s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(17.142857142857142 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.9047619047619048s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(34.285714285714285 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.8571428571428571s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(51.42857142857143 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.8095238095238095s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(68.57142857142857 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.7619047619047619s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(85.71428571428571 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.7142857142857143s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(102.85714285714286 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.6666666666666666s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(120 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.6190476190476191s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(137.14285714285714 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.5714285714285714s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(154.28571428571428 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.5238095238095238s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(171.42857142857142 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.47619047619047616s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(188.57142857142858 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.42857142857142855s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(205.71428571428572 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.38095238095238093s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(222.85714285714286 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.3333333333333333s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(240 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.2857142857142857s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(257.14285714285717 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.23809523809523808s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(274.2857142857143 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.19047619047619047s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(291.42857142857144 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.14285714285714285s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(308.57142857142856 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.09523809523809523s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(325.7142857142857 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"-0.047619047619047616s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g><g transform=\\\"rotate(342.85714285714283 50 50)\\\">\\n  <rect x=\\\"43.5\\\" y=\\\"9.5\\\" rx=\\\"0\\\" ry=\\\"0\\\" width=\\\"13\\\" height=\\\"15\\\" fill={{if @color @color \\\"#337ab7\\\"}} data-darkreader-inline-fill=\\\"\\\" style=\\\"--darkreader-inline-fill:#69a6d5;\\\">\\n    <animate attributeName=\\\"opacity\\\" values=\\\"1;0\\\" keyTimes=\\\"0;1\\\" dur=\\\"1s\\\" begin=\\\"0s\\\" repeatCount=\\\"indefinite\\\"></animate>\\n  </rect>\\n</g>\\n</svg>\",\"moduleName\":\"tt4/components/spinner.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/spinner.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","import { hbs } from 'ember-cli-htmlbars';\nconst __COLOCATED_TEMPLATE__ = hbs(\"<svg class={{if @disabled \\\"stop-button-disabled\\\"\\\"stop-button\\\"}} xmlns=\\\"http://www.w3.org/2000/svg\\\" class=\\\"play\\\" width={{if @width @width \\\"70\\\"}} height={{if @height @height \\\"70\\\"}} viewBox=\\\"0 0 99 99\\\" {{action @click}}>\\n    <circle cx=\\\"49.5\\\" cy=\\\"49.5\\\" r=\\\"49.5\\\" />\\n    <rect width=\\\"32\\\" height=\\\"32\\\" rx=\\\"5\\\" transform=\\\"translate(34 34)\\\" fill=\\\"#fff\\\"/>\\n</svg>\", {\"contents\":\"<svg class={{if @disabled \\\"stop-button-disabled\\\"\\\"stop-button\\\"}} xmlns=\\\"http://www.w3.org/2000/svg\\\" class=\\\"play\\\" width={{if @width @width \\\"70\\\"}} height={{if @height @height \\\"70\\\"}} viewBox=\\\"0 0 99 99\\\" {{action @click}}>\\n    <circle cx=\\\"49.5\\\" cy=\\\"49.5\\\" r=\\\"49.5\\\" />\\n    <rect width=\\\"32\\\" height=\\\"32\\\" rx=\\\"5\\\" transform=\\\"translate(34 34)\\\" fill=\\\"#fff\\\"/>\\n</svg>\",\"moduleName\":\"tt4/components/stop-button.hbs\",\"parseOptions\":{\"srcName\":\"tt4/components/stop-button.hbs\"}});\nimport templateOnly from '@ember/component/template-only';\n\nexport default templateOnly();\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/table-comp.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TableCompComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport pdfExport from '../mixins/pdf-export';\n\nimport $ from 'jquery';\n\nimport { observer } from '@ember/object';\n\nTableCompComponent = Ember.Component.extend(pdfExport, {\n    intl: Ember.inject.service(),\n    translationPrefix: '',\n    checkClass: 'unchecked',\n    checkedClass: 'unchecked',\n    rowAction: null,\n    checkable: false,\n    //when status field in form, always checkable\n    ch: observer('canChangeStatus', function () {\n        return this.set('checkable', this.get('canChangeStatus'));\n    }),\n    // noRows flag is true if data is loaded but it contains zero rows\n    noRows: Em.computed('data.length', function () {\n        var data;\n        data = this.get('data');\n        if (data == null) {\n            return true;\n        }\n        if (!Ember.isArray(data)) {\n            return false;\n        }\n        return data.length === 0;\n    }),\n    // get translation for every column\n    _translatedColumns: Em.computed('columns', function () {\n        var columns, intl, translated_columns, translationPrefix;\n        translationPrefix = this.get('translationPrefix');\n        if (translationPrefix) {\n            columns = this.get('columns');\n            intl = this.get('intl');\n            translated_columns = [];\n            $.each(columns, (key, item) => {\n                return translated_columns.push(intl.t(translationPrefix + '.' + item));\n            });\n            return translated_columns;\n        }\n        return this.get('translated_columns');\n    }),\n    lockedActions: Em.computed('rowActions', function () {\n        var filteredActions;\n        filteredActions = this.get('rowActions').filter((rowAction) => {\n            return !['remove', 'edit', 'delete'].find((actionSubString) => {\n                return rowAction.action.includes(actionSubString);\n            });\n        });\n        filteredActions.push({\n            icon: 'move move-Lock',\n        });\n        return filteredActions;\n    }),\n    notEditableActions: Em.computed('rowActions', function () {\n        var filteredActions;\n        filteredActions = this.get('rowActions').filter((rowAction) => {\n            return !['remove', 'edit', 'delete'].find((actionSubString) => {\n                return rowAction.action.includes(actionSubString);\n            });\n        });\n        return filteredActions;\n    }),\n    // order property for showing by what column we are ordering\n    order: null,\n    checked: Em.computed('data.@each.checkedClass', function () {\n        var chk;\n        chk = [];\n        if (this.get('data')) {\n            this.get('data').forEach((row) => {\n                if (row.checkedClass === 'checked') {\n                    return chk.pushObject(row);\n                }\n            });\n        }\n        if (chk.length === 0 || chk.length !== this.get('data.length')) {\n            this.set('checkClass', 'unchecked');\n        }\n        if (chk.length === this.get('data.length')) {\n            this.set('checkClass', 'checked');\n        }\n        return chk;\n    }),\n    defaultChangeStatus: Em.computed(function () {\n        var obj;\n        obj = {};\n        obj.action = 'approved';\n        obj.btn_class = 'btn-primary';\n        obj.text = this.get('intl').t('report.approve_rows');\n        return obj;\n    }),\n    showDefaultChangeStatus: Ember.computed('canChangeStatus', 'statusTypes', function () {\n        var approvingIsAllowed;\n        if (!this.get('canChangeStatus')) {\n            return false;\n        }\n        approvingIsAllowed = this.get('statusTypes').mapBy('id').indexOf('approved') !== -1;\n        return approvingIsAllowed;\n    }),\n    defaultChangeStatusAction: 'approved',\n    canChangeStatus: Em.computed(function () {\n        var field;\n        field = collector.getFormObject(this.get('form') + '.status');\n        if (field) {\n            if (!field.features.readonly) {\n                return true;\n            }\n        }\n        return false;\n    }),\n    statusTypes: Em.computed('form', function () {\n        var c, field, fieldOptions, intl, option, options;\n        if (!this.get('form')) {\n            return [];\n        }\n        c = this.get('Collector');\n        intl = this.get('intl');\n        field = c.field(this.get('form'), 'status');\n        if (field.features.only_options) {\n            fieldOptions = field.features.only_options.split(',');\n        } else {\n            fieldOptions = field.options;\n        }\n        options = (function () {\n            var i, len, results;\n            results = [];\n            for (i = 0, len = fieldOptions.length; i < len; i++) {\n                option = fieldOptions[i];\n                if (intl.exists('status.' + option)) {\n                    results.push({\n                        id: option,\n                        name: intl.t('report.' + option + '_rows'),\n                    });\n                } else {\n                    results.push({\n                        id: option,\n                        name: intl.t('report.change_status') + option,\n                    });\n                }\n            }\n            return results;\n        })();\n        return options;\n    }),\n    asPdfElement: Ember.computed(function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return resolve(\n                this.createPdfTableElement(\n                    this.get('columnList'),\n                    this.get('data'),\n                    this.get('_translatedColumns'),\n                ),\n            );\n        });\n    }),\n    columnList: Ember.computed('columns', function () {\n        return this.get('columns').map((item) => {\n            return this.columnKey(item);\n        });\n    }),\n    columnKey: function (column) {\n        var subfields, subform;\n        [subform, subfields] = this.parseColumn(column);\n        return subform + (subfields ? subfields[0] : '');\n    },\n    parseColumn: function (column) {\n        var subfields, subform;\n        if (column.indexOf('.') !== -1) {\n            [subform, subfields] = column.split('.');\n            subfields = [subfields];\n        } else {\n            subform = column;\n            subfields = null;\n        }\n        return [subform, subfields];\n    },\n    canLock: Em.computed(function () {\n        return this.get('Collector').testNeeds(['userlevel=5']);\n    }),\n    showMassedit: Ember.computed('settings.massedit', function () {\n        if (this.get('Collector').testNeeds(['userlevel=3,4,5,6'])) {\n            return true;\n        }\n    }),\n    selectedRows: Ember.computed('checked.[]', function () {\n        return this.get('checked').mapBy('id').join(',');\n    }),\n    getPdfFilters: function (rows) {\n        var c, filter, filterName, filterValue, i, len, pdf_filters_body, ref, value;\n        c = this.get('Collector');\n        pdf_filters_body = [];\n        ref = this.get('filters');\n        for (i = 0, len = ref.length; i < len; i++) {\n            filter = ref[i];\n            if (filter.get('value') && filter.get('name') !== 'groupBy') {\n                if (Ember.isArray(filter.get('value')) && filter.get('value.length') === 0) {\n                    continue;\n                }\n                if (filter.get('type') === 'database') {\n                    value = parseInt(filter.get('value'));\n                } else {\n                    value = filter.get('value');\n                }\n                if (filter.get('bindto') && !filter.get('field')) {\n                    filterValue = value;\n                    filterName = this.get('intl').t('filters.free_search');\n                } else {\n                    filterValue = c._format_(\n                        value,\n                        filter.get('form'),\n                        filter.get('field'),\n                        'pdf',\n                        rows,\n                    );\n                    filterName = this.get('intl').t(filter.get('form') + '.' + filter.get('name'));\n                }\n                if (this.get('full_pdf_export')) {\n                    pdf_filters_body.push([\n                        {\n                            text: filterName + ': ' + filterValue,\n                            style: 'headertext',\n                        },\n                    ]);\n                } else {\n                    pdf_filters_body.push([filterName + ':', filterValue]);\n                }\n            }\n        }\n        return pdf_filters_body;\n    },\n    actions: {\n        multisortColumns: function (key) {\n            var c, obj;\n            c = this.get('Collector');\n            if (this.get('columns')[key] === 'row_info.created') {\n                obj = {\n                    form: this.get('form'),\n                    type: 'row_info',\n                    features: {},\n                    ext: 'row_info.created',\n                };\n            } else {\n                obj = c.field(this.get('form'), this.get('columns')[key]);\n            }\n            return this.sendAction('bubbleActions', 'columnClickedMulti', obj);\n        },\n        columnClicked: function (key) {\n            if (this.get('multiSort')) {\n                return this.send('multisortColumns', key);\n            } else {\n                return this.send('sortColumns', key);\n            }\n        },\n        sortColumns: function (key) {\n            var columns, currentOrder;\n            columns = this.get('columns');\n            currentOrder = this.get('order');\n            if (currentOrder === key || currentOrder === null) {\n                currentOrder = key + '-';\n            } else {\n                currentOrder = key;\n            }\n            this.set('order', currentOrder);\n            return this.sendAction('bubbleActions', 'columnClicked', columns[key]);\n        },\n        check: function (row) {\n            var params;\n            if (Ember.get(row, 'checkedClass') === 'checked') {\n                Ember.set(row, 'checkedClass', 'unchecked');\n                params = {\n                    id: Ember.get(row, 'id'),\n                    action: 'remove',\n                };\n                this.sendAction('bubbleActions', 'checkRow', params);\n            } else {\n                Ember.set(row, 'checkedClass', 'checked');\n                params = {\n                    id: Ember.get(row, 'id'),\n                    action: 'add',\n                };\n                this.sendAction('bubbleActions', 'checkRow', params);\n            }\n            return this.sendAction('bubbleActions', 'checkedRows', this.get('checked'));\n        },\n        checkAll: function () {\n            this.toggleProperty('checkAll');\n            this.get('data').forEach((row) => {\n                var params;\n                if (this.get('checkAll')) {\n                    Ember.set(row, 'checkedClass', 'checked');\n                    this.set('checkClass', 'checked');\n                    params = {\n                        id: Ember.get(row, 'id'),\n                        action: 'add',\n                    };\n                    return this.sendAction('bubbleActions', 'checkRow', params);\n                } else {\n                    Ember.set(row, 'checkedClass', 'unchecked');\n                    this.set('checkClass', 'unchecked');\n                    params = {\n                        id: Ember.get(row, 'id'),\n                        action: 'remove',\n                    };\n                    return this.sendAction('bubbleActions', 'checkRow', params);\n                }\n            });\n            return this.sendAction('bubbleActions', 'checkedRows', this.get('checked'));\n        },\n        changeStatus: function (status) {\n            var params;\n            params = {};\n            params.rows = this.get('checked');\n            params.status = status;\n            return this.sendAction('bubbleActions', 'changeStatus', params);\n        },\n        rowAction: function (action, row) {\n            if (Em.isNone(action)) {\n                return;\n            }\n            return this.sendAction('bubbleActions', action, row);\n        },\n        checkedActionClicked: function (action) {\n            return this.sendAction('bubbleActions', 'checkedRowsAction', {\n                action: action,\n                rows: this.get('checked'),\n            });\n        },\n        mutateRows: function (mutation) {\n            return this.sendAction('bubbleActions', mutation);\n        },\n        export_pdf: function () {\n            return this.get('asPdfElement').then((element) => {\n                var elements, pdf_filters_body;\n                elements = [element];\n                if (this.get('filters')) {\n                    pdf_filters_body = this.getPdfFilters(this.get('data'));\n                    if (pdf_filters_body.length > 0) {\n                        elements.unshift({\n                            table: {\n                                body: pdf_filters_body,\n                            },\n                            layout: 'noBorders',\n                        });\n                    }\n                }\n                return this.createPdfFromElements(elements).then((file) => {\n                    if (typeof cordova !== 'undefined' && cordova !== null) {\n                        return this.get('cordova').openFile(file, 'application/pdf');\n                    }\n                });\n            });\n        },\n        lockRows: function (act, row) {\n            var params, rows;\n            rows = row ? [row] : this.get('checked');\n            params = { act, rows };\n            return this.sendAction('bubbleActions', 'lockRows', params);\n        },\n    },\n});\n\nexport default TableCompComponent;\n","define(\"tt4/components/tag-input\", [\"exports\", \"ember-tag-input/components/tag-input\"], function (_exports, _tagInput) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _tagInput.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/user-select.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserSelect;\n\nimport Ember from 'ember';\n\nUserSelect = Ember.Component.extend({\n    users: null,\n    currentUser: Ember.computed('users.[]', 'user', 'filterEmployer', function () {\n        var filterEmployer, first, found, last, next, previous, temp, userid, users;\n        users = this.get('users');\n        if (!users) {\n            return;\n        }\n        filterEmployer = this.get('filterEmployer');\n        if (filterEmployer) {\n            users = users.filter(function (user) {\n                return user.get('employer.id') === filterEmployer;\n            });\n        }\n        userid = this.get('user');\n        last = temp = next = previous = null;\n        found = false;\n        if (!userid) {\n            first = users.get('firstObject');\n            if (!first) {\n                return;\n            }\n            userid = first.get('id');\n        }\n        users.forEach(function (user) {\n            if (found && !next) {\n                next = user;\n            }\n            if (user.get('id') === userid) {\n                found = true;\n                temp = user;\n                previous = last;\n            }\n            return (last = user);\n        });\n        //        unless found\n        //            @set 'user', null\n        // Todo should be written as computeds\n        Ember.run.next(this, function () {\n            if (this.get('isDestroyed')) {\n                return;\n            }\n            this.set('nextUser', next);\n            return this.set('previousUser', previous);\n        });\n        return temp;\n    }),\n    nextUser: null,\n    previousUser: null,\n    actions: {\n        gotoNextUser: function () {\n            //@set 'page', 1\n            return this.set('user', this.get('nextUser.id'));\n        },\n        gotoPreviousUser: function () {\n            //@set 'page', 1\n            return this.set('user', this.get('previousUser.id'));\n        },\n    },\n});\n\nexport default UserSelect;\n","define(\"tt4/components/vertical-collection\", [\"exports\", \"@html-next/vertical-collection/components/vertical-collection/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/components/week-report.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WeekReportComponent;\n\nimport Ember from 'ember';\n\nWeekReportComponent = Ember.Component.extend({\n    intl: Em.inject.service(),\n    gui: Em.inject.service(),\n    didInsertElement: function () {\n        this._super();\n        return this.get('gui').setBreakpointObserver('md');\n    },\n    willDestroyElement: function () {\n        this._super();\n        return this.get('gui').removeBreakpointObserver();\n    },\n    actions: {\n        click: function (row) {\n            if (this.get('rowClicked')) {\n                return this.rowClicked(row);\n            }\n        },\n    },\n});\n\nexport default WeekReportComponent;\n","define(\"tt4/components/x-toggle-label\", [\"exports\", \"ember-toggle/components/x-toggle-label/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","define(\"tt4/components/x-toggle-switch\", [\"exports\", \"ember-toggle/components/x-toggle-switch/component\"], function (_exports, _component) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _component.default;\n    }\n  });\n});\n","\nimport XToggle from 'ember-toggle/components/x-toggle/component';\nimport ENV from '../config/environment';\n\nconst config = ENV['ember-toggle'] || {};\n\nexport default XToggle.extend({\n  /* eslint-disable ember/avoid-leaking-state-in-ember-objects */\n  theme: config.defaultTheme || 'default',\n  defaultOffLabel: config.defaultOffLabel || 'Off::off',\n  defaultOnLabel: config.defaultOnLabel || 'On::on',\n  showLabels: config.defaultShowLabels || false,\n  size: config.defaultSize || 'medium'\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/config.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar addLinkList,\n    branding_needs,\n    defaultFirstPages,\n    possibleFirstPages,\n    savedCustomization,\n    staticMenus;\n\nstaticMenus = [\n    {\n        needs: ['worktime||presence||orientation||tr||mvr'],\n        link: ['dashboard'],\n        icon: 'move move-Dashboard',\n        text: 'menu.dashboard',\n        id: 'dashboard',\n        submenus: [],\n    },\n    {\n        needs: ['worktime||presence||orientation||tr||mvr'],\n        link: ['my-sites'],\n        icon: 'move move-MySites',\n        text: 'menu.my-sites',\n        id: 'my-sites',\n        submenus: [],\n    },\n    {\n        needs: ['worktime', 'modulecontrol.worktimes', 'worktime@access'],\n        link: ['timetracker.worktime-list'],\n        icon: 'move move-Time',\n        text: 'menu.worktimes',\n        id: 'worktime',\n        pdfHeaders: ['date', 'project'],\n        submenus: [\n            {\n                text: 'menu.worktime-list',\n                link: 'timetracker.worktime-list',\n            },\n            {\n                text: 'menu.anomalyreport',\n                link: 'timetracker.anomalies',\n                needs: ['!worktime.status@readonly', 'development'],\n            },\n            {\n                text: 'menu.approval',\n                link: 'timetracker.approval',\n                needs: ['!worktime.status@readonly'],\n            },\n            {\n                text: 'menu.timetracker.realtime',\n                link: 'timetracker.realtime',\n                needs: ['!userlevel=1'],\n            },\n            {\n                text: 'menu.timetracker.comp-report',\n                link: 'timetracker.comp-report',\n                needs: ['!userlevel=1?', 'abcense'],\n            },\n            {\n                text: 'menu.timetracker.week-report',\n                link: 'timetracker.week-report',\n                needs: ['mobileView'],\n            },\n            {\n                text: 'menu.worktime_bank',\n                link: 'timetracker.bank',\n                needs: ['products.worktimebank'],\n            },\n            {\n                text: 'menu.worktime_bank',\n                link: 'timetracker.bank_ad',\n                needs: ['products.mini_entry', '!products.worktimebank'],\n            },\n            {\n                text: 'report.orientations.avi',\n                link: 'timetracker.avi',\n                needs: [\n                    '!userlevel=1?',\n                    'products.rakentajanpaketti||orientation',\n                    'serviceCountry@fi',\n                ],\n            },\n            {\n                //{text: 'report.export_salary', link: 'salary.export-salary', needs: [\"userlevel=2,3,5\", \"export_salary\", \"export_salary@access\"]}\n                text: 'menu.worktime_calendar',\n                link: 'timetracker.calendar',\n            },\n            {\n                text: 'menu.timetracker.aggregated',\n                link: 'timetracker.aggregated',\n                needs: ['!userlevel=1?', 'worktime', 'abcense', '!mobileView'],\n                subroutes: ['timetracker.aggregated.rows'],\n            },\n            {\n                text: 'menu.timetracker.salary-category',\n                link: 'timetracker.salary-category',\n                needs: ['!userlevel=1?', 'worktime', 'salarytype||salarytypev2', '!mobileView'],\n            },\n        ],\n    },\n    {\n        needs: ['drive@add', 'modules.drivinglog', '!userlevel=9'],\n        link: ['drivinglog'],\n        icon: 'move move-Mileage',\n        text: 'menu.drivinglog',\n        id: 'drivinglog',\n    },\n    {\n        needs: [\n            'export_contact_person||urakkaraportointi',\n            'export_taxman@access',\n            'products.rakentajanpaketti', //,'development']\n        ],\n        link: ['taxman.taxreport'],\n        icon: 'move move-Law',\n        text: 'menu.taxman',\n        id: 'taxman',\n        submenus: [\n            {\n                text: 'menu.taxreport',\n                link: 'taxman.taxreport',\n            },\n            {\n                text: 'menu.taxman-contracts-list',\n                link: 'taxman.contract-list',\n                needs: ['urakkaraportointi'],\n            },\n            {\n                text: 'menu.taxman-contracts',\n                link: 'taxman.taxreport-contract',\n                needs: ['urakkaraportointi'],\n            },\n            {\n                text: 'menu.taxman-archive',\n                link: 'taxman.archive',\n            },\n        ],\n    },\n    {\n        needs: [\n            'export_contact_person||urakkaraportointi',\n            'userlevel=5',\n            '!products.rakentajanpaketti', //,'development']\n        ],\n        link: ['taxman.taxreport'],\n        icon: 'move move-Law',\n        text: 'menu.taxman',\n        id: 'taxman',\n        submenus: [\n            {\n                text: 'menu.taxreport',\n                link: 'taxman.taxreport',\n            },\n            {\n                text: 'menu.taxman-contracts-list',\n                link: 'taxman.contract-list',\n                needs: ['urakkaraportointi'],\n            },\n            {\n                text: 'menu.taxman-contracts',\n                link: 'taxman.taxreport-contract',\n                needs: ['urakkaraportointi'],\n            },\n            {\n                text: 'menu.taxman-archive',\n                link: 'taxman.archive',\n            },\n        ],\n    },\n    {\n        needs: ['diaryreport@add'],\n        link: ['worksitediary'],\n        icon: 'move move-LiteratureFilled',\n        text: 'menu.worksitediary',\n        id: 'worksitediary',\n        submenus: [\n            {\n                text: 'menu.worksitediary',\n                link: 'worksitediary.index',\n            },\n            {\n                text: 'menu.worksitediary-events',\n                link: 'worksitediary.events',\n            },\n            {\n                text: 'menu.worksitediary-supervisor-notes-report',\n                link: 'worksitediary.supervisor-notes-report',\n                needs: ['diaryreport_supervisor_note'],\n            },\n            {\n                text: 'menu.worksitediary-offering-report',\n                link: 'worksitediary.offering-report',\n                needs: ['diaryreport_given_offer'],\n            },\n            {\n                text: 'menu.worksitediary-other-entries-report',\n                link: 'worksitediary.other-entries-report',\n                needs: ['diaryreport_other_note'],\n            },\n            {\n                text: 'menu.worksitediary.calendar',\n                link: 'worksitediary.calendar',\n                needs: ['diaryreport@add'],\n            },\n            {\n                text: 'menu.worksitediary.diaryreport_note',\n                link: 'worksitediary.notes',\n                needs: ['diaryreport_note@add'],\n            },\n            {\n                text: 'menu.worksitediary.automation',\n                link: 'worksitediary.automation',\n                needs: ['worksitediary@add'],\n            },\n        ],\n    },\n    {\n        needs: ['diary@access||worksitediary@add'],\n        link: ['diary'],\n        icon: 'move move-LiteratureFilled',\n        text: 'menu.diary',\n        id: 'diary',\n        submenus: [\n            {\n                text: 'menu.diary',\n                link: 'diary.index',\n                needs: ['diary@access'],\n            },\n            {\n                text: 'menu.diaryevents',\n                link: 'diary.events',\n                needs: ['worksitediary@add'],\n            },\n            {\n                text: 'menu.diarycalendar',\n                link: 'diary.calendar',\n                needs: ['diary@access'],\n            },\n            {\n                text: 'menu.diarycombo',\n                link: 'diary.combo',\n                needs: ['diary@access', 'worktime@access'],\n            },\n        ],\n    },\n    {\n        needs: [\n            'products.resource_planning',\n            'userfieldcheck.resourcePlanner||userfieldcheck.showInRP',\n        ],\n        link: ['resource-planning.gantt'],\n        icon: 'move move-LiteratureFilled',\n        text: 'menu.resource-planning',\n        id: 'resource-planning',\n        submenus: [\n            {\n                text: 'report.resource-planning-gantt',\n                link: 'resource-planning.gantt',\n                needs: ['userfieldcheck.resourcePlanner'],\n            },\n            {\n                text: 'report.resource-planning-week-list',\n                link: 'resource-planning.week',\n                needs: ['userfieldcheck.showInRP'],\n            },\n        ],\n    },\n    {\n        needs: [\n            'products.shift_planning',\n            'userfieldcheck.resourcePlanner||userfieldcheck.showInRP',\n        ],\n        link: ['shift-planning.gantt'],\n        icon: 'move move-Calendar',\n        text: 'menu.shift-planning',\n        id: 'shift-planning',\n        submenus: [\n            {\n                text: 'report.shift-planning-gantt',\n                link: 'shift-planning.gantt',\n                needs: ['userfieldcheck.resourcePlanner'],\n            },\n            {\n                text: 'report.shift-planning-week-list',\n                link: 'shift-planning.week',\n                needs: ['userfieldcheck.showInRP'],\n            },\n        ],\n    },\n    {\n        needs: ['presence', 'presence@add||userlevel=2'],\n        link: ['presences'],\n        icon: 'move move-Marker',\n        text: 'menu.presences',\n        id: 'presence',\n        submenus: [\n            {\n                text: 'report.presences',\n                link: 'presences.index',\n            },\n            {\n                text: 'menu.accident',\n                link: 'presences.accident',\n                needs: ['user.id06kort'],\n            },\n            {\n                text: 'menu.report',\n                link: 'presences.report',\n            },\n            {\n                text: 'menu.emp_sums',\n                link: 'presences.employer-sums',\n                needs: ['user.id06kort'],\n            },\n            {\n                text: 'menu.location_report',\n                link: 'presences.location',\n                needs: ['products.entrytracker||products.wirepas'],\n            },\n            {\n                text: 'report.orientations.avi',\n                link: 'presences.avi',\n                needs: [\n                    '!userlevel=1?',\n                    'products.rakentajanpaketti||orientation',\n                    'serviceCountry@fi',\n                ],\n            },\n        ],\n    },\n    {\n        needs: ['abcense@add||userlevel=2', 'worktime', 'modulecontrol.worktimes'],\n        link: ['abcenses'],\n        icon: 'move move-Cup',\n        text: 'menu.abcenses',\n        id: 'absence',\n        submenus: [\n            {\n                text: 'menu.abcenses',\n                link: 'abcenses.index',\n            },\n            {\n                text: 'menu.absence_gantt',\n                link: 'abcenses.gantt',\n            },\n            {\n                text: 'menu.holidays',\n                link: 'abcenses.holidays',\n                needs: ['!tt3', '!customersetting.hide_holidays'],\n            },\n            {\n                text: 'menu.holidaypays',\n                link: 'abcenses.holidaypays',\n                needs: ['modules.holiday_pay', 'flag.holidaypay_v2'],\n            },\n        ],\n    },\n    {\n        //        {text: 'report.export_abcense', link: 'salary.export-abcense', needs: [\"userlevel=2,3,5\", \"export_absence\"]}\n        needs: ['orientation@add'],\n        link: ['orientations.reports'],\n        icon: 'move move-TodoList',\n        text: 'menu.orientations',\n        id: 'orientation',\n        submenus: [\n            {\n                text: 'report.orientations',\n                link: 'orientations.reports',\n            },\n            {\n                text: 'report.orientations.passes',\n                link: 'orientations.passes',\n            },\n            {\n                text: 'report.orientations.inactive-passes',\n                link: 'orientations.inactive-passes',\n            },\n            {\n                text: 'report.orientations.withoutori',\n                link: 'orientations.withoutori',\n                needs: ['user@add', '!userlevel=1'],\n            },\n            {\n                text: 'report.orientations.employeetree',\n                link: 'orientations.employeetree',\n                needs: ['products.orientations_parent', '!userlevel=1'],\n            },\n        ],\n    },\n    {\n        needs: ['tr', 'trnotice@add', '!mvr'],\n        link: ['site_safety.report.tr.graphs'],\n        icon: 'move move-Length',\n        text: 'menu.site_safety',\n        id: 'site-safety',\n        submenus: [\n            {\n                text: 'tr.graphs',\n                link: 'site_safety.report.tr.graphs',\n                needs: ['tr@add'],\n            },\n            {\n                text: 'tr.data',\n                link: 'site_safety.report.tr.data',\n                needs: ['tr@add'],\n            },\n            {\n                text: 'tr.notices',\n                link: 'site_safety.report.tr.notices',\n            },\n            {\n                text: 'menu.site_safety_observation',\n                link: 'site_safety.report.observation',\n                needs: ['site_safety_observation'],\n            },\n            {\n                text: 'menu.site_safety_event',\n                link: 'site_safety.report.event',\n                needs: [\n                    'site_safety_observation',\n                    'site_safety_observation@access',\n                    'site_safety_event@access',\n                ],\n            },\n        ],\n    },\n    {\n        needs: ['mvr', 'trnotice@add', '!tr'],\n        link: ['site_safety.report.mvr.graphs'],\n        icon: 'move move-Humidity',\n        text: 'menu.site_safety',\n        id: 'site-safety',\n        submenus: [\n            {\n                text: 'mvr.graphs',\n                link: 'site_safety.report.mvr.graphs',\n                needs: ['mvr@add'],\n            },\n            {\n                text: 'mvr.data',\n                link: 'site_safety.report.mvr.data',\n                needs: ['mvr@add'],\n            },\n            {\n                text: 'mvr.notices',\n                link: 'site_safety.report.mvr.notices',\n            },\n            {\n                text: 'menu.site_safety_observation',\n                link: 'site_safety.report.observation',\n                needs: ['site_safety_observation'],\n            },\n            {\n                text: 'menu.site_safety_event',\n                link: 'site_safety.report.event',\n                needs: [\n                    'site_safety_observation',\n                    'site_safety_observation@access',\n                    'site_safety_event@access',\n                ],\n            },\n        ],\n    },\n    {\n        needs: ['mvr', 'trnotice@add', 'tr'],\n        link: ['site_safety.report.tr.graphs'],\n        icon: 'move move-Humidity',\n        text: 'menu.site_safety',\n        id: 'site-safety',\n        submenus: [\n            {\n                text: 'tr.graphs',\n                link: 'site_safety.report.tr.graphs',\n                needs: ['tr@add'],\n            },\n            {\n                text: 'tr.data',\n                link: 'site_safety.report.tr.data',\n                needs: ['tr@add'],\n            },\n            {\n                text: 'tr.notices',\n                link: 'site_safety.report.tr.notices',\n            },\n            {\n                text: 'mvr.graphs',\n                link: 'site_safety.report.mvr.graphs',\n                needs: ['mvr@add'],\n            },\n            {\n                text: 'mvr.data',\n                link: 'site_safety.report.mvr.data',\n                needs: ['mvr@add'],\n            },\n            {\n                text: 'mvr.notices',\n                link: 'site_safety.report.mvr.notices',\n            },\n            {\n                text: 'menu.site_safety_observation',\n                link: 'site_safety.report.observation',\n                needs: ['site_safety_observation'],\n            },\n            {\n                text: 'menu.site_safety_event',\n                link: 'site_safety.report.event',\n                needs: [\n                    'site_safety_observation',\n                    'site_safety_observation@access',\n                    'site_safety_event@access',\n                ],\n            },\n        ],\n    },\n    {\n        needs: ['skyddsrond', 'notice@add'],\n        link: ['skyddsronds.dashboard'],\n        icon: 'move move-Length',\n        text: 'menu.skyddsrond',\n        id: 'skyddsrond',\n        submenus: [\n            {\n                text: 'skyddsronds.dashboard',\n                link: 'skyddsronds.dashboard',\n            },\n            {\n                text: 'skyddsronds.report',\n                link: 'skyddsronds.report',\n                needs: ['skyddsrond@add'],\n            },\n            {\n                text: 'skyddsronds.notices',\n                link: 'skyddsronds.notices',\n            },\n        ],\n    },\n    {\n        needs: ['worktask@edit', 'userlevel=1,4'],\n        link: ['worktasks.list'],\n        icon: 'move move-Checklist',\n        text: 'menu.worktask',\n        id: 'worktask',\n        submenus: [\n            {\n                text: 'menu.worktask',\n                link: ['worktasks.list'],\n                needs: ['worktask@edit', 'userlevel=1,4'],\n                showMobile: true,\n            },\n            {\n                //{text: \"menu.add_presence\", link: ['presences.add'], needs: ['presence@add'], showMobile: true}\n                //{text: \"menu.clockcard\", link: ['timetracker.timecard.add'], needs: ['userlevel=1,4', 'worktime', 'worktime.starttime@disabled||products.timetracker_hybrid', 'modulecontrol.worktimes'], showMobile: true}\n                //{text: \"menu.add_worktime\", link: ['timetracker.add'], needs: ['userlevel=1,4', 'worktime@add', '!worktime.starttime@disabled', '!products.timetracker_hybrid', 'modulecontrol.worktimes'], showMobile: true}\n                //{text: \"menu.add_worktime\", link: ['timetracker.add'], needs: ['!userlevel=1,4', 'worktime@add', 'modulecontrol.worktimes'], showMobile: true}\n                text: 'report.worktasks.calendar',\n                link: 'worktasks.calendar',\n            },\n            {\n                text: 'report.worktasks.report',\n                link: 'worktasks.report',\n            },\n        ],\n    },\n    {\n        needs: ['worktask@add||worktask@access', '!userlevel=1,4'],\n        link: ['worktasks.calendar'],\n        icon: 'move move-Checklist',\n        text: 'menu.worktask',\n        id: 'worktask',\n        submenus: [\n            {\n                text: 'menu.worktask',\n                link: ['worktasks.list'],\n                needs: ['worktask@edit'],\n                showMobile: true,\n            },\n            {\n                text: 'report.worktasks.calendar',\n                link: 'worktasks.calendar',\n            },\n            {\n                text: 'report.worktasks.report',\n                link: 'worktasks.report',\n            },\n            {\n                text: 'report.worktasks.gantt',\n                link: 'worktasks.gantt',\n            },\n        ],\n    },\n    {\n        needs: ['materiallog@add', '!userlevel=1?'],\n        link: ['materiallog.report'],\n        icon: 'move move-Checklist',\n        text: 'menu.materiallog',\n        id: 'material',\n        submenus: [\n            {\n                text: 'report.materials.index',\n                link: 'materiallog.report',\n            },\n            {\n                text: 'report.materials.groups',\n                link: 'materiallog.groups',\n                needs: ['products.materialgroups', 'materialgroup@access'],\n            },\n            {\n                text: 'report.materials.list',\n                link: 'materiallog.list',\n                needs: ['products.materialgroups', 'materialtype@access'],\n            },\n        ],\n    },\n    {\n        needs: ['multitask@add'],\n        link: ['multitask.report'],\n        icon: 'move move-Checklist',\n        text: 'menu.multitask',\n        id: 'multitask',\n    },\n    {\n        needs: ['user@add'],\n        link: ['users'],\n        icon: 'move move-Users',\n        text: 'menu.users',\n        id: 'users',\n        submenus: [\n            {\n                text: 'report.users.index',\n                link: 'users.index',\n            },\n            {\n                text: 'report.users.id06card',\n                link: 'users.card',\n                needs: ['user.id06valid'],\n            },\n            {\n                text: 'report.users.subcontractor',\n                link: 'users.subcontractor',\n                needs: ['user.taxnumber'],\n            },\n            {\n                text: 'report.users.linked_users',\n                link: 'users.linked',\n            },\n            {\n                text: 'report.users.removed',\n                link: 'users.removed',\n            },\n            {\n                text: 'report.users.inactive',\n                link: 'users.inactive',\n            },\n            {\n                text: 'report.users.saldos',\n                link: 'users.saldos',\n                needs: ['products.saldo'],\n            },\n            {\n                text: 'report.users.saldos',\n                link: 'users.saldos_ad',\n                needs: ['!products.saldo', 'products.mini_entry'],\n            },\n            {\n                text: 'report.users.saldocalendar',\n                link: 'users.saldocalendar',\n                needs: ['products.saldo'],\n            },\n            {\n                text: 'report.users.saldohistory',\n                link: 'users.saldohistory',\n                needs: ['products.saldo', 'saldodeducter@access'],\n            },\n            {\n                text: 'report.users.firecard',\n                link: 'firecards.index',\n                needs: ['products.firecard'],\n            },\n            {\n                text: 'report.users.cardregister',\n                link: 'users.cardregister',\n                needs: ['products.cardregister'],\n            },\n            {\n                text: 'report.users.superior_replacements',\n                link: 'users.superior_replacements',\n                needs: ['products.superior_replacement', 'userlevel=5'],\n            },\n            {\n                text: 'report.users.worktimegroup_changes',\n                link: 'users.worktimegroup_changes',\n                needs: ['products.worktimegroup_changes', 'userlevel=5'],\n            },\n        ],\n    },\n    {\n        needs: ['project@add'],\n        link: ['projects'],\n        icon: 'move move-GeoFence',\n        text: 'menu.projects',\n        id: 'projects',\n        submenus: [\n            {\n                text: 'report.projects.show_all',\n                link: 'projects.index',\n            },\n            {\n                text: 'report.projects.show_closed',\n                link: 'projects.removed',\n            },\n            {\n                text: 'report.projects.inactive',\n                link: 'projects.inactive',\n                needs: ['userlevel=5', 'presence||worktime'],\n            },\n            {\n                text: 'report.projects.rfiddevices',\n                link: 'projects.rfiddevices',\n                needs: ['userlevel=5', 'modules.famoco'],\n            },\n            {\n                text: 'report.projects.report',\n                link: 'projects.report',\n                needs: ['userlevel=5', 'abcense', 'worktime'],\n            },\n            {\n                text: 'report.projects.tasks',\n                link: 'projects.tasks',\n                needs: ['userlevel=6,5', 'task'],\n            },\n        ],\n    },\n    {\n        needs: ['products.nova_costcenter', 'novacostcenter@access'],\n        link: ['nova_costcenters'],\n        icon: 'move move-GeoFence',\n        text: 'menu.nova_costcenters',\n        id: 'nova_costcenters',\n    },\n    {\n        needs: ['lockgroup@access', 'lockpermission@access'],\n        link: ['worksite-areas.report'],\n        icon: 'move move-Password',\n        text: 'menu.worksite-areas',\n        id: 'worksite-areas',\n        submenus: [\n            {\n                text: 'report.worksite-areas.report',\n                link: 'worksite-areas.report',\n            },\n            {\n                text: 'report.worksite-areas.log',\n                link: 'worksite-areas.log-report',\n            },\n        ],\n    },\n    {\n        needs: ['employer@add'],\n        link: ['employers'],\n        icon: 'move move-AdministratorFilled',\n        text: 'menu.employers',\n        id: 'employers',\n        submenus: [\n            {\n                text: 'employer.list',\n                link: 'employers.index',\n            },\n            {\n                text: 'employer.tree',\n                link: 'employers.tree',\n                needs: [\n                    'employer.parent',\n                    '!products.generic_timetracker',\n                    '!flag.hide_employer_tree',\n                ],\n            },\n            {\n                text: 'employer.check',\n                link: 'employers.check',\n                needs: ['employer.tv_status', '!products.vg_reliable_partner_disabled'],\n            },\n            {\n                text: 'employer.removed',\n                link: 'employers.removed',\n            },\n            {\n                text: 'employer.inactive',\n                link: 'employers.inactive',\n            },\n        ],\n    },\n    {\n        needs: ['transaction@access'],\n        link: ['machines.transactions'],\n        icon: 'move move-Hammer',\n        text: 'menu.machines',\n        id: 'machines',\n        submenus: [\n            {\n                text: 'machines.transactions',\n                link: 'machines.transactions',\n                needs: ['transaction@access'],\n            },\n            {\n                text: 'machines.transactions_history',\n                link: 'machines.transactions-history',\n                needs: ['transaction@access'],\n            },\n            {\n                text: 'machines.machine',\n                link: 'machines.machine',\n                needs: ['tooltype@access'],\n            },\n            {\n                text: 'machines.map',\n                link: 'machines.map',\n                needs: ['transaction@access'],\n            },\n            {\n                text: 'machines.prices',\n                link: 'machines.prices',\n                needs: ['transaction@access'],\n            },\n        ],\n    },\n    {\n        needs: ['worktime', 'userlevel=2,5'],\n        link: ['salary'],\n        icon: 'move move-Money',\n        text: 'menu.salary',\n        id: 'salary',\n        submenus: [\n            {\n                text: 'report.export_salary',\n                link: 'salary.export-salary',\n                needs: ['userlevel=2,3,5'],\n            },\n            {\n                text: 'report.export_abcense',\n                link: 'salary.export-abcense',\n                needs: ['userlevel=2,3,5', 'export_absence'],\n            },\n            {\n                text: 'settings.custom-export',\n                link: 'salary.custom-export',\n                needs: ['products.custom_export'],\n            },\n            {\n                text: 'settings.custom-export',\n                link: 'salary.custom-export-ad',\n                needs: ['products.mini_entry', '!products.custom_export'],\n            },\n            {\n                text: 'settings.wage_period',\n                link: 'salary.salaryperiods',\n            },\n            {\n                text: 'settings.salarytype',\n                link: 'salary.salarytypes',\n                needs: ['salarytype', '!modules.salarytype_v2'],\n            },\n            {\n                text: 'settings.workday-calendar',\n                link: 'salary.workday-calendar',\n                needs: ['!mobileView'],\n            },\n        ],\n    },\n    {\n        needs: ['worktime||products.admintool', '!userlevel=4'],\n        link: ['thereport'],\n        icon: 'move move-PieChart',\n        text: 'menu.comboreport',\n        id: 'own-report',\n    },\n    {\n        /*\n    AT2 LINKS\n    */\n        needs: ['products.admintool'],\n        link: ['forms.form-report', 'customer'],\n        icon: 'move move-Time',\n        text: 'menu.admintool',\n        submenus: [\n            {\n                text: 'menu.customers',\n                link: ['forms.form-report', 'customer'],\n                needs: ['customer@access'],\n            },\n            {\n                text: 'menu.products',\n                link: ['forms.form-report', 'customerproduct'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.bills',\n                link: ['forms.form-report', 'bill'],\n                needs: ['bill@access'],\n            },\n            {\n                text: 'menu.rcbills',\n                link: ['forms.form-report', 'rcbill'],\n                needs: ['rcbill@access'],\n            },\n            {\n                text: 'menu.campaigns',\n                link: ['forms.form-report', 'campaign'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.productcampaigns',\n                link: ['forms.form-report', 'productcampaign'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.customercampaigns',\n                link: ['forms.form-report', 'customercampaign'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.promocodes',\n                link: ['forms.form-report', 'promocode'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.timecleandevices',\n                link: ['forms.form-report', 'timecleandevice'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.invoices',\n                link: ['forms.custom-report', 'invoices'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.invoicesat2.netvisor',\n                link: ['forms.custom-report', 'invoicesat2Netvisor'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.invoicesat2',\n                link: ['forms.custom-report', 'invoicesat2'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.invoicesat1',\n                link: ['forms.custom-report', 'invoicesat1'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.invoicesat2legacy',\n                link: ['forms.custom-report', 'invoicesat2legacy'],\n                needs: ['userlevel=5', 'development'],\n            },\n            {\n                text: 'menu.invoicesat1legacy',\n                link: ['forms.custom-report', 'invoicesat1legacy'],\n                needs: ['userlevel=5', 'development'],\n            },\n            {\n                text: 'menu.comissions',\n                link: ['forms.custom-report', 'comissions'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.activity',\n                link: ['forms.custom-report', 'activity'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.billinginfomissing',\n                link: ['forms.custom-report', 'billinginfomissing'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.subcontractor',\n                link: ['forms.form-report', 'subcontractor'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.billingrun',\n                link: ['forms.form-report', 'billingrun'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.billinginfo',\n                link: ['forms.form-report', 'billinginfo'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.promomessages',\n                link: ['forms.form-report', 'promomessage'],\n                needs: ['userlevel=5'],\n            },\n            {\n                text: 'menu.tos',\n                link: ['forms.custom-report', 'tos'],\n                needs: ['userlevel=5'],\n            },\n        ],\n    },\n    {\n        needs: ['products.admintool', 'userlevel=5'],\n        link: ['admintool.reports.bi.timecleanlog'],\n        icon: 'move move-Timeclean',\n        text: 'menu.timecleanlog',\n        submenus: [],\n    },\n    {\n        needs: ['products.admintool', 'userlevel=5'],\n        link: ['admintool.reports.featureflags'],\n        icon: 'move move-Toggle',\n        text: 'menu.featureflags',\n        submenus: [],\n    },\n    {\n        needs: ['products.admintool', 'userlevel=5'],\n        link: ['groups'],\n        icon: 'move move-Users',\n        text: 'menu.groups',\n        submenus: [],\n    },\n    {\n        /*\n    AT2 LINKS END\n    */\n        needs: ['userlevel=5'],\n        link: ['settings'],\n        icon: 'move move-Settings',\n        text: 'menu.settings',\n        id: 'settings',\n        submenus: [\n            {\n                text: 'settings.general',\n                link: 'settings.general-v2',\n            },\n            {\n                text: 'settings.notifications',\n                link: 'settings.notificationpanel',\n                needs: ['!flag.notification-settings-v2'],\n            },\n            {\n                text: 'settings.integrations',\n                link: 'settings.integrations',\n                needs: ['products.admintool'],\n            },\n            {\n                //{text: \"settings.pl\", link: 'settings.pl', needs: [\"presence\"]}\n                text: 'settings.measurement_custom',\n                link: 'settings.measurement_custom',\n                needs: ['products.measurement_custom'],\n            },\n            {\n                text: 'settings.forms',\n                link: 'settings.forms',\n                subroutes: ['settings.forms.form'],\n                needs: ['!products.mini_entry'],\n            },\n            {\n                text: 'settings.products',\n                link: 'settings.products',\n                needs: ['!products.mini_entry'],\n            },\n            {\n                text: 'settings.billing',\n                link: 'settings.billing',\n                needs: ['userlevel=5', 'products', '!products.generic_timetracker'],\n            },\n            {\n                text: 'settings.history',\n                link: 'settings.history',\n            },\n        ],\n    },\n    {\n        //{text: \"settings.activitylog\", link: 'settings.activitylog', needs: [\"userlevel=5\"]}\n        needs: ['!customersetting.new_messageboard', '!products.admintool'],\n        link: ['messageboard'],\n        icon: 'move move-Message',\n        text: 'menu.messageboard',\n        id: 'messageboard',\n    },\n    {\n        needs: ['customersetting.new_messageboard', '!products.admintool'],\n        link: ['messages.list'],\n        icon: 'move move-Message',\n        text: 'menu.messages',\n        id: 'messages',\n        submenus: [\n            {\n                text: 'menu.messages',\n                link: 'messages.list',\n            },\n            {\n                text: 'menu.messages.email-approvals',\n                link: 'messages.email-approvals',\n                needs: ['email_approval', 'userlevel=5,6', 'email_approval@access'],\n            },\n        ],\n    },\n    {\n        needs: ['products.mapon', 'userlevel=5'],\n        link: ['mapon'],\n        icon: 'move move-ComboChart',\n        text: 'menu.mapon',\n        id: 'mapon',\n    },\n    {\n        needs: ['ccbutton', 'userlevel=5'],\n        link: ['integrations'],\n        icon: 'move move-puzzle',\n        text: 'menu.integrations',\n        id: 'integrations',\n        submenus: [\n            {\n                text: 'menu.integrations.run',\n                link: 'integrations.index',\n            },\n            {\n                text: 'menu.integrations.report',\n                link: 'integrations.report',\n            },\n            {\n                text: 'menu.integrations.list',\n                link: 'integrations.list',\n                needs: ['development'],\n            },\n            {\n                text: 'menu.integrations.fondionerrors',\n                link: 'integrations.fondionerrors',\n                needs: ['products.fondion'],\n            },\n        ],\n    },\n    {\n        needs: ['development'],\n        link: ['development'],\n        icon: 'move move-Settings',\n        text: 'development',\n        id: 'development',\n        submenus: [\n            {\n                text: 'development',\n                link: 'development.index',\n            },\n            {\n                text: 'Service validator',\n                link: 'development.servicevalidator',\n            },\n            {\n                text: 'cron',\n                link: 'development.cron',\n            },\n            {\n                text: 'data creator',\n                link: 'development.datacreator',\n                needs: ['devMode'],\n            },\n            {\n                text: 'react',\n                link: 'development.react',\n            },\n            {\n                text: 'integrations',\n                link: 'development.integrations',\n            },\n            {\n                text: 'notifications',\n                link: 'development.notifications',\n            },\n            {\n                text: 'sms logs',\n                link: 'development.smslogs',\n            },\n            {\n                text: 'functions',\n                link: 'development.functions',\n            },\n            {\n                text: 'own reports',\n                link: 'development.ownreports',\n            },\n            {\n                text: 'own roles',\n                link: 'development.ownroles',\n            },\n            {\n                text: 'products',\n                link: 'development.products',\n            },\n            {\n                text: 'rollock',\n                link: 'development.rollock',\n                needs: ['products.rollock'],\n            },\n            {\n                //{text: \"activity\", link: 'development.activitylog'}\n                text: 'import',\n                link: 'development.import',\n            },\n        ],\n    },\n];\n\naddLinkList = [\n    {\n        // if modal-add-form-worktime\n        icon: 'move move-Time',\n        text: 'menu.clockcard',\n        link: 'modal',\n        query: 'timecard',\n        id: 'worktime',\n        needs: [\n            'userlevel=1?',\n            'worktime',\n            'worktime.starttime@disabled||products.timetracker_hybrid',\n            'modulecontrol.worktimes',\n            'flag.modal-add-form-worktime',\n        ],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n                modal: 'presence',\n            },\n            {\n                text: 'menu.clockcard',\n                link: ['timetracker.timecard.add'],\n                needs: [\n                    'userlevel=1?',\n                    'worktime',\n                    'worktime.starttime@disabled||products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                modal: 'timecard',\n            },\n        ],\n    },\n    {\n        icon: 'move move-Time',\n        text: 'menu.add_worktime',\n        link: 'modal',\n        query: 'worktime',\n        id: 'worktime',\n        needs: [\n            'userlevel=1?',\n            'worktime@add',\n            '!worktime.starttime@disabled',\n            '!products.timetracker_hybrid',\n            'modulecontrol.worktimes',\n            'flag.modal-add-form-worktime',\n        ],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n                modal: 'presence',\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: [\n                    'userlevel=1?',\n                    'worktime@add',\n                    '!worktime.starttime@disabled',\n                    '!products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                modal: 'worktime',\n            },\n        ],\n    },\n    {\n        icon: 'move move-Time',\n        text: 'menu.add_worktime',\n        link: 'modal',\n        query: 'worktime',\n        id: 'worktime',\n        needs: [\n            '!userlevel=1?',\n            'worktime@add',\n            'modulecontrol.worktimes',\n            'flag.modal-add-form-worktime',\n        ],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n                modal: 'presence',\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: ['!userlevel=1?', 'worktime@add', 'modulecontrol.worktimes'],\n                modal: 'worktime',\n            },\n            {\n                text: 'header.path.add.timecard',\n                link: ['timetracker.timecard.add'],\n                needs: [\n                    '!userlevel=1?',\n                    'worktime',\n                    'products.timetracker_clockcard||products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                modal: 'timecard',\n            },\n        ],\n    },\n    {\n        // else\n        icon: 'move move-Time',\n        text: 'menu.clockcard',\n        link: ['timetracker.timecard.add'],\n        id: 'worktime',\n        needs: [\n            'userlevel=1?',\n            'worktime',\n            'worktime.starttime@disabled||products.timetracker_hybrid',\n            'modulecontrol.worktimes',\n            '!flag.modal-add-form-worktime',\n        ],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n            },\n            {\n                text: 'menu.clockcard',\n                link: ['timetracker.timecard.add'],\n                needs: [\n                    'userlevel=1?',\n                    'worktime',\n                    'worktime.starttime@disabled||products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n            },\n        ],\n    },\n    {\n        icon: 'move move-Time',\n        text: 'menu.add_worktime',\n        link: ['timetracker.add'],\n        id: 'worktime',\n        needs: [\n            'userlevel=1?',\n            'worktime@add',\n            '!worktime.starttime@disabled',\n            '!products.timetracker_hybrid',\n            'modulecontrol.worktimes',\n            '!flag.modal-add-form-worktime',\n        ],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: [\n                    'userlevel=1?',\n                    'worktime@add',\n                    '!worktime.starttime@disabled',\n                    '!products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n            },\n        ],\n    },\n    {\n        icon: 'move move-Time',\n        text: 'menu.add_worktime',\n        link: ['timetracker.add'],\n        id: 'worktime',\n        needs: [\n            '!userlevel=1?',\n            'worktime@add',\n            'modulecontrol.worktimes',\n            '!flag.modal-add-form-worktime',\n        ],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: ['!userlevel=1?', 'worktime@add', 'modulecontrol.worktimes'],\n            },\n            {\n                text: 'header.path.add.timecard',\n                link: ['timetracker.timecard.add'],\n                needs: [\n                    '!userlevel=1?',\n                    'worktime',\n                    'products.timetracker_clockcard||products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n            },\n        ],\n    },\n    {\n        icon: 'move move-Mileage',\n        text: 'menu.toggle_drive',\n        link: ['drivinglog.toggle'],\n        id: 'drivinglog',\n        needs: ['drive@add','!userlevel=9'],\n    },\n    {\n        //if flag\n        icon: 'move move-LiteratureFilled',\n        text: 'menu.add_worksitediary',\n        link: 'modal',\n        query: 'worksitediary',\n        id: 'worksitediary',\n        needs: ['worksitediary@add', 'flag.ember-movenium-form-add-worksitediary'],\n    },\n    {\n        //else\n        icon: 'move move-LiteratureFilled',\n        text: 'menu.add_worksitediary',\n        link: ['worksitediary.add'],\n        id: 'worksitediary',\n        needs: ['worksitediary@add', '!flag.ember-movenium-form-add-worksitediary'],\n    },\n    {\n        //if flag\n        icon: 'move move-LiteratureFilled',\n        text: 'menu.diary',\n        link: 'modal',\n        query: 'diary',\n        id: 'diary',\n        needs: ['diary@add', 'flag.ember-movenium-form-add-diary'],\n    },\n    {\n        //else\n        icon: 'move move-LiteratureFilled',\n        text: 'menu.diary',\n        link: ['diary.report'],\n        id: 'diary',\n        needs: ['diary@add', '!flag.ember-movenium-form-add-diary'],\n    },\n    {\n        icon: 'move move-Cup',\n        text: 'menu.add_abcense',\n        link: 'modal',\n        query: 'abcense',\n        id: 'absence',\n        needs: ['abcense@add', 'worktime', 'modulecontrol.worktimes'],\n        submenus: [\n            {\n                text: 'menu.add_abcense_multiple',\n                link: ['abcenses.add-multiple'],\n                needs: ['abcense@add', 'worktime', 'modulecontrol.worktimes'],\n            },\n            {\n                text: 'menu.add_abcense_single',\n                link: ['abcenses.add'],\n                needs: ['abcense@add', 'worktime', 'modulecontrol.worktimes'],\n            },\n        ],\n    },\n    {\n        icon: 'move move-Signature',\n        text: 'menu.add_pass',\n        link: ['pass.add'],\n        id: 'pass',\n        needs: ['orientation@add'],\n    },\n    {\n        // Swedish Presence Links\n        // if no flag (or userlevel=1)\n        icon: 'move move-Marker',\n        text: 'menu.add_presence',\n        link: ['presences.add'],\n        id: 'presence',\n        needs: ['presence@add', 'serviceCountry@se', '!flag.modal-add-form-worktime||userlevel=1?'],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n                showMobile: true,\n            },\n            {\n                text: 'menu.clockcard',\n                link: ['timetracker.timecard.add'],\n                needs: [\n                    'userlevel=1',\n                    'worktime',\n                    'worktime.starttime@disabled||products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                showMobile: true,\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: [\n                    'userlevel=1',\n                    'worktime@add',\n                    '!worktime.starttime@disabled',\n                    '!products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                showMobile: true,\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: ['!userlevel=1', 'worktime@add', 'modulecontrol.worktimes'],\n                showMobile: true,\n            },\n        ],\n    },\n    {\n        //flag\n        icon: 'move move-Marker',\n        text: 'menu.add_presence',\n        link: 'modal',\n        query: 'presence',\n        id: 'presence',\n        needs: [\n            'presence@add',\n            'serviceCountry@se',\n            'flag.modal-add-form-worktime',\n            '!userlevel=1?',\n        ],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n                showMobile: true,\n                modal: 'presence',\n            },\n            {\n                text: 'menu.clockcard',\n                link: ['timetracker.timecard.add'],\n                needs: [\n                    'userlevel=1',\n                    'worktime',\n                    'worktime.starttime@disabled||products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                showMobile: true,\n                modal: 'timecard',\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: [\n                    'userlevel=1',\n                    'worktime@add',\n                    '!worktime.starttime@disabled',\n                    '!products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                showMobile: true,\n                modal: 'timecard',\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: ['!userlevel=1', 'worktime@add', 'modulecontrol.worktimes'],\n                showMobile: true,\n                modal: 'worktime',\n            },\n        ],\n    },\n    {\n        // Finnish Presence Links for Workers\n        // if no flag\n        icon: 'move move-Marker',\n        text: 'menu.add_presence',\n        link: ['presences.add'],\n        id: 'presence',\n        needs: [\n            'presence@add',\n            'serviceCountry@fi',\n            'userlevel=1?',\n            '!flag.modal-add-form-worktime',\n        ],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n                showMobile: true,\n            },\n            {\n                text: 'menu.clockcard',\n                link: ['timetracker.timecard.add'],\n                needs: [\n                    'userlevel=1',\n                    'worktime',\n                    'worktime.starttime@disabled||products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                showMobile: true,\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: [\n                    'userlevel=1',\n                    'worktime@add',\n                    '!worktime.starttime@disabled',\n                    '!products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                showMobile: true,\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: ['!userlevel=1', 'worktime@add', 'modulecontrol.worktimes'],\n                showMobile: true,\n            },\n        ],\n    },\n    {\n        // flag\n        icon: 'move move-Marker',\n        text: 'menu.add_presence',\n        link: 'modal',\n        query: 'presence',\n        id: 'presence',\n        needs: [\n            'presence@add',\n            'serviceCountry@fi',\n            'userlevel=1?',\n            'flag.modal-add-form-worktime',\n        ],\n        submenus: [\n            {\n                text: 'menu.add_presence',\n                link: ['presences.add'],\n                needs: ['presence@add'],\n                showMobile: true,\n                modal: 'presence',\n            },\n            {\n                text: 'menu.clockcard',\n                link: ['timetracker.timecard.add'],\n                needs: [\n                    'userlevel=1',\n                    'worktime',\n                    'worktime.starttime@disabled||products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                showMobile: true,\n                modal: 'timecard',\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: [\n                    'userlevel=1',\n                    'worktime@add',\n                    '!worktime.starttime@disabled',\n                    '!products.timetracker_hybrid',\n                    'modulecontrol.worktimes',\n                ],\n                showMobile: true,\n                modal: 'worktime',\n            },\n            {\n                text: 'menu.add_worktime',\n                link: ['timetracker.add'],\n                needs: ['!userlevel=1', 'worktime@add', 'modulecontrol.worktimes'],\n                showMobile: true,\n                modal: 'worktime',\n            },\n        ],\n    },\n    {\n        // Finnish Presence Links for non Workers\n        icon: 'move move-Marker',\n        text: 'menu.add_presence',\n        link: 'modal',\n        query: 'presence',\n        id: 'presence',\n        needs: ['presence@add', 'serviceCountry@fi', '!userlevel=1?'],\n    },\n    {\n        icon: 'move move-TodoList',\n        text: 'menu.add_orientation',\n        link: ['orientations.add'],\n        id: 'orientation',\n        needs: ['orientation@add'],\n    },\n    {\n        icon: 'move move-Length',\n        text: 'menu.add_tr',\n        link: ['site_safety.measurement.add', 'add', 'tr'],\n        id: 'tr',\n        needs: ['tr@add'],\n    },\n    {\n        icon: 'move move-Humidity',\n        text: 'menu.add_mvr',\n        link: ['site_safety.measurement.add', 'add', 'mvr'],\n        id: 'mvr',\n        needs: ['mvr@add'],\n    },\n    {\n        icon: 'move move-Length',\n        text: 'menu.add_skyddsrond',\n        link: ['skyddsronds.add'],\n        id: 'skyddsrond',\n        needs: ['skyddsrond@add'],\n    },\n    {\n        icon: 'move move-Note',\n        text: 'menu.add_notice',\n        link: ['site_safety.addnotice'],\n        id: 'trnotice',\n        needs: [\n            'trnotice@add',\n            'products.measurement_tr||products.measurement_mvr',\n            '!userlevel=1',\n        ],\n    },\n    {\n        icon: 'move move-Note',\n        text: 'menu.add_notice',\n        link: 'modal',\n        query: 'notice',\n        id: 'notice',\n        needs: ['notice@add', '!userlevel=1'],\n    },\n    {\n        icon: 'move move-Checklist',\n        text: 'menu.add_worktask',\n        link: 'modal',\n        query: 'worktask',\n        id: 'worktask',\n        needs: ['worktask@add'],\n    },\n    {\n        icon: 'move move-Users',\n        text: 'menu.add_user',\n        link: ['users.add'],\n        id: 'user',\n        needs: ['user@add'],\n    },\n    {\n        //if flag\n        icon: 'move move-GeoFence',\n        text: 'menu.add_project',\n        link: 'modal',\n        query: 'project',\n        id: 'project',\n        needs: ['project@add', 'flag.ember-movenium-form-add-projects'],\n    },\n    {\n        //else\n        icon: 'move move-GeoFence',\n        text: 'menu.add_project',\n        link: ['projects.add'],\n        id: 'project',\n        needs: ['project@add', '!flag.ember-movenium-form-add-projects'],\n    },\n    {\n        icon: 'move move-Hammer',\n        text: 'menu.add_transaction',\n        link: ['machines.transaction.project'],\n        id: 'transaction',\n        needs: ['transaction@add'],\n    },\n    {\n        icon: 'move move-Hammer',\n        text: 'menu.machine',\n        link: 'modal',\n        query: 'tooltype',\n        id: 'tooltype',\n        needs: ['tooltype@add'],\n    },\n    {\n        icon: 'move move-GeoFence',\n        text: 'menu.give_magickey',\n        link: ['projects.magickey'],\n        id: 'magickey',\n        needs: ['!products.generic_timetracker'],\n    },\n    {\n        //if ember-movenium-form-add-employers flag\n        icon: 'move move-AdministratorFilled',\n        text: 'menu.add_employer',\n        link: 'modal',\n        query: 'employer',\n        id: 'employer',\n        needs: ['employer@add', 'flag.ember-movenium-form-add-employers'],\n    },\n    {\n        //else\n        icon: 'move move-AdministratorFilled',\n        text: 'menu.add_employer',\n        link: ['employers.add'],\n        id: 'employer',\n        needs: ['employer@add', '!flag.ember-movenium-form-add-employers'],\n    },\n    {\n        icon: 'move move-Message',\n        text: 'menu.add_message',\n        link: ['messageboard.add'],\n        id: 'messageboard',\n        needs: ['!customersetting.new_messageboard', 'userlevel=5', '!products.admintool'],\n    },\n    {\n        icon: 'move move-Message',\n        text: 'menu.add_message',\n        link: ['messages.add'],\n        id: 'message',\n        needs: [\n            'customersetting.new_messageboard',\n            'userlevel=5||userlevel=6',\n            '!products.admintool',\n        ],\n    },\n    {\n        //{text: \"menu.send_skatteverket\", link: ['send_skatteverket'], needs: ['userlevel=5','presence']}\n        icon: 'move move-Users',\n        text: 'menu.invite_users',\n        link: ['invite-users'],\n        id: 'invite-users',\n        needs: ['userlevel=2,3,4,5,6', '!products.generic_timetracker'],\n    },\n    {\n        // AT2 LINKS\n        text: 'menu.add_product',\n        link: ['forms.form-add', 'customerproduct'],\n        id: 'product',\n        needs: ['products.admintool', 'customerproduct@add'],\n    },\n    {\n        text: 'menu.add_campaign',\n        link: ['forms.form-add', 'campaign'],\n        id: 'campaign',\n        needs: ['products.admintool', 'campaign@add'],\n    },\n    {\n        text: 'menu.add_productcampaign',\n        link: ['forms.form-add', 'productcampaign'],\n        id: 'productcampaign',\n        needs: ['products.admintool', 'productcampaign@add'],\n    },\n    {\n        text: 'menu.add_customercampaign',\n        link: ['forms.form-add', 'customercampaign'],\n        id: 'customercampaign',\n        needs: ['products.admintool', 'customercampaign@add'],\n    },\n    {\n        text: 'menu.add_promocode',\n        link: ['forms.form-add', 'promocode'],\n        id: 'promocode',\n        needs: ['products.admintool', 'promocode@add'],\n    },\n    {\n        text: 'menu.add_billrow',\n        link: ['forms.form-add', 'bill'],\n        id: 'billrow',\n        needs: ['products.admintool', 'bill@add', 'development', '!userlevel=7,8'],\n    },\n    {\n        text: 'menu.add_rcbill',\n        link: ['forms.form-add', 'rcbill'],\n        id: 'rcbill',\n        needs: ['products.admintool', 'rcbill@add', 'development', '!userlevel=7,8'],\n    },\n    {\n        text: 'menu.add_timecleandevice',\n        link: 'modal',\n        query: 'timecleandevice',\n        id: 'timecleandevice',\n        needs: ['products.admintool', 'timecleandevice@add'],\n    },\n    {\n        text: 'menu.add_promomessage',\n        link: ['forms.form-add', 'promomessage'],\n        id: 'promomessage',\n        needs: ['products.admintool', 'promomessage@add'],\n    },\n    {\n        text: 'menu.createservice',\n        link: ['admintool.createservice'],\n        id: 'createservice',\n        needs: ['products.admintool'],\n    },\n    {\n        text: 'menu.at_billing',\n        link: ['admintool.billing'],\n        id: 'atbilling',\n        needs: ['products.admintool', 'bill@access', '!userlevel=7'],\n    },\n    {\n        text: 'menu.add_group',\n        link: 'modal',\n        query: 'group',\n        id: 'group',\n        needs: ['products.admintool', 'userlevel=5'],\n    },\n    {\n        // AT2 LINKS END\n        icon: 'move move-Law',\n        text: 'menu.add_taxman_contract',\n        id: 'taxman_contract',\n        link: ['taxman.contract-list.add'],\n        needs: ['userlevel=5', 'urakkaraportointi'],\n    },\n    {\n        icon: 'move move-GeoFence',\n        text: 'menu.skv_number',\n        id: 'skv_number',\n        link: 'https://www.skatteverket.se/foretag/etjansterochblanketter/allaetjanster/tjanster/seanmalandraochavanmalbyggarbetsplatser.4.309a41aa1672ad0c8372766.html',\n        needs: ['userlevel=5', 'products.personalliggareandid06'],\n    },\n    {\n        icon: 'move move-LiteratureFilled',\n        text: 'menu.worksitediary.report.add.basic-info',\n        id: 'worksitediary-info',\n        link: ['worksitediary.report.first'],\n        needs: ['diaryreport@add'],\n    },\n    {\n        // if ember-movenium-form-add-siteSafetyObservation flag\n        icon: 'move move-Note',\n        text: 'menu.add.site_safety_observation',\n        link: 'modal',\n        id: 'site_safety_observation',\n        query: 'site_safety_observation',\n        needs: ['site_safety_observation', 'flag.ember-movenium-form-add-siteSafetyObservation'],\n    },\n    {\n        //else\n        icon: 'move move-Note',\n        text: 'menu.add.site_safety_observation',\n        link: ['site_safety.observation.add'],\n        id: 'site_safety_observation',\n        needs: ['site_safety_observation', '!flag.ember-movenium-form-add-siteSafetyObservation'],\n    },\n    {\n        icon: 'move move-Note',\n        text: 'menu.add.site_safety_event',\n        link: 'modal',\n        query: 'site_safety_event',\n        id: 'site_safety_event',\n        needs: ['site_safety_event', 'site_safety_event@add'],\n    },\n    {\n        icon: 'move move-Note',\n        text: 'menu.add.firecard',\n        link: ['firecards.add'],\n        id: 'firecard',\n        needs: ['firecard@add'],\n    },\n    {\n        icon: 'move move-Marker',\n        text: 'menu.add_card',\n        link: 'modal',\n        query: 'card',\n        id: 'card',\n        needs: ['card@add', 'userlevel=1?'],\n    },\n    {\n        icon: 'move move-Checklist',\n        text: 'menu.add.task',\n        link: 'modal',\n        query: 'task',\n        id: 'task',\n        needs: ['task@add', 'userlevel=6,5'],\n    },\n    {\n        icon: 'move move-qr-code',\n        text: 'menu.add.qrcode',\n        link: 'modal',\n        query: 'qrcode',\n        id: 'qrcode',\n        needs: ['products.qrcode'],\n    },\n    {\n        icon: 'move move-puzzle',\n        text: 'menu.add.integration',\n        link: 'modal',\n        query: 'ccbutton',\n        id: 'ccbutton',\n        needs: ['ccbutton', 'development'],\n    },\n];\n\ndefaultFirstPages = [\n    {\n        route: 'forms.form-report@customer',\n        needs: ['products.admintool'],\n    },\n    {\n        route: 'presences.add',\n        needs: ['userlevel=1', 'presence'],\n    },\n    {\n        route: 'my-sites',\n        needs: ['userlevel=3', 'project'],\n    },\n    {\n        route: 'timetracker.timecard.add',\n        needs: [\n            'userlevel=1',\n            'worktime',\n            'worktime.starttime@disabled||products.timetracker_hybrid',\n        ],\n    },\n    {\n        route: 'timetracker.add',\n        needs: [\n            'userlevel=1',\n            'worktime@add',\n            '!worktime.starttime@disabled',\n            '!products.timetracker_hybrid',\n        ],\n    },\n    {\n        route: 'presences.report',\n        needs: ['userlevel=5||userlevel=2', 'presence'],\n    },\n    {\n        route: 'timetracker.worktime-list',\n        needs: ['userlevel=5||userlevel=2', 'worktime'],\n    },\n    {\n        route: 'my-sites',\n        needs: ['worktime||presence||orientation||tr||mvr'],\n    },\n];\n\nsavedCustomization = {\n    worktime: {\n        endtime: {\n            features: {\n                hide: false,\n            },\n        },\n    },\n};\n\nbranding_needs = {\n    whitelist: [\n        {\n            needs: ['products.generic_timetracker'],\n            product_page: [\n                'famoco',\n                'drivinglog',\n                'fivaldi_salary_soap',\n                'fivaldi_salary_csv',\n                'netvisor_salary_rest',\n                'lon600_salary_xml',\n                'taskmanagement',\n                'plentry',\n                'nova_salary_csv',\n            ],\n        },\n    ],\n    blacklist: [\n        {\n            needs: ['!products.generic_timetracker'],\n            product_page: ['plentry'],\n        },\n    ],\n};\n\npossibleFirstPages = [\n    'dashboard',\n    'my-sites.index',\n    'timetracker.worktime-list',\n    'timetracker.week-report',\n    'users.index',\n    'projects.index',\n    'presences.index',\n    'forms.form-report',\n];\n\nexport default {\n    staticMenus: staticMenus,\n    addLinkList: addLinkList,\n    defaultFirstPages: defaultFirstPages,\n    savedCustomization: savedCustomization,\n    branding_needs: branding_needs,\n    possibleFirstPages: possibleFirstPages,\n};\n","export default {\n    generalSettings: [\n        {\n            title: 'settings.general',\n        },\n        {\n            name: 'new_messageboard',\n            random: true,\n            title: 'settings.general.new_messageboard',\n            needs: [],\n        },\n        {\n            title: 'settings.general.terms',\n            needs: ['modules.timetracker'],\n            component: 'collector/field-setting-comp/terms-setting',\n        },\n        {\n            title: 'settings.general.recipients',\n            random: true,\n            productsOn: ['products.recipients'],\n            productsOff: ['!products.recipients'],\n            needs: ['products.timetracker'],\n        },\n        {\n            name: 'orientations_check_all',\n            title: 'settings.general.orientations',\n            needs: ['modules.orientations'],\n        },\n        {\n            title: 'settings.general.self_orientation',\n            productsOn: ['products.orientations_self'],\n            productsOff: ['!products.orientations_self'],\n            needs: ['modules.orientations'],\n        },\n        {\n            title: 'settings.general.orientations_parent',\n            random: true,\n            productsOn: ['products.orientations_parent'],\n            productsOff: ['!products.orientations_parent'],\n            needs: ['modules.orientations'],\n        },\n        {\n            title: 'settings.worksitediary.state',\n            random: true,\n            productsOn: ['products.worksitediary_state'],\n            productsOff: ['!products.worksitediary_state'],\n            needs: ['products.worksitediary'],\n        },\n        {\n            title: 'settings.phasetitle',\n            random: true,\n            form: 'phasetitle',\n            productsOn: ['products.worksitediary_phasetitle'],\n            productsOff: ['!products.worksitediary_phasetitle'],\n            needs: ['products.worksitediary'],\n        },\n        {\n            title: 'settings.general.superior_for_user',\n            productsOn: ['products.superior_for_user'],\n            productsOff: ['!products.superior_for_user'],\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.general.employer',\n            productsOn: ['products.employer_standalone'],\n            productsOff: ['!products.employer_standalone'],\n            needs: ['products.timetracker', '!products.rakentajanpaketti'],\n        },\n        {\n            name: 'push_notification_time',\n            setting: {\n                name: 'push_notification_time',\n            },\n            title: 'settings.general.push_notifications_fixed_time',\n            component: 'collector/field-setting-comp/push-setting',\n            needs: ['modules.timetracker', 'serviceCountry@fi'],\n            secondary_setting: 'push_notification_time_hours_fi',\n        },\n        {\n            name: 'push_notification_time',\n            setting: {\n                name: 'push_notification_time',\n            },\n            title: 'settings.general.push_notifications_fixed_time',\n            component: 'collector/field-setting-comp/push-setting',\n            needs: ['modules.timetracker', 'serviceCountry@se'],\n            secondary_setting: 'push_notification_time_hours_se',\n        },\n        {\n            title: 'settings.general.gps_distance',\n            component: 'collector/field-setting-comp/number-field',\n            setting: {\n                setting: 'gps_distance',\n                minVal: 0,\n                defaultVal: 700,\n                unit: 'm',\n            },\n            needs: ['products.gps_force'],\n        },\n        {\n            name: 'email_approval_for_all',\n            title: 'settings.general.email_approval_for_all',\n            needs: ['modules.timetracker'],\n            random: true,\n        },\n    ],\n    timetrackerSettings: [\n        {\n            title: 'settings.timetracker',\n        },\n        {\n            name: 'postpopulated_worktimes',\n            random: true,\n            title: 'settings.general.postpopulated_worktimes',\n            needs: ['modules.timetracker'],\n            groupEditable: true,\n            groupEditableSettings: true,\n            groupEditableIf: {\n                needs: ['!customersetting.postpopulated_worktimes'],\n                title: 'settings.general.postpopulated_worktimes.worktimegroup_needs',\n            },\n            component: 'collector/field-setting-comp/postpopulated-worktimes',\n        },\n        {\n            title: 'settings.tasks',\n            options: [\n                {\n                    products: ['!products.tasks', '!products.multitasking'],\n                    title: 'general.off',\n                },\n                {\n                    products: ['products.tasks', '!products.multitasking'],\n                    title: 'general.on',\n                },\n                {\n                    products: ['!products.tasks', 'products.multitasking'],\n                    title: 'settings.tasks.multitasking',\n                },\n                {\n                    products: ['products.tasks', 'products.multitasking'],\n                    title: 'settings.tasks.both',\n                },\n            ],\n            form: 'task',\n            needs: ['modules.timetracker'],\n            groupEditable: true,\n        },\n        {\n            title: 'settings.subtasks',\n            productsOn: ['products.subtasks'],\n            productsOff: ['!products.subtasks'],\n            form: 'subtask',\n            needs: ['modules.timetracker', 'products.tasks||products.multitasking'],\n        },\n        {\n            title: 'settings.timetracker.timeclean',\n            random: true,\n            component: 'collector/nfc-comp',\n            productsOn: ['products.rfid'],\n            productsOff: ['!products.rfid'],\n            needs: ['modules.timetracker||products.personalliggareandid06', 'debug'],\n        },\n        {\n            title: 'settings.materials',\n            productsOn: ['products.materiallog'],\n            productsOff: ['!products.materiallog'],\n            form: 'materialtype',\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.materialgroups',\n            productsOn: ['products.materialgroups'],\n            productsOff: ['!products.materialgroups'],\n            needs: ['modules.timetracker', 'products.materiallog'],\n        },\n        {\n            title: 'settings.timetracker.km_automatic',\n            productsOn: ['products.timetracker_km_automatic', 'products.timetracker_km'],\n            productsOff: ['!products.timetracker_km_automatic', '!products.timetracker_km'],\n            needs: ['modules.timetracker'],\n            component: 'collector/field-setting-comp/autokm-setting',\n            groupEditable: true,\n            groupEditableSettings: true,\n        },\n        {\n            title: 'settings.timetracker.traveltime_automatic',\n            productsOn: ['products.timetracker_traveltime'],\n            productsOff: ['!products.timetracker_traveltime'],\n            needs: [\n                'modules.timetracker',\n                'serviceCountry@fi',\n                '!products.generic_timetracker',\n                'products.timetracker_km_automatic',\n            ],\n        },\n        {\n            title: 'settings.absencetype',\n            random: true,\n            productsOn: ['products.absences_hours'],\n            productsOff: ['!products.absences_startandend', '!products.absences_hours'],\n            needs: ['modules.absences', '!products.generic_timetracker'],\n        },\n        {\n            title: 'settings.holiday_pay',\n            random: true,\n            productsOn: ['products.holiday_pay'],\n            productsOff: ['!products.holiday_pay'],\n            needs: ['modules.absences', 'products.worktimebank'],\n        },\n        {\n            name: 'vacation_week_length',\n            random: true,\n            title: 'settings.vacation_week_length5',\n            needs: ['modules.absences', 'serviceCountry@fi'],\n        },\n        {\n            title: 'settings.overlapping_worktimes',\n            random: true,\n            productsOn: ['products.timetracker_disable_overlapping'],\n            productsOff: [\n                '!products.timetracker_overlap',\n                '!products.timetracker_disable_overlapping',\n            ],\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.prevent_multiple_worktimes',\n            random: true,\n            productsOn: ['products.timetracker_prevent_multiple'],\n            productsOff: ['!products.timetracker_prevent_multiple'],\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.groups',\n            random: true,\n            options: [\n                {\n                    products: ['!products.groups', '!products.multigroups'],\n                    title: 'settings.timetracker.nogroups',\n                },\n                {\n                    products: ['products.groups', '!products.multigroups'],\n                    title: 'settings.timetracker.groups',\n                },\n                {\n                    products: ['!products.groups', 'products.multigroups'],\n                    title: 'settings.timetracker.multigroups',\n                },\n            ],\n            form: 'group',\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.subprojects',\n            random: true,\n            options: [\n                {\n                    products: ['!products.subprojects', '!products.subprojectsmulti'],\n                    title: 'general.off',\n                },\n                {\n                    products: ['products.subprojects', '!products.subprojectsmulti'],\n                    title: 'settings.timetracker.subprojects',\n                },\n                {\n                    products: ['!products.subprojects', 'products.subprojectsmulti'],\n                    title: 'settings.timetracker.subprojectsmulti',\n                },\n            ],\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.absences',\n            productsOn: ['products.absences'],\n            productsOff: ['!products.absences'],\n            form: 'abcensetype',\n            needs: ['modules.timetracker'],\n            groupEditable: true,\n        },\n        {\n            title: 'settings.absence_projects',\n            random: true,\n            productsOn: ['products.absence_projects'],\n            productsOff: ['!products.absence_projects'],\n            needs: ['abcense'],\n        },\n        {\n            title: 'settings.customers',\n            random: true,\n            productsOn: ['products.customer'],\n            productsOff: ['!products.customer'],\n            form: 'customer',\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.timetracker.customer.projects',\n            random: true,\n            productsOn: ['products.projects_by_customer'],\n            productsOff: ['!products.projects_by_customer'],\n            needs: ['products.customer', 'modules.timetracker', '!products.base_basic'],\n        },\n        {\n            title: 'settings.mainproject',\n            productsOn: ['products.mainproject'],\n            productsOff: ['!products.mainproject'],\n            form: 'mainproject',\n            needs: ['modules.timetracker', 'products.projects_by_customer', '!products.base_basic'],\n        },\n        {\n            title: 'settings.timetracker.pause',\n            productsOn: ['products.pause'],\n            productsOff: ['!products.pause'],\n            component: 'collector/field-setting-comp/pause-setting',\n            setting: {\n                form: 'worktime',\n                field: 'pause',\n                setting: { title: 'default_value', value: 30 },\n            },\n            needs: ['modules.timetracker'],\n            groupEditable: true,\n            groupEditableSettings: true,\n        },\n        {\n            title: 'settings.timetracker.saldo',\n            productsOn: ['products.saldo'],\n            productsOff: ['!products.saldo'],\n            component: 'collector/field-setting-comp/saldo-setting',\n            needs: ['modules.timetracker'],\n            groupEditable: true,\n        },\n        {\n            title: 'settings.timetracker.overtime',\n            productsOn: ['products.overtime'],\n            productsOff: ['!products.overtime'],\n            component: 'collector/field-setting-comp/overtime-setting',\n            needs: ['modules.timetracker'],\n            groupEditableSettings: true,\n            groupEditable: true,\n        },\n        {\n            title: 'settings.project_owner',\n            random: true,\n            productsOn: ['products.project_owner'],\n            productsOff: ['!products.project_owner'],\n            needs: ['modules.timetracker'],\n        },\n\n        {\n            title: 'settings.timetracker.multiple_companies',\n            random: true,\n            productsOn: ['products.multiple_companies'],\n            productsOff: ['!products.multiple_companies'],\n            needs: ['project', 'products.rakentajanpaketti'],\n        },\n        {\n            title: 'settings.absences',\n            tt3valueOn: 'absences.none',\n            tt3valueOff: 'absences.on',\n            productsOn: ['abcensetype'],\n            productsOff: ['!abcensetype'],\n            form: 'abcensetype',\n            needs: ['worktime', '!modules.timetracker'],\n        },\n        {\n            title: 'settings.customers',\n            random: true,\n            tt3valueOn: 'customers.none',\n            tt3valueOff: 'customers.on',\n            productsOn: ['customer'],\n            productsOff: ['!customer'],\n            form: 'customer',\n            needs: ['worktime', '!modules.timetracker'],\n        },\n        {\n            title: 'settings.groups',\n            tt3valueOn: 'groups.none',\n            tt3valueOff: 'groups.group',\n            productsOn: ['group'],\n            productsOff: ['!group'],\n            form: 'group',\n            needs: ['worktime', '!modules.timetracker'],\n        },\n        {\n            title: 'settings.worktimegroup',\n            random: true,\n            productsOn: ['products.worktimegroup'],\n            productsOff: ['!products.worktimegroup'],\n            form: 'worktimegroup',\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.timetracker_allow_nfc_edit',\n            productsOn: ['products.timetracker_allow_nfc_edit'],\n            productsOff: ['!products.timetracker_allow_nfc_edit'],\n            needs: ['products.rfid', '!products.generic_timetracker'],\n        },\n        {\n            title: 'settings.timetracker.time_adding_type',\n            options: [\n                {\n                    products: [\n                        '!products.timetracker_hybrid',\n                        '!products.timetracker_hours',\n                        '!products.timetracker_clockcard',\n                    ],\n                    title: 'settings.timetracker.startandend',\n                },\n                {\n                    products: [\n                        '!products.timetracker_hybrid',\n                        'products.timetracker_hours',\n                        '!products.timetracker_clockcard',\n                    ],\n                    title: 'settings.timetracker.hours',\n                    notGroupEditable: true,\n                },\n                {\n                    products: [\n                        'products.timetracker_hybrid',\n                        '!products.timetracker_hours',\n                        '!products.timetracker_clockcard',\n                    ],\n                    title: 'settings.timetracker.hybrid',\n                },\n                {\n                    products: [\n                        '!products.timetracker_hybrid',\n                        '!products.timetracker_hours',\n                        'products.timetracker_clockcard',\n                    ],\n                    title: 'settings.timetracker.clockcard',\n                },\n            ],\n            needs: ['modules.timetracker'],\n            groupEditable: true,\n            groupEditableSettings: true,\n            groupEditableIf: {\n                needs: [\n                    '!products.timetracker_hybrid',\n                    '!products.timetracker_hours',\n                    '!products.timetracker_clockcard',\n                ],\n                title: 'settings.timetracker.startandend.worktimegroup_needs',\n            },\n            addition: true,\n        },\n        {\n            title: 'settings.timetracker.km_type',\n            options: [\n                {\n                    products: [\n                        '!products.timetracker_km',\n                        '!products.timetracker_kmsade',\n                        '!products.timetracker_kmandsade',\n                    ],\n                    title: 'settings.timetracker.km_none',\n                },\n                {\n                    products: [\n                        'products.timetracker_km',\n                        '!products.timetracker_kmsade',\n                        '!products.timetracker_kmandsade',\n                    ],\n                    title: 'settings.timetracker.km',\n                },\n                {\n                    products: [\n                        'products.timetracker_kmsade',\n                        '!products.timetracker_km',\n                        '!products.timetracker_kmandsade',\n                    ],\n                    title: 'settings.timetracker.kmsade',\n                },\n                {\n                    products: ['products.timetracker_kmsade', 'products.timetracker_km'],\n                    title: 'settings.timetracker.kmandsade',\n                },\n            ],\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.timetracker.perdiem',\n            options: [\n                {\n                    products: [\n                        '!products.timetracker_perdiem',\n                        '!products.timetracker_perdiem_meal',\n                    ],\n                    title: 'settings.timetracker.perdiem_none',\n                },\n                {\n                    products: [\n                        'products.timetracker_perdiem',\n                        '!products.timetracker_perdiem_meal',\n                    ],\n                    title: 'settings.timetracker.perdiem_def',\n                },\n                {\n                    products: [\n                        '!products.timetracker_perdiem',\n                        'products.timetracker_perdiem_meal',\n                    ],\n                    title: 'settings.timetracker.perdiem_meal',\n                },\n            ],\n            needs: ['modules.timetracker', 'serviceCountry@fi'],\n        },\n        {\n            title: 'settings.timetracker.worktype',\n            random: true,\n            options: [\n                {\n                    products: [\n                        '!products.timetracker_worktype',\n                        '!products.timetracker_worktype_extra',\n                    ],\n                    title: 'settings.timetracker.worktype_none',\n                },\n                {\n                    products: [\n                        'products.timetracker_worktype',\n                        '!products.timetracker_worktype_extra',\n                    ],\n                    title: 'settings.timetracker.worktype_def',\n                },\n                {\n                    products: [\n                        '!products.timetracker_worktype',\n                        'products.timetracker_worktype_extra',\n                    ],\n                    title: 'settings.timetracker.worktype_extra',\n                },\n            ],\n            needs: [\n                'modules.timetracker',\n                '!products.generic_timetracker',\n                'products.timetracker_worktype||products.timetracker_worktype_extra',\n            ],\n        },\n        {\n            title: 'settings.timetracker.salarytype',\n            random: true,\n            productsOn: ['products.salarytype'],\n            productsOff: ['!products.salarytype'],\n            needs: [\n                'modules.timetracker',\n                '!products.timetracker_worktype',\n                '!products.timetracker_worktype_extra',\n            ],\n        },\n        {\n            title: 'settings.gps',\n            options: [\n                {\n                    products: ['!products.gps', '!products.gps_force'],\n                    title: 'settings.gps_none',\n                },\n                {\n                    products: ['products.gps', '!products.gps_force'],\n                    title: 'settings.gps_def',\n                },\n                {\n                    products: ['!products.gps', 'products.gps_force'],\n                    title: 'settings.gps_force',\n                },\n            ],\n            needs: ['modules.timetracker'],\n        },\n\n        {\n            title: 'settings.eventtitle',\n            form: 'eventtitle',\n            needs: ['eventtitle'],\n        },\n        {\n            title: 'settings.round_times',\n            random: true,\n            form: 'rounding_rule',\n            needs: ['modules.timetracker', 'worktime.formFeature.round_times;10'],\n        },\n        {\n            title: 'settings.round_times',\n            random: true,\n            productsOn: ['products.rounding_rule_v2'],\n            productsOff: ['!products.rounding_rule_v2'],\n            form: 'rounding_rule_v2',\n            needs: ['modules.timetracker', '!worktime.formFeature.round_times;10'],\n        },\n        {\n            title: 'settings.wage_period',\n            form: 'wage_period',\n            component: 'salary-period-adder',\n            needs: ['worktime', 'wage_period'],\n        },\n        {\n            title: 'settings.export_contact_person',\n            random: true,\n            form: 'export_contact_person',\n            needs: ['export_contact_person'],\n        },\n        {\n            title: 'settings.timetracker.edit_time',\n            component: 'collector/field-setting-comp',\n            setting: {\n                form: 'worktime',\n                field: 'date',\n                setting: { name: 'date_interval', userlevel: '1', value: 'locked' },\n                type: 'number',\n            },\n            needs: ['modules.timetracker'],\n        },\n        {\n            title: 'settings.timetracker.banks',\n            random: true,\n            productsOn: ['products.worktimebank'],\n            productsOff: ['!products.worktimebank'],\n            needs: ['modules.timetracker'],\n        },\n\n        // TT3 support\n        {\n            title: 'settings.timetracker.km_type',\n            options: [\n                {\n                    tt3value: 'mileage.none',\n                    products: ['!worktime.km', '!worktime.kmsade'],\n                    title: 'settings.timetracker.km_none',\n                },\n                {\n                    tt3value: 'mileage.km',\n                    products: ['worktime.km', '!worktime.kmsade'],\n                    title: 'settings.timetracker.km',\n                },\n                {\n                    tt3value: 'mileage.kmsade',\n                    products: ['!worktime.km', 'worktime.kmsade'],\n                    title: 'settings.timetracker.kmsade',\n                },\n                {\n                    tt3value: 'mileage.both',\n                    products: ['worktime.km', 'worktime.kmsade'],\n                    title: 'settings.timetracker.kmandsade',\n                },\n            ],\n            needs: ['worktime', '!modules.timetracker'],\n        },\n\n        {\n            title: 'settings.timetracker.hourprice',\n            random: true,\n            options: [\n                {\n                    //tt3value: \"hourly_rates.none\"\n                    products: ['!products.hourprice_user', '!products.hourprice_project'],\n                    title: 'settings.timetracker.hourprice_none',\n                },\n                {\n                    //tt3value: \"hourly_rates.user\"\n                    products: ['products.hourprice_user', '!products.hourprice_project'],\n                    title: 'settings.timetracker.hourprice_user',\n                },\n                {\n                    //tt3value: \"hourly_rates.project\"\n                    products: ['!products.hourprice_user', 'products.hourprice_project'],\n                    title: 'settings.timetracker.hourprice_project',\n                },\n            ],\n            needs: ['modules.timetracker'],\n        },\n        {\n            name: 'stampout_worktime_fi',\n            setting: {\n                name: 'stampout_worktime_fi',\n                secondary_setting_name: 'stampout_worktime_time_fi',\n            },\n            title: 'settings.general.stampout_worktime',\n            component: 'collector/field-setting-comp/time-setting',\n            needs: ['modules.timetracker', 'serviceCountry@fi'],\n            random: true,\n        },\n        {\n            name: 'stampout_worktime_se',\n            setting: {\n                name: 'stampout_worktime_se',\n                secondary_setting_name: 'stampout_worktime_time_se',\n            },\n            title: 'settings.general.stampout_worktime',\n            component: 'collector/field-setting-comp/time-setting',\n            needs: ['modules.timetracker', 'serviceCountry@se'],\n            random: true,\n        },\n        {\n            name: 'unapproved_worktimes',\n            setting: {\n                name: 'unapproved_worktimes',\n            },\n            title: 'settings.general.unapproved_worktimes',\n            component: 'collector/field-setting-comp/time-setting',\n            needs: ['worktime', 'serviceCountry@fi'],\n            random: true,\n        },\n        {\n            name: 'hide_holidays',\n            setting: {\n                name: 'hide_holidays',\n            },\n            title: 'settings.general.hide_holidays',\n            needs: ['abcense'],\n            random: true,\n        },\n        {\n            title: 'settings.general.midweek_holiday_pay',\n            productsOn: ['products.midweek_holiday_pay'],\n            productsOff: ['!products.midweek_holiday_pay'],\n            needs: ['worktime'],\n            random: true,\n        },\n    ],\n    taskSettings: [\n        {\n            title: 'settings.worktasks',\n        },\n        {\n            title: 'settings.tasks',\n            form: 'task',\n            needs: ['task', '!modules.timetracker'],\n        },\n        {\n            title: 'settings.taskmanagement.worktask_involved',\n            productsOn: ['products.worktask_involved'],\n            productsOff: ['!products.worktask_involved'],\n            needs: ['products.taskmanagement'],\n        },\n        {\n            title: 'settings.taskmanagement.worktask_signature',\n            productsOn: ['products.worktask_signature'],\n            productsOff: ['!products.worktask_signature'],\n            needs: ['products.taskmanagement'],\n        },\n        {\n            title: 'settings.taskmanagement.worktask_enddate',\n            productsOn: ['products.worktask_enddate'],\n            productsOff: ['!products.worktask_enddate'],\n            needs: ['products.taskmanagement'],\n        },\n        {\n            title: 'settings.taskmanagement.worktask_starttime',\n            productsOn: ['products.worktask_starttime'],\n            productsOff: ['!products.worktask_starttime'],\n            needs: ['products.taskmanagement'],\n        },\n    ],\n    drivingLogSettings: [\n        {\n            title: 'menu.drivinglog',\n        },\n        {\n            title: 'settings.general.drivinglog.gauge',\n            productsOn: ['products.drivinglog_gauge'],\n            productsOff: ['!products.drivinglog_gauge'],\n            needs: ['products.drivinglog'],\n        },\n        {\n            title: 'settings.general.drivinglog.project',\n            productsOn: ['products.drivinglog_project'],\n            productsOff: ['!products.drivinglog_project'],\n            needs: ['products.drivinglog'],\n        },\n        {\n            title: 'settings.general.drivinglog.date',\n            productsOn: ['products.drivinglog_date'],\n            productsOff: ['!products.drivinglog_date'],\n            needs: ['products.drivinglog'],\n        },\n        {\n            title: 'settings.general.drivinglog.private',\n            productsOn: ['products.drivinglog_private'],\n            productsOff: ['!products.drivinglog_private'],\n            needs: ['products.drivinglog'],\n        },\n        {\n            title: 'settings.general.drivinglog.plate',\n            productsOn: ['products.drivinglog_plate'],\n            productsOff: ['!products.drivinglog_plate'],\n            needs: ['products.drivinglog'],\n        },\n        {\n            title: 'settings.general.drivinglog.desc',\n            productsOn: ['products.drivinglog_desc'],\n            productsOff: ['!products.drivinglog_desc'],\n            needs: ['products.drivinglog'],\n        },\n    ],\n    measurementSettings: [\n        {\n            title: 'settings.measurements',\n        },\n        {\n            name: 'hide_measurement_index',\n            title: 'settings.general.hide_measurement_index',\n            needs: ['products.measurement_tr||products.measurement_mvr'],\n        },\n        {\n            title: 'settings.general.measurement_mandatory_signatures',\n            productsOn: ['products.measurement_mandatory_signatures'],\n            productsOff: ['!products.measurement_mandatory_signatures'],\n            needs: ['products.measurement_tr||products.measurement_mvr'],\n        },\n        {\n            title: 'settings.general.measurement_status',\n            productsOn: ['products.measurement_status'],\n            productsOff: ['!products.measurement_status'],\n            needs: ['products.measurement_tr||products.measurement_mvr'],\n        },\n    ],\n    pl_settings: [\n        {\n            title: 'settings.pl',\n        },\n        {\n            title: 'settings.plgps',\n            options: [\n                {\n                    products: ['!products.plgps_off', '!products.plgps_end'],\n                    title: 'settings.plgps_on',\n                },\n                {\n                    products: ['!products.plgps_off', 'products.plgps_end'],\n                    title: 'settings.plgps_also_end',\n                },\n                {\n                    products: ['products.plgps_off', '!products.plgps_end'],\n                    title: 'settings.plgps_off',\n                },\n            ],\n            needs: ['products.personalliggareandid06||products.personalliggare'],\n        },\n        {\n            name: 'stampout_presence_fi',\n            setting: {\n                name: 'stampout_presence_fi',\n                secondary_setting_name: 'stampout_presence_time_fi',\n            },\n            title: 'settings.general.stampout_presence',\n            component: 'collector/field-setting-comp/time-setting',\n            needs: ['presence', 'serviceCountry@fi'],\n            random: true,\n        },\n        {\n            title: 'settings.export_contact_person',\n            form: 'export_contact_person',\n            needs: ['export_contact_person', '!worktime'],\n        },\n        {\n            title: 'settings.customers',\n            productsOn: ['products.customer'],\n            productsOff: ['!products.customer'],\n            form: 'customer',\n            needs: ['presence', '!products.timetracker'],\n        },\n        {\n            title: 'settings.groups',\n            options: [\n                {\n                    products: ['!products.groups', '!products.multigroups'],\n                    title: 'settings.timetracker.nogroups',\n                },\n                {\n                    products: ['products.groups', '!products.multigroups'],\n                    title: 'settings.timetracker.groups',\n                },\n                {\n                    products: ['!products.groups', 'products.multigroups'],\n                    title: 'settings.timetracker.multigroups',\n                },\n            ],\n            form: 'group',\n            needs: ['presence', '!products.timetracker'],\n        },\n    ],\n    admintoolSettings: [\n        {\n            title: 'settings.groups',\n            form: 'group',\n            needs: ['products.admintool', 'group'],\n        },\n    ],\n    saldoSettings: [\n        {\n            title: 'settings.saldo',\n        },\n        {\n            name: 'saldo_skip_pieceworkdays',\n            title: 'settings.saldo.skip_pieceworkdays',\n            needs: ['products.saldo', 'worktime.typeofwork'],\n        },\n        {\n            name: 'saldo_skip_weekends',\n            title: 'settings.saldo.skip_weekends',\n            needs: ['products.saldo'],\n        },\n    ],\n    machineSettings: [\n        {\n            title: 'settings.machine',\n        },\n        {\n            title: 'settings.toolgroups',\n            productsOn: ['products.toolgroups'],\n            productsOff: ['!products.toolgroups'],\n            needs: ['products.machine'],\n            form: 'toolgroup',\n        },\n    ],\n};\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/application.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ApplicationController,\n    indexOf = [].indexOf;\n\nimport SettingsAdapter from '../adapters/settings';\n\nimport collector from '../classes/collector';\n\nimport config from '../config/environment';\n\nimport { t } from 'ember-intl';\n\nimport menu from '../mixins/menu';\n\nimport configurations from '../config';\n\nimport { captureException } from '@sentry/browser';\n\nimport { getOwner } from '@ember/application';\n\nimport { getCommunityLink } from 'tt4/utils/communityLink-util';\n\nimport { action } from '@ember/object';\n\n// login controller has logic for authentication actions\nApplicationController = Ember.Controller.extend(menu, {\n    session: Ember.inject.service(),\n    sessionhelper: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    admintool: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    PushNotification: Ember.inject.service(),\n    gps: Ember.inject.service(),\n    routing: Ember.inject.service('-routing'),\n    router: Ember.inject.service(),\n    initapp: Ember.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    analytics: Ember.inject.service(),\n    evented: Ember.inject.service(),\n    welcomeTour: Ember.inject.service(),\n    loadTranslations: Ember.inject.service(),\n    moment: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    trialClock: Ember.inject.service('trial-clock'),\n    queryParams: ['modal', 'wizard'],\n    modal: null,\n    trialLength: 14,\n    flags: Ember.inject.service(),\n    useFormAdd: Ember.computed('modal', function () {\n        var form, type;\n        type = this.get('modal').split(',')[2];\n        form = this.get('modal').split(',')[0];\n        if (type === 'history') {\n            return false;\n        }\n        if (\n            form !== 'worktime' &&\n            form !== 'project' &&\n            form !== 'diary' &&\n            form !== 'worksitediary' &&\n            form !== 'worktask' &&\n            form !== 'presence' &&\n            form !== 'site_safety_observation' &&\n            form !== 'tooltype' &&\n            form !== 'abcense'\n        ) {\n            return false;\n        }\n        if (form == 'abcense')\n            return (\n                this.get('flags').test('form-add') ||\n                this.get('flags').test(`ember-movenium-form-add-absence`)\n            );\n        return this.get('flags').test('form-add');\n    }),\n    sessionOutDated: Ember.computed.alias('session.session.authenticated.offline'),\n    isSeasonTheme: Em.computed(function () {\n        if (\n            (moment().format('YYYY-MM-DD') >= '2018-12-17' &&\n                moment().format('YYYY-MM-DD') <= '2018-12-26') ||\n            localStorage.getItem('season-theme')\n        ) {\n            return true;\n        }\n        return false;\n    }),\n    modaltype: Ember.computed('modal', function () {\n        if (typeof this.get('modal') === 'string') {\n            return this.get('modal').split(',')[0];\n        }\n        return false;\n    }),\n    sideMenus: Ember.computed(\n        'session.currentUser',\n        'intl.primaryLocale',\n        'Ember.devModeOn',\n        'active_menu',\n        'refreshMenus',\n        function () {\n            if (!this.get('session.currentUser')) {\n                return;\n            }\n            return this.getMenus();\n        },\n    ),\n    sidemenuCheck: Ember.computed(\n        'session.currentUser',\n        'intl.primaryLocale',\n        'Ember.devModeOn',\n        'refreshMenus',\n        'active_menu',\n        function () {\n            var hidden, ls, menucount, menus;\n            if (!this.get('session.currentUser')) {\n                return;\n            }\n            ls = this.get('localStorageWrapper');\n            hidden = ls.getUserSetting('hidden_menus');\n            menus = this.getMenus();\n            menucount = menus.length - hidden.length;\n            if (menucount <= 6) {\n                return true;\n            }\n            return false;\n        },\n    ),\n    subMenus: Ember.computed('path', 'session.currentUser', function () {\n        if (!this.get('session.currentUser')) {\n            return;\n        }\n        return this.getSubMenus(this.get('path'));\n    }),\n    priceList: Em.computed('session.currentUser.company_info', function () {\n        var base, company, country, full_url, url;\n        company = this.get('session.currentUser.company_info');\n        if (!company) {\n            return false;\n        }\n        country = company.get('country');\n        full_url = '';\n        url = (function () {\n            switch (country) {\n                case 'se':\n                    base = config.APP.CDN_URL;\n                    url = 'se/movenium-pris.pdf';\n                    if (\n                        base.substring(base.length - 1, base.length) !== '/' &&\n                        url.substring(url.length - 1, url.length) !== '/'\n                    ) {\n                        base += '/';\n                    }\n                    return (full_url = base + url);\n            }\n        })();\n        if (this.get('session.currentUser.userlevel') !== '5') {\n            // only admin can see price list\n            return false;\n        } else {\n            if (full_url.length > 0) {\n                return full_url;\n            } else {\n                return false;\n            }\n        }\n    }),\n    sidebar: Em.computed.alias('gui.sidebar'),\n    communityLink: Em.computed('session.currentUser.company_info', function () {\n        var company;\n        company = this.get('session.currentUser.company_info');\n        return getCommunityLink(config.brand, company);\n    }),\n    init: function () {\n        //@get('gps').start()\n        this.initOnResume();\n        this._super();\n        this.trialClock;\n        return this.showAppVersionWarning();\n    },\n    //@initRequestNotificator()\n    initRequestNotificator: function () {\n        var $, TRANSFORM_TYPES;\n        $ = jQuery;\n        TRANSFORM_TYPES = ['PUT', 'POST', 'DELETE'];\n        $.activeTransforms = 0;\n        $(document).ajaxSend(function (e, xhr, settings) {\n            var ref;\n            if (((ref = settings.type), indexOf.call(TRANSFORM_TYPES, ref) < 0)) {\n                return;\n            }\n            return ($.activeTransforms += 1);\n        });\n        $(document).ajaxComplete(function (e, xhr, settings) {\n            var ref;\n            if (((ref = settings.type), indexOf.call(TRANSFORM_TYPES, ref) < 0)) {\n                return;\n            }\n            return ($.activeTransforms -= 1);\n        });\n        return (\n            window.onbeforeunload ||\n            (window.onbeforeunload = function () {\n                if ($.activeTransforms) {\n                    return true;\n                }\n            })\n        );\n    },\n    initOnResume: function () {\n        if (typeof cordova === 'undefined' || cordova === null) {\n            window.onfocus = (event) => {\n                if (event.target === window) {\n                    return this.onresume();\n                }\n            };\n        }\n        return document.addEventListener(\n            'deviceready',\n            () => {\n                return document.addEventListener(\n                    'resume',\n                    () => {\n                        return this.onresume();\n                    },\n                    false,\n                );\n            },\n            false,\n        );\n    },\n    onresume: function () {\n        var promise, session;\n        session = this.get('session');\n        if (\n            session.get('currentUser.id') &&\n            session.get('data.authenticated.user_id') &&\n            parseInt(session.get('currentUser.id')) !== session.get('data.authenticated.user_id')\n        ) {\n            location.reload();\n        }\n        this.showAppVersionWarning();\n        // if token is about to expirein 5 mins, create new\n        if (this.get('sessionhelper').tokenWillExpireIn(5)) {\n            console.log('application onresume tokenHasExpired');\n            this.set('gui.overlay_loader', true);\n            promise = this.get('sessionhelper').refresh();\n            return promise.then(\n                () => {\n                    console.log('application onresume refreshed token'); // this is to see if there were any requests while we were refreshing token\n                    this.set('gui.overlay_loader', false);\n                    return this.get('sessionhelper').resumed();\n                },\n                (error) => {\n                    captureException(error);\n                    return this.set('gui.overlay_loader', false);\n                },\n            );\n        } else {\n            this.get('sessionhelper').resumed();\n            return this.get('evented').resumed();\n        }\n    },\n    hide_sidebar: Ember.computed('router.currentRouteName', function () {\n        if (!this.get('router.currentRouteName')) {\n            return;\n        }\n        if (this.get('router.currentRouteName').substring(0, 13) === 'register.user') {\n            return true;\n        }\n        return false;\n    }),\n    hide_topbar: Ember.computed('router.currentRouteName', function () {\n        if (!this.get('router.currentRouteName')) {\n            return;\n        }\n        if (\n            this.get('router.currentRouteName') &&\n            this.get('router.currentRouteName').substring(0, 13) === 'register.user'\n        ) {\n            return true;\n        }\n        return false;\n    }),\n    userImage: Em.computed('session.currentUser.image', function () {\n        var img, ret_img;\n        img = this.get('session.currentUser.image');\n        ret_img = '';\n        if (img != null && img.length > 0) {\n            if (img[0].name === 'naama.png') {\n                img[0].thumb = img[0].url;\n            }\n            if (img[0].thumb) {\n                ret_img = config.APP.COLLECTOR_API_URL + '/' + img[0].thumb;\n            } else if (img[0].file) {\n                ret_img = img[0].file;\n            } else {\n                ret_img = 'img/user-profile-lg.png';\n            }\n        } else {\n            ret_img = 'img/user-profile-lg.png';\n        }\n        return Ember.String.htmlSafe('background-image:url(' + ret_img + ')');\n    }),\n    actions: {\n        qrcoderead: function (code, action) {\n            if (action.type === 'transition') {\n                this.set('modal', null);\n                // needs to have this delay it makes sure queryParameters are really emptyed and going back in history won't open popup again\n                return Ember.run.later(() => {\n                    return this.get('router').transitionTo(action.path);\n                }, 100);\n            }\n        },\n        buttonClicked: function () {\n            this.toggleProperty('plusAnimate');\n            return false;\n        },\n        toggleSidebar: function () {\n            var state;\n            state = this.get('sidebar');\n            if (state) {\n                localStorage.setItem('sidebar', 'open');\n            } else {\n                localStorage.setItem('sidebar', 'collapsed');\n            }\n            this.toggleProperty('sidebar');\n            return false;\n        },\n        toggleHamburger: function () {\n            this.toggleProperty('hamburgerMenu');\n            return false;\n        },\n        closeHamburger: function () {\n            this.set('hamburgerMenu', false);\n            this.toggleProperty('refreshMenus');\n            return false;\n        },\n        closeBillingModal: function () {\n            return this.set('showBillingTypeSelection', false);\n        },\n        transition: function (link) {\n            if (Em.isArray(link)) {\n                if (link.length > 1) {\n                    return this.transitionToRoute(link[0], link[1]);\n                } else {\n                    return this.transitionToRoute(link[0]);\n                }\n            } else {\n                return this.transitionToRoute(link);\n            }\n        },\n        invalidateSession: function () {\n            return this.transitionToRoute('logout');\n        },\n        bubbleTransition: function (to, params) {\n            return this.transitionToRoute(to, params);\n        },\n        guiAction: function (action) {\n            if (action === 'abort') {\n                return this.get('gui').abort();\n            } else if (action === 'close') {\n                return this.get('gui').set('showStickyNote', false);\n            }\n        },\n        reloadApp: function () {\n            this.set('gui.overlay_loader', true);\n            this.transitionToRoute('index');\n            return Ember.run.later(\n                this,\n                function () {\n                    return location.reload();\n                },\n                200,\n            );\n        },\n        removeTourModal: function () {\n            return this.get('gui').set('mobileWelcomeTour', false);\n        },\n        removeFeedbackModal: function () {\n            this.set('showFeedbackModal', false);\n            return this.set('email_message_sent', false);\n        },\n        sendFeedback: function () {\n            var send;\n            this.set('emailSending', true);\n            send = this.Collector.ttapi({\n                url: 'sendEmail',\n                data: {\n                    type: 'feedback',\n                    country: this.get('session.currentUser.company_info.country'),\n                    content: this.get('feedback_text'),\n                    email:\n                        'customerservice_' + this.get('session.currentUser.company_info.country'),\n                    sender: this.get('session.currentUser.email'),\n                },\n                method: 'post',\n            });\n            return send.then((resp) => {\n                if (resp.error != null) {\n                    this.set('error_view', true);\n                    this.set('emailSending', false);\n                    return this.set('error', resp.error_msg);\n                } else {\n                    this.set('email_message_sent', true);\n                    this.set('emailSending', false);\n                    return this.set('feedback_text', null);\n                }\n            });\n        },\n        closeAndRefresh: function () {\n            this.send('refreshReport');\n            return this.set('modal', null);\n        },\n        refreshReport: function () {\n            var controller, route, routeName;\n            controller = getOwner(this).lookup('controller:application');\n            routeName = this.get('router.currentRouteName');\n            if (routeName.includes('worktime-list')) {\n                route = getOwner(this).lookup('route:' + controller.get('currentRouteName'));\n                return route.refresh();\n            }\n        },\n        changeLanguage: function (lang) {\n            moment.locale(lang);\n            localStorage['lang'] = lang;\n\n            // save selected lang to ttapi\n            this.Collector.ttapi({\n                url: 'api/setUserLang?lang=' + lang,\n                method: 'post',\n            });\n\n            return this.loadTranslations.fetch().then(() => {\n                return (this.intl.locale = lang);\n            });\n        },\n        setTrialStatus: function (status) {\n            return this.set('trialStatus', status);\n        },\n        copyPartnerId: function () {\n            navigator.clipboard.writeText(this.get('session.currentUser.partnerid'));\n            var intl = this.get('intl');\n            this.notifications.info(intl.t('header.actions.profile.copyPartnerId.notification'), {\n                autoClear: true,\n            });\n        },\n    },\n    isLoading: Em.computed('Tt4.isLoading', function () {\n        return Tt4.get('isLoading');\n    }),\n\n    last_error: Em.computed('Tt4.last_error', function () {\n        return Tt4.get('last_error');\n    }),\n    spinIsLoading: false,\n    buttonText: 'submit',\n    showMySitesView: Ember.computed('session.currentUser.userlevel', function () {\n        var ref;\n        return (\n            (ref = this.get('session.currentUser.userlevel')) === '1' || ref === '3' || ref === '4'\n        );\n    }),\n    sublinks: Em.A([]),\n    active_menu: Ember.computed('path', function () {\n        var custom, split, toppath;\n        if (!this.get('path')) {\n            return;\n        }\n        toppath = this.get('path')[0];\n        if (location.href.includes('custom')) {\n            custom = location.href.split('/').filter((item) => {\n                return item.includes('custom');\n            });\n            return custom[0];\n        }\n        if (toppath === 'workday') {\n            return 'worktimes';\n        }\n        if (toppath === 'site_safety') {\n            return this.get('path')[1];\n        }\n        if (toppath === 'forms') {\n            split = location.href.split('/');\n            return split[split.indexOf('forms') + 1];\n        } else {\n            return toppath;\n        }\n    }),\n    path: Ember.computed('router.currentRouteName', function () {\n        var path;\n        path = this.get('router.currentRouteName');\n        if (path) {\n            return path.split('.');\n        }\n    }),\n    additionalMainViewClasses: Ember.computed('router.currentRouteName', function () {\n        var path;\n        path = this.get('router.currentRouteName');\n        if (path === 'settings.general-v2') {\n            return 'main-view-settings-v2';\n        }\n        // if path contains \".edit\" or \".add\" we want to add class to main-view\n        if (path.includes('.edit') || path.includes('.add')) {\n            return 'main-view-form-open';\n        }\n        return '';\n    }),\n    headerText: Ember.computed('path', function () {\n        var c, form, formName, intl, name, path, routeObject, split;\n        path = this.get('path');\n        intl = this.get('intl');\n        c = this.get('Collector');\n        if (!path) {\n            return;\n        }\n        if (path[0].slice(-8) === '_loading') {\n            path[0] = path[0].slice(0, -8);\n        }\n        routeObject = this.get('routing.currentState.routerJsState.params');\n        if (path[0] === 'forms') {\n            if (routeObject['forms.form-report'] != null) {\n                formName = routeObject['forms.form-report']['form'];\n            } else if (routeObject['forms.form-add'] != null) {\n                formName = routeObject['forms.form-add']['form'];\n            } else if (routeObject['forms.form-edit'] != null) {\n                formName = routeObject['forms.form-edit']['form'];\n            }\n        }\n        if (formName && path[0] === 'forms' && c.formExists(formName)) {\n            form = c.forms()[formName];\n            if (Ember.isPresent(form.name)) {\n                return form.name;\n            }\n        }\n        if (path[0] === 'site_safety') {\n            split = location.href.split('/');\n            name = split[split.indexOf('measurement') + 1];\n            if (c.formExists('measurement_' + name)) {\n                form = c.forms()['measurement_' + name];\n                if (Ember.isPresent(form.name)) {\n                    return form.name;\n                }\n            }\n            if (path[1] === 'report') {\n                return intl.t('header.path.' + path[2]);\n            } else {\n                return intl.t('header.path.' + path[1]);\n            }\n        } else if (!intl.exists('header.path.' + path[0]) && intl.exists('menu.' + path[0])) {\n            return intl.t('menu.' + path[0]);\n        } else if (path) {\n            return intl.t('header.path.' + path[0]);\n        }\n    }),\n    showBillingTypeSelection: false,\n    // check if client has billing-info and if not, ask user to add it\n    billingtypeObs: Em.on(\n        'init',\n        Ember.observer('session.currentUser.partnerid', function () {\n            var c, created, promise, self, test_passed;\n            created = this.get('session.currentUser.company_info.row_info.created');\n            if (created && created > '2016-04-20') {\n                if (moment().diff(moment(created), 'days') > 7) {\n                    self = this;\n                    c = this.get('Collector');\n                    test_passed = false;\n                    // show this only if tt or pl is active\n                    if (\n                        c.testNeedsOne('products.personalliggareandid06') ||\n                        c.testNeedsOne('products.timetracker') ||\n                        c.testNeedsOne('products.personalliggare')\n                    ) {\n                        test_passed = true;\n                    }\n                    if (\n                        this.get('session.currentUser.partnerid') &&\n                        parseInt(this.get('session.currentUser.userlevel')) === 5 &&\n                        test_passed\n                    ) {\n                        promise = this.get('admintool').ajax({\n                            url: 'billinginfo',\n                            method: 'get',\n                        });\n                        return promise.then(\n                            function (data) {\n                                // billing-info was found for this client, do not show billing-dialog\n                                return self.set('showBillingTypeSelection', false);\n                            },\n                            (reason) => {\n                                // billing-info not found, show dialog\n                                if (reason.status === 404) {\n                                    // get address-data\n                                    promise = this.get('admintool').ajax({\n                                        url: 'customer_info',\n                                        method: 'get',\n                                    });\n                                    return promise.then((data) => {\n                                        if (data['status'] !== 'demo') {\n                                            this.set('customerData', data);\n                                            return self.set('showBillingTypeSelection', true);\n                                        }\n                                    });\n                                }\n                            },\n                        );\n                    }\n                }\n            }\n        }),\n    ),\n    startTour: Em.on('init', function () {\n        if (localStorage.getItem('welcome-tour')) {\n            localStorage.removeItem('welcome-tour');\n            return Em.run.later(\n                this,\n                () => {\n                    return this.get('welcomeTour').start();\n                },\n                100,\n            );\n        }\n    }),\n    impersonate: Em.computed(function () {\n        if (this.get('session.session.content.authenticated.scope')) {\n            return true;\n        }\n    }),\n    trialDaysLeft: Em.computed(function () {\n        var created, days;\n        created = this.get('session.currentUser.company_info.row_info.created');\n        days = moment().diff(moment(created), 'days');\n        return this.get('trialLength') - days;\n    }),\n    billingInfo: function () {\n        var promise;\n        promise = this.get('admintool').ajax({\n            url: 'billinginfo',\n            method: 'get',\n        });\n        return promise.then(\n            (res) => {\n                return res;\n            },\n            (reason) => {\n                return false; // billinginfo returned 404 - no billing info found\n            },\n        );\n    },\n    trialMode: Em.computed('session.currentUser', 'trialClock.time', function () {\n        if (!this.get('Collector').testNeedsOne('products.mini_entry')) {\n            return false;\n        }\n        return this.billingInfo().then((binfo) => {\n            var mode;\n            if (this.get('Collector').testNeedsOne('products.readonly')) {\n                mode = 'locked';\n            } else if (binfo['payment_status'] === 'failed' && this.get('trialDaysLeft') <= 0) {\n                mode = 'payment_failed';\n            } else if (!binfo && this.get('trialDaysLeft') <= 0) {\n                mode = 'payment_failed';\n            } else if (this.get('trialDaysLeft') >= 0) {\n                mode = 'normal_trial';\n            }\n            return mode;\n        });\n    }),\n    canSubscriptionBeCanceled: Em.computed('trialStatus', function () {\n        if (this.get('trialStatus') === 'disabled') {\n            return false;\n        }\n        return this.billingInfo().then((binfo) => {\n            return binfo['is_trial_active'];\n        });\n    }),\n    showAppVersionWarning: function () {\n        var currentVersionTimeStamp, status, versions;\n        if (\n            !this.get('session.currentUser') ||\n            typeof cordova === 'undefined' ||\n            cordova === null\n        ) {\n            return false;\n        }\n        versions = this.get('flags').test('versions');\n        if (!versions || versions['force-update'] === void 0) {\n            return false;\n        }\n        currentVersionTimeStamp = this.get('gui').version_timestamp();\n        if (\n            moment(currentVersionTimeStamp)\n                .add(versions['force-update'], 'days')\n                .diff(moment(), 'days') === 0\n        ) {\n            status = 'expired';\n        } else if (\n            moment(currentVersionTimeStamp).add(versions['force-update'], 'days').isBefore(moment())\n        ) {\n            status = 'expired';\n        } else if (\n            moment(currentVersionTimeStamp)\n                .add(versions['suggest-update'], 'days')\n                .isBefore(moment())\n        ) {\n            status = 'deprecated';\n        } else {\n            status = false;\n        }\n        this.set('showAppWarning', true);\n        return this.set('appVersion', {\n            status: status,\n            version: this.get('gui').version(),\n            days_until_expires: moment(currentVersionTimeStamp)\n                .add(versions['force-update'], 'days')\n                .diff(moment(), 'days'),\n        });\n    },\n    brandLogo: Em.computed('session.currentUser', function () {\n        if (this.gui.getBrand() === 'otta') {\n            return config.APP.CDN_URL + '/images/otta/otta_logo_white_rgb.svg';\n        } else {\n            return config.APP.CDN_URL + '/images/movenium/move_logo_white.svg';\n        }\n    }),\n});\n\nexport default ApplicationController;\n","define(\"tt4/controllers/array\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = Ember.Controller;\n  _exports.default = _default;\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/changepassword.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ChangepasswordController;\n\nimport Ember from 'ember';\n\nChangepasswordController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    flags: Ember.inject.service(),\n    securedPassword: Em.computed('session.currentUser', function () {\n        if (this.get('session.currentUser.password') === 'secured') {\n            return true;\n        }\n        return false;\n    }),\n    emailErrors: [],\n    phoneErrors: [],\n    showEmail: Em.computed('user', function () {\n        if (this.get('user') && this.get('user.email') === null) {\n            return true;\n        }\n        return false;\n    }),\n    showPhone: Em.computed('user', function () {\n        if (this.get('user') && this.get('user.phone') === null) {\n            return true;\n        }\n        return false;\n    }),\n    showTitle: Em.computed('showPhone', 'showEmail', 'session.currentUser', function () {\n        if (this.get('showPhone') || this.get('showEmail')) {\n            return true;\n        }\n        return false;\n    }),\n    user: Em.computed('session.currentUser', function () {\n        return this.store.peekRecord('user', this.get('session.currentUser.id'));\n    }),\n    showModal: true,\n    hideCross: Em.computed('session.currentUser', function () {\n        if (\n            this.flags.test('old-password-change') &&\n            this.get('session.currentUser.password') === 'secured'\n        ) {\n            return false;\n        }\n        return true;\n    }),\n    actions: {\n        closeModal: function () {\n            if (\n                this.flags.test('old-password-change') &&\n                this.get('session.currentUser.password') === 'secured'\n            ) {\n                history.back();\n            }\n        },\n    },\n});\n\nexport default ChangepasswordController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/general-add.coffee.old\n// Generated by CoffeeScript 2.6.1\n\n/*\n\nCustomizations:\n  any field on general add form can be replaced in controller by\n\n    customization:\n        <field name>:\n            template: \"something\"\n\n  Sending actions back to controller:\n    template: {{action \"send\" \"someaction\"}}\n    controller:\n        actions:\n            generalAddAction: (type) -> # type is going to be \"someaction\"\n\n*/\nvar GeneralAddController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport config from '../config/environment';\n\nimport $ from 'jquery';\n\nGeneralAddController = Ember.Controller.extend({\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    saved: Ember.inject.controller(),\n    fieldtypes_not_to_show: ['device'],\n    external_errors: Em.A([]),\n    fieldSettings: Ember.Object.create({\n        title: true,\n    }),\n    hasError: Ember.computed(function () {\n        var error_types, errors;\n        errors = collector.getErrors(this.get('form'));\n        error_types = this.Collector.parseFormErrors(errors);\n        this.set('errorMessages', error_types);\n        if (errors) {\n            this.set('disabled', true);\n            return true;\n        }\n        return false;\n    }),\n    observeExternalErrors: Em.observer('external_errors.[]', function () {\n        var err, error_msg, i, intl, len, ref;\n        intl = this.get('intl');\n        //        Ember.set(@,\"disabled\", false)\n        if (this.get('external_errors.length') > 0) {\n            //            Ember.set(@,\"disabled\", true)\n            error_msg = '';\n            ref = this.get('external_errors');\n            for (i = 0, len = ref.length; i < len; i++) {\n                err = ref[i];\n                error_msg += intl.t(err) + '<br>';\n            }\n            return this.set('validationMessage', Ember.String.htmlSafe(error_msg));\n        } else {\n            //            Ember.set(@,\"disabled\", false)\n            return this.set('validationMessage', null);\n        }\n    }),\n    form: Ember.computed.alias('model._internalModel.modelName'),\n    formName: Ember.computed(function () {\n        var form;\n        form = this.get('Collector').forms()[this.get('form').underscore()];\n        if (Ember.isPresent(form.name)) {\n            return form.name;\n        }\n    }),\n    fields: Ember.computed('model', function () {\n        var customization, fields, form_name, objects, self;\n        self = this;\n        form_name = this.get('form');\n        if (form_name) {\n            form_name = form_name.underscore();\n        }\n        customization = this.get('customization');\n        if (!form_name) {\n            objects = this.get('model.objects');\n        } else {\n            objects = JSON.parse(JSON.stringify(collector.forms[form_name].objects));\n        }\n        fields = [];\n        if (!objects) {\n            return;\n        }\n        $.each(objects, function (index, obj) {\n            var feature, item, k, ref, ref1, value;\n            obj.ext = index;\n            obj.form = form_name;\n            if (customization) {\n                ref = customization[index];\n                for (k in ref) {\n                    item = ref[k];\n                    if (typeof item === 'object' && obj[k] != null) {\n                        for (feature in item) {\n                            value = item[feature];\n                            if (typeof value === 'object') {\n                                if (!obj[k][feature]) {\n                                    obj[k][feature] = value;\n                                }\n                            } else {\n                                obj[k][feature] = value;\n                            }\n                        }\n                    } else {\n                        obj[k] = item;\n                    }\n                }\n                if (index in customization) {\n                    obj.customization = customization[index];\n                }\n            }\n            // if parent has set customization default we set it to model directly\n            // (used at least with user status = ok)\n            if (obj.customization && obj.customization.default) {\n                if (Ember.typeOf(obj.customization.default) === 'string') {\n                    self.set('model.' + obj.ext, obj.customization.default);\n                } else {\n                    self.set('model.' + obj.ext, obj.customization.default());\n                }\n            }\n            if (((ref1 = obj.type), indexOf.call(self.get('fieldtypes_not_to_show'), ref1) < 0)) {\n                return fields.push(obj);\n            }\n        });\n        this.setInitialFilters(fields);\n        return fields;\n    }),\n    // This just doesn't work with conditional mandatory and no idea how to fix it\n    // disabled: Ember.computed('errors.[]', ->\n    //     if @get('submitted') == false\n    //         return false\n    //     else if @get('errors.length') > 0\n    //         return true\n    //     false\n    // )\n    submitted: false,\n    setErrorMessage: Ember.observer('validationMessageData', function () {\n        var data;\n        data = this.get('validationMessageData');\n        if (Ember.isArray(data) && Ember.isPresent(data[0]) && Ember.isPresent(data[0].title)) {\n            return this.setErrorMsg(data[0].detail);\n        } else if (Ember.isArray(data)) {\n            data = data[0];\n        }\n        switch (data.error) {\n            case 'overlap':\n                return this.setOverlapMessage(data.errorMeta);\n            case 'not_only_row':\n                return this.setErrorMsg(data.error);\n            case 'validation_error':\n                return this.setValidationMsg(data.error_msg);\n            default:\n                return this.set(\n                    'validationMessage',\n                    Ember.String.htmlSafe(\n                        'unknown error: <br>' + data.error + ' - ' + data.error_msg,\n                    ),\n                );\n        }\n    }),\n    setOverlapMessage: function (meta) {\n        var intl, start, store;\n        store = this.get('store');\n        intl = this.get('intl');\n        if (meta.hits === 'worktime') {\n            start = intl.t('validation.worktime_overlap');\n            this.set('validationMessage', start);\n            store\n                .query('worktime', {\n                    id: meta.ids.join(','),\n                    sideload: true,\n                })\n                .then((worktimes) => {\n                    var add;\n                    add = '';\n                    worktimes.forEach((item) => {\n                        return (add +=\n                            '<br> - ' +\n                            item.get('project.name') +\n                            ' ' +\n                            item.get('starttime') +\n                            ' - ' +\n                            item.get('endtime'));\n                    });\n                    return this.set(\n                        'validationMessage',\n                        Ember.String.htmlSafe(start + '<br>' + add),\n                    );\n                });\n        }\n        if (meta.hits === 'absence') {\n            start = intl.t('validation.absence_overlap');\n            this.set('validationMessage', start);\n            store\n                .query('abcense', {\n                    id: meta.ids.join(','),\n                    sideload: true,\n                })\n                .then((absences) => {\n                    var add;\n                    add = '';\n                    absences.forEach((item) => {\n                        return (add +=\n                            '<br> - ' +\n                            item.get('abcensetype.name') +\n                            ' ' +\n                            moment(item.get('startdate')).format('L') +\n                            ' - ' +\n                            moment(item.get('enddate')).format('L'));\n                    });\n                    return this.set(\n                        'validationMessage',\n                        Ember.String.htmlSafe(start + '<br>' + add),\n                    );\n                });\n        }\n        if (meta.hits === 'comp') {\n            start = intl.t('validation.comp_overlap');\n            this.set('validationMessage', start);\n            return store\n                .query('worktime', {\n                    id: meta.ids.join(','),\n                    sideload: true,\n                })\n                .then((worktimes) => {\n                    var add;\n                    add = '';\n                    worktimes.forEach((item) => {\n                        return (add +=\n                            '<br> - ' +\n                            item.get('project.name') +\n                            ' ' +\n                            moment(item.get('date')).format('L'));\n                    });\n                    return this.set(\n                        'validationMessage',\n                        Ember.String.htmlSafe(start + '<br>' + add),\n                    );\n                });\n        }\n    },\n    validationMessage: null,\n    setErrorMsg: function (msg) {\n        switch (msg) {\n            case 'The adapter operation was aborted':\n                return this.set(\n                    'validationMessage',\n                    Ember.String.htmlSafe(this.get('intl').t('validation.network_error')),\n                );\n            case 'not_only_row':\n                return this.set(\n                    'validationMessage',\n                    Ember.String.htmlSafe(this.get('intl').t('validation.worktime_not_only_row')),\n                );\n        }\n    },\n    setValidationMsg: function (msg) {\n        //will display translated message for validation.msg if the key exists in intl: if msg is \"network_error\" will translate validation.network_error,\n        //else if the translation key does not exist will default to \"Validation error: validation message\"\n        return this.set(\n            'validationMessage',\n            Ember.String.htmlSafe(\n                this.get('intl').t('validation.' + msg, {\n                    default: 'Validation error <br>' + msg,\n                }),\n            ),\n        );\n    },\n    custom_projects: Em.A([]),\n    stashed_fields: Em.computed('fields', function () {\n        var field, fields, i, len, stashed_arr;\n        fields = this.get('fields');\n        if (!fields) {\n            return;\n        }\n        stashed_arr = [];\n        for (i = 0, len = fields.length; i < len; i++) {\n            field = fields[i];\n            if (field.features.stashed) {\n                stashed_arr.push(field);\n            }\n        }\n        return stashed_arr;\n    }),\n    setInitialFilters: function (fields) {\n        return fields.forEach((field) => {\n            var fieldObj, reloadFields;\n            fieldObj = this.get('Collector').fieldArray(this.get('form')).findBy('name', field.ext);\n            if (!fieldObj) {\n                return;\n            }\n            if (!this.get('model.' + field.ext)) {\n                return;\n            }\n            if (fieldObj.features.reload) {\n                reloadFields = fieldObj.features.reload;\n                if (Ember.isArray(reloadFields)) {\n                    return reloadFields.forEach((fieldObj) => {\n                        return this.setFiltersForField(\n                            fields,\n                            this.get('model.' + field.ext),\n                            field.ext,\n                            fieldObj,\n                        );\n                    });\n                } else {\n                    return this.setFiltersForField(\n                        fields,\n                        this.get('model.' + field.ext),\n                        field.ext,\n                        reloadFields,\n                    );\n                }\n            }\n        });\n    },\n    setFilterOptionsByLinkings: function (value, field) {\n        var fieldObj, reloadFields;\n        fieldObj = this.get('Collector').fieldArray(this.get('form')).findBy('name', field);\n        if (!fieldObj) {\n            return;\n        }\n        if (fieldObj.features.reload) {\n            reloadFields = fieldObj.features.reload;\n            if (Ember.isArray(reloadFields)) {\n                return reloadFields.forEach((fieldObj) => {\n                    return this.setFiltersForField(this.get('fields'), value, field, fieldObj);\n                });\n            } else {\n                return this.setFiltersForField(this.get('fields'), value, field, reloadFields);\n            }\n        }\n    },\n    setFiltersForField: function (fields, value, fieldName, reloadFieldName) {\n        var reloadField;\n        reloadField = fields.findBy('ext', reloadFieldName);\n        if (!reloadField) {\n            return;\n        }\n        return Ember.set(reloadField, 'filter', this.createFilterOptions(fieldName, value));\n    },\n    createFilterOptions: function (fieldName, value) {\n        var filterOptions;\n        filterOptions = {};\n        filterOptions[fieldName] = value;\n        return filterOptions;\n    },\n    actions: {\n        employerSelect: function (id) {\n            return console.log(id);\n        },\n        specialAction: function (field) {\n            return false;\n        },\n        show_stashed_fields: function () {\n            this.toggleProperty('stashed_visible');\n            return false;\n        },\n        generalAddAction: function (value, field) {\n            this.setFilterOptionsByLinkings(value, field);\n            return false;\n        },\n        FieldValueUpdated: function (value, field) {\n            return false\n        },\n    },\n});\n\nexport default GeneralAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/general-report.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GeneralReportController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport reportmixin from '../mixins/general-report';\n\nimport initController from '../mixins/init-controller';\n\nGeneralReportController = Ember.Controller.extend(reportmixin, initController, {\n    application: Ember.inject.controller(),\n    intl: Ember.inject.service(),\n    filterMode: false,\n    form: Ember.computed.alias('model.firstObject.constructor.modelName'),\n    order: Ember.computed.alias('settings.sortByColumn'),\n    row_info_status: Ember.computed.alias('settings.showStatus'),\n    settings: Em.Object.create,\n    setFilters: function () {\n        if (this.get('settings')) {\n            this.set('settings.filters', this.get('filters'));\n            return this.set('settings.limit', this.get('limit'));\n        } else {\n            return this.set(\n                'settings',\n                Em.Object.create({\n                    filters: this.get('filters'),\n                }),\n            );\n        }\n    },\n    init_functions: function () {\n        if (this.get('settings')) {\n            this.set('settings.defaultOrder', this.get('settings.sortByColumn'));\n        }\n        this.setFilters();\n        return this.getFilterData();\n    },\n    page: 1,\n    limit: 25,\n    getFilterData: function () {\n        var blackListFieldNames,\n            c,\n            fields,\n            filterArr,\n            filters,\n            form,\n            intl,\n            queryParams,\n            self,\n            whitelistMores;\n        self = this;\n        if (!this.get('filters')) {\n            return;\n        }\n        filters = this.get('filters');\n        c = this.get('Collector');\n        intl = this.get('intl');\n        form = this.get('form');\n        if (c.formExists(form)) {\n            fields = c.fieldArray(form);\n            queryParams = this.get('queryParams');\n            filterArr = filters.mapBy('field');\n            whitelistMores = {\n                user: ['worktimegroup', 'employer', 'group'],\n                project: ['owner'],\n            };\n            blackListFieldNames = [\n                '*.superior',\n                '*.project_owner',\n                'worktime.project',\n                'orientation.pass_start',\n                'orientation.pass_end',\n                'orientation.ori_date',\n                'presence.date',\n                'diary.event',\n            ];\n            fields.forEach((field) => {\n                var ref, ref1, ref2, ref3;\n                if (\n                    ((ref = field.type) === 'date' ||\n                        ref === 'database' ||\n                        ref === 'databasearray' ||\n                        ref === 'multiselect' ||\n                        ref === 'option_values' ||\n                        ref === 'dropdown_options' ||\n                        ref === 'dropdown_values' ||\n                        ref === 'dropdown_userlevel' ||\n                        ref === 'checkbox') &&\n                    ((ref1 = field.name), indexOf.call(filterArr, ref1) < 0)\n                ) {\n                    if (this.get('hideMoreFilters') && !queryParams.includes(field.name)) {\n                        return;\n                    }\n                    if (\n                        ((ref2 = field.form + '.' + field.name),\n                        indexOf.call(blackListFieldNames, ref2) >= 0)\n                    ) {\n                        return;\n                    }\n                    if (((ref3 = field.options) != null ? ref3.form : void 0) === 'trnotice') {\n                        return;\n                    }\n                    filters.push(\n                        Em.Object.create({\n                            field: field.name,\n                            extra: true,\n                        }),\n                    );\n                }\n                if (\n                    field.type === 'database' &&\n                    Ember.isPresent(whitelistMores[field.options.form])\n                ) {\n                    if (this.get('hideMoreFilters') && !queryParams.includes(field.name)) {\n                        return;\n                    }\n                    return whitelistMores[field.options.form].forEach((f) => {\n                        var ref4, ref5, ref6;\n                        // Check that\n                        // - Other forms field is not in filters already\n                        // - Field is not in filters already\n                        // - Check that this form doesn't have the \"subfield\", the field that we are trying to filter by from other form\n                        // - That the original field exists on this form checked from field options\n                        if (\n                            ((ref4 = field.options.form + '-' + f),\n                            indexOf.call(filterArr, ref4) < 0) &&\n                            indexOf.call(filterArr, f) < 0 &&\n                            !c.fieldExists(form, f) &&\n                            c.fieldExists(form, field.options.form)\n                        ) {\n                            if (\n                                ((ref5 = '*.' + field.name),\n                                indexOf.call(blackListFieldNames, ref5) >= 0)\n                            ) {\n                                return;\n                            }\n                            if (\n                                ((ref6 = field.form + '.' + field.name),\n                                indexOf.call(blackListFieldNames, ref6) >= 0)\n                            ) {\n                                return;\n                            }\n                            return filters.push(\n                                Em.Object.create({\n                                    field: f,\n                                    extra: true,\n                                    form: field.options.form,\n                                    subform: true,\n                                }),\n                            );\n                        }\n                    });\n                }\n            });\n        }\n        return filters.forEach(function (item, index) {\n            var arr, field, ref;\n            if (item.type === 'searchbox') {\n                Em.defineProperty(\n                    self,\n                    item.get('bindto'),\n                    Em.computed.alias('filters.' + index + '.tmpvalue'),\n                );\n                return;\n            }\n            //if item.type == 'groupByFilter'\n            //    Em.defineProperty(self, \"_\" + item.get(\"field\"), Em.computed.alias(\"filters.\"+index+\".value\"))\n            if (item.get('field').includes('-')) {\n                arr = item.get('field').split('-');\n                item.set('field', arr[1]);\n                item.set('form', arr[0]);\n                item.set('subform', true);\n            }\n            form = self.get('form');\n            if (item.get('form')) {\n                form = item.get('form');\n            } else {\n                item.set('form', form);\n            }\n            field = collector.getFormObject(form + '.' + item.get('field'));\n            if (!item.get('type')) {\n                item.set('type', field.type);\n            }\n            if (!field) {\n                return;\n            }\n            if (field.features.hide_filter) {\n                item.set('hide_filter', true);\n            }\n            if (!item.get('prompt') && field.options) {\n                if (field.name) {\n                    item.set(\n                        'prompt',\n                        intl.t('general.select_with_fieldname') +\n                            ' ' +\n                            field.name.toLowerCase() +\n                            '...',\n                    );\n                } else if (field.options.form) {\n                    item.set('prompt', 'general.select.' + field.options.form);\n                }\n            }\n            // Find contents for dropdown\n            //            if field.type == 'database' or item.get('type') == 'database'\n            //                item.set('data', self.Collector.findFormRelations(form, item.get('field')))\n            if (\n                ((ref = field.type) === 'dropdown_options' ||\n                    ref === 'dropdown_values' ||\n                    ref === 'dropdown_userlevel') &&\n                field.options\n            ) {\n                item.set('options', field.options);\n            }\n            if (field.type === 'date') {\n                item.set('type', 'date');\n                if (!item.get('start')) {\n                    item.set('start', moment().startOf('month').format('YYYY-MM-DD'));\n                }\n                if (!item.get('end')) {\n                    item.set('end', moment().endOf('month').format('YYYY-MM-DD'));\n                }\n            }\n            if (field.type === 'status') {\n                item.set('value', self.get('status'));\n            }\n            if (Ember.isPresent(field.features.reload)) {\n                item.set('reload', field.features.reload);\n            }\n            if (Ember.isPresent(item.get('subform'))) {\n                return Em.defineProperty(\n                    self,\n                    item.get('form') + '-' + item.get('field'),\n                    Em.computed.alias('filters.' + index + '.value'),\n                );\n            } else {\n                return Em.defineProperty(\n                    self,\n                    item.get('field'),\n                    Em.computed.alias('filters.' + index + '.value'),\n                );\n            }\n        });\n    },\n    dates: Ember.computed('model.content', function () {\n        var dates, item, k, model, ret;\n        if (this.get('sortByDates')) {\n            model = this.get('model').sortBy('date');\n            dates = Em.A({});\n            model.forEach(function (item) {\n                var date;\n                date = item.get('date');\n                if (dates[date]) {\n                    return dates[date].rows.pushObject(item);\n                } else {\n                    return (dates[date] = {\n                        date: item.get('date'),\n                        rows: [item],\n                    });\n                }\n            });\n            ret = Em.A([]);\n            for (k in dates) {\n                item = dates[k];\n                ret.pushObject(item);\n            }\n            return ret;\n        }\n    }),\n    setAdditionalParamsForModel: function (field, value) {\n        var additionalParamsForModel, foundItem, moreArr, thisFilter;\n        if (!field) {\n            return;\n        }\n        if (indexOf.call(this.get('queryParams'), field) >= 0) {\n            return;\n        }\n        // if this is special-field do not use it in additional params\n        thisFilter = this.get('filters').filterBy('field', field);\n        if (thisFilter.get('firstObject.bindto')) {\n            return;\n        }\n        additionalParamsForModel = Em.A([]);\n        if (this.get('more')) {\n            this.get('more')\n                .split('|')\n                .forEach(function (param) {\n                    var splitted;\n                    splitted = param.split(':');\n                    return additionalParamsForModel.pushObject({\n                        field: splitted[0],\n                        value: splitted[1],\n                    });\n                });\n        }\n        foundItem = additionalParamsForModel.findBy('field', field);\n        if (!value) {\n            if (foundItem) {\n                additionalParamsForModel.removeObject(foundItem);\n            }\n        } else {\n            if (value.get != null && value.get('id')) {\n                value = value.get('id');\n            }\n            if (foundItem) {\n                foundItem.value = value;\n            } else {\n                additionalParamsForModel.pushObject({\n                    field: field,\n                    value: value,\n                });\n            }\n        }\n        moreArr = [];\n        additionalParamsForModel.forEach(function (item) {\n            return moreArr.push(item.field + ':' + item.value);\n        });\n        if (moreArr.length > 0) {\n            return this.set('more', moreArr.join('|'));\n        } else {\n            return this.set('more', void 0);\n        }\n    },\n    actions: {\n        filterChanged: function (value, fieldName) {\n            var filter, obj, sideload_field;\n            if (fieldName === 'groupBy') {\n                this.set('groupBy', value);\n            }\n            this.setAdditionalParamsForModel(fieldName, value);\n            sideload_field = this.get('filters').filter((filter) => {\n                if (filter.get('field') === fieldName && filter.get('sideload')) {\n                    return true;\n                }\n            });\n            if (sideload_field.length > 0) {\n                filter = sideload_field.get('firstObject');\n                obj = {};\n                if (!value) {\n                    this.set('user', null);\n                } else if (filter['bindto']) {\n                    obj[filter['bindto']] = value;\n                } else {\n                    obj[fieldName] = value;\n                }\n                this.set('user', obj);\n            }\n            return this.set('page', 1);\n        },\n        bubbleTransition: function (to, params) {\n            if (Ember.typeOf(to) === 'object') {\n                return this.transitionToRoute(to);\n            } else {\n                return this.transitionToRoute(to, params);\n            }\n        },\n    },\n});\n\nexport default GeneralReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/index.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar IndexController;\n\nimport Ember from 'ember';\n\nimport configurations from '../config';\n\nIndexController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    LocalStorageWrapper: Ember.inject.service(),\n    application: Ember.inject.controller(),\n    intl: Ember.inject.service(),\n    welcomeMessage: Ember.computed(\n        'session.currentUser.firstname',\n        'session.currentUser.lastname',\n        'intl.primaryLocale',\n        function () {\n            var firstname, greeting, lastname;\n            greeting = this.Collector.get_greeting();\n            firstname = this.get('session.currentUser.firstname');\n            lastname = this.get('session.currentUser.lastname');\n            if (firstname) {\n                return greeting + ' ' + firstname + '!';\n            } else if (lastname) {\n                return greeting + ' ' + lastname + '!';\n            } else {\n                return greeting + '!';\n            }\n        },\n    ),\n});\n\nexport default IndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/login.coffee.old\n// Generated by CoffeeScript 2.6.1\n// app/controllers/login.js\nvar LoginController;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport collector from '../classes/collector';\n\nLoginController = Ember.Controller.extend({\n    session: Ember.inject.service('session'),\n    application: Ember.inject.controller(),\n    currentMobile: false,\n    localStorageWrapper: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    initapp: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    gps: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    isTrackingAllowed: true,\n    init: function () {\n        if (this.get('session.session.isAuthenticated')) {\n            this.transitionToRoute('my-sites');\n        }\n        this._super();\n        if (this.get('gui').isIOS) {\n            return this.askTrackingPermissions();\n        }\n    },\n    isOtta: Em.computed(function () {\n        if (config.brand === 'otta') {\n            return true;\n        }\n        return false;\n    }),\n    logoUrl: Ember.computed(function () {\n        if (config.brand === 'visma') {\n            return config.APP.CDN_URL + '/images/entry/logo_nega.png';\n        } else if (config.brand === 'otta') {\n            return config.APP.CDN_URL + '/images/otta/logo_nega.png';\n        }\n        return config.APP.CDN_URL + '/images/movenium/logo_nega.png';\n    }),\n    googlessourl: Ember.computed(function () {\n        return config.APP.GOOGLESSOURL;\n    }),\n    vismassourl: Ember.computed(function () {\n        return config.APP.VISMASSOURL;\n    }),\n    isSeasonTheme: Em.computed(function () {\n        return this.get('application.isSeasonTheme');\n    }),\n    loginLink: Ember.computed('devModeOn', function () {\n        if (this.get('Collector').testNeeds(['development'])) {\n            return 'register.index';\n        } else {\n            return 'register.user.code';\n        }\n    }),\n    showRegisterLink: Ember.computed('hideRegister', function () {\n        if (this.get('hideRegister')) {\n            return false;\n        }\n        if (config.brand !== 'default') {\n            return false;\n        }\n        return true;\n    }),\n    showSavedUsername: Ember.on('init', function () {\n        var ls, username;\n        ls = this.get('localStorageWrapper');\n        username = ls.getSavedUsername();\n        return this.set('identification', username);\n    }),\n    observeIdentification: Ember.observer('identification', function () {\n        var ls, username;\n        username = this.get('identification');\n        ls = this.get('localStorageWrapper');\n        if (username === '') {\n            return ls.setSavedUsername('');\n        }\n    }),\n    mobile_devices: Ember.computed(function () {\n        var devices, obj, re;\n        devices = Em.A([]);\n        if (typeof cordova === 'undefined' || cordova === null) {\n            for (obj in config.mobile_links) {\n                re = new RegExp(config.mobile_links[obj].device_identifier, 'i');\n                if (navigator.userAgent.match(re)) {\n                    devices.pushObject(config.mobile_links[obj]);\n                }\n            }\n        }\n        return devices;\n    }),\n    isCordova: Ember.computed(function () {\n        return typeof cordova !== 'undefined' && cordova !== null;\n    }),\n    modal_title: Ember.computed(function () {\n        return this.get('intl').t('general.get_app');\n    }),\n    askTrackingPermissions: function () {\n        var fail, self, win;\n        self = this;\n        win = function (res) {\n            if (res === 2) {\n                self.set('isTrackingAllowed', false);\n            }\n            if (res === 3) {\n                self.set('isTrackingAllowed', true);\n            }\n        };\n        fail = function (res) {\n            self.set('isTrackingAllowed', false);\n        };\n        return window.cordova.exec(win, fail, 'idfa', 'requestPermission', []);\n    },\n    create_account_link: Ember.computed('isOtta', function () {\n        var browser, country;\n        if (this.get('isOtta')) {\n            return 'https://www.otta.fi/ei-tilia';\n        }\n        browser = window.navigator.userLanguage || window.navigator.language;\n        country = browser.substring(0, 2).toLowerCase();\n        if (country === 'sv') {\n            return 'https://www.visma.se/tid-och-projekthantering/byggbranschen/';\n        }\n        return 'https://www.movenium.fi/ei-tilia';\n    }),\n    actions: {\n        vismassologin: function () {\n            let url = this.get('vismassourl');\n            window.open(url, '_system');\n        },\n        authenticate: function () {\n            var data, ls, self;\n            this.get('initapp').clearInit();\n            self = this;\n            ls = this.get('localStorageWrapper');\n            data = this.getProperties('identification', 'password');\n            if (!data.identification || !data.password) {\n                this.set('errorMessage', this.get('intl').t('login.give_username_and_password'));\n                this.set('isAuthenticating', false);\n                return;\n            }\n            this.set('isAuthenticating', true);\n            this.set('errorMessage', null);\n            return this.get('session')\n                .authenticate(\n                    'authenticator:collector-auth',\n                    data.identification.trim(),\n                    data.password.trim(),\n                )\n                .then(() => {\n                    self.set('isAuthenticating', false);\n                    ls.setSavedUsername(data.identification);\n                    return this.get('initapp').start();\n                })\n                .catch(function (resp) {\n                    var error;\n                    //simple-auth 3.0 responds errors according to ember-fetch so check if this is the case\n                    if (resp.responseJSON) {\n                        resp = resp.responseJSON;\n                    }\n                    self.set('isAuthenticating', false);\n                    if (!resp) {\n                        self.set(\n                            'errorMessage',\n                            self.get('intl').t('login.failed') +\n                                '<br>' +\n                                self.get('intl').t('login.network_connection_error'),\n                        );\n                        return;\n                    }\n                    error = resp.error;\n                    if (!isNaN(error)) {\n                        return self.set('errorMessage', resp.error_description);\n                    } else {\n                        return self.set('errorMessage', self.get('intl').t('login.' + error));\n                    }\n                });\n        },\n        setLowercased: function () {\n            return this.set('identification', this.get('identification').toLowerCase());\n        },\n        testcaps: function (value, e) {\n            var IS_MAC, capsLock, key, shiftKey;\n            IS_MAC = /Mac/.test(navigator.platform);\n            key = e.originalEvent.key;\n            if (key === 'CapsLock' && typeof this.get('capsOn') !== 'undefined') {\n                this.toggleProperty('capsOn');\n            }\n            if (!key || key.length > 1) {\n                return;\n            }\n            shiftKey = e.originalEvent.shiftKey;\n            if (key >= 'A' && key <= 'Z') {\n                capsLock = !shiftKey;\n            } else if (key >= 'a' && key <= 'z' && !(shiftKey && IS_MAC)) {\n                capsLock = shiftKey;\n            } else {\n                return false;\n            }\n            this.set('capsOn', capsLock);\n            return false;\n        },\n    },\n});\n\nexport default LoginController;\n","define(\"tt4/controllers/object\", [\"exports\"], function (_exports) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  _exports.default = void 0;\n  var _default = Ember.Controller;\n  _exports.default = _default;\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/register/service.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterServiceController;\n\nimport Ember from 'ember';\n\nimport config from '../../config/environment';\n\nimport initmixin from 'tt4/mixins/init-controller';\n\nRegisterServiceController = Ember.Controller.extend(initmixin, {\n    Collector: Ember.inject.service('collector-service'),\n    adddetailsController: Ember.inject.controller('register/service/adddetails'),\n    productsController: Ember.inject.controller('register/service/products'),\n    applicationController: Ember.inject.controller('application'),\n    doneController: Ember.inject.controller('register/service/done'),\n    registerController: Ember.inject.controller('register'),\n    admintool: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    cdn: Ember.inject.service(),\n    userinfo: Ember.computed.alias('adddetailsController.values'),\n    info: Ember.computed.alias('adddetailsController.model'),\n    selectedProducts: null,\n    init_functions: function () {\n        this._super();\n        return this.get('registerController').set('registerType', 'service');\n    },\n    nextPageText: Ember.on(\n        'init',\n        Ember.observer('currentPage', function () {\n            var intl, nextPageText;\n            intl = this.get('intl');\n            nextPageText = function () {\n                switch (this.get('currentPage')) {\n                    case 1:\n                        return intl.t('register.button_continue');\n                    case 2:\n                        return intl.t('register.button_register');\n                    //when 3 then intl.t \"register.button_register\"\n                    case 4:\n                        return null;\n                }\n            }.call(this);\n            return this.get('registerController').set('nextPageText', nextPageText);\n        }),\n    ),\n    showBackButton: Ember.computed.equal('currentPage', 3),\n    page_list: Ember.computed(function () {\n        var intl;\n        intl = this.get('intl');\n        return Em.A([\n            intl.t('register.page1'),\n            intl.t('register.page2'),\n            //intl.t 'register.page3'\n            intl.t('register.page4'),\n        ]);\n    }),\n    observePages: Ember.on(\n        'init',\n        Ember.observer('currentPage', function () {\n            var currentPage, i, index, len, page, page_list, ret;\n            currentPage = this.get('currentPage');\n            page_list = this.get('page_list');\n            ret = Em.A([]);\n            for (index = i = 0, len = page_list.length; i < len; index = ++i) {\n                page = page_list[index];\n                ret.pushObject(\n                    Em.Object.create({\n                        name: page,\n                        active: currentPage - 1 >= index,\n                        done: currentPage - 1 > index,\n                        num: index + 1,\n                    }),\n                );\n            }\n            return this.get('registerController').set('pages', ret);\n        }),\n    ),\n    products: Em.A([]),\n    getProducts: Ember.on(\n        'init',\n        Ember.observer('userinfo.country', 'userinfo.source', function () {\n            var cdn, params;\n            if (!this.get('userinfo.country')) {\n                return;\n            }\n            cdn = this.get('cdn');\n            params = {\n                data: {\n                    country: this.get('userinfo.country'),\n                    source: this.get('userinfo.source'),\n                    lang: moment.locale(),\n                },\n            };\n            return this.get('admintool')\n                .get('products', params)\n                .then((products) => {\n                    products = products.map(function (item) {\n                        if (item.image && item.image.substring(0, 5) === 'icon:') {\n                            return (item.icon = item.image.substring(5));\n                        } else {\n                            item.image = item.image\n                                ? cdn.url('images/products/' + item.image)\n                                : void 0;\n                            return Ember.Object.create(item);\n                        }\n                    });\n                    return this.set('products', Em.A(products));\n                });\n        }),\n    ),\n    currentPage: Ember.computed('applicationController.path.[]', function () {\n        var path;\n        path = this.get('applicationController.path');\n        if (!path) {\n            return 1;\n        }\n        switch (path[2]) {\n            case 'adddetails':\n                return 1;\n            case 'products':\n                return 2;\n            case 'amounts':\n                return 3;\n            case 'done':\n                return 4;\n            default:\n                return 1;\n        }\n    }),\n    //    createLead: Ember.observer 'adddetailsController.email_filled', 'adddetailsController.company_filled','userinfo.country', ->\n    //        unless @get('userinfo.leadid')\n    //            if @get('adddetailsController.email_filled') and @get('adddetailsController.company_filled') and @get('userinfo.country')\n    //                @send('updateZoho', 'createLead')\n\n    //    sendCredentials: Em.observer 'doneController.password','doneController.username', ->\n    //        if @get('doneController.password') and @get('doneController.username')\n    //            @send('updateZoho', 'sendCredentials')\n\n    //    crmObserver: Ember.observer 'userinfo.email', 'userinfo.firstname','userinfo.lastname','userinfo.company','userinfo.vatin','userinfo.phone','userinfo.country','userinfo.promocode','doneController.username', ->\n    //        Ember.run.debounce(@, 'sendCrmInfo',2000)\n\n    //    sendCrmInfo: (serviceCreated = false) ->\n    //        if config.environment == \"production\"\n    //            info = @get('info')\n    //            data = info.getProperties('email','firstname','lastname','company','vatin','phone','country','promocode','deal','org_id','person_id')\n    //            if @get('doneController.username')\n    //                data.username = @get('doneController.username')\n    //                data.password = @get('doneController.password')\n    //                data.products = @get('selectedProducts').mapBy('name')\n    //            if info.get('company') && info.get('email') && info.get('country') is 'se'\n    //                c = @get('Collector')\n    //                type = 'POST'\n    //                if info.get('deal')\n    //                    type = 'PUT'\n    //                c.ttapi(\n    //                    url: 'crm/deals'\n    //                    data: JSON.stringify({data: data})\n    //                    type: type\n    //                    contentType: 'application/json'\n    //                    success: (ret) ->\n    //                        if ret.person_id\n    //                            info.set('person_id', ret.person_id.value)\n    //                        if ret.org_id\n    //                            info.set('org_id', ret.org_id.value)\n    //                        if ret.id\n    //                            info.set('deal', ret.id)\n    //                        else\n    //                            self.get('error-logger').captureMessage('CRM info: '+JSON.stringify(data)+', returned: '+JSON.stringify(ret), {level: 'info'});\n    //                )\n\n    //remove zapier-hooks from registration\n    //if serviceCreated\n    //    if info.get('country') is 'fi'\n    //        url = 'https://hooks.zapier.com/hooks/catch/213559/6isv6c/'\n\n    //    #send request to zapier hook only in sweden\n    //    if info.get('country') is 'se'\n    //        url = 'https://hooks.zapier.com/hooks/catch/213559/tbgmdi/'\n    //        $.ajax({\n    //            url: url\n    //            method: 'POST'\n    //            data: JSON.stringify({data: data})\n    //        })\n    actions: {\n        back: function () {\n            return this.transitionToRoute('register.products');\n        },\n        continue: function () {\n            var addDetailsController, currentPage, selectedProducts, self;\n            currentPage = this.get('currentPage');\n            switch (currentPage) {\n                case 1:\n                    self = this;\n                    addDetailsController = this.get('adddetailsController');\n                    return addDetailsController.validate().then(function () {\n                        var err, error, errors;\n                        addDetailsController.setValidationErrors();\n                        errors = addDetailsController.get('errors');\n                        err = false;\n                        for (error in errors) {\n                            if (errors.hasOwnProperty(error)) {\n                                if (!err) {\n                                    err = true;\n                                }\n                            }\n                        }\n                        if (!err) {\n                            return self.transitionToRoute('register.service.products');\n                        }\n                    });\n                //                            self.send('updateZoho', 'convertLead')\n                //                            self.sendCrmInfo()\n                case 2:\n                    selectedProducts = this.get('productsController.selectedProducts');\n                    if (selectedProducts.length < 1) {\n                        return;\n                    }\n                    this.set('selectedProducts', selectedProducts);\n                    //                    @send('updateZoho', 'updatePotential')\n                    //                    @send('updateZoho', 'createPotentials')\n                    //    @transitionToRoute 'register.amounts'\n                    //when 3\n                    this.get('doneController')\n                        .callServiceCreation()\n                        .then((backFromServer) => {\n                            return this.send('updateAdmintool', backFromServer);\n                        });\n                    return this.transitionToRoute('register.service.done');\n                case 4:\n                    return this.get('doneController').loginToService();\n            }\n        },\n        updateAdmintool: function (backFromServer) {\n            return this.get('admintool').ajax({\n                url: 'customers',\n                method: 'post',\n                data: {\n                    partnerid: backFromServer.partnerid,\n                    name: this.get('userinfo.company'),\n                    promocode: this.get('userinfo.promocode'),\n                    username: backFromServer.username,\n                    country: this.get('userinfo.country'),\n                    vatin: this.get('userinfo.vatin'),\n                    login_user_info_name:\n                        this.get('userinfo.firstname') + ' ' + this.get('userinfo.lastname'),\n                    login_user_info_phone: this.get('userinfo.phone'),\n                    login_user_info_email: this.get('userinfo.email'),\n                    no_trial_period: this.get('userinfo.skip_trial'),\n                },\n            });\n        },\n    },\n});\n\n//        updateZoho: (type) ->\n//            return\n//            self = @\n//            c = @get 'Collector'\n//            sendData = {type: type}\n//            sendData.data = @get('userinfo').getProperties('company','firstname','lastname','vatin','email','phone','country','promocode','leadid','potentialid','accountid','contactid')\n//            if type == 'createPotentials' || type == 'updatePotential'\n//                sendData.data.products = []\n//                @get('selectedProducts').forEach (obj) ->\n//                    sendData.data.products.push {name: obj.name, zoho_id: obj.zoho_id}\n//            if type == 'sendCredentials'\n//                sendData.data.password = @get('doneController.password')\n//                sendData.data.username = @get('doneController.username')\n\n//            url = '/convert'\n//            if config.environment == \"production\"\n//                c.ttapi(\n//                    url: url\n//                    data: JSON.stringify(sendData)\n//                    type: 'POST'\n//                    contentType: 'application/json'\n//                    success: (ret) ->\n//                        if ret\n//                            try\n//                                ret = JSON.parse(ret)\n//                            catch e\n//                                throw new Error('Could not parse zoho string '+JSON.stringify(ret)+' we sent '+JSON.stringify(sendData))\n//                            self.get('error-logger').captureMessage('Zoho info: '+JSON.stringify(sendData)+', returned: '+JSON.stringify(ret), {level: 'info'});\n//                            if type == \"createLead\"\n//                                self.set('adddetailsController.model.leadid', ret.id)\n//                            else if type == \"convertLead\"\n//                                self.set('adddetailsController.model.potentialid', ret.potential)\n//                                self.set('adddetailsController.model.accountid', ret.account)\n//                                self.set('adddetailsController.model.contactid', ret.contact)\n//                        else\n//                            self.get('error-logger').captureMessage('Zoho returned nothing, we sent '+JSON.stringify(sendData), {level: 'info'})\n//                )\nexport default RegisterServiceController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/register/service/adddetails.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterAdddetailsController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport validator from '../../../mixins/base-validation';\n\nimport config from '../../../config/environment';\n\nRegisterAdddetailsController = Ember.Controller.extend(validator, {\n    validationObject: 'model',\n    cdn: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    promo_start: '2016-11-23',\n    promo_end: '2016-11-27',\n    promocode: Em.computed(function () {\n        if (\n            this.get('promo_start') &&\n            this.get('promo_end') &&\n            moment().format('YYYY-MM-DD') >= this.get('promo_start') &&\n            moment().format('YYYY-MM-DD') <= this.get('promo_end')\n        ) {\n            return '50BF2016';\n        }\n    }),\n    queryParams: ['country', 'source', 'leadid', 'promo', 'email', 'deal'],\n    setCountry: Em.observer(\n        'country',\n        'source',\n        'leadid',\n        'promo',\n        'email',\n        'model',\n        'password',\n        function () {\n            var browser, country;\n            if (this.get('model')) {\n                this.set('model.country', this.get('country'));\n                this.set('model.source', this.get('source'));\n                this.set('model.leadid', this.get('leadid'));\n                this.set('model.deal', this.get('deal'));\n                if (this.get('promocode')) {\n                    this.set('model.promocode', this.get('promocode'));\n                } else {\n                    this.set('model.promocode', this.get('promo'));\n                }\n                this.set('model.email', this.get('email'));\n                this.set('model.password', this.get('password'));\n                if (this.get('model.country') === void 0) {\n                    browser = window.navigator.userLanguage || window.navigator.language;\n                    country = browser.substring(0, 2).toLowerCase();\n                    if (country === 'sv') {\n                        country = 'se';\n                    }\n                    if (indexOf.call(this.get('countries').mapBy('id'), country) >= 0) {\n                        return this.set('model.country', country);\n                    }\n                }\n            }\n        },\n    ),\n    validations: {\n        lastname: {\n            mandatory: true,\n        },\n        email: {\n            mandatory: true,\n            remote_email: true,\n            email: true,\n            maxLength: 80,\n        },\n        company: {\n            mandatory: true,\n        },\n        vatin: {\n            mandatory: true,\n        },\n        phone: {\n            mandatory: true,\n        },\n        country: {\n            mandatory: true,\n        },\n        password: {\n            mandatory: true,\n            minLength: 8,\n        },\n    },\n    validationstate: Ember.Object.create(),\n    countries: [\n        {\n            id: 'fi',\n            value: 'Finland',\n        },\n        {\n            id: 'se',\n            value: 'Sweden',\n        },\n    ],\n    //{id: \"no\", value: \"Norway\"}\n    //{id: \"dk\", value: \"Denmark\"}\n    //{id: \"uk\", value: \"UK\"}\n    //{id: \"us\", value: \"US\"}\n    hide_all_buttons: true,\n    values: Ember.computed.alias('model'),\n    modifyDomain: Em.observer('model.email', function () {\n        var domain,\n            domain_start,\n            email,\n            full_domain_added,\n            set_domain,\n            skipThese,\n            splitted_domain,\n            splitted_email;\n        skipThese = ['gmail', 'yahoo', 'hotmail', 'outlook'];\n        email = this.get('model.email');\n        if (email == null) {\n            return;\n        }\n        splitted_email = email.split('@');\n        if (splitted_email.length < 2) {\n            return;\n        }\n        domain = splitted_email[1];\n        splitted_domain = domain.split('.');\n        domain_start = splitted_domain[0];\n        full_domain_added = splitted_domain.length > 1;\n        if (full_domain_added) {\n            set_domain = indexOf.call(skipThese, domain_start) >= 0 ? '' : domain;\n        } else {\n            set_domain = '';\n        }\n        return this.set('model.domain', set_domain);\n    }),\n    fieldSettings: Em.A({\n        setOKtoAllFields: true,\n        title: true,\n    }),\n    hideCancelButton: true,\n    saveButtonText: Ember.computed(function () {\n        return this.get('intl').t('general.next');\n    }),\n    customization: {\n        text1: {\n            template: 'login/register/company_info',\n            hide_title: true,\n        },\n        text2: {\n            template: 'login/register/promo_title',\n            hide_title: true,\n        },\n    },\n    terms_url: Ember.computed(function () {\n        var cdn;\n        cdn = this.get('cdn');\n        switch (moment.locale()) {\n            case 'fi':\n                return config.termsAndConditions.fi;\n            case 'sv':\n            case 'se':\n                return config.termsAndConditions.se;\n            default:\n                return config.termsAndConditions.en;\n        }\n    }),\n    setValidationErrors: function () {\n        var field, results, validations;\n        validations = this.get('validations');\n        results = [];\n        for (field in validations) {\n            results.push(this.setValidationError(field));\n        }\n        return results;\n    },\n    setValidationError: function (field) {\n        var error, k, rule;\n        if (!this.get('validationstate.' + field)) {\n            this.set('validationstate.' + field, Ember.Object.create());\n        }\n        error = this.get('errors.' + field);\n        if (!error) {\n            this.set('validationstate.' + field + '.ok', true);\n            this.set('validationstate.' + field + '.error', false);\n        }\n        for (k in error) {\n            rule = error[k];\n            this.set('validationstate.' + field + '.ok', false);\n            this.set('validationstate.' + field + '.error', rule);\n            return;\n        }\n    },\n    actions: {\n        autofill: function () {\n            this.set('model.firstname', 'testfirstname');\n            this.set('model.lastname', 'testlastname');\n            this.set('model.email', Math.random().toString(36).substring(7) + '@mail.com');\n            this.set('model.company', 'Test Company Ltd');\n            this.set('model.vatin', '1234567-1');\n            this.set('model.phone', '555-324-8272');\n            this.set('model.country', 'fi');\n            return this.set('model.password', '12345678');\n        },\n        // this is called when ever some field is modified\n        change: function (field, value) {\n            var promise, self;\n            self = this;\n            promise = this.validate([field]);\n            //@setValidationErrors()\n\n            return promise.then(() => {\n                return this.setValidationError(field);\n            });\n        },\n        setFilled: function (field) {\n            return this.set(field + '_filled', true);\n        },\n        validateEmail: function (field) {\n            var promise;\n            this.set('model.email', this.get('model.email').toLowerCase());\n            this.set(field + '_filled', true);\n            promise = this.validate([field]);\n            return promise.then(() => {\n                return this.setValidationError(field);\n            });\n        },\n        validatePassword: function (field) {\n            var promise;\n            this.set(field + '_filled', true);\n            promise = this.validate([field]);\n            return promise.then(() => {\n                return this.setValidationError(field);\n            });\n        },\n        clearErrors: function (field) {\n            if (this.get('validationstate.' + field)) {\n                return this.set('validationstate.' + field + '.error', false);\n            }\n        },\n    },\n});\n\nexport default RegisterAdddetailsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/register/service/amounts.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterAmountsController;\n\nimport Ember from 'ember';\n\nRegisterAmountsController = Ember.Controller.extend({\n    registerController: Ember.inject.controller('register'),\n    selectedProducts: Ember.computed.alias('registerController.selectedProducts'),\n    products: Ember.computed.alias('registerController.products'),\n    observeAmounts: Ember.on(\n        'init',\n        Ember.observer('product_list.@each.amount', function () {\n            var currency, i, len, price, product, product_list, sum;\n            product_list = this.get('product_list');\n            sum = 0;\n            for (i = 0, len = product_list.length; i < len; i++) {\n                product = product_list[i];\n                currency = product.get('currency');\n                price = product.get('amount') * product.get('price');\n                product.set('rowprice', price || '---');\n                if (price) {\n                    sum += price;\n                }\n            }\n            this.set('sum', sum || '---');\n            return this.set('sumcurrency', currency);\n        }),\n    ),\n    product_list: Ember.computed('selectedProducts', 'products', function () {\n        var i, len, product, ret, selectedProducts;\n        selectedProducts = this.get('selectedProducts');\n        //        products = @get 'products'\n        ret = Em.A([]);\n        for (i = 0, len = selectedProducts.length; i < len; i++) {\n            product = selectedProducts[i];\n            ret.pushObject(\n                Em.Object.create({\n                    name: product.header,\n                    price: product.price,\n                    currency: product.currency,\n                    placeholder: this.getPlaceholder(product.pricetype),\n                }),\n            );\n        }\n        return ret;\n    }),\n    getPlaceholder: function (pricetype) {\n        switch (pricetype) {\n            case 'peruser':\n                return 'users';\n            case 'perproject':\n                return 'projects';\n            default:\n                return 'amount';\n        }\n    },\n});\n\nexport default RegisterAmountsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/register/service/done.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterDoneController;\n\nimport Ember from 'ember';\n\nRegisterDoneController = Ember.Controller.extend({\n    registerController: Ember.inject.controller('register.service'),\n    application: Ember.inject.controller(),\n    userinfo: Ember.computed.alias('registerController.userinfo'),\n    selectedProducts: Ember.computed.alias('registerController.selectedProducts'),\n    Collector: Ember.inject.service('collector-service'),\n    localStorageWrapper: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    initapp: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    done: false,\n    password: null,\n    session: Ember.inject.service(),\n    loginToService: function () {\n        var passwd, promise, self, userinfo, username;\n        username = this.get('username');\n        userinfo = this.get('userinfo');\n        passwd = this.get('password');\n        self = this;\n        promise = this.get('session').authenticate(\n            'authenticator:collector-auth',\n            username,\n            passwd,\n        );\n        return promise.then(() => {\n            return this.addWelcomeMessageForAdmin().then(() => {\n                //set new messageboard as default for new customers\n                this.get('customerSettings').setSetting('new_messageboard', 'on');\n                //and hide the setting, so customers cannot not change to old messageboard\n                this.get('customerSettings').setSetting('hide_setting_new_messageboard', 'on');\n                //set hiding of measurement-index to new customers\n                //if @get('Collector').testNeedsOne('products.measurement_tr') or @get('Collector').testNeedsOne('products.measurement_mvr')\n                //@get(\"customerSettings\").setSetting(\"hide_measurement_index\", \"on\")\n                return this.get('initapp').start();\n            });\n        });\n    },\n    callServiceCreation: function () {\n        var c, promise, self, userinfo;\n\n        //        chars = '23456789abcdefghkmnpqrstuvwxyz'\n        //        string_length = 8\n        //        generated_password = ''\n        //        i = 0\n        //        while i < string_length\n        //            rnum = Math.floor(Math.random() * chars.length)\n        //            generated_password += chars.substring(rnum, rnum + 1)\n        //            i++\n        //        if userinfo.get 'password'\n        //            password = userinfo.get 'password'\n        //        else\n        //            password = generated_password\n\n        //        @set 'password', password\n        userinfo = this.get('userinfo');\n        c = this.get('Collector');\n        self = this;\n        promise = c.ajax({\n            url: 'createService',\n            method: 'post',\n            data: {\n                firstname: userinfo.get('firstname'),\n                lastname: userinfo.get('lastname'),\n                country: userinfo.get('country'),\n                company: userinfo.get('company'),\n                vatin: userinfo.get('vatin'),\n                phone: userinfo.get('phone'),\n                email: userinfo.get('email'),\n                domain: userinfo.get('domain'),\n                password: userinfo.get('password'),\n                products: this.get('selectedProducts').mapBy('name').join(','),\n            },\n        });\n        promise.then((back) => {\n            var ls;\n            self.set('username', back.username);\n            self.set('userid', back.userid);\n            ls = this.get('localStorageWrapper');\n            ls.setSavedUsername(back.username);\n            self.set('password', userinfo.get('password'));\n            self.set('done', true);\n            //            self.get('registerController').sendCrmInfo(true)\n            return this.get('selectedProducts').forEach(function (product) {\n                var company_name, contact_person, email_content, email_country, email_header;\n                if (product.get('name') === 'rfid') {\n                    company_name = userinfo.get('company');\n                    email_country = userinfo.get('country');\n                    contact_person = userinfo.get('lastname') + ' ' + userinfo.get('firstname');\n                    email_content =\n                        self.get('intl').t('general.' + email_country + '_nfc_content') +\n                        '<br><br>' +\n                        self.get('intl').t('general.' + email_country + '_nfc_customer_info') +\n                        ':<br>' +\n                        contact_person +\n                        '<br>' +\n                        userinfo.get('email') +\n                        '<br>' +\n                        userinfo.get('phone');\n                    email_header = self.get('intl').t('general.' + email_country + '_nfc_header');\n                    return (promise = self.get('Collector').ttapi({\n                        url: 'sendNfcEmail',\n                        data: {\n                            content: email_content.replace('{customer}', company_name),\n                            header: email_header.replace('{customer}', company_name),\n                            country: email_country,\n                        },\n                        method: 'post',\n                    }));\n                }\n            });\n        });\n        promise.catch(function (back) {\n            var ret;\n            ret = JSON.parse(back.responseText);\n            alert('Service creation failed! Please try again.\\n' + ret.error_description);\n            return self.transitionToRoute('login');\n        });\n        return promise;\n    },\n    addWelcomeMessageForAdmin: function () {\n        var c;\n        c = this.get('Collector');\n        return c.ttapi({\n            url: 'messages/new_message',\n            data: {\n                receivers: [this.get('userid')],\n                type: 'welcome-admin',\n            },\n            method: 'post',\n        });\n    },\n    actions: {\n        login: function () {\n            return this.loginToService();\n        },\n    },\n});\n\nexport default RegisterDoneController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/register/service/products.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterProductsController;\n\nimport Ember from 'ember';\n\nRegisterProductsController = Ember.Controller.extend({\n    intl: Ember.inject.service(),\n    registerController: Ember.inject.controller('register.service'),\n    selectedProducts: Em.A([]),\n    obs_products: Ember.observer('products.@each.selected', function () {\n        return this.set('selectedProducts', Em.A(this.get('products').filterBy('selected', true)));\n    }),\n    products: Ember.computed.alias('registerController.products'),\n    _products: Ember.computed('products', function () {\n        var intl;\n        intl = this.get('intl');\n        return this.get('products').map(function (item) {\n            item.pricetype_text = (function () {\n                switch (item.pricetype) {\n                    case 'peruser':\n                        return intl.t('register.price_type_peruser');\n                    case 'perproject':\n                        return intl.t('register.price_type_perproject');\n                    case 'permonth':\n                        return intl.t('register.price_type_permonth');\n                    case 'monthlyperproject':\n                        return intl.t('register.price_type_monthlyperproject');\n                }\n            })();\n            if (item.image && item.image.substring(0, 5) === 'icon:') {\n                item.icon = item.image.substring(5);\n            }\n            return item;\n        });\n    }),\n    actions: {\n        moreInfo: function (link) {\n            return window.open(link, '_blank');\n        },\n        next: function () {\n            var registerController;\n            registerController = this.get('registerController');\n            registerController.set('selectedProducts', this.get('selectedProducts'));\n            return this.transitionToRoute('login.register.summary');\n        },\n        click: function (object) {\n            object.toggleProperty('selected');\n            return false;\n        },\n    },\n});\n\nexport default RegisterProductsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/saved.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SavedController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport configurations from '../config';\n\nimport pdf_mixin from '../mixins/pdf-export';\n\nimport $ from 'jquery';\n\nimport { isArray } from '@ember/array';\n\nconst { getOwner } = Ember;\n\nSavedController = Ember.Controller.extend(pdf_mixin, {\n    Collector: Em.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    queryParams: ['action'],\n    action: '',\n    form: Em.computed('model', function () {\n        return this.get('model.constructor.modelName');\n    }),\n    emailSent: false,\n    email_content: Em.computed(function () {\n        return this.get('intl').t('saved.email.content.default', {\n            sender:\n                this.get('session.currentUser.firstname') +\n                ' ' +\n                this.get('session.currentUser.lastname'),\n        });\n    }),\n    fields: Ember.computed('model', function () {\n        var c, customization, customizations, fields, form, model, objects, self;\n        self = this;\n        form = this.get('model.constructor.modelName');\n        if (!form) {\n            objects = this.get('model.objects');\n        } else {\n            objects = this.Collector.fields(form);\n        }\n        if (!objects) {\n            objects = this.get('objects');\n        }\n        model = this.get('model');\n        if (!model) {\n            Ember.run.next(this, () => {\n                return this.transitionToRoute('index');\n            });\n        }\n        fields = [];\n        if (!objects) {\n            return fields;\n        }\n        if (form) {\n            customizations = configurations.savedCustomization;\n            if (customizations && customizations[form]) {\n                customization = customizations[form];\n                c = this.get('Collector');\n            }\n        }\n        $.each(objects, function (index, obj2) {\n            var arr, json, obj, value;\n            //copy to new real object, so we dont affect collector objects\n            obj = JSON.parse(JSON.stringify(obj2));\n            if (customization && customization[obj.ext]) {\n                obj = c.customizeField(obj, customization[obj.ext]);\n            }\n            if (self.get('hideFields') && self.get('hideFields').indexOf(obj.ext) !== -1) {\n                return;\n            }\n            obj.ext = index;\n            //            obj.features.mandatory = self.Collector.isMandatory(obj, model)\n            //            obj.features.hide = self.Collector.isHidden(obj, model)\n            if (model.get(obj.ext)) {\n                if (Array.isArray(model.get(obj.ext)) && model.get(obj.ext + '.length') < 1) {\n                    return;\n                }\n                if (!(self.Collector.isHidden(obj, model) && obj.ext !== 'work_hours')) {\n                    if (form === 'tr' || form === 'mvr') {\n                        delete obj.name;\n                    }\n                    arr = (function () {\n                        switch (obj.ext) {\n                            case 'weather':\n                                if (model.get('weather')) {\n                                    if (Ember.typeOf(model.get('weather')) === 'string') {\n                                        json = JSON.parse(model.get('weather'));\n                                    } else {\n                                        json = model.get('weather');\n                                    }\n                                    value = new Ember.String.htmlSafe(\n                                        \"<span class='weather-icon move move-\" +\n                                            json.weather +\n                                            \"'></span> \" +\n                                            json.temperature +\n                                            '&deg;C, ' +\n                                            json.windspeed +\n                                            'm/s, ' +\n                                            json.humidity +\n                                            '% ' +\n                                            self.get('intl').t('worksitediary.abbr_rel_hum') +\n                                            ', ' +\n                                            self.get('intl').t('worksitediary.abbr_dew_point') +\n                                            ': ' +\n                                            json.dew_point +\n                                            '&deg;C',\n                                    );\n                                } else {\n                                    value = '';\n                                }\n                                return {\n                                    value: value,\n                                };\n                            default:\n                                return {\n                                    value: self.Collector.format(\n                                        model.get(obj.ext),\n                                        obj,\n                                        self,\n                                        model,\n                                        false,\n                                        form,\n                                    ),\n                                };\n                        }\n                    })();\n                    if (!arr.title) {\n                        arr.title = self.Collector.getFieldName(form, Em.Object.create(obj));\n                    }\n                    if (arr.value) {\n                        return fields.push(arr);\n                    }\n                }\n            }\n        });\n        return fields;\n    }),\n    link: Em.computed('model', 'afterSave', function () {\n        var afterSave, form;\n        afterSave = this.get('afterSave');\n        if (afterSave) {\n            if (typeof afterSave === 'object') {\n                return afterSave.route;\n            } else {\n                return afterSave;\n            }\n        } else if (this.get('model')) {\n            form = this.get('model.constructor.modelName').underscore();\n            return form + 's.index';\n        } else {\n            return 'index';\n        }\n    }),\n    addPage: Em.computed('model', function () {\n        var routeName, routes;\n        if (this.get('model')) {\n            routes = getOwner(this).lookup('router:main')._routerMicrolib.recognizer.names;\n            routeName = this.get('model.constructor.modelName') + 's.add';\n            if (routes[routeName] != null) {\n                return routeName;\n            } else if (this.get('addPageLink')) {\n                return this.get('addPageLink');\n            }\n        }\n        return false;\n    }),\n    editRoute: Em.computed('model', function () {\n        var routeName, routes;\n        if (this.get('model')) {\n            routes = getOwner(this).lookup('router:main')._routerMicrolib.recognizer.names;\n            routeName = this.get('model.constructor.modelName') + 's.edit';\n            if (routes[routeName] != null) {\n                return routeName;\n            } else if (this.get('editPageLink')) {\n                return this.get('editPageLink');\n            }\n        }\n        return false;\n    }),\n    linkParam: Em.computed('model', 'afterSave', function () {\n        var afterSave;\n        afterSave = this.get('afterSave');\n        if (afterSave && typeof afterSave === 'object') {\n            return afterSave.params;\n        } else {\n            return null;\n        }\n    }),\n    showApprovalLinkSelection: Ember.computed(function () {\n        var field, fields, found;\n        fields = this.get('Collector').fields(this.get('form'));\n        found = false;\n        for (field in fields) {\n            if (\n                fields[field].type === 'status' &&\n                !fields[field].features.readonly &&\n                indexOf.call(fields[field].options, 'approved') >= 0\n            ) {\n                found = true;\n            }\n        }\n        return found;\n    }),\n    getTtapiPdf: function (format = null, params) {\n        var postParams, url;\n        url = 'pdf/row';\n        postParams = {\n            form: this.get('form').underscore(),\n            lang: moment.locale(),\n            id: this.get('model.id'),\n            filters: JSON.stringify({\n                id: this.get('model.id'),\n            }),\n        };\n        if (params.template) {\n            postParams.template = Ember.get(params, 'template.id');\n        }\n        if (format) {\n            postParams.type = format;\n        }\n        return this.get('Collector').ttapi({\n            dataType: 'text',\n            url: url,\n            data: postParams,\n        });\n    },\n    pdfExports: Ember.computed(function () {\n        return [\n            {\n                id: 'export_pdf_full',\n                name: this.get('intl').t('report.actions.export_pdf_full'),\n            },\n        ];\n    }),\n    actions: {\n        addSame: function () {\n            var addPage, c;\n            c = this.get('Collector');\n            c.copyRecord(this.get('model'));\n            if (this.get('addPage')) {\n                addPage = this.get('addPage');\n                return this.transitionToRoute(addPage);\n            }\n        },\n        send_email: function (recipient, title, content, params) {\n            var c, columns, emails, export_fields, field, fields, form, name, shownColumns, titles;\n            emails = isArray(recipient) ? recipient : recipient.split(',');\n            if (!emails) {\n                return this.set('email_error', this.get('intl').t('validation.errors.mandatory'));\n            } else {\n                emails.forEach((email) => {\n                    if (\n                        !/^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i.test(\n                            email,\n                        )\n                    ) {\n                        return this.set(\n                            'email_error',\n                            this.get('intl').t('validation.errors.email'),\n                        );\n                    }\n                });\n                c = this.get('Collector');\n                this.set('loading', true);\n                form = this.get('model.constructor.modelName');\n                fields = c.fields(form);\n                titles = [];\n                columns = [];\n                export_fields = [];\n                if (this.get('currentTemplate')) {\n                    shownColumns = this.get('currentTemplate.columns').split(',');\n                } else {\n                    shownColumns = [];\n                }\n                for (name in fields) {\n                    field = fields[name];\n                    if (shownColumns.length > 0 && shownColumns.indexOf(name) === -1) {\n                        continue;\n                    }\n                    Ember.set(field, 'ext', name);\n                    if (field.features && field.features.hide_column) {\n                        continue;\n                    }\n                    titles.push(c.getTranslationForColumn(form, field.ext));\n                    columns.push(field.ext);\n                    export_fields.push(field);\n                }\n                return this.getTtapiPdf('base64', params).then((pdf) => {\n                    return c\n                        .ttapi({\n                            method: 'post',\n                            url: 'sendReportAsEmail',\n                            data: {\n                                to_address: emails,\n                                email: pdf,\n                                header: title,\n                                content: content,\n                                includeApproval: params.approvalLink,\n                                form: this.get('form').underscore(),\n                                rowids: [this.get('model.id')],\n                            },\n                        })\n                        .then(() => {\n                            this.set('loading', false);\n                            return this.set('emailSent', true);\n                        });\n                });\n            }\n        },\n        removeModal: function () {\n            return this.set('action', '');\n        },\n    },\n});\n\nexport default SavedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/controllers/show.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ShowController;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport config from '../config/environment';\n\nimport GeneralAddController from '../controllers/general-add';\n\nShowController = GeneralAddController.extend({\n    intl: Ember.inject.service(),\n    header: Em.computed('model', 'intl.primaryLocale', function () {\n        var form;\n        if (this.get('model.constructor.modelName').includes('measurement-custom')) {\n            form = this.Collector.forms()[this.get('form').underscore()];\n            return form.name;\n        } else {\n            return this.get('intl').t('header.path.add.' + this.get('model.constructor.modelName'));\n        }\n    }),\n});\n\nexport default ShowController;\n","define(\"tt4/data-adapter\", [\"exports\", \"@ember-data/debug\"], function (_exports, _debug) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _debug.default;\n    }\n  });\n});\n","import Gesture from 'ember-gestures/recognizers/pan';\nexport default Gesture;\n","import Gesture from 'ember-gestures/recognizers/pinch';\nexport default Gesture;\n","import Gesture from 'ember-gestures/recognizers/press';\nexport default Gesture;\n","import Gesture from 'ember-gestures/recognizers/rotate';\nexport default Gesture;\n","import Gesture from 'ember-gestures/recognizers/swipe';\nexport default Gesture;\n","define(\"tt4/ember-gestures/recognizers/tap\", [\"exports\", \"ember-gestures/recognizers/tap\"], function (_exports, _tap) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _tap.default;\n    }\n  });\n});\n","define(\"tt4/ember-gestures/recognizers/vertical-pan\", [\"exports\", \"ember-gestures/recognizers/vertical-pan\"], function (_exports, _verticalPan) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _verticalPan.default;\n    }\n  });\n});\n","define(\"tt4/ember-gestures/recognizers/vertical-swipe\", [\"exports\", \"ember-gestures/recognizers/vertical-swipe\"], function (_exports, _verticalSwipe) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _verticalSwipe.default;\n    }\n  });\n});\n","import Service, { inject as service } from '@ember/service';\nimport FormsService from './forms';\nimport DS from 'ember-data';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport { assert } from '@ember/debug';\nimport { isEmpty } from '@ember/utils';\nimport { get } from '@ember/object';\n\nexport default class CollectorService extends Service {\n    @service private intl!: any;\n    @service private forms!: FormsService;\n    @service private store!: DS.Store;\n\n    constructor() {\n        super(...arguments);\n    }\n\n    public getTranslationForColumn(form: string, fieldName: string, removed: boolean = false) {\n        if (fieldName === 'id') return 'id';\n\n        if (fieldName.substring(0, 9) === 'row_info.') return this.intl.t('general.' + fieldName);\n\n        if (removed) return this.getBestTranslation(form, fieldName);\n\n        const field = this.forms.fields(form)[fieldName];\n\n        if (!field) assert(\"Field '\" + fieldName + \"' not found for form '\" + form + \"'\");\n\n        if (field.hasOwnProperty('name')) return field.name;\n        else return this.getBestTranslation(form, fieldName);\n    }\n\n    public getBestTranslation(form: string, fieldName: string) {\n        const testKeys: string[] = [\n            'report.' + form + '.' + fieldName,\n            'defaults.field.' + fieldName,\n        ];\n\n        const foundKey: string | undefined = testKeys.find((key) => {\n            return this.intl.exists(key);\n        });\n\n        if (foundKey) return this.intl.t(foundKey);\n        else return testKeys[0];\n    }\n\n    public copyRecord(record: IRecord) {\n        const form = get(record, 'constructor.modelName');\n        const jsonRecord: any = record.toJSON();\n        for (const field of ['status']) {\n            if (!isEmpty(jsonRecord[field])) {\n                jsonRecord[field] = null;\n            }\n        }\n\n        record.eachRelationship((key: string, relationship: { kind: string }) => {\n            const relKind = relationship.kind;\n            if (\n                (relKind === 'belongsTo' || relKind === 'hasMany') &&\n                !['export_salary', 'export_absence', 'row_info'].includes(key)\n            ) {\n                if (this.forms.field(form, key).type === 'databasearray') {\n                    const hasManyArr: any = [];\n                    record[key].forEach((hasManyRecord: IRecord) => {\n                        hasManyArr.push(this.copyRecord(hasManyRecord));\n                    });\n                    jsonRecord[key] = hasManyArr;\n                } else {\n                    jsonRecord[key] = record[key];\n                }\n            }\n        });\n\n        return this.store.createRecord(form, jsonRecord);\n    }\n}\n","import Service, { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport { isArray } from '@ember/array';\n\n/**\n * Handles all operations that have to do with errors\n *\n * ```js\n * @service errorHandler;\n * this.errorHandler.notify(<yourError>)\n * ```\n *\n * @class ErrorHandlerService\n * @constructor\n * @public\n */\n\nexport default class ErrorHandlerService extends Service {\n    @service private intl: any;\n    @service private notifications: any;\n\n    public toError(error: any) {\n        if (this._capiError(error)) return this._capiError(error);\n        if (this._networkError(error)) return this._networkError(error);\n\n        let message = JSON.stringify(error);\n        if (get(error, 'payload.message')) message = get(error, 'payload.message');\n        else if (error.message) message = error.message;\n        return {\n            type: 'unknown',\n            error,\n            message: this.tryToTranslateMessage(message),\n            meta: null,\n        };\n    }\n\n    /**\n     * Use notifications to show user to error. Can be used directly in promise fail\n     * EXAMPLE: promise.then(..., (reason) => get(this, 'error').notify(reason)))\n     * @method notify\n     * @param {*} error\n     */\n    public notify(error: any) {\n        this.notifications.error(this.errorToString(error), { autoClear: true });\n    }\n\n    public errorToString(error: any) {\n        if (!error) return;\n        // try to get message first from .message and if not found check also .error\n        return this.toError(error)!.message\n            ? this.toError(error)!.message\n            : this.toError(error)!.error;\n    }\n\n    private tryToTranslateMessage(message: any) {\n        if (typeof message !== 'string') return message;\n        const strippedMessage = message.toLowerCase().replace(/ /g, ' ');\n        if (this.intl.exists('error.' + strippedMessage)) {\n            return this.intl.t('error.' + strippedMessage);\n        }\n        return message;\n    }\n\n    /**\n     * FORMAT EXAMPLE\n     *  if application adapter has normalized error it looks like this\n     *  {\n     *      message: 'Request was rejected because user is not permitted to perform this operation.'\n     *      name: 'Error'\n     *      payload: {\n     *          error: 'overlap',\n     *          error_msg: 'two or more rows have overlapping dates'\n     *          meta: {hits: 'worktime', ids: Array(1)\n     *      }\n     *      stack: ....\n     *  }\n     *\n     *  OR\n     *  if application adapter has not normalized error it looks like this\n     *  {\n     *      errors: [\n     *          {\n     *              error: 'overlap'\n     *              errorMeta: {hits: 'absence', ids: Array(1)}\n     *              error_msg: 'two or more rows have overlapping dates'\n     *          }\n     *      ]\n     *      message: 'Ember Data Request POST http://localhost:30001/abcenses returned a 403 .....\n     *      name: 'Error'\n     *\n     *  @method _capiError\n     *  @param {any} error\n     *  @return {object}\n     */\n    private _capiError(error: any) {\n        if (typeof error !== 'object') return null;\n        let ret = null;\n        let errors = 'errors';\n        if (isArray(get(error, 'errors'))) {\n            errors = 'errors.0';\n        }\n\n        if (get(error, 'payload.error')) {\n            ret = {\n                type: 'capi',\n                error: get(error, 'payload.error'),\n                message: get(error, 'payload.error_msg'),\n                meta: get(error, 'payload.meta'),\n            };\n        } else if (get(error, errors + '.error')) {\n            ret = {\n                type: 'capi',\n                error: get(error, errors + '.error'),\n                message: get(error, errors + '.error_msg'),\n                meta: get(error, errors + '.errorMeta'),\n            };\n        } else {\n            return null;\n        }\n\n        switch (ret.error) {\n            case 'overlap':\n                if (ret.meta.hits === 'absence')\n                    ret.message = this.intl.t('validation.absence_overlap');\n                else if (ret.meta.hits === 'comp')\n                    ret.message = this.intl.t('validation.comp_overlap');\n                else ret.message = this.intl.t('validation.worktime_overlap');\n                break;\n            case 'not_only_row':\n                ret.message = this.intl.t('validation.worktime_not_only_row');\n                break;\n            case 'not_found':\n                ret.message = this.intl.t('validation.not_found.general');\n                break;\n            case 'validation_error':\n                ret.message = this.intl.exists('validation.' + ret.message)\n                    ? this.intl.t('validation.' + ret.message)\n                    : ret.message;\n        }\n\n        return ret;\n    }\n\n    /**\n     * FORMAT EXAMPLE\n     *  {\n     *      message: 'The ajax operation was aborted'\n     *      name: 'Error'\n     *      payload: null\n     *      stack: ....\n     *  @method _networkError\n     *  @param {any} error\n     *  @return {object}\n     */\n    private _networkError(error: any) {\n        if (typeof error !== 'object') return null;\n        if (error.message !== 'The ajax operation was aborted') return null;\n\n        return {\n            type: 'network',\n            error: error.message,\n            message: this.intl.t('validation.network_error'),\n            meta: null,\n        };\n    }\n}\n","import Service from '@ember/service';\nimport Evented from '@ember/object/evented';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\n\n/**\n *\n * Trigger an event in some component\n *\n * ```js\n *@service evented;\n *\n *this.evented.storeEvent('insert', 'worktime', this.worktimeRecord)\n *```\n * You can listen to these events in another component. Always remember to unsubscribe from the events with .off()\n * ```js\n *\n *@service event;\n *\n *constructor() {\n *   this.evented.on('storeEvent', this, 'onStoreEvent')\n *}\n *\n *function onStoreEvent(params) {\n *   if (params.type === 'worktime') // do something else\n *},\n *\n *willDestroy(){\n *   this.evented.off('storeEvent', this, 'onStoreEvent')\n *}\n * ```\n *\n * @class EventService\n * @constructor\n * @public\n */\nexport default Service.extend(Evented, {\n    /**\n     * A DS.Store event\n     * @method storeEvent\n     * @param {String} action the type of action, ie 'remove', 'insert', 'update'\n     * @param {String} type type of event that happened ie 'worktime', 'absence', 'myEvent'\n     * @param {IRecord} record the record that triggered the event\n     * @return {void}\n     */\n    storeEvent(action: string, type: string, record: IRecord): void {\n        this.trigger('storeEvent', { action, type, record });\n    },\n\n    /**\n     * Can be called for example when the application's onResume() is triggered to trigger resumes elsewhere in the application\n     * @method resumed\n     * @return {void}\n     */\n    resumed(): void {\n        this.trigger('onResumed');\n    },\n});\n","import { isEmpty, isPresent } from '@ember/utils';\nimport Service, { inject as service } from '@ember/service';\nimport { decamelize, underscore } from '@ember/string';\nimport { assert } from '@ember/debug';\nimport EmberError from '@ember/error';\nimport {\n    IFormsInterface,\n    IForms,\n    IField,\n    IFormField,\n    IFormObjects,\n} from 'tt4/ember-movenium/interfaces/forms';\n\n/**\n * Handles all operations that have to do with collector forms\n *\n * <strong>Forms must be set for this service to function</strong>\n *\n * From your application, assign your forms to this service's forms property\n * ```js\n * @service forms;\n * this.forms.forms = <yourForms>\n * ```\n *\n * @class FormsService\n * @constructor\n * @public\n */\nexport default class FormsService extends Service implements IForms {\n    @service private intl: any;\n\n    /**\n     * Internal property to store the forms for future use.\n     * To get or set forms use `this.forms`\n     * @property { object } _forms\n     * @private\n     */\n    private _forms = {};\n\n    constructor() {\n        super(...arguments);\n    }\n\n    get forms(): IFormsInterface {\n        return this._forms;\n    }\n\n    /**\n     * Forms must be set for this service to function\n     * From your application, assign your forms to this property\n     * ```js\n     * @service forms;\n     * this.forms.forms = <yourForms>\n     * ```\n     * @property { object } forms\n     */\n    set forms(forms: IFormsInterface) {\n        this._forms = forms;\n    }\n\n    /**\n     * Returns all fields of a form\n        @method fields\n        @param {string} form\n        @return {object}\n    */\n    public fields(form: string): IFormObjects {\n        if (isEmpty(this.forms)) {\n            return {};\n        }\n        if (!form) {\n            {\n                return {};\n            }\n        }\n\n        form = decamelize(form);\n        form = underscore(form);\n\n        if (!this.forms.hasOwnProperty(form)) {\n            throw new EmberError(\"forms service fields: form '\" + form + \"' not found\");\n        }\n\n        return this.forms[form].objects;\n    }\n\n    /**\n     * Returns the field of a form with additional properties\n     * @method field\n     * @param {string} form\n     * @param {string} fieldName\n     * @return {object}\n     */\n    public field(form: string, fieldName: string): IFormField {\n        form = decamelize(underscore(form));\n        const field = this.formField(form, fieldName);\n        assert('Field ' + fieldName + ' is not found from form ' + form, field);\n        return {\n            form,\n            name: fieldName,\n            type: field.type,\n            translated_name: this.intl.t(form + '.' + fieldName, { default: field.name }),\n            options: field.options,\n            features: field.features,\n        };\n    }\n\n    /**\n     * Returns the <strong>raw, unaltered</strong> field of a form\n     * @method formField\n     * @param {string} form\n     * @param {string} field\n     * @return {object}\n     */\n    public formField(form: string, field: string): IField {\n        return this.fields(form)[field];\n    }\n\n    public fieldArray(form: string): IFormField[] {\n        form = decamelize(underscore(form));\n        const fields: IFormObjects = this.fields(form);\n        const ret: IFormField[] = [];\n        Object.keys(fields).forEach((key) => {\n            const field = fields[key];\n            ret.push({\n                form,\n                name: key,\n                translated_name: this.intl.t(form + '.' + key, { default: fields[key].name }),\n                type: field.type,\n                options: field.options,\n                features: field.features,\n            });\n        });\n        return ret;\n    }\n\n    public formExists(name: string) {\n        if (!this.forms) return;\n        return this.forms[name];\n    }\n\n    public fieldExists(form: string, name: string): boolean {\n        if (!this.formExists(form)) return false;\n        return isPresent(this.forms[form].objects[name]);\n    }\n}\n","import Service, { inject as service } from '@ember/service';\n\ninterface ILocalStorage {\n    setItem(key: string, value: any): void;\n    getItem(key: string): null | JSON;\n    removeItem(key: string): void;\n}\n\nexport default class LocalstorageService extends Service implements ILocalStorage {\n    @service private session!: any;\n\n    private namespace: string = 'tt4';\n\n    public setItem(key: string, value: any): void {\n        localStorage.setItem(this.createKey(key), JSON.stringify(value));\n    }\n\n    public getItem(key: string) {\n        const str = localStorage.getItem(this.createKey(key)) as string;\n        return JSON.parse(str);\n    }\n\n    public removeItem(key: string) {\n        localStorage.removeItem(this.createKey(key));\n    }\n\n    public createKey(str: string) {\n        const currentuser = this.session.currentUser?.id;\n        if (!currentuser)\n            throw new Error('Cannot use localstorage service because currentUser is not set');\n        return this.namespace + '.' + currentuser + '.' + str;\n    }\n}\n","// noinspection TypeScriptValidateTypes\nimport Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { isArray } from '@ember/array';\n\nimport FormsService from './forms';\nimport { decamelize } from '@ember/string';\n\ninterface ICurrentUser {\n    [key: string]: string;\n}\n\nexport default class NeedsService extends Service {\n    @service private session: any;\n    @service private forms!: FormsService;\n\n    public test(needs: string | string[]): boolean {\n        if (!needs) return true;\n        if (!isArray(needs)) needs = [needs];\n\n        for (let need of needs) {\n            let inverse = false;\n            if (need.substring(0, 1) === '!') {\n                inverse = true;\n                need = need.substring(1);\n            }\n            const ok = inverse ? !this.testOne(need) : this.testOne(need);\n            if (!ok) return false;\n        }\n\n        return true;\n    }\n\n    public testOne(need: string): boolean {\n        if (need.substring(0, 9) === 'userlevel') return this.testUserlevel(need.split('=')[1]);\n        if (need.includes('@')) return this.testFormPrivilege(need);\n        if (need.includes('.')) return this.testFieldExistance(need);\n\n        return false;\n    }\n\n    private testUserlevel(userlevels: string): boolean {\n        const splitUserlevels = userlevels.split(',');\n\n        return splitUserlevels.includes(\n            (this.session.currentUser as ICurrentUser).userlevel.toString(),\n        );\n    }\n\n    private testFormPrivilege(need: string): boolean {\n        const split = need.split('@');\n        const form = decamelize(split[0]);\n        const privilege = split[1];\n\n        if (!this.forms.formExists(form)) return false;\n\n        if (privilege === 'errors') return this.forms.forms[form].errors ? true : false;\n        if (!this.forms.forms[form].privileges) return false;\n\n        return !!this.forms.forms[form].privileges![privilege];\n    }\n\n    private testFieldExistance(need: string): boolean {\n        const split = need.split('.');\n        return this.forms.fieldExists(split[0], split[1]);\n    }\n}\n","/**\n * Provides functions and properties to deal with files\n *\n * @module country\n */\n\ninterface ICountry {\n    id: string;\n    name: string;\n    number?: string;\n}\n\n/**\n * JSON Array of all countries:\n * ```ts\n * [\n *    {id: 'fi', name: 'Finland', number: '+358'},\n *    {id: 'se', name: 'Sweden', number: '+46'},\n *    {id: 'ee', name: 'Estonia', number: '+372'},\n *    {id: 'af', name: 'Afghanistan'},\n *    ...\n * ]\n * ```\n * @const countries\n * @type {array}\n */\nexport const countries = [\n    { id: 'fi', name: 'Finland', number: '+358' },\n    { id: 'se', name: 'Sweden', number: '+46' },\n    { id: 'ee', name: 'Estonia', number: '+372' },\n    { id: 'af', name: 'Afghanistan' },\n    { id: 'ax', name: 'Aland Islands' },\n    { id: 'al', name: 'Albania' },\n    { id: 'dz', name: 'Algeria' },\n    { id: 'as', name: 'American Samoa' },\n    { id: 'ad', name: 'Andorra' },\n    { id: 'ao', name: 'Angola' },\n    { id: 'ai', name: 'Anguilla' },\n    { id: 'aq', name: 'Antarctica' },\n    { id: 'ag', name: 'Antigua And Barbuda' },\n    { id: 'ar', name: 'Argentina' },\n    { id: 'am', name: 'Armenia' },\n    { id: 'aw', name: 'Aruba' },\n    { id: 'au', name: 'Australia' },\n    { id: 'at', name: 'Austria' },\n    { id: 'az', name: 'Azerbaijan' },\n    { id: 'bs', name: 'Bahamas' },\n    { id: 'bh', name: 'Bahrain' },\n    { id: 'bd', name: 'Bangladesh' },\n    { id: 'bb', name: 'Barbados' },\n    { id: 'by', name: 'Belarus' },\n    { id: 'be', name: 'Belgium' },\n    { id: 'bz', name: 'Belize' },\n    { id: 'bj', name: 'Benin' },\n    { id: 'bm', name: 'Bermuda' },\n    { id: 'bt', name: 'Bhutan' },\n    { id: 'bo', name: 'Bolivia, Plurinational State Of' },\n    { id: 'bq', name: 'Bonaire, Sint Eustatius And Saba' },\n    { id: 'ba', name: 'Bosnia And Herzegovina' },\n    { id: 'bw', name: 'Botswana' },\n    { id: 'bv', name: 'Bouvet Island' },\n    { id: 'br', name: 'Brazil' },\n    { id: 'io', name: 'British Indian Ocean Territory' },\n    { id: 'bn', name: 'Brunei Darussalam' },\n    { id: 'bg', name: 'Bulgaria' },\n    { id: 'bf', name: 'Burkina Faso' },\n    { id: 'bi', name: 'Burundi' },\n    { id: 'kh', name: 'Cambodia' },\n    { id: 'cm', name: 'Cameroon' },\n    { id: 'ca', name: 'Canada' },\n    { id: 'cv', name: 'Cape Verde' },\n    { id: 'ky', name: 'Cayman Islands' },\n    { id: 'cf', name: 'Central African Republic' },\n    { id: 'td', name: 'Chad' },\n    { id: 'cl', name: 'Chile' },\n    { id: 'cn', name: 'China' },\n    { id: 'cx', name: 'Christmas Island' },\n    { id: 'cc', name: 'Cocos (keeling) Islands' },\n    { id: 'co', name: 'Colombia' },\n    { id: 'km', name: 'Comoros' },\n    { id: 'cg', name: 'Congo' },\n    { id: 'cd', name: 'Congo, The Democratic Republic Of The' },\n    { id: 'ck', name: 'Cook Islands' },\n    { id: 'cr', name: 'Costa Rica' },\n    { id: 'ci', name: \"Cote D'ivoire\" },\n    { id: 'hr', name: 'Croatia' },\n    { id: 'cu', name: 'Cuba' },\n    { id: 'cw', name: 'Curacao' },\n    { id: 'cy', name: 'Cyprus' },\n    { id: 'cz', name: 'Czech Republic' },\n    { id: 'dk', name: 'Denmark' },\n    { id: 'dj', name: 'Djibouti' },\n    { id: 'dm', name: 'Dominica' },\n    { id: 'do', name: 'Dominican Republic' },\n    { id: 'ec', name: 'Ecuador' },\n    { id: 'eg', name: 'Egypt' },\n    { id: 'sv', name: 'El Salvador' },\n    { id: 'gq', name: 'Equatorial Guinea' },\n    { id: 'er', name: 'Eritrea' },\n    { id: 'et', name: 'Ethiopia' },\n    { id: 'fk', name: 'Falkland Islands (malvinas)' },\n    { id: 'fo', name: 'Faroe Islands' },\n    { id: 'fj', name: 'Fiji' },\n    { id: 'fr', name: 'France', number: '+33' },\n    { id: 'gf', name: 'French Guiana' },\n    { id: 'pf', name: 'French Polynesia' },\n    { id: 'tf', name: 'French Southern Territories' },\n    { id: 'ga', name: 'Gabon' },\n    { id: 'gm', name: 'Gambia' },\n    { id: 'ge', name: 'Georgia' },\n    { id: 'de', name: 'Germany', number: '+49' },\n    { id: 'gh', name: 'Ghana' },\n    { id: 'gi', name: 'Gibraltar' },\n    { id: 'gr', name: 'Greece' },\n    { id: 'gl', name: 'Greenland' },\n    { id: 'gd', name: 'Grenada' },\n    { id: 'gp', name: 'Guadeloupe' },\n    { id: 'gu', name: 'Guam' },\n    { id: 'gt', name: 'Guatemala' },\n    { id: 'gg', name: 'Guernsey' },\n    { id: 'gn', name: 'Guinea' },\n    { id: 'gw', name: 'Guinea-bissau' },\n    { id: 'gy', name: 'Guyana' },\n    { id: 'ht', name: 'Haiti' },\n    { id: 'hm', name: 'Heard Island And Mcdonald Islands' },\n    { id: 'va', name: 'Holy See (vatican City State)' },\n    { id: 'hn', name: 'Honduras' },\n    { id: 'hk', name: 'Hong Kong' },\n    { id: 'hu', name: 'Hungary', number: '+36' },\n    { id: 'is', name: 'Iceland' },\n    { id: 'in', name: 'India' },\n    { id: 'id', name: 'Indonesia' },\n    { id: 'ir', name: 'Iran, Islamic Republic Of' },\n    { id: 'iq', name: 'Iraq' },\n    { id: 'ie', name: 'Ireland' },\n    { id: 'im', name: 'Isle Of Man' },\n    { id: 'il', name: 'Israel' },\n    { id: 'it', name: 'Italy' },\n    { id: 'jm', name: 'Jamaica' },\n    { id: 'jp', name: 'Japan' },\n    { id: 'je', name: 'Jersey' },\n    { id: 'jo', name: 'Jordan' },\n    { id: 'kz', name: 'Kazakhstan' },\n    { id: 'ke', name: 'Kenya' },\n    { id: 'ki', name: 'Kiribati' },\n    { id: 'kp', name: \"Korea, Democratic People's Republic Of\" },\n    { id: 'kr', name: 'Korea, Republic Of' },\n    { id: 'xk', name: 'Kosovo' },\n    { id: 'kw', name: 'Kuwait' },\n    { id: 'kg', name: 'Kyrgyzstan' },\n    { id: 'la', name: \"Lao People's Democratic Republic\" },\n    { id: 'lv', name: 'Latvia', number: '+371' },\n    { id: 'lb', name: 'Lebanon' },\n    { id: 'ls', name: 'Lesotho' },\n    { id: 'lr', name: 'Liberia' },\n    { id: 'ly', name: 'Libyan Arab Jamahiriya' },\n    { id: 'li', name: 'Liechtenstein' },\n    { id: 'lt', name: 'Lithuania' },\n    { id: 'lu', name: 'Luxembourg' },\n    { id: 'mo', name: 'Macao' },\n    { id: 'mk', name: 'Macedonia, The Former Yugoslav Republic Of' },\n    { id: 'mg', name: 'Madagascar' },\n    { id: 'mw', name: 'Malawi' },\n    { id: 'my', name: 'Malaysia' },\n    { id: 'mv', name: 'Maldives' },\n    { id: 'ml', name: 'Mali' },\n    { id: 'mt', name: 'Malta' },\n    { id: 'mh', name: 'Marshall Islands' },\n    { id: 'mq', name: 'Martinique' },\n    { id: 'mr', name: 'Mauritania' },\n    { id: 'mu', name: 'Mauritius' },\n    { id: 'yt', name: 'Mayotte' },\n    { id: 'mx', name: 'Mexico' },\n    { id: 'fm', name: 'Micronesia, Federated States Of' },\n    { id: 'md', name: 'Moldova, Republic Of' },\n    { id: 'mc', name: 'Monaco' },\n    { id: 'mn', name: 'Mongolia' },\n    { id: 'me', name: 'Montenegro' },\n    { id: 'ms', name: 'Montserrat' },\n    { id: 'ma', name: 'Morocco' },\n    { id: 'mz', name: 'Mozambique' },\n    { id: 'mm', name: 'Myanmar' },\n    { id: 'na', name: 'Namibia' },\n    { id: 'nr', name: 'Nauru' },\n    { id: 'np', name: 'Nepal' },\n    { id: 'nl', name: 'Netherlands', number: '+31' },\n    { id: 'nc', name: 'New Caledonia' },\n    { id: 'nz', name: 'New Zealand' },\n    { id: 'ni', name: 'Nicaragua' },\n    { id: 'ne', name: 'Niger' },\n    { id: 'ng', name: 'Nigeria' },\n    { id: 'nu', name: 'Niue' },\n    { id: 'nf', name: 'Norfolk Island' },\n    { id: 'mp', name: 'Northern Mariana Islands' },\n    { id: 'no', name: 'Norway', number: '+47' },\n    { id: 'om', name: 'Oman' },\n    { id: 'pk', name: 'Pakistan' },\n    { id: 'pw', name: 'Palau' },\n    { id: 'ps', name: 'Palestinian Territory, Occupied' },\n    { id: 'pa', name: 'Panama' },\n    { id: 'pg', name: 'Papua New Guinea' },\n    { id: 'py', name: 'Paraguay' },\n    { id: 'pe', name: 'Peru' },\n    { id: 'ph', name: 'Philippines' },\n    { id: 'pn', name: 'Pitcairn' },\n    { id: 'pl', name: 'Poland', number: '+48' },\n    { id: 'pt', name: 'Portugal' },\n    { id: 'pr', name: 'Puerto Rico' },\n    { id: 'qa', name: 'Qatar' },\n    { id: 're', name: 'Reunion' },\n    { id: 'ro', name: 'Romania' },\n    { id: 'ru', name: 'Russian Federation' },\n    { id: 'rw', name: 'Rwanda' },\n    { id: 'bl', name: 'Saint Barthelemy' },\n    { id: 'sh', name: 'Saint Helena, Ascension And Tristan Da Cunha' },\n    { id: 'kn', name: 'Saint Kitts And Nevis' },\n    { id: 'lc', name: 'Saint Lucia' },\n    { id: 'mf', name: 'Saint Martin (french Part)' },\n    { id: 'pm', name: 'Saint Pierre And Miquelon' },\n    { id: 'vc', name: 'Saint Vincent And The Grenadines' },\n    { id: 'ws', name: 'Samoa' },\n    { id: 'sm', name: 'San Marino' },\n    { id: 'st', name: 'Sao Tome And Principe' },\n    { id: 'sa', name: 'Saudi Arabia' },\n    { id: 'sn', name: 'Senegal' },\n    { id: 'rs', name: 'Serbia' },\n    { id: 'sc', name: 'Seychelles' },\n    { id: 'sl', name: 'Sierra Leone' },\n    { id: 'sg', name: 'Singapore' },\n    { id: 'sx', name: 'Sint Maarten (dutch Part)' },\n    { id: 'sk', name: 'Slovakia' },\n    { id: 'si', name: 'Slovenia' },\n    { id: 'sb', name: 'Solomon Islands' },\n    { id: 'so', name: 'Somalia' },\n    { id: 'za', name: 'South Africa' },\n    { id: 'gs', name: 'South Georgia And The South Sandwich Islands' },\n    { id: 'es', name: 'Spain', number: '+34' },\n    { id: 'lk', name: 'Sri Lanka' },\n    { id: 'sd', name: 'Sudan' },\n    { id: 'sr', name: 'Suriname' },\n    { id: 'sj', name: 'Svalbard And Jan Mayen' },\n    { id: 'sz', name: 'Swaziland' },\n    { id: 'ch', name: 'Switzerland' },\n    { id: 'sy', name: 'Syrian Arab Republic' },\n    { id: 'tw', name: 'Taiwan, Province Of China' },\n    { id: 'tj', name: 'Tajikistan' },\n    { id: 'tz', name: 'Tanzania, United Republic Of' },\n    { id: 'th', name: 'Thailand' },\n    { id: 'tl', name: 'Timor-leste' },\n    { id: 'tg', name: 'Togo' },\n    { id: 'tk', name: 'Tokelau' },\n    { id: 'to', name: 'Tonga' },\n    { id: 'tt', name: 'Trin{idad And Tobago' },\n    { id: 'tn', name: 'Tunisia' },\n    { id: 'tr', name: 'Turkey' },\n    { id: 'tm', name: 'Turkmenistan' },\n    { id: 'tc', name: 'Turks And Caicos Islands' },\n    { id: 'tv', name: 'Tuvalu' },\n    { id: 'ug', name: 'Uganda' },\n    { id: 'ua', name: 'Ukraine' },\n    { id: 'ae', name: 'United Arab Emirates' },\n    { id: 'gb', name: 'United Kingdom', number: '+44' },\n    { id: 'us', name: 'United States' },\n    { id: 'um', name: 'United States Minor Outlying Islands' },\n    { id: 'uy', name: 'Uruguay' },\n    { id: 'uz', name: 'Uzbekistan' },\n    { id: 'vu', name: 'Vanuatu' },\n    { id: 'va', name: 'Vatican City State' },\n    { id: 've', name: 'Venezuela, Bolivarian Republic Of' },\n    { id: 'vn', name: 'Viet Nam' },\n    { id: 'vg', name: 'Virgin Islands, British' },\n    { id: 'vi', name: 'Virgin Islands, U.s.' },\n    { id: 'wf', name: 'Wallis And Futuna' },\n    { id: 'eh', name: 'Western Sahara' },\n    { id: 'ye', name: 'Yemen' },\n    { id: 'zm', name: 'Zambia' },\n    { id: 'zw', name: 'Zimbabwe' },\n];\n\n/**\n * array: ['se', 'fi', 'pl', 'ee', 'lv', 'lt', 'no', 'dk', 'cz']\n * @const shortNordic\n * @type {array}\n */\nexport const shortNordic = ['se', 'fi', 'pl', 'ee', 'lv', 'lt', 'no', 'dk', 'cz'];\n\n/**\n * Filtered countries array based on the shortNordic array\n * @const shortList\n * @type {array}\n */\nexport const shortList = countries.filter((country: ICountry) => {\n    return shortNordic.includes(country.id);\n});\n\n/**\n * Filtered countries array with only the countries that have a phone number property\n * @const phoneList\n * @type {array}\n */\nexport const phoneList = countries.filter((country: ICountry) => {\n    return country.hasOwnProperty('number');\n});\n\n// list all exports here\nexport default { countries, shortNordic, shortList, phoneList };\n","import { Promise as EmberPromise } from 'rsvp';\n\n/**\n * Provides functions and properties to deal with files\n *\n * @module file\n */\n\nconst downscaleFactor = 0.6; // default amount to shrink image by.. only if width param is not given\n\n/**\n * A list of supported image types that are accepted for uploading\n * @const imageTypes\n * @type {Array}\n */\nexport const imageTypes = [\n    'image/gif',\n    'image/png',\n    'image/jpg',\n    'image/jpeg',\n    'image/gif',\n    'image/svg',\n    'image/bmp',\n];\n/* istanbul ignore next */\nexport function makeFileUrl(url: string, str: string) {\n    if (str.startsWith('http')) return str;\n    else return url + str;\n}\n\n/**\n * Returns a Blob from the given URL\n * @function getImageFromUrl\n * @param {String} url url to fetch file from\n * @param {Boolean} resize whether to resize received image or not\n * @return {Promise} {name: 'file', 'file': dataUrl}\n */\n/* istanbul ignore next */\nexport function getImageFromUrl(url: string, responseType: string = 'blob') {\n    if (!url)\n        throw new Error(\n            'Fetching image from url failed because it did not receive the url parameter',\n        );\n    return new EmberPromise((resolve, reject) => {\n        const xhr = new XMLHttpRequest();\n        xhr.open('GET', url, true);\n\n        xhr.responseType = responseType as XMLHttpRequestResponseType;\n\n        xhr.onload = async () => {\n            const blob = xhr.response;\n            blob.lastModifiedDate = new Date();\n            blob.name = 'file';\n\n            if (!imageTypes.includes(blob.type)) {\n                throw new Error(\n                    'Image of type ' + blob.type + ' received from ' + url + ' is not allowed',\n                );\n            }\n\n            resolve(blob);\n        };\n\n        xhr.onerror = (error) => {\n            reject(error);\n        };\n\n        xhr.send();\n    });\n}\n\n/**\n * Returns a resized dataUrl from the given File OR Blob OR DataURL\n * @function resizeImage\n * @param {File, Blob, String} file Original file as File, Blob or DataURL(base64).\n * @param {Number} width Target image width\n * @param {Number} height Target image height\n * @param {Number} quality Image compression as % 0-100 or decimal 0.0 - 1.0 default 50 (0.5)\n * @param {Boolean} keepAspectRatio Maintain image's aspect ratio on resize - default True\n * @return {Promise} resized Base64 DataUrl of the given file\n */\n/* istanbul ignore next */\nexport function resizeImage(\n    file: File | Blob,\n    width: number | null = null,\n    height: number | null = null,\n    quality: number = 80,\n    keepAspectRatio: boolean = true,\n) {\n    /*tslint:disable-line*/\n    return new EmberPromise((resolve, reject) => {\n        // if(!width) throw new Error('Image resize failed because it did not receive the width parameter')\n        if (!keepAspectRatio && !height)\n            throw new Error(\n                'Image resize failed because it wanted to change the aspect ratio, but it did not receive the height parameter',\n            );\n\n        const mime = file.type || 'image/jpeg';\n\n        // we want quality to be decimal (like 0.5 for 50%)\n        if (quality % 1 === 0) quality = Number((quality / 100).toFixed(2));\n\n        const reader = new FileReader();\n\n        if (typeof file === 'string') {\n            file = dataURLtoBlob(file);\n        }\n\n        reader.readAsDataURL(file);\n\n        reader.onloadend = () => {\n            const img = new Image() as any;\n            img.src = reader.result;\n            img.onload = () => {\n                const canvas = document.createElement('canvas');\n                let finalQuality = quality;\n                let finalDownscaleFactor = downscaleFactor;\n\n                // If image is smaller than 1600px in any dimension, we do not downscale it\n                if (img?.width < 1600 || img?.height < 1600) {\n                    finalQuality = 100;\n                    finalDownscaleFactor = 1;\n                }\n\n                // if we do not have a target width just downscale image by some amount\n                if (!width) width = img.width * finalDownscaleFactor;\n                // we calculate scaleFactor from image width to maintain aspect ratio\n                const scaleFactor = width / img.width;\n\n                if (keepAspectRatio) height = img.height * scaleFactor;\n\n                canvas.width = width;\n                canvas.height = Number(height);\n                const ctx = canvas.getContext('2d');\n\n                ctx?.drawImage(img, 0, 0, width, Number(height));\n                // resolve canvas as dataURL\n                resolve(canvas.toDataURL(mime, finalQuality));\n            };\n        };\n\n        reader.onerror = (err: any) => {\n            reject(err);\n        };\n    });\n}\n\n/**\n * Transforms a base64 encoded string to a Blob\n * @function dataURLtoBlob\n * @param {String} dataurl Base64\n * @param {String} filename Your desired filename (default = 'file')\n * @return {Blob}\n */\n/* istanbul ignore next */\nexport function dataURLtoBlob(dataurl: string, filename = 'file') {\n    const arr = dataurl.split(',');\n    if (!arr) return null;\n    const mime = arr[0].match(/:(.*?);/)![1];\n    const bstr = atob(arr[1]);\n    let n = bstr.length;\n    const u8arr = new Uint8Array(n);\n\n    while (n--) {\n        u8arr[n] = bstr.charCodeAt(n);\n    }\n    const blob = new Blob([u8arr], { type: mime }) as any;\n    blob.name = filename;\n    blob.lastModifiedDate = new Date();\n    return blob;\n}\n\nexport function blackListFiles() {\n    return [\n        '.apk',\n        '.sk',\n        '.ahk',\n        '.jar',\n        '.run',\n        '.ipa',\n        '.cmd',\n        '.0xe',\n        '.exe',\n        '.xbe',\n        '.bin',\n        '.workflow',\n        '.bin',\n        '.8ck',\n        '.elf',\n        '.bat',\n        '.xap',\n        '.air',\n        '.appimage',\n        '.scr',\n        '.app',\n        '.ac',\n        '.gadget',\n        '.widget',\n        '.u3p',\n        '.bms',\n        '.com',\n        '.out',\n        '.pif',\n        '.xlm',\n        '.gpe',\n        '.73k',\n        '.cgi',\n        '.ex_',\n        '.script',\n        '.rxe',\n        '.scb',\n        '.scar',\n        '.xex',\n        '.paf.exe',\n        '.command',\n        '.epk',\n        '.tcp',\n        '.action',\n        '.coffee',\n        '.acc',\n        '.ebs2',\n        '.celx',\n        '.hta',\n        '.rfu',\n        '.fxp',\n        '.isu',\n        '.ecf',\n        '.ps1',\n        '.89k',\n        '.xbap',\n        '.rbf',\n        '.plsc',\n        '.caction',\n        '.fas',\n        '.actc',\n        '.icd',\n        '.vxp',\n        '.dld',\n        '.cof',\n        '.mlx',\n        '.x86_64',\n        '.m3g',\n        '.phar',\n        '.vpm',\n        '.acr',\n        '.a6p',\n        '.jsx',\n        '.wsh',\n        '.vbs',\n        '.ex_',\n        '.mcr',\n        '.ws',\n        '.zl9',\n        '.js',\n        '.dek',\n        '.server',\n        '.rpj',\n        '.x86',\n        '.ba_',\n        '.a7r',\n        '.pex',\n        '.ex4',\n        '.iim',\n        '.ear',\n        '.jsf',\n        '.plx',\n        '.pyc',\n        '.pwc',\n        '.vlx',\n        '.nexe',\n        '.wcm',\n        '.mel',\n        '.ms',\n        '.mm',\n        '.exe1',\n        '.snap',\n        '.applescript',\n        '.exe',\n        '.ex5',\n        '.paf',\n        '.mcr',\n        '.ebm',\n        '.vbscript',\n        '.prg',\n        '.rgs',\n        '.frs',\n        '.scpt',\n        '.hms',\n        '.e_e',\n        '.otm',\n        '.shb',\n        '.uvm',\n        '.atmx',\n        '.sct',\n        '.mrc',\n        '.spr',\n        '.widget',\n        '.csh',\n        '.wiz',\n        '.fpi',\n        '.cyw',\n        '.ebs',\n        '.mxe',\n        '.pyo',\n        '.mrp',\n        '.gs',\n        '.osx',\n        '.fas',\n        '.azw2',\n        '.prg',\n        '.fky',\n        '.xqt',\n        '.actm',\n        '.kix',\n        '.app',\n        '.arscript',\n        '.kx',\n        '.vexe',\n        '.tms',\n        '.rox',\n        '.cel',\n        '.seed',\n        '.n',\n        '.vbe',\n        '.tiapp',\n        '.ezs',\n        '.thm',\n        '.beam',\n        '.udf',\n        '.rfs',\n        '.ls',\n        '.prc',\n        '.xys',\n        '.s2a',\n        '.mac',\n        '.sca',\n        '.esh',\n        '.wpm',\n        '.wpk',\n        '.dmc',\n        '.msl',\n        '.scptd',\n        '.shortcut',\n        '.mhm',\n        '.cheat',\n        '.ms',\n        '.wsf',\n        '.jse',\n        '.qit',\n        '.lo',\n        '.es',\n        '.rbx',\n        '.ds',\n        '.eham',\n        '.mem',\n        '.ebacmd',\n        '.mam',\n        '.upx',\n        '.dxl',\n        '.ksh',\n        '.ham',\n        '.btm',\n        '.vdo',\n        '.sapk',\n        '.mio',\n        '.ipf',\n        '.gpu',\n        '.ygh',\n        '.exopc',\n        '.sbs',\n        '.ita',\n        '.hpf',\n        '.asb',\n        '.gm9',\n        '.mcr',\n        '.mamc',\n        '.prg',\n        '.sts',\n        '.qpx',\n        '.ezt',\n        '.smm',\n        '.ore',\n        '.ncl',\n        '.pvd',\n        '.svg',\n    ];\n}\n\nexport default {\n    imageTypes,\n    makeFileUrl,\n    getImageFromUrl,\n    resizeImage,\n    dataURLtoBlob,\n    blackListFiles,\n};\n","declare const window: any;\ndeclare const device: any;\n\n/**\n * Provides functions and properties to deal with the gui\n *\n * @module gui\n */\n\nexport function isMobile(width = 760) {\n    return window.matchMedia('only screen and (max-width: ' + width + 'px)').matches;\n}\n\n/**\n * Is the user's browser Internet Explorer?\n * @const isIE\n * @type {Boolean}\n */\nexport const isIE = (() => {\n    const ua = window.navigator.userAgent;\n    const msie = ua.indexOf('MSIE ');\n    if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\\:11\\./)) return true;\n    return false;\n})();\n\n/**\n * Is the device an Android phone?\n * @const isAndroid\n * @type {Boolean}\n */\nexport const isAndroid = (() => {\n    return window.cordova && device.platform === 'Android';\n})();\n\n/**\n * Returns the modal url from a url\n * @function modalUrl\n * @param {String} url\n * @return {String}\n */\nexport const modalUrl = (url: string) => {\n    const base = window.location.href;\n    const split = base.split('?');\n\n    if (split[1]! && split[1].substr(0, 6) === 'modal=') delete split[1];\n\n    url = encodeURIComponent(url);\n\n    url = url.replace('%3D', '=');\n\n    if (url.startsWith('http')) return url;\n\n    return split[0] + '?' + (split[1] != null ? split[1] + '&' + url : url);\n};\n// list all exports here\nexport default { isMobile, isIE, isAndroid, modalUrl };\n","/**\n * Provides functions and properties to export pdf\n *\n * @module pdf-export\n */\n\ndeclare const window: any;\ninterface IExportParams {\n    addSumRow: boolean;\n    dateAndPlace: boolean;\n    extraParams: object;\n    imgLocation: string;\n    orientation: string;\n    signature: boolean;\n    statusInfo: boolean;\n    template: IRecord;\n    type: string;\n}\n\n// import { createPdf } from 'pdfmake/pdfmake';\nimport moment from 'moment';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport { assert } from '@ember/debug';\nimport { getAssetFolder, getScriptsInOrder } from 'tt4/utils/getScript';\n\n/**\n * Creates pdf from elements (note: call this function preferably through export service)\n * @function createPdfFromElements\n * @param {any} this\n * @param {any} elements\n * @param {String} mode\n * @param {String} headers\n * @param {Number} headerSize\n * @param {IExportParams} exportParams\n */\n/* istanbul ignore next */\nexport async function createPdfFromElements(\n    self: any,\n    elements: any,\n    mode = 'download',\n    headers = '',\n    headerSize = 8,\n    exportParams: IExportParams,\n) {\n    if (!self.Collector) assert('Collector service injection missing');\n    if (!self.session) assert('Session service injection missing');\n    if (!self.intl) assert('Intl service injection missing');\n    if (!self.cordova) assert('Cordova service injection missing');\n    let assetsfolder = getAssetFolder('assets');\n    await getScriptsInOrder([\n        assetsfolder + 'pdfmake_v0.1.68.min.js',\n        assetsfolder + 'vfs_fonts_v0.1.68.min.js',\n    ]);\n\n    const pdfContent = [];\n    let orientation = exportParams.orientation ? exportParams.orientation : 'portrait';\n    const additionalHeaders = await getHeaders(headers, headerSize, self.Collector, self.session);\n    pdfContent.push(additionalHeaders);\n\n    elements = putElementsInColumns(elements, self, exportParams.template, exportParams.statusInfo);\n    for (const element of elements) {\n        if (!element) return;\n        if (element.table && !exportParams.orientation) {\n            if (element.table.body[0].length > 7) {\n                orientation = 'landscape';\n            }\n        }\n        pdfContent.push(element);\n    }\n\n    let pageSize: any = 'A4';\n\n    if (exportParams.signature) {\n        pdfContent.push({\n            style: 'marginTop',\n            table: {\n                widths: ['auto', 140, 30, 'auto', 140],\n                body: [\n                    [\n                        {\n                            border: [false, true, false, false],\n                            text: self.intl.t('report.worktask.signature') + ':',\n                        },\n                        {\n                            border: [false, true, false, false],\n                            text: '',\n                        },\n                        {\n                            border: [false, false, false, false],\n                            text: '',\n                        },\n                        {\n                            border: [false, true, false, false],\n                            text: self.intl.t('thereport.print_name') + ':',\n                        },\n                        {\n                            border: [false, true, false, false],\n                            text: '',\n                        },\n                    ],\n                ],\n            },\n        });\n    }\n    if (exportParams.dateAndPlace) {\n        pdfContent.push({\n            style: 'marginTop',\n            table: {\n                widths: ['auto', 140, 55, 'auto', 140],\n                body: [\n                    [\n                        {\n                            border: [false, true, false, false],\n                            text: self.intl.t('thereport.date') + ':',\n                        },\n                        {\n                            border: [false, true, false, false],\n                            text: '',\n                        },\n                        {\n                            border: [false, false, false, false],\n                            text: '',\n                        },\n                        {\n                            border: [false, true, false, false],\n                            text: self.intl.t('thereport.place') + ':',\n                        },\n                        {\n                            border: [false, true, false, false],\n                            text: '',\n                        },\n                    ],\n                ],\n            },\n        });\n    }\n    const tableData =\n        elements[0].table && elements[0].style === 'table' ? elements[0].table : elements[1].table;\n    if (tableData && exportParams.imgLocation && exportParams.imgLocation === 'afterReport') {\n        pdfContent.push(tryToExtractImages(tableData.body, orientation));\n    }\n\n    const docDefinition: any = {\n        content: pdfContent,\n        pageOrientation: orientation,\n        footer(currentPage: any, pageCount: any) {\n            return getFooter(currentPage, pageCount);\n        },\n        pageMargins: [15, 15, 15, 15],\n        styles: {\n            tableHeader: { bold: true },\n            bigText: { bold: true, fontSize: 20 },\n            table: { fontSize: 10 },\n            footer: { fontSize: 8, color: 'grey' },\n            headertext: { fontSize: 8 },\n            marginTop: { margin: [0, 40, 0, 0] },\n        },\n    };\n    // @ts-ignore\n    const pdfDocGenerator = createPdf(docDefinition);\n    pdfDocGenerator.getStream();\n    for (const item of pdfContent) {\n        if (item.style === 'table' && item._maxWidth > 842 && orientation !== 'portrait') {\n            pageSize = { height: item._maxWidth, width: item._maxWidth / Math.sqrt(2) };\n            continue;\n        }\n    }\n    docDefinition.pageSize = pageSize;\n    if (mode === 'download') {\n        if (window.cordova) {\n            return new Promise((resolve) => {\n                pdfDocGenerator.getBuffer(async (buffer: any) => {\n                    const utf8 = new Uint8Array(buffer);\n                    const binaryArray = utf8.buffer;\n                    const s = await self.cordova.saveFile(binaryArray, 'export', 'pdf');\n                    resolve(s);\n                });\n            });\n        } else {\n            return pdfDocGenerator.download('export.pdf');\n        }\n    } else if (mode === 'base64') {\n        return new Promise((resolve, reject) => {\n            pdfDocGenerator.getBase64((file: string) => {\n                if (file) resolve(file);\n                else reject();\n            });\n        });\n    }\n}\n/* istanbul ignore next */\nfunction putElementsInColumns(elements: any, self: any, template: any, statusInfo: any) {\n    const ret: any[] = [];\n    let row: any[] = [];\n    const cell: any[] = [];\n    const widths: any[] = [];\n    let fillingColumn = null;\n    let cols = self.columns;\n    // If template is selected, use only those columns when determining widths\n    if (template) {\n        const templateCols = template.columns.split(',');\n        cols = cols.filter((col: any) => templateCols.includes(col.name));\n    }\n\n    for (const column of cols) {\n        if (['textbox', 'textarea', 'textarea_varchar'].includes(column.type)) widths.push(80);\n        else widths.push('auto');\n        // add width also for the status last edited column\n        // why: it is not report column, so it is not included in the columns list\n        if (column.external_type === 'status' && statusInfo) widths.push(80);\n    }\n\n    for (const element of elements) {\n        if (!element.column) {\n            row = [];\n            if (element.style === 'table') element.table.widths = widths;\n            ret.push(element);\n        } else {\n            if (!element.width) element.width = '*';\n            cell.push(element);\n            fillingColumn = element.column;\n        }\n    }\n    if (fillingColumn) {\n        row.push(cell);\n        ret.push({ columns: row });\n    }\n\n    return ret;\n}\n/* istanbul ignore next */\nasync function getHeaders(\n    additionalheaders: string,\n    headerSize: number,\n    collector: any,\n    session: any,\n) {\n    const logo = await collector.getLogo();\n    const company = session.currentUser.company;\n\n    return {\n        columns: [\n            [\n                {\n                    fit: [120, 40],\n                    image: logo,\n                    margin: [0, 0, 0, 20],\n                },\n                {\n                    text: additionalheaders,\n                    style: 'headertext',\n                    fontSize: headerSize,\n                },\n            ],\n\n            {\n                width: '*',\n                text: company || '',\n                alignment: 'right',\n                fontSize: 22,\n                margin: [0, 0, 0, 20],\n            },\n        ],\n    };\n}\n/* istanbul ignore next */\nfunction tryToExtractImages(data: any, orientation: string) {\n    const maxHeight = orientation === 'landscape' ? 570 : 830;\n    const maxWidth = orientation === 'landscape' ? 830 : 570;\n\n    const allImages = [];\n    for (const element of data) {\n        for (const el of element) {\n            if (el.firstObject?.image) {\n                for (const fileObject of el)\n                    allImages.push({ image: fileObject.image, maxHeight, maxWidth });\n            }\n        }\n    }\n    return allImages;\n}\n/* istanbul ignore next */\nfunction getFooter(currentPage: number, pageCount: number) {\n    return {\n        columns: [\n            { text: 'movenium.com', style: 'footer', margin: [20, 2, 0, 0] },\n            {\n                text: moment().format('L') + '  ' + currentPage.toString() + '/' + pageCount,\n                style: 'footer',\n                margin: [0, 2, 20, 0],\n                alignment: 'right',\n            },\n        ],\n    };\n}\n","// noinspection TypeScriptValidateTypes\n\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport { getOwner } from '@ember/application';\nimport EmberObject, { get, set } from '@ember/object';\nimport { intersect } from '@ember/object/computed';\nimport { IField, IOptions } from 'tt4/ember-movenium/interfaces/forms';\n\nexport function save_record(record: IRecord, owner: any) {\n    if (!owner) throw new Error('Call this with save_record(record, this)');\n    const formsService = getOwner(owner).lookup('service:forms');\n    const form = owner.form ? owner.form : owner.args.form;\n    return new Promise<void>(async (resolve, reject) => {\n        const fields = formsService.fields(form);\n        const children: any[] = [];\n\n        for (const field in fields) {\n            if (field) {\n                const currentField = get(fields, field) as IField;\n\n                const hasChildFieldTypes = ['databasearray', 'work_permit_attachment'];\n\n                if (hasChildFieldTypes.includes(get(currentField, 'type')) && field !== 'involved') {\n                    const obj = EmberObject.extend({\n                        fieldsInCommon: intersect('parentFields', 'childFields'),\n                    }).create({\n                        parentFields: Object.keys(fields),\n                        childFields: Object.keys(\n                            formsService.fields((currentField.options as IOptions).form),\n                        ),\n                    });\n\n                    if (get(record, field) as IField) {\n                        get(record, field).forEach((child: any) => {\n                            if (child.isDeleted) return;\n                            get(obj, 'fieldsInCommon').forEach((commonField) => {\n                                if (get(record, commonField))\n                                    set(child, commonField, get(record, commonField));\n                            });\n                            children.push(child);\n                        });\n                    }\n                }\n            }\n        }\n\n        saveRecordsInIsDeletedState(fields, owner);\n\n        if (children.length > 0) {\n            await record.validate();\n\n            try {\n                if (get(record, 'isValid')) {\n                    // We have to save the child rows before the parent row, so run checkRowValidation\n                    // to validate the parent row against e.g. overlapping work times. If the check fails,\n                    // execution will stop before child rows are added. Without this check, the child rows will\n                    // get added before it's certain the parent row can be saved, which can lead to child rows with no parent.\n                    const collectorService = getOwner(owner).lookup('service:collector-service');\n                    await collectorService.checkRowValidation(record._internalModel.modelName, record, !record.get('isNew'));\n\n                    for (const child of children) {\n                        await child.validate();\n                        if (!get(child, 'isValid')) {\n                            const errors = await child.errors;\n                            if (errors && errors.firstObject)\n                                throw new Error(\n                                    errors.firstObject.message +\n                                        ' (' +\n                                        errors.firstObject.attribute +\n                                        ')',\n                                );\n                            else await child.save(); // just try to save so it goes to catch if no record errors\n                        } else continue;\n                    }\n                    const promises = children.map((child) => {\n                        return child.save();\n                    });\n                    await Promise.all(promises);\n                    await record.save();\n                    resolve();\n                } else {\n                    resolve();\n                }\n            } catch (e) {\n                reject(e);\n            }\n        } else {\n            try {\n                await record.validate();\n                if (get(record, 'isValid')) await record.save();\n                resolve();\n            } catch (e) {\n                reject(e);\n            }\n        }\n    });\n}\n\n/**\n * this method saves all records that are isDeleted and not saved ... the idea is that when ie. material is deleted from worktime\n * it is not destroyed but instead just deleted and removed from worktime.material array .. so when worktime is saved the removed record stays in\n * isDeleted state but is never really destroyed so this method looks for hanging deleted records and saves them.\n * @param fields\n * @param owner\n */\nconst saveRecordsInIsDeletedState = (fields: any, owner: any): void => {\n    const store = getOwner(owner).lookup('service:store');\n    for (const field in fields) {\n        if (field) {\n            const currentField = get(fields, field) as IField;\n            const type = get(currentField, 'type');\n            if ((type === 'databasearray' || type === 'work_permit_attachment') && field !== 'involved') {\n                const options = currentField.options as IOptions;\n                if (!options) return;\n                const form = options.form;\n\n                const deletedRecords = store\n                    .peekAll(form)\n                    .filter((item: IRecord) => item.isDeleted);\n                deletedRecords.forEach((record: IRecord) => record.save());\n            }\n        }\n    }\n};\n\nexport default { save_record };\n","import { typeOf } from '@ember/utils';\n\n/**\n * Sorts options based on given value (options can be array of objects or record)\n * @function sortBy\n * @param {String} sort\n * @param {any} options\n * @param {Array} subformFields\n */\n\nexport function sortBy(sort: string, options: any, subformFields: any = []) {\n    options = typeOf(options) !== 'array' ? options.toArray() : options;\n\n    if (sort !== 'all') {\n        options.sort((a: { [x: string]: any }, b: { [x: string]: any }) =>\n            ('' + a[sort]).localeCompare(b[sort]),\n        );\n    } else {\n        options.sort((a: { [x: string]: any }, b: { [x: string]: any }) => {\n            if (a[subformFields[0]] > b[subformFields[0]]) return 1;\n            if (a[subformFields[0]] < b[subformFields[0]]) return -1;\n\n            if (subformFields[1]) {\n                if (a[subformFields[1]] > b[subformFields[1]]) return 1;\n                if (a[subformFields[1]] < b[subformFields[1]]) return -1;\n            }\n            if (subformFields[2]) {\n                if (a[subformFields[2]] > b[subformFields[2]]) return 1;\n                if (a[subformFields[2]] < b[subformFields[2]]) return -1;\n            }\n            return 0;\n        });\n    }\n\n    return options;\n}\nexport default { sortBy };\n","import { typeOf } from '@ember/utils';\n\nexport function getSums(\n    data: any,\n    columns: any,\n    form: string,\n    collector: any,\n    forms: any,\n    pdfSumrow = false,\n) {\n    const summableFieldTypes = [\n        'date',\n        'hours',\n        'number',\n        'checkbox',\n        'decimal',\n        'price',\n        'big_price',\n        'minutes',\n        'dropdown_values',\n    ];\n    const summableFields = forms\n        .fieldArray(form)\n        .filter((field: { type: string }) => summableFieldTypes.includes(field.type));\n    if (!summableFields) return;\n\n    const sums: any = {};\n\n    data.forEach((item: { [x: string]: any }) => {\n        summableFields.forEach((field: { name: string; type: string }) => {\n            if (!item) return;\n            const cell = item[field.name];\n            switch (field.type) {\n                case 'checkbox':\n                    if (!sums[field.name]) sums[field.name] = [0, 0];\n                    cell ? sums[field.name][0]++ : sums[field.name][1]++;\n                    break;\n                case 'dropdown_values':\n                    if (!sums[field.name]) sums[field.name] = [];\n                    if (cell) sums[field.name].push(cell);\n                    break;\n                case 'date':\n                    if (typeOf(cell) === 'string' && cell.substring(0, 6) === 'count:') {\n                        sums[field.name] += parseInt(cell.substring(6), 10);\n                    } else {\n                        sums[field.name] = '';\n                        return;\n                    }\n                    break;\n                default:\n                    if (!sums[field.name]) sums[field.name] = 0;\n                    // format cell to number\n                    sums[field.name] += Number(cell);\n            }\n        });\n    });\n\n    const sumRow: any = {};\n\n    columns.forEach((column: { external_type: string; type: string }) => {\n        if (column.external_type === 'row_info.created') return;\n        if (column.external_type === 'row_info.modified') return;\n        const field = column.external_type;\n\n        const dropdownSums: any = [];\n        if (sums[field]) {\n            if (column.type === 'checkbox') {\n                sumRow[field] =\n                    collector.format(true, column, null, data) +\n                    ': ' +\n                    sums[field][0] +\n                    ' / ' +\n                    collector.format(false, column, null, data) +\n                    ': ' +\n                    sums[field][1];\n            } else if (\n                column.type === 'number' &&\n                !isNaN(sums[field]) &&\n                !Number.isInteger(sums[field])\n            ) {\n                const parsedSum = parseFloat(sums[field]);\n                const sumToFixed = parsedSum.toFixed(2);\n                sumRow[field] = collector.format(sumToFixed, column, null, data);\n            } else if (column.type === 'dropdown_values') {\n                sums[field].forEach((opt: string) => {\n                    dropdownSums[opt] = (dropdownSums[opt] || 0) + 1;\n                });\n                sumRow[field] = collector.format(dropdownSums, column, null, data, pdfSumrow, form);\n            } else {\n                sumRow[field] = collector.format(sums[field], column, null, data, pdfSumrow);\n            }\n        } else {\n            sumRow[field] = '';\n        }\n    });\n\n    return [sumRow];\n}\n","import { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport { IOptions } from 'tt4/ember-movenium/interfaces/forms';\nimport { isEmpty } from '@ember/utils';\nimport { get } from '@ember/object';\n\nexport function validateEmail(email: string): boolean {\n    const regExp =\n        /^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i;\n    return regExp.test(email);\n}\n\nexport function isVisible(record: IRecord, options: IOptions | [{}]) {\n    if (typeof options !== 'object') return true;\n    if (!record) return true;\n\n    let visible = false;\n    options.forEach((option: any) => {\n        Object.keys(option).forEach((key) => {\n            const listString = option[key].toString();\n            const value = get(record, key);\n            visible = valueIsInList(value, listString);\n        });\n    });\n\n    return visible;\n}\n\nfunction valueIsInList(value: any, listString: string) {\n    if (listString === 'true') {\n        if (value === 'true' || value === true) return true;\n        else return false;\n    }\n    if (listString === 'false') {\n        if (value === 'true' || value === true) return false;\n        return true;\n    }\n\n    let negation = false;\n    if (listString.substring(0, 1) === '!') {\n        listString = listString.substring(1);\n        negation = true;\n    }\n\n    const list = listString.split(',');\n    if (value) value = value.toString();\n    let found = list.includes(value);\n\n    if (list.includes('(empty)')) {\n        found = isEmpty(value);\n    }\n\n    return negation ? !found : found;\n}\nexport default { validateEmail, isVisible };\n","import moment from 'moment';\nimport config from 'tt4/config/environment';\n// import fetch from 'fetch'\n\nexport async function fetchWeather(lat: string, lon: string, date?: string): Promise<any> {\n    if (!date) date = moment().format('YYYYMMDD');\n\n    let url: any = config.APP.WEATHER_HISTORY_API;\n\n    if (date === moment().format('YYYYMMDD')) {\n        url = config.APP.WEATHER_API;\n    }\n\n    url = url + '?lat=' + lat + '&lon=' + lon + '&date=' + date + '&hours=12';\n\n    const req = await window.fetch(url);\n    const response = (await req.json()) as any;\n\n    const dewPoint = response.temperature - (100 - response.humidity) / 5;\n    response.dew_point = Math.round(dewPoint * 100) / 100;\n\n    return response;\n}\n\nexport default { fetchWeather };\n","import { merge, assign as _assign } from '@ember/polyfills';\n\n\nimport EventDispatcher from 'ember-gestures/event_dispatcher';\nimport config from './config/environment';\n\nconst assign = _assign || merge;\n\nlet gestures = assign({}, {\n    emberUseCapture: false,\n    removeTracking: false,\n    useFastPaths: false\n  });\ngestures = assign(gestures, config.gestures);\n\nexport default EventDispatcher.extend({\n  useCapture: gestures.emberUseCapture,\n  removeTracking: gestures.removeTracking,\n  useFastPaths: gestures.useFastPaths\n});\n","export default {\n    time: {\n        hhmmss: {\n            hour: 'numeric',\n            minute: 'numeric',\n            second: 'numeric',\n        },\n    },\n    date: {\n        hhmmss: {\n            hour: 'numeric',\n            minute: 'numeric',\n            second: 'numeric',\n        },\n    },\n    number: {\n        EUR: {\n            style: 'currency',\n            currency: 'EUR',\n            minimumFractionDigits: 2,\n            maximumFractionDigits: 2,\n        },\n        USD: {\n            style: 'currency',\n            currency: 'USD',\n            minimumFractionDigits: 2,\n            maximumFractionDigits: 2,\n        },\n    },\n};\n","import { helper } from '@ember/component/helper';\n\nexport function gt(params /*, hash*/) {\n    return params[0] > params[1];\n}\n\nexport default helper(gt);\n","import { helper } from '@ember/component/helper';\n\n// This function receives the params `params, hash`\nexport function or(params /*, hash*/) {\n    return params.filter((item) => item).length > 0;\n}\n\nexport default helper(or);\n","define(\"tt4/helpers/-clear-element\", [\"exports\", \"ember-in-element-polyfill/helpers/-clear-element\"], function (_exports, _clearElement) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _clearElement.default;\n    }\n  });\n});\n","define(\"tt4/helpers/-element\", [\"exports\", \"ember-element-helper/helpers/-element\"], function (_exports, _element) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _element.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\nexport function add(params /*, hash*/) {\n    return params.reduce((a, b) => a + b);\n}\n\nexport default helper(add);\n","define(\"tt4/helpers/and\", [\"exports\", \"ember-truth-helpers/helpers/and\"], function (_exports, _and) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"and\", {\n    enumerable: true,\n    get: function get() {\n      return _and.and;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _and.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\nimport { htmlSafe } from '@ember/string';\nimport config from 'tt4/config/environment';\n\n// This function receives the params `params, hash`\nexport function apiImage(params) {\n    if (params[0] != null) {\n        if (params[0].substring(0, 4) === 'http') {\n            return params[0];\n        }\n\n        return htmlSafe(config.APP.COLLECTOR_API_URL + '/' + params[0]);\n    }\n}\n\nexport default helper(apiImage);\n","import { helper } from '@ember/component/helper';\nimport config from '../config/environment';\nimport { shaRegExp, versionRegExp, versionExtendedRegExp } from 'ember-cli-app-version/utils/regexp';\n\nexport function appVersion(_, hash = {}) {\n  const version = config.APP.version;\n  // e.g. 1.0.0-alpha.1+4jds75hf\n\n  // Allow use of 'hideSha' and 'hideVersion' For backwards compatibility\n  let versionOnly = hash.versionOnly || hash.hideSha;\n  let shaOnly = hash.shaOnly || hash.hideVersion;\n\n  let match = null;\n\n  if (versionOnly) {\n    if (hash.showExtended) {\n      match = version.match(versionExtendedRegExp); // 1.0.0-alpha.1\n    }\n    // Fallback to just version\n    if (!match) {\n      match = version.match(versionRegExp); // 1.0.0\n    }\n  }\n\n  if (shaOnly) {\n    match = version.match(shaRegExp); // 4jds75hf\n  }\n\n  return match ? match[0] : version;\n}\n\nexport default helper(appVersion);\n","define(\"tt4/helpers/append\", [\"exports\", \"ember-composable-helpers/helpers/append\"], function (_exports, _append) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"append\", {\n    enumerable: true,\n    get: function get() {\n      return _append.append;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _append.default;\n    }\n  });\n});\n","define(\"tt4/helpers/assign\", [\"exports\", \"ember-assign-helper/helpers/assign\"], function (_exports, _assign) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"assign\", {\n    enumerable: true,\n    get: function get() {\n      return _assign.assign;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _assign.default;\n    }\n  });\n});\n","define(\"tt4/helpers/await\", [\"exports\", \"ember-promise-helpers/helpers/await\"], function (_exports, _await) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _await.default;\n    }\n  });\n});\n","define(\"tt4/helpers/bs-contains\", [\"exports\", \"ember-bootstrap/helpers/bs-contains\"], function (_exports, _bsContains) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"bsContains\", {\n    enumerable: true,\n    get: function get() {\n      return _bsContains.bsContains;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _bsContains.default;\n    }\n  });\n});\n","define(\"tt4/helpers/bs-eq\", [\"exports\", \"ember-bootstrap/helpers/bs-eq\"], function (_exports, _bsEq) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _bsEq.default;\n    }\n  });\n  Object.defineProperty(_exports, \"eq\", {\n    enumerable: true,\n    get: function get() {\n      return _bsEq.eq;\n    }\n  });\n});\n","define(\"tt4/helpers/call\", [\"exports\", \"ember-composable-helpers/helpers/call\"], function (_exports, _call) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"call\", {\n    enumerable: true,\n    get: function get() {\n      return _call.call;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _call.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/can-add-worktime.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CanAddWorktimeHelper;\n\nimport Ember from 'ember';\n\nCanAddWorktimeHelper = Ember.Helper.extend({\n    Collector: Ember.inject.service('collector-service'),\n    compute: function (params, hash) {\n        var c;\n        c = this.get('Collector');\n        return c.canAddWorktime(params[0]);\n    },\n});\n\nexport default CanAddWorktimeHelper;\n","define(\"tt4/helpers/cancel-all\", [\"exports\", \"ember-concurrency/helpers/cancel-all\"], function (_exports, _cancelAll) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _cancelAll.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\nexport function capitalizeTranslation(param) {\n    if (Array.isArray(param) && param.length > 0) {\n        const textToTranslate = param[0];\n        return textToTranslate.charAt(0).toUpperCase() + textToTranslate.slice(1);\n    }\n    return param;\n}\n\nexport default helper(capitalizeTranslation);\n","define(\"tt4/helpers/chunk\", [\"exports\", \"ember-composable-helpers/helpers/chunk\"], function (_exports, _chunk) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"chunk\", {\n    enumerable: true,\n    get: function get() {\n      return _chunk.chunk;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _chunk.default;\n    }\n  });\n});\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Helper.extend({\n    collector: service('collector-service'),\n\n    compute(params, hash) {\n        let fields = get(this, 'collector').fieldArray(params[0]);\n        if (hash.onlyTypes)\n            fields = fields.filter((item) => hash.onlyTypes.split(',').includes(item.type));\n        return fields;\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/collector-field-name.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldNameHelper;\n\nimport Ember from 'ember';\n\nCollectorFieldNameHelper = Ember.Helper.extend({\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    compute: function (params, hash) {\n        var c, field, form;\n        if (hash.field === 'id') {\n            return this.get('intl').t('general.row_info.created');\n        }\n        c = this.get('Collector');\n        field = hash.field;\n        form = hash.form;\n        return c.getTranslationForColumn(form, field, hash.removed);\n    },\n});\n\nexport default CollectorFieldNameHelper;\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Helper.extend({\n    collector: service('collector-service'),\n\n    compute(params) {\n        const [form, field] = params[0].split('.');\n        return get(this, 'collector').field(form, field);\n    },\n});\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Helper.extend({\n    intl: service(),\n\n    compute(params) {\n        const key = 'form.' + params[0];\n        if (get(this, 'intl').exists(key)) {\n            if (params[1])\n                return (\n                    get(this, 'intl').t(key).charAt(0).toUpperCase() +\n                    get(this, 'intl').t(key).slice(1)\n                );\n            else return get(this, 'intl').t(key).toLowerCase();\n        } else return params[0];\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/collector-format.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFormatHelper;\n\nimport Ember from 'ember';\n\nCollectorFormatHelper = Ember.Helper.extend({\n    Collector: Ember.inject.service('collector-service'),\n    compute: function (params, hash) {\n        var c, field, form, fuckTheseImageModals, model, ref, value;\n        c = this.get('Collector');\n        field = hash.field;\n        form = hash.form;\n        model = hash.model;\n        fuckTheseImageModals = hash.fuckTheseImageModals || false;\n        value = false;\n        if (hash.formatter) {\n            value = hash.formatter(\n                field.ext || field.name,\n                model.get(field.ext || field.name),\n                null,\n                c.format(model.get(field.ext || field.name), field, null, model, false, form),\n            );\n        }\n        if (value) {\n            return value;\n        } else if ((ref = Ember.typeOf(field)) === 'object' || ref === 'instance') {\n            return c.format(\n                model.get(field.ext || field.name),\n                field,\n                null,\n                model,\n                false,\n                form,\n                false,\n                fuckTheseImageModals,\n            );\n        } else {\n            return c._format_(model, form, field);\n        }\n    },\n});\n\nexport default CollectorFormatHelper;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/collector-value-format.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorValueFormatHelper;\n\nimport Ember from 'ember';\n\nCollectorValueFormatHelper = Ember.Helper.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    compute: function (params, hash) {\n        var c,\n            field,\n            form,\n            isImageModal,\n            options,\n            realField,\n            realFieldForm,\n            record,\n            ref,\n            ret,\n            value;\n        c = this.get('Collector');\n        field = hash.field;\n        form = hash.form;\n        value = hash.value;\n        record = hash.record ? hash.record : null;\n        isImageModal = hash.isImageModal;\n        if (field === 'row_info.created') {\n            return this.get('Collector')._format_(value, form, field);\n        }\n        if (field === 'row_info.modified') {\n            return this.get('Collector')._format_(value, form, field);\n        }\n\n        realField = c.field(form, field);\n\n        if (field === 'location' || field === 'end_location') {\n            return c.format(value, realField, null, record, false, form);\n        }\n\n        if (\n            (ref = realField.type) === 'database' ||\n            ref === 'timerlink' ||\n            ref === 'multiselect' ||\n            ref === 'databasearray' ||\n            ref === 'work_permit_attachment'\n        ) {\n            if (realField.type === 'databasearray' || realField.type === 'work_permit_attachment') {\n                options = Ember.get(realField, 'options');\n                form = Ember.get(options, 'form');\n                field = Ember.get(options, 'fields.firstObject');\n                realFieldForm = Ember.get(c.field(form, field), 'options.form');\n            } else {\n                realFieldForm = realField.options.form;\n            }\n            if (!isNaN(value) && value) {\n                value = parseInt(value, 10);\n            }\n            if (!value) {\n                return '';\n            }\n            ret = this.formatValue(value, form, field);\n            if (ret !== void 0 && ret !== null && Ember.typeOf(ret) !== 'instance') {\n                if (typeof ret === 'number') {\n                    return ret;\n                }\n                return ret.trim();\n            } else {\n                if (Ember.typeOf(value) === 'instance') {\n                    value = value.get('id');\n                }\n                if (value) {\n                    this.get('store')\n                        .query(realFieldForm, {\n                            id: value,\n                            include: true,\n                        })\n                        .then((record) => {\n                            if (!Em.isEmpty(record)) {\n                                return this.recompute();\n                            }\n                        });\n                    return '';\n                }\n                return value;\n            }\n        } else {\n            return c._format_(value, form, field, 'html', record, isImageModal);\n        }\n    },\n    formatValue: function (value, form, field) {\n        var empty_found, value_arr;\n        if (Ember.typeOf(value) === 'string' && value.indexOf(',') !== -1) {\n            value_arr = [];\n            empty_found = false;\n            value.split(',').forEach((item) => {\n                var subvalue;\n                // for some weird reason _format_ needs id as int\n                subvalue = this.get('Collector')._format_(parseInt(item, 10), form, field);\n                if (!subvalue) {\n                    empty_found = true;\n                }\n                return value_arr.push(subvalue);\n            });\n            if (empty_found) {\n                return null;\n            }\n            return value_arr.join(',');\n        } else {\n            return this.get('Collector')._format_(value, form, field);\n        }\n    },\n});\n\nexport default CollectorValueFormatHelper;\n","define(\"tt4/helpers/compact\", [\"exports\", \"ember-composable-helpers/helpers/compact\"], function (_exports, _compact) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _compact.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\nimport { isEqual } from '@ember/utils';\n\nexport function compare(params) {\n    let index = params[1] + 1;\n    return isEqual(params[0], index);\n}\n\nexport default helper(compare);\n","define(\"tt4/helpers/compute\", [\"exports\", \"ember-composable-helpers/helpers/compute\"], function (_exports, _compute) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"compute\", {\n    enumerable: true,\n    get: function get() {\n      return _compute.compute;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _compute.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/console-log.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ConsoleLogHelper, consoleLog;\n\nimport Ember from 'ember';\n\n// This function receives the params `params, hash`\nconsoleLog = function (params) {\n    return true;\n};\n\nConsoleLogHelper = Ember.Helper.helper(consoleLog);\n\nexport { consoleLog };\n\nexport default ConsoleLogHelper;\n","define(\"tt4/helpers/contains\", [\"exports\", \"ember-composable-helpers/helpers/contains\"], function (_exports, _contains) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"contains\", {\n    enumerable: true,\n    get: function get() {\n      return _contains.contains;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _contains.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/country-flag.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CountryFlagHelper;\n\nimport Ember from 'ember';\n\nCountryFlagHelper = Ember.Helper.extend({\n    countryLists: Ember.inject.service(),\n    compute: function (params, hash) {\n        var flag;\n        if (!params[0]) {\n            return Ember.String.htmlSafe(\n                '<span class=\"glyphicon glyphicon-globe\" aria-hidden=\"true\"></span>',\n            );\n        }\n        flag = false;\n        if (params[1] === 'number') {\n            this.get('countryLists.phoneList').forEach(function (country) {\n                if (params[0].substring(0, country.number.length) === country.number) {\n                    return (flag = country.id);\n                }\n            });\n            if (!flag) {\n                return Ember.String.htmlSafe(\n                    '<span class=\"glyphicon glyphicon-globe\" aria-hidden=\"true\"></span>',\n                );\n            }\n        } else {\n            console.info(\n                \"We don't have flags for every country, you might want to check if the country flag is included\",\n            );\n            flag = params[0];\n        }\n        return Ember.String.htmlSafe('<span class=\"flag-icon flag-icon-' + flag + '\"></span>');\n    },\n});\n\nexport default CountryFlagHelper;\n","import { helper } from '@ember/component/helper';\nimport { warn } from '@ember/debug';\n\n// This function receives the params `params, hash`\nexport function currency(params) {\n    const amount = params[0];\n    const currency = params[1];\n\n    if (currency == null) {\n        return amount;\n    }\n\n    switch (currency) {\n        case 'eur':\n            return `${amount} €`;\n        case 'sek':\n            return `${amount} kr`;\n        case 'gbp':\n            return `£${amount}`;\n        case 'usd':\n            return `$${amount}`;\n        default:\n            warn(`Unknown currency: ${currency} ${amount}`, { id: 'currency-needs' });\n    }\n}\n\nexport default helper(currency);\n","import { helper } from '@ember/component/helper';\nimport { warn } from '@ember/debug';\n\n// This function receives the params `params, hash`\nexport function currency_by_country(params) {\n    const amount = params[0];\n    const country = params[1];\n\n    if (country == null) {\n        return amount;\n    }\n\n    switch (country) {\n        case 'fi':\n            return `${amount} EUR`;\n        case 'se':\n            return `${amount} SEK`;\n        default:\n            warn(`Unknown country: ${country} `, false, { id: 'currency-needs-country' });\n            return amount;\n    }\n}\n\nexport default helper(currency_by_country);\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/databasefield-options.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar formatOptionsHelper;\n\nimport Ember from 'ember';\n\nformatOptionsHelper = Ember.Helper.extend({\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    compute: function (params, hash) {\n        var firstObject, form, names, options;\n        options = params[0];\n        if (Ember.isEmpty(options)) {\n            return '';\n        }\n        options = options.split('\\n');\n        if (options.length < 1) {\n            return '';\n        }\n        firstObject = this.get('store').peekRecord('form-field', options[0]);\n        if (!firstObject) {\n            return '??';\n        }\n        form = firstObject.get('form');\n        names = options.map((option) => {\n            var fieldRecord, name;\n            fieldRecord = this.get('store').peekRecord('form-field', option);\n            if (!fieldRecord) {\n                return 'notfound';\n            }\n            if (fieldRecord.get('name') === '$lang(10)') {\n                name = this.get('intl').t(\n                    form.get('external_type') + '.' + fieldRecord.get('external_type'),\n                );\n                if (name.string != null) {\n                    name = name.string;\n                }\n            } else {\n                name = fieldRecord.get('name');\n            }\n            // only truncate if name is longer than 20 characters\n            if (name.length >= 20) {\n                return name.substring(0, 20) + '...';\n            } else {\n                return name;\n            }\n        });\n        return names.join(',');\n    },\n});\n\nexport default formatOptionsHelper;\n","import { helper } from '@ember/component/helper';\nimport moment from 'moment';\n\n// This function receives the params `params, hash`\nexport function date_diff(params) {\n    const start = moment().format('YYYY-MM-DD');\n    const end = params[0];\n\n    return moment.utc(end).diff(moment.utc(start), 'days');\n}\n\nexport default helper(date_diff);\n","define(\"tt4/helpers/dec\", [\"exports\", \"ember-composable-helpers/helpers/dec\"], function (_exports, _dec) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"dec\", {\n    enumerable: true,\n    get: function get() {\n      return _dec.dec;\n    }\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _dec.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/dev-helper.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DevHelperHelper, devHelper;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\ndevHelper = function () {\n    return Ember.devModeOn === true;\n};\n\nDevHelperHelper = Ember.Helper.helper(devHelper);\n\nexport { devHelper };\n\nexport default DevHelperHelper;\n","define(\"tt4/helpers/drop\", [\"exports\", \"ember-composable-helpers/helpers/drop\"], function (_exports, _drop) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _drop.default;\n    }\n  });\n});\n","import Helper from '@ember/component/helper';\nimport moment from 'moment-timezone';\nimport { later } from '@ember/runloop';\n\nexport default Helper.extend({\n    compute(params /*, hash*/) {\n        const now = moment();\n        const then = moment(params[0], 'YYYY-MM-DD HH:mm:ss');\n        later(() => this.recompute(), 500);\n        return now.isBefore(then)\n            ? '-' + moment.utc(then.diff(now)).format('HH:mm:ss')\n            : moment.utc(now.diff(then)).format('HH:mm:ss');\n    },\n});\n","define(\"tt4/helpers/element\", [\"exports\", \"ember-element-helper/helpers/element\"], function (_exports, _element) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _element.default;\n    }\n  });\n});\n","define(\"tt4/helpers/ember-power-calendar-day-classes\", [\"exports\", \"ember-power-calendar/helpers/ember-power-calendar-day-classes\"], function (_exports, _emberPowerCalendarDayClasses) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPowerCalendarDayClasses.default;\n    }\n  });\n  Object.defineProperty(_exports, \"emberPowerCalendarDayClasses\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPowerCalendarDayClasses.emberPowerCalendarDayClasses;\n    }\n  });\n});\n","define(\"tt4/helpers/ember-power-select-is-group\", [\"exports\", \"ember-power-select/helpers/ember-power-select-is-group\"], function (_exports, _emberPowerSelectIsGroup) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPowerSelectIsGroup.default;\n    }\n  });\n  Object.defineProperty(_exports, \"emberPowerSelectIsGroup\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPowerSelectIsGroup.emberPowerSelectIsGroup;\n    }\n  });\n});\n","define(\"tt4/helpers/ember-power-select-is-selected\", [\"exports\", \"ember-power-select/helpers/ember-power-select-is-selected\"], function (_exports, _emberPowerSelectIsSelected) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPowerSelectIsSelected.default;\n    }\n  });\n  Object.defineProperty(_exports, \"emberPowerSelectIsSelected\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPowerSelectIsSelected.emberPowerSelectIsSelected;\n    }\n  });\n});\n","define(\"tt4/helpers/ensure-safe-component\", [\"exports\", \"@embroider/util\"], function (_exports, _util) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _util.EnsureSafeComponentHelper;\n    }\n  });\n});\n","define(\"tt4/helpers/entries\", [\"exports\", \"ember-composable-helpers/helpers/entries\"], function (_exports, _entries) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _entries.default;\n    }\n  });\n  Object.defineProperty(_exports, \"entries\", {\n    enumerable: true,\n    get: function get() {\n      return _entries.entries;\n    }\n  });\n});\n","define(\"tt4/helpers/eq\", [\"exports\", \"ember-truth-helpers/helpers/equal\"], function (_exports, _equal) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _equal.default;\n    }\n  });\n  Object.defineProperty(_exports, \"equal\", {\n    enumerable: true,\n    get: function get() {\n      return _equal.equal;\n    }\n  });\n});\n","define(\"tt4/helpers/equal\", [\"exports\", \"ember-cli-notifications/helpers/equal\"], function (_exports, _equal) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _equal.default;\n    }\n  });\n});\n","define(\"tt4/helpers/file-queue\", [\"exports\", \"ember-file-upload/helpers/file-queue\"], function (_exports, _fileQueue) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _fileQueue.default;\n    }\n  });\n});\n","define(\"tt4/helpers/filter-by\", [\"exports\", \"ember-composable-helpers/helpers/filter-by\"], function (_exports, _filterBy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _filterBy.default;\n    }\n  });\n});\n","define(\"tt4/helpers/filter\", [\"exports\", \"ember-composable-helpers/helpers/filter\"], function (_exports, _filter) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _filter.default;\n    }\n  });\n});\n","define(\"tt4/helpers/find-by\", [\"exports\", \"ember-composable-helpers/helpers/find-by\"], function (_exports, _findBy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _findBy.default;\n    }\n  });\n});\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nconst helper = Helper.extend({\n    flags: service(),\n    compute(params) {\n        return get(this, 'flags').test(params[0]);\n    },\n});\n\nexport default helper;\n","define(\"tt4/helpers/flatten\", [\"exports\", \"ember-composable-helpers/helpers/flatten\"], function (_exports, _flatten) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _flatten.default;\n    }\n  });\n  Object.defineProperty(_exports, \"flatten\", {\n    enumerable: true,\n    get: function get() {\n      return _flatten.flatten;\n    }\n  });\n});\n","define(\"tt4/helpers/format-date\", [\"exports\", \"ember-intl/helpers/format-date\"], function (_exports, _formatDate) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _formatDate.default;\n    }\n  });\n});\n","import { helper } from \"@ember/component/helper\";\n\nexport function hours([hours, defaultValue, omitUnit, leadingZeros]) {\n    if (!hours || isNaN(hours)) hours = 0;\n    let negative;\n\n    if (hours < 0) {\n        hours *= -1;\n        negative = true;\n    } else {\n        negative = false;\n    }\n\n    let fullHours = Math.floor(hours);\n\n    let minutes = Math.round((hours - fullHours) * 60);\n    if (minutes === 60) {\n        fullHours += 1;\n        minutes = 0;\n    }\n    if (defaultValue && !hours && !minutes) {\n        return defaultValue;\n    }\n    return (\n        (negative ? \"-\" : \"\") +\n        (leadingZeros && hours < 10 && hours >= 0\n            ? \"0\" + fullHours\n            : fullHours) +\n        \":\" +\n        (minutes < 10 ? \"0\" : \"\") +\n        minutes +\n        (omitUnit ? \"\" : \"h\")\n    );\n}\n\nexport default helper(hours);\n","define(\"tt4/helpers/format-message\", [\"exports\", \"ember-intl/helpers/format-message\"], function (_exports, _formatMessage) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _formatMessage.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\nimport { htmlSafe } from '@ember/string';\n\nexport function formatMinutes(params, hash) {\n    let hours = Math.abs(params[0] / 60);\n\n    let minutes = Math.round((hours - Math.floor(hours)) * 60);\n\n    if (hash && hash.showLeadingZeros) {\n        hours = Math.floor(hours);\n        if (hours < 0 && hours > -10) hours = '-0' + Math.abs(hours);\n        else if (hours < 10 && hours >= 0) hours = '0' + hours;\n    } else {\n        hours = Math.floor(hours);\n    }\n\n    let value = hours + ':' + (minutes < 10 ? '0' : '') + minutes + 'h';\n\n    if (params[0] < 0) value = '-' + value;\n    if (hash && hash.hideIcon) return value;\n\n    let icon = params[1] ? params[1] : 'Time';\n    return new htmlSafe(`<span class=\"move move-${icon}\"></span>` + value);\n}\n\nexport default helper(formatMinutes);\n","define(\"tt4/helpers/format-number\", [\"exports\", \"ember-intl/helpers/format-number\"], function (_exports, _formatNumber) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _formatNumber.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\nimport { get } from '@ember/object';\nimport { isPresent } from '@ember/utils';\n\nexport function formatOption(params) {\n    let item = params[0];\n    let ret = '';\n\n    if (typeof params[1] === 'string') {\n        params[1] = params[1].split(',');\n    }\n\n    if (isPresent(params[1])) {\n        params[1].forEach((field) => {\n            if (get(item, field)) {\n                ret += get(item, field) + ' ';\n            }\n        });\n    }\n    return ret.trim();\n}\n\nexport default helper(formatOption);\n","define(\"tt4/helpers/format-relative\", [\"exports\", \"ember-intl/helpers/format-relative\"], function (_exports, _formatRelative) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _formatRelative.default;\n    }\n  });\n});\n","define(\"tt4/helpers/format-time\", [\"exports\", \"ember-intl/helpers/format-time\"], function (_exports, _formatTime) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _formatTime.default;\n    }\n  });\n});\n","define(\"tt4/helpers/from-entries\", [\"exports\", \"ember-composable-helpers/helpers/from-entries\"], function (_exports, _fromEntries) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _fromEntries.default;\n    }\n  });\n  Object.defineProperty(_exports, \"fromEntries\", {\n    enumerable: true,\n    get: function get() {\n      return _fromEntries.fromEntries;\n    }\n  });\n});\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Helper.extend({\n    gui: service(),\n\n    compute() {\n        return get(this, 'gui').getBrand();\n    },\n});\n","define(\"tt4/helpers/group-by\", [\"exports\", \"ember-composable-helpers/helpers/group-by\"], function (_exports, _groupBy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _groupBy.default;\n    }\n  });\n});\n","define(\"tt4/helpers/gt\", [\"exports\", \"ember-truth-helpers/helpers/gt\"], function (_exports, _gt) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _gt.default;\n    }\n  });\n  Object.defineProperty(_exports, \"gt\", {\n    enumerable: true,\n    get: function get() {\n      return _gt.gt;\n    }\n  });\n});\n","define(\"tt4/helpers/gte\", [\"exports\", \"ember-truth-helpers/helpers/gte\"], function (_exports, _gte) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _gte.default;\n    }\n  });\n  Object.defineProperty(_exports, \"gte\", {\n    enumerable: true,\n    get: function get() {\n      return _gte.gte;\n    }\n  });\n});\n","define(\"tt4/helpers/has-next\", [\"exports\", \"ember-composable-helpers/helpers/has-next\"], function (_exports, _hasNext) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _hasNext.default;\n    }\n  });\n  Object.defineProperty(_exports, \"hasNext\", {\n    enumerable: true,\n    get: function get() {\n      return _hasNext.hasNext;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\n// This function receives the params `params, hash`\nexport function hasPermission(params) {\n    const userlevel = params[0];\n    const check_levels = params[1];\n    if (!check_levels || check_levels.indexOf(parseInt(userlevel)) > -1) {\n        return true;\n    } else {\n        return false;\n    }\n}\n\nexport default helper(hasPermission);\n","define(\"tt4/helpers/has-previous\", [\"exports\", \"ember-composable-helpers/helpers/has-previous\"], function (_exports, _hasPrevious) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _hasPrevious.default;\n    }\n  });\n  Object.defineProperty(_exports, \"hasPrevious\", {\n    enumerable: true,\n    get: function get() {\n      return _hasPrevious.hasPrevious;\n    }\n  });\n});\n","import Helper from '@ember/component/helper';\nimport { htmlSafe } from '@ember/string';\n\nexport default Helper.extend({\n    compute(params /*, hash*/) {\n        let term = params[1];\n        let text = params[0];\n        if (term) {\n            let re = new RegExp(term, 'gi');\n            return htmlSafe(text.replace(re, \"<span class='highlighted-text'>\" + term + '</span>'));\n        } else {\n            return text;\n        }\n    },\n});\n","define(\"tt4/helpers/href-to\", [\"exports\", \"ember-href-to/helpers/href-to\"], function (_exports, _hrefTo) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _hrefTo.default;\n    }\n  });\n  Object.defineProperty(_exports, \"hrefTo\", {\n    enumerable: true,\n    get: function get() {\n      return _hrefTo.hrefTo;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\nimport { htmlSafe } from '@ember/template';\n\nexport default helper(function makeHtmlSafe(params /*, hash*/) {\n    return htmlSafe(params[0]);\n});\n","define(\"tt4/helpers/ignore-children\", [\"exports\", \"ember-ignore-children-helper/helpers/ignore-children\"], function (_exports, _ignoreChildren) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _ignoreChildren.default;\n    }\n  });\n  Object.defineProperty(_exports, \"ignoreChildren\", {\n    enumerable: true,\n    get: function get() {\n      return _ignoreChildren.ignoreChildren;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\nimport { isArray } from '@ember/array';\nimport { assert } from '@ember/debug';\n\n// This function receives the params `params` and checks if params[0] is in array params[1]\nexport function inArray(params) {\n    if (params[0] == null) {\n        return false;\n    }\n    // Check if the param we are searching with is a string or number\n    if ((typeof params[0] !== 'string' && typeof params[0] !== 'number') || !params[0]) {\n        assert('You must pass a string as the first argument to the in-array helper');\n        return false;\n    }\n    // Check that we got an array to work with\n    if (!isArray(params[1])) {\n        assert('You must pass an array as the second argument to the in-array helper');\n        return false;\n    }\n    // See if what we are searching for is in the array\n    if (params[1].includes(params[0])) {\n        return true;\n    } else return false;\n}\n\nexport default helper(inArray);\n","define(\"tt4/helpers/inc\", [\"exports\", \"ember-composable-helpers/helpers/inc\"], function (_exports, _inc) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _inc.default;\n    }\n  });\n  Object.defineProperty(_exports, \"inc\", {\n    enumerable: true,\n    get: function get() {\n      return _inc.inc;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\nexport function includes(params /*, hash*/) {\n    if (!params[1]) return false;\n    return params[1].includes(params[0]);\n}\n\nexport default helper(includes);\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\n\nexport default Helper.extend({\n    // makes the first line in SVG card. See helper inline-text-2.js\n    Collector: service('collector-service'),\n\n    compute(params, hash) {\n        let field = hash.field;\n        let form = hash.form;\n        let value = hash.value;\n        let owner = hash.owner;\n        let splitText = [];\n        let recordValue = '';\n\n        // set recordValue based on record owner\n        recordValue =\n            owner == 'taitorekisteri' ? value : this.Collector._format_(value, form, field);\n\n        // The lenght of 20 is based on average lenght of the first word in custom headers\n        if (recordValue.length > 20) {\n            if (recordValue.includes('–')) {\n                splitText = recordValue.split('–');\n                return splitText[1];\n            } else if (recordValue.lastIndexOf(' ')) {\n                const i = recordValue.lastIndexOf(' ');\n                return recordValue.substring(i);\n            }\n        } else {\n            return;\n        }\n    },\n});\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\n\nexport default Helper.extend({\n    // makes the first line in SVG card. See helper inline-text-2.js\n    Collector: service('collector-service'),\n\n    compute(params, hash) {\n        let field = hash.field;\n        let form = hash.form;\n        let value = hash.value;\n        let owner = hash.owner;\n        let splitText = [];\n        let recordValue = '';\n\n        // set recordValue based on record owner\n        recordValue =\n            owner == 'taitorekisteri' ? value : this.Collector._format_(value, form, field);\n\n        // The lenght of 20 is based on average lenght of the first word in custom headers\n        if (recordValue.length > 20) {\n            if (recordValue.includes('–')) {\n                splitText = recordValue.split('–');\n                return splitText[0];\n            } else if (recordValue.lastIndexOf(' ')) {\n                const i = recordValue.lastIndexOf(' ');\n                return recordValue.substring(0, i);\n            }\n        } else {\n            return recordValue;\n        }\n    },\n});\n","define(\"tt4/helpers/intersect\", [\"exports\", \"ember-composable-helpers/helpers/intersect\"], function (_exports, _intersect) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _intersect.default;\n    }\n  });\n});\n","define(\"tt4/helpers/invoke\", [\"exports\", \"ember-composable-helpers/helpers/invoke\"], function (_exports, _invoke) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _invoke.default;\n    }\n  });\n  Object.defineProperty(_exports, \"invoke\", {\n    enumerable: true,\n    get: function get() {\n      return _invoke.invoke;\n    }\n  });\n});\n","define(\"tt4/helpers/is-after\", [\"exports\", \"ember-moment/helpers/is-after\"], function (_exports, _isAfter) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isAfter.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\nimport { isEqual as equal } from '@ember/utils';\n\n// This function receives the params `params, hash`\n\nexport function isEqual(params) {\n    if (params[2] && params[0] && params[1]) {\n        return equal(params[0].toString(), params[1].toString());\n    } else {\n        return equal(params[0], params[1]);\n    }\n}\n\nexport default helper(isEqual);\n","define(\"tt4/helpers/is-array\", [\"exports\", \"ember-truth-helpers/helpers/is-array\"], function (_exports, _isArray) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isArray.default;\n    }\n  });\n  Object.defineProperty(_exports, \"isArray\", {\n    enumerable: true,\n    get: function get() {\n      return _isArray.isArray;\n    }\n  });\n});\n","define(\"tt4/helpers/is-before\", [\"exports\", \"ember-moment/helpers/is-before\"], function (_exports, _isBefore) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isBefore.default;\n    }\n  });\n});\n","define(\"tt4/helpers/is-between\", [\"exports\", \"ember-moment/helpers/is-between\"], function (_exports, _isBetween) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isBetween.default;\n    }\n  });\n});\n","define(\"tt4/helpers/is-clipboard-supported\", [\"exports\", \"ember-cli-clipboard/helpers/is-clipboard-supported\"], function (_exports, _isClipboardSupported) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isClipboardSupported.default;\n    }\n  });\n  Object.defineProperty(_exports, \"isClipboardSupported\", {\n    enumerable: true,\n    get: function get() {\n      return _isClipboardSupported.isClipboardSupported;\n    }\n  });\n});\n","define(\"tt4/helpers/is-empty\", [\"exports\", \"ember-truth-helpers/helpers/is-empty\"], function (_exports, _isEmpty) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isEmpty.default;\n    }\n  });\n});\n","import Ember from 'ember';\n\nexport default Ember.Helper.helper(function([leftSide, rightSide, path]) {\n  if (path) {\n    return Ember.get(leftSide, path) === rightSide;\n  } else {\n    return leftSide === rightSide;\n  }\n});\n","define(\"tt4/helpers/is-equal\", [\"exports\", \"ember-truth-helpers/helpers/is-equal\"], function (_exports, _isEqual) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isEqual.default;\n    }\n  });\n  Object.defineProperty(_exports, \"isEqual\", {\n    enumerable: true,\n    get: function get() {\n      return _isEqual.isEqual;\n    }\n  });\n});\n","define(\"tt4/helpers/is-fulfilled\", [\"exports\", \"ember-promise-helpers/helpers/is-fulfilled\"], function (_exports, _isFulfilled) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isFulfilled.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\nexport function isLastElement(params) {\n    const items = params[0];\n    const index = params[1];\n\n    return index === items.length - 1;\n}\n\nexport default helper(isLastElement);\n","import Ember from 'ember';\n\nexport default Ember.Helper.helper(function([value]) {\n  return !value;\n});\n","import { helper } from '@ember/component/helper';\nimport { isEqual } from '@ember/utils';\n// This function receives the params `params, hash`\n\nexport function isNth(params) {\n    let index = params[0] + 1;\n    let nth = params[1];\n\n    if (isEqual(index % nth, 0)) {\n        return true;\n    } else return false;\n}\nexport default helper(isNth);\n","define(\"tt4/helpers/is-pending\", [\"exports\", \"ember-promise-helpers/helpers/is-pending\"], function (_exports, _isPending) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isPending.default;\n    }\n  });\n});\n","define(\"tt4/helpers/is-rejected\", [\"exports\", \"ember-promise-helpers/helpers/is-rejected\"], function (_exports, _isRejected) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isRejected.default;\n    }\n  });\n});\n","define(\"tt4/helpers/is-same-or-after\", [\"exports\", \"ember-moment/helpers/is-same-or-after\"], function (_exports, _isSameOrAfter) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isSameOrAfter.default;\n    }\n  });\n});\n","define(\"tt4/helpers/is-same-or-before\", [\"exports\", \"ember-moment/helpers/is-same-or-before\"], function (_exports, _isSameOrBefore) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isSameOrBefore.default;\n    }\n  });\n});\n","define(\"tt4/helpers/is-same\", [\"exports\", \"ember-moment/helpers/is-same\"], function (_exports, _isSame) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _isSame.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\n/**\n * Checks if the date's day is sunday regardless of timezone\n * @param {Date} date\n * @returns boolean - true or false\n */\nexport function isSunday(date) {\n    return date[0]?.toLocaleDateString('en', { weekday: 'long' }).toLowerCase() === 'sunday';\n}\n\nexport default helper(isSunday);\n","import { helper } from '@ember/component/helper';\nimport moment from 'moment';\nimport { assert } from '@ember/debug';\nimport { isPresent } from '@ember/utils';\n\nexport function isWeekend(params /*, hash*/) {\n    // Week numbers are isoweek => from monday - sunday / 1-7\n    assert('Must pass one parameter with either date or day of week number', isPresent(params[0]));\n    return [6, 7].includes(isNaN(params[0]) ? moment(params[0]).isoWeekday() : params[0]);\n}\n\nexport default helper(isWeekend);\n","define(\"tt4/helpers/join\", [\"exports\", \"ember-composable-helpers/helpers/join\"], function (_exports, _join) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _join.default;\n    }\n  });\n});\n","define(\"tt4/helpers/json-stringify\", [\"exports\", \"@movenium/ember-movenium/helpers/json-stringify\"], function (_exports, _jsonStringify) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _jsonStringify.default;\n    }\n  });\n  Object.defineProperty(_exports, \"jsonStringify\", {\n    enumerable: true,\n    get: function get() {\n      return _jsonStringify.jsonStringify;\n    }\n  });\n});\n","define(\"tt4/helpers/keys\", [\"exports\", \"ember-composable-helpers/helpers/keys\"], function (_exports, _keys) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _keys.default;\n    }\n  });\n  Object.defineProperty(_exports, \"keys\", {\n    enumerable: true,\n    get: function get() {\n      return _keys.keys;\n    }\n  });\n});\n","define(\"tt4/helpers/lt\", [\"exports\", \"ember-truth-helpers/helpers/lt\"], function (_exports, _lt) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _lt.default;\n    }\n  });\n  Object.defineProperty(_exports, \"lt\", {\n    enumerable: true,\n    get: function get() {\n      return _lt.lt;\n    }\n  });\n});\n","define(\"tt4/helpers/lte\", [\"exports\", \"ember-truth-helpers/helpers/lte\"], function (_exports, _lte) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _lte.default;\n    }\n  });\n  Object.defineProperty(_exports, \"lte\", {\n    enumerable: true,\n    get: function get() {\n      return _lte.lte;\n    }\n  });\n});\n","define(\"tt4/helpers/map-by\", [\"exports\", \"ember-composable-helpers/helpers/map-by\"], function (_exports, _mapBy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _mapBy.default;\n    }\n  });\n});\n","define(\"tt4/helpers/map\", [\"exports\", \"ember-composable-helpers/helpers/map\"], function (_exports, _map) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _map.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-add\", [\"exports\", \"ember-moment/helpers/moment-add\"], function (_exports, _momentAdd) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentAdd.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-calendar\", [\"exports\", \"ember-moment/helpers/moment-calendar\"], function (_exports, _momentCalendar) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentCalendar.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-diff\", [\"exports\", \"ember-moment/helpers/moment-diff\"], function (_exports, _momentDiff) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentDiff.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-duration\", [\"exports\", \"ember-moment/helpers/moment-duration\"], function (_exports, _momentDuration) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentDuration.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-format\", [\"exports\", \"ember-moment/helpers/moment-format\"], function (_exports, _momentFormat) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentFormat.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-from-now\", [\"exports\", \"ember-moment/helpers/moment-from-now\"], function (_exports, _momentFromNow) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentFromNow.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-from\", [\"exports\", \"ember-moment/helpers/moment-from\"], function (_exports, _momentFrom) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentFrom.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-subtract\", [\"exports\", \"ember-moment/helpers/moment-subtract\"], function (_exports, _momentSubtract) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentSubtract.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-to-date\", [\"exports\", \"ember-moment/helpers/moment-to-date\"], function (_exports, _momentToDate) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentToDate.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-to-now\", [\"exports\", \"ember-moment/helpers/moment-to-now\"], function (_exports, _momentToNow) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentToNow.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-to\", [\"exports\", \"ember-moment/helpers/moment-to\"], function (_exports, _momentTo) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _momentTo.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment-unix\", [\"exports\", \"ember-moment/helpers/unix\"], function (_exports, _unix) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _unix.default;\n    }\n  });\n});\n","define(\"tt4/helpers/moment\", [\"exports\", \"ember-moment/helpers/moment\"], function (_exports, _moment) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _moment.default;\n    }\n  });\n});\n","define(\"tt4/helpers/need\", [\"exports\", \"@movenium/ember-movenium/helpers/need\"], function (_exports, _need) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _need.default;\n    }\n  });\n  Object.defineProperty(_exports, \"need\", {\n    enumerable: true,\n    get: function get() {\n      return _need.need;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/needs.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar NeedsHelper;\n\nimport Ember from 'ember';\n\nNeedsHelper = Ember.Helper.extend({\n    Collector: Ember.inject.service('collector-service'),\n    compute: function (params, hash) {\n        if (hash.needs) {\n            return this.get('Collector').testNeeds(hash.needs);\n        }\n        return this.get('Collector').testNeeds(params);\n    },\n});\n\nexport default NeedsHelper;\n","define(\"tt4/helpers/next\", [\"exports\", \"ember-composable-helpers/helpers/next\"], function (_exports, _next) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _next.default;\n    }\n  });\n  Object.defineProperty(_exports, \"next\", {\n    enumerable: true,\n    get: function get() {\n      return _next.next;\n    }\n  });\n});\n","define(\"tt4/helpers/noop\", [\"exports\", \"ember-composable-helpers/helpers/noop\"], function (_exports, _noop) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _noop.default;\n    }\n  });\n  Object.defineProperty(_exports, \"noop\", {\n    enumerable: true,\n    get: function get() {\n      return _noop.noop;\n    }\n  });\n});\n","define(\"tt4/helpers/not-eq\", [\"exports\", \"ember-truth-helpers/helpers/not-equal\"], function (_exports, _notEqual) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _notEqual.default;\n    }\n  });\n  Object.defineProperty(_exports, \"notEq\", {\n    enumerable: true,\n    get: function get() {\n      return _notEqual.notEq;\n    }\n  });\n});\n","define(\"tt4/helpers/not\", [\"exports\", \"ember-truth-helpers/helpers/not\"], function (_exports, _not) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _not.default;\n    }\n  });\n  Object.defineProperty(_exports, \"not\", {\n    enumerable: true,\n    get: function get() {\n      return _not.not;\n    }\n  });\n});\n","define(\"tt4/helpers/now\", [\"exports\", \"ember-moment/helpers/now\"], function (_exports, _now) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _now.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\nexport function number(params /*, hash*/) {\n    let val = params[0];\n    if (val === null) return null;\n    val = Number(val);\n    if (isNaN(val)) {\n        return NaN;\n    }\n    return val;\n}\n\nexport default helper(number);\n","define(\"tt4/helpers/object-at\", [\"exports\", \"ember-composable-helpers/helpers/object-at\"], function (_exports, _objectAt) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _objectAt.default;\n    }\n  });\n  Object.defineProperty(_exports, \"objectAt\", {\n    enumerable: true,\n    get: function get() {\n      return _objectAt.objectAt;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\n// This function receives the params `params, hash`\nexport function object(params) {\n    return JSON.stringify(params[0]);\n}\n\nexport default helper(object);\n","define(\"tt4/helpers/on-document\", [\"exports\", \"ember-on-helper/helpers/on-document\"], function (_exports, _onDocument) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _onDocument.default;\n    }\n  });\n});\n","define(\"tt4/helpers/on-window\", [\"exports\", \"ember-on-helper/helpers/on-window\"], function (_exports, _onWindow) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _onWindow.default;\n    }\n  });\n});\n","define(\"tt4/helpers/on\", [\"exports\", \"ember-on-helper/helpers/on\"], function (_exports, _on) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _on.default;\n    }\n  });\n});\n","define(\"tt4/helpers/optional\", [\"exports\", \"ember-composable-helpers/helpers/optional\"], function (_exports, _optional) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _optional.default;\n    }\n  });\n  Object.defineProperty(_exports, \"optional\", {\n    enumerable: true,\n    get: function get() {\n      return _optional.optional;\n    }\n  });\n});\n","define(\"tt4/helpers/or\", [\"exports\", \"ember-truth-helpers/helpers/or\"], function (_exports, _or) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _or.default;\n    }\n  });\n  Object.defineProperty(_exports, \"or\", {\n    enumerable: true,\n    get: function get() {\n      return _or.or;\n    }\n  });\n});\n","define(\"tt4/helpers/perform\", [\"exports\", \"ember-concurrency/helpers/perform\"], function (_exports, _perform) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _perform.default;\n    }\n  });\n});\n","define(\"tt4/helpers/pick\", [\"exports\", \"ember-composable-helpers/helpers/pick\"], function (_exports, _pick) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _pick.default;\n    }\n  });\n  Object.defineProperty(_exports, \"pick\", {\n    enumerable: true,\n    get: function get() {\n      return _pick.pick;\n    }\n  });\n});\n","define(\"tt4/helpers/pipe-action\", [\"exports\", \"ember-composable-helpers/helpers/pipe-action\"], function (_exports, _pipeAction) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _pipeAction.default;\n    }\n  });\n});\n","define(\"tt4/helpers/pipe\", [\"exports\", \"ember-composable-helpers/helpers/pipe\"], function (_exports, _pipe) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _pipe.default;\n    }\n  });\n  Object.defineProperty(_exports, \"pipe\", {\n    enumerable: true,\n    get: function get() {\n      return _pipe.pipe;\n    }\n  });\n});\n","import pluralize from 'ember-inflector/lib/helpers/pluralize';\nexport default pluralize;\n","define(\"tt4/helpers/power-calendar-format-date\", [\"exports\", \"ember-power-calendar/helpers/power-calendar-format-date\"], function (_exports, _powerCalendarFormatDate) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerCalendarFormatDate.default;\n    }\n  });\n  Object.defineProperty(_exports, \"powerCalendarFormatDate\", {\n    enumerable: true,\n    get: function get() {\n      return _powerCalendarFormatDate.powerCalendarFormatDate;\n    }\n  });\n});\n","define(\"tt4/helpers/previous\", [\"exports\", \"ember-composable-helpers/helpers/previous\"], function (_exports, _previous) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _previous.default;\n    }\n  });\n  Object.defineProperty(_exports, \"previous\", {\n    enumerable: true,\n    get: function get() {\n      return _previous.previous;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/product.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserHelper;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nUserHelper = Ember.Helper.extend({\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    // This function receives the params `params, hash`\n    compute: function (params, hash) {\n        var found, product;\n        product = params[0];\n        found = this.get('Collector').getProductByName(product);\n        if (!found) {\n            return params[0];\n        } else if (!found.then) {\n            return Ember.get(found, 'header');\n        } else {\n            found.then(() => {\n                return this.recompute();\n            });\n            return '';\n        }\n    },\n});\n\nexport default UserHelper;\n","define(\"tt4/helpers/promise-all\", [\"exports\", \"ember-promise-helpers/helpers/promise-all\"], function (_exports, _promiseAll) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _promiseAll.default;\n    }\n  });\n});\n","define(\"tt4/helpers/promise-hash\", [\"exports\", \"ember-promise-helpers/helpers/promise-hash\"], function (_exports, _promiseHash) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _promiseHash.default;\n    }\n  });\n});\n","define(\"tt4/helpers/promise-rejected-reason\", [\"exports\", \"ember-promise-helpers/helpers/promise-rejected-reason\"], function (_exports, _promiseRejectedReason) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _promiseRejectedReason.default;\n    }\n  });\n});\n","import Ember from 'ember';\nimport PurifyDOMHelper from 'ember-purify/helpers/purify-dom';\nimport config from '../config/environment';\n\nconst { getWithDefault } = Ember;\n\nexport default PurifyDOMHelper.extend({\n  config: getWithDefault(config, 'APP.purify', {})\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/query-helper.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar QueryHelper;\n\nimport Ember from 'ember';\n\nQueryHelper = Ember.Helper.extend({\n    Collector: Ember.inject.service('collector-service'),\n    compute: function (params, hash) {\n        var arr, i, item, len;\n        arr = [];\n        for (i = 0, len = params.length; i < len; i++) {\n            item = params[i];\n            arr.push(item);\n        }\n        return arr;\n    },\n});\n\nexport default QueryHelper;\n","define(\"tt4/helpers/queue\", [\"exports\", \"ember-composable-helpers/helpers/queue\"], function (_exports, _queue) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _queue.default;\n    }\n  });\n  Object.defineProperty(_exports, \"queue\", {\n    enumerable: true,\n    get: function get() {\n      return _queue.queue;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/random-mysite-image.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RandomMysiteImageHelper;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nRandomMysiteImageHelper = Ember.Helper.extend({\n    cdn: Ember.inject.service(),\n    compute: function (params, hash) {\n        var num, total;\n        num = params[0];\n        total = params[1];\n        return this.get('cdn').url('images/placeholders/placeholder' + (num % total) + '.jpg');\n    },\n});\n\nexport default RandomMysiteImageHelper;\n","import { helper } from '@ember/component/helper';\nimport { get } from '@ember/object';\n\nexport function randomizedColor(params, hash) {\n    let str = '';\n\n    if (hash && hash.record && hash.fields) {\n        hash.fields.forEach((field) => {\n            str += get(hash.record, field);\n        });\n    } else {\n        str = params.join('');\n    }\n\n    hash = 0;\n\n    for (let i in str) {\n        if (str.hasOwnProperty(i)) {\n            hash = str.charCodeAt(i) + ((hash << 5) - hash);\n        }\n    }\n\n    let c = (hash & 0x00ffffff).toString(16).toUpperCase();\n    return '#' + '00000'.substring(0, 6 - c.length) + c;\n}\n\nexport default helper(randomizedColor);\n","define(\"tt4/helpers/range\", [\"exports\", \"ember-composable-helpers/helpers/range\"], function (_exports, _range) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _range.default;\n    }\n  });\n  Object.defineProperty(_exports, \"range\", {\n    enumerable: true,\n    get: function get() {\n      return _range.range;\n    }\n  });\n});\n","import Ember from 'ember';\n\nexport default Ember.Helper.helper(function([object, path]){\n  if (path) {\n    return Ember.get(object, path);\n  } else {\n    return object;\n  }\n});\n","define(\"tt4/helpers/reduce\", [\"exports\", \"ember-composable-helpers/helpers/reduce\"], function (_exports, _reduce) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _reduce.default;\n    }\n  });\n});\n","define(\"tt4/helpers/reject-by\", [\"exports\", \"ember-composable-helpers/helpers/reject-by\"], function (_exports, _rejectBy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _rejectBy.default;\n    }\n  });\n});\n","define(\"tt4/helpers/repeat\", [\"exports\", \"ember-composable-helpers/helpers/repeat\"], function (_exports, _repeat) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _repeat.default;\n    }\n  });\n  Object.defineProperty(_exports, \"repeat\", {\n    enumerable: true,\n    get: function get() {\n      return _repeat.repeat;\n    }\n  });\n});\n","define(\"tt4/helpers/reverse\", [\"exports\", \"ember-composable-helpers/helpers/reverse\"], function (_exports, _reverse) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _reverse.default;\n    }\n  });\n});\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\n\nexport default Helper.extend({\n    intl: service(),\n    Collector: service('collector-service'),\n\n    // used for saldo-insights field translations, because saldo-fields have custom translations\n    // also if no translation was found from saldo_insights, we determine it is custom field and use its own name as a translation\n    compute(params) {\n        let form = params[0];\n        let field = params[1];\n        if (this.intl.exists('saldo_insights.fields.' + field)) {\n            return this.intl.t('saldo_insights.fields.' + field);\n        } else {\n            let formfield = this.Collector.formField(form, field);\n            if (formfield && formfield.name) return formfield.name;\n            return field ? 'saldo_insights.fields.' + field : '-';\n        }\n    },\n});\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nconst CollectorFormatHelper = Helper.extend({\n    Collector: service('collector-service'),\n    compute(params) {\n        const c = get(this, 'Collector');\n        return c.shortFormat(params[0], params[1] || 2);\n    },\n});\n\nexport default CollectorFormatHelper;\n","import { helper } from '@ember/component/helper';\n\n// This function receives the params `params, hash`\nexport function showJson(params) {\n    if (params[0]) {\n        return JSON.stringify(params[0], null, params[1] ? params[1] : null);\n    }\n}\n\nexport default helper(showJson);\n","import { helper } from '@ember/component/helper';\nimport { htmlSafe as Safe } from '@ember/string';\nimport { sanitize } from 'dom-purify';\n\nexport function showLinefeeds(params) {\n    if (params[0].string) {\n        return new Safe(sanitize(params[0].string.replace(/\\n/g, '<br>')));\n    } else {\n        return new Safe(sanitize(params[0].replace(/\\n/g, '<br>')));\n    }\n}\n\nexport default helper(showLinefeeds);\n","define(\"tt4/helpers/shuffle\", [\"exports\", \"ember-composable-helpers/helpers/shuffle\"], function (_exports, _shuffle) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _shuffle.default;\n    }\n  });\n  Object.defineProperty(_exports, \"shuffle\", {\n    enumerable: true,\n    get: function get() {\n      return _shuffle.shuffle;\n    }\n  });\n});\n","import singularize from 'ember-inflector/lib/helpers/singularize';\nexport default singularize;\n","define(\"tt4/helpers/slice\", [\"exports\", \"ember-composable-helpers/helpers/slice\"], function (_exports, _slice) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _slice.default;\n    }\n  });\n});\n","define(\"tt4/helpers/sort-by\", [\"exports\", \"ember-composable-helpers/helpers/sort-by\"], function (_exports, _sortBy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _sortBy.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\nimport { htmlSafe } from '@ember/string';\n\nexport function sortIcon([columns, field]) {\n    let sortClass = ' text-report-muted';\n    if (columns && columns.includes(field + '-')) {\n        sortClass = 'Down';\n    } else if (columns && columns.includes(field)) {\n        sortClass = 'Up';\n    } else {\n        return '';\n    }\n\n    return htmlSafe('<span class=\"move move-Sort' + sortClass + '\"></span>');\n}\n\nexport default helper(sortIcon);\n","import Helper from '@ember/component/helper';\n\nexport default Helper.extend({\n    compute(params, hash) {\n        if (!params[0]) return null;\n        if (hash.sortBy)\n            params[0].sort((a, b) => ('' + a[hash.sortBy]).localeCompare(b[hash.sortBy]));\n        return params[0].sort();\n    },\n});\n","import { htmlSafe } from '@ember/string';\nimport Ember from 'ember';\nimport { helper } from '@ember/component/helper';\n\nexport function icon(value) {\n    let escaped = Ember.Handlebars.Utils.escapeExpression(value);\n    let className = '';\n    switch (escaped) {\n        case 'save':\n            className = 'glyphicon glyphicon-floppy-disk';\n            break;\n        case 'edit':\n            className = 'glyphicon glyphicon-pencil';\n            break;\n        case 'warning':\n            className = 'glyphicon glyphicon-warning-sign';\n            break;\n        case 'filter':\n            className = 'glyphicon glyphicon-filter';\n            break;\n        case 'export':\n            className = 'glyphicon glyphicon-save-file';\n            break;\n        case 'previous':\n            className = 'glyphicon glyphicon-arrow-left';\n            break;\n        case 'next':\n            className = 'glyphicon glyphicon-arrow-right';\n            break;\n        case 'unchecked':\n            className = 'move move-UncheckedCheckbox';\n            break;\n        case 'checked':\n            className = 'move move-CheckedCheckbox';\n            break;\n        case 'ok':\n            className = 'glyphicon glyphicon-ok';\n            break;\n        case 'cancel':\n            className = 'glyphicon glyphicon-ban-circle';\n            break;\n        case 'remove':\n            className = 'glyphicon glyphicon-remove';\n            break;\n        case 'info':\n            className = 'move move-Info';\n            break;\n    }\n\n    if (escaped) {\n        return new htmlSafe('<span class=\"' + className + '\"></span>');\n    }\n}\nexport default helper(icon);\n","define(\"tt4/helpers/string-length\", [\"exports\", \"@movenium/ember-movenium/helpers/string-length\"], function (_exports, _stringLength) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _stringLength.default;\n    }\n  });\n  Object.defineProperty(_exports, \"stringLength\", {\n    enumerable: true,\n    get: function get() {\n      return _stringLength.stringLength;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\n// This function receives the params `params, hash`\nexport function stringToArray(params) {\n    if (typeof params[0] == 'string') {\n        return JSON.parse(params[0]);\n    }\n    return params[0];\n}\nexport default helper(stringToArray);\n","import { helper } from '@ember/component/helper';\nimport { get } from '@ember/object';\nimport { isEmpty } from '@ember/utils';\n\n/*\nThis helper is supposed to give field sums as CAPI formatted\n */\nexport function sumField(params, hash) {\n    if (isEmpty(hash.rows)) {\n        return;\n    }\n    switch (get(hash.field, 'type')) {\n        case 'number':\n        case 'hours':\n            return sumNumbers(hash.field, hash.rows);\n        case 'dropdown_options':\n        case 'dropdown_values':\n        case 'checkbox':\n            return sumDropdownAndCheckbox(hash.field, hash.rows);\n    }\n}\n\nfunction sumNumbers(field, rows) {\n    return rows\n        .reduce((a, b) => {\n            return parseFloat(get(b, get(field, 'name'))) + parseFloat(a);\n        }, 0)\n        .toFixed(2);\n}\n\nfunction sumDropdownAndCheckbox(field, rows) {\n    let options = rows.reduce((a, b) => {\n        let value = get(b, get(field, 'name'));\n        if (get(field, 'type') == 'checkbox') {\n            if (value === false) {\n                value = 'off';\n            } else if (value === true) {\n                value = 'on';\n            }\n        }\n        if (!value) {\n            return a;\n        }\n        if (isEmpty(get(a, value))) {\n            a[value] = 1;\n        } else {\n            a[value] += 1;\n        }\n        return a;\n    }, {});\n    let str = '';\n    Object.keys(options).forEach((k) => {\n        str += `${k}:${options[k]},`;\n    });\n    return str.slice(0, -1);\n}\n\nexport default helper(sumField);\n","import makeHelper from 'ember-svg-jar/utils/make-helper';\nimport makeSVG from 'ember-svg-jar/utils/make-svg';\n\nfunction getInlineAsset(assetId) {\n  try {\n    /* eslint-disable global-require */\n    return require(`ember-svg-jar/inlined/${assetId}`).default;\n  } catch (err) {\n    return null;\n  }\n}\n\nexport function svgJar(assetId, svgAttrs) {\n  return makeSVG(assetId, svgAttrs, getInlineAsset);\n}\n\nexport default makeHelper(svgJar);\n","define(\"tt4/helpers/t\", [\"exports\", \"ember-intl/helpers/t\"], function (_exports, _t) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _t.default;\n    }\n  });\n});\n","define(\"tt4/helpers/take\", [\"exports\", \"ember-composable-helpers/helpers/take\"], function (_exports, _take) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _take.default;\n    }\n  });\n});\n","define(\"tt4/helpers/task\", [\"exports\", \"ember-concurrency/helpers/task\"], function (_exports, _task) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _task.default;\n    }\n  });\n});\n","import { helper } from '@ember/component/helper';\n\nexport function toArray(params /*, hash*/) {\n    return params[0] ? params[0].toArray() : [];\n}\n\nexport default helper(toArray);\n","define(\"tt4/helpers/toggle-action\", [\"exports\", \"ember-composable-helpers/helpers/toggle-action\"], function (_exports, _toggleAction) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _toggleAction.default;\n    }\n  });\n});\n","define(\"tt4/helpers/toggle\", [\"exports\", \"ember-composable-helpers/helpers/toggle\"], function (_exports, _toggle) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _toggle.default;\n    }\n  });\n  Object.defineProperty(_exports, \"toggle\", {\n    enumerable: true,\n    get: function get() {\n      return _toggle.toggle;\n    }\n  });\n});\n","import Helper from '@ember/component/helper';\nimport { inject as service } from '@ember/service';\nimport Collector from 'tt4/injections/services/collector';\n\ninterface IHash {\n    form: string;\n    field: string;\n}\n\nexport default class TranslateColumnHelper extends Helper {\n    @service('addon/collector' as any) private collector: Collector;\n\n    public compute([], hash: IHash) {\n        return this.collector.getTranslationForColumn(hash.form, hash.field);\n    }\n}\n","define(\"tt4/helpers/union\", [\"exports\", \"ember-composable-helpers/helpers/union\"], function (_exports, _union) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _union.default;\n    }\n  });\n});\n","define(\"tt4/helpers/unix\", [\"exports\", \"ember-moment/helpers/unix\"], function (_exports, _unix) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _unix.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/user-icon.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserIconHelper;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nUserIconHelper = Ember.Helper.extend({\n    Collector: Ember.inject.service('collector-service'),\n    // This function receives the params `params, hash`\n    compute: function (params, hash) {\n        var c, color, image, inline, ret, rndColor, size;\n        c = this.get('Collector');\n        // params[0] = image\n        // params[1] = alternative text\n        // params[2] = color\n        size = hash.size ? 'icon-size-' + hash.size : '';\n        inline = hash.inline ? 'display: inline-block; ' : '';\n        if (params[0]) {\n            if (params[0].substring(0, 4) === 'http') {\n                image = params[0];\n            }\n            image = config.APP.COLLECTOR_API_URL + '/' + params[0];\n            ret =\n                \"<div class='user-icon img-circle \" +\n                size +\n                \"' style='\" +\n                inline +\n                'background-image:url(\"' +\n                image +\n                '\")\\'>&nbsp;</div>';\n        } else {\n            if (!hash.text || hash.text === ' ') {\n                return '';\n            }\n            color = hash.color;\n            if (!color) {\n                rndColor = c.randomizeColor(hash.text);\n                color = rndColor;\n            }\n            ret =\n                \"<div class='user-icon img-circle \" +\n                size +\n                \"' style='\" +\n                inline +\n                'background-color:' +\n                color +\n                \"'>\" +\n                c.shortFormat(hash.text, 2) +\n                '</div>';\n        }\n        return new Ember.String.htmlSafe(ret);\n    },\n});\n\nexport default UserIconHelper;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/helpers/user.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserHelper;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nUserHelper = Ember.Helper.extend({\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    // This function receives the params `params, hash`\n    compute: function (params, hash) {\n        var found, userid;\n        userid = params[0];\n        if (!userid) {\n            return;\n        }\n        found = this.get('store').peekRecord('user', userid);\n        if (found) {\n            return this.format(found, params[1]);\n        } else {\n            this.get('store')\n                .findRecord('user', userid)\n                .then(\n                    () => {\n                        return this.recompute();\n                    },\n                    () => {},\n                );\n            // user not found .. but it is ok\n            return '';\n        }\n    },\n    format: function (record, format) {\n        var fullname;\n        fullname = record.get('firstname') + ' ' + record.get('lastname');\n        if (!format) {\n            return fullname;\n        }\n        if (format === 'icon') {\n            return this.getIcon([record.get('image.firstObject.thumb'), fullname]);\n        }\n    },\n    getIcon: function (params) {\n        var c, color, image, ret, size;\n        c = this.get('Collector');\n        // params[0] = image\n        // params[1] = alternative text\n        // params[2] = color\n        size = '';\n        if (params[0]) {\n            if (params[0].substring(0, 4) === 'http') {\n                image = params[0];\n            }\n            image = config.APP.COLLECTOR_API_URL + '/' + params[0];\n            ret =\n                \"<div title='\" +\n                params[1] +\n                \"' class='user-icon img-circle \" +\n                size +\n                \"' style='background-image:url(\\\"\" +\n                image +\n                '\")\\'>&nbsp;</div>';\n        } else {\n            color = c.randomizeColor(params[1]);\n            ret =\n                \"<div title='\" +\n                params[1] +\n                \"' class='user-icon img-circle \" +\n                size +\n                \"' style='background-color:\" +\n                color +\n                \"'>\" +\n                c.shortFormat(params[1], 2) +\n                '</div>';\n        }\n        return new Ember.String.htmlSafe(ret);\n    },\n});\n\nexport default UserHelper;\n","define(\"tt4/helpers/utc\", [\"exports\", \"ember-moment/helpers/utc\"], function (_exports, _utc) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _utc.default;\n    }\n  });\n  Object.defineProperty(_exports, \"utc\", {\n    enumerable: true,\n    get: function get() {\n      return _utc.utc;\n    }\n  });\n});\n","define(\"tt4/helpers/values\", [\"exports\", \"ember-composable-helpers/helpers/values\"], function (_exports, _values) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _values.default;\n    }\n  });\n  Object.defineProperty(_exports, \"values\", {\n    enumerable: true,\n    get: function get() {\n      return _values.values;\n    }\n  });\n});\n","define(\"tt4/helpers/without\", [\"exports\", \"ember-composable-helpers/helpers/without\"], function (_exports, _without) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _without.default;\n    }\n  });\n  Object.defineProperty(_exports, \"without\", {\n    enumerable: true,\n    get: function get() {\n      return _without.without;\n    }\n  });\n});\n","define(\"tt4/helpers/xor\", [\"exports\", \"ember-truth-helpers/helpers/xor\"], function (_exports, _xor) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _xor.default;\n    }\n  });\n  Object.defineProperty(_exports, \"xor\", {\n    enumerable: true,\n    get: function get() {\n      return _xor.xor;\n    }\n  });\n});\n","import initialize from 'ember-modal-dialog/initializers/add-modals-container';\n\nexport default {\n  name: 'add-modals-container',\n  initialize: initialize\n};\n","import initializerFactory from 'ember-cli-app-version/initializer-factory';\nimport config from '../config/environment';\n\nlet name, version;\nif (config.APP) {\n  name = config.APP.name;\n  version = config.APP.version;\n}\n\nexport default {\n  name: 'App Version',\n  initialize: initializerFactory(name, version)\n};\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\n// Takes two parameters: container and app\nexport function initialize(application) {\n    application.inject('controller', 'Collector', 'service:collectorService');\n    application.inject('route', 'Collector', 'service:collectorService');\n    application.inject('component', 'Collector', 'service:collectorService');\n    application.inject('adapter', 'Collector', 'service:collectorService');\n}\n\nexport default {\n    name: 'Collector',\n    initialize,\n};\n","export { default, initialize } from 'ember-component-css/initializers/component-styles';\n\nimport Ember from 'ember';\n\nimport StyleNamespacingExtras from '../mixins/style-namespacing-extras';\n\n// eslint-disable-next-line ember/new-module-imports\nEmber.Component.reopen(StyleNamespacingExtras);\n","import ContainerDebugAdapter from 'ember-resolver/resolvers/classic/container-debug-adapter';\n\nexport default {\n  name: 'container-debug-adapter',\n\n  initialize() {\n    let app = arguments[1] || arguments[0];\n\n    app.register('container-debug-adapter:main', ContainerDebugAdapter);\n    app.inject('container-debug-adapter:main', 'namespace', 'application:main');\n  }\n};\n","define(\"tt4/initializers/csv\", [\"exports\", \"ember-cli-data-export/initializers/csv\"], function (_exports, _csv) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _csv.default;\n    }\n  });\n  Object.defineProperty(_exports, \"initialize\", {\n    enumerable: true,\n    get: function get() {\n      return _csv.initialize;\n    }\n  });\n});\n","export default {\r\n  name: 'buildTimestamp',\r\n\r\n  initialize (application) {\r\n    const timestamp = application.BUILD_TIMESTAMP;\r\n    const key = 'buildTimestamp';\r\n\r\n    application.register('buildTimestamp:main', timestamp, {instantiate: false, singleton: true});\r\n    application.inject('route', key, 'buildTimestamp:main');\r\n    application.inject('controller', key, 'buildTimestamp:main');\r\n    application.inject('service', key, 'buildTimestamp:main');\r\n  }\r\n};\r\n","\n        export default {\n          name: 'ember-cli-mirage',\n          initialize() {}\n        };\n      ","define(\"tt4/initializers/ember-concurrency\", [\"exports\", \"ember-concurrency/initializers/ember-concurrency\"], function (_exports, _emberConcurrency) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberConcurrency.default;\n    }\n  });\n});\n","define(\"tt4/initializers/ember-data-data-adapter\", [\"exports\", \"@ember-data/debug/setup\"], function (_exports, _setup) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _setup.default;\n    }\n  });\n});\n","import 'ember-data';\n\nimport setupContainer from 'ember-data/setup-container';\n\n/*\n  This code initializes EmberData in an Ember application.\n\n  It ensures that the `store` service is automatically injected\n  as the `store` property on all routes and controllers.\n*/\nexport default {\n  name: 'ember-data',\n  initialize: setupContainer,\n};\n","export function initialize() {\n}\n\nexport default {\n  name: 'ember-faker',\n  initialize\n};\n","import ENV from '../config/environment';\nimport Configuration from 'ember-simple-auth/configuration';\nimport setupSession from 'ember-simple-auth/initializers/setup-session';\nimport setupSessionService from 'ember-simple-auth/initializers/setup-session-service';\nimport setupSessionRestoration from 'ember-simple-auth/initializers/setup-session-restoration';\n\nexport default {\n  name: 'ember-simple-auth',\n\n  initialize(registry) {\n    const config = ENV['ember-simple-auth'] || {};\n    config.rootURL = ENV.rootURL || ENV.baseURL;\n    Configuration.load(config);\n\n    setupSession(registry);\n    setupSessionService(registry);\n    setupSessionRestoration(registry);\n  }\n};\n","define(\"tt4/initializers/excel\", [\"exports\", \"ember-cli-data-export/initializers/excel\"], function (_exports, _excel) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _excel.default;\n    }\n  });\n  Object.defineProperty(_exports, \"initialize\", {\n    enumerable: true,\n    get: function get() {\n      return _excel.initialize;\n    }\n  });\n});\n","import Ember from 'ember';\nimport config from '../config/environment';\n\nexport function initialize() {\n  var application = arguments[1] || arguments[0];\n  if (config.exportApplicationGlobal !== false) {\n    var theGlobal;\n    if (typeof window !== 'undefined') {\n        theGlobal = window;\n    } else if (typeof global !== 'undefined') {\n        theGlobal = global\n    } else if (typeof self !== 'undefined') {\n        theGlobal = self;\n    } else {\n       // no reasonable global, just bail\n       return;\n    }\n\n    var value = config.exportApplicationGlobal;\n    var globalName;\n\n    if (typeof value === 'string') {\n      globalName = value;\n    } else {\n      globalName = Ember.String.classify(config.modulePrefix);\n    }\n\n    if (!theGlobal[globalName]) {\n      theGlobal[globalName] = application;\n\n      application.reopen({\n        willDestroy: function() {\n          this._super.apply(this, arguments);\n          delete theGlobal[globalName];\n        }\n      });\n    }\n  }\n}\n\nexport default {\n  name: 'export-application-global',\n\n  initialize: initialize\n};\n","import config from 'tt4/config/environment';\nimport getScript from 'tt4/utils/getScript';\n\nexport default {\n    name: 'google-maps',\n\n    initialize() {\n        const url = `https://maps.googleapis.com/maps/api/js?key=${config.APP.GM_KEY}&libraries=geometry`;\n        getScript(url);\n    },\n};\n","import ENV from '../config/environment';\nimport Config from 'ember-bootstrap/config';\n\nexport function initialize(/* container, application */) {\n  Config.load(ENV['ember-bootstrap'] || {});\n}\n\nexport default {\n  name: 'load-bootstrap-config',\n  initialize\n};\n","import config from '../config/environment';\n\nexport function initialize() {\n  const application = arguments[1] || arguments[0];\n  const { metricsAdapters = [] } = config;\n  const { environment = 'development' } = config;\n  const options = { metricsAdapters, environment };\n\n  application.register('config:metrics', options, { instantiate: false });\n  application.inject('service:metrics', 'options', 'config:metrics');\n}\n\nexport default {\n  name: 'metrics',\n  initialize\n};\n","define(\"tt4/initializers/user-agent\", [\"exports\", \"ember-useragent/initializers/user-agent\"], function (_exports, _userAgent) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _userAgent.default;\n    }\n  });\n  Object.defineProperty(_exports, \"initialize\", {\n    enumerable: true,\n    get: function get() {\n      return _userAgent.initialize;\n    }\n  });\n});\n","define(\"tt4/injections/services/analytics\", [\"exports\", \"app/services/analytics\"], function (_exports, _analytics) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _analytics.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/capi\", [\"exports\", \"app/services/capi\"], function (_exports, _capi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _capi.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/cdn\", [\"exports\", \"app/services/cdn\"], function (_exports, _cdn) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _cdn.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/collector-service\", [\"exports\", \"app/services/collector-service\"], function (_exports, _collectorService) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _collectorService.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/collector\", [\"exports\", \"app/ember-movenium/services/collector\"], function (_exports, _collector) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _collector.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/error-handler\", [\"exports\", \"app/ember-movenium/services/error-handler\"], function (_exports, _errorHandler) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _errorHandler.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/evented\", [\"exports\", \"app/ember-movenium/services/evented\"], function (_exports, _evented) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _evented.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/forms\", [\"exports\", \"app/ember-movenium/services/forms\"], function (_exports, _forms) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _forms.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/initapp\", [\"exports\", \"app/services/initapp\"], function (_exports, _initapp) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _initapp.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/need\", [\"exports\", \"app/ember-movenium/services/needs\"], function (_exports, _needs) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _needs.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/sessionhelper\", [\"exports\", \"app/services/sessionhelper\"], function (_exports, _sessionhelper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _sessionhelper.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/surveys\", [\"exports\", \"app/services/surveys\"], function (_exports, _surveys) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _surveys.default;\n    }\n  });\n});\n","define(\"tt4/injections/services/ttapi\", [\"exports\", \"app/services/ttapi\"], function (_exports, _ttapi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _ttapi.default;\n    }\n  });\n});\n","import initializeStoreService from 'ember-data/initialize-store-service';\n\nexport default {\n  name: 'ember-data',\n  initialize: initializeStoreService,\n};\n","import { getOwner } from '@ember/application';\n\nexport default {\n  name: 'ember-gestures',\n\n  initialize: function (instance) {\n    if (typeof(instance.lookup) === \"function\") {\n      instance.lookup('service:-gestures');\n    } else {\n      // This can be removed when we no-longer support ember 1.12 and 1.13\n      getOwner(instance).lookup('service:-gestures');\n    }\n  }\n\n};\n","import HrefTo from 'ember-href-to/href-to';\n\nfunction closestLink(el) {\n  if (el.closest) {\n    return el.closest('a');\n  } else {\n    el = el.parentElement;\n    while (el && el.tagName !== 'A') {\n      el = el.parentElement;\n    }\n    return el;\n  }\n}\nexport default {\n  name: 'ember-href-to',\n  initialize(applicationInstance) {\n    // we only want this to run in the browser, not in fastboot\n    if (typeof(FastBoot) === \"undefined\") {\n      let hrefToClickHandler = function _hrefToClickHandler(e) {\n        let link = e.target.tagName === 'A' ? e.target : closestLink(e.target);\n        if (link) {\n          let hrefTo = new HrefTo(applicationInstance, e, link);\n          hrefTo.maybeHandle();\n        }\n      };\n\n      document.body.addEventListener('click', hrefToClickHandler);\n\n      // Teardown on app destruction: clean up the event listener to avoid\n      // memory leaks.\n      applicationInstance.reopen({\n        willDestroy() {\n          document.body.removeEventListener('click', hrefToClickHandler);\n          return this._super(...arguments);\n        }\n      });\n    }\n  }\n};\n","// This is only needed for backwards compatibility and will be removed in the\n// next major release of ember-simple-auth. Unfortunately, there is no way to\n// deprecate this without hooking into Ember's internals…\nexport default {\n  name: 'ember-simple-auth',\n\n  initialize() {}\n};\n","define(\"tt4/instance-initializers/route-styles\", [\"exports\", \"ember-component-css/instance-initializers/route-styles\"], function (_exports, _routeStyles) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _routeStyles.default;\n    }\n  });\n  Object.defineProperty(_exports, \"initialize\", {\n    enumerable: true,\n    get: function get() {\n      return _routeStyles.initialize;\n    }\n  });\n});\n","export default {\n    pluralForm: function () {\n        return;\n    },\n    rtl: false,\n};\n","export default {\n    'general.offline':\n        'Your network connection is out. Trying to reconnect in {{seconds}} seconds.',\n    'general.trynow': 'Try now',\n};\n","export default {\n    pluralForm: function () {\n        return;\n    },\n    rtl: false,\n};\n","export default {\n    'general.offline': 'Verkkoyhteys ei toimi. Yritä uudelleen {{seconds}} sekunnin päästä.',\n    'general.trynow': 'Kokeile nyt',\n};\n","export default {\n    pluralForm: function () {\n        return;\n    },\n    rtl: false,\n};\n","export default {\n    'general.offline':\n        'Ingen internet förbindelse hittad. Försöker pånytt om [[seconds}} sekunder.',\n    'general.trynow': 'Testa nu',\n};\n","export default {\n    pluralForm: function englishWithZero(n) {\n        if (n === 0) {\n            return 'zero';\n        }\n        if (n === 1) {\n            return 'one';\n        }\n        return 'other';\n    },\n    rtl: false,\n};\n","export default {\n    'menu.users': 'Users',\n};\n","import BaseAdapter from 'ember-metrics/metrics-adapters/base';\nimport { assert } from '@ember/debug';\nimport { isPresent } from '@ember/utils';\n/*global FirebasePlugin*/\n\n//To use this set analyticsSettings.name = FirebaseAnalytics in config/environment.js\n//Corber beforeBuild hook will set this for apps tt4/fastlane/corber/hooks/beforeBuild.js\nexport default BaseAdapter.extend({\n    toStringExtension() {\n        return 'firebase-metrics';\n    },\n\n    init() {\n        //This function is required by the adapter to function\n    },\n\n    trackEvent({ category, action }) {\n        assert(\n            \"You must give the category to firebase-metrics trackEvent method {category: 'My-Category'}\",\n            isPresent(category),\n        );\n        assert(\n            \"You must give the action to firebase-metrics trackEvent method {category: 'My-Category', action: 'someAction'}\",\n            isPresent(action),\n        );\n        FirebasePlugin.logEvent(category, { action: action });\n    },\n\n    trackPage({ page }) {\n        assert('You must give the page to firebase-metrics trackPage method', isPresent(page));\n        FirebasePlugin.setScreenName(page);\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/avi.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AviMixin;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nAviMixin = Ember.Mixin.create({\n    ttapi: Ember.inject.service(),\n    getAviData: function (params) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            if (params.project) {\n                return this.get('ttapi')\n                    .request('/avi', {\n                        type: 'GET',\n                        data: params,\n                    })\n                    .then((data) => {\n                        return resolve(data);\n                    });\n            } else {\n                return resolve({\n                    users: [],\n                    count: 0,\n                });\n            }\n        });\n    },\n});\n\nexport default AviMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/base-export.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar BaseExportMixin;\n\nimport Ember from 'ember';\n\nBaseExportMixin = Ember.Mixin.create({\n    getTable: function (columns, rows, translated_columns, sumRow) {\n        var add, array, cell, column, headers, i, j, k, l, len, len1, len2, len3, row;\n        array = [];\n        headers = [];\n        for (i = 0, len = translated_columns.length; i < len; i++) {\n            column = translated_columns[i];\n            headers.push('' + column);\n        }\n        array.push(headers);\n        //console.log rows\n        for (j = 0, len1 = rows.length; j < len1; j++) {\n            row = rows[j];\n            add = [];\n            for (k = 0, len2 = columns.length; k < len2; k++) {\n                column = columns[k];\n                cell = row[column];\n                add.push(\n                    (function () {\n                        switch (Ember.typeOf(cell)) {\n                            case 'number':\n                                return cell.toString();\n                            case 'object':\n                                if (cell.string != null) {\n                                    return cell.toString();\n                                } else {\n                                    return cell;\n                                }\n                                break;\n                            case 'string':\n                                return cell;\n                            case 'array':\n                                return cell;\n                            default:\n                                return '';\n                        }\n                    })(),\n                );\n            }\n            array.push(add);\n        }\n        if (sumRow) {\n            add = [];\n            for (l = 0, len3 = columns.length; l < len3; l++) {\n                column = columns[l];\n                cell = sumRow[column];\n                add.push(\n                    (function () {\n                        switch (Ember.typeOf(cell)) {\n                            case 'number':\n                                return cell.toString();\n                            case 'object':\n                                if (cell.string != null) {\n                                    return cell.toString();\n                                } else {\n                                    return cell;\n                                }\n                                break;\n                            case 'string':\n                                return cell;\n                            default:\n                                return '';\n                        }\n                    })(),\n                );\n            }\n            array.push(add);\n        }\n        return array;\n    },\n    // returns data in different (one row per page) format\n    getTableFullFormat: function (columns, rows, translated_columns, sumRow) {\n        var add,\n            array,\n            cell,\n            col_ind,\n            column,\n            field,\n            field_ind,\n            headers,\n            i,\n            j,\n            k,\n            l,\n            len,\n            len1,\n            len2,\n            len3,\n            row,\n            tmpcell;\n        //console.log translated_columns\n        headers = [];\n        array = [];\n        for (i = 0, len = translated_columns.length; i < len; i++) {\n            column = translated_columns[i];\n            headers.push('' + column);\n        }\n        //array.push headers\n        for (j = 0, len1 = rows.length; j < len1; j++) {\n            row = rows[j];\n            add = [];\n            if (Ember.typeOf(row) === 'array') {\n                for (field_ind = k = 0, len2 = row.length; k < len2; field_ind = ++k) {\n                    field = row[field_ind];\n                    cell = (function () {\n                        switch (Ember.typeOf(field)) {\n                            case 'number':\n                                return field.toString();\n                            case 'object':\n                                if (field.string != null) {\n                                    return field.toString();\n                                } else {\n                                    return field;\n                                }\n                                break;\n                            case 'string':\n                                return field;\n                            case 'array':\n                                return field;\n                            default:\n                                return '';\n                        }\n                    })();\n                    add.push([headers[field_ind], cell]);\n                }\n                array.push(add);\n            } else {\n                for (col_ind = l = 0, len3 = columns.length; l < len3; col_ind = ++l) {\n                    column = columns[col_ind];\n                    cell = row[column];\n                    tmpcell = (function () {\n                        switch (Ember.typeOf(cell)) {\n                            case 'number':\n                                return cell.toString();\n                            case 'object':\n                                if (cell.string != null) {\n                                    return cell.toString();\n                                } else {\n                                    return cell;\n                                }\n                                break;\n                            case 'string':\n                                return cell;\n                            default:\n                                return '';\n                        }\n                    })();\n                    add.push([headers[col_ind], tmpcell]);\n                }\n                array.push(add);\n            }\n        }\n        return array;\n    },\n});\n\nexport default BaseExportMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/base-validation.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar BaseValidationMixin;\n\nimport Ember from 'ember';\n\nimport validator from '../classes/validations';\n\nconst { getOwner } = Ember;\n\nBaseValidationMixin = Ember.Mixin.create({\n    // Properties\n\n    // Validations rules to validate fields\n    // format:\n    // validations = {\n    //       < field name >:\n    //               < validation name >: boolean|array|number|string < whatever options the validator needs/supports >\n    // }\n    validations: null,\n    // Path to validation object. If field to validate are not on mixed class set this to the path ie 'objects' => @get('objects') and @get('objects.'+field') for validation\n    validationObject: null,\n\n    // Methods\n\n    // The actual validation method\n    validate: function (fields = []) {\n        var field, options, promises, ret, rule, rules, self, validations;\n        self = this;\n        this.clearErrors(fields);\n        promises = [];\n        // Get the validation rules\n        validations = this.getValidationRules(fields);\n        // Loop trough the validation rules for each field\n        for (field in validations) {\n            rules = validations[field];\n            // Execute every rule for this field\n            for (rule in rules) {\n                options = rules[rule];\n                ret = this.executeValidations(field, rule, options);\n                promises.push(ret);\n            }\n        }\n        // When all rules are resolved we resolve the promise so you can use ex user.validate().then ->\n        return Ember.RSVP.all(promises);\n    },\n    executeValidations: function (field, rule, options) {\n        var ret, scope, validationObject, value;\n        // Check if we have a validation function by same name as the rule and execute it\n        if (typeof validator.get('validate_' + rule) === 'function') {\n            // Get the scope and value from which we are validating\n            validationObject = this.get('validationObject');\n            if (validationObject) {\n                scope = this.get(validationObject);\n                value = this.get(validationObject + '.' + field);\n            } else {\n                // or get the default scope\n                scope = this;\n                value = this.get(field);\n            }\n            ret = validator['validate_' + rule](scope, value, options, field, this);\n            // All validations should return a promise\n            return ret.then((opt) => {\n                var message;\n                // If the promise returns something we assume its an error and add this to the model\n                if (opt) {\n                    message = this.getMessage(rule, opt);\n                    return this.setError(field, message, rule);\n                }\n            });\n        }\n    },\n    // We get the error message here\n    getMessage: function (rule, ret) {\n        var validations;\n        validations = getOwner(this).lookup('service:intl');\n        return validations.t('validation.error.' + rule, ret);\n    },\n    // Set the errors\n    setError: function (field, message, rule) {\n        var arr, errors;\n        errors = this.get('errors');\n        if (errors.get(field)) {\n            return errors.set(field + '.' + rule, message);\n        } else {\n            arr = Em.Object.create();\n            arr.set(rule, message);\n            return this.set('errors.' + field, arr);\n        }\n    },\n    // Clear the errors\n    clearErrors: function (fields) {\n        var field, i, len, results;\n        if (fields.length > 0) {\n            results = [];\n            for (i = 0, len = fields.length; i < len; i++) {\n                field = fields[i];\n                results.push(this.set('errors.' + field, void 0));\n            }\n            return results;\n        } else {\n            return this.set('errors', Em.Object.create());\n        }\n    },\n    // Get the validation rules and if we have fields then only get the specific validation rules\n    getValidationRules: function (fields) {\n        var field, i, k, len, validateThese, validations;\n        validations = this.get('validations');\n        // Throw error if we don't have validations on the object\n        Em.assert('You need to set the validations rule on the object', validations);\n        // Loop trough the given fields and only return validation rules for these fields\n        if (fields.length > 0) {\n            validateThese = {};\n            for (k = i = 0, len = fields.length; i < len; k = ++i) {\n                field = fields[k];\n                validateThese[field] = validations[field];\n            }\n            return validateThese;\n        }\n        return validations;\n    },\n});\n\nexport default BaseValidationMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/clickelsewhere.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ClickElsewhereMixin;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nClickElsewhereMixin = Ember.Mixin.create({\n    outsideClickHandler: function (e) {\n        var inside;\n        inside = $(e.target).closest(this.get('element')).length === 1;\n        if (!inside && !this.get('isDestroyed')) {\n            this.onClickElsewhere(e);\n        }\n        // must return true. otherwise some other click actions may fail\n        return true;\n    },\n    onClickElsewhere: function () {},\n    clickHandler: null,\n    didInsertElement: function () {\n        this._super.apply(this, arguments);\n        this.set('clickHandler', Ember.run.bind(this, this.outsideClickHandler));\n        return $(document).on('click touchend', this.get('clickHandler'));\n    },\n    willDestroyElement: function () {\n        this._super.apply(this, arguments);\n        return $(document).off('click touchend', this.get('clickHandler'));\n    },\n});\n\nexport default ClickElsewhereMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/collector-field.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldMixin,\n    get,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\n({ get } = Ember);\n\nCollectorFieldMixin = Ember.Mixin.create({\n    form: Ember.computed.alias('field.form'),\n    object: Ember.computed.alias('field.name'),\n    disabled: false,\n    isDisabled: function () {\n        var condition, i, k, len, ref, ref1, set, v;\n        if (this.get('useAsFilter') && this.get('field.features.disabled')) {\n            return false;\n        }\n        if (\n            get(this, 'model') &&\n            !get(this, 'model.isNew') &&\n            get(this, 'field.features.lock_value')\n        ) {\n            ref = get(this, 'field.features.lock_value');\n            for (i = 0, len = ref.length; i < len; i++) {\n                set = ref[i];\n                for (k in set) {\n                    v = set[k];\n                    if (((ref1 = get(this, 'model.' + k)), indexOf.call(v.split(','), ref1) >= 0)) {\n                        return true;\n                    }\n                }\n            }\n        }\n        if (typeof this.get('field.features.disabled') === 'object') {\n            if (!this.get('model')) {\n                return false;\n            }\n            condition = this.get('field.features.disabled.condition');\n            if (\n                condition &&\n                condition.indexOf('$editing') >= 0 &&\n                this.get('field.features.disabled.value') === true &&\n                !this.get('model.isNew') === true &&\n                (condition.indexOf('$wap') === -1 || this.get('object') === 'starttime')\n            ) {\n                return true;\n            } else if (\n                this.get('field.features.disabled.value') === true &&\n                !this.get('field.features.disabled.condition')\n            ) {\n                return true;\n            }\n        } else if (\n            this.get('field.form') === 'worktime' &&\n            this.get('field.options.form') === 'project'\n        ) {\n            return false;\n        } else if (this.get('field.features.disabled')) {\n            return true;\n        }\n        return false;\n    },\n    didRender: function () {\n        return this.set('disabled', this.isDisabled());\n    },\n});\n\nexport default CollectorFieldMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/collector-validation.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorValidationMixin;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport BaseValidator from '../mixins/base-validation';\n\nimport $ from 'jquery';\n\nconst { getOwner } = Ember;\n\nCollectorValidationMixin = Ember.Mixin.create(BaseValidator, {\n    // Properties\n\n    // Collector form for fields that we are validating\n    form: null,\n    defaultValidations: {\n        username: {\n            mandatory: true,\n            username_free: true,\n            username: true,\n        },\n        password: {\n            password: true,\n        },\n    },\n\n    // Methods\n\n    // Validate method that we can call to initialize a validation\n    validate: function (fields = []) {\n        var c, collectorFields, form, validateThese;\n        // Only fetch validations if they are not set already\n        if (!this.get('validations')) {\n            // Get needed properties\n            form = this.get('constructor.modelName');\n            c = getOwner(this).lookup('service:collectorService');\n            // We need to check if \"modelName\" is set on the object, without this we cannot do anything\n            Em.assert('You need to have \"modelName\" on the object for validations to work', form);\n            // Get the fields and their settings from collector service\n            collectorFields = c.fieldArray(form);\n            validateThese = this.getFieldsToValidate(collectorFields);\n            this.set('validations', validateThese);\n        }\n        return this._super(fields);\n    },\n    // Check what fields have some kind of validation need and skip the rest\n    getFieldsToValidate: function (fields) {\n        var defaultValidations, ret;\n        ret = {};\n        defaultValidations = this.get('defaultValidations');\n        fields.forEach((options) => {\n            var formatted, method, ref, results, value;\n            if (options.features.hide === true) {\n                return;\n            }\n            if (!$.isEmptyObject(options.features)) {\n                formatted = this.convertValidations(options.features);\n                if (formatted) {\n                    ret[options.name] = formatted;\n                }\n            }\n            if (options.type in defaultValidations) {\n                if (!(options.name in ret)) {\n                    ret[options.name] = {};\n                }\n                ref = defaultValidations[options.type];\n                results = [];\n                for (method in ref) {\n                    value = ref[method];\n                    results.push((ret[options.name][method] = value));\n                }\n                return results;\n            }\n        });\n        return ret;\n    },\n    // Format collector validations to a more generic style, ie. make validate_check:minLength:15 to better format\n    convertValidations: function (options) {\n        var i, item, item_arr, len, ref, validator;\n        if (!options.validate_check && !options.mandatory && !options.unique) {\n            return;\n        }\n        validator = {};\n        if (options.validate_check) {\n            if (Array.isArray(options.validate_check)) {\n                ref = options.validate_check;\n                for (i = 0, len = ref.length; i < len; i++) {\n                    item = ref[i];\n                    if (item.substring(0, 10) === 'exact_len:') {\n                        item_arr = item.split(':');\n                        validator.length = parseInt(item_arr[1], 10);\n                    }\n                    if (item.substring(0, 9) === 'minLength') {\n                        item_arr = item.split(':');\n                        validator.minLength = parseInt(item_arr[1], 10);\n                    }\n                    if (item.substring(0, 9) === 'maxLength') {\n                        item_arr = item.split(':');\n                        validator.maxLength = parseInt(item_arr[1], 10);\n                    }\n                    if (item === 'number') {\n                        validator.number = true;\n                    }\n                    if (item === 'email') {\n                        validator.email = true;\n                    }\n                    if (item === 'multipleHours') {\n                        validator.multipleHours = true;\n                    }\n                    if (item === 'birthdate') {\n                        validator.birthdate = true;\n                    }\n                    if (item.substring(0, 6) === 'remote') {\n                        item_arr = item.split(':');\n                        validator[item_arr[1]] = true;\n                    }\n                    if (item.substring(0, 5) === 'match') {\n                        item_arr = item.split(':');\n                        validator.match = item_arr[1];\n                    }\n                    if (item === 'digits') {\n                        validator.digits = true;\n                    }\n                    if (item.substring(0, 3) === 'PIN') {\n                        item_arr = item.split(':');\n                    }\n                    if (item.substring(0, 10) === 'date_after') {\n                        item_arr = item.split(':');\n                        validator.date_after = item_arr[1];\n                    }\n                    if (item === 'hoursAndMinutes') {\n                        validator.hoursAndMinutes = true;\n                    }\n                }\n            } else if (options.validate_check.indexOf(':') > -1) {\n                item_arr = options.validate_check.split(':');\n                validator[item_arr[0]] = item_arr[1];\n            } else {\n                validator[options.validate_check] = true;\n            }\n        }\n        if (options.mandatory) {\n            validator.mandatory = options.mandatory;\n        }\n        if (options.unique) {\n            validator.unique = options.unique;\n        }\n        return validator;\n    },\n    // Set the errors\n    setError: function (field, message) {\n        //# We can't set error on a deleted model\n        if (this.get('currentState.stateName') === 'root.deleted.saved') {\n            return;\n        }\n        //# Set to dirty state because if validation errors found on record\n        //# that has no changes we get error\n        if (this.get('currentState.stateName') === 'root.loaded.saved') {\n            this.send('becomeDirty');\n        }\n        return this.get('errors').add(field, message);\n    },\n    // Clear the errors\n    clearErrors: function (fields) {\n        var errors, field, i, len, results;\n        if (fields.length > 0) {\n            results = [];\n            for (i = 0, len = fields.length; i < len; i++) {\n                field = fields[i];\n                errors = this.get('errors.' + field);\n                if (errors) {\n                    results.push(errors.clear());\n                } else {\n                    results.push(void 0);\n                }\n            }\n            return results;\n        } else {\n            return this.get('errors').clear();\n        }\n    },\n});\n\nexport default CollectorValidationMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/csv-export.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CsvExportMixin;\n\nimport Ember from 'ember';\n\nimport baseExport from './base-export';\n\nCsvExportMixin = Ember.Mixin.create(baseExport, {\n    createCsvElement: function (columns, rows, translated_columns = null, sumRow = null) {\n        if (!translated_columns) {\n            translated_columns = columns;\n        }\n        return this.getTable(columns, rows, translated_columns, sumRow);\n    },\n    createCsvFromElements: function (element, skip_headers = true) {\n        var a, blobObj, company, csvString, csv_str, j, key, len, mapped_row, name, row;\n        csv_str = [];\n        for (key = j = 0, len = element.length; j < len; key = ++j) {\n            row = element[key];\n            if (key === 0 && skip_headers) {\n                continue;\n            }\n            mapped_row = row.map(function (item) {\n                //remove linebreaks from csv string to avoid invalid format\n                if (Ember.typeOf(item) === 'string') {\n                    item.replace(/(\\r\\n\\t|\\n|\\r\\t)/gm, ' ');\n                }\n                return item;\n            });\n            csv_str.push(mapped_row.join(';'));\n        }\n        name = 'movenium_export';\n        company = this.get('session.currentUser.company');\n        if (company) {\n            name = company;\n        }\n        //create download for android app\n        if (typeof LocalFileSystem !== 'undefined' && LocalFileSystem !== null) {\n            return window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) {\n                return fileSystem.root.getFile(\n                    name + '.csv',\n                    {\n                        create: true,\n                    },\n                    function (entry) {\n                        var fileEntry;\n                        fileEntry = entry;\n                        return entry.createWriter(function (writer) {\n                            var csvString;\n                            //write file and open\n                            writer.onwrite = function (evt) {\n                                return cordova.plugins.fileOpener2.open(\n                                    fileEntry.toURL(),\n                                    'text/csv',\n                                );\n                            };\n                            csvString = csv_str.join('\\n');\n                            return writer.write(encodeURIComponent(csvString));\n                        });\n                    },\n                );\n            });\n        } else {\n            //download csv for desktop\n            csvString = csv_str.join('\\n');\n            if (window.Blob && window.navigator.msSaveOrOpenBlob) {\n                blobObj = new Blob(['\\uFEFF' + csvString], {\n                    type: 'text/csv',\n                });\n                return window.navigator.msSaveBlob(blobObj, name + '.csv');\n            } else {\n                a = document.createElement('a');\n                a.href = 'data:attachment/csv;charset=utf-8,\\uFEFF' + encodeURIComponent(csvString);\n                a.download = name + '.csv';\n                a.style.display = 'none';\n                document.body.appendChild(a);\n                return a.click();\n            }\n        }\n    },\n    createMultiCsv: function (csvString) {\n        var a, blobObj, company, name;\n        name = 'movenium_export';\n        company = this.get('session.currentUser.company');\n        if (company) {\n            name = company;\n        }\n        //create download for android app\n        if (typeof LocalFileSystem !== 'undefined' && LocalFileSystem !== null) {\n            return window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) {\n                return fileSystem.root.getFile(\n                    name + '.csv',\n                    {\n                        create: true,\n                    },\n                    function (entry) {\n                        var fileEntry;\n                        fileEntry = entry;\n                        return entry.createWriter(function (writer) {\n                            //write file and open\n                            writer.onwrite = function (evt) {\n                                return cordova.plugins.fileOpener2.open(\n                                    fileEntry.toURL(),\n                                    'text/csv',\n                                );\n                            };\n                            return writer.write(encodeURIComponent(csvString));\n                        });\n                    },\n                );\n            });\n        } else {\n            //download csv for desktop\n            if (window.Blob && window.navigator.msSaveOrOpenBlob) {\n                blobObj = new Blob(['\\uFEFF' + csvString], {\n                    type: 'text/csv',\n                });\n                return window.navigator.msSaveBlob(blobObj, name + '.csv');\n            } else {\n                a = document.createElement('a');\n                a.href = 'data:attachment/csv;charset=utf-8,\\uFEFF' + encodeURIComponent(csvString);\n                a.download = name + '.csv';\n                a.style.display = 'none';\n                document.body.appendChild(a);\n                return a.click();\n            }\n        }\n    },\n    createMultiTableCsv: function (elements, headers = false, mainHeader) {\n        var csv_multitable, csv_str, element, i, j, k, key, len, len1, mapped_row, row;\n        csv_multitable = [];\n        csv_multitable.push(mainHeader + '\\n');\n        i = 0;\n        for (j = 0, len = elements.length; j < len; j++) {\n            element = elements[j];\n            csv_str = [];\n            csv_str.push(headers[i]);\n            for (key = k = 0, len1 = element.length; k < len1; key = ++k) {\n                row = element[key];\n                mapped_row = row.map(function (item) {\n                    //remove linebreaks from csv string to avoid invalid format\n                    if (Ember.typeOf(item) === 'string') {\n                        return item.replace(/(\\r\\n\\t|\\n|\\r\\t)/gm, ' ');\n                    }\n                });\n                csv_str.push(mapped_row.join(';'));\n            }\n            csv_multitable.push(csv_str.join('\\n'));\n            i++;\n        }\n        //csv_multitable.join(\"\\n\\n\")\n        return this.createMultiCsv(csv_multitable.join('\\n\\n'));\n    },\n});\n\nexport default CsvExportMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/export-file.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ExportFileMixin;\n\nimport Ember from 'ember';\n\nExportFileMixin = Ember.Mixin.create({\n    exportFile: function (content, filename = 'export', type = 'txt') {\n        var fullFileName;\n        fullFileName = filename + '.' + type;\n        if (typeof LocalFileSystem !== 'undefined' && LocalFileSystem !== null) {\n            return this._exportLocalFile(content, fullFileName, 'text/' + type);\n        } else {\n            //download file for desktop\n            return this._createExportLink(content, fullFileName, 'attachment/' + type);\n        }\n    },\n    _exportLocalFile: function (content, fullFileName, mime) {\n        return window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) {\n            return fileSystem.root.getFile(\n                fullFileName,\n                {\n                    create: true,\n                },\n                function (entry) {\n                    var fileEntry;\n                    fileEntry = entry;\n                    return entry.createWriter(function (writer) {\n                        //write file and open\n                        writer.onwrite = function (evt) {\n                            return cordova.plugins.fileOpener2.open(fileEntry.toURL(), mime);\n                        };\n                        return writer.write(encodeURIComponent(content));\n                    });\n                },\n            );\n        });\n    },\n    _createExportLink: function (content, fullFileName, mime) {\n        var a;\n        a = document.createElement('a');\n        a.href = 'data:' + mime + ',' + encodeURIComponent(content);\n        a.target = '_blank';\n        a.download = fullFileName;\n        document.body.appendChild(a);\n        return a.click();\n    },\n});\n\nexport default ExportFileMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/filter-model.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FilterModelMixin,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nFilterModelMixin = Ember.Mixin.create({\n    Collector: Ember.inject.service('collector-service'),\n    skip_params: ['page', 'order'],\n    filteredModel: Ember.computed('model.[]', 'filters.@each.value', function () {\n        var filtered;\n        filtered = this.get('model');\n        return this._filterThese(filtered, this.get('skip_params'));\n    }),\n    _filterThese: function (filtered, skip_params) {\n        var filterBy;\n        filterBy = this.get('queryParams').filter(function (item) {\n            return !(indexOf.call(skip_params, item) >= 0);\n        });\n        filtered = filtered.filter((record) => {\n            var all_ok;\n            all_ok = true;\n            filterBy.forEach((param) => {\n                var field,\n                    fieldObj,\n                    form,\n                    i,\n                    len,\n                    moreArr,\n                    moreParam,\n                    moreTestParam,\n                    recordValue,\n                    ref,\n                    results,\n                    testValue,\n                    value;\n                value = this.get(param);\n                if (!value) {\n                    return;\n                }\n                // test more-filters\n                if (param.indexOf('more') > -1) {\n                    if (value.indexOf('|') > -1) {\n                        moreArr = value.split('|');\n                    } else {\n                        moreArr = value.split(',');\n                    }\n                    results = [];\n                    for (i = 0, len = moreArr.length; i < len; i++) {\n                        moreParam = moreArr[i];\n                        moreTestParam = moreParam.split(':');\n                        // if filter is type of form-field we change it to form.field\n                        // so we can record.get('form.field')\n                        if (moreTestParam[0].indexOf('-') > -1) {\n                            form = moreTestParam[0].slice(0, moreTestParam[0].indexOf('-'));\n                            field = moreTestParam[0].slice(moreTestParam[0].indexOf('-') + 1);\n                            if (Ember.isPresent(Ember.get(this, form))) {\n                                continue;\n                            }\n                            testValue = moreTestParam[0].replace('-', '.');\n                            fieldObj = this.get('Collector').formField(form, field);\n                            // This way we don't get error for testing out not loaded relations\n                            if (fieldObj.type === 'multiselect') {\n                                recordValue = record.get(form + '.' + field);\n                            } else if (\n                                ((ref = record.get(form)) != null\n                                    ? ref.belongsTo(field).remoteType()\n                                    : void 0) === 'id'\n                            ) {\n                                recordValue = record.get(form).belongsTo(field).id();\n                            } else {\n                                recordValue = record.get(testValue);\n                            }\n                        } else {\n                            testValue = moreTestParam[0];\n                            recordValue = record.get(testValue);\n                        }\n                        if (!this._filterModelTest(recordValue, moreTestParam[1])) {\n                            results.push((all_ok = false));\n                        } else {\n                            results.push(void 0);\n                        }\n                    }\n                    return results;\n                } else if (!this._filterModelTest(record.get(param), value)) {\n                    return (all_ok = false);\n                }\n            });\n            return all_ok;\n        });\n        return filtered;\n    },\n    _filterModelTest: function (value, test) {\n        var splitted_date;\n        // is it date interval\n        if (test.match(/[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{4}-[0-9]{2}-[0-9]{2}/g)) {\n            splitted_date = test.split('_');\n            return moment(value).isBetween(splitted_date[0], splitted_date[1], null, '[]');\n            // is it store record\n        } else if (Ember.typeOf(value) === 'instance') {\n            if (test.indexOf(',') > -1) {\n                return test.split(',').includes(value.get('id'));\n            } else {\n                if (!value.get('id')) {\n                    return !!value.findBy('id', test);\n                } else {\n                    return value.get('id') === test;\n                }\n            }\n        } else if (Ember.typeOf(value) === 'array') {\n            return value.indexOf(parseInt(test, 10)) !== -1;\n        } else {\n            // stupid checkboxes need special care..\n            if (test === 'on') {\n                return value === true;\n            } else if (test === 'off') {\n                return value === false;\n            } else {\n                return value === test;\n            }\n        }\n    },\n});\n\nexport default FilterModelMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/form-settings.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormSettingsMixin;\n\nimport Ember from 'ember';\n\nFormSettingsMixin = Ember.Mixin.create({\n    intl: Ember.inject.service(),\n    translatedName: Ember.computed('name', function () {\n        var form, name;\n        name = this.get('name');\n        if (/^\\$lang\\(.+\\)$/i.test(name)) {\n            form = this.get('form.external_type');\n            if (form) {\n                name = this.get('intl').t(\n                    this.get('form.external_type') + '.' + this.get('external_type'),\n                );\n            } else {\n                name = this.get('intl').t('form.' + this.get('external_type'));\n            }\n        }\n        return name;\n    }),\n    type: Ember.computed('value', function () {\n        if (\n            this.get('value') === 'true' ||\n            this.get('value') === 'false' ||\n            typeof this.get('value') === 'boolean'\n        ) {\n            return 'boolean';\n        }\n        return 'text';\n    }),\n});\n\nexport default FormSettingsMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/general-report.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GeneralReportMixin;\n\nimport Ember from 'ember';\n\nGeneralReportMixin = Ember.Mixin.create({\n    queryParams: ['page', 'order', 'row_info_status', 'limit', 'more'],\n});\n\nexport default GeneralReportMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/get-back.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GetBackMixin;\n\nimport Ember from 'ember';\n\nGetBackMixin = Ember.Mixin.create({\n    camefrom: null,\n    obsCameform: Ember.observer('camefrom', function () {\n        return this.refresh();\n    }),\n    afterModel: function (model, transition) {\n        this.set('form', model.form);\n        if (transition.from != null && transition.from.name !== 'massedit') {\n            this.set('camefrom', transition.from.name);\n        } else {\n            this.set('camefrom', 'index');\n        }\n        return true;\n    },\n    actions: {\n        back: function () {\n            var camefrom, form;\n            camefrom = this.get('camefrom');\n            form = this.get('form');\n            if (camefrom === 'thereport.page') {\n                return this.transitionTo('thereport.index');\n            } else if (camefrom === 'forms.form-report') {\n                return this.transitionTo('forms.form-report', {\n                    form: form,\n                });\n            } else if (camefrom === 'timetracker.aggregated.rows') {\n                return this.transitionTo('timetracker.aggregated.rows', 'all');\n            } else {\n                return this.transitionTo(this.get('camefrom'));\n            }\n        },\n    },\n});\n\nexport default GetBackMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/init-controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nimport Mixin from '@ember/object/mixin';\n\nexport default Mixin.create({\n    init_already_run: false,\n    _init_functions: function () {\n        if (this.get('init_already_run')) {\n            return;\n        }\n        return this.init_functions();\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/init-route.coffee.old\n// Generated by CoffeeScript 2.6.1\nimport Mixin from '@ember/object/mixin';\n\nexport default Mixin.create({\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        controller._init_functions();\n        return controller.set('init_already_run', true);\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/menu.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MenuMixin,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport config from '../config';\n\nimport { singularize, pluralize } from 'ember-inflector';\n\nMenuMixin = Ember.Mixin.create({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    flags: Ember.inject.service(),\n    staticMenu: Em.computed(function () {\n        var i, item, len, ref, staticMenuItems;\n        staticMenuItems = [];\n        ref = config.staticMenus;\n        for (i = 0, len = ref.length; i < len; i++) {\n            item = ref[i];\n            staticMenuItems.push(item.link[0]);\n        }\n        return staticMenuItems;\n    }),\n    getMenus: function () {\n        var active, c, dashboard, index, ls, menus, savedHideLeftMenus;\n        c = this.get('Collector');\n        ls = this.get('localStorageWrapper');\n        menus = Em.A(this.translate(config.staticMenus).concat(this.getOwnForms()));\n        active = this.get('active_menu');\n        savedHideLeftMenus = ls.getUserSetting('hidden_menus');\n        if ([101304].includes(this.session.currentUser.partnerid)) {\n            // neste\n            dashboard = menus.findBy('id', 'dashboard');\n            index = menus.indexOf(dashboard);\n            if (index > -1) {\n                menus.splice(index, 1);\n            }\n        }\n        menus = menus.map(function (item) {\n            var current, ref, ref1;\n            if (((ref = item.name), indexOf.call(savedHideLeftMenus, ref) >= 0)) {\n                item.hide_leftmenu = true;\n            }\n            if (((ref1 = item.name), indexOf.call(savedHideLeftMenus, ref1) < 0)) {\n                item.hide_leftmenu = false;\n            }\n            current = item.link[0].split('.')[0];\n            if (current === 'site_safety') {\n                current = item.link[0].split('.')[1];\n                if (item.link.length === 2) {\n                    current = item.link[1];\n                }\n            }\n            if (current === 'forms') {\n                current = item.link[1];\n            }\n            item.active = active === current;\n            return item;\n        });\n        return c.needsOfArray(\n            menus.map(function (item) {\n                return Ember.Object.create(item);\n            }),\n        );\n    },\n    getSubMenus: function (route) {\n        var c, current_menu, normalizedRoute, normalizedRouteArray;\n        c = this.get('Collector');\n        normalizedRouteArray = Em.A(route).reject(function (item) {\n            return item === 'index';\n        });\n        normalizedRoute = normalizedRouteArray.join('.');\n        if (normalizedRoute.slice(-7) === 'loading') {\n            normalizedRoute = normalizedRoute.slice(0, -8);\n        }\n        current_menu = this.matchRoutes(normalizedRoute, this.getMenus());\n        if (!current_menu) {\n            current_menu = this.matchRoutes(normalizedRoute, this.getAddLinks());\n        }\n        if (!current_menu) {\n            return;\n        }\n        return c.needsOfArray(current_menu.submenus).map(function (item) {\n            var id;\n            id = Em.isArray(item.link)\n                ? item.link[0].replace(/\\./g, '-')\n                : item.link.replace(/\\./g, '-');\n            if (!item.id) {\n                item.id = id;\n            }\n            if (!Em.isArray(item.link)) {\n                item.link = [item.link];\n            }\n            return item;\n        });\n    },\n    matchRoutes: function (normalizedRoute, menus) {\n        var current_menu;\n        current_menu = menus.find(function (item) {\n            var isMainMenuRoute, isSomeOfSubroutes;\n            //           test that we are in main menu component route or in some subroutes\n            isMainMenuRoute = item.link[0] === normalizedRoute;\n            isSomeOfSubroutes = Em.A(item.submenus).find(function (item) {\n                var i, len, link, ref, subroute;\n                link = Em.isArray(item.link) ? item.link[0] : item.link;\n                // We can also be in a subroutes subroute\n                if (link !== normalizedRoute && Em.isArray(item.subroutes)) {\n                    ref = item.subroutes;\n                    for (i = 0, len = ref.length; i < len; i++) {\n                        subroute = ref[i];\n                        if (subroute === normalizedRoute) {\n                            return true;\n                        }\n                    }\n                }\n                return link === normalizedRoute;\n            });\n            return isMainMenuRoute || isSomeOfSubroutes;\n        });\n        return current_menu;\n    },\n    getAddLinks: function () {\n        var c, links;\n        c = this.get('Collector');\n        links = this.translate(config.addLinkList).concat(this.getOwnForms(true));\n        return c.needsOfArray(\n            links.map(function (item) {\n                return Ember.Object.create(item);\n            }),\n        );\n    },\n    translate: function (menus) {\n        var c, intl;\n        intl = this.get('intl');\n        c = this.get('Collector');\n        return menus.map(function (item) {\n            var form, name, split;\n            if (Ember.typeOf(item.text) !== 'string') {\n                return item;\n            }\n            split = item.text.split('.');\n            form = false;\n            name = split[1];\n            if (Ember.typeOf(name) === 'string') {\n                if (name.slice(0, 4) === 'add_') {\n                    name = name.slice(4);\n                }\n                if (c.formExists(name)) {\n                    form = c.forms()[name];\n                } else if (c.formExists(singularize(name))) {\n                    form = c.forms()[singularize(name)];\n                }\n            }\n            item.name = item.text;\n            if (form && form.name) {\n                Ember.set(item, 'translated', form.name);\n            } else {\n                Ember.set(item, 'translated', intl.t(item.text));\n            }\n            return item;\n        });\n    },\n    saveLeftmenuHidings: function (menus) {\n        var ls;\n        if (!menus) {\n            return;\n        }\n        ls = this.get('localStorageWrapper');\n        return ls.setUserSetting(\n            'hidden_menus',\n            menus.filterBy('hide_leftmenu', true).mapBy('name'),\n        );\n    },\n    getOwnForms: function (asAddingLinks) {\n        var c, item, key, name, ref, ret, short_key;\n        c = this.get('Collector');\n        ret = [];\n        ref = c.forms();\n        for (key in ref) {\n            item = ref[key];\n            name = this.parseMeasurementName(key, item);\n            if (\n                item.privileges != null &&\n                item.privileges.access != null &&\n                item.privileges.access !== true\n            ) {\n                continue;\n            }\n            // if item is already found from staticMenus do not add it again here..\n            if (\n                this.get('staticMenu').indexOf(pluralize(key)) > -1 ||\n                this.get('staticMenu').indexOf(key) > -1\n            ) {\n                continue;\n            }\n            if (name) {\n                short_key = key.substring(12).toLowerCase();\n                if (asAddingLinks) {\n                    ret.push({\n                        needs: [key + '@add'],\n                        text: name,\n                        translated: name,\n                        link: ['site_safety.measurement.add', 'add', short_key],\n                        icon: 'move move-Length',\n                        id: key,\n                    });\n                } else {\n                    //add_link_param: key.substring(12).toLowerCase()\n                    ret.push({\n                        needs: [key + '@add'],\n                        link: ['site_safety.measurement.graphs', short_key],\n                        //link_param: key.substring(12).toLowerCase()\n                        icon: 'move move-Length',\n                        text: name,\n                        translated: name,\n                        name: name,\n                        id: key,\n                        submenus: [\n                            {\n                                text: 'own_measurement.graphs',\n                                link: 'site_safety.measurement.graphs',\n                            },\n                            {\n                                text: 'own_measurement.data',\n                                link: 'site_safety.measurement.data',\n                            },\n                            {\n                                text: 'own_measurement.notices',\n                                link: 'site_safety.measurement.notices',\n                            },\n                        ],\n                    });\n                }\n            } else if (item.name != null) {\n                if (asAddingLinks) {\n                    ret.push({\n                        needs: [key + '@add'],\n                        text: item.name.toLowerCase(),\n                        translated: item.name,\n                        link: ['forms.form-add', key],\n                        icon: 'move move-CopyRow',\n                        id: key,\n                    });\n                } else {\n                    //add_link_param: key\n                    ret.push({\n                        link: ['forms.form-report', key],\n                        //param: [key]\n                        icon: 'move move-CopyRow',\n                        text: item.name,\n                        name: item.name,\n                        translated: item.name,\n                        id: key,\n                    });\n                }\n            }\n        }\n        return ret;\n    },\n    parseMeasurementName: function (key, item) {\n        var name;\n        if (key.substring(0, 11) !== 'measurement') {\n            return;\n        }\n        name = key.substring(12).toLowerCase();\n        if (item.name != null) {\n            name = item.name;\n        }\n        return name;\n    },\n});\n\n/*\nshared_report:\n    link: 'shared.report'\n    icon: 'icon-TodoList'\n    text: @get('intl').t(\"menu.shared.report\")\n    route: 'report'\n *        shared_stamp:\n *            link: 'shared.index'\n *            icon: 'icon-POSTerminalFilled'\n *            text: @get('intl').t(\"menu.shared.stamp\")\n *            route: 'index'\nshared_accident:\n    link: 'shared.accident'\n    icon: 'icon-TodoList'\n    text: @get('intl').t(\"menu.shared.accident\")\n    route: 'accident'\nshared_users:\n    link: 'shared.users'\n    icon: 'icon-TodoList'\n    text: @get('intl').t(\"menu.shared.users\")\n    route: 'users'\nshared_project:\n    link: 'shared.project'\n    icon: 'icon-GeoFence'\n    text: @get('intl').t(\"menu.shared.project\")\n    route: 'project'\n\n}\n */\nexport default MenuMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/pdf-export.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PdfExportMixin;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport baseExport from './base-export';\n\nimport $ from 'jquery';\n\nimport { getAssetFolder, getScriptsInOrder } from 'tt4/utils/getScript';\n\nPdfExportMixin = Ember.Mixin.create(baseExport, {\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    totalPdfImages: 0,\n    cordova: Ember.inject.service('own-cordova-service'),\n    createPdfFromElements: function (\n        elements,\n        mode = 'download',\n        headers = '',\n        headerSize = 8,\n        exportParams = {},\n    ) {\n        if (this.get('totalPdfImages') > 10) {\n            this.get('gui').set('showStickyNote', true);\n            this.get('gui').set('rawStickyValue', 100);\n            this.get('gui').set('stickyValue', this.get('intl').t('export.pdf.started_generating'));\n        }\n        //console.log \"start: \"+moment().format(\"mm:ss\")\n        this.set('full_pdf_export', false);\n        this.set('totalPdfImages', 0);\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var orientation, pdf_content;\n            pdf_content = [];\n            orientation = Ember.get(exportParams, 'orientation')\n                ? Ember.get(exportParams, 'orientation')\n                : 'portrait';\n            return this.getHeaders(headers, headerSize).then((headers) => {\n                var assetsfolder, docDefinition, element, i, len, pageSize;\n                pdf_content.push(headers);\n                if (!this.get('doNotPutElementsInColumns')) {\n                    elements = this.putElementsInColumns(elements);\n                }\n                for (i = 0, len = elements.length; i < len; i++) {\n                    element = elements[i];\n                    if (!element) {\n                        return;\n                    }\n                    if (element.table && !Ember.get(exportParams, 'orientation')) {\n                        if (element.table.body[0].length > 7) {\n                            orientation = 'landscape';\n                        }\n                    }\n                    pdf_content.push(element);\n                }\n                pageSize = 'A4';\n                if (Ember.get(exportParams, 'signature')) {\n                    pdf_content.push({\n                        style: 'marginTop',\n                        table: {\n                            widths: ['auto', 140, 30, 'auto', 140],\n                            body: [\n                                [\n                                    {\n                                        border: [false, true, false, false],\n                                        text: this.get('intl').t('report.worktask.signature') + ':',\n                                    },\n                                    {\n                                        border: [false, true, false, false],\n                                        text: '',\n                                    },\n                                    {\n                                        border: [false, false, false, false],\n                                        text: '',\n                                    },\n                                    {\n                                        border: [false, true, false, false],\n                                        text: this.get('intl').t('thereport.print_name') + ':',\n                                    },\n                                    {\n                                        border: [false, true, false, false],\n                                        text: '',\n                                    },\n                                ],\n                            ],\n                        },\n                    });\n                    if (Ember.get(exportParams, 'dateAndPlace')) {\n                        pdf_content.push({\n                            style: 'marginTop',\n                            table: {\n                                widths: ['auto', 140, 55, 'auto', 140],\n                                body: [\n                                    [\n                                        {\n                                            border: [false, true, false, false],\n                                            text: this.get('intl').t('thereport.date') + ':',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: '',\n                                        },\n                                        {\n                                            border: [false, false, false, false],\n                                            text: '',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: this.get('intl').t('thereport.place') + ':',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: '',\n                                        },\n                                    ],\n                                ],\n                            },\n                        });\n                    }\n                }\n                if (\n                    elements[0].table != null &&\n                    exportParams.imgLocation != null &&\n                    exportParams.imgLocation === 'afterReport'\n                ) {\n                    pdf_content.push(this.tryToExtractImages(elements[0].table.body, orientation));\n                }\n                docDefinition = {\n                    content: pdf_content,\n                    pageSize: 'A4',\n                    pageOrientation: orientation,\n                    footer: (currentPage, pageCount) => {\n                        return this.getFooter(currentPage, pageCount);\n                    },\n                    pageMargins: [15, 15, 15, 15],\n                    styles: {\n                        tableHeader: {\n                            bold: true,\n                        },\n                        bigText: {\n                            bold: true,\n                            fontSize: 20,\n                        },\n                        table: {\n                            fontSize: 10,\n                        },\n                        footer: {\n                            fontSize: 8,\n                            color: 'grey',\n                        },\n                        headertext: {\n                            fontSize: 8,\n                        },\n                        marginTop: {\n                            margin: [0, 40, 0, 0],\n                        },\n                    },\n                };\n                //console.log(JSON.stringify(docDefinition, null, 4))\n                //return\n                assetsfolder = getAssetFolder('assets');\n                return getScriptsInOrder([\n                    assetsfolder + 'pdfmake_v0.1.68.min.js',\n                    assetsfolder + 'vfs_fonts_v0.1.68.min.js',\n                ]).then(() => {\n                    return createPdf(docDefinition)._createDoc({}, () => {\n                        var item, j, len1;\n                        for (j = 0, len1 = pdf_content.length; j < len1; j++) {\n                            item = pdf_content[j];\n                            if (\n                                item.style === 'table' &&\n                                item._maxWidth > 842 &&\n                                orientation !== 'portrait'\n                            ) {\n                                pageSize = {\n                                    height: item._maxWidth,\n                                    width: item._maxWidth / Math.sqrt(2),\n                                };\n                                continue;\n                            }\n                        }\n                        docDefinition.pageSize = pageSize;\n                        //console.log(JSON.stringify(docDefinition, null, 4))\n                        //return\n                        if (mode === 'download') {\n                            if (typeof cordova !== 'undefined' && cordova !== null) {\n                                createPdf(docDefinition).getBuffer((buffer) => {\n                                    var binaryArray, promise, utf8;\n                                    utf8 = new Uint8Array(buffer);\n                                    binaryArray = utf8.buffer;\n                                    promise = this.get('cordova').saveFile(\n                                        binaryArray,\n                                        'export',\n                                        'pdf',\n                                    );\n                                    return promise.then(function (file) {\n                                        return resolve(file);\n                                    });\n                                });\n                            } else {\n                                resolve(createPdf(docDefinition).download('export.pdf'));\n                            }\n                            return this.get('gui').set(\n                                'stickyValue',\n                                this.get('intl').t('export.pdf.done_generating'),\n                            );\n                        } else if (mode === 'base64') {\n                            return createPdf(docDefinition).getBase64(function (file) {\n                                return resolve(file);\n                            });\n                        }\n                    });\n                });\n            });\n        });\n    },\n    tryToExtractImages: function (data, orientation) {\n        var allImages, el, element, i, j, len, len1, maxHeight, maxWidth;\n        if (orientation === 'landscape') {\n            maxHeight = 570;\n            maxWidth = 830;\n        } else {\n            maxHeight = 830;\n            maxWidth = 570;\n        }\n        // A4 - 595 × 842\n        allImages = [];\n        for (i = 0, len = data.length; i < len; i++) {\n            element = data[i];\n            //console.log data\n            for (j = 0, len1 = element.length; j < len1; j++) {\n                el = element[j];\n                if (el.image) {\n                    allImages.push({\n                        image: el.image,\n                        maxHeight: maxHeight,\n                        maxWidth: maxWidth,\n                    });\n                }\n            }\n        }\n        return allImages;\n    },\n    putElementsInColumns: function (elements) {\n        var cell, element, fillingColumn, i, len, ret, row;\n        ret = [];\n        row = [];\n        cell = [];\n        for (i = 0, len = elements.length; i < len; i++) {\n            element = elements[i];\n            if (!element.column) {\n                if (fillingColumn) {\n                    row.push(cell);\n                    cell = [];\n                    ret.push({\n                        columns: row,\n                    });\n                }\n                row = [];\n                ret.push(element);\n                fillingColumn = null;\n            } else {\n                if (fillingColumn && fillingColumn < element.column) {\n                    row.push(cell);\n                    cell = [];\n                }\n                if (fillingColumn && fillingColumn > element.column) {\n                    row.push(cell);\n                    cell = [];\n                    ret.push({\n                        columns: row,\n                    });\n                    row = [];\n                }\n                if (!element.width) {\n                    element.width = '*';\n                }\n                cell.push(element);\n                fillingColumn = element.column;\n            }\n        }\n        if (fillingColumn) {\n            row.push(cell);\n            ret.push({\n                columns: row,\n            });\n        }\n        return ret;\n    },\n    /*\n  Creates pdf table from given data\n\n  columns: ['col1','col2']\n  rows: [\n     {col1: \"cell_1\", col2: \"cell_2\"}\n  ]\n  */\n    createPdfTableElement: function (\n        columns,\n        rows,\n        translated_columns = null,\n        sumRow = null,\n        extraSettings = false,\n    ) {\n        var i, indexOf, item, j, k, len, len1, len2, row, spliced;\n        if (!translated_columns) {\n            translated_columns = columns;\n        }\n        for (indexOf = i = 0, len = rows.length; i < len; indexOf = ++i) {\n            row = rows[indexOf];\n            if (Array.isArray(row)) {\n                spliced = rows.splice(indexOf);\n                for (j = 0, len1 = spliced.length; j < len1; j++) {\n                    item = spliced[j];\n                    for (k = 0, len2 = item.length; k < len2; k++) {\n                        row = item[k];\n                        rows.push(row);\n                    }\n                }\n            }\n        }\n        return {\n            table: {\n                headerRows: 1,\n                widths: this.getWidths(columns),\n                body: this.getTable(columns, rows, translated_columns, sumRow),\n            },\n            layout: 'lightHorizontalLines',\n            margin: [2, 2, 10, 10],\n            style: 'table',\n        };\n    },\n    createPdfTableElementRows: function (\n        columns,\n        rows,\n        translated_columns = null,\n        sumRow = null,\n        insertPageBreak = false,\n    ) {\n        var c,\n            i,\n            img_rows,\n            j,\n            len,\n            len1,\n            row,\n            row_ind,\n            sub_ind,\n            subrow,\n            tables,\n            text_rows,\n            tmp_table;\n        this.set('doNotPutElementsInColumns', true);\n        c = this.get('Collector');\n        if (!translated_columns) {\n            translated_columns = columns;\n        }\n        rows = this.getTableFullFormat(columns, rows, translated_columns, sumRow);\n        tables = [];\n        for (row_ind = i = 0, len = rows.length; i < len; row_ind = ++i) {\n            row = rows[row_ind];\n            text_rows = [];\n            img_rows = [];\n            // separate images into own array\n            for (sub_ind = j = 0, len1 = row.length; j < len1; sub_ind = ++j) {\n                subrow = row[sub_ind];\n                if (Ember.typeOf(subrow[1]) === 'object') {\n                    img_rows.push(subrow);\n                } else {\n                    text_rows.push(subrow);\n                }\n            }\n            tmp_table = [\n                {\n                    table: {\n                        headerRows: 1,\n                        body: text_rows,\n                        dontBreakRows: true,\n                    },\n                    layout: 'noBorders',\n                    margin: [2, 2, 10, 10],\n                    style: 'table',\n                },\n            ];\n            // if there are images, push them into array\n            if (img_rows.length > 0) {\n                tmp_table.push(img_rows);\n            }\n            tables.push(tmp_table);\n            // after every table, add one linebreak (or pagebreak) to separate them better\n            if (row_ind + 1 !== rows.length) {\n                if (insertPageBreak) {\n                    tables.push({\n                        text: '',\n                        pageBreak: 'after',\n                    });\n                } else {\n                    tables.push('\\n');\n                    tables.push('\\n');\n                }\n            }\n        }\n        //removing this line for now because for some strange reason it makes full pdf look very crappy SUP-2070\n        //tables.push {canvas: [{ type: 'line', x1: 0, y1: 5, x2: 595-2*40, y2: 5, lineWidth: 1 }]}\n        return tables;\n    },\n    createPdfElement: function (text, pageBreak = 'after') {\n        return {\n            text: text,\n            pageBreak: pageBreak,\n            margin: [0, 10, 0, 0],\n        };\n    },\n    createPdfHeaderElement: function (text) {\n        return {\n            text: text,\n            style: 'tableHeader',\n            margin: [0, 10, 0, 0],\n        };\n    },\n    getWidths: function (columns) {\n        var colObj, column, i, len, ref, widths;\n        widths = [];\n        for (i = 0, len = columns.length; i < len; i++) {\n            column = columns[i];\n            if (\n                !this.get('form') ||\n                column === 'id' ||\n                column === 'row_info.created' ||\n                column === 'row_info.modified' ||\n                column === 'status_last_changed'\n            ) {\n                widths.push('auto');\n            } else {\n                colObj = this.get('Collector').field(this.get('form'), column);\n                if (\n                    (ref = colObj['type']) === 'textbox' ||\n                    ref === 'textarea' ||\n                    ref === 'textarea_varchar'\n                ) {\n                    widths.push(200);\n                } else {\n                    widths.push('auto');\n                }\n            }\n        }\n        return widths;\n    },\n    getFooter: function (currentPage, pageCount) {\n        return {\n            columns: [\n                {\n                    text: 'movenium.com',\n                    style: 'footer',\n                    margin: [20, 2, 0, 0],\n                },\n                {\n                    text: moment().format('L') + '  ' + currentPage.toString() + '/' + pageCount,\n                    style: 'footer',\n                    margin: [0, 2, 20, 0],\n                    alignment: 'right',\n                },\n            ],\n        };\n    },\n    getHeaders: function (additionalheaders, headerSize) {\n        var c;\n        c = this.get('Collector');\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return c.getLogo().then((logo) => {\n                var company, session;\n                session = this.get('session');\n                company = session.get('currentUser.company');\n                return resolve({\n                    columns: [\n                        [\n                            {\n                                fit: [120, 40],\n                                image: logo,\n                                margin: [0, 0, 0, 20],\n                            },\n                            {\n                                text: additionalheaders,\n                                style: 'headertext',\n                                fontSize: headerSize,\n                            },\n                        ],\n                        {\n                            width: '*',\n                            text: company || '',\n                            alignment: 'right',\n                            fontSize: 22,\n                            margin: [0, 0, 0, 20],\n                        },\n                    ],\n                });\n            });\n        });\n    },\n    getImageUriRotated: function (url, rotateImages, type = null) {\n        var d, img, self;\n        d = new $.Deferred();\n        self = this;\n        img = new Image();\n        img.onload = function () {\n            var canvas, ctx, dataUrl, degrees;\n            canvas = document.createElement('canvas');\n            ctx = canvas.getContext('2d');\n            //canvas.style.width=\"20%\"\n            if (img.width < img.height && rotateImages) {\n                degrees = 90;\n            } else {\n                degrees = 0;\n            }\n            if (degrees === 90 || degrees === 270) {\n                canvas.width = this.height;\n                canvas.height = this.width;\n            } else {\n                canvas.width = this.width;\n                canvas.height = this.height;\n            }\n            self.set('pdfImageSize', this.width);\n            ctx.clearRect(0, 0, canvas.width, canvas.height);\n            //console.log img.height\n            //console.log img.width\n            if (degrees === 90 || degrees === 270) {\n                ctx.translate(img.height / 2, img.width / 2);\n            } else {\n                ctx.translate(img.width / 2, img.height / 2);\n            }\n            ctx.rotate((degrees * Math.PI) / 180);\n            ctx.drawImage(img, -img.width / 2, -img.height / 2);\n            if (type && type === 'image/png') {\n                dataUrl = canvas.toDataURL('image/png', 0.8);\n            } else {\n                dataUrl = canvas.toDataURL('image/jpeg', 0.8);\n            }\n            return d.resolve({\n                dataUrl: dataUrl,\n                width: this.width,\n                height: this.height,\n            });\n        };\n        img.setAttribute('crossOrigin', 'anonymous');\n        if (url.includes('https://')) {\n            img.src = url;\n        } else {\n            img.src = config.APP.COLLECTOR_API_URL + '/' + url;\n        }\n        img.onerror = function () {\n            return d.resolve(false);\n        };\n        return d;\n    },\n    getImageUri: function (url) {\n        var d, img, self;\n        d = new $.Deferred();\n        self = this;\n        img = new Image();\n        img.onload = function () {\n            var canvas, ctx, dataUrl;\n            canvas = document.createElement('canvas');\n            // calculate new dimensions so image isn't bigger than width of pdf-page\n            /*\n      if @width > pdf_max_width and self.get('full_pdf_export')\n          resize_factor = pdf_max_width / @width\n      else if self.get('full_pdf_export')\n          resize_factor = 0.75 # for some reason pdfmake scales all images up\n      else\n          resize_factor = 1*/\n            self.set('pdfImageSize', this.width);\n            canvas.width = this.width;\n            canvas.height = this.height;\n            ctx = canvas.getContext('2d');\n            ctx.drawImage(img, 0, 0);\n            dataUrl = canvas.toDataURL();\n            return d.resolve(dataUrl);\n        };\n        img.setAttribute('crossOrigin', 'anonymous');\n        img.src = config.APP.COLLECTOR_API_URL + '/' + url;\n        img.onerror = function () {\n            return d.resolve(false);\n        };\n        return d;\n    },\n    formatImagesToPdf: function (fields, model) {\n        var field, i, imgs, len, promise, ref;\n        imgs = [];\n        promise = $.Deferred();\n        for (i = 0, len = fields.length; i < len; i++) {\n            field = fields[i];\n            if ((ref = field['type']) === 'hdfile' || ref === 'signature') {\n                imgs.push(\n                    new Em.RSVP.Promise((resolve, reject) => {\n                        var img, imgArr, j, len1, ref1;\n                        imgArr = [];\n                        ref1 = model.get(field['ext']);\n                        for (j = 0, len1 = ref1.length; j < len1; j++) {\n                            img = ref1[j];\n                            //console.log img[\"name\"]\n                            imgArr.push(\n                                this.formatImageToPdf(img, 'list', 400, false, 'true', {\n                                    string: img['name'],\n                                }),\n                            );\n                        }\n                        //resolve(imgArr)\n                        return Em.RSVP.Promise.all(imgArr).then(function (data) {\n                            //console.log data\n                            return promise.resolve(data);\n                        });\n                    }),\n                );\n            }\n        }\n        return promise;\n    },\n    //    pdf_output_images.push\n    //console.log col\n    //    console.log row.get(col['ext_type'])\n\n    // returns pdf-formatted image-promise\n    formatImageToPdf: function (\n        cell,\n        type,\n        size = false,\n        rotateImages = false,\n        imageSize = '',\n        name = false,\n    ) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var img;\n            if (imageSize === 'hideImages') {\n                resolve('');\n                return;\n            }\n            if (this.get('full_pdf_export')) {\n                img = cell.url;\n            } else if (imageSize === 'thumbnails' || imageSize === 'afterReport') {\n                size = 50;\n                // Use cell.url (proxy URL) instead of cell.s3thumb (signed S3 URL) to avoid CORS issues.\n                // Signed S3 URLs cannot be fetched client-side due to CORS restrictions.\n                // The proxy URL (uploads/?...) fetches from S3 server-side and returns with proper CORS headers.\n                // Full image is used but scaled down to thumbnail size (50px) for display.\n                img = cell.url;\n            } else {\n                img = cell.url;\n            }\n            return this.getImageUriRotated(img, rotateImages, cell.type).then((imageObj) => {\n                var image, imageWidth, pdf_max_width, resize_factor;\n                image = imageObj['dataUrl'];\n                imageWidth = imageObj['width'];\n                resize_factor = 0.75;\n                if (\n                    this.get('full_pdf_export') ||\n                    imageSize === 'thumbnails' ||\n                    imageSize === 'afterReport'\n                ) {\n                    pdf_max_width = size ? size : 300;\n                    if (imageWidth > pdf_max_width) {\n                        resize_factor = pdf_max_width / imageWidth;\n                    }\n                }\n                if (imageSize === 'true') {\n                    resize_factor = 1;\n                    if (imageWidth > 500) {\n                        imageWidth = 500;\n                    }\n                }\n                //    imageWidth = imageObj[\"width\"]\n                //    console.log @get('pdfImageSize')\n                if (cell.name === 'signature.png') {\n                    resize_factor = 1;\n                }\n                if (type === 'list') {\n                    if (image) {\n                        return resolve({\n                            name: name,\n                            value: {\n                                image: image,\n                                margin: [5, 5, 5, 5],\n                                alignment: 'center',\n                                width: parseInt(imageWidth * resize_factor),\n                            },\n                        });\n                    } else {\n                        return resolve({\n                            name: name,\n                            value: '',\n                        });\n                    }\n                } else if (type === 'row') {\n                    if (image) {\n                        return resolve({\n                            image: image,\n                            margin: [0, 5, 0, 5],\n                            alignment: 'center',\n                            width: parseInt(imageWidth * resize_factor),\n                        });\n                    } else {\n                        return resolve('');\n                    }\n                }\n            });\n        });\n    },\n    // Formats collector fields names and values to a PDF friendly array\n    // TODO: Only supports type \"list\" at the moment, should probably also support table rows\n    formatCollectorFieldsToPdfArray: function (\n        fields,\n        model,\n        type = 'list',\n        return_fields = false,\n        add_titles = false,\n        rotateImages = false,\n        whatAboutImages = 'showImages',\n    ) {\n        var c, promise, rows, self, totalImages;\n        self = this;\n        promise = $.Deferred();\n        c = this.get('Collector');\n        rows = [];\n        totalImages = this.get('totalPdfImages');\n        $.each(fields, (key, column) => {\n            var cell, formatted, name, ref;\n            column = Em.Object.create(column);\n            if (!column.get('ext')) {\n                column.set('ext', key);\n            }\n            if (column.get('ext').indexOf('_minus') > -1) {\n                return;\n            }\n            if (return_fields && return_fields.indexOf(column.get('ext')) < 0) {\n                return;\n            }\n            cell = model.get(column.get('ext'));\n            if (column.get('ext') === 'status_last_changed') {\n                rows.push(model.get('status_last_changed'));\n                return;\n            }\n            // name is only used when creating pdf-report from binoculars-page (show-component)\n            if (column.translated_name) {\n                name = column.translated_name;\n            } else if (!model.get('constructor.modelName')) {\n                name = '';\n            } else {\n                name = c.getFieldName(model.get('constructor.modelName'), column);\n            }\n            //if column.get('type') not in ['hdfile','signature'] and cell? and whatAboutImages == \"onlyImages\"\n            //    rows.push \"\"\n            if (((ref = column.get('type')) === 'hdfile' || ref === 'signature') && cell != null) {\n                return rows.push(\n                    new Em.RSVP.Promise((resolve, reject) => {\n                        var i, img, imgs, j, len, len1, size, tmpArr;\n                        if (\n                            (typeof cell === 'object' && cell.length === 0) ||\n                            whatAboutImages === 'hideImages'\n                        ) {\n                            resolve('');\n                        }\n                        if (whatAboutImages === 'showOnlyNames') {\n                            tmpArr = [];\n                            for (i = 0, len = cell.length; i < len; i++) {\n                                img = cell[i];\n                                //console.log img\n                                tmpArr.push(img['name']);\n                            }\n                            resolve(tmpArr);\n                        }\n                        if (\n                            typeof cell !== 'string' &&\n                            cell.length > 0 &&\n                            (whatAboutImages === 'showImages' || whatAboutImages === 'thumbnails')\n                        ) {\n                            imgs = [];\n                            size = false;\n                            if (cell.length > 1) {\n                                size = 270;\n                            } else {\n                                rotateImages = false;\n                            }\n                            // lets iterate all\n                            for (j = 0, len1 = cell.length; j < len1; j++) {\n                                img = cell[j];\n                                if (\n                                    img.type != null &&\n                                    !['image/png', 'image/jpg', 'image/jpeg'].includes(img.type)\n                                ) {\n                                    continue;\n                                }\n                                imgs.push(\n                                    this.formatImageToPdf(\n                                        img,\n                                        type,\n                                        size,\n                                        rotateImages,\n                                        whatAboutImages,\n                                        name,\n                                    ),\n                                );\n                                this.incrementProperty('totalPdfImages');\n                            }\n                            //imgs.push \"1\"\n                            //console.log totalImages\n                            return Em.RSVP.Promise.all(imgs).then(function (data) {\n                                var imgData, imgRow, imgTable, k, len2;\n                                imgData = [];\n                                imgRow = [];\n                                if (data.length > 1) {\n                                    for (k = 0, len2 = data.length; k < len2; k++) {\n                                        img = data[k];\n                                        imgRow.push(img);\n                                        if (imgRow.length === 2) {\n                                            imgData.push(imgRow);\n                                            imgRow = [];\n                                        }\n                                    }\n                                    // add last image (also add one empty cell so table is valid)\n                                    if (imgRow.length > 0) {\n                                        imgRow.push('');\n                                        imgData.push(imgRow);\n                                    }\n                                    imgTable = {\n                                        table: {\n                                            body: imgData,\n                                        },\n                                        layout: 'noBorders',\n                                    };\n                                } else {\n                                    imgTable = data;\n                                }\n                                //console.log(JSON.stringify(imgTable, null, 4))\n                                //console.log imgData\n                                return resolve(imgTable);\n                            });\n                        } else if (cell.url && whatAboutImages === 'showImages') {\n                            return resolve(this.formatImageToPdf(cell, type, false, false, name));\n                        } else if (typeof cell === 'string' && cell !== '') {\n                            // mongo returns already base64-string so we just add it to pdf\n                            return resolve({\n                                image: cell,\n                                margin: [0, 5, 0, 5],\n                                alignment: 'center',\n                                width: 80,\n                            });\n                        } else {\n                            return resolve('');\n                        }\n                    }),\n                );\n            } else {\n                if (model.get('constructor.modelName')) {\n                    if (cell === 0) {\n                        formatted = '' + 0;\n                    } else {\n                        formatted = c._format_(\n                            cell,\n                            model.get('constructor.modelName'),\n                            column.get('ext'),\n                            'pdf',\n                            model,\n                        );\n                    }\n                } else {\n                    formatted = c.format(cell, column, null, model, true);\n                }\n                if (!formatted) {\n                    formatted = '';\n                }\n                if (typeof formatted === 'object' && formatted) {\n                    formatted = formatted;\n                }\n                if (type === 'list') {\n                    if (name) {\n                        return rows.push({\n                            name: name,\n                            value: formatted,\n                        });\n                    } else {\n                        return rows.push({\n                            name: name,\n                            value: formatted,\n                        });\n                    }\n                } else if (type === 'row') {\n                    if (add_titles) {\n                        formatted = name(+': ' + formatted);\n                    }\n                    return rows.push(formatted);\n                }\n            }\n        });\n        Em.RSVP.Promise.all(rows).then(function (data) {\n            return promise.resolve(data);\n        });\n        return promise;\n    },\n    _formatDatabaseArray: function (cell, column) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var promises;\n            promises = [];\n            cell.forEach((tmp) => {\n                return promises.push(\n                    new Ember.RSVP.Promise((resolve) => {\n                        return this.get('Collector')\n                            .getRecordArray(column.options.form, [tmp.get('id')])\n                            .then((records) => {\n                                var field, i, len, record, ref, values;\n                                record = records[0];\n                                values = [];\n                                ref = column.options.fields;\n                                for (i = 0, len = ref.length; i < len; i++) {\n                                    field = ref[i];\n                                    cell = record.get(field);\n                                    if (cell && cell.then != null) {\n                                        values.push(\n                                            this._formatDatabaseCell(\n                                                cell,\n                                                column.options.form,\n                                                field,\n                                            ),\n                                        );\n                                    } else if (cell && Ember.typeOf(cell) === 'instance') {\n                                        values.push(cell.get('name'));\n                                    } else {\n                                        values.push(cell);\n                                    }\n                                }\n                                return Ember.RSVP.Promise.all(values).then(\n                                    function (resolved_values) {\n                                        return resolve(resolved_values.join(' '));\n                                    },\n                                );\n                            });\n                    }),\n                );\n            });\n            return Ember.RSVP.Promise.all(promises).then(function (results) {\n                return resolve(results.join('\\n'));\n            });\n        });\n    },\n    _formatDatabaseCell: function (record, form, field) {\n        return new Ember.RSVP.Promise(function (resolve) {\n            return record.then(function (res) {\n                // TODO: fields should be fetched from /forms .. not just guess \"name\"\n                return resolve(res ? res.get('name') : res);\n            });\n        });\n    },\n    formatWeatherForPDF: function (weather) {\n        var json, text;\n        if (!weather) {\n            return '-';\n        }\n        json = JSON.parse(weather);\n        if (!json.temperature) {\n            json.temperature = '-';\n        }\n        if (!json.windspeed) {\n            json.windspeed = '-';\n        }\n        if (!json.humidity) {\n            json.humidity = '-';\n        }\n        if (!json.dew_point) {\n            json.dew_point = '-';\n        }\n        text = json.temperature + ' °C, ' + json.windspeed + ' m/s ';\n        text += json.humidity + ' % ' + this.get('intl').t('worksitediary.abbr_rel_hum') + ', ';\n        text += this.get('intl').t('worksitediary.abbr_dew_point') + ': ' + json.dew_point + ' °C';\n        return text;\n    },\n    exportCollectorPdf: function (fields, model, columns = ['name', 'value']) {\n        var promise, self;\n        self = this;\n        promise = this.formatCollectorFieldsToPdfArray(fields, model, 'list', false, true);\n        return promise.then(function (data) {\n            var element;\n            element = self.createPdfTableElement(columns, data, ['', '']);\n            return self.createPdfFromElements([element]).then(function (file) {\n                if (typeof cordova !== 'undefined' && cordova !== null) {\n                    return self.get('cordova').openFile(file.localURL, 'application/pdf');\n                }\n            });\n        });\n    },\n    createPdfListElements: function (form) {\n        var c, fields, i, item, len, names;\n        c = this.get('Collector');\n        fields = c.fieldArray(form);\n        names = [];\n        for (i = 0, len = fields.length; i < len; i++) {\n            item = fields[i];\n            names.push(item.translated_name);\n        }\n        return names;\n    },\n    getPdfFilters: function (rows) {\n        var c, filter, filterName, filterValue, i, len, pdf_filters_body, ref, value;\n        c = this.get('Collector');\n        pdf_filters_body = [];\n        ref = this.get('filters');\n        for (i = 0, len = ref.length; i < len; i++) {\n            filter = ref[i];\n            if (filter.get('value') && filter.get('name') !== 'groupBy') {\n                if (Ember.isArray(filter.get('value')) && filter.get('value.length') === 0) {\n                    continue;\n                }\n                if (filter.get('type') === 'database') {\n                    value = parseInt(filter.get('value'));\n                } else {\n                    value = filter.get('value');\n                }\n                if (filter.get('bindto') && !filter.get('field')) {\n                    filterValue = value;\n                    filterName = this.get('intl').t('filters.free_search');\n                } else {\n                    filterValue = c._format_(\n                        value,\n                        filter.get('form'),\n                        filter.get('field'),\n                        'pdf',\n                        rows,\n                    );\n                    filterName = this.get('intl').t(filter.get('form') + '.' + filter.get('name'));\n                }\n                if (this.get('full_pdf_export')) {\n                    pdf_filters_body.push([\n                        {\n                            text: filterName + ': ' + filterValue,\n                            style: 'headertext',\n                        },\n                    ]);\n                } else {\n                    pdf_filters_body.push([filterName + ':', filterValue]);\n                }\n            }\n        }\n        return pdf_filters_body;\n    },\n});\n\nexport default PdfExportMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/product-post-add.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProductPostAddMixin;\n\nimport Ember from 'ember';\n\nProductPostAddMixin = Ember.Mixin.create({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    postAddingMethods: ['adding_personalliggareandid06'],\n    // this method adds main-employer if no other main-employers are found\n    adding_personalliggareandid06: function () {\n        var company;\n        company = this.get('session.currentUser.company_info');\n        return this.get('store')\n            .query('employer', {\n                main: 'on',\n            })\n            .then((emps) => {\n                var record;\n                if (emps.get('meta.count') === 0) {\n                    record = this.get('store').createRecord('employer', {\n                        name: company.get('company_name'),\n                        country: company.get('country'),\n                        emp_id: company.get('company_vatin'),\n                        main: true,\n                    });\n                    return record.save();\n                }\n            });\n    },\n    adding_fivaldi_salary_csv: function () {\n        return this.get('Collector').ttapi({\n            url: 'productAdded/fivaldi_salary_csv',\n        });\n    },\n    adding_nova_salary_csv: function () {\n        return this.get('Collector').ttapi({\n            url: 'productAdded/nova_salary_csv',\n        });\n    },\n    adding_fivaldi_salary_soap: function () {\n        return this.get('Collector').ttapi({\n            url: 'productAdded/fivaldi_salary_soap',\n        });\n    },\n    adding_setting_absences: function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return this.get('store')\n                .findAll('abcensetype')\n                .then((abcensetypes) => {\n                    var promises, records;\n                    // no absence-types so lets add some\n                    if (abcensetypes.get('length') === 0) {\n                        records = [];\n                        records.push(\n                            this.store.createRecord('abcensetype', {\n                                name: this.get('intl').t('abcense.types.sick_leave'),\n                            }),\n                        );\n                        records.push(\n                            this.store.createRecord('abcensetype', {\n                                name: this.get('intl').t('abcense.types.vacation'),\n                            }),\n                        );\n                        records.push(\n                            this.store.createRecord('abcensetype', {\n                                name: this.get('intl').t('abcense.types.other'),\n                            }),\n                        );\n                        promises = [];\n                        records.forEach(function (record) {\n                            return promises.push(record.save());\n                        });\n                        return Ember.RSVP.Promise.all(promises).then((records) => {\n                            return resolve(records);\n                        });\n                    } else {\n                        return resolve(true);\n                    }\n                });\n        });\n    },\n});\n\nexport default ProductPostAddMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/reset-scroll.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ResetScrollMixin;\n\nimport Ember from 'ember';\n\nResetScrollMixin = Ember.Mixin.create({\n    activate: function () {\n        this._super();\n        return window.scrollTo(0, 0);\n    },\n});\n\nexport default ResetScrollMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/save-the-children.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SaveTheChildrenMixin;\n\nimport Ember from 'ember';\n\nSaveTheChildrenMixin = Ember.Mixin.create({\n    save_record: function (record) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var children, field, fields, name, obj, promises, removeThese;\n            promises = [];\n            fields = this.get('Collector').fields(this.get('form'));\n            children = [];\n            for (name in fields) {\n                field = fields[name];\n                const hasChildTypes = ['databasearray', 'work_permit_attachment'];\n                if (hasChildTypes.includes(field.type) && name !== 'involved') {\n                    removeThese = [];\n                    obj = Ember.Object.extend({\n                        fieldsInCommon: Ember.computed.intersect('parentFields', 'childFields'),\n                    }).create({\n                        parentFields: Object.keys(fields),\n                        childFields: Object.keys(this.get('Collector').fields(field.options.form)),\n                    });\n                    if (record.get(name)) {\n                        record.get(name).forEach((child) => {\n                            if (child.get('id') !== '0') {\n                                obj.get('fieldsInCommon').forEach((commonField) => {\n                                    if (record.get(commonField)) {\n                                        return child.set(commonField, record.get(commonField));\n                                    }\n                                });\n                                return children.push(child);\n                            } else {\n                                return removeThese.pushObject(child);\n                            }\n                        });\n                    }\n                    if (removeThese.length > 0) {\n                        record.get(name).removeObjects(removeThese); // just remove objects from parent record\n                    }\n                }\n            }\n            if (children.length > 0) {\n                return this.get('Collector')\n                    .checkRowValidation(this.get('form'), record, !record.get('isNew'))\n                    .then(\n                        (resp) => {\n                            promises = children.map(function (child) {\n                                return child.save();\n                            });\n                            return Ember.RSVP.Promise.all(promises).then(() => {\n                                return this.saveParentRecord(record, resolve, reject);\n                            }, reject);\n                        },\n                        (e) => {\n                            if (this.get('saveTheChildrenRawErrors')) {\n                                this.set('validationMessage', e);\n                            } else {\n                                this.set('validationMessage', [\n                                    e.responseJSON ? e.responseJSON.error_msg : e.payload.error_msg,\n                                ]);\n                            }\n                            return reject(e);\n                        },\n                    );\n            } else {\n                return this.saveParentRecord(record, resolve, reject);\n            }\n        });\n    },\n    saveParentRecord: function (record, resolve, reject) {\n        return record.save().then(resolve, reject);\n    },\n});\n\nexport default SaveTheChildrenMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/sitesafety-export.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SitesafetyExportMixin;\n\nimport Ember from 'ember';\n\nimport pdfExport from './pdf-export';\n\nimport collector from '../classes/collector';\n\nSitesafetyExportMixin = Ember.Mixin.create(pdfExport, {\n    arrayToTableFormat: function (columns, data) {\n        var i, index, j, len, len1, ret, row, row_data, row_index, tmp;\n        ret = [];\n        for (row_index = i = 0, len = data.length; i < len; row_index = ++i) {\n            row = data[row_index];\n            tmp = {};\n            for (index = j = 0, len1 = row.length; j < len1; index = ++j) {\n                row_data = row[index];\n                tmp[columns[index]] = row_data;\n            }\n            ret.push(tmp);\n        }\n        return ret;\n    },\n    exportMeasurementPdf: function (fields, model) {\n        var c,\n            column,\n            columns,\n            elements,\n            extra_cols,\n            extra_fields,\n            extra_return_fields,\n            fieldName,\n            formObjects,\n            i,\n            id,\n            j,\n            len,\n            len1,\n            name,\n            notice_ids,\n            notices,\n            promise,\n            ref,\n            return_fields,\n            translated_extra_cols;\n        c = this.get('Collector');\n        notices = [];\n        extra_fields = [];\n        elements = [];\n        columns = ['name', 'value'];\n        return_fields = ['date', 'place', 'user', 'desc', 'noticedesc'];\n        formObjects = collector.getFormObjects(this.get('model.constructor.modelName'));\n        extra_return_fields = {};\n        extra_cols = [];\n        translated_extra_cols = [];\n        extra_fields = JSON.parse(JSON.stringify(collector.forms['trnotice'].objects));\n        for (i = 0, len = return_fields.length; i < len; i++) {\n            name = return_fields[i];\n            extra_return_fields[name] = extra_fields[name];\n            extra_cols.push(name);\n            column = Em.Object.create([]);\n            column.set('ext', name);\n            translated_extra_cols.push(c.getFieldName('trnotice', column));\n        }\n        for (fieldName in formObjects) {\n            if (fieldName.indexOf('_notices') > -1 && model.get(fieldName)) {\n                ref = model.get(fieldName);\n                for (j = 0, len1 = ref.length; j < len1; j++) {\n                    id = ref[j];\n                    notices.push(id);\n                }\n            }\n        }\n        notice_ids = notices.join();\n        promise = new Em.RSVP.Promise((resolve, reject) => {\n            if (notice_ids) {\n                return resolve(\n                    this.get('store').query('trnotice', {\n                        id: notice_ids,\n                        sideload: true,\n                    }),\n                );\n            } else {\n                return resolve([]);\n            }\n        });\n        return promise.then((notice_data) => {\n            // first add orginal measurement row, as list-type\n            return this.formatCollectorFieldsToPdfArray(fields, model).then((data) => {\n                var row_array;\n                row_array = [];\n                elements.push(this.createPdfTableElement(columns, data, ['', '']));\n                // next get notices and add them also..\n                notice_data.forEach((notice) => {\n                    // ..but leave only some fields\n                    return row_array.push(\n                        this.formatCollectorFieldsToPdfArray(extra_return_fields, notice, 'row'),\n                    );\n                });\n                return Em.RSVP.Promise.all(row_array).then((data) => {\n                    data = this.arrayToTableFormat(extra_cols, data);\n                    elements.push(\n                        this.createPdfTableElement(extra_cols, data, translated_extra_cols),\n                    );\n                    return this.createPdfFromElements([elements]).then(function (file) {\n                        if (typeof cordova !== 'undefined' && cordova !== null) {\n                            return self.get('cordova').openFile(file, 'application/pdf');\n                        }\n                    });\n                });\n            });\n        });\n    },\n});\n\nexport default SitesafetyExportMixin;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/sitesafety-formatted-export.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SitesafetyFormattedExportMixin;\n\nimport Ember from 'ember';\n\nimport pdfExport from './pdf-export';\n\nimport collector from '../classes/collector';\n\nimport { getAssetFolder, getScriptsInOrder } from 'tt4/utils/getScript';\n\nSitesafetyFormattedExportMixin = Ember.Mixin.create(pdfExport, {\n    session: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    createMeasurementPdf: function (fields, models, mode = 'download', images = []) {\n        var pdf_content;\n        pdf_content = [];\n        return this.getHeaderLogo().then((logo) => {\n            var currentModelNum, modelCount;\n            this.set('logo', logo);\n            modelCount = models.length;\n            currentModelNum = 0;\n            models.forEach((model) => {\n                var lastModel;\n                currentModelNum++;\n                if (currentModelNum === modelCount) {\n                    lastModel = true;\n                } else {\n                    lastModel = false;\n                }\n                return pdf_content.push(this.createPdfPage(fields, model, lastModel, images));\n            });\n            return Ember.RSVP.Promise.all(pdf_content).then((pdf_content) => {\n                return new Em.RSVP.Promise((resolve, reject) => {\n                    var assetsfolder, docDefinition;\n                    docDefinition = {\n                        content: pdf_content,\n                        pageSize: 'A4',\n                        pageOrientation: 'portrait',\n                        footer: (currentPage, pageCount) => {\n                            return this.getFooter(currentPage, pageCount);\n                        },\n                        styles: {\n                            tableMainHeader: {\n                                fillColor: '#DB4436',\n                                color: '#fff',\n                                bold: true,\n                            },\n                            tableSideHeader: {\n                                fillColor: '#f0f0f0',\n                                bold: true,\n                            },\n                            tableHeader: {\n                                bold: true,\n                            },\n                            bigTextOK: {\n                                fillColor: '#7BD17D',\n                                bold: true,\n                                fontSize: 20,\n                                alignment: 'center',\n                            },\n                            bigTextWarning: {\n                                fillColor: '#FFC56C',\n                                bold: true,\n                                fontSize: 20,\n                                alignment: 'center',\n                            },\n                            bigTextNotOk: {\n                                fillColor: '#FAAFAF',\n                                bold: true,\n                                fontSize: 20,\n                                alignment: 'center',\n                            },\n                            smallTextOK: {\n                                fillColor: '#7BD17D',\n                                alignment: 'center',\n                            },\n                            smallTextWarning: {\n                                fillColor: '#FFC56C',\n                                alignment: 'center',\n                            },\n                            smallTextNotOk: {\n                                fillColor: '#FAAFAF',\n                                alignment: 'center',\n                            },\n                            table: {\n                                fontSize: 8,\n                            },\n                            footer: {\n                                fontSize: 8,\n                                color: 'grey',\n                            },\n                            headertext: {\n                                fontSize: 8,\n                            },\n                        },\n                    };\n                    //console.log docDefinition\n                    //console.log(JSON.stringify(docDefinition, null, 4))\n                    //return\n                    assetsfolder = getAssetFolder('assets');\n                    return getScriptsInOrder([\n                        assetsfolder + 'pdfmake_v0.1.68.min.js',\n                        assetsfolder + 'vfs_fonts_v0.1.68.min.js',\n                    ]).then(() => {\n                        if (mode === 'download') {\n                            if (typeof cordova !== 'undefined' && cordova !== null) {\n                                return createPdf(docDefinition).getBuffer((buffer) => {\n                                    var binaryArray, promise, utf8;\n                                    utf8 = new Uint8Array(buffer);\n                                    binaryArray = utf8.buffer;\n                                    promise = this.get('cordova').saveFile(\n                                        binaryArray,\n                                        'export',\n                                        'pdf',\n                                    );\n                                    return promise.then(function (file) {\n                                        resolve(file);\n                                        return this.set('logo', null);\n                                    });\n                                });\n                            } else {\n                                resolve(createPdf(docDefinition).download('export.pdf'));\n                                return this.set('logo', null);\n                            }\n                        } else if (mode === 'base64') {\n                            return createPdf(docDefinition).getBase64((file) => {\n                                resolve(file);\n                                return this.set('logo', null);\n                            });\n                        }\n                    });\n                });\n            });\n        });\n    },\n    createPdfPage: function (fields, model, lastModel, images) {\n        var field, fieldname, i, id, len, minusArr, notices, plusArr, uniqueFieldname;\n        minusArr = [];\n        plusArr = [];\n        //fields = @get 'fields'\n        notices = [];\n        //get all plus and minus fields\n        for (fieldname in fields) {\n            field = fields[fieldname];\n            Ember.set(field, 'ext', fieldname);\n            if (fieldname.indexOf('_notices') > -1 && model.get(fieldname)) {\n                uniqueFieldname = model.get(fieldname).uniq();\n                for (i = 0, len = uniqueFieldname.length; i < len; i++) {\n                    id = uniqueFieldname[i];\n                    notices.push(id);\n                }\n            }\n            //tmp = []\n            if (fieldname.indexOf('_minus') > -1) {\n                //tmp['minus'] = field\n                minusArr.push(field);\n            } else if (fieldname.indexOf('_plus') > -1) {\n                plusArr.push(field);\n            }\n        }\n        this.set('minusArr', minusArr);\n        this.set('plusArr', plusArr);\n        this.set('noticesArr', notices);\n        return this.formatPdfPage(fields, model, lastModel, images);\n    },\n    createNoticesTable: function () {\n        var notice_ids;\n        notice_ids = this.get('noticesArr').join();\n        return new Em.RSVP.Promise((resolve) => {\n            if (this.get('noticesArr')[0]) {\n                return this.get('store')\n                    .query('trnotice', {\n                        id: notice_ids,\n                        sideload: true,\n                    })\n                    .then((notice_data) => {\n                        var notices;\n                        notices = [];\n                        notices.push([\n                            {\n                                text: this.get('intl').t('site_safety.notices'),\n                                style: 'tableMainHeader',\n                                colSpan: 4,\n                            },\n                            {},\n                            {},\n                            {},\n                        ]);\n                        //notices.push [style: \"tableMainHeader\", text: @get('intl').t(\"tr.notices\"), colspan: 3]\n                        notices.push([\n                            {\n                                style: 'tableSideHeader',\n                                text: '',\n                            },\n                            {\n                                style: 'tableSideHeader',\n                                text: this.get('intl').t('report.trnotice.desc'),\n                            },\n                            {\n                                style: 'tableSideHeader',\n                                text: this.get('intl').t('report.trnotice.user'),\n                            },\n                            {\n                                style: 'tableSideHeader',\n                                text: this.get('intl').t('report.trnotice.date'),\n                            },\n                        ]);\n                        notice_data.forEach((notice, index) => {\n                            return notices.push([\n                                index + 1,\n                                notice.get('desc'),\n                                notice.get('user.firstname') + ' ' + notice.get('user.lastname'),\n                                moment(notice.get('date')).format('L'),\n                            ]);\n                        });\n                        return resolve({\n                            table: {\n                                headerRows: 1,\n                                widths: [20, '*', '*', '*'],\n                                body: notices,\n                            },\n                        });\n                    });\n            } else {\n                return resolve({});\n            }\n        });\n    },\n    createNoticeImages: function () {\n        var images, notices, store;\n        store = this.get('store');\n        images = [];\n        this.set('full_pdf_export', true);\n        notices = this.get('noticesArr').sort(function (a, b) {\n            return b - a;\n        });\n        notices.forEach((id, index) => {\n            var notice;\n            notice = store.peekRecord('trnotice', id);\n            if (!notice) {\n                return;\n            }\n            if (notice.get('pic')) {\n                return notice.get('pic').forEach((image) => {\n                    return images.push(this.getImageBase64(image, index));\n                });\n            }\n        });\n        return Ember.RSVP.Promise.all(images).then((data) => {\n            if (data.length > 0) {\n                return {\n                    table: {\n                        body: data,\n                        widths: [20, 500],\n                        dontBreakRows: true,\n                    },\n                    pageBreak: 'before',\n                };\n            }\n        });\n    },\n    getImageBase64: function (image, index) {\n        return new Ember.RSVP.Promise((resolve) => {\n            return this.formatImageToPdf(image, 'row', 300).then((data) => {\n                return resolve([index + 1, data]);\n            });\n        });\n    },\n    createSignaturesTable: function (fields, model) {\n        var field, fieldname, signs;\n        signs = [];\n        for (fieldname in fields) {\n            field = fields[fieldname];\n            if (field['type'] === 'hdfile') {\n                signs.push(field);\n            }\n        }\n        //new Em.RSVP.Promise (resolve, reject) =>\n        return this.formatCollectorFieldsToPdfArray(signs, model).then((data) => {\n            var i, ind, len, sign, sign_name, signatures, table;\n            signatures = [];\n            for (ind = i = 0, len = data.length; i < len; ind = ++i) {\n                sign = data[ind];\n                if (sign.length === 1) {\n                    sign = sign[0];\n                }\n                if (sign && sign.value && sign.value.image) {\n                    signatures.push({\n                        stack: [\n                            {\n                                width: 150,\n                                image: sign['value']['image'],\n                            },\n                        ],\n                    });\n                } else {\n                    sign_name = this.get('intl').t('tr.' + signs[ind]['ext']);\n                    signatures.push({\n                        stack: [' ', ' ', ' ', sign_name],\n                    });\n                }\n            }\n            table = {\n                table: {\n                    headerRows: 1,\n                    widths: ['*', '*'],\n                    body: [signatures],\n                },\n            };\n            if (signatures.length === 2) {\n                table.table.body.push([\n                    model.get('user.firstname') + ' ' + model.get('user.lastname'),\n                    this.get('intl').t('tr.' + signs[1]['ext']) + ':',\n                ]);\n            } else {\n                fields = [];\n                signatures.forEach(() => {\n                    return fields.push(this.get('intl').t('site_safety.print_name') + ':');\n                });\n                table.table.body.push(fields);\n            }\n            return table;\n        });\n    },\n    createMainTable: function (model) {\n        var dataArr,\n            ext_base_arr,\n            field,\n            i,\n            len,\n            minus,\n            partialIndex,\n            plus,\n            ref,\n            table,\n            totalMin,\n            totalPlus,\n            translation;\n        table = [];\n        dataArr = [];\n        totalMin = 0;\n        totalPlus = 0;\n        // get headers (plus-fields are used to get headers)\n        // also add data\n        dataArr.push([\n            {\n                style: 'tableMainHeader',\n                text: this.get('intl').t('site_safety.measured_item'),\n            },\n            {\n                style: 'tableMainHeader',\n                text: this.get('intl').t('tr.plus'),\n            },\n            {\n                style: 'tableMainHeader',\n                text: this.get('intl').t('tr.minus'),\n            },\n            {\n                style: 'tableMainHeader',\n                text: this.get('intl').t('site_safety.partial_index'),\n            },\n        ]);\n        ref = this.get('plusArr');\n        for (i = 0, len = ref.length; i < len; i++) {\n            field = ref[i];\n            ext_base_arr = field['ext'].split('_');\n            plus = model.get(field['ext']);\n            minus = model.get(ext_base_arr[0] + '_minus'); // get minus\n            translation = this.get('intl').t(\n                model.get('constructor.modelName') + '.' + field['ext'],\n            );\n            if (field.name) {\n                translation = field.name;\n            }\n            partialIndex = (plus / (plus + minus)) * 100;\n            dataArr.push([\n                {\n                    style: 'tableSideHeader',\n                    text: translation,\n                },\n                plus ? plus.toString() : '',\n                minus ? minus.toString() : '',\n                plus || minus\n                    ? {\n                          text: partialIndex.toFixed(0) + '%',\n                          style: this.partialIndexColor(partialIndex),\n                      }\n                    : '',\n            ]);\n            totalMin += Number(minus);\n            totalPlus += Number(plus);\n        }\n        dataArr.push([\n            {\n                style: 'tableSideHeader',\n                text: this.get('intl').t('report.tr.total'),\n            },\n            totalPlus.toString(),\n            totalMin.toString(),\n            '',\n        ]);\n        this.set('totalPlus', totalPlus);\n        this.set('totalMin', totalMin);\n        table = {\n            table: {\n                headerRows: 1,\n                widths: ['*', 50, 50, 60],\n                body: dataArr,\n            },\n        };\n        return table;\n    },\n    ratingColor: function (rating) {\n        if (rating > 95) {\n            return 'bigTextOK';\n        } else if (rating > 90) {\n            return 'bigTextWarning';\n        } else {\n            return 'bigTextNotOk';\n        }\n    },\n    partialIndexColor: function (rating) {\n        if (rating > 95) {\n            return 'smallTextOK';\n        } else if (rating > 90) {\n            return 'smallTextWarning';\n        } else {\n            return 'smallTextNotOk';\n        }\n    },\n    createMeasurementSumTable: function (model) {\n        var dataArr, rating, style, table, text;\n        dataArr = [];\n        if (model.get('constructor.modelName') === 'mvr') {\n            rating = model.get('mvr_rating');\n        } else {\n            rating = model.get('tr_rating');\n        }\n        text = this.get('intl').t('measurement.rating');\n        style = this.ratingColor(rating);\n        dataArr.push({\n            style: 'tableSideHeader',\n            text: text,\n        });\n        dataArr.push({\n            style: style,\n            text: rating + '%',\n        });\n        table = {\n            table: {\n                widths: ['*', 80],\n                body: [dataArr],\n            },\n        };\n        return table;\n    },\n    addEmptySpace: function (margin = false) {\n        var object;\n        margin = margin ? margin : 20;\n        object = {\n            text: '',\n            margin: [0, margin, 0, 0],\n        };\n        return object;\n    },\n    createAveragePercentNumber: function (model) {\n        var dates;\n        //model.get('constructor.modelName')\n        //console.log model.get 'project.id'\n        dates =\n            moment().subtract(12, 'month').format('YYYY-MM-DD') +\n            '_' +\n            moment().format('YYYY-MM-DD');\n        return new Em.RSVP.Promise((resolve, reject) => {\n            //found = @get('store').peekRecord(model.get('constructor.modelName'),model.get('id'))\n            //console.log found\n            return this.get('store')\n                .query(model.get('constructor.modelName'), {\n                    project: model.get('project.id'),\n                    date: dates,\n                })\n                .then((data) => {\n                    var average, rating, ratings, rowCount, table;\n                    ratings = 0;\n                    rowCount = data.get('meta.count');\n                    rating =\n                        model.get('constructor.modelName') === 'mvr' ? 'mvr_rating' : 'tr_rating';\n                    data.forEach((row) => {\n                        return (ratings += row.get(rating));\n                    });\n                    average = ratings / rowCount;\n                    table = {\n                        table: {\n                            body: [\n                                [\n                                    {\n                                        text:\n                                            this.get('intl').t('measurement.rating') +\n                                            ', ' +\n                                            this.get('intl').t('tr.chart.average') +\n                                            ', ' +\n                                            this.get('intl').t('tr.last_12_months'),\n                                        style: 'tableMainHeader',\n                                    },\n                                ],\n                                [\n                                    {\n                                        text: average.toFixed(2) + '%',\n                                        style: this.ratingColor(average),\n                                    },\n                                ],\n                            ],\n                        },\n                    };\n                    return resolve(table);\n                });\n        });\n    },\n    formatPdfPage: function (fields, model, lastModel, images) {\n        var pdf_content;\n        //return new Em.RSVP.Promise (resolve, reject) =>\n\n        //@getHeader().then (header) =>\n        pdf_content = [];\n        // this is some ugly-ass code right here, should maybe be made to use array of promises or something\n        return this.createNoticesTable().then((notices) => {\n            return this.createNoticeImages().then((notice_images) => {\n                return this.createSignaturesTable(fields, model).then((signatures) => {\n                    return this.createAveragePercentNumber(model).then((average) => {\n                        // first add movenium-logo and additional info about worksite, company etc\n                        pdf_content.push(this.createHeaders(model));\n                        // next add main-table\n                        pdf_content.push(this.createMainTable(model));\n                        // then add tr-level table\n                        pdf_content.push(this.createMeasurementSumTable(model));\n                        // add empty space\n                        pdf_content.push(this.addEmptySpace());\n                        // after that add notices\n                        if (notices) {\n                            pdf_content.push(notices);\n                        }\n                        // add empty space\n                        pdf_content.push(this.addEmptySpace());\n                        // last one, signatures\n                        pdf_content.push(signatures);\n                        // last one +1 (average percent)\n                        pdf_content.push(this.addEmptySpace(40));\n                        pdf_content.push(average);\n                        images.forEach((image, index) => {\n                            if (image.title) {\n                                pdf_content.push({\n                                    text: image.title,\n                                    headlineLevel: 4,\n                                    pageBreak: index === 0 ? 'before' : '',\n                                });\n                            }\n                            return pdf_content.push({\n                                image: image.url,\n                                width: image.width ? image.width : 500,\n                                pageBreak: index === 0 && !image.title ? 'before' : '',\n                            });\n                        });\n                        if (notice_images) {\n                            pdf_content.push(notice_images);\n                        }\n                        // then add page-break\n                        if (!lastModel) {\n                            pdf_content.push({\n                                text: '',\n                                pageBreak: 'after',\n                            });\n                        }\n                        return pdf_content;\n                    });\n                });\n            });\n        });\n    },\n    createHeaders: function (model) {\n        var logo, right_header;\n        // get data for right-hand header\n        right_header = [];\n        right_header.push(\n            this.get('intl').t('report.tr.project') +\n                ': ' +\n                model.get('project.number') +\n                ' ' +\n                model.get('project.name'),\n        );\n        right_header.push(\n            this.get('intl').t('report.tr.date') + ': ' + moment(model.get('date')).format('L'),\n        );\n        right_header.push(\n            this.get('intl').t('report.tr.inspector') +\n                ': ' +\n                model.get('user.firstname') +\n                ' ' +\n                model.get('user.lastname'),\n        );\n        right_header.push(\n            this.get('intl').t('report.tr.company_name') +\n                ': ' +\n                this.get('session.currentUser.company_info.company_name'),\n        );\n        logo = this.get('logo');\n        return {\n            columns: [\n                [\n                    {\n                        fit: [120, 40],\n                        image: logo,\n                        margin: [0, 0, 0, 20],\n                    },\n                ],\n                {\n                    width: '*',\n                    stack: right_header,\n                    alignment: 'right',\n                    fontSize: 10,\n                    margin: [0, 0, 0, 20],\n                },\n            ],\n        };\n    },\n    getHeaderLogo: function () {\n        var c;\n        c = this.get('Collector');\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return c.getLogo().then((logo) => {\n                var company, session;\n                if (logo) {\n                    this.set('logo', logo);\n                }\n                session = this.get('session');\n                company = session.get('currentUser.company');\n                if (!logo) {\n                    logo = this.get('moveniumLogo');\n                }\n                return resolve(logo);\n            });\n        });\n    },\n});\n\nexport default SitesafetyFormattedExportMixin;\n","define(\"tt4/mixins/style-namespacing-extras\", [\"exports\", \"ember-component-css/mixins/style-namespacing-extras\"], function (_exports, _styleNamespacingExtras) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _styleNamespacingExtras.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/mixins/worksitediary_pdf.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryExportMixin;\n\nimport Ember from 'ember';\n\nimport pdfExport from './pdf-export';\n\nimport collector from '../classes/collector';\n\nWorksitediaryExportMixin = Ember.Mixin.create(pdfExport, {\n    intl: Ember.inject.service(),\n    createWorksitediaryPdf: function (items, mode = null) {\n        var elements;\n        elements = [];\n        this.addCoverPage(elements, items);\n        return this.addDiaryreportPages(elements, items).then(() => {\n            return this.createPdfFromElements(elements, mode);\n        });\n    },\n    /*\n  Worksitediary PDF creation functions\n  */\n    addCoverPage: function (elements, items) {\n        var dates, intl;\n        intl = this.get('intl');\n        elements.push(this.createPdfHeaderElement(intl.t('worksitediary.worksite')));\n        elements.push(this.createPdfHeaderElement(''));\n        elements.push('Info:');\n        elements.push(\n            intl.t('worksitediary.contact_person') +\n                ': ' +\n                this.get('store').peekAll('companyInfo').get('firstObject.company_contact_person'),\n        );\n        elements.push(\n            intl.t('worksitediary.vatin') +\n                ': ' +\n                this.get('store').peekAll('companyInfo').get('firstObject.company_vatin'),\n        );\n        dates = this.getMinAndMaxDates(items);\n        elements.push(\n            intl.t('worksitediary.date_range') +\n                ': ' +\n                dates.min.format('L') +\n                ' - ' +\n                dates.max.format('L'),\n        );\n        elements.push(this.createPdfHeaderElement(intl.t('worksitediary.signature_overseer')));\n        elements.push(this.createPdfHeaderElement(''));\n        elements.push('_________________________________________________');\n        elements.push(this.createPdfHeaderElement(''));\n        elements.push(this.createPdfHeaderElement(intl.t('worksitediary.signature_master')));\n        elements.push(this.createPdfHeaderElement(''));\n        elements.push('_________________________________________________');\n        elements.push(this.createPdfHeaderElement(''));\n        elements.push(this.createPdfHeaderElement(intl.t('worksitediary.signature_supervisor')));\n        elements.push(this.createPdfHeaderElement(''));\n        return elements.push('_________________________________________________');\n    },\n    //elements.push @createPdfElement(\"\", 'after')\n    getMinAndMaxDates: function (items) {\n        var max, min;\n        max = moment('1970-01-01');\n        min = moment('2050-01-01');\n        items.forEach(function (row) {\n            var date;\n            date = moment(row.get('diary_date'));\n            if (date.isAfter(max)) {\n                max = date;\n            }\n            if (date.isBefore(min)) {\n                return (min = date);\n            }\n        });\n        return {\n            min: min,\n            max: max,\n        };\n    },\n    addDiaryreportPages: function (elements, items) {\n        var promises;\n        promises = [];\n        items.forEach((record) => {\n            return promises.push(this.addDiaryReportPage(elements, record));\n        });\n        return Ember.RSVP.Promise.all(promises);\n    },\n    addDiaryReportPage: function (elements, record) {\n        return new Ember.RSVP.Promise((resolve) => {\n            return this.fetchNeededEventsFromBackend(record).then(() => {\n                var promises;\n                console.info('Events fetched for ' + record.get('id'));\n                promises = [];\n                promises.push(this.getDiaryreportEvents(record));\n                if (!this.get('Collector').testNeedsOne('products.byggdagbok')) {\n                    promises.push(this.getDiaryreportMaterials(record, 'ordered'));\n                    promises.push(this.getDiaryreportMaterials(record, 'received'));\n                    promises.push(\n                        this.getDiaryreportTable(record, 'review_and_inspection', [\n                            'title',\n                            'date',\n                        ]),\n                    );\n                    promises.push(\n                        this.getDiaryreportTable(record, 'diaryreport_misc', [\n                            'phase',\n                            'date',\n                            'description',\n                            'price',\n                        ]),\n                    );\n                    //promises.push @getDiaryreportTable record, 'diaryreport_required_extra', ['phase', 'date']\n                    promises.push(\n                        this.getDiaryreportTable(record, 'diaryreport_given_offer', [\n                            'phase',\n                            'date',\n                            'description',\n                            'price',\n                        ]),\n                    );\n                    promises.push(\n                        this.getDiaryreportTable(record, 'diaryreport_required_extra', [\n                            'phase',\n                            'date',\n                            'description',\n                        ]),\n                    );\n                    promises.push(\n                        this.getDiaryreportTable(record, 'diaryreport_supervisor_note', [\n                            'phase',\n                            'date',\n                            'description',\n                        ]),\n                    );\n                    promises.push(\n                        this.getDiaryreportTable(record, 'diaryreport_other_note', [\n                            'phase',\n                            'date',\n                            'description',\n                        ]),\n                    );\n                    promises.push(\n                        this.getDiaryreportTable(record, 'completion_rate', ['title', 'rate']),\n                    );\n                }\n                return Ember.RSVP.Promise.all(promises).then((results) => {\n                    if (this.get('Collector').testNeedsOne('products.byggdagbok')) {\n                        this.addDiaryreportBasicInfoSwe(elements, record);\n                    } else {\n                        this.addDiaryreportBasicInfo(elements, record);\n                    }\n                    results.forEach(function (add) {\n                        return add.forEach(function (element, index) {\n                            return elements.push(element);\n                        });\n                    });\n                    return resolve();\n                });\n            });\n        });\n    },\n    addDiaryreportBasicInfo: function (elements, record) {\n        var intl;\n        intl = this.get('intl');\n        elements.push({\n            text:\n                record.get('project.name') +\n                ' ' +\n                record.get('worksite_number') +\n                ' - ' +\n                moment(record.get('diary_date')).format('L') +\n                ' ' +\n                this.get('intl').t('worksitediary.week') +\n                ' ' +\n                record.get('work_week'),\n            fontSize: 14,\n            bold: true,\n            margin: [0, 20, 0, 8],\n            pageBreak: 'before',\n        });\n        elements.push({\n            text:\n                intl.t('worksitediary.foremans_at_site') +\n                ': ' +\n                record.get('foremans_at_site') +\n                ', ' +\n                intl.t('worksitediary.workers_at_site') +\n                ': ' +\n                record.get('workers_at_site') +\n                ', ' +\n                intl.t('worksitediary.subcontractors_at_site') +\n                ': ' +\n                record.get('subcontractors_at_site') +\n                ', ' +\n                intl.t('worksitediary.side_contractors_at_site') +\n                ': ' +\n                record.get('side_contractors_at_site') +\n                ', ' +\n                intl.t('worksitediary.other_contractors_at_site') +\n                ': ' +\n                record.get('other_contractors_at_site') +\n                '',\n            fontSize: 10,\n        });\n        if (record.get('stock_changes_at_site')) {\n            elements.push({\n                text: '' + intl.t('worksitediary.stock_changes_at_site'),\n                fontSize: 10,\n                bold: true,\n                margin: [0, 15, 0, 8],\n            });\n            return elements.push({\n                text: '' + record.get('stock_changes_at_site'),\n                fontSize: 10,\n            });\n        }\n    },\n    addDiaryreportBasicInfoSwe: function (elements, record) {\n        var intl;\n        intl = this.get('intl');\n        elements.push({\n            text:\n                record.get('project.name') +\n                ' ' +\n                record.get('worksite_number') +\n                ' - ' +\n                moment(record.get('diary_date')).format('L') +\n                ' ' +\n                this.get('intl').t('worksitediary.week') +\n                ' ' +\n                record.get('work_week'),\n            fontSize: 14,\n            bold: true,\n            margin: [0, 20, 0, 8],\n            pageBreak: 'before',\n        });\n        // add info about workforce\n        elements.push({\n            text: intl.t('worksitediary.workforce') + ': ' + record.get('work_force'),\n            fontSize: 10,\n        });\n        if (record.get('stock_changes_at_site')) {\n            elements.push({\n                text: '' + intl.t('worksitediary.stock_changes_at_site'),\n                fontSize: 10,\n                bold: true,\n                margin: [0, 15, 0, 8],\n            });\n            return elements.push({\n                text: '' + record.get('stock_changes_at_site'),\n                fontSize: 10,\n            });\n        }\n    },\n    getDiaryreportEvents: function (record) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var fields, promises;\n            promises = [];\n            fields = this.get('Collector')\n                .fieldArray(this.get('form'))\n                .filter(function (field) {\n                    return (\n                        field.name.substring(0, 7) === 'events_' &&\n                        field.name.substring(field.name.length - 9, field.name.length) !==\n                            '_freetext'\n                    );\n                });\n            fields.forEach((field) => {\n                return promises.push(this.getDiaryreportEventsOneType(record, field));\n            });\n            return Ember.RSVP.Promise.all(promises).then(function (results) {\n                return resolve(results);\n            });\n        });\n    },\n    getDiaryreportEventsOneType: function (record, field) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var promises;\n            promises = [];\n            record.get(field.name).forEach((event) => {\n                return promises.push(this.getDiaryReportEvent(event));\n            });\n            return Ember.RSVP.Promise.all(promises).then((events) => {\n                var elements, freetext, table_body;\n                elements = [];\n                elements.push({\n                    text: field.translated_name,\n                    fontSize: 12,\n                    bold: true,\n                    margin: [0, 15, 0, 8],\n                });\n                freetext = record.get(field.name + '_freetext');\n                if (freetext) {\n                    elements.push({\n                        text: freetext,\n                        fontSize: 10,\n                    });\n                }\n                table_body = [];\n                events.forEach(function (event) {\n                    return table_body.push([event.col1, event.col2]);\n                });\n                if (table_body.length > 0) {\n                    elements.push({\n                        table: {\n                            widths: ['*', '*'],\n                            body: table_body,\n                        },\n                        layout: this.get('boxedTable'),\n                    });\n                }\n                return resolve(elements);\n            });\n        });\n    },\n    fetchNeededEventsFromBackend: function (record) {\n        var promises;\n        promises = [\n            record.get('events_started'),\n            record.get('events_finished'),\n            record.get('events_altered'),\n            record.get('events_work_in_progress'),\n            record.get('events_interrupted'),\n        ];\n        return Ember.RSVP.Promise.all(promises);\n    },\n    getDiaryReportEvent: function (event) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var header_elems, images, promises, texts;\n            texts = [];\n            header_elems = [\n                {\n                    text: '' + event.get('title'),\n                    fontSize: 10,\n                    bold: true,\n                },\n                {\n                    text: '' + moment(event.get('date')).format('L'),\n                    fontSize: 10,\n                },\n            ];\n            // thumb up\n            if (event.get('rating') === 'up') {\n                header_elems.push({\n                    width: 10,\n                    image: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4RDgRXhpZgAATU0AKgAAAAgABAE7AAIAAAAHAAAISodpAAQAAAABAAAIUpydAAEAAAAOAAAQyuocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZlaWtrbwAAAAWQAwACAAAAFAAAEKCQBAACAAAAFAAAELSSkQACAAAAAzA2AACSkgACAAAAAzA2AADqHAAHAAAIDAAACJQAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMDE2OjA5OjA4IDEyOjE2OjExADIwMTY6MDk6MDggMTI6MTY6MTEAAAB2AGUAaQBrAGsAbwAAAP/hCxlodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIi8+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPjx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTA5LTA4VDEyOjE2OjExLjA1OTwveG1wOkNyZWF0ZURhdGU+PC9yZGY6RGVzY3JpcHRpb24+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPjxkYzpjcmVhdG9yPjxyZGY6U2VxIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpsaT52ZWlra288L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAHBQUGBQQHBgUGCAcHCAoRCwoJCQoVDxAMERgVGhkYFRgXGx4nIRsdJR0XGCIuIiUoKSssKxogLzMvKjInKisq/9sAQwEHCAgKCQoUCwsUKhwYHCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq/8AAEQgAGgAaAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A9C+J/wAT5fDc50bQCv8AaJUNNOwDCAHoAOhbvzwP5cKdK8Zz+CZ/F+o+JL62RMNBFJcyB5VJAyMHCjJ49fyrMMK6x8aGg1NPNSfWTHKjfxL5mMfTAr6RvdKsNStFtdQsre6t1IKwzRhkBHTg8V5NKnPFQlVk/JeW3+Z40VLGVqnM/djolt82eGeA/i9qWnX8Nj4muXvbCRgn2iU5lhz3LdWHrnJ9PQ++qwZQykEEZBHevnf4y6JpOieKLVNGtorXzrfzJoYRhQdxAO3tkDt6V6L4d1rVR4X0oAsQLOHBKE5+QV25d7Su50pPWPUzo4iphakqFV81rHJ/E3wlqXh3xYvjHQYjJD5y3EuF3eRKDnLD+6cdfXPtUK/HzWAg36PYlsckM4BP0zXuxGRg8iuL1fwxoJ163zomm/vCC/8AokfzHPfjmuSpTnQdqUrJ9DoxNGdKTq0ZcvNvpf5njWnaXrvxW8aSXcybUkcG5uFUiOBB/CM98dB1P5mvpK0sreysoLW3jVYoI1jQY6KowP0FLa2ltY2629lbxW8KfdjhQIq/QDipq7aFBUI2Tu3u+5thcMqadST5pS3Z/9k=',\n                });\n                // thumb down\n            } else if (event.get('rating') === 'down') {\n                header_elems.push({\n                    width: 10,\n                    image: 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/4RDgRXhpZgAATU0AKgAAAAgABAE7AAIAAAAHAAAISodpAAQAAAABAAAIUpydAAEAAAAOAAAQyuocAAcAAAgMAAAAPgAAAAAc6gAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZlaWtrbwAAAAWQAwACAAAAFAAAEKCQBAACAAAAFAAAELSSkQACAAAAAzQ4AACSkgACAAAAAzQ4AADqHAAHAAAIDAAACJQAAAAAHOoAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyMDE2OjA5OjA4IDEyOjI0OjQ3ADIwMTY6MDk6MDggMTI6MjQ6NDcAAAB2AGUAaQBrAGsAbwAAAP/hCxlodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIi8+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPjx4bXA6Q3JlYXRlRGF0ZT4yMDE2LTA5LTA4VDEyOjI0OjQ3LjQ3ODwveG1wOkNyZWF0ZURhdGU+PC9yZGY6RGVzY3JpcHRpb24+PHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9InV1aWQ6ZmFmNWJkZDUtYmEzZC0xMWRhLWFkMzEtZDMzZDc1MTgyZjFiIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iPjxkYzpjcmVhdG9yPjxyZGY6U2VxIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+PHJkZjpsaT52ZWlra288L3JkZjpsaT48L3JkZjpTZXE+DQoJCQk8L2RjOmNyZWF0b3I+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSd3Jz8+/9sAQwAHBQUGBQQHBgUGCAcHCAoRCwoJCQoVDxAMERgVGhkYFRgXGx4nIRsdJR0XGCIuIiUoKSssKxogLzMvKjInKisq/9sAQwEHCAgKCQoUCwsUKhwYHCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq/8AAEQgAGwAaAwEiAAIRAQMRAf/EAB8AAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkKC//EALUQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+v/EAB8BAAMBAQEBAQEBAQEAAAAAAAABAgMEBQYHCAkKC//EALURAAIBAgQEAwQHBQQEAAECdwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEXGBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A9V+InxLg8HKtlYxpdarIu4I5OyFezNjr7D+Xfy2Tx/8AEieTz0nvEQ/MojsV2Af98cj65pdNmOr/AB6WS+US7tVcYYZGEJCj8Ao/Kvo2vJpxqYtOpztK9rI+9ryweQ06VKWHjVnOPM3Lz6LRnkPgL4xS6hqEWleK1jSWVgkN4i7QW6AOvQZPcYHt3r16vnj416NBpnjZLu1wv9oQiaRB2cHaT+OAfrmvYfD2vT3PhfS550Dyy2cLuxP3mKAk11YGdSq5UpauJw53l+HnQo4/Bx5Y1FrHon5fieP/ABO8Naj4T8at4g00Olrc3AuIbhB/qps5Kn8ckeoPsa6y++K8Wp/DWW9sdUTS/EEBQGAKrGRsgHarA5Ugk+2Pbn1W5tYL21ktryGOeCQbXjlUMrD0IPWuA1D4ZeEBrEaro6qshyyrcSgfgA3H4VhLDVaXMqT0l+HobYfOMHjKVKnj6bc6VrNJO6XSSff/AIOh47Y23iH4leKoo555Ly5cASTuBtgjB5OBgADJ4HUn3r6dsrCCw0+3s4EAit4liQEfwqMD+VQ6RoemaBZ/ZdHsobSHOSI15Y+pPUn3NX66cNh/YRet29zzM7zn+0ZRhShyU4bL/htPl0P/2Q==',\n                });\n            }\n            texts.push({\n                table: {\n                    body: [header_elems],\n                },\n                layout: 'noBorders',\n            });\n            texts.push({\n                text: '' + (event.get('description') ? event.get('description') : ''),\n                fontSize: 10,\n            });\n            texts.push({\n                text: '' + this.formatWeatherForPDF(event.get('weather')),\n                fontSize: 10,\n                margin: [0, 20, 0, 8],\n            });\n            promises = [];\n            images = [];\n            if (Ember.typeOf(event.get('images')) === 'object') {\n                promises.push(this.handleEventImage(event.get('images'), images));\n            } else {\n                event.get('images').forEach((image) => {\n                    return promises.push(this.handleEventImage(image, images));\n                });\n            }\n            return Ember.RSVP.Promise.all(promises).then(function () {\n                return resolve({\n                    col1: texts,\n                    col2: images,\n                });\n            });\n        });\n    },\n    handleEventImage: function (image, images) {\n        var promise;\n        promise = this.getImageUri(image.url);\n        promise.then(function (imagedata) {\n            return images.push({\n                image: imagedata,\n                width: 200,\n            });\n        });\n        return promise;\n    },\n    getDiaryreportMaterials: function (record, type = 'ordered') {\n        return new Ember.RSVP.Promise((resolve) => {\n            return record.get('orders_' + type).then((orders) => {\n                var promises;\n                promises = [];\n                orders.forEach((order) => {\n                    return promises.push(this.getDiaryreportMaterial(order));\n                });\n                return Ember.RSVP.Promise.all(promises).then((order_elems) => {\n                    var elements, table_body;\n                    elements = [];\n                    elements.push(\n                        this.get('intl').t(\n                            'worksite.' + (type === 'received' ? 'arrived' : type) + '.materials',\n                        ),\n                    );\n                    table_body = [];\n                    order_elems.forEach(function (elem) {\n                        return table_body.push([elem.col1, elem.col2]);\n                    });\n                    if (table_body.length > 0) {\n                        elements.push({\n                            table: {\n                                widths: ['*', '*'],\n                                body: table_body,\n                                layout: this.get('boxedTable'),\n                            },\n                        });\n                    }\n                    console.info('resolving materials', type, elements);\n                    return resolve(elements);\n                });\n            });\n        });\n    },\n    getDiaryreportMaterial: function (event) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var images, promises, texts;\n            texts = [];\n            texts.push({\n                text: event.get('title') + ' ' + moment(event.get('order_date')).format('L'),\n                fontSize: 10,\n                bold: true,\n            });\n            texts.push({\n                text: event.get('description'),\n                fontSize: 10,\n            });\n            texts.push({\n                text:\n                    this.get('intl').t('report.material.arrival_date') +\n                    ': ' +\n                    (event.get('arrival_date')\n                        ? moment(event.get('arrival_date')).format('L')\n                        : '-'),\n                fontSize: 10,\n                margin: [0, 20, 0, 8],\n            });\n            promises = [];\n            images = [];\n            event.get('image').forEach((image) => {\n                var promise;\n                promise = this.getImageUri(image.url);\n                promise.then(function (imagedata) {\n                    return images.push({\n                        image: imagedata,\n                        width: 200,\n                    });\n                });\n                return promises.push(promise);\n            });\n            return Ember.RSVP.Promise.all(promises).then(() => {\n                return resolve({\n                    col1: texts,\n                    col2: images,\n                });\n            });\n        });\n    },\n    getDiaryreportTable: function (record, field, subfields) {\n        return new Ember.RSVP.Promise((resolve) => {\n            console.log(field);\n            return record.get(field).then((items) => {\n                var body, elements, headers, rowCount;\n                elements = [\n                    {\n                        text: this.get('intl').t('report.diaryreport.' + field),\n                        margin: [0, 20, 0, 8],\n                    },\n                ];\n                headers = [];\n                subfields.forEach((subfield) => {\n                    return headers.push({\n                        text: this.translateField(field, subfield),\n                        style: 'tableHeader',\n                    });\n                });\n                body = [];\n                body.push(headers);\n                rowCount = 0;\n                items.forEach(function (row) {\n                    var temp;\n                    temp = [];\n                    subfields.forEach(function (subfield) {\n                        var cell;\n                        cell =\n                            row.get(subfield) && subfield === 'date'\n                                ? moment(row.get(subfield)).format('L')\n                                : row.get(subfield)\n                                  ? '' + row.get(subfield)\n                                  : ' ';\n                        return temp.push(cell);\n                    });\n                    body.push(temp);\n                    return rowCount++;\n                });\n                if (rowCount > 0) {\n                    elements.push({\n                        table: {\n                            body: body,\n                        },\n                    });\n                }\n                console.info('resolving ', field, elements);\n                return resolve(elements);\n            });\n        });\n    },\n    translateField: function (form, field) {\n        var header, key;\n        key = 'report.' + form + '.' + field;\n        switch (key) {\n            case 'report.review_and_inspection.title':\n                key = 'review_and_inspection.reviews';\n        }\n        header = this.get('intl').t(key);\n        if (!header) {\n            header = 't.' + key;\n        }\n        return header;\n    },\n    boxedTable: {\n        hLineWidth: function (i, node) {\n            if (i === 0 || i === node.table.body.length) {\n                return 1;\n            } else {\n                return 1;\n            }\n        },\n        vLineWidth: function (i, node) {\n            if (i === 0 || i === node.table.widths.length) {\n                return 0;\n            } else {\n                return 0;\n            }\n        },\n        hLineColor: function (i, node) {\n            if (i === 0 || i === node.table.body.length) {\n                return 'grey';\n            } else {\n                return 'gray';\n            }\n        },\n        vLineColor: function (i, node) {\n            if (i === 0 || i === node.table.widths.length) {\n                return 'gray';\n            } else {\n                return 'gray';\n            }\n        },\n    },\n});\n\nexport default WorksitediaryExportMixin;\n","import DS from 'ember-data';\n\nexport default DS.Model.extend({\n    toggled: DS.attr('boolean'),\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/collector.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Collector;\n\nimport DS from 'ember-data';\n\nCollector = DS.Model.extend({\n    row_info: DS.belongsTo('row-info'),\n    clone: function () {\n        var attrs, class_type, model, root;\n        model = this;\n        attrs = this.serialize();\n        class_type = model.constructor;\n        root = Ember.String.decamelize(class_type.toString().split(':')[1]);\n        this.eachRelationship(function (key, relationship) {\n            if (relationship.kind === 'belongsTo') {\n                attrs[key] = model.get(key);\n            }\n        });\n\n        return this.store.createRecord(root, attrs);\n    },\n    //                if relationship.kind == 'belongsTo'\n    //                    attrs[key] = model.get(key)\n\n    //    info: Ember.computed.alias 'data.row_info'\n    isRemovable: Ember.computed.alias('row_info.privilege_remove'),\n    isEditable: Ember.computed.alias('row_info.privilege_edit'),\n    //    isRemovable: Ember.computed('data.row_info', ->\n    //        return true if not @get 'data.row_info'\n    //        @get 'data.row_info.privilege_remove'\n    //    )\n\n    //    isEditable: Ember.computed('data.row_info', ->\n    //        return true if not @get 'data.row_info'\n    //        @get 'data.row_info.privilege_edit'\n    //    )\n    validation: 'on',\n});\n\nexport default Collector;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/company-info.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CompanyInfo;\n\nimport DS from 'ember-data';\n\nCompanyInfo = DS.Model.extend({\n    company_name: DS.attr('string'),\n    company_vatin: DS.attr('string'),\n    company_contact_person: DS.attr('string'),\n    company_phone: DS.attr('string'),\n    company_email: DS.attr('string'),\n    country: DS.attr('string'),\n    row_info: DS.attr(),\n});\n\nexport default CompanyInfo;\n","import DS from 'ember-data';\n\nexport default DS.Model.extend({\n    name: DS.attr('string'),\n    columns: DS.attr('obj'),\n    encoding: DS.attr('string'),\n    separator: DS.attr('string'),\n    decimal: DS.attr('string'),\n    linebreak: DS.attr('string'),\n    quotes: DS.attr('boolean'),\n    headers: DS.attr('boolean'),\n    integrationtype: DS.attr('string'),\n    absences: DS.attr('boolean'),\n    absencetypes: DS.attr('obj'),\n    onerowabsences: DS.attr('boolean'),\n    templateId: DS.attr('string'),\n    orderBy: DS.attr('obj'),\n    absencesAfterWorktimes: DS.attr('boolean'),\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/custom-inflector-rules.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar inflector;\n\nimport Inflector from 'ember-inflector';\n\ninflector = Inflector.inflector;\n\ninflector.irregular('drive', 'drives');\n\nexport default {};\n","import DS from 'ember-data';\n\nexport default DS.Model.extend({\n    mobile: DS.attr('string'),\n});\n","import DS from 'ember-data';\n\nexport default DS.Model.extend({\n    left: DS.attr('string'),\n    center: DS.attr('string'),\n    right: DS.attr('string'),\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/form-field-setting.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormFieldSetting;\n\nimport DS from 'ember-data';\n\nimport formSettings from '../mixins/form-settings';\n\nFormFieldSetting = DS.Model.extend(formSettings, {\n    intl: Ember.inject.service(),\n    field: DS.belongsTo('form-field'),\n    name: DS.attr('string'),\n    value: DS.attr('string'),\n    userlevel: DS.attr('string'),\n    editable: DS.attr(),\n    condition: DS.attr('string'),\n    translatedName: Em.computed('name', function () {\n        return this.get('intl').t('setting.type.' + this.get('name'));\n    }),\n});\n\nexport default FormFieldSetting;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/form-field.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormField;\n\nimport DS from 'ember-data';\n\nimport formSettings from '../mixins/form-settings';\n\nFormField = DS.Model.extend(formSettings, {\n    intl: Ember.inject.service(),\n    name: DS.attr('string'),\n    external_type: DS.attr('string'),\n    type: DS.attr('string'),\n    options: DS.attr('string'),\n    form: DS.belongsTo('form'),\n    nro: DS.attr('number'),\n    schemaid: DS.attr('string'),\n    settings: DS.hasMany('form-field-setting'),\n    removed: DS.attr('boolean'),\n    editable: DS.attr('boolean'),\n    translatedType: Ember.computed('type', function () {\n        return this.get('intl').t('field.type.' + this.get('type'));\n    }),\n    own: Ember.computed('external_type', function () {\n        var ext;\n        ext = this.get('external_type');\n        if (ext) {\n            if (ext.substring(0, 6) === 'addon_') {\n                return true;\n            }\n        }\n        return false;\n    }),\n    mandatory: Ember.computed('settings.[]', function () {\n        var mandatory;\n        mandatory = false;\n        this.get('settings').forEach(function (setting) {\n            if (setting.get('name') === 'mandatory' && setting.get('value') === 'true') {\n                return (mandatory = true);\n            }\n        });\n        return mandatory;\n    }),\n    stashed: Ember.computed('settings.[]', function () {\n        var stashed;\n        stashed = false;\n        this.get('settings').forEach(function (setting) {\n            if (setting.get('name') === 'stashed' && setting.get('value') === 'true') {\n                return (stashed = true);\n            }\n        });\n        return stashed;\n    }),\n    isEditable: Em.computed('settings.[]', function () {\n        var disable;\n        disable = false;\n        this.get('settings').forEach((setting) => {\n            if (setting.get('name') === 'requirements') {\n                return (disable = true);\n            }\n        });\n        return disable;\n    }),\n    isLocked: Em.computed('settings.[]', function () {\n        var disable;\n        disable = false;\n        this.get('settings').forEach((setting) => {\n            if (setting.get('name') === 'lock_edit') {\n                return (disable = true);\n            }\n        });\n        return disable;\n    }),\n    dirtySettings: Em.computed('settings.[]', function () {\n        return this.get('settings').filterBy('hasDirtyAttributes');\n    }),\n});\n\nexport default FormField;\n","import Model, { attr } from '@ember-data/model';\n\nexport default class FormReportTemplateModel extends Model {\n    @attr('string') name;\n    @attr('string') form;\n    @attr('string') sums;\n    @attr('string') sumType;\n    @attr('number') limit;\n    @attr('string') columns;\n    @attr('string') filters;\n    @attr() filterOrder;\n    @attr() userlevels;\n    @attr('boolean') isEditable;\n}\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/form-setting.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormSetting;\n\nimport DS from 'ember-data';\n\nimport formSettings from '../mixins/form-settings';\n\nFormSetting = DS.Model.extend(formSettings, {\n    form: DS.belongsTo('form'),\n    name: DS.attr('string'),\n    value: DS.attr('string'),\n    userlevel: DS.attr('string'),\n    editable: DS.attr(),\n    condition: DS.attr('string'),\n});\n\nexport default FormSetting;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/form.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Form;\n\nimport DS from 'ember-data';\n\nimport formSettings from '../mixins/form-settings';\n\nForm = DS.Model.extend(formSettings, {\n    name: DS.attr('string'),\n    external_type: DS.attr('string'),\n    fields: DS.hasMany('form-field'),\n    settings: DS.hasMany('form-setting'),\n});\n\nexport default Form;\n","import DS from 'ember-data';\n\nexport default DS.Model.extend({\n    header: DS.attr('string'),\n    type: DS.attr('string'),\n    url: DS.attr('string'),\n    text: DS.attr('string'),\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/logo.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Logo;\n\nimport DS from 'ember-data';\n\nLogo = DS.Model.extend({\n    logo: DS.attr(),\n});\n\nexport default Logo;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/messageboard.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Messageboard;\n\nimport DS from 'ember-data';\n\nMessageboard = DS.Model.extend({\n    notify: DS.attr('string'),\n    header: DS.attr('string'),\n    content: DS.attr('string'),\n    forced: DS.attr('string'),\n    multirowlink: DS.attr('string'),\n});\n\nexport default Messageboard;\n","import DS from 'ember-data';\n\nexport default DS.Model.extend({\n    project: DS.belongsTo('project'),\n});\n","import DS from 'ember-data';\n\nexport default DS.Model.extend({\n    name: DS.attr('string'),\n    columns: DS.attr('string'),\n    rows: DS.attr('number'),\n    order: DS.attr('string'),\n    form: DS.attr('string'),\n    user: DS.belongsTo('user', { async: true }),\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/row-info.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RowInfo;\n\nimport DS from 'ember-data';\n\nRowInfo = DS.Model.extend({\n    created: DS.attr('date'),\n    creatorid: DS.attr('number'),\n    last_logged: DS.attr('date'),\n    modified: DS.attr('date'),\n    privilege_edit: DS.attr('boolean'),\n    privilege_remove: DS.attr('boolean'),\n    privilege_openlock: DS.attr('boolean'),\n    source: DS.attr('string'),\n    status: DS.attr('string'),\n    trimmed_query: DS.attr('boolean'),\n});\n\nexport default RowInfo;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/row-setting.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RowSetting;\n\nimport DS from 'ember-data';\n\nimport formSettings from '../mixins/form-settings';\n\nRowSetting = DS.Model.extend(formSettings, {\n    toid: DS.attr('string'),\n    name: DS.attr('string'),\n    value: DS.attr('string'),\n    userlevel: DS.attr('string'),\n});\n\nexport default RowSetting;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/models/user-activity-log.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserActivityLog;\n\nimport DS from 'ember-data';\n\nUserActivityLog = DS.Model.extend({\n    action: DS.attr(),\n    timestamp: DS.attr(),\n    form: DS.attr(),\n    rowids: DS.attr(),\n    owners: DS.attr(),\n    user: DS.belongsTo('user', {\n        async: true,\n    }),\n});\n\nexport default UserActivityLog;\n","import DS from 'ember-data';\n\nexport default DS.Model.extend({\n    name: DS.attr('string'),\n    value: DS.attr('obj'),\n});\n","define(\"tt4/modifiers/did-insert\", [\"exports\", \"@ember/render-modifiers/modifiers/did-insert\"], function (_exports, _didInsert) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _didInsert.default;\n    }\n  });\n});\n","define(\"tt4/modifiers/did-update\", [\"exports\", \"@ember/render-modifiers/modifiers/did-update\"], function (_exports, _didUpdate) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _didUpdate.default;\n    }\n  });\n});\n","define(\"tt4/modifiers/focus-trap\", [\"exports\", \"ember-focus-trap/modifiers/focus-trap\"], function (_exports, _focusTrap) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _focusTrap.default;\n    }\n  });\n});\n","define(\"tt4/modifiers/recognize-gesture\", [\"exports\", \"ember-gestures/modifiers/recognize-gesture\"], function (_exports, _recognizeGesture) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _recognizeGesture.default;\n    }\n  });\n});\n","define(\"tt4/modifiers/ref\", [\"exports\", \"ember-ref-modifier/modifiers/ref\"], function (_exports, _ref) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _ref.default;\n    }\n  });\n});\n","define(\"tt4/modifiers/sortable-group\", [\"exports\", \"ember-sortable/modifiers/sortable-group\"], function (_exports, _sortableGroup) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _sortableGroup.default;\n    }\n  });\n});\n","define(\"tt4/modifiers/sortable-handle\", [\"exports\", \"ember-sortable/modifiers/sortable-handle\"], function (_exports, _sortableHandle) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _sortableHandle.default;\n    }\n  });\n});\n","define(\"tt4/modifiers/sortable-item\", [\"exports\", \"ember-sortable/modifiers/sortable-item\"], function (_exports, _sortableItem) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _sortableItem.default;\n    }\n  });\n});\n","define(\"tt4/modifiers/style\", [\"exports\", \"ember-style-modifier/modifiers/style\"], function (_exports, _style) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _style.default;\n    }\n  });\n});\n","define(\"tt4/modifiers/will-destroy\", [\"exports\", \"@ember/render-modifiers/modifiers/will-destroy\"], function (_exports, _willDestroy) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _willDestroy.default;\n    }\n  });\n});\n","import Controller, { inject as controller } from '@ember/controller';\nimport { set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    saved: controller(),\n\n    init() {\n        this._super();\n        this.settings = {\n            form: 'abcense',\n            skip: ['starttime', 'endtime', 'status', 'addon_frnvaro_timmar'],\n            mandatory: ['startdate', 'enddate', 'dayamount'],\n        };\n    },\n\n    modelAlias: alias('model'),\n\n    actions: {\n        recordSaved(settings, record) {\n            set(this, 'saved.model', record);\n            set(this, 'saved.hideAddLinks', true);\n            return this.transitionToRoute('saved');\n        },\n        cancel() {\n            return this.transitionToRoute('abcenses.index');\n        },\n    },\n});\n","/*eslint-disable ember/named-functions-in-promises */\nimport { inject as service } from '@ember/service';\n\nimport Route from '@ember/routing/route';\n\nconst AbcensesAddRoute = Route.extend({\n    wtService: service(),\n\n    beforeModel() {\n        return this.wtService.unlessOpenWt().catch(() => {\n            return this.wtService.showOpenWtError();\n        });\n    },\n});\n\nexport default AbcensesAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"kFSjZWDw\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.abcense\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"abcenses.index\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"abcenses/add/abcense-record-comp\\\",null,[[\\\"multipleDays\\\",\\\"form\\\",\\\"settings\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[true,\\\"abcense\\\",[24,[\\\"settings\\\"]],\\\"recordSaved\\\",\\\"cancel\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/add-multiple/template.hbs\"}});","/* eslint-disable ember/named-functions-in-promises */\nimport { debounce } from '@ember/runloop';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport recordComp from '../../../collector/record-custom-comp/component';\nimport { copy } from 'ember-copy';\nimport { isEmpty, isPresent } from '@ember/utils';\n\nexport default recordComp.extend({\n    session: service(),\n    intl: service(),\n\n    layoutName: 'collector/record-comp',\n\n    fields: computed('record', 'settings', {\n        set(key, value) {\n            this._value = value;\n        },\n        get() {\n            if (this._value) {\n                return this._value;\n            }\n            // Collector service\n            const c = this.Collector;\n            // Collector form\n            const form = 'abcense';\n            const record = get(this, 'record');\n            if (!record) {\n                return;\n            }\n            const skip = get(this, 'settings.skip');\n            const mandatory = get(this, 'settings.mandatory');\n            const fields = c.fieldArray(form);\n            const retFields = [];\n            let fetchmultiday = false;\n            let fetchsingleday = false;\n\n            // Fetch form fields with collector service\n            fields.forEach((field) => {\n                field.features = copy(field.features);\n                if (Array.from(skip).includes(field.name)) {\n                    return;\n                }\n                if (Array.from(mandatory).includes(field.name)) {\n                    field.features = copy(field.features);\n                    field.features.mandatory = true;\n                }\n                if (field.type === 'database' && get(record, field.name)) {\n                    field.value = get(record, field.name + '.id');\n                } else {\n                    field.value = get(record, field.name);\n                }\n                if (field.name === 'abcensetype' && get(this, 'multipleDays')) {\n                    field.filterOptions = {\n                        type: 'both||days||(empty)',\n                    };\n                } else if (field.name === 'abcensetype' && !get(this, 'multipleDays')) {\n                    field.filterOptions = {\n                        type: 'both||hours||(empty)',\n                    };\n                }\n\n                if (get(this, 'multipleDays') && ['startdate', 'enddate'].includes(field.name)) {\n                    fetchmultiday = true;\n                }\n\n                if (!get(this, 'multipleDays') && field.name === 'startdate') {\n                    fetchsingleday = true;\n                }\n\n                return retFields.push(copy(field));\n            });\n\n            if (fetchmultiday && !get(record, 'id')) {\n                this.fetchAbsenceDaysForMultiday();\n            }\n            if (fetchsingleday && !get(record, 'id')) {\n                this.fecthWorkhoursForSingleDay();\n            }\n\n            return retFields;\n        },\n    }),\n\n    actions: {\n        setValue(value, field, set) {\n            if (set == null) {\n                set = true;\n            }\n            if (\n                get(this, 'multipleDays') &&\n                ['startdate', 'enddate', 'abcensetype', 'user'].includes(field)\n            ) {\n                this.fetchAbsenceDaysForMultiday();\n            }\n\n            if (!get(this, 'multipleDays') && ['startdate', 'user'].includes(field)) {\n                this.fecthWorkhoursForSingleDay();\n            }\n\n            return this._super(...arguments);\n        },\n\n        save() {\n            const intl = get(this, 'intl');\n            const record = get(this, 'record');\n            let errors = false;\n            const fields = get(this, 'fields');\n            fields.forEach((field) => {\n                if (\n                    field.features.mandatory &&\n                    (get(record, field.name) == null || get(record, field.name) === '')\n                ) {\n                    errors = true;\n                    get(record, 'errors').add(field.name, intl.t('field.error.mandatory'));\n                    return set(this, 'saving', false);\n                }\n            });\n\n            if (!get(this, 'fields').findBy('name', 'enddate')) {\n                set(record, 'enddate', get(record, 'startdate'));\n            }\n\n            if (!get(record, 'user')) {\n                set(record, 'user', get(this, 'session.currentUser'));\n            }\n\n            if (!errors) {\n                return this._super(...arguments);\n            }\n        },\n    },\n\n    fetchAbsenceDaysForMultiday() {\n        return debounce(this, this._fetchAbsenceDaysForMultiday, 1000);\n    },\n\n    _fetchAbsenceDaysForMultiday() {\n        if (\n            !get(this, 'record.starttime') &&\n            isPresent(get(this, 'record.startdate')) &&\n            isPresent(get(this, 'record.enddate')) &&\n            moment(get(this, 'record.startdate')).isValid() &&\n            moment(get(this, 'record.enddate')).isValid()\n        ) {\n            const country =\n                '&country=' +\n                get(get(this, 'store').peekAll('company-info'), 'firstObject.country');\n\n            let url =\n                'absence/getDays?date=' +\n                get(this, 'record.startdate') +\n                '_' +\n                get(this, 'record.enddate') +\n                country;\n            url +=\n                '&userid=' +\n                (get(this, 'record.user')\n                    ? get(this, 'record.user.id')\n                    : get(this, 'session.currentUser.id'));\n            url += !isEmpty(get(this, 'record.abcensetype.id'))\n                ? '&absencetype=' + get(this, 'record.abcensetype.id')\n                : '';\n            return this.Collector.ttapi({\n                url,\n            }).then((back) => {\n                return set(this, 'record.dayamount', back.days);\n            });\n        }\n    },\n\n    fecthWorkhoursForSingleDay() {\n        if (\n            isPresent(get(this, 'record.startdate')) &&\n            moment(get(this, 'record.startdate')).isValid()\n        ) {\n            return this.Collector.ttapi({\n                url:\n                    '/workdayCalendar/workingHours?date=' +\n                    get(this, 'record.startdate') +\n                    '&userid=' +\n                    get(this, 'record.user.id') +\n                    '&worktimegroup=' +\n                    (get(this, 'record.user')\n                        ? get(this, 'record.user.worktimegroup.id')\n                        : get(this, 'session.currentUser.worktimegroup.id')),\n            }).then((back) => {\n                return set(this, 'record.absence_hours', back / 60);\n            });\n        }\n    },\n});\n","import Controller, { inject as controller } from '@ember/controller';\nimport { computed, set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    saved: controller('saved'),\n    modelAlias: alias('model'),\n\n    settings: computed(function () {\n        // if hour-type adding\n        let ret;\n        if (this.Collector.testNeedsOne('products.absences_hours')) {\n            ret = {\n                form: 'abcense',\n                skip: ['dayamount', 'status', 'enddate'],\n                mandatory: ['startdate', 'absence_hours'],\n            };\n        } else {\n            ret = {\n                form: 'abcense',\n                skip: ['dayamount', 'status', 'enddate'],\n                mandatory: ['starttime', 'endtime', 'startdate'],\n            };\n        }\n        return ret;\n    }),\n\n    actions: {\n        recordSaved(settings, record) {\n            set(this, 'saved.model', record);\n            set(this, 'saved.hideAddLinks', true);\n            return this.transitionToRoute('saved');\n        },\n        cancel() {\n            return this.transitionToRoute('abcenses.index');\n        },\n    },\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend();\n","export default Ember.HTMLBars.template({\"id\":\"yr/sa3gm\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.abcense\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"abcenses.index\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"abcenses/add/abcense-record-comp\\\",null,[[\\\"form\\\",\\\"settings\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"abcense\\\",[24,[\\\"settings\\\"]],\\\"recordSaved\\\",\\\"cancel\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/add/template.hbs\"}});","/*eslint-disable ember/named-functions-in-promises */\nimport { inject as controller } from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { computed, get, set } from '@ember/object';\nimport { A } from '@ember/array';\nimport GeneralAddController from '../../../controllers/general-add';\n\nconst AbcensesEditController = GeneralAddController.extend({\n    saved: controller(),\n\n    edit: true,\n    abcensesAlias: alias('model'),\n    fieldSettings: A({\n        edit: true,\n    }),\n\n    settings: computed('model', function () {\n        // if hour-type adding\n        let ret;\n        if (\n            get(this, 'model.starttime') ||\n            (get(this, 'model.endtime') && get(this, 'model.dayamount') === 0) ||\n            !get(this, 'model.dayamount')\n        ) {\n            if (this.Collector.testNeedsOne('products.absences_hours')) {\n                ret = {\n                    form: 'abcense',\n                    skip: ['dayamount', 'status', 'enddate'],\n                    mandatory: ['absence_hours', 'startdate'],\n                };\n            } else {\n                ret = {\n                    form: 'abcense',\n                    skip: ['dayamount', 'status', 'enddate'],\n                    mandatory: ['starttime', 'endtime', 'startdate'],\n                };\n            }\n        } else {\n            ret = {\n                form: 'abcense',\n                skip: ['starttime', 'endtime', 'status', 'addon_frnvaro_timmar', 'absence_hours'],\n                mandatory: ['startdate', 'enddate', 'dayamount'],\n            };\n        }\n        return ret;\n    }),\n\n    multipleDays: computed('model', function () {\n        if (\n            get(this, 'model.starttime') ||\n            (get(this, 'model.endtime') && get(this, 'model.dayamount') === 0) ||\n            !get(this, 'model.dayamount')\n        ) {\n            return false;\n        } else {\n            return true;\n        }\n    }),\n\n    actions: {\n        recordSaved(settings, record) {\n            set(this, 'saved.model', record);\n            set(this, 'saved.hideAddLinks', true);\n            if (get(this, 'afterSave')) {\n                return this.transitionToRoute('saved').then((newRoute) => {\n                    return set(newRoute.controller, 'afterSave', get(this, 'afterSave'));\n                });\n            } else {\n                return this.transitionToRoute('saved');\n            }\n        },\n        cancel() {\n            if (get(this, 'afterSave')) {\n                const afterSave = get(this, 'afterSave');\n                if (typeof afterSave === 'object') {\n                    return this.transitionToRoute(afterSave.route, afterSave.params);\n                }\n                return this.transitionToRoute(get(this, 'afterSave'));\n            } else {\n                return this.transitionToRoute('abcenses.index');\n            }\n        },\n    },\n});\nexport default AbcensesEditController;\n","import GeneralAddRoute from '../../../routes/general-add';\nimport { set } from '@ember/object';\n\nconst AbcensesEditRoute = GeneralAddRoute.extend({\n    controllerName: 'abcenses/edit',\n    modelName: 'abcense',\n    edit: true,\n\n    beforeModel(transition) {\n        this._super();\n        const controller = this.controllerFor('abcenses/edit');\n        if (transition.from && transition.from.name === 'timetracker.comp-report') {\n            return set(controller, 'afterSave', 'timetracker.comp-report');\n        } else if (transition.from && transition.from.name === 'timetracker.aggregated.rows') {\n            return set(controller, 'afterSave', {\n                route: 'timetracker.aggregated.rows',\n                params: transition.from.params.date,\n            });\n        } else {\n            if (this.Collector.testNeeds(['mobileView', 'userlevel=1'])) {\n                return set(controller, 'afterSave', 'timetracker.week-report');\n            } else {\n                return set(controller, 'afterSave', 'abcenses');\n            }\n        }\n    },\n});\n\nexport default AbcensesEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"+Tc5xZcd\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.abcense\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"abcenses.index\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"abcenses/add/abcense-record-comp\\\",null,[[\\\"form\\\",\\\"settings\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\",\\\"record\\\",\\\"multipleDays\\\"],[\\\"abcense\\\",[24,[\\\"settings\\\"]],\\\"recordSaved\\\",\\\"cancel\\\",[24,[\\\"model\\\"]],[24,[\\\"multipleDays\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/edit/template.hbs\"}});","import Controller from '@ember/controller';\nimport { set, computed, get } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport moment from 'moment';\nimport EmberObject from '@ember/object';\nimport { A } from '@ember/array';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    gui: service(),\n    queryParams: ['date', 'user', 'page', 'group', 'employer', 'worktimegroup', 'project'],\n    form: 'abcense',\n    user: null,\n    limit: 25,\n    page: 1,\n    group: null,\n    employer: null,\n    superior: null,\n    worktimegroup: null,\n    localStorageKey: 'absencesganttcalendar_defaultColumns',\n    init() {\n        this._super(...arguments);\n        set(this, 'colorFields', ['abcensetype.id']);\n    },\n    users: alias('model.users'),\n    unFilteredModel: alias('model.absences'),\n    calendarRows: computed('model.absences.@each.{startdate,enddate}', function () {\n        if (get(this, 'model.showTeamCalendar')) return this.mapTeamData(get(this, 'model.data'));\n\n        if (get(this, 'model.users.user') && get(this, 'model.users.user').length !== 0) {\n            let mapped = this.mapAbsences(\n                get(this, 'model.absences'),\n                get(this, 'model.users.user'),\n            );\n            return mapped.absences;\n        }\n        return A([]);\n    }),\n    pageCount: computed('users', 'limit', function () {\n        return Math.ceil(get(this, 'users.count') / get(this, 'limit'));\n    }),\n\n    filters: computed(function () {\n        return A([\n            EmberObject.create({\n                field: 'startdate',\n                type: 'date',\n                form: 'abcense',\n                name: 'startdate',\n                value: get(this, 'date'),\n            }),\n            EmberObject.create({\n                field: 'user',\n                type: 'database',\n                form: 'abcense',\n                name: 'user',\n                value: get(this, 'user'),\n            }),\n\n            EmberObject.create({\n                field: 'group',\n                type: 'database',\n                form: 'user',\n                name: 'group',\n                value: get(this, 'group'),\n                extra: true,\n            }),\n            EmberObject.create({\n                field: 'employer',\n                type: 'database',\n                form: 'user',\n                name: 'employer',\n                value: get(this, 'employer'),\n                extra: true,\n            }),\n            EmberObject.create({\n                field: 'superior',\n                type: 'database',\n                form: 'user',\n                name: 'superior',\n                value: get(this, 'superior'),\n                extra: true,\n            }),\n            EmberObject.create({\n                field: 'worktimegroup',\n                type: 'database',\n                form: 'user',\n                name: 'worktimegroup',\n                value: get(this, 'worktimegroup'),\n                extra: true,\n            }),\n        ]);\n    }),\n    actions: {\n        filterChanged(value, field) {\n            if (['group', 'employer', 'worktimegroup', 'superior'].includes(field)) {\n                if (value) {\n                    value = get(value, 'id');\n                } else {\n                    value = null;\n                }\n            }\n            set(this, field, value);\n            set(this, 'page', 1);\n        },\n\n        catchActions(action, params) {\n            var c, cols, fields;\n            if (action === 'fieldsUpdate') {\n                c = get(this, 'Collector');\n                cols = [];\n                params.forEach(function (col) {\n                    return cols.push(col.ext);\n                });\n                fields = c.fieldArray(get(this, 'form'), cols);\n                return set(this, 'ganttFields', fields);\n            }\n        },\n\n        openAbsenceModal(day, user) {\n            let userRecord = this.store.peekRecord('user', get(user, 'id'));\n            let params = {\n                startdate: day,\n                enddate: day,\n                user: userRecord,\n            };\n            this.store.createRecord('abcense', params);\n            this.transitionToRoute({ queryParams: { modal: ['abcense', 'new'] } });\n        },\n\n        openEditor(row) {\n            this.transitionToRoute({ queryParams: { modal: ['abcense', get(row, 'id')] } });\n        },\n    },\n\n    mapTeamData(data) {\n        let ret = A([]);\n        data.users.forEach((user) => {\n            let rows = this.perDate(data.abcenses.filterBy('user', user.id));\n            ret.push(\n                EmberObject.create({\n                    main: EmberObject.create({ ...user, ...user.values }),\n                    rows: rows,\n                }),\n            );\n        });\n        return ret;\n    },\n\n    mapAbsences(absences, users) {\n        let ret = A([]);\n        users.forEach((user) => {\n            let rows = this.perDate(absences.filterBy('user.id', user.id.toString()));\n            ret.push(\n                EmberObject.create({\n                    main: EmberObject.create({ ...user, ...user.values }),\n                    rows: rows,\n                }),\n            );\n        });\n        return { absences: ret, users: users };\n    },\n\n    perDate(rows) {\n        let perDate = {};\n        rows.forEach((item) => {\n            const date = get(item, 'startdate');\n            if (!perDate[date]) {\n                perDate[date] = [];\n            }\n            if (get(item, 'enddate')) {\n                let i = 1;\n                const moment_date = moment(date);\n                const diff = moment(get(item, 'enddate')).diff(moment_date, 'day');\n                perDate[date].push(item);\n                while (i <= diff) {\n                    const new_date = moment_date.add(1, 'day').format('YYYY-MM-DD');\n                    if (!perDate[new_date]) {\n                        perDate[new_date] = [];\n                    }\n                    perDate[new_date].push(item);\n                    i++;\n                }\n            } else {\n                perDate[date].push(item);\n            }\n        });\n        return perDate;\n    },\n\n    startdate:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().startOf('week').add(8, 'weeks').format('YYYY-MM-DD'),\n});\n","/* eslint-disable ember/named-functions-in-promises */\nimport Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport RSVP from 'rsvp';\nimport { isNone } from '@ember/utils';\n\nexport default Route.extend({\n    store: service(),\n    collector: service('collector-service'),\n    capi: service(),\n    ttapi: service(),\n\n    // Defining query parameters and specifying that the model should refresh when they change\n    queryParams: {\n        startdate: { refreshModel: true },\n        user: { refreshModel: true },\n        page: { refreshModel: true },\n        group: { refreshModel: true },\n        employer: { refreshModel: true },\n        superior: { refreshModel: true },\n        worktimegroup: { refreshModel: true },\n    },\n\n    // The main model hook that fetches data based on the route's parameters\n    model(params) {\n        const c = get(this, 'collector');\n\n        // Building user parameters based on query parameters\n        const userParams = { offset: params.page === 1 ? 0 : 25 * (params.page - 1) };\n        Object.keys(params).forEach((item) => {\n            if (item === 'user' && params.user) {\n                // If 'user' parameter is present, set the 'id' in userParams\n                userParams.id = params.user;\n            } else if (c.testNeedsOne('user.' + item)) {\n                // If the item is needed, add it to userParams\n                userParams[item] = params[item];\n            }\n        });\n\n        // Merging default parameters with user-provided parameters\n        const allParams = Object.assign({ limit: 25, order: 'lastname,firstname' }, userParams);\n\n        // Constructing the query string for the API request\n        let queryString = '';\n        Object.entries(allParams).forEach((param) => {\n            if (isNone(param[1])) return;\n\n            if (!queryString) queryString += `?${param[0]}=${param[1]}`;\n            else queryString += `&${param[0]}=${param[1]}`;\n        });\n\n        // Checking user permissions to determine which calendar to show\n        const canSeeOnlyOwnAbsences = this.collector.testNeeds(['abcense.user@hide']);\n        const showTeamCalendar =\n            canSeeOnlyOwnAbsences && this.collector.testNeeds(['products.team_calendar']);\n\n        // If the user can only see their own absences but has access to the team calendar\n        if (showTeamCalendar) {\n            return RSVP.hash({\n                showTeamCalendar: true,\n                data: this.fetchTeamAbsences(params),\n            });\n        }\n\n        // Fetching users from the API\n        let userPromise = this.capi.request('abcenses/user' + queryString);\n\n        // Fetch absences in batches\n        return RSVP.hash({\n            showTeamCalendar: false,\n            users: userPromise,\n            absences: this.fetchAbsences(userPromise, params),\n        });\n    },\n\n    // Method to fetch team absences from TTapi\n    fetchTeamAbsences(params) {\n        return this.ttapi.request(`absence/team?startdate_enddate=${params.startdate}`);\n    },\n\n      // Fetch absences for all users in batches of 100 records\n      fetchAbsences(usersPromise, params) {\n        return usersPromise.then((users) => {\n          let allAbsences = [];\n          let offset = 0;\n          const limit = 100;\n          const userIds = users.user.mapBy('id').join(',');\n\n          // Start fetching batches\n          return this.fetchBatch(allAbsences, userIds, params.startdate, limit, offset);\n        });\n      },\n\n      fetchBatch(allAbsences, userIds, startdate, limit, offset) {\n        return get(this, 'store')\n          .query('abcense', {\n            user: userIds,\n            startdate_enddate: startdate,\n            order: 'startdate',\n            sideload: true,\n            limit: limit,\n            offset: offset,\n          })\n          .then((batch) => {\n            allAbsences.pushObjects(batch.toArray());\n            if (get(batch, 'length') === limit) {\n              offset += limit;\n              // Recursively fetch the next batch\n              return this.fetchBatch(allAbsences, userIds, startdate, limit, offset);\n            } else {\n              // Return all collected absences\n              return allAbsences;\n            }\n          });\n      },\n});\n","export default Ember.HTMLBars.template({\"id\":\"BiYMe8ii\",\"block\":\"{\\\"symbols\\\":[\\\"calendar\\\",\\\"row\\\",\\\"cell\\\",\\\"title\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"gantt-calendar \\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"customFullScreen\\\"]],\\\"report-main-zoomed\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"form-column-selector\\\",null,[[\\\"form\\\",\\\"shownColumns\\\",\\\"localStorageKey\\\",\\\"fullscreenmode\\\",\\\"bubbleActions\\\"],[[24,[\\\"form\\\"]],[24,[\\\"shownColumns\\\"]],\\\"absencesganttcalendar_defaultColumns\\\",\\\"custom\\\",\\\"catchActions\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"calendar-compact\\\",null,[[\\\"data\\\",\\\"range\\\"],[[24,[\\\"calendarRows\\\"]],[24,[\\\"startdate\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[23,1,[\\\"months-header\\\"]],false],[0,\\\"\\\\n        \\\"],[1,[23,1,[\\\"weeks-header\\\"]],false],[0,\\\"\\\\n        \\\"],[1,[23,1,[\\\"days-header\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"row\\\"]],\\\"expected `calendar.row` to be a contextual component but found a string. Did you mean `(component calendar.row)`? ('tt4/pods/abcenses/gantt/template.hbs' @ L9:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"title\\\"]],\\\"expected `row.title` to be a contextual component but found a string. Did you mean `(component row.title)`? ('tt4/pods/abcenses/gantt/template.hbs' @ L10:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"user-icon\\\",[[23,4,[\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],[[\\\"size\\\",\\\"inline\\\"],[\\\"sm\\\",true]]],false],[0,\\\" \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"user\\\",\\\"abcense\\\",[23,4,[]]]]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"cell\\\"]],\\\"expected `row.cell` to be a contextual component but found a string. Did you mean `(component row.cell)`? ('tt4/pods/abcenses/gantt/template.hbs' @ L13:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"bar\\\"]],\\\"expected `cell.bar` to be a contextual component but found a string. Did you mean `(component cell.bar)`? ('tt4/pods/abcenses/gantt/template.hbs' @ L14:C19) \\\"],null]],[[\\\"startDateField\\\",\\\"colorFields\\\"],[\\\"startdate\\\",[24,[\\\"colorFields\\\"]]]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[23,3,[\\\"rows\\\",\\\"firstObject\\\",\\\"dayamount\\\"]],[28,\\\"not-eq\\\",[[23,3,[\\\"rows\\\",\\\"firstObject\\\",\\\"dayamount\\\"]],1],null]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,3,[\\\"rows\\\",\\\"firstObject\\\",\\\"dayamount\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"general.days\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[\\\"rows\\\",\\\"firstObject\\\",\\\"absence_hours\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"format-hours\\\",[[28,\\\"sum-field\\\",null,[[\\\"field\\\",\\\"rows\\\"],[[28,\\\"hash\\\",null,[[\\\"type\\\",\\\"name\\\"],[\\\"hours\\\",\\\"absence_hours\\\"]]],[23,3,[\\\"rows\\\"]]]]]],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"popover-content-fields\\\"]],\\\"expected `cell.popover-content-fields` to be a contextual component but found a string. Did you mean `(component cell.popover-content-fields)`? ('tt4/pods/abcenses/gantt/template.hbs' @ L21:C18) \\\"],null]],[[\\\"fields\\\",\\\"onEdit\\\",\\\"form\\\"],[[24,[\\\"ganttFields\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"openEditor\\\"],null],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"model\\\",\\\"showTeamCalendar\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"plus-button\\\"]],\\\"expected `cell.plus-button` to be a contextual component but found a string. Did you mean `(component cell.plus-button)`? ('tt4/pods/abcenses/gantt/template.hbs' @ L23:C22) \\\"],null]],[[\\\"onAdd\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"openAbsenceModal\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n    \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/gantt/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default Route.extend({\n    model(params) {\n        return params;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"x4SEXefw\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"abcense\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/history/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed } from '@ember/object';\nimport { set, get } from '@ember/object';\nimport { A } from '@ember/array';\nimport { typeOf } from '@ember/utils';\n\nexport default Component.extend({\n    ttapi: service(),\n    flags: service(),\n    dialogs: service(),\n    store: service(),\n    intl: service(),\n\n    classNames: ['holiday-details-box'],\n\n    numberOfSeasons: 5,\n\n    userDetails: computed('user', async function () {\n        return await this.getUserDetails();\n    }),\n\n    translated_columns: computed('showHistoryColumns', function () {\n        return this.showHistoryColumns.map((column) => {\n            return this.intl.t('holiday_list.history.' + column);\n        });\n    }),\n\n    async didInsertElement() {\n        set(this, 'yearsArr', A());\n\n        const data = await get(this, 'userDetails');\n\n        let ret = [];\n\n        for (var row of data) {\n            ret.push(row.users[0]);\n        }\n        set(this, 'data', ret);\n        set(this, 'historyType', this.historyType ? this.historyType : 'table');\n\n        set(this, 'showHistoryColumns', ['created', 'season', 'description', 'days', 'deducts']);\n        set(this, 'historyFilters', { type: 'both' });\n        this.historyRowActions = [\n            { action: 'remove', icon: 'move move-Delete' },\n            { action: 'edit', icon: 'move move-Pencil' },\n        ];\n        if (this.historyType === 'list') await this.showHolidayPayList();\n    },\n\n    actions: {\n        toggleAllSeasons() {\n            if (this.toggledSeasons) {\n                set(this, 'yearsArr', []);\n            } else {\n                let startYear = moment()\n                    .subtract(this.numberOfSeasons - 1, 'year')\n                    .format('YYYY');\n                let arr = [];\n                for (var i = 0; i < this.numberOfSeasons; i++) {\n                    arr.pushObject(moment(startYear).add(i, 'year').format('YYYY'));\n                }\n                set(this, 'yearsArr', arr);\n            }\n            this.notifyPropertyChange('yearsArr');\n            this.toggleProperty('toggledSeasons');\n        },\n        showDetailsForSeason(year) {\n            let arr = get(this, 'yearsArr');\n            if (arr.indexOf(year) == -1) {\n                arr.pushObject(year);\n            } else {\n                arr.removeObject(year);\n            }\n            this.notifyPropertyChange('yearsArr');\n        },\n        filterHistory(name, e) {\n            this.filterHistory(name, e.target.value);\n        },\n\n        async changeType(type) {\n            if (type === 'list' && this.historyType !== 'list') await this.showHolidayPayList();\n            return set(this, 'historyType', type);\n        },\n\n        async historyRowAction(action, row) {\n            if (action === 'remove') {\n                const con = await this.dialogs.confirm(\n                    get(this, 'intl').t('report.confirm_delete'),\n                );\n                if (!con) return;\n                set(\n                    this,\n                    'filteredHistoryData',\n                    this.filteredHistoryData.filter((el) => el.id !== row.id),\n                );\n                this.removeRecord?.(row);\n            }\n            if (action === 'edit') {\n                this.editRecord?.(row);\n            }\n        },\n    },\n    filterHistory(name, value) {\n        this.historyFilters[name] = value;\n\n        let historydata = get(this, 'historyData');\n\n        historydata = historydata.filter((el) => {\n            let ret = true;\n            if (this.historyFilters.type === 'automatic') {\n                ret = el.type === 'absence';\n            }\n\n            if (this.historyFilters.type === 'manual') {\n                ret = el.type === 'manual';\n            }\n            return ret;\n        });\n\n        set(this, 'filteredHistoryData', historydata);\n    },\n\n    async showHolidayPayList() {\n        let historyData = [];\n\n        set(this, 'historyDataLoading', true);\n        set(this, 'historyData', null);\n        set(this, 'historyFilters.type', 'both');\n\n        try {\n            const absences = await this.getAbsenceRows();\n            const holidayPays = await this.getHolidayPays();\n            historyData = absences?.concat(holidayPays);\n        } catch (e) {\n            let message = e.message || 'Server error';\n            this.dialogs.alert(message);\n        }\n\n        set(this, 'historyDataLoading', false);\n        // Sort by date\n        set(\n            this,\n            'historyData',\n            historyData?.sort((el1, el2) => (el1.sortdate < el2.sortdate ? 1 : -1)),\n        );\n        set(this, 'filteredHistoryData', this.historyData);\n        this.filterHistory('type', 'both');\n    },\n\n    async getAbsenceRows() {\n        const params = {\n            user: this.user.id,\n            startdate:\n                moment()\n                    .subtract(this.numberOfSeasons - 1, 'year')\n                    .format('YYYY-MM-DD') +\n                '_' +\n                moment().format('YYYY-MM-DD'),\n            limit: 100,\n            'abcensetype[usesholiday]': 'holidaypay',\n            sideload: ['abcensetype.usesholiday'],\n        };\n        const absences = await this.store.query('abcense', params);\n        if (!absences) return [];\n        let absenceArr = A([]);\n\n        for (const row of absences.toArray()) {\n            const absenceSeasonArray = await this.ttapi.request(\n                'api/getAbsenceSeason?id=' + this.user.id + '&absenceid=' + get(row, 'id'),\n            );\n            for (const resp of absenceSeasonArray) {\n                absenceArr.pushObject({\n                    id: get(row, 'id'),\n                    created: moment(get(row, 'row_info.created')).format('DD.MM.YYYY'),\n                    sortdate: get(row, 'row_info.created'),\n                    season: resp['season'],\n                    description: get(row, 'description'),\n                    days: resp['used'],\n                    deducts: true,\n                    type: 'absence',\n                });\n            }\n        }\n        return absenceArr;\n    },\n\n    async getUserDetails() {\n\n        // Get past 5 years seasons\n        let result = [];\n        const url = 'api/getMultipleSeasonsUsersWithHolidays';\n        let res = await this.Collector.ttapi({\n            url: url,\n            data: {\n                id: this.user.id,\n                start: moment().add({year: 1}).format('YYYY-05-02'),\n                country: 'fi',\n                years: this.numberOfSeasons,\n            },\n        });\n        result = res;\n\n        // Get all seasons if the flag is set\n        if (this.flags.test('holiday-details-modal-v-2')) {\n            const url = 'api/getAllUserHolidaysWithDetails';\n            let resFlag = await this.Collector.ttapi({\n                url: url,\n                data: {\n                    id: this.user.id,\n                    country: 'fi',\n                },\n            });\n            \n            try {\n                // Check if there are new seasons\n                let newSeasons = resFlag.filter(row => result.filter(rowR => rowR.users[0]?.holidayYear === row?.users[0]?.holidayYear).length === 0);\n                if(newSeasons.length > 0) {\n                    result = result.concat(newSeasons);\n                }\n                // Arrange the seasons in order\n                result = result.sort((a, b) => {\n                    return a.users[0].holidayYear - b.users[0].holidayYear;\n                });\n                return result;\n            } catch(err) {\n                return result;\n            }\n        }\n\n        return result;\n    },\n\n\n    async getHolidayPays() {\n        const holidayPays = await this.store.query('holidaypay', { user: this.user.id });\n        if (!holidayPays) return [];\n\n        return holidayPays.map((historyrow) => {\n            return {\n                id: get(historyrow, 'id'),\n                created: moment(get(historyrow, 'row_info.created')).format('DD.MM.YYYY'),\n                sortdate: get(historyrow, 'row_info.created'),\n                season:\n                    typeOf(get(historyrow, 'date')) === 'string'\n                        ? get(historyrow, 'date').substr(0, 4)\n                        : get(historyrow, 'date')?.value,\n                description: get(historyrow, 'description'),\n                days: get(historyrow, 'days'),\n                deducts: get(historyrow, 'deducts'),\n                type: 'manual',\n            };\n        });\n    },\n});\n","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { set, get } from '@ember/object';\n\nexport default Component.extend({\n    ttapi: service(),\n    flags: service(),\n\n    tagName: '',\n\n    async didInsertElement() {\n        set(this, 'loading', true);\n        let user = get(this, 'data');\n        const year = get(this, 'year');\n\n        // old data\n        const url = 'api/getUserHolidaySummary?start=';\n\n        const oldArr = await get(this, 'ttapi').request(\n            url +\n                year +\n                '-05-02&id=' +\n                user[0]['id'] +\n                (this.isHolidayReport ? '&absenceType=vacation' : ''),\n        );\n\n        // current data\n        const currentYear = +year + 1;\n\n        const currentArr = await get(this, 'ttapi').request(\n            url +\n                currentYear +\n                '-05-02&id=' +\n                user[0]['id'] +\n                (this.isHolidayReport ? '&absenceType=vacation' : ''),\n        );\n\n        //const data = await get(this, 'data');\n        //let currentArr = data[moment(year+\"-01-01\").add(1, 'year').format(\"YYYY\")];\n        //let oldArr = data[year];\n\n        let currentDays = currentArr['abcenses'].filter((row) => {\n            return row['lastseason'] != 0;\n        });\n\n        // Sort current days according to startdate field\n        currentDays = currentDays.sort((a, b) => {\n            return new Date(a['startdate']) < new Date(b['startdate']) ? 1 : -1;\n        });\n\n        let oldDays = oldArr['abcenses'].filter((row) => {\n            return row['thisseason'] != 0;\n        });\n\n        // Sort old days according to startdate field\n        oldDays = oldDays.sort((a, b) => {\n            return new Date(a['startdate']) < new Date(b['startdate']) ? 1 : -1;\n        });\n\n        let bookedOldDays = [];\n        let bookedCurrentDays = [];\n        let totalHolidays = [];\n        let totals = [];\n\n        let totalOldHolidays = [];\n        let totalCurrentHolidays = [];\n\n        for (var oldrow of oldDays) {\n            if (get(oldrow, 'startdate') > moment().format('YYYY-MM-DD')) {\n                bookedOldDays.pushObject(oldrow);\n                //console.log(\"added \"+ get(oldrow, 'startdate')+\"_\"+get(oldrow,'enddate')+\" to OLD booked\")\n            } else {\n                totalOldHolidays.pushObject(oldrow);\n            }\n        }\n        for (var currentRow of currentDays) {\n            set(currentRow, 'current', true);\n            if (get(currentRow, 'startdate') > moment().format('YYYY-MM-DD')) {\n                //console.log(\"added \"+ get(currentRow, 'startdate')+\"_\"+get(currentRow,'enddate')+\" to CURRENT booked\")\n                bookedCurrentDays.pushObject(currentRow);\n            } else {\n                totalCurrentHolidays.pushObject(currentRow);\n            }\n        }\n\n        const totals1 = totalOldHolidays.reduce((total, row) => total + row.thisseason, 0);\n        const totals2 = totalCurrentHolidays.reduce((total, row) => total + row.lastseason, 0);\n\n        totals = totals1 + totals2;\n\n        totalHolidays = totalOldHolidays.concat(totalCurrentHolidays);\n\n        const bookedSum1 = bookedOldDays.reduce((total, row) => total + row.thisseason, 0);\n        const bookedSum2 = bookedCurrentDays.reduce((total, row) => total + row.lastseason, 0);\n\n        set(this, 'totalHolidays', totalHolidays);\n        set(this, 'bookedThisSeason', bookedOldDays.concat(bookedCurrentDays));\n        set(this, 'totalSums', totals);\n\n        set(this, 'bookedSum', bookedSum1 + bookedSum2);\n\n        set(this, 'loading', false);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"SoKwfVFJ\",\"block\":\"{\\\"symbols\\\":[\\\"abRow\\\",\\\"abRow\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[10,\\\"class\\\",\\\"dropshadow-row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"empty-th centered-text\\\"],[10,\\\"colspan\\\",\\\"5\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"totalHolidays\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"tr\\\",true],[10,\\\"class\\\",\\\"dropshadow-row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"used-row no-border\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.used\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"used-row top-row no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"used-row centered-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.startdate\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"used-row centered-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.enddate\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"used-row centered-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.count\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"totalHolidays\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row centered-text no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row centered-text\\\"],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",\\\"startdate\\\",[23,2,[\\\"startdate\\\"]]]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row centered-text\\\"],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",\\\"startdate\\\",[23,2,[\\\"enddate\\\"]]]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row centered-text\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"current\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,2,[\\\"lastseason\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,2,[\\\"thisseason\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"],[7,\\\"tr\\\",true],[11,\\\"class\\\",[29,[\\\"sub-table-end \\\",[28,\\\"unless\\\",[[24,[\\\"bookedThisSeason\\\"]],\\\"bottom-shadow-row\\\"],null]]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row centered-text no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row centered-text upper-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row upper-border total-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.total\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"used-row centered-text upper-border\\\"],[8],[1,[22,\\\"totalSums\\\"],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"bookedThisSeason\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[11,\\\"class\\\",[28,\\\"unless\\\",[[24,[\\\"totalHolidays\\\"]],\\\"dropshadow-row\\\"],null]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"booked-row no-border\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.booked\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"booked-row top-row no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.startdate\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.enddate\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.count\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"bookedThisSeason\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text\\\"],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",\\\"startdate\\\",[23,1,[\\\"startdate\\\"]]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text\\\"],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",\\\"startdate\\\",[23,1,[\\\"enddate\\\"]]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"current\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,1,[\\\"lastseason\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,1,[\\\"thisseason\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[7,\\\"tr\\\",true],[10,\\\"class\\\",\\\"sub-table-end bottom-shadow-row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row no-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text upper-border\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row upper-border total-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.total\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"booked-row centered-text upper-border\\\"],[8],[1,[22,\\\"bookedSum\\\"],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[28,\\\"or\\\",[[24,[\\\"totalHolidays\\\"]],[24,[\\\"bookedThisSeason\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"tr\\\",true],[10,\\\"class\\\",\\\"dropshadow-row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"empty-th centered-text\\\"],[10,\\\"colspan\\\",\\\"5\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.no-rows\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/holiday-details-comp/details-row-comp/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"o6bj2s6d\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\",\\\"row\\\",\\\"columns\\\",\\\"rowActions\\\",\\\"button\\\",\\\"button\\\",\\\"column\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[23,0,[\\\"isHolidayReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu flex-submenu\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,0,[\\\"historyType\\\"]],\\\"list\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"changeType\\\",\\\"list\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"holiday.details-comp.list\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,0,[\\\"historyType\\\"]],\\\"table\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"changeType\\\",\\\"table\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"holiday.details-comp.table\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"userDetails\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"historyType\\\"]],\\\"list\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"historyDataLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-submenu\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"defaults.field.user\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"get\\\",[[23,0,[\\\"user\\\"]],\\\"firstname\\\"],null],false],[0,\\\"  \\\"],[1,[28,\\\"get\\\",[[23,0,[\\\"user\\\"]],\\\"lastname\\\"],null],false],[9],[0,\\\"  \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"history.action.show_data\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[10,\\\"name\\\",\\\"worktimebank-entry-filter\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterHistory\\\",\\\"type\\\"],null]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"both\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.entry_type.both\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"manual\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.entry_type.manual\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"automatic\\\"],[8],[1,[28,\\\"t\\\",[\\\"holiday-details.entry_type.automatic\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"translated_columns\\\",\\\"hideSort\\\"],[[23,0,[\\\"showHistoryColumns\\\"]],[23,0,[\\\"filteredHistoryData\\\"]],[23,0,[\\\"historyRowActions\\\"]],[23,0,[\\\"translated_columns\\\"]],true]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[11,\\\"class\\\",[29,[[23,2,[\\\"class\\\"]]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,7,[]],\\\"deducts\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[]],\\\"date\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"moment-format\\\",[[28,\\\"get\\\",[[23,2,[]],[23,7,[]]],null],\\\"DD.MM.YYYY\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"get\\\",[[23,2,[]],[23,7,[]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"if\\\",[[28,\\\"eq\\\",[[28,\\\"get\\\",[[23,2,[]],[23,7,[]]],null],true],null],[28,\\\"t\\\",[\\\"worktimebank.option.deducts\\\"],null],[28,\\\"t\\\",[\\\"worktimebank.option.adds\\\"],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[7]},null],[4,\\\"if\\\",[[23,4,[\\\"length\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"type\\\"]],\\\"manual\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-row-icon invisible\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"row_info\\\",\\\"status\\\"]],\\\"locked\\\"],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"lockedActions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[[23,6,[\\\"icon\\\"]]]]],[3,\\\"action\\\",[[23,0,[]],\\\"historyRowAction\\\",[23,6,[\\\"action\\\"]],[23,2,[]]]],[8],[4,\\\"if\\\",[[23,6,[\\\"text\\\"]]],null,{\\\"statements\\\":[[0,\\\" \\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,6,[\\\"text\\\"]]]]],false],[0,\\\" \\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[23,4,[]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[[23,5,[\\\"icon\\\"]]]]],[3,\\\"action\\\",[[23,0,[]],\\\"historyRowAction\\\",[23,5,[\\\"action\\\"]],[23,2,[]]]],[8],[4,\\\"if\\\",[[23,5,[\\\"text\\\"]]],null,{\\\"statements\\\":[[0,\\\" \\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,5,[\\\"text\\\"]]]]],false],[0,\\\" \\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2,3,4]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-5\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"defaults.field.user\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"get\\\",[[23,0,[\\\"user\\\"]],\\\"firstname\\\"],null],false],[0,\\\"  \\\"],[1,[28,\\\"get\\\",[[23,0,[\\\"user\\\"]],\\\"lastname\\\"],null],false],[9],[0,\\\"  \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table general-report collapse-table\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"holiday_season.season\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.earned\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.used\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.booked\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"holiday-report.left\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[\\\"move  \\\",[28,\\\"if\\\",[[24,[\\\"toggledSeasons\\\"]],\\\"move-SortUp\\\",\\\"move-SortDown\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"toggleAllSeasons\\\"]],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"data\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"holidayYear\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isHolidayReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"allDays\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"usedDays\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"bookedDays\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"daysLeft\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"allHolidayPays\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"usedHolidayPays\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"bookedHolidayPays\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"availableHolidayPays\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"in-array\\\",[[23,1,[\\\"holidayYear\\\"]],[24,[\\\"yearsArr\\\"]]],null],\\\"move move-SortUp\\\",\\\"move move-SortDown\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"showDetailsForSeason\\\",[23,1,[\\\"holidayYear\\\"]]]],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[[23,1,[\\\"holidayYear\\\"]],[24,[\\\"yearsArr\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"abcenses/holiday-details-comp/details-row-comp\\\",null,[[\\\"data\\\",\\\"year\\\",\\\"isHolidayReport\\\"],[[24,[\\\"data\\\"]],[23,1,[\\\"holidayYear\\\"]],[23,0,[\\\"isHolidayReport\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/holiday-details-comp/template.hbs\"}});","import { A } from '@ember/array';\nimport EmberObject, { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { getOwner } from '@ember/application';\nimport { typeOf, isEmpty } from '@ember/utils';\n\nexport default Controller.extend({\n    store: service(),\n    Collector: service('collector-service'),\n    fileExports: service('file-exports'),\n    ttapi: service(),\n    intl: service(),\n    flags: service(),\n    session: service(),\n    dialogs: service(),\n\n    selectedYear: null,\n\n    user: null,\n    employer: null,\n    page: 1,\n    ignoreWhereNoDaysLeft: false,\n\n    results: null,\n\n    error: false,\n    saving: false,\n\n    init() {\n        this._super();\n        this.queryParams = [\n            'page',\n            'employer',\n            'user',\n            'selectedYear',\n            'group',\n            'worktimegroup',\n            'superior',\n        ];\n        this.columnList = [\n            'lastname',\n            'firstname',\n            'allHolidayPays',\n            'usedHolidayPays',\n            'bookedHolidayPays',\n            'availableHolidayPays',\n        ];\n        this.rowActions = [\n            { action: 'showDetails', icon: 'move move-Search', text: this.intl.t('general.edit') },\n        ];\n\n        if (moment().month() >= 3) {\n            set(this, 'selectedYear', '' + moment().year());\n        } else {\n            set(this, 'selectedYear', '' + (moment().year() - 1));\n        }\n    },\n\n    holidays: alias('model.data'),\n    params: alias('model.params'),\n\n    filters: computed(function () {\n        return A([\n            EmberObject.create({\n                field: 'employer',\n                type: 'database',\n                form: 'user',\n                name: 'employer',\n                value: this.employer,\n            }),\n            EmberObject.create({\n                field: 'user',\n                type: 'database',\n                form: 'worktime',\n                name: 'user',\n                value: this.user,\n            }),\n            EmberObject.create({\n                field: 'group',\n                type: 'database',\n                form: 'user',\n                name: 'group',\n                value: this.group,\n            }),\n            EmberObject.create({\n                field: 'worktimegroup',\n                type: 'database',\n                form: 'user',\n                name: 'worktimegroup',\n                value: this.worktimegroup,\n            }),\n            EmberObject.create({\n                field: 'superior',\n                type: 'database',\n                form: 'user',\n                name: 'superior',\n                value: this.superior,\n            }),\n        ]);\n    }),\n\n    dateStart: computed('selectedYear', function () {\n        if (get(this.store.peekAll('companyInfo'), 'firstObject.country') === 'se')\n            return get(this, 'selectedYear') + '-04-01';\n        return get(this, 'selectedYear') + '-05-02';\n    }),\n\n    years: computed(function () {\n        const ret = [];\n        let nextHolidaySeason = moment().year();\n\n        for (\n            let start = nextHolidaySeason,\n                year = start,\n                end = nextHolidaySeason - 3,\n                asc = start <= end;\n            asc ? year <= end : year >= end;\n            asc ? year++ : year--\n        ) {\n            ret.push({\n                value: '' + year,\n                text: this.intl.t('holiday_season') + ' (' + year + ')',\n            });\n        }\n\n        return ret;\n    }),\n\n    translated_columns: computed(function () {\n        const translatedColumns = [\n            'report.user.lastname',\n            'report.user.firstname',\n            'report.holidays.allHolidayPays',\n            'report.holidays.usedHolidayPays',\n            'report.holidays.bookedHolidayPays',\n            'report.holidays.availableHolidayPays',\n        ];\n        return translatedColumns.map((item) => {\n            return this.intl.t(item);\n        });\n    }),\n\n    pageCount: computed('holidays.count', function () {\n        return Math.ceil(get(this, 'holidays.count') / 25);\n    }),\n\n    actions: {\n        addHolidayPay() {\n            set(this, 'deductsValue', true);\n            set(\n                this,\n                'holidayPayRecord',\n                this.store.createRecord('holidaypay', { date: this.years[0] }),\n            );\n        },\n\n        async editHolidayPay(row) {\n            let rec = this.store.peekRecord('holidaypay', row.id);\n            if (!rec) rec = await this.store.findRecord('holidaypay', row.id);\n            if (typeOf(rec['date']) === 'string') {\n                rec['date'] = { value: rec['date'].substr(0, 4) };\n            }\n            set(this, 'deductsValue', !rec['deducts']);\n            set(this, 'holidayPayRecord', rec);\n        },\n\n        async removeHolidayPay(row) {\n            let rec = this.store.peekRecord('holidaypay', row.id);\n            if (!rec) rec = await this.store.findRecord('holidaypay', row.id);\n            await rec.destroyRecord();\n            this.refreshReport();\n        },\n\n        onFieldChange(field, value) {\n            set(this, 'holidayPayRecord.' + field, value);\n        },\n\n        filterChanged(value, fieldName) {\n            set(this, 'page', 1);\n            return set(this, fieldName, !value ? null : value);\n        },\n\n        setSelectedYear(value) {\n            set(this, 'page', 1);\n            return set(this, 'selectedYear', value);\n        },\n\n        action(action, rowid) {\n            if (action === 'showDetails') {\n                set(this, 'editUser', rowid);\n                set(this, 'showDetails', true);\n            } else if (action === 'checkedRows') {\n                if (get(this, 'Collector').testNeedsOne('holidaypay@edit')) {\n                    set(this, 'checkedRows', rowid);\n                }\n            }\n        },\n\n        async save() {\n            set(this, 'saving', true);\n            try {\n                const year = this.holidayPayRecord['date']['value'];\n                this.holidayPayRecord['date'] = this.holidayPayRecord['date']\n                    ? year + '-01-01'\n                    : moment().format('YYYY-MM-DD');\n                this.holidayPayRecord['deducts'] = !this.deductsValue;\n                if (!isEmpty(this.checkedRows)) {\n                    this.checkedRows.forEach(async (row) => {\n                        let record = await this.Collector.copyRecord(this.holidayPayRecord);\n                        record['user'] = await this.store.peekRecord('user', row.id);\n                        await record.save();\n                    });\n                    set(this, 'checkedRows', null);\n                } else {\n                    await this.holidayPayRecord.validate();\n                    if (!this.holidayPayRecord.isValid) {\n                        this.holidayPayRecord['date'] = { value: year };\n                        return set(this, 'saving', false);\n                    }\n                    await this.holidayPayRecord.save();\n                }\n                set(this, 'saving', false);\n                this.refreshReport();\n            } catch (e) {\n                set(this, 'saving', false);\n                this.dialogs.alert(e.message);\n            }\n        },\n\n        async export_csv() {\n            set(this, 'showLoader', true);\n\n            const data = await this.getExportData();\n            const translated_columns = this.translated_columns;\n\n            const columns = this.columnList.map((ext, index) => {\n                return { name: translated_columns[index], ext: ext, obj: {} };\n            });\n\n            await this.fileExports.createCsv(this.form, data, columns);\n            set(this, 'showLoader', false);\n        },\n    },\n\n    async getExportData() {\n        const url = 'api/getUsersWithHolidays';\n        const params = this.model.params;\n        params.limit = 'all';\n        delete params.offset;\n        const response = await this.Collector.ttapi({\n            url: url,\n            data: params,\n        });\n\n        return response.users;\n    },\n\n    refreshReport() {\n        let controller = getOwner(this).lookup('controller:application');\n        let route = getOwner(this).lookup('route:' + get(controller, 'currentRouteName'));\n        route.refresh();\n        set(this, 'holidayPayRecord', null);\n        set(this, 'historyType', 'list');\n    },\n});\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * DS207: Consider shorter variations of null checks\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nimport { inject as service } from '@ember/service';\nimport Route from '@ember/routing/route';\nimport { get } from '@ember/object';\n\nexport default Route.extend({\n    store: service(),\n    flags: service(),\n\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        selectedYear: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n        worktimegroup: {\n            refreshModel: true,\n        },\n        superior: {\n            refreshModel: true,\n        },\n        ignoreWhereNoDaysLeft: {\n            refreshModel: true,\n        },\n    },\n\n    async model(params) {\n        const rowsPerPage = 25;\n        const offset = params.page != null ? (params.page - 1) * rowsPerPage : 0;\n        delete params.page;\n        params.limit = 25;\n        params.offset = offset;\n        params.order = 'lastname';\n\n        params.country = get(this.store.peekAll('companyInfo'), 'firstObject.country');\n\n        if (params.country === 'se') {\n            params.start = params.selectedYear + '-04-01';\n        } else {\n            params.start = params.selectedYear + '-05-02';\n        }\n\n        delete params.selectedYear;\n\n        if (!params.employer) {\n            delete params.employer;\n        }\n\n        if (params.user) {\n            params.id = params.user;\n        }\n        delete params.user;\n        const url = 'api/getUsersWithHolidays';\n        return {\n            params: params,\n            data: await this.Collector.ttapi({\n                url: url,\n                data: params,\n            }),\n        };\n    },\n\n    actions: {\n        refreshModel() {\n            return this.refresh();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"TMsQ63Jh\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"opt\\\",\\\"dd\\\",\\\"ddm\\\",\\\"year\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[23,0,[\\\"filters\\\"]],\\\"user\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control mb-5\\\"],[11,\\\"onChange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setSelectedYear\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"years\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,9,[\\\"value\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,9,[\\\"value\\\"]],[24,[\\\"selectedYear\\\"]]],null]],[8],[1,[23,9,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[9]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"holidays-report-buttons\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"holidaypay@edit\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary mt-5\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addHolidayPay\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"report.holiday_pay.add\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more report-actions\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,7,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,7,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"isMobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,8,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_csv\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_csv\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n        \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@class\\\",\\\"@value\\\",\\\"@onToggle\\\",\\\"@size\\\",\\\"@theme\\\",\\\"@onLabel\\\",\\\"@offLabel\\\",\\\"@showLabels\\\"],[\\\"ignoreWhereNoDaysLeftButton\\\",[23,0,[\\\"ignoreWhereNoDaysLeft\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"ignoreWhereNoDaysLeft\\\"]]],null],[28,\\\"not\\\",[[23,0,[\\\"ignoreWhereNoDaysLeft\\\"]]],null]],null],\\\"large\\\",\\\"light\\\",[28,\\\"t\\\",[\\\"report.holidays.hide_empty_ones\\\"],null],\\\"\\\",true]]],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content mt-5\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"checkable\\\",\\\"bubbleActions\\\",\\\"hideSort\\\"],[[23,0,[\\\"columnList\\\"]],[23,0,[\\\"translated_columns\\\"]],[28,\\\"await\\\",[[23,0,[\\\"holidays\\\",\\\"users\\\"]]],null],[23,0,[\\\"rowActions\\\"]],true,\\\"action\\\",true]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[25,[23,0,[\\\"page\\\"]],[23,0,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showDetails\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"report.holidaypays.details\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"showDetails\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"abcenses/holiday-details-comp\\\",null,[[\\\"user\\\",\\\"historyType\\\",\\\"isHolidayReport\\\",\\\"editRecord\\\",\\\"removeRecord\\\"],[[24,[\\\"editUser\\\"]],[23,0,[\\\"historyType\\\"]],false,[28,\\\"action\\\",[[23,0,[]],\\\"editHolidayPay\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeHolidayPay\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"holidayPayRecord\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"holidayPayRecord\\\"]]],null],null],null],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.holiday_pay.add\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\",\\\"@onFieldChange\\\"],[\\\"holidaypay\\\",[23,0,[\\\"holidayPayRecord\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"holidayPayRecord\\\"]]],null],null],null],[28,\\\"action\\\",[[23,0,[]],\\\"onFieldChange\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[23,0,[\\\"checkedRows\\\"]],[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"user\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"holidaypay.user\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"bankdeducter.add.users_selected\\\"],null],false],[0,\\\":\\\"],[7,\\\"b\\\",true],[8],[0,\\\" \\\"],[1,[23,0,[\\\"checkedRows\\\",\\\"length\\\"]],false],[9],[9],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"date\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"holidaypay.date\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[5,\\\"power-select\\\",[],[[\\\"@dropdownClass\\\",\\\"@options\\\",\\\"@selected\\\",\\\"@onChange\\\",\\\"@searchEnabled\\\"],[\\\"power-select-add-field\\\",[23,0,[\\\"years\\\"]],[28,\\\"get\\\",[[23,0,[\\\"holidayPayRecord\\\"]],[23,5,[\\\"name\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null],false]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[1,[23,6,[\\\"value\\\"]],false],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"deducts\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@class\\\"],[[28,\\\"t\\\",[\\\"report.holidaypay.deducts\\\"],null],\\\"ember-movenium-field-deducts\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[5,\\\"addon/fields/checkbox\\\",[],[[\\\"@form\\\",\\\"@name\\\",\\\"@value\\\",\\\"@onChange\\\"],[\\\"holidaypay\\\",\\\"deducts\\\",[23,0,[\\\"deductsValue\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"deductsValue\\\"]]],null]],null]]]],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,4,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"holidayPayRecord\\\"]],[23,5,[\\\"name\\\"]]],null],[23,0,[\\\"holidayPayRecord\\\"]],[28,\\\"action\\\",[[23,0,[]],[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null],[23,5,[\\\"mandatory\\\"]],[23,5,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[5]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[3,4]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Buttons\\\"]],[],[[\\\"@saving\\\",\\\"@save\\\",\\\"@cancel\\\"],[[23,0,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"holidayPayRecord\\\"]]],null],null],null]]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/holidaypays/template.hbs\"}});","/*eslint-disable ember/named-functions-in-promises */\nimport { A } from '@ember/array';\n\nimport { Promise } from 'rsvp';\nimport EmberObject, { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    store: service(),\n    Collector: service('collector-service'),\n    ttapi: service(),\n    intl: service(),\n    notifications: service(),\n    session: service(),\n    fileExports: service('file-exports'),\n\n    selectedYears: null,\n    importYear: null,\n\n    user: null,\n    employer: null,\n    page: 1,\n\n    results: null,\n\n    error: false,\n\n    selectedDelimiter: ';',\n\n    delimiterOptions: null,\n    init() {\n        this._super();\n        this.queryParams = [\n            'page',\n            'employer',\n            'user',\n            'selectedYears',\n            'group',\n            'worktimegroup',\n            'superior',\n            'used_saturdays',\n        ];\n        this.columnList = [\n            'lastname',\n            'firstname',\n            'holidayYear',\n            'allDays',\n            'usedDays',\n            'bookedDays',\n            'daysLeft',\n            'used_saturdays',\n        ];\n        this.selectedYears = moment().month() >= 3 ? [moment().year()] : [moment().year() - 1];\n        return (this.delimiterOptions = [\n            { id: ';', name: ';' },\n            { id: ',', name: ',' },\n        ]);\n    },\n\n    holidaysAlias: alias('model.data'),\n\n    autoAssumedHolidays: computed(function () {\n        if (get(this.store.peekAll('companyInfo'), 'firstObject.country') === 'se') return 25;\n        else return 30;\n    }),\n\n    showRecalculateButton: computed(function () {\n        if (\n            this.session.session.content.authenticated.scope ||\n            this.Collector.testNeeds(['development'])\n        ) {\n            return true;\n        } else return false;\n    }),\n\n    rowActions: computed('intl', function () {\n        let arr = [];\n\n        if (get(this, 'Collector').testNeeds(['userlevel=5'])) {\n            arr.pushObject({\n                action: 'editRow',\n                icon: 'move move-Pencil',\n                text: get(this, 'intl').t('general.edit'),\n            });\n        }\n\n        arr.pushObject({\n            action: 'showDetails',\n            icon: 'move move-Search',\n            text: get(this, 'intl').t('general.edit'),\n        });\n\n        return arr;\n    }),\n\n    filters: computed(function () {\n        return A([\n            EmberObject.create({\n                field: 'employer',\n                type: 'database',\n                form: 'user',\n                name: 'employer',\n                value: this.employer,\n            }),\n            EmberObject.create({\n                field: 'user',\n                type: 'database',\n                form: 'worktime',\n                name: 'user',\n                value: this.user,\n            }),\n            EmberObject.create({\n                field: 'group',\n                type: 'database',\n                form: 'user',\n                name: 'group',\n                value: this.group,\n            }),\n            EmberObject.create({\n                field: 'worktimegroup',\n                type: 'database',\n                form: 'user',\n                name: 'worktimegroup',\n                value: this.worktimegroup,\n            }),\n            EmberObject.create({\n                field: 'superior',\n                type: 'database',\n                form: 'user',\n                name: 'superior',\n                value: this.superior,\n            }),\n        ]);\n    }),\n\n    importField: computed('holidaysAlias.filename', function () {\n        const field = get(this, 'Collector').field('import', 'filename');\n        field.value = get(this, 'holidaysAlias.filename');\n        return field;\n    }),\n\n    data: computed('holidaysAlias.users', 'hideEmptyOnes', function () {\n        const users = get(this, 'holidaysAlias.users');\n        return new Promise((resolve) => {\n            return get(this, 'store')\n                .findAll('holiday')\n                .then((holidays) => {\n                    const usersWithHolidays = new Set();\n                    holidays.forEach((holiday) => {\n                        return usersWithHolidays.add(get(holiday, 'id').toString());\n                    });\n                    return resolve(usersWithHolidays);\n                });\n        }).then(() => {\n            return this.hideEmptyOnes\n                ? users.sortBy('lastname').filter((user) => user.daysLeft > 0)\n                : users.sortBy('lastname');\n            \n        });\n    }),\n\n    years: computed(function () {\n        const ret = [];\n        const holidaySeasonChangeDate = moment().startOf('year').add({ days: 1, months: 4 });\n        if (moment().isSameOrAfter(holidaySeasonChangeDate, 'day')) {\n            set(this, 'nextHolidaySeason', moment().year()); //eslint-disable-line\n        } else {\n            set(this, 'nextHolidaySeason', moment().year() - 1); //eslint-disable-line\n        }\n\n        for (\n            let start = get(this, 'nextHolidaySeason'),\n                year = start + 1,\n                end = get(this, 'nextHolidaySeason') - 3,\n                asc = start <= end;\n            asc ? year <= end : year >= end;\n            asc ? year++ : year--\n        ) {\n            ret.push(year);\n        }\n\n        // If user is not main user, we don't want to show the current year\n        // This filters out current year if we are before the holiday season change date\n        if (!get(this, 'Collector').testNeeds(['userlevel=5'])) {\n            const finalRet = [];\n\n            // Make sure we don't show the current year if we are before the holiday season change date\n            if (!moment().isSameOrAfter(holidaySeasonChangeDate, 'day')) {\n                finalRet.push(...(ret.filter((year) => year !== moment().year())));\n            } else {\n                finalRet.push(...ret);\n            }\n\n            return finalRet;\n        }\n\n        return ret;\n    }),\n\n    translated_columns: computed(function () {\n        const translatedColumns = [\n            'report.user.lastname',\n            'report.user.firstname',\n            'report.user.holidayyear',\n            'report.holidays.allDays',\n            'report.hoilidays.usedDays',\n            'report.holidays.bookedDays',\n            'report.holidays.daysLeft',\n            'report.holidays.saturdays',\n        ];\n        return translatedColumns.map((item) => {\n            return get(this, 'intl').t(item);\n        });\n    }),\n\n    pageCount: computed('holidaysAlias.count', 'hideEmptyOnes', function () {\n        let count = this.hideEmptyOnes ? this.data.length : this.holidaysAlias.count;\n        let perPage = this.hideEmptyOnes ? 25 : 25 * this.selectedYears.length;\n        return Math.ceil(count / perPage);\n    }),\n\n    actions: {\n        filterChanged(value, fieldName) {\n            set(this, 'page', 1);\n            return set(this, fieldName, !value ? null : value);\n        },\n\n        async recalculateHolidays(checkedRows) {\n            set(this, 'loading', true);\n\n            let ids = checkedRows.map((row) => row.id);\n            ids = ids.filter((item, index) => ids.indexOf(item) === index);\n\n            if(ids.length === 0) {\n                this.notifications.error(this.intl.t('report.holidays.no_users_selected'), { autoClear: true });\n                set(this, 'loading', false);\n                return;\n            }\n            \n            const url = 'api/holidays/recalculateUserHolidays';\n\n            let responses = [];\n            for(let i = 0; i < ids.length; i++) {\n                let res = await this.Collector.ttapi({\n                url: url,\n                data: {\n                    userid: ids[i],\n                },\n                method: 'POST',\n            });\n            responses.push(res);\n        }\n\n        if (responses.length > 0 && responses.filter(res => res.message).length === responses.length) {\n            this.notifications.success(this.intl.t('report.holidays.recalculation_success'), { autoClear: true });\n        } else {\n            this.notifications.error(this.intl.t('report.holidays.recalculation_failed'), { autoClear: true });\n        }\n        \n        set(this, 'loading', false);\n        },\n\n        setSelectedYears(value) {\n            if (!value.length)\n                return this.notifications.error(\n                    this.intl.t('report.holidays.cannot_remove_all_seasons'),\n                    { autoClear: true },\n                );\n            set(this, 'page', 1);\n            return set(this, 'selectedYears', value.sort().reverse());\n        },\n\n        async export_csv() {\n            set(this, 'showLoader', true);\n\n            const data = await this.getExportData();\n            const translated_columns = this.translated_columns;\n\n            const columns = this.columnList.map((ext, index) => {\n                return { name: translated_columns[index], ext: ext, obj: {} };\n            });\n\n            await this.fileExports.createCsv(this.form, data, columns);\n            set(this, 'showLoader', false);\n        },\n\n        action(action, rowid) {\n            if (action === 'showDetails') {\n                set(this, 'editUser', rowid);\n                set(this, 'showDetails', true);\n            } else if (action === 'editRow') {\n                const promises = A([]);\n                set(this, 'loading', true);\n                if (!Array.isArray(rowid)) {\n                    set(this, 'editUsers', [rowid]);\n                } else {\n                    set(this, 'editUsers', rowid);\n                }\n                set(this, 'editUser', rowid);\n                get(this, 'editUsers').forEach((row) => {\n                    this.editYear = row.holidayYear + '-01-01';\n                    return promises.push(\n                        get(this, 'store')\n                            .query('holiday', { user: row.id, year: this.editYear })\n                            .then((records) => {\n                                const record = get(records, 'firstObject');\n                                set(this, 'holidaydays', record ? get(record, 'days') : 0);\n                                return (row.currentHolidayRecord = record);\n                            }),\n                    );\n                });\n\n                Promise.all(promises).then(() => {\n                    return set(this, 'loading', false);\n                });\n            } else if (action === 'checkedRows') {\n                if (get(this, 'Collector').testNeedsOne('holiday@edit')) {\n                    set(this, 'checkedRows', rowid);\n                }\n            }\n        },\n\n        async save() {\n            const promises = A([]);\n            set(this, 'loading', true);\n            await Promise.all(\n                get(this, 'editUsers').map(async (row) => {\n                    let record;\n                    let user = await get(this, 'store').findRecord('user', row.id);\n                    if (!row.currentHolidayRecord) {\n                        record = get(this, 'store').createRecord('holiday', {\n                            user,\n                            days: get(this, 'holidaydays'),\n                            year: this.editYear,\n                        });\n                    } else {\n                        record = row.currentHolidayRecord;\n                        set(record, 'days', get(this, 'holidaydays'));\n                    }\n\n                    this.notifications.success(this.intl.t('holiday.dayamount_change'), { autoClear: true });\n\n                    return promises.push(record.save());\n                }),\n            );\n\n            return Promise.all(promises).then(() => {\n                set(this, 'checkedRows', null);\n                set(this, 'editUsers', null);\n                set(this, 'loading', false);\n                return this.send('refreshModel');\n            });\n        },\n\n        openImportDialog() {\n            set(this, 'record', get(this, 'store').createRecord('import'));\n            set(this, 'showImportDialog', true);\n            return false;\n        },\n\n        executeImport() {\n            //@set('error', false)\n            //if @get('record.filename').indexOf('.csv') == -1\n            //    @set('error', @get('intl').t(\"validation.wrong_filetype\"))\n            //    return\n            set(this, 'loading', true);\n            // we have to save this record first to get the s3-url\n            return get(this, 'record')\n                .save()\n                .then(() => {\n                    const file = get(this, 'record.filename')[0];\n\n                    const promise = get(this, 'ttapi').request('/import_holidays', {\n                        type: 'POST',\n                        //dataType: 'text'\n                        data: {\n                            import_file: file['s3url'],\n                            has_header: get(this, 'has_header'),\n                            delimiter: get(this, 'selectedDelimiter'),\n                            year: get(this, 'importYear') || get(this, 'years.0'), // default value is first year in dropdown\n                        },\n                    });\n                    return promise.then((results) => {\n                        set(this, 'loading', false);\n                        if (results.error) {\n                            set(this, 'error', results.error);\n                            return;\n                        }\n                        return set(this, 'results', results);\n                    });\n                });\n        },\n\n        setFile(file) {\n            return set(get(this, 'record'), 'filename', file);\n        },\n\n        closeImportDialog() {\n            set(this, 'showImportDialog', false);\n            set(this, 'results', null);\n            set(this, 'loading', false);\n            set(this, 'has_header', false);\n            if (get(this, 'results') || get(this, 'error')) {\n                this.send('refreshModel');\n            }\n            return set(this, 'error', false);\n        },\n    },\n\n    async getExportData() {\n        const url = 'api/getMultipleSeasons';\n        const params = this.model.params;\n        params.limit = 'all';\n        delete params.offset;\n        const response = await this.Collector.ttapi({\n            url: url,\n            data: params,\n        });\n\n        return response.users;\n    },\n});\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * DS207: Consider shorter variations of null checks\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nimport { inject as service } from '@ember/service';\nimport Route from '@ember/routing/route';\nimport { get } from '@ember/object';\n\nexport default Route.extend({\n    store: service(),\n    flags: service(),\n\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        selectedYears: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n        worktimegroup: {\n            refreshModel: true,\n        },\n        superior: {\n            refreshModel: true,\n        },\n    },\n\n    async model(params) {\n        const rowsPerPage = 25;\n        const offset = params.page != null ? (params.page - 1) * rowsPerPage : 0;\n        delete params.page;\n        params.limit = 25;\n        params.offset = offset;\n\n        params.country = get(this.store.peekAll('companyInfo'), 'firstObject.country');\n\n        const days = params.country === 'se' ? '-04-01' : '-05-02';\n\n        if (typeof params.selectedYears == 'string')\n            params.selectedYears = JSON.parse(params.selectedYears);\n        params.years = params.selectedYears.reduce((string, year, index) => {\n            return (string += index == 0 ? year + days : ',' + year + days);\n        }, '');\n\n        delete params.selectedYears;\n\n        if (!params.employer) {\n            delete params.employer;\n        }\n\n        if (params.user) {\n            params.id = params.user;\n        }\n        delete params.user;\n        const url = 'api/getMultipleSeasons';\n        return {\n            params: params,\n            data: await this.Collector.ttapi({\n                url: url,\n                data: params,\n            }),\n        };\n    },\n\n    actions: {\n        refreshModel() {\n            return this.refresh();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"0zWUdKjo\",\"block\":\"{\\\"symbols\\\":[\\\"year\\\",\\\"dd\\\",\\\"ddm\\\",\\\"year\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"user\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@class\\\",\\\"@tagName\\\",\\\"@options\\\",\\\"@onChange\\\",\\\"@selected\\\"],[\\\"yearFilter\\\",\\\"div\\\",[23,0,[\\\"years\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setSelectedYears\\\"],null],[28,\\\"string-to-array\\\",[[23,0,[\\\"selectedYears\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"holiday_season\\\"],null],false],[0,\\\" \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"holidays-report-container\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"holidays-report-buttons\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"checkedRows\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"name\\\",\\\"editDays\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"action\\\",\\\"editRow\\\",[24,[\\\"checkedRows\\\"]]]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.editDays\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"holiday@edit\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openImportDialog\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.show_import_dialog\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@class\\\",\\\"@value\\\",\\\"@onToggle\\\",\\\"@size\\\",\\\"@theme\\\",\\\"@onLabel\\\",\\\"@offLabel\\\",\\\"@showLabels\\\"],[\\\"hideEmptyOnesButton\\\",[23,0,[\\\"hideEmptyOnes\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"hideEmptyOnes\\\"]]],null],[28,\\\"not\\\",[[23,0,[\\\"hideEmptyOnes\\\"]]],null]],null],\\\"large\\\",\\\"light\\\",[28,\\\"t\\\",[\\\"report.holidays.hide_empty_ones\\\"],null],\\\"\\\",true]]],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more report-actions\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"isMobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_csv\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_csv\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRecalculateButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"recalculateHolidays\\\",[24,[\\\"checkedRows\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.recalculate_holidays\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"checkable\\\",\\\"bubbleActions\\\",\\\"hideSort\\\",\\\"order\\\"],[[24,[\\\"columnList\\\"]],[24,[\\\"translated_columns\\\"]],[28,\\\"await\\\",[[24,[\\\"data\\\"]]],null],[24,[\\\"rowActions\\\"]],true,\\\"action\\\",true,\\\"lastname\\\"]]],false],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[25,[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showDetails\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"report.holidays.details\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showDetails\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"abcenses/holiday-details-comp\\\",null,[[\\\"user\\\",\\\"isHolidayReport\\\"],[[24,[\\\"editUser\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"editUsers\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"report.holidays.allDays\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editUsers\\\"]]],null]],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"holiday@edit\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.setAllDays\\\"],null],false],[0,\\\": \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"class\\\"],[[24,[\\\"holidaydays\\\"]],\\\"form-control\\\"]]],false],[0,\\\"\\\\n\\\"],[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"name\\\",\\\"save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"checkedRows\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"strong\\\",true],[8],[1,[24,[\\\"checkedRows\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.users_selected\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showHistoryForRow\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/history-modal\\\",null,[[\\\"form\\\",\\\"rowid\\\",\\\"removeModal\\\"],[\\\"holiday\\\",[24,[\\\"showHistoryForRow\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showHistoryForRow\\\"]]],null]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showImportDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"report.holidays.import\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeImportDialog\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"results\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.inserted\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[24,[\\\"results\\\",\\\"inserted\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.updated\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[24,[\\\"results\\\",\\\"updated\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn btn-m-link btn-block btn-lg save\\\"],[12,\\\"name\\\",\\\"ok\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeImportDialog\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"validation.wrong_fileformat\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.import\\\"],null],false],[0,\\\":\\\\n            \\\"],[1,[28,\\\"collector/fields/fileupload-field-ver3\\\",null,[[\\\"field\\\",\\\"bubbleChange\\\",\\\"model\\\"],[[24,[\\\"importField\\\"]],\\\"setFile\\\",[24,[\\\"record\\\",\\\"filename\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.has_header\\\"],null],false],[0,\\\":\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"ember-checkbox form-control\\\",[24,[\\\"has_header\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.delimiter\\\"],null],false],[0,\\\":\\\\n            \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\"],[[24,[\\\"delimiterOptions\\\"]],[24,[\\\"selectedDelimiter\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.import_year\\\"],null],false],[0,\\\":\\\\n            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"importYear\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"years\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,1,[]]],[8],[1,[23,1,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-help-text\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"report.holidays.import_help_text\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn btn-m-link btn-block btn-lg save\\\"],[12,\\\"name\\\",\\\"save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"executeImport\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\\n        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/holidays/template.hbs\"}});","import EmberObject, { computed, set } from '@ember/object';\nimport { A } from '@ember/array';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport GeneralReportController from '../../../controllers/general-report';\nimport { typeOf } from '@ember/utils';\n\nexport default GeneralReportController.extend({\n    session: service(),\n\n    form: 'abcense',\n\n    status: 'all',\n    dateSelector: true,\n    groupBy: null,\n\n    init() {\n        this._super();\n        this.showColumns = [\n            'user',\n            'abcensetype',\n            'startdate',\n            'starttime',\n            'enddate',\n            'endtime',\n            'dayamount',\n            'absence_hours',\n            'description',\n        ];\n        this.queryParams = ['startdate', 'status', 'user', 'abcensetype', 'group', 'groupBy'];\n        this.user = [];\n    },\n\n    abcenses: alias('model'),\n\n    filters: computed(function () {\n        const c = this.Collector;\n        const filter_fields = A([\n            EmberObject.create({ field: 'startdate' }, { wagePeriods: true }),\n            EmberObject.create({ field: 'abcensetype' }),\n            EmberObject.create({ field: 'groupBy', type: 'groupByFilter' }),\n        ]);\n        // hardcoded for delete for now..\n        // should make nicer\n        if (c.testNeedsOne('user.costcenter')) {\n            filter_fields.pushObject(EmberObject.create({ field: 'user' })); // collector-value-format-helper doesn't work if user-field is in extra-fields with sideloaded-search field\n            filter_fields.pushObject(\n                EmberObject.create({\n                    extra: true,\n                    type: 'search',\n                    field: 'costcenter',\n                    bindto: 'costcenter',\n                    sideload: 'user',\n                    form: 'user',\n                }),\n            );\n        }\n        return filter_fields;\n    }),\n\n    getAdditionalFilters: computed(function () {\n        if (this.session.currentUser.userlevel !== '1') {\n            return 'user.worktimegroup,user.employer';\n        }\n        return null;\n    }),\n\n    settings: EmberObject.create({\n        rowSettings: EmberObject.create({\n            editRoute: 'abcenses.edit',\n            historyRoute: 'abcenses.history',\n        }),\n        massedit: true,\n        sortByColumn: 'startdate-,enddate-',\n    }),\n\n    actions: {\n        filterChangeAction(value, field) {\n            if (typeOf(value) === 'object' || typeOf(value) == 'instance') {\n                set(this, field, value.id);\n            } else {\n                set(this, field, value);\n            }\n        },\n\n        closeEditModal() {\n            this.editRecord.rollbackAttributes();\n            set(this, 'editRecord', null);\n        },\n    },\n\n    startdate:\n        moment().startOf('month').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('month').format('YYYY-MM-DD'),\n});\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nimport { isPresent } from '@ember/utils';\n\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\nimport GeneralReportRoute from '../../../routes/general-report';\n\nconst AbcensesIndexRoute = GeneralReportRoute.extend({\n    capi: service(),\n    flags: service(),\n\n    queryParams: {\n        startdate: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n    },\n\n    form: 'abcense',\n\n    model(params) {\n        params = this._super(params);\n        params.sideload = true;\n        if (params.startdate && !this.Collector.testNeedsOne('tt3')) {\n            params['startdate_enddate'] = params.startdate;\n            delete params.startdate;\n        }\n\n        if (!this.flags.test('ember-movenium-form-report-absence')) {\n            if (isPresent(params.groupBy)) {\n                params.order = params.groupBy;\n                return this.capi.findAll('abcense', params);\n            } else {\n                return this.store.query('abcense', params);\n            }\n        } else {\n            if (params.page) delete params.page;\n            set(this.controllerFor('abcenses.index'), 'qParams', params);\n        }\n    },\n});\n\nexport default AbcensesIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"5AN783p6\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-absence\\\"],null]],null,{\\\"statements\\\":[[0,\\\"     \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@filter\\\",\\\"@additional\\\",\\\"@filterChangeAction\\\"],[\\\"abcense\\\",[23,0,[\\\"qParams\\\"]],\\\"startdate,abcensetype,user,status,groupBy\\\",[28,\\\"hash\\\",null,[[\\\"startdate\\\",\\\"order\\\"],[[23,0,[\\\"startdate\\\"]],\\\"startdate-,enddate-\\\"]]],[22,\\\"getAdditionalFilters\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/abcenses/edit/\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-absence-views\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,4,[\\\"TemplateSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"editRecord\\\"]]],null]],null],\\\"remove,history,overview,edit\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],\\\"abcense\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"localStorageKey\\\",\\\"status\\\",\\\"count\\\"],[\\\"bubbleTransition\\\",\\\"abcense\\\",[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],\\\"abcense\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"editRecord\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.add_abcense\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"collector/form-add/forms/absence\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\"],[\\\"abcense\\\",[23,0,[\\\"editRecord\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/index/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"clRxJmB5\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/loading/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"FIAHu7wW\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/abcenses/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/billing/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Controller;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nController = Ember.Controller.extend({\n    ajax: Ember.inject.service(),\n    session: Ember.inject.service(),\n    excel: Ember.inject.service(),\n    exportFile: Ember.inject.service(),\n    start: moment().startOf('month').format('YYYY-MM-DD'),\n    end: moment().endOf('month').format('YYYY-MM-DD'),\n    columns: [\n        'customer.name',\n        'date',\n        'product.name',\n        'description',\n        'amount',\n        'price',\n        'status',\n        'salesman',\n    ],\n    group: null,\n    actions: {\n        fetchBills: function (type = null) {\n            var group;\n            if (this.get('loading')) {\n                return;\n            }\n            this.set('loading', true);\n            group = this.get('session.currentUser.group')\n                ? this.get('session.currentUser.group.id')\n                : this.get('group');\n            return this.get('ajax')\n                .request(config.APP.ADMINTOOLURL + 'api/visma/billing', {\n                    headers: {\n                        Authorization:\n                            'Bearer ' + this.get('session.session.authenticated.access_token'),\n                    },\n                    data: {\n                        date: this.get('start') + '_' + this.get('end'),\n                        type: type,\n                        group: group,\n                    },\n                })\n                .then((data) => {\n                    if (type === 'csv') {\n                        return this.get('excel').export(data, {\n                            fileName:\n                                'movenium_bills_' +\n                                this.get('start') +\n                                '_' +\n                                this.get('end') +\n                                '.xlsx',\n                        });\n                    } else if (type === 'netvisor') {\n                        const content = data.map((bill) => bill.join(';')).join('\\n');\n                        return this.exportFile.exportFile(content, 'partnerBills', 'csv');\n                    } else {\n                        return this.set('bills', data);\n                    }\n                })\n                .finally(() => {\n                    return this.set('loading', false);\n                });\n        },\n        change: function (value, field) {\n            if (Ember.isPresent(value)) {\n                return this.set(field, value.get('id'));\n            } else {\n                return this.set(field, null);\n            }\n        },\n    },\n});\n\nexport default Controller;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/billing/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Route;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting) {\n            return controller.set('group', null);\n        }\n    },\n});\n\nexport default Route;\n","export default Ember.HTMLBars.template({\"id\":\"SyXNKjWP\",\"block\":\"{\\\"symbols\\\":[\\\"data\\\",\\\"group\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"admintool.billing.from\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"date\\\",[24,[\\\"start\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"admintool.billing.to\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"date\\\",[24,[\\\"end\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!userlevel=8\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-3\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"clasS\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"admintool.billing.group\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"customer.group\\\"],[[\\\"change\\\",\\\"class\\\"],[\\\"change\\\",\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-m-link \\\",[28,\\\"if\\\",[[24,[\\\"loading\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"fetchBills\\\"]],[8],[1,[28,\\\"t\\\",[\\\"admintool.billing.show_report\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-m-link \\\",[28,\\\"if\\\",[[24,[\\\"loading\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"fetchBills\\\",\\\"csv\\\"]],[8],[1,[28,\\\"t\\\",[\\\"admintool.billing.download_report\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-m-link \\\",[28,\\\"if\\\",[[24,[\\\"loading\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"fetchBills\\\",\\\"netvisor\\\"]],[8],[1,[28,\\\"t\\\",[\\\"admintool.billing.netvisor\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[24,[\\\"bills\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"group\\\",\\\"customer\\\",[23,2,[]]]]],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"data\\\",\\\"columns\\\",\\\"translated_columns\\\"],[[23,1,[]],[24,[\\\"columns\\\"]],[24,[\\\"columns\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/billing/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/components/bill-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolBillComponent;\n\nimport Ember from 'ember';\n\nimport SettingsBillingBillCompComponent from '../../../settings/billing/bill-comp/component';\n\nAdmintoolBillComponent = SettingsBillingBillCompComponent.extend({\n    admintool: Ember.inject.service(),\n    getBillRows: Em.on('init', function () {\n        var promise;\n        promise = this.get('admintool').ajax({\n            url: 'billrows',\n            method: 'get',\n            data: {\n                month: this.get('last_month'),\n                customerid: this.get('customerid'),\n            },\n        });\n        return promise.then((bills) => {\n            return this.set('billrows', bills);\n        });\n    }),\n});\n\nexport default AdmintoolBillComponent;\n","export default Ember.HTMLBars.template({\"id\":\"wSEaQQaE\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"&default\\\"],\\\"statements\\\":[[14,2],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"_billrows\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-primary\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing.bill\\\"],null],false],[0,\\\" \\\"],[1,[22,\\\"billdate\\\"],false],[0,\\\" - \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"currency\\\",[[24,[\\\"fullPrice\\\"]],[24,[\\\"showCurrency\\\"]]],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_billrows\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"billing.products.title.\\\",[23,1,[\\\"customerproduct\\\",\\\"name\\\"]]],null]],null],false],[0,\\\" - \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing.unit_price\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"currency\\\",[[23,1,[\\\"price\\\"]],[23,1,[\\\"currency\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"campaign\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    (\\\"],[1,[28,\\\"t\\\",[\\\"billing.campaign\\\"],null],false],[0,\\\": \\\"],[1,[23,1,[\\\"campaign\\\"]],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"billing.amount\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"amount\\\"]],false],[9],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[23,1,[\\\"formatted_snapshot\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"billing.no_bills_for\\\"],[[\\\"month\\\"],[[24,[\\\"billdate\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/components/bill-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/createservice/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Controller;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nimport { inject as service } from '@ember/service';\n\nController = Ember.Controller.extend({\n    flags: service(),\n    session: service(),\n    loading: false,\n    country: '',\n    products: [],\n    products_fi: [\n        {\n            name: 'products.base',\n            product: 'base',\n        },\n        {\n            name: 'products.basic',\n            product: 'basic',\n        },\n        {\n            name: 'products.contractor',\n            product: 'contractor',\n        },\n    ],\n    products_se: [\n        {\n            name: 'products.basic',\n            product: 'basic',\n        },\n        {\n            name: 'products.personalliggare',\n            product: 'personalliggare',\n        },\n        {\n            name: 'products.contractor',\n            product: 'contractor',\n        },\n        {\n            name: 'products.plentry',\n            product: 'entry',\n        },\n        {\n            name: 'products.pro_se',\n            product: 'pro_se',\n        },\n    ],\n    url: Ember.computed(function () {\n        return config.APP.MAIN_TTAPI + '/createService';\n    }),\n    token: Ember.computed.alias('session.session.authenticated.access_token'),\n    init: function () {\n        this._super(...arguments);\n        if (this.get('flags').test('mini-entry-at2')) {\n            this.get('products_fi').pushObject({\n                name: 'products.mini_entry',\n                product: 'mini_entry',\n            });\n            return this.get('products_se').pushObject({\n                name: 'products.mini_entry',\n                product: 'mini_entry',\n            });\n        }\n    },\n    actions: {\n        showLoading: function () {\n            return this.set('loading', true);\n        },\n        setProducts: function (value) {\n            this.set('country', value);\n            if (value === 'fi') {\n                return this.set('products', this.get('products_fi'));\n            } else if (value === 'se') {\n                return this.set('products', this.get('products_se'));\n            } else {\n                return this.set('products', []);\n            }\n        },\n    },\n});\n\nexport default Controller;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/createservice/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Route;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    model: function (params) {},\n});\n\nexport default Route;\n","export default Ember.HTMLBars.template({\"id\":\"SPD3Y0iv\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h1\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.wait_title\\\"],null],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"form\\\",true],[11,\\\"action\\\",[29,[[22,\\\"url\\\"]]]],[10,\\\"method\\\",\\\"post\\\"],[11,\\\"onsubmit\\\",[28,\\\"action\\\",[[23,0,[]],\\\"showLoading\\\"],null]],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"loading\\\"]],\\\"hidden\\\"],null]],[8],[0,\\\"\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.email\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"input\\\",true],[10,\\\"name\\\",\\\"email\\\"],[10,\\\"class\\\",\\\"form-control\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.employer_country\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onChange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setProducts\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"option\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"fi\\\"],[8],[1,[28,\\\"t\\\",[\\\"customer.country.fi\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"se\\\"],[8],[1,[28,\\\"t\\\",[\\\"customer.country.se\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"products\\\"]]],null,{\\\"statements\\\":[[7,\\\"label\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"input\\\",true],[10,\\\"name\\\",\\\"service\\\"],[11,\\\"value\\\",[23,1,[\\\"product\\\"]]],[10,\\\"type\\\",\\\"radio\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[[23,1,[\\\"name\\\"]]],null],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"input\\\",true],[10,\\\"name\\\",\\\"country\\\"],[11,\\\"value\\\",[29,[[22,\\\"country\\\"]]]],[10,\\\"type\\\",\\\"hidden\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"input\\\",true],[10,\\\"name\\\",\\\"token\\\"],[11,\\\"value\\\",[29,[[22,\\\"token\\\"]]]],[10,\\\"type\\\",\\\"hidden\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"input\\\",true],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[11,\\\"value\\\",[29,[[28,\\\"t\\\",[\\\"general.create\\\"],null]]]],[10,\\\"type\\\",\\\"submit\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/createservice/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default Route.extend({\n    model() {\n        return this.modelFor('admintool.customer');\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"Y8u1iMWu\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"blocks-chart\\\",null,[[\\\"url\\\",\\\"title\\\",\\\"params\\\",\\\"type\\\"],[\\\"/partnerusers\\\",\\\"Unique users\\\",[28,\\\"hash\\\",null,[[\\\"partnerid\\\"],[[24,[\\\"model\\\",\\\"partnerid\\\"]]]]],\\\"area\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"blocks-chart\\\",null,[[\\\"url\\\",\\\"title\\\",\\\"params\\\",\\\"type\\\"],[\\\"/partnerforms\\\",\\\"Forms\\\",[28,\\\"hash\\\",null,[[\\\"partnerid\\\"],[[24,[\\\"model\\\",\\\"partnerid\\\"]]]]],\\\"bar\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"blocks-chart\\\",null,[[\\\"url\\\",\\\"title\\\",\\\"params\\\",\\\"type\\\"],[\\\"/partneractions\\\",\\\"Actions\\\",[28,\\\"hash\\\",null,[[\\\"partnerid\\\"],[[24,[\\\"model\\\",\\\"partnerid\\\"]]]]],\\\"bar\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"blocks-chart\\\",null,[[\\\"url\\\",\\\"title\\\",\\\"params\\\",\\\"type\\\"],[\\\"/partnerforminserts\\\",\\\"Rows per form\\\",[28,\\\"hash\\\",null,[[\\\"partnerid\\\"],[[24,[\\\"model\\\",\\\"partnerid\\\"]]]]],\\\"line\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"blocks-chart\\\",null,[[\\\"url\\\",\\\"title\\\",\\\"params\\\",\\\"type\\\"],[\\\"/partnerperminuteall\\\",\\\"Requests per minute\\\",[28,\\\"hash\\\",null,[[\\\"partnerid\\\"],[[24,[\\\"model\\\",\\\"partnerid\\\"]]]]],\\\"area\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"blocks-chart\\\",null,[[\\\"url\\\",\\\"title\\\",\\\"params\\\",\\\"type\\\"],[\\\"/partneractions\\\",\\\"Actions spread\\\",[28,\\\"hash\\\",null,[[\\\"partnerid\\\"],[[24,[\\\"model\\\",\\\"partnerid\\\"]]]]],\\\"pie\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/charts/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerController;\n\nimport Ember from 'ember';\n\nAdmintoolCustomerController = Ember.Controller.extend({\n    subMenus: [\n        {\n            link: 'admintool.customer.overview',\n            text: 'menu.admintool.overview',\n            needs: [],\n        },\n        {\n            link: 'admintool.customer.details',\n            text: 'menu.admintool.details',\n            needs: [],\n        },\n        {\n            link: 'admintool.customer.devices',\n            text: 'menu.admintool.devices',\n            needs: ['!userlevel=7,8'],\n        },\n        {\n            link: 'admintool.customer.reports.bills',\n            text: 'menu.admintool.bills',\n            needs: ['!userlevel=7,8'],\n        },\n        {\n            link: 'admintool.customer.reports.users',\n            text: 'menu.admintool.users',\n            needs: [],\n        },\n        {\n            link: 'admintool.customer.tt3tott4',\n            text: 'menu.admintool.tt3tott4',\n            needs: ['!userlevel=7,8'],\n        },\n        {\n            // this page makes mongo alerts and does not work at all because queries are so slow\n            //{link: 'admintool.customer.charts', text: \"menu.admintool.charts\", needs: []}\n            link: 'admintool.customer.history',\n            text: 'menu.admintool.history',\n            needs: ['!userlevel=7,8'],\n        },\n    ],\n});\n\nexport default AdmintoolCustomerController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/details/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerDetailsController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nAdmintoolCustomerDetailsController = GeneralAddController.extend({\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n});\n\nexport default AdmintoolCustomerDetailsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/details/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerDetailsRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nAdmintoolCustomerDetailsRoute = GeneralAddRoute.extend({\n    controllerName: 'admintool.customer.details',\n    afterSave: Em.computed('controller.model', function () {\n        var model;\n        model = this.get('controller.model');\n        return {\n            route: 'admintool.customer',\n            params: model,\n        };\n    }),\n    edit: true,\n    model: function () {\n        return this.modelFor('admintool.customer');\n    },\n});\n\nexport default AdmintoolCustomerDetailsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"XMN7Uapj\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/details/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/devices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerDevicesController;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nAdmintoolCustomerDevicesController = Ember.Controller.extend({\n    dialogs: Ember.inject.service(),\n    session: Em.inject.service(),\n    intl: Em.inject.service(),\n    formName: 'timecleandevice',\n    queryParams: Em.computed(function () {\n        return [\n            {\n                name: 'customer',\n                value: this.get('model.id'),\n            },\n        ];\n    }),\n    settings: Ember.computed(function () {\n        return {\n            form: null,\n            defaultValues: {},\n        };\n    }),\n    filters: Em.A([\n        Em.Object.create({\n            type: 'searchbox',\n        }),\n    ]),\n    init_stuff: function () {\n        if (!this.get('model.country')) {\n            return;\n        }\n        this.set('show_tc_popup', false);\n        this.set('selected_device', false);\n        this.set('adding_new_device', false);\n        this.store\n            .query('timecleandevice', {\n                customer: this.get('model.id'),\n                limit: 'all',\n                sideload: true,\n            })\n            .then((tcs) => {\n                return this.set('own_devices', tcs.filterBy('customer.id', this.get('model.id')));\n            });\n        //            @set 'customerless_devices', tcs.filterBy 'customer.id', null\n        this.store\n            .query('productcampaign', {\n                sideload: true,\n            })\n            .then((pcs) => {\n                return this.set('productCampaigns', pcs);\n            });\n        return this.store\n            .query('customerproduct', {\n                sideload: true,\n            })\n            .then((customerproduct) => {\n                var rfid_product;\n                this.set('customerproducts', customerproduct);\n                rfid_product = customerproduct.filter((product) => {\n                    if (\n                        product.get('name') === 'rfid' &&\n                        product.get('countries') === this.get('model.country')\n                    ) {\n                        return true;\n                    }\n                });\n                return this.set('currentProduct', rfid_product[0]);\n            });\n    },\n    //productCampaigns: Em.computed ->\n    //    @get('store').query('productcampaign', {sideload:true})\n    priceTypes: Em.computed(function () {\n        return [\n            {\n                id: 'purchase',\n                name: this.get('intl').t('timecleandevice.type.purchase'),\n            },\n            {\n                id: 'rental',\n                name: this.get('intl').t('timecleandevice.type.rental'),\n            },\n        ];\n    }),\n    refreshListAndCloseModal: function () {\n        return this.store\n            .query('timecleandevice', {\n                customer: this.get('model.id'),\n                sideload: true,\n            })\n            .then((tcs) => {\n                this.set('own_devices', tcs.filterBy('customer.id', this.get('model.id')));\n                //            @set 'customerless_devices', tcs.filterBy 'customer.id', null\n                this.set('show_tc_popup', false);\n                this.set('selected_device', false);\n                return this.set('new_form', false);\n            });\n    },\n    //Em.set(@get('settings'), 'form', null)\n    //Em.set(@get('settings'), 'defaultValues', {})\n    customerless_devices: Em.computed('searchvalue_delayed', function () {\n        return this.store.query('timecleandevice', {\n            q: this.get('searchvalue_delayed'),\n            customer: '(empty)',\n            sideload: true,\n        });\n    }),\n    actions: {\n        save_and_add_bill: function (device) {\n            return this.get('dialogs')\n                .confirm(\"Are you sure you wan't to connect this device to customer\")\n                .then((answer) => {\n                    var bill;\n                    if (!answer) {\n                        return;\n                    }\n                    bill = this.get('settings');\n                    device.set('customer', this.get('model'));\n                    this.set('recordSaved', 'refreshListAndCloseModal');\n                    return device.save().then(() => {\n                        bill['defaultValues']['amount'] = 1;\n                        bill['defaultValues']['customer'] = this.get('model');\n                        bill['defaultValues']['customerproduct'] = this.get('currentProduct');\n                        bill['defaultValues']['description'] = 'imei:' + device.get('imei');\n                        //                    bill['defaultValues']['price'] = @get('currentProduct').get 'price'\n                        // if user has bought device, add one time bill\n                        if (device.get('type') === 'purchase') {\n                            bill['form'] = 'bill';\n                            bill['defaultValues']['campaign'] = this.get('productCampaigns').findBy(\n                                'id',\n                                this.get('selectedCampaign'),\n                            );\n                            bill['defaultValues']['country'] = this.get('model.country');\n                            bill['defaultValues']['date'] = moment().format('YYYY-MM-DD');\n                            bill['defaultValues']['salesman'] = this.store\n                                .peekAll('user')\n                                .findBy('id', this.get('session.currentUser.id'));\n                        } else {\n                            bill['form'] = 'rcbill';\n                            bill['defaultValues']['startdate'] =\n                                moment().add(1, 'months').format('YYYY-MM') + '-01';\n                        }\n                        this.set('popup_title', this.get('intl').t('admintool.add_bill'));\n                        this.set('new_form', true);\n                        return this.set('show_tc_popup', false);\n                    });\n                });\n        },\n        refreshListAndCloseModal: function () {\n            return this.refreshListAndCloseModal();\n        },\n        removeModal: function () {\n            this.set('show_tc_popup', false);\n            this.set('selected_device', false);\n            this.set('new_form', false);\n            $('.modal').modal('hide');\n            this.set('show_modal', false);\n            return this.set('record', null);\n        },\n        close: function () {\n            this.set('show_tc_popup', false);\n            this.set('selected_device', false);\n            this.set('new_form', false);\n            return this.set('searchvalue', null);\n        },\n        show_add_popup: function () {\n            this.set('show_tc_popup', true);\n            this.set('popup_title', this.get('intl').t('admintool.link_device'));\n            return false;\n        },\n        select_device: function (dev) {\n            this.set('selected_device', dev);\n            return false;\n        },\n        add_device: function () {\n            var form;\n            this.set('popup_title', this.get('intl').t('admintool.add_device'));\n            form = this.get('settings');\n            form['form'] = 'timecleandevice';\n            form['defaultValues']['customer'] = this.get('model');\n            form['defaultValues']['description'] = null;\n            this.set('new_form', true);\n            this.set('recordSaved', 'addNewBill');\n            return false;\n        },\n        addNewBill: function (settings, record) {\n            var form;\n            this.set('new_form', false);\n            form = this.get('settings');\n            this.set('recordSaved', 'refreshListAndCloseModal');\n            Em.set(form, 'defaultValues.amount', 1);\n            Em.set(form, 'defaultValues.customer', this.get('model'));\n            Em.set(form, 'defaultValues.customerproduct', this.get('currentProduct'));\n            Em.set(form, 'defaultValues.description', 'imei:' + record.get('imei'));\n            Em.set(form, 'defaultValues.price', this.get('currentProduct').get('price'));\n            // if user has bought device, add one time bill\n            if (record.get('type') === 'purchase') {\n                Em.set(form, 'form', 'bill');\n                Em.set(\n                    form,\n                    'defaultValues.campaign',\n                    this.get('productCampaigns').findBy('id', this.get('selectedCampaign')),\n                );\n                Em.set(form, 'defaultValues.country', this.get('model.country'));\n                Em.set(form, 'defaultValues.date', moment().format('YYYY-MM-DD'));\n                Em.set(\n                    form,\n                    'defaultValues.salesman',\n                    this.store.peekAll('user').findBy('id', this.get('session.currentUser.id')),\n                );\n            } else {\n                Em.set(form, 'form', 'rcbill');\n                Em.set(\n                    form,\n                    'defaultValues.startdate',\n                    moment().add(1, 'months').format('YYYY-MM') + '-01',\n                );\n            }\n            this.set('new_form', true);\n            //@refreshListAndCloseModal()\n            return false;\n        },\n        changeCampaign: function (campaign) {\n            return this.set('selectedCampaign', campaign);\n        },\n        save: function () {\n            var camp, dev;\n            // first add device to customer\n            dev = this.get('selected_device');\n            dev.set('customer', this.get('model'));\n            camp = this.get('productCampaigns').findBy('id', this.get('selectedCampaign'));\n            return dev.save().then(() => {\n                var rec;\n                // next add campaign to this device\n                if (camp) {\n                    rec = this.store.createRecord('customercampaign', {\n                        campaign: camp,\n                        customer: this.get('model'),\n                    });\n                    rec.save();\n                    return this.refreshListAndCloseModal();\n                } else {\n                    return this.refreshListAndCloseModal();\n                }\n            });\n        },\n        edit_device: function (device) {\n            this.set('record', device);\n            this.set('show_modal', true);\n            return false;\n        },\n        checkBilling: function () {\n            var billtype;\n            if (this.get('record.customer') === null) {\n                if (this.get('record.type') === 'rental') {\n                    billtype = 'rcbill';\n                } else {\n                    billtype = 'bill';\n                }\n                //console.log @get('currentProduct')\n                this.get('store')\n                    .query(billtype, {\n                        customerproduct: this.get('currentProduct.id'),\n                        customer: this.get('model.id'),\n                    })\n                    .then((bills) => {\n                        return bills.filter((bill) => {\n                            if (bill.get('description').indexOf(this.get('record.imei') > -1)) {\n                                return bill.destroyRecord();\n                            }\n                        });\n                    });\n            }\n            this.refreshListAndCloseModal();\n            return this.set('show_modal', false);\n        },\n        filterChanged: function (value) {\n            return this.store\n                .query('timecleandevice', {\n                    sideload: true,\n                    q: value,\n                    customer: this.get('model.id'),\n                })\n                .then((tcs) => {});\n        },\n        searchChanged: function () {\n            return this.set('searchvalue_delayed', this.get('searchvalue'));\n        },\n    },\n});\n\nexport default AdmintoolCustomerDevicesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/devices/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerDetailsEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../../controllers/general-add';\n\nAdmintoolCustomerDetailsEditController = Ember.Controller.extend();\n\nexport default AdmintoolCustomerDetailsEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/devices/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerDetailsEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../../routes/general-add';\n\nAdmintoolCustomerDetailsEditRoute = Ember.Route.extend();\n\nexport default AdmintoolCustomerDetailsEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"hrpJLDVF\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"blaba\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/devices/edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/devices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerOverviewDevicesRoute;\n\nimport Ember from 'ember';\n\nAdmintoolCustomerOverviewDevicesRoute = Ember.Route.extend({\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.init_stuff();\n    },\n});\n\nexport default AdmintoolCustomerOverviewDevicesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Ym+NkHKV\",\"block\":\"{\\\"symbols\\\":[\\\"device\\\",\\\"device\\\"],\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"blockquote\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"admintool.add_device_help\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.own_devices\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"timecleandevice\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive table-hover general-report\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Imei\\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Number\\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Type\\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Desc\\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"own_devices\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"tr\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_device\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"imei\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"devicenumber\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"type\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_add_popup\\\"]],[8],[1,[28,\\\"t\\\",[\\\"admintool.add_device\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_tc_popup\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"title\\\",\\\"close\\\"],[[24,[\\\"popup_title\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"selected_device\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.customerless_devices\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                    \\\"],[1,[28,\\\"search-box\\\",null,[[\\\"value\\\",\\\"change\\\",\\\"classes\\\"],[[24,[\\\"searchvalue\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"searchChanged\\\"],null],\\\"form-control add-field\\\"]]],false],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive table-hover general-report\\\"],[8],[0,\\\"\\\\n\\\\n                        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Imei\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Number\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Type\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Desc\\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customerless_devices\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"tr\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"save_and_add_bill\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"imei\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"devicenumber\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"type\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add_device\\\"]],[8],[1,[28,\\\"t\\\",[\\\"admintool.add_device\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selected_device\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"admintool.chosen_device\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"selected_device\\\",\\\"imei\\\"]],false],[0,\\\" - \\\"],[1,[24,[\\\"selected_device\\\",\\\"devicenumber\\\"]],false],[0,\\\" - \\\"],[1,[24,[\\\"selected_device\\\",\\\"description\\\"]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.name\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"prompt\\\"],[[24,[\\\"priceTypes\\\"]],\\\"form-control add-fields\\\",[24,[\\\"selected_device\\\",\\\"type\\\"]],[28,\\\"t\\\",[\\\"admintool.default_campaign\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.name\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"prompt\\\",\\\"change\\\"],[[24,[\\\"productCampaigns\\\"]],\\\"form-control add-fields\\\",[24,[\\\"selectedCampaign\\\"]],[28,\\\"t\\\",[\\\"admintool.default_campaign\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"changeCampaign\\\",[24,[\\\"selectedCampaign\\\"]]],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"adding_new_device\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-footer\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selected_device\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"new_form\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"title\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"admintool.edit_device\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"settings\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"settings\\\",\\\"form\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"recordSaved\\\"]],\\\"close\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"show_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"title\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"admintool.edit_device\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"timecleandevice\\\",[24,[\\\"record\\\",\\\"id\\\"]],\\\"checkBilling\\\",\\\"removeModal\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/devices/template.hbs\"}});","import Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    collector: service('collector-service'),\n    init() {\n        this._super(...arguments);\n        this.rcbillColumns = [\n            'customerproduct',\n            'startdate',\n            'enddate',\n            'price',\n            'amount',\n            'description',\n        ];\n        this.fixedlimitColumns = ['customerproduct', 'limit', 'price'];\n        this.customercampaignColumns = ['campaign'];\n    },\n\n    history: alias('model'),\n});\n","import Route from '@ember/routing/route';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { hash } from 'rsvp';\n\nexport default Route.extend({\n    store: service(),\n\n    model() {\n        const store = get(this, 'store');\n        const customer = this.modelFor('admintool.customer');\n        return hash({\n            customer: customer,\n            customercampaign: store.query('customercampaign', {\n                customer: get(customer, 'id'),\n                row_info_status: 'all',\n                sideload: true,\n            }),\n            fixedprice: store.query('fixedprice', {\n                customer: get(customer, 'id'),\n                row_info_status: 'all',\n                sideload: true,\n            }),\n            fixedlimit: store.query('fixedlimit', {\n                customer: get(customer, 'id'),\n                row_info_status: 'all',\n                sideload: true,\n            }),\n            rcbill: store.query('rcbill', {\n                customer: get(customer, 'id'),\n                row_info_status: 'all',\n                sideload: true,\n            }),\n        });\n    },\n\n    setupController(controller, model) {\n        set(controller, 'history', model);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"ZzE0WZ+1\",\"block\":\"{\\\"symbols\\\":[\\\"limit\\\",\\\"column\\\",\\\"index\\\",\\\"price\\\",\\\"campaign\\\",\\\"index\\\",\\\"column\\\",\\\"bill\\\",\\\"column\\\",\\\"index\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-lg-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Customer\\\"],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/history-comp\\\",null,[[\\\"form\\\",\\\"row\\\"],[\\\"customer\\\",[24,[\\\"model\\\",\\\"customer\\\",\\\"id\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-lg-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Recurring bills\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"rcbill\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h5\\\",true],[8],[4,\\\"each\\\",[[24,[\\\"rcbillColumns\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[23,8,[]],[23,9,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,10,[]],0],null]],null,{\\\"statements\\\":[[0,\\\" ,\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector-field-name\\\",null,[[\\\"form\\\",\\\"field\\\"],[\\\"rcbill\\\",[23,9,[]]]]],false],[0,\\\": \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,9,[]],\\\"rcbill\\\",[28,\\\"get\\\",[[23,8,[]],[23,9,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[9,10]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/history-comp\\\",null,[[\\\"form\\\",\\\"row\\\"],[\\\"fixedprice\\\",[23,8,[\\\"id\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-lg-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Customer campaign\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"customercampaign\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h5\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customercampaignColumns\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"get\\\",[[23,5,[]],[23,7,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,6,[]],0],null]],null,{\\\"statements\\\":[[0,\\\" ,\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector-field-name\\\",null,[[\\\"form\\\",\\\"field\\\"],[\\\"customercampaign\\\",[23,7,[]]]]],false],[0,\\\": \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,7,[]],\\\"customercampaign\\\",[28,\\\"get\\\",[[23,5,[]],[23,7,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[7]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[1,[28,\\\"collector/history-comp\\\",null,[[\\\"form\\\",\\\"row\\\"],[\\\"customercampaign\\\",[23,5,[\\\"id\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5,6]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-lg-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Fixed price\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"fixedprice\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/history-comp\\\",null,[[\\\"form\\\",\\\"row\\\"],[\\\"fixedprice\\\",[23,4,[\\\"id\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-lg-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Fixed price limit\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"fixedlimit\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h5\\\",true],[8],[4,\\\"each\\\",[[24,[\\\"fixedlimitColumns\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,3,[]],0],null]],null,{\\\"statements\\\":[[0,\\\" ,\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector-field-name\\\",null,[[\\\"form\\\",\\\"field\\\"],[\\\"fixedlimit\\\",[23,2,[]]]]],false],[0,\\\": \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,2,[]],\\\"fixedlimit\\\",[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2,3]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/history-comp\\\",null,[[\\\"form\\\",\\\"row\\\"],[\\\"fixedlimit\\\",[23,1,[\\\"id\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/history/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/overview/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolOverviewController;\n\nimport Ember from 'ember';\n\nimport config from '../../../../config/environment';\n\nimport { isPresent } from '@ember/utils';\n\nAdmintoolOverviewController = Ember.Controller.extend({\n    session: Em.inject.service(),\n    admintool: Ember.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    tools: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    ajax: Ember.inject.service(),\n    store: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    dirtyRecords: false,\n    dirtyCustomer: false,\n    customerSaving: false,\n    price_disabled: true,\n    calculated_from_promo: false,\n    loginUserInfoId: null,\n    loadingFixedPrices: false,\n    errors: [],\n    init_stuff: function () {\n        var currency;\n        if (!this.get('model.country')) {\n            return;\n        }\n        this.set('calculated_from_promo', false);\n        this.set('fixed_price_model', null);\n        this.set('fixed_price', null);\n        // get fixed_price if any\n        this.set('loadingFixedPrices', true);\n        this.store\n            .query('fixedprice', {\n                customer: this.get('model.id'),\n            })\n            .then((fp) => {\n                this.set('loadingFixedPrices', false);\n                if (fp.get('firstObject')) {\n                    //console.log fp.get 'firstObject'\n                    this.set('fixed_price_model', fp.get('firstObject'));\n                    this.set('has_fixed_price', true);\n                    this.set('fixed_price', fp.get('firstObject.price'));\n                    return this.set('price_disabled', false);\n                } else {\n                    this.set('fixed_price', null);\n                    this.set('price_disabled', true);\n                    return this.set('has_fixed_price', false);\n                }\n            });\n        this.getAdminUsers().then((admins) => {\n            var intl;\n            this.set('loginUser', {\n                username: admins['users'][0]['username'],\n                userid: admins['users'][0]['id'],\n                partnerid: this.get('model.partnerid'),\n            });\n            intl = this.get('intl');\n            if (!this.get('model.login_user_info_name')) {\n                this.set('dirtyRecords', true);\n                this.set(\n                    'model.login_user_info_name',\n                    admins['users'][0]['firstname'] + ' ' + admins['users'][0]['lastname'],\n                );\n                this.set('model.login_user_info_phone', admins['users'][0]['phone']);\n                return this.set('model.login_user_info_email', admins['users'][0]['email']);\n            }\n        });\n        this.getBillingStarted().then((billingStarted) => {\n            return this.set('billingStarted', moment(billingStarted).format('YYYY-MM-' + '01'));\n        });\n        currency = function () {\n            switch (this.get('model.country')) {\n                case 'se':\n                    return 'sek';\n                case 'fi':\n                    return 'eur';\n            }\n        }.call(this);\n        this.set('showCurrency', currency);\n        // get salesmen\n        this.get('store')\n            .findAll('user', {\n                reload: true,\n            })\n            .then((users) => {\n                var salesmen;\n                this.set('salesmen', users);\n                salesmen = [];\n                users.forEach((user) => {\n                    return salesmen.push({\n                        id: user.get('id'),\n                        name: user.get('firstname') + ' ' + user.get('lastname'),\n                    });\n                });\n                return this.set('salesmen', salesmen);\n            });\n        this.getCustomerProducts().then((customerProductsAll) => {\n            var customerProducts, hiddenByName;\n            customerProducts = customerProductsAll['public'].concat(customerProductsAll['hidden']);\n            hiddenByName = customerProductsAll['hidden'].mapBy('name');\n            if (\n                hiddenByName.includes('generic_timetracker') ||\n                this.get('model.campaign') === 'visma' ||\n                this.get('model.campaign') === 'entry_mini'\n            ) {\n                this.set('clientVersion', 'visma');\n            } else {\n                this.set('clientVersion', 'movenium');\n            }\n            //@set 'customerProducts', customerProducts\n            //console.log customerProducts\n            // get all campaigns\n            return this.getCampaigns().then((campaigns) => {\n                // set campaigns to dropdown\n                this.set('campaigns', campaigns['camps']);\n                return this.getProductCampaigns().then((pCampaigns) => {\n                    var currentCamp;\n                    this.set('productcampaigns', pCampaigns);\n                    //console.log pCampaigns\n\n                    // find customers current campaigns\n                    currentCamp = campaigns['campaigns'].filterBy(\n                        'name',\n                        this.get('model.campaign'),\n                    );\n                    this.set('currentCamp', currentCamp);\n                    //console.log currentCamps\n                    return this.getCustomersProductCampaigns().then((cpCampaigns) => {\n                        var prodCamps;\n                        this.set('customersProductCampaigns', cpCampaigns);\n                        prodCamps = [];\n                        // add all product-campaigns into array\n                        cpCampaigns.forEach((cp) => {\n                            return prodCamps.push(pCampaigns.findBy('id', cp.get('campaign.id')));\n                        });\n                        //console.log prodCamps\n                        customerProducts.forEach((cProd) => {\n                            var def_camp, found;\n                            //cProd['default_price'] = cProd['price']\n\n                            // get default-price from default-campaign\n                            def_camp = campaigns['campaigns'].filter((cmp) => {\n                                if (\n                                    cmp.get('name') === 'default' &&\n                                    parseInt(cmp.get('product.id')) === parseInt(cProd['id'])\n                                ) {\n                                    return true;\n                                }\n                            });\n                            cProd['default_price'] = def_camp.get('firstObject.price');\n                            cProd['productcampaigns'] = pCampaigns.filterBy(\n                                'product.id',\n                                cProd['id'].toString(),\n                            );\n                            found = false;\n                            // search for product-campaign for this customer\n                            found = prodCamps.findBy('product.id', cProd['id'].toString());\n                            if (!found) {\n                                //search from current campaign\n                                found = currentCamp.findBy('product.id', cProd['id'].toString());\n                            }\n                            if (!found) {\n                                // get price from default-campaign\n                                found = def_camp.get('firstObject');\n                            }\n                            if (found) {\n                                cProd['price'] = found.get('price');\n                                cProd['campaign'] = found.get('id');\n                                cProd['org_campaign'] = found.get('id');\n                                return (cProd['custom_campaign'] = cpCampaigns.findBy(\n                                    'campaign.id',\n                                    found.get('id'),\n                                ));\n                            }\n                        });\n                        //console.log customerProducts\n                        return this.set('customerProducts', customerProducts);\n                    });\n                });\n            });\n        });\n        return this.get('store').query('fixedlimit', {\n            customer: this.get('model.id'),\n            sideload: true,\n        });\n    },\n    campaignTypes: Em.computed(function () {\n        return [\n            {\n                id: 'default',\n                name: this.get('intl').t('admintool.campaigns.default'),\n            },\n            {\n                id: 'customer',\n                name: this.get('intl').t('admintool.campaigns.customer'),\n            },\n        ];\n    }),\n    /*\n  price_disabled: Em.computed 'has_fixed_price', ->\n      if @get 'has_fixed_price'\n          return false\n      else\n          return true\n  */\n    allFixedLimits: Ember.computed('model.id', function () {\n        return this.get('store').peekAll('fixedlimit');\n    }),\n    fixedLimits: Ember.computed('allFixedLimits.[]', function () {\n        return this.get('allFixedLimits').filterBy('customer.id', this.get('model.id'));\n    }),\n    getBillingStarted: function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            if (this.get('model.billing_start')) {\n                return resolve(this.get('model.billing_start'));\n            } else {\n                this.set('calculated_from_promo', true);\n                return $.ajax({\n                    url:\n                        config.APP.ADMINTOOLURL +\n                        'getBillingStart?promocode=' +\n                        this.get('model.promocode') +\n                        '&created=' +\n                        this.get('model.createddate'),\n                    type: 'GET',\n                    headers: {\n                        Authorization:\n                            'Bearer ' + this.get('session.session.authenticated.access_token'),\n                    },\n                    success: (data) => {\n                        return resolve(data);\n                    },\n                });\n            }\n        });\n    },\n    getCustomerProducts: function () {\n        return $.ajax({\n            url:\n                config.APP.ADMINTOOLURL +\n                'getCustomerProducts?partnerid=' +\n                this.get('model.partnerid') +\n                '&country=' +\n                this.get('model.country'),\n            type: 'GET',\n            headers: {\n                Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n            },\n            success: (data) => {\n                return data;\n            },\n        });\n    },\n    getAllProducts: function () {\n        var params;\n        params = {\n            data: {\n                country: this.get('model.country'),\n                lang: moment.locale(),\n            },\n        };\n        return this.get('admintool').get('products', params);\n    },\n    getCampaigns: function () {\n        // we need to fetch ALL campaigns without limits\n        // should be safe because this route is not called that often\n        return this.get('store')\n            .query('campaign', {\n                sideload: true,\n                limit: 'all',\n            })\n            .then((campaigns) => {\n                var camp, camps, i, len, ref;\n                camps = [];\n                ref = campaigns.mapBy('name').uniq();\n                for (i = 0, len = ref.length; i < len; i++) {\n                    camp = ref[i];\n                    if (camp === 'default') {\n                        continue;\n                    }\n                    camps.push({\n                        id: camp,\n                        name: camp,\n                    });\n                }\n                return { camps, campaigns };\n            });\n    },\n    getProductCampaigns: function () {\n        return this.get('store').query('productcampaign', {\n            sideload: true,\n        });\n    },\n    getCustomersProductCampaigns: function () {\n        return this.get('store').query('customercampaign', {\n            sideload: true,\n            customer: this.get('model.id'),\n        });\n    },\n    statuslist: Em.computed(function () {\n        return [\n            {\n                id: 'normal',\n                name: this.get('intl').t('customer.status.normal'),\n            },\n            {\n                id: 'demo',\n                name: this.get('intl').t('customer.status.demo'),\n            },\n        ];\n    }),\n    //            {id: \"disabled\", name: @get('intl').t('customer.status.disabled')}\n    contractTermOptions: Em.computed(function () {\n        return [{\"id\": \"1\", name: \"1\"}, {\"id\": \"3\", name: \"3\"}, {\"id\": \"6\", name: \"6\"}, {\"id\": \"12\", name: \"12\"}, {\"id\": \"else\", name: this.get('intl').t('abcense.types.other')}, {\"id\": \"check\", name: this.get('intl').t('general.check')}];\n    }),\n    getAdminUsers: function () {\n        return $.ajax({\n            url:\n                config.APP.ADMINTOOLURL +\n                'getCustomerAdminUsers?partnerid=' +\n                this.get('model.partnerid'),\n            type: 'GET',\n            headers: {\n                Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n            },\n            success: (data) => {\n                return data;\n            },\n        });\n    },\n    billinginfo: Ember.computed('model', function () {\n        return this.get('store').query('billinginfo', {\n            partnerid: this.get('model.partnerid'),\n        });\n    }),\n    recurringBillRows: Ember.computed('model', function () {\n        return this.get('store').query('rcbill', {\n            customer: this.get('model.id'),\n            limit: 'all',\n            //            startdate: moment().subtract(10,'years').format('YYYY-MM-DD')+\"_\"+moment().endOf('month').format('YYYY-MM-DD'),\n            //            enddate: moment().startOf('month').format('YYYY-MM-DD')+\"_\"+moment().add(10,'years').format('YYYY-MM-DD')+\"||(empty)\",\n            sideload: true,\n        });\n    }),\n    billRows: Ember.computed('model', function () {\n        return this.get('store').query('bill', {\n            customer: this.get('model.id'),\n            date:\n                moment().startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('month').format('YYYY-MM-DD'),\n            limit: 'all',\n            sideload: true,\n        });\n    }),\n    tt3billing: Ember.computed('model', function () {\n        return this.get('store').query('tt3billing', {\n            customer: this.get('model.partnerid'),\n        });\n    }),\n    tt3billRows: Ember.computed('model', function () {\n        return this.get('store').query('tt3bill', {\n            customer: this.get('model.id'),\n            date:\n                moment().startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('month').format('YYYY-MM-DD'),\n            sideload: true,\n        });\n    }),\n    hasIntegrations: Ember.computed('model.integration', 'model.customization', function () {\n        return (\n            isPresent(this.get('model.integration')) || isPresent(this.get('model.customization'))\n        );\n    }),\n    actions: {\n        toggleFixedPrice: function () {\n            if (this.get('has_fixed_price')) {\n                this.set('price_disabled', true);\n            } else {\n                this.set('price_disabled', false);\n            }\n            return this.set('dirtyFixedPrice', true);\n        },\n        changedFixedPrice: function () {\n            return this.set('dirtyFixedPrice', true);\n        },\n        //console.log \"sdhkfsdh\"\n        saveFixedPrice: function () {\n            var c, model, price;\n            price = this.get('fixed_price');\n            this.set('fixed_price_saving', true);\n            c = this.get('Collector');\n            // if record not found, create one\n            if (!this.get('fixed_price_model')) {\n                model = this.store.createRecord('fixedprice', {\n                    price: price,\n                    customer: this.get('model'),\n                });\n            } else {\n                model = this.get('fixed_price_model');\n            }\n            // delete record\n            if (!this.get('has_fixed_price')) {\n                model.deleteRecord();\n                if (this.get('fixedLimits').length > 0) {\n                    this.dialogs\n                        .confirm(\n                            this.get('intl').t('admintool.fixedprice.confirm_remove_fixedlimits'),\n                        )\n                        .then((ret) => {\n                            if (ret) {\n                                return this.get('fixedLimits').invoke('destroyRecord');\n                            }\n                        });\n                }\n                this.set('fixed_price', null);\n                this.set('fixed_price_model', null);\n            } else {\n                model.set('price', price);\n                this.set('fixed_price_model', model);\n            }\n            return model.save().then(() => {\n                this.set('fixed_price_saving', false);\n                return this.set('dirtyFixedPrice', false);\n            });\n        },\n        delete: function (row) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('general.remove_row'))\n                .then(function (con) {\n                    if (con) {\n                        return row.destroyRecord();\n                    }\n                });\n        },\n        changeMainCampaign: function (campaign) {\n            var camps;\n            camps = this.store.peekAll('campaign').filterBy('name', campaign);\n            // this is kinda stupid but didn't come up with anything else\n            // iterate all products and set default-prices for all products\n            this.get('customerProducts').forEach((product) => {\n                if (!product['custom_campaign']) {\n                    return Ember.set(product, 'price', product['default_price']);\n                }\n            });\n            // ..after that set campaign-prices for those products that have them\n            return camps.forEach((camp) => {\n                var product;\n                product = this.get('customerProducts').findBy(\n                    'id',\n                    parseInt(camp.get('product.id')),\n                );\n                if (product && !product['custom_campaign']) {\n                    return Ember.set(product, 'price', camp.get('price'));\n                }\n            });\n        },\n        changeCampaign: function (product) {\n            var found_camp, new_camp;\n            this.set('dirtyRecords', true);\n            // if product-campaign\n            if (product['campaign'] !== '') {\n                // first get record for this products product-campaign\n                found_camp = this.store.peekRecord('productcampaign', product['campaign']);\n                if (!product['custom_campaign']) {\n                    // if this product didn't have customer-campaign, create new\n                    new_camp = this.store.createRecord('customercampaign', {\n                        campaign: found_camp,\n                        customer: this.get('model'),\n                    });\n                    product['custom_campaign'] = new_camp; // this product now has new customer-campaign (not saved yet)\n                } else {\n                    // update customer-campaign to new product-campaign\n                    product['custom_campaign'].set('campaign', found_camp);\n                    product['custom_campaign'].send('becomeDirty'); // manually set record dirty because of belongsTo\n                }\n                return Ember.set(product, 'price', found_camp.get('price'));\n            } else {\n                // mark customer-campaign as deleted\n                if (product['custom_campaign'].get('isNew')) {\n                    this.store.unloadRecord(product['custom_campaign']);\n                } else {\n                    product['custom_campaign'].deleteRecord(); // this is in db so it needs to be deleted\n                }\n                product['custom_campaign'] = null;\n                // use product default-price\n                found_camp = this.get('customerProducts').findBy('id', product['id']);\n                return Ember.set(product, 'price', found_camp['default_price']);\n            }\n        },\n        changeContractTerm: function (term) {\n            this.set('model.contractTermLength', term);\n            return this.set('dirtyRecords', true);\n        },\n        clearCache: function () {\n            return this.get('ajax')\n                .request(\n                    config.APP.TT4CAPIURL +\n                        '/system/clear_memcache?partnerid=' +\n                        this.get('model.partnerid'),\n                )\n                .then(() => {\n                    return this.get('notifications').success(\n                        this.get('intl').t('general.cache_cleared'),\n                        {\n                            autoClear: true,\n                        },\n                    );\n                });\n        },\n        saveCampaigns: function () {\n            this.store\n                .peekAll('customercampaign')\n                .filterBy('hasDirtyAttributes')\n                .forEach((cp) => {\n                    if (cp.get('hasDirtyAttributes')) {\n                        return cp.save();\n                    }\n                });\n            this.set('saving', false);\n            return this.set('dirtyRecords', false);\n        },\n        saveCustomer: function () {\n            this.set('errors', []);\n            // show error if billing_start or vatin is empty, otherwise save\n            if (\n                (!this.get('model.billing_start') || !this.get('model.vatin')) &&\n                this.get('model.status') === 'normal'\n            ) {\n                if (!this.get('model.billing_start')) {\n                    this.get('errors').pushObject(\n                        this.get('intl').t('admintool.overview.errors.billing_start'),\n                    );\n                }\n                if (!this.get('model.vatin')) {\n                    this.get('errors').pushObject(\n                        this.get('intl').t('admintool.overview.errors.vatin'),\n                    );\n                }\n                this.set('customerSaving', false);\n                return;\n            }\n            return this.get('model')\n                .save()\n                .then(() => {\n                    return this.set('customerSaving', false);\n                });\n        },\n        changedSalesman: function (salesman) {\n            this.set('model.salesman', this.get('store').peekRecord('user', salesman));\n            return this.get('model').send('becomeDirty');\n        },\n        login: function () {\n            if (this.get('clientVersion') === 'visma') {\n                return this.get('tools').login(this.get('loginUser'), config.APP.ENTRY_URL);\n            } else {\n                return this.get('tools').login(this.get('loginUser'));\n            }\n        },\n        forceBillingPopup: function () {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('admintool.overview.billing.force_popup_alert'))\n                .then((con) => {\n                    if (con) {\n                        return this.get('billinginfo.content').destroyRecord();\n                    }\n                });\n        },\n        addRCBill: function () {\n            this.get('store').createRecord('rcbill', {\n                customer: this.get('model'),\n            });\n            return this.transitionToRoute({\n                queryParams: {\n                    modal: 'rcbill,new',\n                },\n            });\n        },\n        addFixedLimit: function () {\n            this.get('store').createRecord('fixedlimit', {\n                customer: this.get('model'),\n            });\n            return this.transitionToRoute({\n                queryParams: {\n                    modal: ['fixedlimit', 'new'],\n                },\n            });\n        },\n        /* not implemented\n           changeBillingStart: (start) ->\n               @set 'model.billing_start', start\n               if start != \"\"\n                   @set 'calculated_from_promo', false\n               else\n                   @set 'calculated_from_promo', true\n           */\n        editBillinginfo: function () {\n            return this.transitionToRoute({\n                queryParams: {\n                    modal: 'billinginfo,' + this.get('billinginfo.id'),\n                },\n            });\n        },\n    },\n});\n\nexport default AdmintoolOverviewController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/overview/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolOverviewRoute;\n\nimport Ember from 'ember';\n\nAdmintoolOverviewRoute = Ember.Route.extend({\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.init_stuff();\n    },\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting) {\n            controller.set('loginUser', null);\n            return controller.set('clientVersion', null);\n        }\n    },\n});\n\nexport default AdmintoolOverviewRoute;\n","export default Ember.HTMLBars.template({\"id\":\"LjNut4u4\",\"block\":\"{\\\"symbols\\\":[\\\"tt3bill\\\",\\\"bill\\\",\\\"bill\\\",\\\"limit\\\",\\\"product\\\",\\\"tt3bill\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"loginUser\\\"]],[24,[\\\"clientVersion\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-warning btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"login\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.login\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[2,\\\" general company info \\\"],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.name\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"name\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.vatin\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"vatin\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.partnerid\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"partnerid\\\"]],true]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.created\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"row_info\\\",\\\"created\\\"]],true]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.salesman\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"prompt\\\",\\\"bubbleChange\\\",\\\"disabled\\\"],[[24,[\\\"salesmen\\\"]],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"salesman\\\",\\\"id\\\"]],[28,\\\"t\\\",[\\\"general.choose\\\"],null],\\\"changedSalesman\\\",[28,\\\"needs\\\",[\\\"customer.salesman@disable\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.status\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"prompt\\\"],[[24,[\\\"statuslist\\\"]],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"status\\\"]],[28,\\\"t\\\",[\\\"general.choose\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"customer.campaign@hide\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.campaign\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"disabled\\\",\\\"prompt\\\",\\\"change\\\"],[[24,[\\\"campaigns\\\"]],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"campaign\\\"]],[28,\\\"if\\\",[[24,[\\\"price_disabled\\\"]],false,true],null],[28,\\\"t\\\",[\\\"general.choose\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"changeMainCampaign\\\",[24,[\\\"model\\\",\\\"campaign\\\"]]],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.info\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"info\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"customer.billing_start@hide\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.billing_start\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"billing_start\\\"]],[28,\\\"if\\\",[[24,[\\\"model\\\",\\\"billing_start\\\"]],true,false],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.contact.name\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"login_user_info_name\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.contact.email\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"login_user_info_email\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.contact.phone\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"login_user_info_phone\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"admintool.contract_term\\\"],null],false],[0,\\\" (\\\"],[1,[28,\\\"t\\\",[\\\"general.month_short\\\"],null],false],[0,\\\")\\\"],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"prompt\\\",\\\"change\\\"],[[24,[\\\"contractTermOptions\\\"]],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"contractTermLength\\\"]],[28,\\\"t\\\",[\\\"general.choose\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"changeContractTerm\\\",[24,[\\\"model\\\",\\\"contractTermLength\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mt-5 alert alert-danger\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.customer.vatin_or_billing_start_missing\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"hasDirtyAttributes\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"customerSaving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveCustomer\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-block btn-lg btn-warning\\\"],[11,\\\"onClick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"delete\\\",[24,[\\\"model\\\"]]],null]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Delete\\\"],[8],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.customer.inactivate\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"models\\\"],[\\\"button\\\",\\\"btn btn-block btn-lg btn-primary\\\",\\\"forms.form-history\\\",[28,\\\"array\\\",[\\\"customer\\\",[24,[\\\"model\\\",\\\"id\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Search\\\"],[8],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.customer.history\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-block btn-lg btn-info\\\"],[11,\\\"onClick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"clearCache\\\"],null]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Hammer\\\"],[8],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.customer.clear_cache\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!userlevel=7,8\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasIntegrations\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info customer-info-box\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"integration\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.customer.info.integration\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"p\\\",true],[8],[1,[24,[\\\"model\\\",\\\"integration\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"customization\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.customer.info.customization\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"p\\\",true],[8],[1,[24,[\\\"model\\\",\\\"customization\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[2,\\\" product info \\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"tt3billing\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"                \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"TT3 laskutusasetukset\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Kuvaus\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Aktiiviset\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Tyyppi\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Hinta\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Raja 1\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Hinta 1\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Raja 2\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Hinta 2\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Raja 3\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Hinta 3\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Alkaen\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"tt3billing\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"desc\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3billing\\\",\\\"only_active_users\\\",[23,6,[\\\"only_active_users\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"type\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"price\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"step1\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"step1_price\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"step2\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"step2_price\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"step3\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"step3_price\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3billing\\\",\\\"startdate\\\",[23,6,[\\\"startdate\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"delete\\\",[23,6,[]]]],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[10,\\\"style\\\",\\\"position:relative;\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"has_fixed_price\\\"]],[24,[\\\"tt3billing\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well overlay-well\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.customer.product\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.customer.campaign\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.customer.product_price\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.customer.product_unit\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customerProducts\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,5,[\\\"header\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"prompt\\\",\\\"change\\\"],[[23,5,[\\\"productcampaigns\\\"]],\\\"form-control add-fields\\\",[23,5,[\\\"campaign\\\"]],[28,\\\"t\\\",[\\\"admintool.default_campaign\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"changeCampaign\\\",[23,5,[]]],null]]]],false],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"currency\\\",[[23,5,[\\\"price\\\"]],[24,[\\\"showCurrency\\\"]]],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,5,[\\\"pricetype\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"dirtyRecords\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveCampaigns\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[10,\\\"style\\\",\\\"position:relative;\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"tt3billing\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well overlay-well\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"loadingFixedPrices\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.has_fixed_price\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"name\\\",\\\"click\\\",\\\"checked\\\"],[\\\"form-control add-fields\\\",\\\"checkbox\\\",\\\"setting\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggleFixedPrice\\\"],null],[24,[\\\"has_fixed_price\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.customer.fixed_price\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"step\\\",\\\"key-up\\\",\\\"disabled\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"number\\\",\\\"0.01\\\",[28,\\\"action\\\",[[23,0,[]],\\\"changedFixedPrice\\\"],null],[28,\\\"if\\\",[[24,[\\\"has_fixed_price\\\"]],false,true],null],\\\"form-control add-fields\\\",[24,[\\\"fixed_price\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"dirtyFixedPrice\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"fixed_price_saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveFixedPrice\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"customer.overview.customerPricing\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addFixedLimit\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.fixedlimit.customerproduct\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.fixedlimit.limit\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.fixedlimit.price\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fixedLimits\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"customerproduct\\\",\\\"fixedlimit\\\",[28,\\\"get\\\",[[23,4,[]],\\\"customerproduct\\\"],null]]]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"limit\\\",\\\"fixedlimit\\\",[28,\\\"get\\\",[[23,4,[]],\\\"limit\\\"],null]]]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"price\\\",\\\"fixedlimit\\\",[28,\\\"get\\\",[[23,4,[]],\\\"price\\\"],null]]]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-row-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"query\\\"],[[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[28,\\\"concat\\\",[\\\"fixedlimit,\\\",[23,4,[\\\"id\\\"]]],null]]]]]],{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"delete\\\",[23,4,[]]]],[8],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.rcbills\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"pull-right btn btn-success\\\"],[11,\\\"onClick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"addRCBill\\\"],null]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.rcbill.customerproduct\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.rcbill.amount\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.rcbill.price\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.rcbill.description\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"customer.overview.rcstartend\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"recurringBillRows\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,3,[\\\"customerproduct\\\",\\\"humanname\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,3,[\\\"amount\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,3,[\\\"price\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,3,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,3,[\\\"startdate\\\"]],false],[0,\\\" - \\\"],[1,[23,3,[\\\"enddate\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-row-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"query\\\"],[[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[28,\\\"concat\\\",[\\\"rcbill,\\\",[23,3,[\\\"id\\\"]]],null]]]]]],{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"delete\\\",[23,3,[]]]],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.bills\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"customer.overview.bills_description\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.customerproduct\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.amount\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.price\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.description\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.salesman\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"billRows\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"bill\\\",\\\"customerproduct\\\",[23,2,[\\\"customerproduct\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"bill\\\",\\\"amount\\\",[23,2,[\\\"amount\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"bill\\\",\\\"price\\\",[23,2,[\\\"price\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"bill\\\",\\\"description\\\",[23,2,[\\\"description\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"bill\\\",\\\"salesman\\\",[23,2,[\\\"salesman\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-row-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"query\\\"],[[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[28,\\\"concat\\\",[\\\"bill,\\\",[23,2,[\\\"id\\\"]]],null]]]]]],{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"delete\\\",[23,2,[]]]],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[4,\\\"each\\\",[[24,[\\\"tt3billRows\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3bill\\\",\\\"description\\\",[23,1,[\\\"description\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3bill\\\",\\\"amount\\\",[23,1,[\\\"amount\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3bill\\\",\\\"price\\\",[23,1,[\\\"price\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3bill\\\",\\\"code\\\",[23,1,[\\\"code\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-row-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"query\\\"],[[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[28,\\\"concat\\\",[\\\"tt3bill,\\\",[23,1,[\\\"id\\\"]]],null]]]]]],{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"delete\\\",[23,1,[]]]],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"billinginfo\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"billinginfo\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-success\\\"],[11,\\\"onClick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"editBillinginfo\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"admintool.overview.billing_edit\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"billinginfo\\\",\\\"isDeleted\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.overview.billing.type\\\"],null],false],[0,\\\": \\\"],[7,\\\"code\\\",true],[8],[1,[24,[\\\"billinginfo\\\",\\\"billingtype\\\"]],false],[9],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"billinginfo\\\",\\\"billingtype\\\"]],\\\"email\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.email\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"billinginfo\\\",\\\"email\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"billinginfo\\\",\\\"billingtype\\\"]],\\\"eInvoice\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.e_invoice_address\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"billinginfo\\\",\\\"e_invoice_address\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.e_invoice_opreator\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"billinginfo\\\",\\\"e_invoice_operator\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"billinginfo\\\",\\\"billingtype\\\"]],\\\"paper\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.street\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"billinginfo\\\",\\\"street\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.zip\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"billinginfo\\\",\\\"zip\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.town\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"billinginfo\\\",\\\"town\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.e_invoice_country\\\"],null],false],[0,\\\": \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-uppercase\\\"],[8],[1,[24,[\\\"billinginfo\\\",\\\"country\\\"]],false],[9],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.use_company_address\\\"],null],false],[0,\\\"\\\\n                                    : \\\"],[4,\\\"if\\\",[[24,[\\\"billinginfo\\\",\\\"use_company_address\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"standard-icon\\\",[\\\"checked\\\"],null],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"standard-icon\\\",[\\\"unchecked\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.invoice_ref\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"billinginfo\\\",\\\"invoice_ref\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.overview.billing.status\\\"],null],false],[0,\\\": \\\"],[7,\\\"code\\\",true],[8],[1,[24,[\\\"billinginfo\\\",\\\"status\\\"]],false],[9],[9],[0,\\\"\\\\n\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-action\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"forceBillingPopup\\\"]],[8],[1,[28,\\\"t\\\",[\\\"admintool.overview.billing.force_popup\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.overview.billing.info_missing\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/overview/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/reports/bills/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolReportsController;\n\nimport Ember from 'ember';\n\nimport config from '../../../../../config/environment';\n\nAdmintoolReportsController = Ember.Controller.extend({\n    store: Ember.inject.service(),\n    billingHash: Ember.computed('model', function () {\n        return (\n            config.APP.MAIN_TTAPI +\n            '/service/' +\n            btoa(this.get('model.id') + '_' + this.get('model.country'))\n        );\n    }),\n    tt3bills: Ember.computed('model', function () {\n        return this.get('store').query('tt3bill', {\n            customer: this.get('model.id'),\n            sideload: true,\n            order: 'date-',\n        });\n    }),\n    customerid: Em.computed('model.id', function () {\n        return this.get('model.id');\n    }),\n    month: Ember.computed(function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n    oldMonths: Em.computed('month', function () {\n        var i, j, month, months;\n        month = this.get('month');\n        months = [];\n        for (i = j = 1; j < 4; i = ++j) {\n            months.push(moment(month).subtract(i, 'month').format('YYYY-MM-DD'));\n        }\n        return months;\n    }),\n    actions: {\n        showOldBills: function () {\n            this.set('showOldBills', true);\n            return false;\n        },\n    },\n});\n\nexport default AdmintoolReportsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/reports/bills/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolReportsRoute;\n\nimport Ember from 'ember';\n\nAdmintoolReportsRoute = Ember.Route.extend({\n    model: function () {\n        return this.modelFor('admintool.customer');\n    },\n    setupController: function (controller, model) {\n        return this._super(controller, model);\n    },\n});\n\n//controller.init_stuff()\nexport default AdmintoolReportsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"2LBLieDF\",\"block\":\"{\\\"symbols\\\":[\\\"tt3bill\\\",\\\"oldmonth\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.customer.edit.bills.public_hash\\\"],null],false],[0,\\\": \\\"],[1,[22,\\\"billingHash\\\"],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"admintool/components/bill-comp\\\",null,[[\\\"month\\\",\\\"customerid\\\"],[[24,[\\\"month\\\"]],[24,[\\\"customerid\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"showOldBills\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showOldBills\\\"]],[8],[1,[28,\\\"t\\\",[\\\"billing.show_old_bills\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"oldMonths\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"admintool/components/bill-comp\\\",null,[[\\\"month\\\",\\\"customerid\\\"],[[23,2,[]],[24,[\\\"customerid\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-striped\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.date\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.customerproduct\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.amount\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.price\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.bill.description\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"tt3bills\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3bill\\\",\\\"date\\\",[23,1,[\\\"date\\\"]]]]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3bill\\\",\\\"description\\\",[23,1,[\\\"description\\\"]]]]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3bill\\\",\\\"amount\\\",[23,1,[\\\"amount\\\"]]]]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3bill\\\",\\\"price\\\",[23,1,[\\\"price\\\"]]]]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"tt3bill\\\",\\\"code\\\",[23,1,[\\\"code\\\"]]]]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"total\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/reports/bills/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/reports/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerReportsController;\n\nimport Ember from 'ember';\n\nAdmintoolCustomerReportsController = Ember.Controller.extend();\n\nexport default AdmintoolCustomerReportsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/reports/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerReportsRoute;\n\nimport Ember from 'ember';\n\nAdmintoolCustomerReportsRoute = Ember.Route.extend({\n    model: function () {\n        return this.modelFor('admintool.customer');\n    },\n});\n\nexport default AdmintoolCustomerReportsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"J/qFSIE7\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/reports/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/reports/users/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerReportsUsersController;\n\nimport Ember from 'ember';\n\nimport config from 'tt4/config/environment';\n\nAdmintoolCustomerReportsUsersController = Ember.Controller.extend({\n    tools: Ember.inject.service(),\n    admintool: Ember.inject.service(),\n    ajax: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    init_stuff: function () {\n        return this.getData().then((data) => {\n            return this.set('users', data);\n        });\n    },\n    searchObserver: Ember.observer('q', function () {\n        //run immediatly if empty value\n        if (this.get('q') === '') {\n            return Ember.run(this, this.doSearch);\n        } else {\n            return Ember.run.debounce(this, this.doSearch, 1000);\n        }\n    }),\n    userlevel: 5,\n    getData: function () {\n        var c, promise;\n        c = this.get('Collector');\n        promise = this.get('admintool').ajax({\n            url: 'get_form_data',\n            method: 'get',\n            data: {\n                form: 'user',\n                partnerid: this.get('model.partnerid'),\n                q: this.get('q'),\n                userlevel: this.get('userlevel'),\n                order: 'userlevel-',\n                sideload: true,\n            },\n        });\n        return promise.then((data) => {\n            data.forEach((row) => {\n                return (row['userlevel'] =\n                    parseInt(row['userlevel']) < 10\n                        ? c._format_(row['userlevel'], 'user', 'userlevel')\n                        : row['userlevel']);\n            });\n            return data;\n        });\n    },\n    userlevels: Ember.computed(function () {\n        var intl;\n        intl = this.get('intl');\n        return [\n            {\n                id: 1,\n                name: intl.t('user.userlevel.1'),\n            },\n            {\n                id: 2,\n                name: intl.t('user.userlevel.2'),\n            },\n            {\n                id: 3,\n                name: intl.t('user.userlevel.3'),\n            },\n            {\n                id: 4,\n                name: intl.t('user.userlevel.4'),\n            },\n            {\n                id: 5,\n                name: intl.t('user.userlevel.5'),\n            },\n            {\n                id: 6,\n                name: intl.t('user.userlevel.6'),\n            },\n        ];\n    }),\n    doSearch: function () {\n        return this.getData().then((data) => {\n            return this.set('users', data);\n        });\n    },\n    actions: {\n        login: function (username) {\n            if (\n                this.get('model.campaign') === 'visma' ||\n                this.get('model.campaign') === 'entry_mini'\n            ) {\n                return this.get('tools').login(\n                    {\n                        username: username,\n                    },\n                    config.APP.ENTRY_URL,\n                );\n            } else {\n                return this.get('tools').login({\n                    username: username,\n                });\n            }\n        },\n        clearCache: function (username) {\n            return this.get('ajax')\n                .request(\n                    config.APP.TT4CAPIURL +\n                        '/system/clear_memcache?partnerid=' +\n                        this.get('model.partnerid') +\n                        '&username=' +\n                        username,\n                )\n                .then(() => {\n                    return this.get('notifications').success(\n                        this.get('intl').t('general.user_cache_cleared'),\n                        {\n                            autoClear: true,\n                        },\n                    );\n                });\n        },\n        filterChanged: function () {\n            return this.doSearch();\n        },\n    },\n});\n\nexport default AdmintoolCustomerReportsUsersController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/reports/users/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerReportsUsersRoute;\n\nimport Ember from 'ember';\n\nAdmintoolCustomerReportsUsersRoute = Ember.Route.extend({\n    model: function () {\n        return this.modelFor('admintool.customer');\n    },\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.init_stuff();\n    },\n});\n\nexport default AdmintoolCustomerReportsUsersRoute;\n","export default Ember.HTMLBars.template({\"id\":\"CTZh9vOP\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row reports-header-row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-6 col-md-4 col-lg-3 input-group report-more\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"placeholder\\\"],[\\\"text\\\",[24,[\\\"q\\\"]],\\\"form-control\\\",[28,\\\"t\\\",[\\\"general.search\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"value\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"input-group-addon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeSearch\\\"]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Cross\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Search\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-6 col-md-4 col-lg-3 input-group report-more\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\"],[[24,[\\\"userlevels\\\"]],[24,[\\\"userlevel\\\"]],\\\"filterChanged\\\",[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive table-hover general-report\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.user.firstname\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.user.lastname\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.user.username\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.user.phone\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.user.email\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.user.userlevel\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Actions\\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"users\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"firstname\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"username\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"phone\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"email\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"userlevel\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-warning\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"login\\\",[23,1,[\\\"username\\\"]]]],[8],[0,\\\"Login\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-warning\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clearCache\\\",[23,1,[\\\"username\\\"]]]],[8],[0,\\\"Clear user cache\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/reports/users/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nAdmintoolCustomerRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    model: function (params) {\n        return this.get('store').findRecord('customer', params.id, {\n            include: true,\n        });\n    },\n    beforeModel: function () {\n        return this.transitionTo('admintool.customer.overview');\n    },\n});\n\nexport default AdmintoolCustomerRoute;\n","export default Ember.HTMLBars.template({\"id\":\"vNYmIGoj\",\"block\":\"{\\\"symbols\\\":[\\\"sublink\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"subMenus\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subMenus\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",null,[[\\\"needs\\\"],[[23,1,[\\\"needs\\\"]]]]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"div\\\",\\\"submenu-item\\\",[23,1,[\\\"link\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/tt3tott4/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerDetailsController;\n\nimport Ember from 'ember';\n\nAdmintoolCustomerDetailsController = Ember.Controller.extend({\n    admintool: Ember.inject.service(),\n    tt3service: Ember.computed('model.forms', function () {\n        return this.get('model.forms.tt3flag');\n    }),\n    products: Ember.computed.alias('model.tt3tott4.added_products'),\n    keys: Ember.computed('model.tt3tott4.keys', function () {\n        return this.get('model.tt3tott4.keys').join('\\n');\n    }),\n    actions: {\n        tt3tott4: function () {\n            var promise, w;\n            w = confirm(\n                'Are you sure!?\\n\\nUse this action only if you are 100% sure what this button does. This action is irreversible and prohibits TT3 usage completely',\n            );\n            console.log('w', w);\n            if (!w) {\n                return;\n            }\n            promise = this.get('admintool').ajax({\n                url: 'tt3tott4',\n                method: 'get',\n                data: {\n                    partnerid: this.get('model.partnerid'),\n                    execute: true,\n                },\n            });\n            return promise.then((back) => {\n                alert(\n                    'Concrats!\\n\\nService is now pure TT4.\\nReport saved to ' +\n                        back.report_saved_to,\n                );\n                return this.send('refreshModel');\n            });\n        },\n    },\n});\n\nexport default AdmintoolCustomerDetailsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/customer/tt3tott4/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolCustomerDetailsRoute;\n\nimport Ember from 'ember';\n\nAdmintoolCustomerDetailsRoute = Ember.Route.extend({\n    admintool: Ember.inject.service(),\n    model: function () {\n        var parent;\n        parent = this.modelFor('admintool.customer');\n        return Ember.RSVP.hash({\n            partnerid: parent.get('partnerid'),\n            forms: this.get('admintool').ajax({\n                url: 'get_form_data',\n                method: 'get',\n                data: {\n                    form: 'forms',\n                    partnerid: parent.get('partnerid'),\n                    rawoutput: true,\n                },\n            }),\n            tt3tott4: this.get('admintool').ajax({\n                url: 'tt3tott4',\n                method: 'get',\n                data: {\n                    partnerid: parent.get('partnerid'),\n                },\n            }),\n        });\n    },\n    actions: {\n        refreshModel: function () {\n            return this.refresh();\n        },\n    },\n});\n\nexport default AdmintoolCustomerDetailsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"2GsQT4r2\",\"block\":\"{\\\"symbols\\\":[\\\"product\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"tt3service\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[0,\\\"This service is TT3 version\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Transform service to pure TT4 by clicked button below\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"tt3tott4\\\"]],[8],[0,\\\"Make this service great again!\\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[7,\\\"b\\\",true],[8],[0,\\\"NOTE: Own role settings are lost when this action is executed. Please move own role settings to TT4 by hand.\\\\n    Check also that settings are correct in TT4 afterwards.\\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Products\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"products\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"li\\\",true],[8],[1,[23,1,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Extra\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"textarea\\\",true],[10,\\\"cols\\\",\\\"40\\\"],[10,\\\"rows\\\",\\\"5\\\"],[8],[1,[22,\\\"keys\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[0,\\\"This service is already pure TT4\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/customer/tt3tott4/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/admintool/reports/bi/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolTimecleanController;\n\nimport Ember from 'ember';\n\nAdmintoolTimecleanController = Ember.Controller.extend({\n    subMenus: [\n        {\n            link: 'admintool.reports.bi.timecleanlog',\n            text: 'menu.admintool.timecleanlog',\n            needs: [],\n        },\n        {\n            link: 'admintool.reports.bi.findtimeclean',\n            text: 'menu.admintool.find_timeclean',\n            needs: [],\n        },\n    ],\n});\n\nexport default AdmintoolTimecleanController;\n","import Controller from '@ember/controller';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport config from '../../../../../config/environment';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    ajax: service(),\n    session: service(),\n    ttapi2: service(),\n    dialogs: service(),\n    intl: service(),\n\n    queryParams: ['imei'],\n\n    imei: null,\n    notInUse: alias('model'),\n\n    texts: computed(function () {\n        return {\n            header: 'Timeclean Overview',\n            registeredTo: 'Registered to services',\n            commands: 'Commands',\n        };\n    }),\n\n    imeiOk: computed('imei', function () {\n        return get(this, 'imei.length') === 15;\n    }),\n\n    registeredTo: computed('imei', function () {\n        return get(this, 'ajax').request(\n            config.APP.ADMINTOOLURL + 'BI/fetchDeviceServices?imei=' + get(this, 'imei'),\n            {\n                type: 'GET',\n                headers: {\n                    Authorization:\n                        'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n                },\n            },\n        );\n    }),\n\n    commands: computed('imei', function () {\n        return get(this, 'ttapi2').request(\n            '/at2/jsonapi/commands?filter[imei]=' + get(this, 'imei'),\n        );\n    }),\n\n    actions: {\n        register(partnerid) {\n            get(this, 'ajax')\n                .request(config.APP.REALTTAPI + '/api/registerTC', {\n                    type: 'POST',\n                    headers: {\n                        Authorization:\n                            'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n                    },\n                    data: { imei: get(this, 'imei'), partnerid: partnerid },\n                })\n                .then(this.refresh.bind(this));\n\n            set(this, 'showRegisterAdder', false);\n        },\n\n        remove(partnerid) {\n            get(this, 'dialogs')\n                .confirm(get(this, 'intl').t('report.confirm_delete'))\n                .then(this.removeNow.bind(this, partnerid));\n        },\n    },\n\n    refresh() {\n        this.notifyPropertyChange('imei');\n    },\n\n    removeNow(partnerid, con) {\n        if (!con) return;\n        get(this, 'ajax')\n            .request(\n                config.APP.REALTTAPI +\n                    '/api/registerTC?imei=' +\n                    get(this, 'imei') +\n                    '&partnerid=' +\n                    partnerid,\n                {\n                    type: 'DELETE',\n                    headers: {\n                        Authorization:\n                            'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n                    },\n                },\n            )\n            .then(this.refresh.bind(this));\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"WYfq+Ugw\",\"block\":\"{\\\"symbols\\\":[\\\"command\\\",\\\"service\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"h3\\\",true],[8],[1,[24,[\\\"texts\\\",\\\"header\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group input-group-lg\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"placeholder\\\",\\\"value\\\"],[\\\"form-control\\\",[28,\\\"t\\\",[\\\"select.search.imei\\\"],null],[24,[\\\"imei\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Search\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"imeiOk\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content col-md-5 \\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[24,[\\\"texts\\\",\\\"registeredTo\\\"]],false],[0,\\\" \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showRegisterAdder\\\"]]],null],true]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9],[9],[0,\\\" \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"registeredTo\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"registeredTo\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label label-info\\\"],[8],[1,[23,2,[\\\"partnerid\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[23,2,[\\\"name\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    (service is not found from admintool)\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[11,\\\"onClick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,2,[\\\"partnerid\\\"]]],null]],[10,\\\"class\\\",\\\"pull-right move move-Delete\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},{\\\"statements\\\":[[0,\\\"                            Not registered to any service\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content col-md-5 col-md-offset-1\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[24,[\\\"texts\\\",\\\"commands\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"commands\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"commands\\\"]]],null],\\\"data\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[23,1,[\\\"command\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"status\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label label-warning pull-right\\\"],[8],[1,[23,1,[\\\"status\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label label-default pull-right\\\"],[8],[0,\\\"pending\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                            No commands\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[0,\\\"Type 15 characters imei\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRegisterAdder\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"general.add\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showRegisterAdder\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"class\\\"],[[24,[\\\"partnerid\\\"]],\\\"form-control\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"register\\\",[24,[\\\"partnerid\\\"]]]],[8],[0,\\\"Register\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showRegisterAdder\\\"]]],null],false]],[8],[0,\\\"Close\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/reports/bi/findtimeclean/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport { inject as service } from '@ember/service';\n\nexport default Route.extend(AuthenticatedRouteMixin, {\n    Collector: service('collector-service'),\n\n    beforeModel(transition) {\n        if (!this.Collector.testNeeds(['userlevel=5'])) {\n            transition.abort();\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"RZtAl2yH\",\"block\":\"{\\\"symbols\\\":[\\\"sublink\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"subMenus\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subMenus\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",null,[[\\\"needs\\\"],[[23,1,[\\\"needs\\\"]]]]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"div\\\",\\\"submenu-item\\\",[23,1,[\\\"link\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/reports/bi/template.hbs\"}});","import Controller from '@ember/controller';\nimport { Promise as EmberPromise } from 'rsvp';\nimport PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\nimport ObjectProxy from '@ember/object/proxy';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    ttapi2: service(),\n    notinuse: alias('model'),\n\n    filters: computed('imeiFilter', 'tagFilter', 'date', function () {\n        let filters = new Object();\n        if (get(this, 'imeiFilter.target.value')) {\n            filters.imei = get(this, 'imeiFilter.target.value');\n        }\n        if (get(this, 'tagFilter.target.value')) {\n            filters.tagid = get(this, 'tagFilter.target.value');\n        }\n        if (get(this, 'date')) {\n            filters.datetime = get(this, 'date');\n        }\n\n        return filters;\n    }),\n\n    logs: computed('filters', function () {\n        let url = 'at2/timecleanlog';\n        let filters = get(this, 'filters');\n        if (filters) {\n            for (const key in filters) {\n                if (key == Object.keys(filters)[0]) {\n                    url += '?' + key + '=' + filters[key];\n                } else {\n                    url += '&' + key + '=' + filters[key];\n                }\n            }\n        }\n        return ObjectProxy.extend(PromiseProxyMixin).create({\n            //eslint-disable-line\n            promise: new EmberPromise((resolve) => {\n                get(this, 'ttapi2')\n                    ._get(url)\n                    .then((back) => this._resolvePromise(back, resolve));\n            }),\n        });\n    }),\n\n    _resolvePromise(back, resolve) {\n        resolve(back.message);\n    },\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"1cI1Aig8\",\"block\":\"{\\\"symbols\\\":[\\\"value\\\",\\\"key\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row filter-comp-component\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-4\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"date-range-picker\\\",null,[[\\\"value\\\",\\\"dateChange\\\"],[[24,[\\\"date\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"dateFilter\\\"]]],null]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-4\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"placeholder\\\",\\\"keyUp\\\"],[\\\"form-control\\\",[28,\\\"t\\\",[\\\"select.search.imei\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"imeiFilter\\\"]]],null]],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Search\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-4\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"placeholder\\\",\\\"keyUp\\\"],[\\\"form-control\\\",[28,\\\"t\\\",[\\\"select.search.tagid\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"tagFilter\\\"]]],null]],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Search\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content col-md-10 col-md-offset-1\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.timecleanlog\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"logs\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"logs\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"logs\\\",\\\"content\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[24,[\\\"logs\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[1,[28,\\\"admintool/reports/bi/timecleanlog/timeclean-row\\\",null,[[\\\"value\\\"],[[23,1,[]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.no_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/reports/bi/timecleanlog/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport config from 'tt4/config/environment';\n\nexport default Component.extend({\n    ajax: service(),\n    session: service(),\n    show: false,\n\n    info: computed('value', function () {\n        if (get(this, 'value.success')) return get(this, 'value.success');\n        return get(this, 'value.error');\n    }),\n\n    rowActions: computed('value', function () {\n        if (get(this, 'value.error'))\n            return { label: 'label-danger', value: get(this, 'value.error').substring(0, 100) };\n\n        const stamps = get(this, 'value.success.stamps');\n        if (get(this, 'value.success.imei_not_found'))\n            return { label: 'label-danger', value: 'imei not found' };\n        if (!stamps) return { label: 'label-danger', value: 'skipped' };\n\n        const parnterids = Object.keys(stamps);\n\n        const actions = [];\n\n        parnterids.forEach((partnerid) => {\n            const stamp = stamps[partnerid];\n            if (get(stamp, 'worktime.worktime.id')) {\n                actions.push(\n                    get(stamp, 'worktime.worktime.endtime') ? 'worktime ended' : 'worktime started',\n                );\n            }\n            if (get(stamp, 'presence.presence.id')) {\n                actions.push(\n                    get(stamp, 'presence.presence.out') ? 'presence ended' : 'presence started',\n                );\n            }\n        });\n\n        if (actions.length == 1) return { label: 'label-warning', value: actions[0] };\n        if (actions.length > 1) return { label: 'label-warning', value: 'many actions' };\n\n        return { label: 'label-danger', value: 'skipped' };\n    }),\n\n    actions: {\n        sendStamp(message) {\n            get(this, 'ajax')\n                .request(config.APP.REALTTAPI + '/api/sendstamp', {\n                    type: 'POST',\n                    headers: {\n                        Authorization:\n                            'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n                    },\n                    data: 'base64:' + btoa(message),\n                })\n                .then(this._showMessage.bind(this));\n        },\n    },\n    _showMessage(resp) {\n        set(this, 'responseMessage', resp.message);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"+7tkIoC3\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"value\\\",\\\"datetime\\\"]],\\\"LLL\\\"],null],false],[0,\\\"\\\\n\\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label label-success\\\"],[8],[4,\\\"link-to\\\",null,[[\\\"query\\\",\\\"route\\\"],[[28,\\\"hash\\\",null,[[\\\"imei\\\"],[[24,[\\\"value\\\",\\\"stampinfo\\\",\\\"imei\\\"]]]]],\\\"admintool.reports.bi.findtimeclean\\\"]],{\\\"statements\\\":[[1,[24,[\\\"value\\\",\\\"stampinfo\\\",\\\"imei\\\"]],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label label-info\\\"],[8],[1,[24,[\\\"value\\\",\\\"stampinfo\\\",\\\"tagid\\\"]],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label label-default\\\"],[8],[1,[24,[\\\"value\\\",\\\"stampinfo\\\",\\\"direction\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"glyphicon glyphicon-chevron-down pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"show\\\"]]],null],[28,\\\"not\\\",[[24,[\\\"show\\\"]]],null]]],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"label \\\",[24,[\\\"rowActions\\\",\\\"label\\\"]],\\\" pull-right\\\"]]],[8],[1,[24,[\\\"rowActions\\\",\\\"value\\\"]],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row info\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"XML:\\\"],[7,\\\"pre\\\",true],[8],[1,[24,[\\\"value\\\",\\\"message\\\"]],false],[9],[0,\\\" \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\" Stampinfo:\\\"],[7,\\\"pre\\\",true],[8],[1,[28,\\\"show-json\\\",[[24,[\\\"value\\\",\\\"stampinfo\\\"]],4],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\" \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendStamp\\\",[24,[\\\"value\\\",\\\"message\\\"]]]],[8],[0,\\\"Send stamp again\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"responseMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\" Message: \\\"],[7,\\\"pre\\\",true],[8],[1,[22,\\\"responseMessage\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"Stamp: \\\"],[7,\\\"pre\\\",true],[8],[1,[28,\\\"show-json\\\",[[24,[\\\"info\\\"]],4],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/reports/bi/timecleanlog/timeclean-row/template.hbs\"}});","import Controller from '@ember/controller';\n\n// eslint-disable-next-line ember/alias-model-in-controller\nexport default Controller.extend({\n    // eslint-disable-next-line ember/avoid-leaking-state-in-ember-objects\n    columns: [\n        { name: 'Name', valuePath: 'name', width: 200 },\n        { name: 'Description', valuePath: 'description', width: 500 },\n        { name: 'Key', valuePath: 'key', width: 300 },\n    ],\n});\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\n\nexport default Route.extend({\n    cc: service(),\n    model() {\n        return this.cc.request('ld-flags');\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"gOS+xA8c\",\"block\":\"{\\\"symbols\\\":[\\\"table\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[0,\\\"List of feature flags and a description of what they do\\\"],[9],[0,\\\"\\\\n\\\"],[5,\\\"ember-table\\\",[[12,\\\"class\\\",\\\"movenium-table\\\"]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"head\\\"]],[],[[\\\"@columns\\\"],[[23,0,[\\\"columns\\\"]]]]],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[\\\"@rows\\\"],[[28,\\\"to-array\\\",[[24,[\\\"model\\\"]]],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/admintool/reports/featureflags/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport { inject as service } from '@ember/service';\n\nexport default Route.extend(AuthenticatedRouteMixin, {\n    Collector: service('collector-service'),\n\n    beforeModel(transition) {\n        if (!this.Collector.testNeeds(['products.admintool'])) {\n            transition.abort();\n            this.transitionTo('my-sites.index');\n        }\n    },\n});\n","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\n\nconst CollectorAddModalAbsenceComponent = Component.extend({\n    type: 'multi',\n    layoutName: computed('record', function () {\n        return 'collector/record-comp';\n    }),\n\n    multipleDays: computed('type', function () {\n        if (get(this, 'type') === 'single') return false;\n        return true;\n    }),\n\n    settings: computed('record', 'type', function () {\n        if (this.type === 'multi') {\n            return {\n                form: 'abcense',\n                skip: ['starttime', 'endtime', 'status', 'absence_hours'],\n                mandatory: ['startdate', 'enddate', 'dayamount'],\n            };\n        } else {\n            // if hour-type adding\n            let ret;\n            if (this.Collector.testNeedsOne('products.absences_hours')) {\n                ret = {\n                    form: 'abcense',\n                    skip: ['dayamount', 'status', 'enddate'],\n                    mandatory: ['startdate', 'absence_hours'],\n                };\n            } else {\n                ret = {\n                    form: 'abcense',\n                    skip: ['dayamount', 'status', 'enddate'],\n                    mandatory: ['starttime', 'endtime', 'startdate'],\n                };\n            }\n            return ret;\n        }\n    }),\n\n    actions: {\n        changeType(type) {\n            set(this, 'type', type);\n            if (type === 'multi') {\n                set(this, 'record.starttime', null);\n                set(this, 'record.endtime', null);\n                return set(this, 'record.absence_hours', null);\n            } else {\n                set(this, 'record.enddate', null);\n                return set(this, 'record.dayamount', null);\n            }\n        },\n\n        didInsertElement() {\n            this.setRightType();\n        },\n\n        removeModal(settings) {\n            if (this.cancelClicked) {\n                return this.cancelClicked(settings, false);\n            }\n        },\n\n        modalRecordSaved(settings, record) {\n            if (this.recordSaved) {\n                return this.recordSaved(settings, record);\n            }\n        },\n\n        setRightType() {\n            let type = 'single';\n            const record = this.record;\n            if (!record || get(record, 'isNew')) {\n                type = 'multi';\n            }\n            if ((record && get(record, 'starttime') === '') || !get(record, 'starttime')) {\n                type = 'multi';\n            } else {\n                type = 'single';\n            }\n            set(this, 'type', type);\n        },\n    },\n});\n\nexport default CollectorAddModalAbsenceComponent;\n","export default Ember.HTMLBars.template({\"id\":\"zdm894Wp\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"record\\\",\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"type\\\"]],\\\"multi\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"changeType\\\",\\\"multi\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"menu.add_abcense_multiple\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"type\\\"]],\\\"single\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"changeType\\\",\\\"single\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"menu.add_abcense_single\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-absence-content\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"abcenses/add/abcense-record-comp\\\",null,[[\\\"form\\\",\\\"settings\\\",\\\"multipleDays\\\",\\\"record_id\\\",\\\"record\\\",\\\"cancelClicked\\\",\\\"recordSaved\\\"],[\\\"abcense\\\",[24,[\\\"settings\\\"]],[24,[\\\"multipleDays\\\"]],[24,[\\\"record_id\\\"]],[24,[\\\"record\\\"]],\\\"removeModal\\\",\\\"modalRecordSaved\\\"]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/add-modal/absence/template.hbs\"}});","import { inject as service } from '@ember/service';\nimport recordComp from '../../record-comp/component';\nimport { copy } from 'ember-copy';\n\nconst CollectorAddModalAdmintoolComponent = recordComp.extend({\n    store: service(),\n    intl: service(),\n\n    layoutName: 'collector/record-comp',\n\n    returnField(field) {\n        if (\n            field.type === 'database' &&\n            this.form === 'timecleandevice' &&\n            field.name === 'customer'\n        ) {\n            const features = copy(field.features);\n            features.hide = true;\n            field.features = features;\n        }\n        return field;\n    },\n});\n\nexport default CollectorAddModalAdmintoolComponent;\n","import { inject as service } from '@ember/service';\nimport recordComp from '../../record-comp/component';\nimport { set } from '@ember/object';\n\nconst CollectorAddModalCardComponent = recordComp.extend({\n    store: service(),\n    session: service(),\n\n    layoutName: 'collector/record-comp',\n\n    init() {\n        this._super();\n        this.store.createRecord('card', {\n            taxnumber: this.session.currentUser.taxnumber,\n            name: this.session.currentUser.firstname + ' ' + this.session.currentUser.lastname,\n            owner: 'partner',\n        });\n\n        set(this, 'record_id', 'new');\n    },\n});\n\nexport default CollectorAddModalCardComponent;\n","/*eslint-disable ember/named-functions-in-promises */\nimport { getOwner } from '@ember/application';\n\nimport { Promise } from 'rsvp';\nimport PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\nimport ObjectProxy from '@ember/object/proxy';\nimport { next, once, bind } from '@ember/runloop';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport Component from '@ember/component';\nimport pdf_mixin from '../../../mixins/pdf-export';\n\nconst CollectorAddModalComponent = Component.extend(pdf_mixin, {\n    Collector: service('collector-service'),\n    store: service(),\n    gui: service(),\n    flags: service(),\n    localStorageWrapper: service(),\n    intl: service(),\n    router: service(),\n    record: null,\n\n    fields: computed('form', function () {\n        return get(this, 'Collector')\n            .fieldArray(get(this, 'form'))\n            .reject((field) => field.features.hide);\n    }),\n\n    _modal: computed('modal', function () {\n        return get(this, 'modal').split(',');\n    }),\n\n    form: computed('_modal', function () {\n        return get(this, '_modal')[0];\n    }),\n\n    type: computed('_modal', function () {\n        return get(this, '_modal')[2];\n    }),\n\n    storeRecord: computed('record', function () {\n        const record = get(this, 'store').peekRecord(get(this, 'form'), get(this, 'record'));\n        if (!record) {\n            next(this, () => {\n                return set(this, 'modal', []); //eslint-disable-line\n            });\n        }\n\n        return record;\n    }),\n\n    recordCompComponent: computed('form', function () {\n        const addModal = (() => {\n            switch (get(this, 'form')) {\n                case 'worktask':\n                    return 'worktask';\n                case 'timecleandevice':\n                    return 'admintool';\n                case 'abcense':\n                    return 'absence';\n                case 'worktime':\n                    return 'worktime';\n                case 'presence':\n                    return 'presence';\n                case 'card':\n                    return 'card';\n            }\n        })();\n        if (addModal) {\n            return 'collector/add-modal/' + addModal;\n        } else {\n            return 'collector/record-comp';\n        }\n    }),\n\n    currentHolidays: computed(function () {\n        return ObjectProxy.extend(PromiseProxyMixin).create({\n            promise: new Promise((resolve) => {\n                const userId = get(\n                    get(this, 'store').peekRecord(get(this, 'form'), get(this, 'record')),\n                    'user.id',\n                );\n                const start = moment().format('YYYY') + '-05-02';\n                const country = get(\n                    get(this, 'store').peekAll('companyInfo'),\n                    'firstObject.country',\n                );\n\n                const url = 'api/getUsersWithHolidays';\n                return get(this, 'Collector')\n                    .ttapi({\n                        url: url + '?id=' + userId + '&start=' + start + '&country=' + country,\n                    })\n                    .then((back) => {\n                        return resolve({ value: back['users'][0]['availabledays'] });\n                    });\n            }),\n        });\n    }),\n\n    didReceiveAttrs() {\n        if (get(this, 'record')) return;\n        const modal = get(this, '_modal');\n        if (modal[1]) {\n            set(this, 'record', modal[1]);\n        } else {\n            set(this, 'record', false);\n        }\n    },\n\n    willInsertElement() {\n        return once(this, bind(this, this.hideMobileHeader));\n    },\n\n    didDestroyElement() {\n        return set(this, 'gui.hideMobileHeader', false);\n    },\n\n    actions: {\n        modalRecordSaved(settings, record) {\n            //            @get('notifications').success(@get('intl').t(\"modal.record.saved\",  {form: record.constructor.modelName}), {\n            //                autoClear: true\n            //                clearDuration: 2000\n            //            })\n            set(this, 'record', get(record, 'id'));\n            return set(this, 'saved', true);\n        },\n\n        removeModal(settings, cleaningDone) {\n            // this is ugly but only way I came up with...\n            const promise = new Promise((resolve) => {\n                if (!cleaningDone) {\n                    if (get(this, 'record') === 'new') {\n                        const found = get(this, 'store')\n                            .peekAll(get(this, 'form'))\n                            .find((record) => {\n                                return get(record, 'hasDirtyAttributes');\n                            });\n                        if (found) {\n                            found.deleteRecord();\n                        }\n                    } else {\n                        if (get(this, 'record')) {\n                            const record = get(this, 'store').peekRecord(\n                                get(this, 'form'),\n                                get(this, 'record'),\n                            );\n                            if (record) {\n                                record.rollbackAttributes();\n                            }\n                        }\n                    }\n                }\n                // Only refresh model for presence form for now, this should be removed or slowly added more options\n                if (\n                    !['show', 'history'].includes(get(this, 'type')) &&\n                    ['presence', 'abcense', 'group', 'site_safety_event', 'worktask'].includes(\n                        get(this, 'form'),\n                    )\n                ) {\n                    const controller = getOwner(this).lookup('controller:application');\n                    const routeName = get(this.router, 'currentRouteName');\n                    if (routeName.includes(get(this, 'form'))) {\n                        const route = getOwner(this).lookup(\n                            'route:' + get(controller, 'currentRouteName'),\n                        );\n                        return route.refresh().then(() => {\n                            return resolve();\n                        });\n                    } else {\n                        return resolve();\n                    }\n                } else {\n                    return resolve();\n                }\n            });\n            // we have to wait for model-refreshing is done before removing modal, otherwise it creates some weird issues with array-type query-params\n            return promise.then(() => {\n                set(this, 'modal', null);\n                return set(this, 'showEmailModal', false);\n            });\n        },\n\n        showEmailModal() {\n            return set(this, 'showEmailModal', true);\n        },\n\n        sendEmail(to, title, content) {\n            set(this, 'loading', true);\n            const intl = get(this, 'intl');\n            const c = get(this, 'Collector');\n            set(this, 'loading', true);\n            const form = get(this, 'form');\n            const fields = c.fields(form);\n\n            const titles = [];\n            const columns = [];\n            const export_fields = [];\n            for (let name in fields) {\n                const field = fields[name];\n                set(field, 'ext', name);\n                if (field.features && field.features.hide_column) {\n                    continue;\n                }\n                titles.push(c.getTranslationForColumn(form, field.ext));\n                columns.push(field.ext);\n                export_fields.push(field);\n            }\n\n            return this.formatCollectorFieldsToPdfArray(\n                export_fields,\n                get(this, 'storeRecord'),\n                'row',\n            ).then((data) => {\n                const element = this.createPdfTableElementRows(columns, [data], titles);\n                return this.createPdfFromElements(element, 'base64').then((pdf) => {\n                    return c\n                        .ttapi({\n                            url: 'sendReportAsEmail',\n                            data: {\n                                to_address: to,\n                                header: title,\n                                content,\n                                email: pdf,\n                                lang: intl.primaryLocale,\n                            },\n                            method: 'post',\n                        })\n                        .then(() => {\n                            set(this, 'loading', false);\n                            set(this, 'emailSent', true);\n                            return get(this, 'localStorageWrapper').setUserSetting(\n                                'last_sent_email_address',\n                                to,\n                            );\n                        });\n                });\n            });\n        },\n    },\n\n    hideMobileHeader() {\n        set(this, 'gui.hideMobileHeader', true);\n    },\n});\n\nexport default CollectorAddModalComponent;\n","import { set } from '@ember/object';\nimport recordComp from '../../record-comp/component';\nimport { inject as service } from '@ember/service';\n\nexport default recordComp.extend({\n    Collector: service('collector-service'),\n    layoutName: 'collector/record-comp',\n\n    returnField(field) {\n        if (\n            field.name == 'description' &&\n            this.Collector.testNeedsOne('products.personalliggareandid06')\n        ) {\n            set(field, 'features.mandatory', true);\n        }\n        return field;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"TKpYcYCd\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showEmailModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"export-modal\\\",null,[[\\\"form\\\",\\\"sendEmailAction\\\",\\\"includeEmail\\\",\\\"showEmailModal\\\",\\\"emailSent\\\",\\\"loading\\\",\\\"removeModal\\\"],[[24,[\\\"form\\\"]],\\\"sendEmail\\\",true,[24,[\\\"showEmailModal\\\"]],[24,[\\\"emailSent\\\"]],[24,[\\\"loading\\\"]],\\\"removeModal\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-container\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup-header\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"menu.add_\\\",[24,[\\\"form\\\"]]],null]],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross add-modal-cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"modal-popup-content \\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"isSafari\\\"]],\\\"isMobileSafari\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"saved\\\"]],[28,\\\"is-equal\\\",[[24,[\\\"type\\\"]],\\\"show\\\"],null]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"type\\\"]],\\\"show\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saved.title\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"storeRecord\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-saved-content\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"storeRecord\\\",\\\"row_info\\\",\\\"status\\\"]],\\\"locked\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"t\\\",[\\\"modal.record_locked.warning\\\"],null],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[23,1,[\\\"name\\\"]],[23,1,[\\\"form\\\"]]]]],false],[0,\\\": \\\"],[9],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[[23,1,[]],[23,1,[\\\"form\\\"]],[24,[\\\"storeRecord\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"form\\\"]],\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcensetype.usesholiday\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"customersetting.hide_holidays\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"absence.your_holidays_now\\\"],null],false],[0,\\\":\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentHolidays\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                            \\\"],[1,[24,[\\\"currentHolidays\\\",\\\"value\\\"]],false],[0,\\\"\\\\n                                        \\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-lg btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showEmailModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"saved.modal.email\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-lg btn-block modal-saved-buttons\\\"],[12,\\\"name\\\",\\\"ok-button\\\"],[12,\\\"data-anchor\\\",\\\"saved-button-ok\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"type\\\"]],\\\"history\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-history-content\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"record\\\"]],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-lg btn-block modal-saved-buttons\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"modal-add-form-worktime\\\"],null]],null,{\\\"statements\\\":[[1,[28,\\\"components/tab-component\\\",null,[[\\\"form\\\",\\\"closeModal\\\"],[[24,[\\\"form\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null]]]],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[24,[\\\"recordCompComponent\\\"]]],[[\\\"form\\\",\\\"record_id\\\",\\\"cancelClicked\\\",\\\"recordSaved\\\"],[[24,[\\\"form\\\"]],[24,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"modalRecordSaved\\\"],null]]]],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-overlay\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/add-modal/template.hbs\"}});","/*eslint-disable ember/named-functions-in-promises */\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\nimport recordComp from '../../record-comp/component';\n\nconst CollectorAddModalWorktaskComponent = recordComp.extend({\n    store: service(),\n    intl: service(),\n\n    layoutName: 'collector/record-comp',\n\n    init() {\n        this._super();\n        this.currentValues = {\n            date: null,\n            userid: null,\n        };\n    },\n\n    actions: {\n        setValue(value, field, set) {\n            if (set == null) {\n                set = true;\n            }\n            this._super(value, field, set);\n            return this.updateMessage();\n        },\n    },\n\n    /*\n    check if worktasks are found for selected user for selected date\n    */\n    updateMessage() {\n        if (\n            get(this, 'currentValues.date') === get(this, 'record.date') &&\n            get(this, 'currentValues.userid') === get(this, 'record.user.id')\n        ) {\n            return;\n        }\n\n        set(this, 'currentValues', {\n            date: get(this, 'record.date'),\n            userid: get(this, 'record.user.id'),\n        });\n\n        if (!get(this, 'record.user.id') || !get(this, 'record.date')) {\n            set(this, 'messageBox', null);\n            return;\n        }\n\n        const params = { user: get(this, 'record.user.id'), date: get(this, 'record.date') };\n        if (get(this, 'record.id')) {\n            params.id = '!' + get(this, 'record.id');\n        }\n        return this.store.query('worktask', params).then((tasks) => {\n            const filtered_tasks = tasks.filter((task) => {\n                return get(task, 'id') !== this.record_id;\n            });\n\n            let hours = 0;\n            filtered_tasks.forEach((task) => (hours += get(task, 'est_hours')));\n\n            const minutes = Math.round((hours - Math.floor(hours)) * 60);\n            const formatted_hours =\n                Math.floor(hours) + ':' + (minutes < 10 ? '0' : '') + minutes + 'h';\n\n            if (get(filtered_tasks, 'length') > 0) {\n                const message = this.intl.t('worktask.worktasks_found', {\n                    count: get(filtered_tasks, 'length'),\n                    hours: formatted_hours,\n                });\n\n                return set(this, 'messageBox', message);\n            } else {\n                return set(this, 'messageBox', null);\n            }\n        });\n    },\n});\n\nexport default CollectorAddModalWorktaskComponent;\n","/*eslint-disable ember/named-functions-in-promises */\nimport collector from '../../../../classes/collector';\nimport recordComp from '../../record-comp/component';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nconst CollectorAddModalWorktimeComponent = recordComp.extend({\n    Collector: service('collector-service'),\n    dialogs: service(),\n    router: service(),\n    flags: service(),\n    intl: service(),\n    store: service(),\n    ttapi: service(),\n    session: service(),\n\n    init() {\n        this._super();\n        const fields = collector.getFormObjects('worktime');\n        if (\n            !fields.starttime.features.hide &&\n            !fields.endtime.features.hide &&\n            !fields.work_hours.features.mandatory\n        ) {\n            fields.starttime.features.default_value = '07:00';\n            fields.endtime.features.default_value = moment().format('HH:mm');\n            fields.date.features.default_value = moment().format('YYYY-MM-DD');\n        }\n\n        if (fields.starttime.features.hide && fields.endtime.features.hide) {\n            return (fields.date.features.default_value = moment().format('YYYY-MM-DD'));\n        }\n    },\n\n    actions: {\n        afterSave(settings, row) {\n            // save worktime adding to ttapi\n            this.ttapi.request('/worktimeAdded', {\n                method: 'post',\n                data: {\n                    username: get(row, 'user.username'),\n                    userid: get(row, 'user.id'),\n                    starttime: get(row, 'starttime'),\n                    date: get(row, 'date'),\n                },\n            });\n\n            // Alert for missing orientation or outdated pass\n            if (\n                this.Collector.testNeedsOne('modules.orientations') &&\n                get(this, 'session.currentUser.userlevel') === '1' &&\n                !get(this, 'session.currentUser.no_orientation')\n            ) {\n                const project = get(row, 'project.id');\n                if (this.Collector.testNeedsOne('products.rakentajanpaketti')) {\n                    if (\n                        get(row, 'project.proj_type') === '2' ||\n                        get(row, 'project.proj_type') === null\n                    ) {\n                        return;\n                    }\n                }\n                const user = get(row, 'user.id');\n                return this.store\n                    .query('orientation', { ori_site: project, ori_user: user, limit: 1 })\n                    .then((data) => {\n                        if (\n                            this.Collector.testNeedsOne('products.orientations_self') &&\n                            get(data, 'meta.count') === 0\n                        ) {\n                            return this.dialogs\n                                .alert(\n                                    this.intl.t('worktime.after_save.orientation.self_orientation'),\n                                )\n                                .then(() => {\n                                    return this.router.transitionTo(\n                                        'orientations.own-orientation',\n                                        get(row, 'project.id'),\n                                    );\n                                });\n                        } else if (get(data, 'meta.count') === 0) {\n                            if (this.flags.test('disable-worktime-orientations-missing-warning')) {\n                                return;\n                            }\n\n                            return this.dialogs.alert(\n                                this.intl.t('worktime.after_save.orientation.not_found'),\n                            );\n                        } else if (\n                            get(data, 'firstObject.pass_end') &&\n                            moment().isAfter(moment(get(data, 'firstObject.pass_end')))\n                        ) {\n                            return this.dialogs.alert(\n                                this.intl.t('worktime.after_save.orientation.outdated'),\n                            );\n                        }\n                    });\n            }\n        },\n    },\n});\n\nexport default CollectorAddModalWorktimeComponent;\n","export default Ember.HTMLBars.template({\"id\":\"e4mlkhdh\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"field\\\"],\\\"statements\\\":[[5,\\\"dump-dev\\\",[],[[\\\"@text\\\"],[\\\"add-modal/worktime\\\"]]],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"record-comp-content\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"messageBox\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning modal-message-box\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[22,\\\"messageBox\\\"],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"showFields\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-container\\\",[[23,2,[]]],[[\\\"change\\\",\\\"model\\\"],[\\\"setValue\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"stashed_fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"stashed-fields\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"show-stashed-link\\\"],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_stashed_fields\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"general.add.hide_stashed\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"general.add.show_stashed\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"glyphicon \\\",[28,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]],\\\"glyphicon-chevron-up\\\",\\\"glyphicon-chevron-down\\\"],null],\\\" \\\"]]],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"panel panel-default \\\",[28,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]],\\\"show-stashed-div\\\",\\\"hide-stashed-div\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"stashed_fields\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"collector/field-container\\\",[[23,1,[]]],[[\\\"change\\\",\\\"model\\\"],[\\\"setValue\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"validationMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"error-message\\\",null,[[\\\"error\\\"],[[24,[\\\"validationMessage\\\"]]]]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row record-comp-buttons\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\",\\\"form\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]],\\\"worktime\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[12,\\\"data-anchor\\\",\\\"worktime-cancel-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/add-modal/worktime/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/custom-filters-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorCustomFiltersCompComponent;\n\nimport Ember from 'ember';\n\nimport filterComp from '../filters-comp/component';\n\nCollectorCustomFiltersCompComponent = filterComp.extend({\n    _filters: Em.computed('filters', function () {\n        var filters, types;\n        types = this.get('filters').split(',');\n        filters = Em.A([]);\n        $.each(types, (key, item) => {\n            var filter;\n            filter = item.split('.');\n            if (!this.get('form')) {\n                this.set('form', filter[0]);\n            }\n            return filters.pushObject(this.getFilterObject(filter[1], filter[0]));\n        });\n        return filters;\n    }),\n});\n\nexport default CollectorCustomFiltersCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"TGKs9+h9\",\"block\":\"{\\\"symbols\\\":[\\\"filter\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"_filters\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"date\\\",[23,1,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6 col-lg-4\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"date-range-picker\\\",null,[[\\\"autoApply\\\",\\\"ranges\\\",\\\"opens\\\",\\\"start\\\",\\\"end\\\",\\\"value\\\"],[true,false,\\\"right\\\",[23,1,[\\\"start\\\"]],[23,1,[\\\"end\\\"]],[23,1,[\\\"value\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6 col-lg-4\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,1,[]]],[[\\\"change\\\"],[\\\"valueChanged\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/custom-filters-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\n\n/*\n\n    Render any field found from forms\n\n    Usage:\n\n        1) Give form and field directly as string\n\n            ie. {{collector/field-comp \"worktime.user\" change=\"valueChanged\"}}\n\n        2) Give field as object field = {form: <form>, name: <name of the field>, type: <type of field>}\n\n            ie. {{collector/field-comp field change=\"valueChanged\"}}\n\n    Changes are sent back with \"change\" action. You need to define what you want to\n    do when action is triggered.\n\n        ie.  {{collector/field-comp ... change=\"doSomething\"}}\n\n*/\nvar CollectorFieldCompComponent;\n\nimport Ember from 'ember';\n\nCollectorFieldCompComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    flags: Ember.inject.service(),\n    currentValue: null,\n    validated: Em.computed.lt('errors.length', 1),\n    //    console.log \"validated\", @get('errors'), @get('errors.length')\n    //    @get('errors.length') < 1\n    _class: null,\n    __class: Ember.computed('_class', 'fieldComponent', function () {\n        return this.get('_class').replace('form-control', 'power-select-dropdown');\n    }),\n    _field: Ember.computed('field', function () {\n        var c, field, initValue, options, ret, subFields, subForm;\n        field = this.get('field');\n        initValue = this.get('value');\n        if (typeof field === 'string') {\n            c = this.get('Collector');\n            ret = c.field(field.split('.')[0], field.split('.')[1]);\n        } else {\n            ret = field;\n        }\n        if (this.get('useAsFilter') && ret.type === 'databasearray') {\n            options = this.get('Collector').field(ret.form, ret.field).options;\n            subForm = Ember.get(options, 'form');\n            subFields = Ember.get(options, 'fields');\n            if (subForm != null && subFields != null) {\n                this.set('originalFieldName', Ember.get(ret, 'field'));\n                if (ret.field === 'involved') {\n                    ret = this.get('Collector').field(ret.form, 'user');\n                } else {\n                    ret = this.get('Collector').field(subForm, subFields[0]);\n                }\n            }\n        }\n        if (initValue) {\n            ret.value = initValue;\n        }\n        if (this.get('prompt')) {\n            ret.prompt = this.get('prompt');\n        }\n        return ret;\n    }),\n    _useForcedProjectField: function () {\n        var ref;\n        if (!this.get('Collector').testNeeds(['userlevel=1'])) {\n            return false;\n        }\n        if (this.get('_field.skipForcedGPS')) {\n            return false;\n        }\n        return (\n            this.get('Collector').fieldExists('project', 'force_location') &&\n            ((ref = this.get('_field.form')) === 'worktime' || ref === 'presence') &&\n            !this.get('useAsFilter')\n        );\n    },\n    // Hey you! When you add support to new fields, check also nfc-component, there is a list of not supported field types\n    fieldComponent: Ember.computed('_field.external_type', 'forcetype', function () {\n        if (this.get('forcetype')) {\n            return 'collector/fields/' + this.get('forcetype');\n        }\n        if (!this.get('_field')) {\n            Ember.assert('Collector field component had empty field', {\n                id: 'collector.empty-field',\n            });\n        }\n        switch (this.get('_field.type')) {\n            case 'textbox':\n                return 'collector/fields/text-field';\n            case 'number':\n            case 'price':\n                if (\n                    this.get('_field.name') === 'km' &&\n                    this.get('Collector').testNeedsOne('products.timetracker_km_automatic')\n                ) {\n                    return 'collector/fields/gps-auto-km';\n                } else {\n                    return 'collector/fields/number-field';\n                }\n                break;\n            case 'dropdown_values':\n            case 'dropdown_options':\n                return 'collector/fields/dropdown-field';\n            case 'dropdown_userlevel':\n                return 'collector/fields/dropdown-userlevel-field';\n            case 'database':\n                if (\n                    this.get('_field.options.form') === 'project' &&\n                    this._useForcedProjectField()\n                ) {\n                    return 'collector/fields/database-gps-force-field';\n                }\n                if (\n                    (this.get('flags').test('power-database') || this.get('usePowerDropdown')) &&\n                    !this.get('useAsFilter')\n                ) {\n                    return 'collector/fields/power-database';\n                } else {\n                    return 'collector/fields/database-field';\n                }\n                break;\n            case 'multiselect':\n                if (this.get('useAsFilter')) {\n                    return 'collector/fields/database-field';\n                } else {\n                    return 'collector/fields/multiselect-field';\n                }\n                break;\n            case 'status':\n                return 'collector/fields/status-field';\n            case 'textarea':\n            case 'textarea_varchar':\n                return 'collector/fields/textarea-field';\n            case 'time_new':\n                return 'collector/fields/time-field';\n            case 'date':\n                return 'collector/fields/date-field';\n            case 'username':\n                return 'collector/fields/username-field';\n            case 'password':\n                return 'collector/fields/password-field';\n            case 'hdfile':\n                return 'collector/fields/fileupload-field-ver3';\n            case 'checkbox':\n                return 'collector/fields/checkbox-field';\n            case 'month_dropdown':\n                return 'collector/fields/month_dropdown-field';\n            case 'search':\n                return 'collector/fields/search-field';\n            case 'signature':\n                return 'collector/fields/signature-field';\n            case 'minutes':\n                return 'collector/fields/number-field';\n            case 'gpslocation':\n                return 'collector/fields/gps-field';\n            case 'price':\n                return 'collector/fields/number-field';\n            case 'big_price':\n                return 'collector/fields/number-field';\n            case 'decimal':\n                return 'collector/fields/number-field';\n            case 'radio':\n                return 'collector/fields/radio-field';\n            case 'label':\n                return 'collector/fields/label-field';\n            case 'databasearray':\n                if (this.get('_field.options.form') === 'user') {\n                    return 'collector/fields/databasearray-field';\n                } else {\n                    return 'collector/fields/databasearray-adder-field';\n                }\n                break;\n            case 'dropdown_country':\n                return 'collector/fields/dropdown-country-field';\n            case 'checkboxgroup':\n                return 'collector/fields/checkboxgroup-field';\n            case 'hours-and-minutes':\n            case 'hours':\n                return 'collector/fields/hours-and-minutes-field';\n            case 'timeclean_imei':\n                return 'collector/fields/timeclean-field';\n            case 'weather':\n                return 'collector/fields/weather-field';\n            case 'timerlink':\n                return 'collector/fields/timerlink-field';\n            case 'datetime':\n                return 'collector/fields/datetime-field';\n            case 'work_permit_attachment':\n                    return 'collector/fields/work-permit-attachment';\n            default:\n                return null;\n        }\n    }),\n    observeValidationState: Em.observer('errors.length', function () {\n        return this.sendAction(\n            'change',\n            this.get('currentValue'),\n            this.get('_field.name'),\n            this.get('validated'),\n        );\n    }),\n    validateField: function (fieldName) {\n        return this.get('model').validate([fieldName]);\n    },\n    setModelAndValidate: function (value, wait) {\n        var fieldName, model;\n        model = this.get('model');\n        if (!model) {\n            return;\n        }\n        if (model.get('isDeleted')) {\n            return;\n        }\n        fieldName = this.get('_field.name');\n        model.set(fieldName, value);\n        // if we want to wait x milliseconds before validating\n        if (wait) {\n            return Ember.run.debounce(this, this.validateField, fieldName, 700);\n        } else {\n            return this.validateField(fieldName);\n        }\n    },\n    didReceiveAttrs: function () {\n        var def;\n        if (!this.get('_class')) {\n            def =\n                this.get('fieldComponent') === 'collector/fields/power-database'\n                    ? 'power-select-dropdown'\n                    : 'form-control';\n            return this.set('_class', this.get('class') || def);\n        }\n    },\n    actions: {\n        bubbleChange: function (\n            value,\n            fieldName,\n            setModel = true,\n            setComponent = true,\n            wait = false,\n        ) {\n            if (setModel) {\n                this.setModelAndValidate(value, wait);\n            }\n            if (this.get('originalFieldName')) {\n                fieldName = this.get('originalFieldName');\n            }\n            // a little hack for extra-filters search-field\n            // (do not set currentValue because field doesn't exist anymore)\n            if (setComponent) {\n                this.set('currentValue', value);\n            }\n            return this.sendAction('change', value, fieldName, setModel);\n        },\n        createNew: function () {\n            return this.createNew();\n        },\n    },\n});\n\nCollectorFieldCompComponent.reopenClass({\n    positionalParams: ['field'],\n});\n\nexport default CollectorFieldCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"F4+xJceS\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"fieldComponent\\\"]],\\\"collector/fields/power-database\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"component\\\",[\\\"collector/fields/power-database\\\"],[[\\\"field\\\",\\\"_class\\\",\\\"prompt\\\",\\\"_value\\\",\\\"filter\\\",\\\"onchange\\\",\\\"model\\\",\\\"showCreate\\\",\\\"createLabel\\\",\\\"createNew\\\"],[[24,[\\\"_field\\\"]],[24,[\\\"__class\\\"]],[24,[\\\"prompt\\\"]],[24,[\\\"value\\\"]],[24,[\\\"filter\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"bubbleChange\\\"],null],[24,[\\\"model\\\"]],[24,[\\\"showCreate\\\"]],[24,[\\\"createLabel\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"createNew\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"fieldComponent\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"component\\\",[[24,[\\\"fieldComponent\\\"]]],[[\\\"field\\\",\\\"_class\\\",\\\"bubbleChange\\\",\\\"model\\\",\\\"useAsFilter\\\",\\\"showEmptySelection\\\",\\\"filter\\\"],[[24,[\\\"_field\\\"]],[24,[\\\"_class\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"bubbleChange\\\"],null],[24,[\\\"model\\\"]],[24,[\\\"useAsFilter\\\"]],[24,[\\\"showEmptySelection\\\"]],[24,[\\\"filter\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"field\\\",\\\"type\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"field.not_supported\\\"],[[\\\"fieldtype\\\"],[[24,[\\\"field\\\",\\\"type\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-container/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldContainerComponent;\n\nimport Ember from 'ember';\n\nimport { isArray } from '@ember/array';\n\nimport { computed } from '@ember/object';\n\nimport validator from 'tt4/classes/validations';\n\nCollectorFieldContainerComponent = Ember.Component.extend({\n    errors: Em.computed('model.errors', 'model.errors.[]', function () {\n        return this.get('model.errors.' + this.get('_field.name'));\n    }),\n    hasErrors: Em.computed.gt('errors.length', 0),\n    fieldLabel: Em.computed.oneWay('_field.translated_name'),\n    firstError: Em.computed('errors.[]', function () {\n        return this.get('errors.firstObject');\n    }),\n    init: function () {\n        this._super();\n        if (isArray(this.get('field.features.mandatory'))) {\n            return this.get('field.features.mandatory').forEach((item) => {\n                var i, k, results;\n                results = [];\n                for (k in item) {\n                    i = item[k];\n                    results.push(\n                        Ember.defineProperty(\n                            this,\n                            'mandatoryObservable',\n                            Ember.computed.alias('model.' + k),\n                        ),\n                    );\n                }\n                return results;\n            });\n        }\n    },\n    isMandatory: computed('field', 'mandatoryObservable', function () {\n        if (\n            this.get('field.features.mandatory') &&\n            !isArray(this.get('field.features.mandatory'))\n        ) {\n            return true;\n        } else if (isArray(this.get('field.features.mandatory')) && this.get('model')) {\n            return validator._is_visible(this.get('model'), this.get('field.features.mandatory'));\n        }\n        return false;\n    }),\n    actions: {\n        change: function (value, fieldName, validated) {\n            if (!fieldName) {\n                fieldName = this.get('_field.name');\n            }\n            return this.sendAction('change', value, fieldName, validated);\n        },\n    },\n    _field: Ember.computed('field', function () {\n        var c, field;\n        field = this.get('field');\n        if (typeof field === 'string') {\n            c = this.get('Collector');\n            return c.field(field.split('.')[0], field.split('.')[1]);\n        } else {\n            return field;\n        }\n    }),\n});\n\nCollectorFieldContainerComponent.reopenClass({\n    positionalParams: ['field'],\n});\n\nexport default CollectorFieldContainerComponent;\n","export default Ember.HTMLBars.template({\"id\":\"Cspbb1id\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"hasErrors\\\"]],\\\"has-error has-feedback\\\"],null]]]],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[\\\"field-\\\",[23,0,[\\\"field\\\",\\\"name\\\"]]],null]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[22,\\\"fieldLabel\\\"],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"field\\\",\\\"info\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"field-info-bubble\\\",[],[[\\\"@text\\\"],[[24,[\\\"field\\\",\\\"info\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"isMandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"firstError\\\",\\\"message\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[25,1]],null,{\\\"statements\\\":[[0,\\\"         \\\"],[14,1,[[23,0,[]],[24,[\\\"field\\\"]],[24,[\\\"model\\\"]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"field\\\"]]],[[\\\"_class\\\",\\\"usePowerDropdown\\\",\\\"filter\\\",\\\"change\\\",\\\"model\\\"],[\\\"form-control add-fields\\\",[24,[\\\"usePowerDropdown\\\"]],[24,[\\\"filter\\\"]],\\\"change\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-container/template.hbs\"}});","import { getProperties, get, set } from '@ember/object';\nimport { isPresent } from '@ember/utils';\nimport Component from '@ember/component';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    intl: service(),\n    Collector: service('collector-service'),\n    notifications: service(),\n    customerSettings: service(),\n    gps: service(),\n    didReceiveAttrs() {\n        const worktimegroup = get(this, 'worktimegroup');\n        let coordsString = null;\n\n        if (isPresent(worktimegroup)) {\n            coordsString = get(this, 'customerSettings').checkSetting(\n                `autokm_address_${worktimegroup}`,\n            );\n        } else {\n            coordsString = get(this, 'customerSettings').checkSetting(`autokm_address`);\n        }\n        if (coordsString) {\n            set(this, 'active', true);\n            const coords = JSON.parse(coordsString);\n\n            if (coords.no_back_forth) {\n                set(this, 'backForthActive', false);\n            } else {\n                set(this, 'backForthActive', true);\n            }\n\n            get(this, 'gps')\n                .GetLocationByLatLng({ lat: coords.latitude, lng: coords.longitude })\n                .then((resp) => this._setAddress(resp));\n        }\n    },\n\n    actions: {\n        saveSetting() {\n            const full_address = getProperties(this, 'address', 'postal', 'city');\n            const gps = get(this, 'gps');\n            gps.GetLocationByAddress(Object.values(full_address).join(' ')).then((resp) =>\n                this._saveSettings(resp),\n            );\n        },\n        checkboxChanged() {\n            this.toggleProperty('active');\n            const checked = get(this, 'active');\n            if (!checked) {\n                let settingstr = 'autokm_address';\n                if (isPresent(get(this, 'worktimegroup'))) {\n                    settingstr += `_${get(this, 'worktimegroup')}`;\n                }\n                get(this, 'customerSettings').setSetting(settingstr, 'off');\n                get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n                    autoClear: true,\n                });\n            }\n        },\n        checkboxChangedBackForth() {\n            this.toggleProperty('backForthActive');\n            const checked = get(this, 'backForthActive');\n            var setting = get(this, 'customerSettings').checkSetting('autokm_address');\n            var settingObj = JSON.parse(setting);\n            let settingstr = 'autokm_address';\n            if (isPresent(get(this, 'worktimegroup'))) {\n                settingstr += `_${get(this, 'worktimegroup')}`;\n            }\n            let promise = null;\n            if (!checked) {\n                settingObj.no_back_forth = true;\n                promise = get(this, 'customerSettings').setSetting(\n                    settingstr,\n                    JSON.stringify(settingObj),\n                );\n            } else {\n                delete settingObj.no_back_forth;\n                promise = get(this, 'customerSettings').setSetting(\n                    settingstr,\n                    JSON.stringify(settingObj),\n                );\n            }\n            promise.then(() => {\n                get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n                    autoClear: true,\n                });\n            });\n        },\n    },\n\n    _setAddress(resp) {\n        const split1 = resp.split(', ');\n        const split2 = split1[1].split(' ');\n        set(this, 'address', split1[0]);\n        set(this, 'postal', split2[0]);\n        set(this, 'city', split2[1]);\n    },\n\n    _saveSettings(resp) {\n        if (!resp.error) {\n            let settingstr = 'autokm_address';\n            if (isPresent(get(this, 'worktimegroup'))) {\n                settingstr += `_${get(this, 'worktimegroup')}`;\n            }\n            if (!get(this, 'backForthActive')) {\n                resp.no_back_forth = true;\n            }\n            get(this, 'customerSettings')\n                .setSetting(settingstr, JSON.stringify(resp))\n                .then(() => this._successNotification());\n        } else {\n            get(this, 'notifications').error(get(this, 'intl').t('settings.autokm.address_error'), {\n                autoClear: true,\n            });\n        }\n    },\n\n    _successNotification() {\n        get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n            autoClear: true,\n        });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"YCJ+S+x2\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"change\\\"],[\\\"checkbox\\\",[24,[\\\"active\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"checkboxChanged\\\"],null]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"settings.autokm.activate_address_only\\\"],null],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"standard-icon-popover\\\",null,[[\\\"icon\\\",\\\"text\\\"],[\\\"info\\\",[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"settings.autokm.activate_address.desc\\\"],null]],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"active\\\"]]],null,{\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"change\\\"],[\\\"checkbox\\\",[24,[\\\"backForthActive\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"checkboxChangedBackForth\\\"],null]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"settings.autokm.activate_back_and_forth\\\"],null],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"standard-icon-popover\\\",null,[[\\\"icon\\\",\\\"text\\\"],[\\\"info\\\",[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"settings.autokm.activate_back_and_forth.desc\\\"],null]],null]]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.address.street\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"address\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.address.postal\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"number\\\",[24,[\\\"postal\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.address.city\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"city\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/autokm-setting/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-setting-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldSettingCompComponent;\n\nimport Ember from 'ember';\n\nCollectorFieldSettingCompComponent = Ember.Component.extend({\n    store: Em.inject.service(),\n    intl: Em.inject.service(),\n    notifications: Ember.inject.service(),\n    date_interval_setting: Ember.computed.equal('configs.setting.name', 'date_interval'),\n    showSaveButton: Ember.computed(\n        'setting.value',\n        'setting.hasDirtyAttributes',\n        'date_interval_future',\n        function () {\n            if (\n                this.get('setting.value') >= 0 &&\n                (this.get('setting.hasDirtyAttributes') || this.get('date_interval_future'))\n            ) {\n                return true;\n            }\n            return false;\n        },\n    ),\n    didReceiveAttrs: function () {\n        var configs;\n        this._super();\n        configs = this.get('configs');\n        return this.get('store')\n            .findAll('form', {\n                reload: true,\n            })\n            .then((forms) => {\n                var arr, field, form, setting;\n                form = forms.filterBy('external_type', configs.form);\n                field = form.get('firstObject.fields').filterBy('external_type', configs.field);\n                setting = field.get('firstObject.settings').filterBy('name', configs.setting.name);\n                setting.get('firstObject').rollbackAttributes(); // revert all possible changes\n                if (setting.get('firstObject')) {\n                    this.set('setting', setting.get('firstObject'));\n                } else {\n                    configs.setting.field = field.get('firstObject');\n                    this.set(\n                        'setting',\n                        this.get('store').createRecord('form-field-setting', configs.setting),\n                    );\n                }\n                if (this.get('setting').get('name') === 'date_interval') {\n                    if (this.get('setting').get('value').split(',').length > 1) {\n                        arr = this.get('setting').get('value').split(',');\n                        this.get('setting').set('value', arr[0]);\n                        this.set('date_interval_future', arr[1]);\n                        if (arr[1]) {\n                            this.set('date_interval_future_check', true);\n                        }\n                    }\n                    if (this.get('setting').get('value') === 'locked') {\n                        return this.get('setting').set('value', 1);\n                    }\n                }\n            });\n    },\n    description: Em.computed('configs', function () {\n        var string;\n        string = `settings.${this.get('configs.form')}.${this.get('configs.field')}.${this.get('configs.setting')}`;\n        if (\n            this.get('intl').exists(\n                `settings.${this.get('configs.form')}.${this.get('configs.field')}.${this.get('configs.setting')}`,\n            )\n        ) {\n            return this.get('intl').t(\n                `settings.${this.get('configs.form')}.${this.get('configs.field')}.${this.get('configs.setting')}`,\n            );\n        }\n    }),\n    actions: {\n        save: function () {\n            var old_value, setting, tmp_value, val;\n            setting = this.get('setting');\n            if (setting.get('value')) {\n                old_value = setting.get('value');\n                tmp_value = setting.get('value');\n                if (this.get('configs').setting.name === 'date_interval') {\n                    if (setting.get('value') === '0' || setting.get('value') === '1') {\n                        tmp_value = 'locked';\n                    }\n                    if (\n                        this.get('date_interval_future') &&\n                        this.get('date_interval_future_check')\n                    ) {\n                        val = Math.abs(this.get('date_interval_future'));\n                        tmp_value += ',' + val;\n                    }\n                }\n                setting.set('value', tmp_value);\n                return setting.save().then(() => {\n                    setting.set('value', old_value);\n                    return this.get('notifications').success(this.get('intl').t('general.saved'), {\n                        autoClear: true,\n                    });\n                });\n            }\n        },\n    },\n});\n\nexport default CollectorFieldSettingCompComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-setting-comp/number-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldSettingCompNumberFieldComponent;\n\nimport Ember from 'ember';\n\nCollectorFieldSettingCompNumberFieldComponent = Ember.Component.extend({\n    customerSettings: Ember.inject.service(),\n    value: Em.computed(function () {\n        return (\n            this.get('customerSettings').checkSetting(this.get('configs.setting')) ||\n            this.get('configs.defaultVal')\n        );\n    }),\n    actions: {\n        save: function (value) {\n            this.get('customerSettings').setSetting(this.get('configs.setting'), value);\n            return this.sendAction('settingSaved');\n        },\n        validateInput: function () {\n            if (this.get('configs.value') < this.get('configs.minVal')) {\n                return this.set('configs.value', this.get('configs.minVal'));\n            }\n        },\n    },\n});\n\nexport default CollectorFieldSettingCompNumberFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"gfq/0G/g\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"min\\\",\\\"keyUp\\\"],[\\\"number\\\",[24,[\\\"value\\\"]],\\\"form-control add-fields\\\",[24,[\\\"configs\\\",\\\"minVal\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validateInput\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"configs\\\",\\\"unit\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"input-group-addon add-fields\\\"],[10,\\\"style\\\",\\\"margin-right: 3px\\\"],[8],[1,[24,[\\\"configs\\\",\\\"unit\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-btn\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"value\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/number-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-setting-comp/overtime-setting/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldSettingCompOvertimeSettingComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nimport config from '../../../../config/environment';\n\nCollectorFieldSettingCompOvertimeSettingComponent = Ember.Component.extend({\n    Collector: Em.inject.service('collector-service'),\n    session: Em.inject.service(),\n    store: Em.inject.service(),\n    intl: Em.inject.service(),\n    initapp: Em.inject.service(),\n    servicehandler: Em.inject.service(),\n    tools: Em.inject.service(),\n    notifications: Em.inject.service(),\n    //startdate: Em.computed ->\n    //    moment().format('YYYY-MM-DD')\n    fieldsToBeRemoved: [],\n    salarytypes: Em.computed(function () {\n        var fields;\n        fields = [];\n        if (\n            this.get('Collector').testNeeds(['products.salarytype||products.selectablesalarytype'])\n        ) {\n            return this.get('store')\n                .query('salarytype', {\n                    type: '(empty)',\n                })\n                .then((salarytypes) => {\n                    //console.log salarytypes\n                    salarytypes.forEach((stype) => {\n                        if (stype.get('id')) {\n                            return fields.push({\n                                id: stype.get('id'),\n                                text: stype.get('name'),\n                            });\n                        }\n                    });\n                    return fields;\n                });\n        } else {\n            return fields;\n        }\n    }),\n    init: function () {\n        var _overtime_types;\n        this._super(...arguments);\n        _overtime_types = Ember.Object.create({\n            daily_overtime: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.daily_overtime',\n                in_use: false,\n                settings: {\n                    _50start: 8,\n                    _100start: 10,\n                },\n                product: 'overtime_daily',\n                rule_creator: function (settings) {\n                    return [\n                        {\n                            name: '_50',\n                            values: {\n                                from: settings._50start,\n                                to: settings._100start,\n                            },\n                        },\n                        {\n                            name: '_100',\n                            values: {\n                                from: settings._100start,\n                            },\n                        },\n                    ];\n                },\n                rule_parser: function (rules) {\n                    return {\n                        _50start: '_50.values.from',\n                        _100start: '_100.values.from',\n                    };\n                },\n            },\n            weekly_overtime: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.weekly_overtime',\n                in_use: false,\n                settings: {\n                    _week50start: 0,\n                    _week100start: 8,\n                },\n                product: 'overtime_weekly',\n                rule_creator: function (settings) {\n                    return [\n                        {\n                            name: '_week50',\n                            values: {\n                                from: settings._week50start,\n                                to: settings._week100start,\n                            },\n                        },\n                        {\n                            name: '_week100',\n                            values: {\n                                from: settings._week100start,\n                            },\n                        },\n                    ];\n                },\n                rule_parser: function (rules) {\n                    return {\n                        _week50start: '_week50.values.from',\n                        _week100start: '_week100.values.from',\n                    };\n                },\n            },\n            extrahours_overtime: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.extrahours',\n                in_use: false,\n                settings: {\n                    _extrahours_start: 7.5,\n                    _extrahours_end: 8,\n                },\n                product: 'overtime_extrahours',\n                rule_creator: function (settings) {\n                    return [\n                        {\n                            name: '_extrahours',\n                            values: {\n                                from: settings._extrahours_start,\n                                to: settings._extrahours_end,\n                            },\n                        },\n                    ];\n                },\n                rule_parser: function (rules) {\n                    return {\n                        _extrahours_start: '_extrahours.values.from',\n                        _extrahours_end: '_extrahours.values.to',\n                    };\n                },\n            },\n            time_based: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.time_based',\n                in_use: false,\n                settings: {\n                    _evening_start: '16:00',\n                    _evening_end: '21:00',\n                    _night_start: '21:00',\n                    _night_end: '06:00',\n                },\n                product: 'overtime_time_based',\n                rule_creator: function (settings) {\n                    return [\n                        {\n                            name: '_evening',\n                            values: {\n                                from: settings._evening_start,\n                                to: settings._evening_end,\n                                do_not_calculate_if_overtime: settings._evening_checked,\n                                calculate_compensations_always:\n                                    settings._calculate_compensations_always,\n                            },\n                        },\n                        {\n                            name: '_night',\n                            values: {\n                                from: settings._night_start,\n                                to: settings._night_end,\n                                do_not_calculate_if_overtime: settings._night_checked,\n                                calculate_compensations_always:\n                                    settings._calculate_compensations_always,\n                            },\n                        },\n                    ];\n                },\n                rule_parser: function () {\n                    return {\n                        _evening_start: '_evening.values.from',\n                        _evening_end: '_evening.values.to',\n                        _evening_checked: '_evening.values.do_not_calculate_if_overtime',\n                        _night_start: '_night.values.from',\n                        _night_end: '_night.values.to',\n                        _night_checked: '_night.values.do_not_calculate_if_overtime',\n                        _calculate_compensations_always:\n                            '_night.values.calculate_compensations_always',\n                    };\n                },\n            },\n            time_based_se: {\n                needs: ['serviceCountry@se'],\n                name: 'overtime.time_based',\n                in_use: false,\n                settings: {},\n                product: 'overtime_time_based_se',\n                alwaysOn: true,\n                rule_creator: function (settings) {\n                    return [];\n                },\n                rule_parser: function () {\n                    return {};\n                },\n            },\n            overtime_splitted: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.split_overtimehours',\n                in_use: false,\n                settings: {},\n                product: 'overtime_splitted',\n                rule_creator: function (settings) {\n                    return [\n                        {\n                            name: '_overtimehours',\n                            values: {},\n                        },\n                        {\n                            name: '_basichours',\n                            values: {},\n                        },\n                    ];\n                },\n                rule_parser: function () {\n                    return {};\n                },\n            },\n        });\n        this.set('_overtime_types', _overtime_types);\n        return this.set('days', [\n            {\n                id: 'mo',\n                name: this.get('intl').t('workday.calendar.week.monday'),\n            },\n            {\n                id: 'tu',\n                name: this.get('intl').t('workday.calendar.week.tuesday'),\n            },\n            {\n                id: 'we',\n                name: this.get('intl').t('workday.calendar.week.wednesday'),\n            },\n            {\n                id: 'th',\n                name: this.get('intl').t('workday.calendar.week.thursday'),\n            },\n            {\n                id: 'fr',\n                name: this.get('intl').t('workday.calendar.week.friday'),\n            },\n            {\n                id: 'sa',\n                name: this.get('intl').t('workday.calendar.week.saturday'),\n            },\n            {\n                id: 'su',\n                name: this.get('intl').t('workday.calendar.week.sunday'),\n            },\n        ]);\n    },\n    // filter all the overtime_types with needs\n    overtime_types: Ember.computed('worktimegroup', function () {\n        var keys, ret, types;\n        types = this.get('_overtime_types');\n        keys = Object.keys(types);\n        ret = {};\n        keys.forEach((key) => {\n            // skip types that has needs but needs return false\n            if (types[key].needs && !this.get('Collector').testNeeds(types[key].needs)) {\n                return;\n            }\n            // all the other types goes to ret\n            return (ret[key] = types[key]);\n        });\n        return Ember.Object.create(ret);\n    }),\n    fields: Ember.computed(function () {\n        return this.get('Collector')\n            .fieldArray('worktime')\n            .filterBy('type', 'hours')\n            .rejectBy('name', 'work_hours');\n    }),\n    didReceiveAttrs: function () {\n        if (this.get('customrules')) {\n            return this.setRules(this.parseIfString(this.get('customrules')));\n        } else {\n            return this.getGeneralRules();\n        }\n    },\n    parseIfString: function (mixed) {\n        if (Ember.typeOf(mixed) === 'string') {\n            return JSON.parse(mixed);\n        }\n        return mixed;\n    },\n    getGeneralRules: function () {\n        var data;\n        data = {};\n        if (this.get('worktimegroup')) {\n            data.worktimegroup = this.get('worktimegroup');\n        }\n        return this.get('Collector')\n            .ttapi({\n                url: 'overtime/settings',\n                method: 'get',\n                data: data,\n            })\n            .then((rules) => {\n                var i, len, rule, search_rule, stypes, types_arr;\n                // get salarytypes\n                if (\n                    this.get('Collector').testNeeds([\n                        'products.salarytype||products.selectablesalarytype',\n                    ])\n                ) {\n                    search_rule = false;\n                    // check every compensation and overtime type and take first element that has salarytypes\n                    for (i = 0, len = rules.length; i < len; i++) {\n                        rule = rules[i];\n                        if (rule.values != null && rule.values.salarytypes) {\n                            search_rule = rule;\n                        }\n                    }\n                    if (search_rule) {\n                        types_arr = search_rule.values.salarytypes.split(',');\n                        stypes = [];\n                        this.get('store')\n                            .query('salarytype', {\n                                id: search_rule.values.salarytypes,\n                            })\n                            .then((salarytypes) => {\n                                return salarytypes.forEach((stype) => {\n                                    if (types_arr.indexOf(stype.get('id')) > -1) {\n                                        stypes.push({\n                                            id: stype.get('id'),\n                                            text: stype.get('name'),\n                                        });\n                                    }\n                                    return this.set('salarytype', stypes);\n                                });\n                            });\n                    } else {\n                        this.set('salarytype', null);\n                    }\n                }\n                return this.setRules(rules);\n            });\n    },\n    setRules: function (rules) {\n        var i, len, overtime_types, ref, type;\n        this.set('customTimeBased', Em.A([]));\n        this.set('customDayBased', Em.A([]));\n        overtime_types = this.get('overtime_types');\n        ref = Object.keys(overtime_types);\n        for (i = 0, len = ref.length; i < len; i++) {\n            type = ref[i];\n            if (overtime_types[type].alwaysOn === true) {\n                this.turnOn(type);\n            } else {\n                this.setValuesForOvertimeType(type, rules, overtime_types[type].rule_parser(rules));\n            }\n        }\n        this.getCustomFields('hoursbetween', rules);\n        return this.getCustomDayFields('custom_dayrule', rules);\n    },\n    getCustomFields: function (type, rules) {\n        return rules.filterBy('name', type).forEach((item) => {\n            return this.get('customTimeBased').pushObject({\n                name: Ember.get(item, 'field'),\n                text: Ember.get(item, 'text'),\n                start: Ember.get(item, 'values.from'),\n                end: Ember.get(item, 'values.to'),\n                checked:\n                    Ember.get(item, 'values.do_not_calculate_if_overtime') === void 0 ||\n                    Ember.get(item, 'values.do_not_calculate_if_overtime') === true\n                        ? true\n                        : false,\n            });\n        });\n    },\n    getCustomDayFields: function (type, rules) {\n        return rules.filterBy('name', type).forEach((item) => {\n            var daysArr;\n            daysArr = Ember.get(item, 'values.days').split('-');\n            return this.get('customDayBased').pushObject({\n                name: Ember.get(item, 'field'),\n                text: Ember.get(item, 'text'),\n                start: Ember.get(item, 'values.from'),\n                end: Ember.get(item, 'values.to'),\n                start_day: daysArr[0],\n                end_day: daysArr[1],\n            });\n        });\n    },\n    //checked: if Ember.get(item, 'values.do_not_calculate_if_overtime') == undefined || Ember.get(item, 'values.do_not_calculate_if_overtime') == true then true else false\n    setValuesForOvertimeType: function (type, rules, paths) {\n        var i, len, path, paths_splitted, results, rule, value, value_name, values;\n        values = Object.keys(paths);\n        rules.forEach((rule) => {\n            if (rule.name === '_basichours') {\n                return this.set('overtime_types.overtime_splitted.in_use', true);\n            } else {\n                return this.set('overtime_types.overtime_splitted.in_use', false);\n            }\n        });\n        results = [];\n        for (i = 0, len = values.length; i < len; i++) {\n            value_name = values[i];\n            paths_splitted = paths[value_name].split('.');\n            rule = rules.findBy('name', paths_splitted[0]);\n            if (!rule) {\n                this.turnOff(type);\n                continue;\n            }\n            path = paths_splitted.slice(1).join('.');\n            value = Ember.get(rule, path);\n            if (value || (!value && type === 'time_based')) {\n                this.turnOn(type);\n                results.push(this.set('overtime_types.' + type + '.settings.' + value_name, value));\n            } else {\n                results.push(void 0);\n            }\n        }\n        return results;\n    },\n    // special check for checkboxes (because old customers do not have these checkboxes saved)\n    //if value_name.indexOf(\"_checked\") >= 0 && value == undefined\n    //    @set 'overtime_types.' + type + '.settings.' + value_name, true\n    //else if value_name.indexOf(\"_checked\") >= 0 && value == false\n    //    @set 'overtime_types.' + type + '.settings.' + value_name, false\n\n    //_100start: Ember.get rules.findBy('name', '_100'), 'values.from'\n    turnOn: function (type) {\n        return this.set('overtime_types.' + type + '.in_use', true);\n    },\n    turnOff: function (type) {\n        return this.set('overtime_types.' + type + '.in_use', false);\n    },\n    updateNeededProducts: function (needed_products, unneeded_products) {\n        var c;\n        c = this.get('Collector');\n        needed_products.forEach((needed_product) => {\n            if (!c.testNeeds(['products.' + needed_product])) {\n                c.addProduct(needed_product);\n                return this.sendAction('refreshNeeded');\n            }\n        });\n        return unneeded_products.forEach((unneeded_product) => {\n            var worktimegroup;\n            if (c.testNeeds(['products.' + unneeded_product])) {\n                worktimegroup = this.get('worktimegroup') ? this.get('worktimegroup') : null;\n                c.removeProduct(unneeded_product, worktimegroup);\n                return this.sendAction('refreshNeeded');\n            }\n        });\n    },\n    searchFieldWithName: function (fields, name) {\n        var fieldKeys, found;\n        fieldKeys = Object.keys(fields);\n        found = null;\n        fieldKeys.forEach((key) => {\n            if (fields[key].name === name) {\n                return (found = key);\n            }\n        });\n        if (found) {\n            return found.split('.')[1];\n        } else {\n            return null;\n        }\n    },\n    onlyOneRuleForField: function (field, type) {\n        return this.get(type).findBy('name', field).length < 2;\n    },\n    actions: {\n        checkValues: function (value1, value2) {\n            if (value1.toString() === value2.toString()) {\n                return this.set('disabled', true);\n            } else {\n                return this.set('disabled', false);\n            }\n        },\n        moreInfo: function () {\n            return window.open(\n                config.APP.CDN_URL + '/documents/Ylity%C3%B6t+ja+lis%C3%A4t+asetukset.pdf',\n                '_blank',\n            );\n        },\n        addTimeBased: function () {\n            return this.get('customTimeBased').pushObject({});\n        },\n        addDayBased: function () {\n            return this.get('customDayBased').pushObject({});\n        },\n        removeCustomTimeBased: function (row) {\n            if (\n                Ember.get(row, 'name') &&\n                this.onlyOneRuleForField(Ember.get(row, 'name'), 'customTimeBased')\n            ) {\n                this.get('fieldsToBeRemoved').push(Ember.get(row, 'name'));\n            }\n            return this.get('customTimeBased').removeObject(row);\n        },\n        removeCustomDayBased: function (row) {\n            if (\n                Ember.get(row, 'name') &&\n                this.onlyOneRuleForField(Ember.get(row, 'name'), 'customDayBased')\n            ) {\n                this.get('fieldsToBeRemoved').push(Ember.get(row, 'name'));\n            }\n            return this.get('customDayBased').removeObject(row);\n        },\n        createAndSaveRules: function () {\n            var fields,\n                i,\n                j,\n                k,\n                len,\n                len1,\n                len2,\n                needed_products,\n                overtime_type,\n                overtime_types,\n                ref,\n                ref1,\n                rule,\n                rules,\n                type,\n                unneeded_products,\n                wt,\n                wtypes,\n                wtypesString;\n            //console.info \"types\",Object.keys(@get('overtime_types')), @get 'overtime_types'\n            rules = [];\n            needed_products = [];\n            unneeded_products = [];\n            overtime_types = this.get('overtime_types');\n            wtypes = [];\n            wtypesString = '';\n            if (this.get('salarytype')) {\n                ref = this.get('salarytype');\n                for (i = 0, len = ref.length; i < len; i++) {\n                    wt = ref[i];\n                    wtypes.push(wt.id);\n                }\n                wtypesString = wtypes.join();\n            }\n            ref1 = Object.keys(overtime_types);\n            for (j = 0, len1 = ref1.length; j < len1; j++) {\n                type = ref1[j];\n                overtime_type = overtime_types[type];\n                if (overtime_type.in_use) {\n                    rules.pushObjects(overtime_type.rule_creator(overtime_type.settings));\n                    needed_products.pushObject(overtime_type.product);\n                } else {\n                    unneeded_products.pushObject(overtime_type.product);\n                }\n            }\n            for (k = 0, len2 = rules.length; k < len2; k++) {\n                rule = rules[k];\n                rule['values']['salarytypes'] = wtypesString;\n            }\n            this.updateNeededProducts(needed_products, unneeded_products);\n            fields = {};\n            this.get('customTimeBased').forEach((row) => {\n                var field, sameField;\n                // if no name given add atleast something\n                if (!Ember.get(row, 'name') && !Ember.get(row, 'text')) {\n                    Ember.set(row, 'text', 'empty');\n                }\n                if (!Ember.get(row, 'name') && Ember.get(row, 'text')) {\n                    sameField = this.searchFieldWithName(fields, Ember.get(row, 'text'));\n                    if (sameField) {\n                        Ember.set(row, 'name', sameField);\n                    } else {\n                        Ember.set(\n                            row,\n                            'name',\n                            '_' + this.get('tools').computerizeHumanInput(Ember.get(row, 'text')),\n                        );\n                    }\n                }\n                field = Ember.get(row, 'name');\n                fields['worktime.' + field] = {\n                    type: 'hours',\n                    name: Ember.get(row, 'text'),\n                };\n                fields['worktime.' + field + '.@hide'] = 'true';\n                return rules.pushObject({\n                    name: 'hoursbetween',\n                    field: field,\n                    text: Ember.get(row, 'text'),\n                    values: {\n                        from: Ember.get(row, 'start'),\n                        to: Ember.get(row, 'end'),\n                        do_not_calculate_if_overtime:\n                            Ember.get(row, 'checked') === void 0\n                                ? 'false'\n                                : Ember.get(row, 'checked'),\n                    },\n                });\n            });\n            this.get('customDayBased').forEach((row) => {\n                var field, sameField;\n                // if no name given add atleast something\n                if (!Ember.get(row, 'name') && !Ember.get(row, 'text')) {\n                    Ember.set(row, 'text', 'empty');\n                }\n                if (!Ember.get(row, 'name') && Ember.get(row, 'text')) {\n                    sameField = this.searchFieldWithName(fields, Ember.get(row, 'text'));\n                    if (sameField) {\n                        Ember.set(row, 'name', sameField);\n                    } else {\n                        Ember.set(\n                            row,\n                            'name',\n                            '_' + this.get('tools').computerizeHumanInput(Ember.get(row, 'text')),\n                        );\n                    }\n                }\n                field = Ember.get(row, 'name');\n                fields['worktime.' + field] = {\n                    type: 'hours',\n                    name: Ember.get(row, 'text'),\n                };\n                fields['worktime.' + field + '.@hide'] = 'true';\n                return rules.pushObject({\n                    name: 'custom_dayrule',\n                    field: field,\n                    text: Ember.get(row, 'text'),\n                    values: {\n                        from: Ember.get(row, 'start'),\n                        to: Ember.get(row, 'end'),\n                        days: Ember.get(row, 'start_day') + '-' + Ember.get(row, 'end_day'),\n                        do_not_calculate_if_overtime:\n                            Ember.get(row, 'checked') === void 0\n                                ? 'false'\n                                : Ember.get(row, 'checked'),\n                        calculate_compensations_always:\n                            this.get(\n                                'overtime_types.time_based.settings._calculate_compensations_always',\n                            ) === void 0\n                                ? 'false'\n                                : this.get(\n                                      'overtime_types.time_based.settings._calculate_compensations_always',\n                                  ),\n                    },\n                });\n            });\n            this.get('fieldsToBeRemoved').forEach((item) => {\n                return (fields['!worktime.' + item] = true);\n            });\n            this.set('fieldsToBeRemoved', []);\n            if (this.get('customrules')) {\n                return this.sendAction('save', rules);\n            } else {\n                return this.saveGeneralSettings(fields, rules);\n            }\n        },\n    },\n    saveGeneralSettings: function (fields, rules) {\n        var data;\n        if (Object.keys(fields).length > 0) {\n            this.sendAction('refreshNeeded');\n        }\n        this.get('servicehandler').manipulateService(fields);\n        data = {\n            rules: JSON.stringify(rules),\n        };\n        if (this.get('worktimegroup')) {\n            data.worktimegroup = this.get('worktimegroup');\n        }\n        return this.get('Collector')\n            .ttapi({\n                url: 'overtime/settings',\n                method: 'post',\n                data: data,\n            })\n            .then(() => {\n                this.get('initapp').clearInit();\n                return this.get('notifications').success(this.get('intl').t('general.saved'), {\n                    autoClear: true,\n                });\n            });\n    },\n});\n\nexport default CollectorFieldSettingCompOvertimeSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"iGZFo+HY\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"field\\\",\\\"salarytype\\\",\\\"dayRow\\\",\\\"row\\\",\\\"&default\\\"],\\\"statements\\\":[[14,6],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"horizontal\\\"]],\\\"horizontal-overtime-settings\\\",\\\"vertical-overtime-settings\\\"],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"company_info\\\",\\\"country\\\"]],\\\"fi\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-box small-box\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item active\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"overtime_settings.split_overtimehours.title\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item text-item\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"row\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moreInfo\\\"]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"infoButton col-xs-2\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_settings.moreInfo\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"checked\\\"],[\\\"form-control\\\",\\\"checkbox\\\",[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"in_use\\\"]]]]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-10\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_settings.split_overtimehours\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-box small-box\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item active\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"name\\\"]]],null],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"pull-right\\\",\\\"extrahours_overtime\\\",[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.start\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[24,[\\\"disabled\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.error\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"min\\\",\\\"type\\\",\\\"input\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"0\\\",\\\"number\\\",[28,\\\"action\\\",[[23,0,[]],\\\"checkValues\\\",[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_start\\\"]],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_end\\\"]]],null],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_start\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.end\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[24,[\\\"disabled\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.error\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"min\\\",\\\"type\\\",\\\"input\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"0\\\",\\\"number\\\",[28,\\\"action\\\",[[23,0,[]],\\\"checkValues\\\",[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_start\\\"]],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_end\\\"]]],null],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_end\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-box small-box\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item active\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"name\\\"]]],null],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"pull-right\\\",\\\"daily_overtime\\\",[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item text-item\\\"],[8],[0,\\\"\\\\n\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"overtime.daily_overtime._50starts\\\"],null],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_50start\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"overtime.daily_overtime._100starts\\\"],null],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_100start\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-box small-box\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item active\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"name\\\"]]],null],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"pull-right\\\",\\\"weekly_overtime\\\",[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item text-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-11\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.weekly_overtime._week100starts\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"standard-icon-popover\\\",null,[[\\\"icon\\\",\\\"text\\\"],[\\\"info\\\",[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"overtime.weekly_overtime.info\\\"],null]],null]]]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"min\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"0\\\",\\\"number\\\",[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100start\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-box big-box\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item active\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"name\\\"]]],null],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"pull-right\\\",\\\"daily_overtime\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"in_use\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"in_use\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item text-item\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.enabled_help\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 box-header\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"overtime.time_based.title\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner-rounded-box\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.time_based.evening\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_start\\\"]]]]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-1 centered\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_end\\\"]]]]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"checked\\\"],[\\\"form-control\\\",\\\"checkbox\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_checked\\\"]]]]],false],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.time_based.night\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_start\\\"]]]]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-1 centered\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_end\\\"]]]]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"checked\\\"],[\\\"form-control\\\",\\\"checkbox\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_checked\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customTimeBased\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control\\\",[23,5,[\\\"text\\\"]]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[23,5,[\\\"start\\\"]]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-1 centered\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[23,5,[\\\"end\\\"]]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"checked\\\"],[\\\"form-control\\\",\\\"checkbox\\\",[23,5,[\\\"checked\\\"]]]]],false],[0,\\\"\\\\n                                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeCustomTimeBased\\\",[23,5,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cross\\\"],[8],[9],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-buttons\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addTimeBased\\\"]],[8],[1,[28,\\\"t\\\",[\\\"overtime.add_time_based\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 box-header\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"overtime.day_based.title\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner-rounded-box\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customDayBased\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"day-based-rows\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control\\\",[23,4,[\\\"text\\\"]]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[24,[\\\"days\\\"]],[23,4,[\\\"start_day\\\"]],[28,\\\"t\\\",[\\\"overtime.day_based.choose_start_day\\\"],null]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[23,4,[\\\"start\\\"]]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"centered\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[24,[\\\"days\\\"]],[23,4,[\\\"end_day\\\"]],[28,\\\"t\\\",[\\\"overtime.day_based.choose_end_day\\\"],null]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[23,4,[\\\"end\\\"]]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"checked\\\"],[\\\"form-control\\\",\\\"checkbox\\\",[23,4,[\\\"checked\\\"]]]]],false],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeCustomDayBased\\\",[23,4,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cross\\\"],[8],[9],[9],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-buttons\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addDayBased\\\"]],[8],[1,[28,\\\"t\\\",[\\\"overtime.add_day_based\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"checked\\\"],[\\\"form-control\\\",\\\"checkbox\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_calculate_compensations_always\\\"]]]]],false],[9],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"overtime_types.time_based.calculate_always\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.salarytype||products.selectablesalarytype\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-box small-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item active\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"overtime.select_salarytypes\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item text-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"overtime.salarytypes_help\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"salarytypes\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@options\\\",\\\"@selected\\\",\\\"@placeholder\\\",\\\"@onChange\\\",\\\"@noMatchesMessage\\\"],[[23,0,[\\\"salarytypes\\\"]],[23,0,[\\\"salarytype\\\"]],[28,\\\"t\\\",[\\\"overtime.select_salarytypes\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"salarytype\\\"]]],null]],null],[28,\\\"t\\\",[\\\"overtime.no_salarytypes_found\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[23,3,[\\\"text\\\"]],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"time_based_se\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-box small-box\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item active\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[[24,[\\\"overtime_types\\\",\\\"time_based_se\\\",\\\"name\\\"]]],null],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"pull-right\\\",\\\"daily_overtime\\\",[24,[\\\"overtime_types\\\",\\\"time_based_se\\\",\\\"in_use\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"time_based_se\\\",\\\"in_use\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item text-item\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customTimeBased\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"mandatoryfieldSelection\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,1,[\\\"name\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"option\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,2,[\\\"name\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"name\\\"]],[23,2,[\\\"name\\\"]]],null]],[8],[1,[23,2,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control\\\",[23,1,[\\\"text\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[23,1,[\\\"start\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-1\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"time\\\",[23,1,[\\\"end\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-1\\\"],[8],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeCustomTimeBased\\\",[23,1,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cross\\\"],[8],[9],[9],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addTimeBased\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9],[9],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-box button-box\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary main-button\\\"],[12,\\\"disabled\\\",[22,\\\"disabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"createAndSaveRules\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/overtime-setting/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-setting-comp/pause-setting/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorSettingCompPauseSettingComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nCollectorSettingCompPauseSettingComponent = Ember.Component.extend({\n    store: Em.inject.service(),\n    session: Em.inject.service(),\n    intl: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    init: function () {\n        if (this.get('Collector').testNeedsOne('products.rfid_pause')) {\n            this.set('nfcPauseOn', true);\n        }\n        this._super();\n        return this.getSetting();\n    },\n    getSetting: function () {\n        var configs, setting_params;\n        setting_params = {\n            name: 'default_value',\n            value: 30,\n        };\n        if (this.get('worktimegroup')) {\n            setting_params.condition = '$userProfile->worktimegroup==' + this.get('worktimegroup');\n        }\n        configs = {\n            form: 'worktime',\n            field: 'pause',\n            setting: setting_params,\n        };\n        return this.get('store')\n            .findAll('form', {\n                reload: true,\n            })\n            .then((forms) => {\n                var field, form, setting;\n                form = forms.filterBy('external_type', configs.form);\n                field = form.get('firstObject.fields').filterBy('external_type', configs.field);\n                if (field.get('length') > 0) {\n                    setting = field\n                        .get('firstObject.settings')\n                        .filterBy('name', configs.setting.name);\n                    setting = setting.filter((item) => {\n                        var arr;\n                        if (this.get('worktimegroup')) {\n                            if (!item.get('condition')) {\n                                return false;\n                            }\n                            arr = item.get('condition').split('==');\n                            return arr[1] === this.get('worktimegroup');\n                        } else {\n                            return item.get('condition') === '';\n                        }\n                    });\n                    if (setting.get('firstObject')) {\n                        return this.set('setting', setting.get('firstObject'));\n                    } else {\n                        configs.setting.field = field.get('firstObject');\n                        return this.set(\n                            'setting',\n                            this.get('store').createRecord('form-field-setting', configs.setting),\n                        );\n                    }\n                } else {\n                    return this.set('setting', false);\n                }\n            });\n    },\n    actions: {\n        saveSetting: function () {\n            return this.get('setting')\n                .save()\n                .then(() => {\n                    var ret;\n                    if (this.get('nfcPauseOn')) {\n                        ret = this.get('Collector').setProducts(['products.rfid_pause']);\n                    } else {\n                        ret = this.get('Collector').setProducts(['!products.rfid_pause']);\n                    }\n                    return Ember.RSVP.Promise.all(ret).then(() => {\n                        // unfortunately we need to send products.pause as param so that famocos can be updated\n                        return this.sendAction('settingSaved', 'products.pause');\n                    });\n                });\n        },\n    },\n});\n\nexport default CollectorSettingCompPauseSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"gPYAlCJ1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.timetracker.default_pause_help\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"number\\\",[24,[\\\"setting\\\",\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/pause-setting/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-setting-comp/postpopulated-worktimes/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldSettingCompSaldoSettingComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nCollectorFieldSettingCompSaldoSettingComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    ttapi: Em.inject.service(),\n    customerSettings: Em.inject.service(),\n    notifications: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    loading: true,\n    settingKey: Ember.computed('worktimegroup', function () {\n        return (\n            'postpopulated_worktimes_project' +\n            (this.get('worktimegroup') ? '_' + this.get('worktimegroup') : '')\n        );\n    }),\n    didReceiveAttrs: function () {\n        return this.get('ttapi')\n            ._get('/settings?worktimegroup=' + this.get('worktimegroup'))\n            .then((ret) => {\n                var projectSetting;\n                projectSetting = ret.findBy('key', this.get('settingKey'));\n                if (projectSetting) {\n                    this.set('selectedProject', projectSetting.value);\n                }\n                return this.set('loading', false);\n            });\n    },\n    projectField: Ember.computed('selectedProject', function () {\n        var field;\n        field = this.get('Collector').field('worktime', 'project');\n        field.value = this.get('selectedProject');\n        return field;\n    }),\n    actions: {\n        saveSetting: function () {\n            return this.get('customerSettings')\n                .setSetting(\n                    this.get('settingKey'),\n                    this.get('selectedProject.id'),\n                    this.get('worktimegroup'),\n                )\n                .then(() => {\n                    return this.get('notifications').success(this.get('intl').t('general.saved'), {\n                        autoClear: true,\n                    });\n                });\n        },\n        changeProject: function (project) {\n            return this.set('selectedProject', project);\n        },\n    },\n});\n\nexport default CollectorFieldSettingCompSaldoSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"76hQpxEQ\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"projectField\\\"]]],[[\\\"change\\\"],[\\\"changeProject\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/postpopulated-worktimes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-setting-comp/push-setting/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorSettingCompPushSettingComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nimport moment from 'moment';\n\nCollectorSettingCompPushSettingComponent = Ember.Component.extend({\n    store: Em.inject.service(),\n    session: Em.inject.service(),\n    moment: Em.inject.service(),\n    intl: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    notifications: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    flags: Ember.inject.service(),\n    setting_default: '16:00',\n    use_missing_hours: Em.computed(function () {\n        if (\n            this.get('customerSettings').checkSetting(\n                'push_notification_time_hours_' +\n                    this.get('session.currentUser.company_info.country'),\n            ) &&\n            !this.get('flags').test('notification-settings-v2')\n        ) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n    time: Em.computed(function () {\n        var date, utctime;\n        utctime = this.get('customerSettings').checkSetting(this.get('configs.name'));\n        date = moment().format('YYYY-MM-DD');\n        return (\n            this.get('moment')\n                .moment(date + ' ' + utctime + ':00Z')\n                .format('HH:mm') || this.setting_default\n        );\n    }),\n    /*\n  is_dirty: Em.computed 'setting', ->\n      if @get('setting')  != @get('setting_default')\n          return true\n      else\n          return false\n  */\n    actions: {\n        saveSetting: function () {\n            var promises, utctime;\n            promises = [];\n            utctime = this.get('moment')\n                .moment(moment().format('YYYY-MM-DD') + ' ' + this.get('time') + ':00')\n                .utc()\n                .format('HH:mm');\n            if (this.get('use_missing_hours')) {\n                promises.push(\n                    this.get('customerSettings').setSetting(\n                        'push_notification_time_hours_' +\n                            this.get('session.currentUser.company_info.country'),\n                        utctime,\n                    ),\n                );\n            } else if (\n                this.get('customerSettings').checkSetting(\n                    'push_notification_time_hours_' +\n                        this.get('session.currentUser.company_info.country'),\n                )\n            ) {\n                promises.push(\n                    this.get('customerSettings').setSetting(\n                        'push_notification_time_hours_' +\n                            this.get('session.currentUser.company_info.country'),\n                        'off',\n                    ),\n                );\n            }\n            promises.push(\n                this.get('customerSettings').setSetting(this.get('configs.name'), utctime),\n            );\n            return Ember.RSVP.Promise.all(promises).then(() => {\n                return this.get('notifications').success(this.get('intl').t('general.saved'), {\n                    autoClear: true,\n                });\n            });\n        },\n    },\n});\n\nexport default CollectorSettingCompPushSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"p5FBv3Q9\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"flag.notification-settings-v2\\\"],null]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\"],[\\\"checkbox\\\",[24,[\\\"use_missing_hours\\\"]]]]],false],[1,[28,\\\"t\\\",[\\\"settings.notifications.use_missing_hours\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"time\\\",[24,[\\\"time\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/push-setting/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-setting-comp/saldo-setting/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldSettingCompSaldoSettingComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nimport config from '../../../../config/environment';\n\nimport { isArray } from '@ember/array';\n\nCollectorFieldSettingCompSaldoSettingComponent = Ember.Component.extend({\n    Collector: Em.inject.service('collector-service'),\n    session: Em.inject.service(),\n    store: Em.inject.service(),\n    intl: Em.inject.service(),\n    dialogs: Ember.inject.service(),\n    //startdate: Em.computed ->\n    //    moment().format('YYYY-MM-DD')\n    didReceiveAttrs: function () {\n        this.set('loading', true);\n        return this.get('Collector')\n            .ttapi({\n                url: 'saldo/saldoSettings',\n            })\n            .then((back) => {\n                var skip_worktimegroups;\n                // these are the default-values if no saldo-settings are found\n                if (back.length === 0) {\n                    back = {};\n                    back.startdate = moment().format('YYYY-MM-DD');\n                    back.minimum = 20 * 60;\n                    back.maximum = 40 * 60;\n                    back.dailymaximum = 4 * 60;\n                    this.send('saveSetting');\n                }\n                skip_worktimegroups = back.skip_worktimegroups;\n                // sooooo ugly :(\n                this.set('startdate', back.startdate);\n                this.set('minimum_saldo', back.minimum / 60);\n                this.set('maximum_saldo', back.maximum / 60);\n                this.set('dailymaximum_saldo', back.dailymaximum / 60);\n                this.set('old_startdate', back.startdate);\n                this.set('old_minimum_saldo', back.minimum / 60);\n                this.set('old_maximum_saldo', back.maximum / 60);\n                this.set('old_dailymaximum_saldo', back.dailymaximum / 60);\n                this.set('saldo_absence_id', back.saldo_absence_id);\n                this.set('autocut_saldo', back.auto_cut);\n                this.set('old_autocut_saldo', this.get('autocut_saldo'));\n                this.set('skip_worktimegroups', skip_worktimegroups);\n                this.set('old_skip_worktimegroups', skip_worktimegroups);\n                this.set('split_basichours', back.split_basichours);\n                this.set('old_split_basichours', this.get('split_basichours'));\n                return this.set('loading', false);\n            });\n    },\n    isFiService: Ember.computed('session.currentUser', function () {\n        if (this.get('session.currentUser.company_info.country') === 'fi') {\n            return true;\n        }\n    }),\n    dirty: Ember.computed(\n        'startdate',\n        'old_startdate',\n        'minimum_saldo',\n        'old_minimum_saldo',\n        'maximum_saldo',\n        'old_maximum_saldo',\n        'dailymaximum_saldo',\n        'old_dailymaximum_saldo',\n        'autocut_saldo',\n        'old_autocut_saldo',\n        'skip_worktimegroups',\n        'old_skip_worktimegroups',\n        'old_split_basichours',\n        'split_basichours',\n        function () {\n            return (\n                this.get('startdate') !== this.get('old_startdate') ||\n                this.get('minimum_saldo') !== this.get('old_minimum_saldo') ||\n                this.get('maximum_saldo') !== this.get('old_maximum_saldo') ||\n                this.get('dailymaximum_saldo') !== this.get('old_dailymaximum_saldo') ||\n                this.get('autocut_saldo') !== this.get('old_autocut_saldo') ||\n                this.get('skip_worktimegroups') !== this.get('old_skip_worktimegroups') ||\n                this.get('split_basichours') !== this.get('old_split_basichours')\n            );\n        },\n    ),\n    worktimegroupField: Ember.computed('skip_worktimegroups', function () {\n        var field;\n        field = this.get('Collector').field('user', 'worktimegroup');\n        field.type = 'multiselect';\n        return field;\n    }),\n    showAddSaldoAbsenceButton: Ember.computed('saldo_absence_id', function () {\n        if (!this.get('Collector').testNeeds(['abcense'])) {\n            return false;\n        }\n        if (!this.get('startdate')) {\n            return false;\n        }\n        if (!this.get('saldo_absence_id')) {\n            return true;\n        }\n        if (!this.get('store').peekRecord('abcensetype', this.get('saldo_absence_id'))) {\n            return true;\n        }\n    }),\n    createSaldoAbsence: function () {\n        return new Ember.RSVP.Promise((resolve) => {\n            var record;\n            if (!this.get('Collector').testNeeds(['abcense'])) {\n                resolve(null);\n            }\n            if (!this.get('saldo_absence_id')) {\n                // create new absence type\n                record = this.get('store').createRecord('abcensetype', {\n                    name: this.get('intl').t('saldo.saldo_absence'),\n                });\n                return record.save().then(function (saved) {\n                    return resolve(saved.get('id'));\n                });\n            } else if (!this.get('store').peekRecord('abcensetype', this.get('saldo_absence_id'))) {\n                return this.get('store')\n                    .query('abcensetype', {\n                        id: this.get('saldo_absence_id'),\n                    })\n                    .then((rows) => {\n                        if (Ember.isEmpty(rows)) {\n                            // create new absence type\n                            record = this.get('store').createRecord('abcensetype', {\n                                name: this.get('intl').t('saldo.saldo_absence'),\n                            });\n                            return record.save().then(function (saved) {\n                                return resolve(saved.get('id'));\n                            });\n                        } else {\n                            return resolve(this.get('saldo_absence_id'));\n                        }\n                    });\n            } else {\n                return resolve(this.get('saldo_absence_id'));\n            }\n        });\n    },\n    recalculateOldSaldos: function (between) {\n        var startdate;\n        startdate = between.split('_')[0];\n        return this.get('dialogs')\n            .confirm(\n                this.get('intl').t('saldo.calculateHistorySaldo', {\n                    startdate: moment(startdate).format('L'),\n                }),\n            )\n            .then((con) => {\n                if (con) {\n                    return this.get('Collector').ttapi({\n                        method: 'get',\n                        url: 'saldo/calculateSaldos?date=' + between + '&userid=all',\n                    });\n                }\n            });\n    },\n    actions: {\n        moreInfo: function () {\n            return window.open(config.APP.CDN_URL + '/documents/Saldot+ohje.pdf', '_blank');\n        },\n        changeWorktimegroups: function (value) {\n            return this.set('skip_worktimegroups', value);\n        },\n        saveSetting: function () {\n            return this.createSaldoAbsence().then((saldo_absence_id) => {\n                var data, old_startdate, recalculationNeeded;\n                data = {\n                    startdate: this.get('startdate'),\n                    minimum: parseInt(this.get('minimum_saldo'), 10) * 60,\n                    maximum: parseInt(this.get('maximum_saldo'), 10) * 60,\n                    dailymaximum: parseFloat(this.get('dailymaximum_saldo'), 10) * 60,\n                    saldo_absence_id: saldo_absence_id,\n                };\n                if (this.get('skip_worktimegroups')) {\n                    data.skip_worktimegroups = isArray(this.get('skip_worktimegroups'))\n                        ? this.get('skip_worktimegroups').join(',')\n                        : this.get('skip_worktimegroups');\n                } else {\n                    data.skip_worktimegroups = '';\n                }\n                if (this.get('autocut_saldo')) {\n                    data.auto_cut = true;\n                } else {\n                    data.auto_cut = '';\n                }\n                if (this.get('split_basichours')) {\n                    data.split_basichours = true;\n                    this.get('Collector').addProduct('saldo_splitted');\n                } else {\n                    data.split_basichours = '';\n                    this.get('Collector').removeProduct('saldo_splitted');\n                }\n                return this.get('Collector')\n                    .ttapi(\n                        {\n                            method: 'post',\n                            url: 'saldo/saldoSettings',\n                            data: data,\n                        },\n                        (old_startdate =\n                            this.get('old_startdate') || moment().format('YYYY-MM-DD')),\n                        this.get('startdate') < old_startdate\n                            ? (recalculationNeeded =\n                                  this.get('startdate') +\n                                  '_' +\n                                  moment(old_startdate).subtract(1, 'day').format('YYYY-MM-DD'))\n                            : (recalculationNeeded = false),\n                    )\n                    .then((back) => {\n                        this.set('old_startdate', this.get('startdate'));\n                        this.set('old_minimum_saldo', this.get('minimum_saldo'));\n                        this.set('old_maximum_saldo', this.get('maximum_saldo'));\n                        this.set('old_dailymaximum_saldo', this.get('dailymaximum_saldo'));\n                        this.set('old_autocut_saldo', this.get('autocut_saldo'));\n                        this.set('old_skip_worktimegroups', this.get('skip_worktimegroups'));\n                        this.set('old_split_basichours', this.get('split_basichours'));\n                        if (this.get('saldo_absence_id') === saldo_absence_id) {\n                            this.notifyPropertyChange('saldo_absence_id');\n                        } else {\n                            this.set('saldo_absence_id', saldo_absence_id);\n                        }\n                        this.sendAction('settingSaved');\n                        if (recalculationNeeded) {\n                            return this.recalculateOldSaldos(recalculationNeeded);\n                        }\n                    });\n            });\n        },\n        changeSaldotype: function (type) {\n            return this.set('saldotype', type);\n        },\n    },\n});\n\nexport default CollectorFieldSettingCompSaldoSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"oDB+fmpG\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"saldo.start\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"form-control add-fields\\\",[24,[\\\"startdate\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"saldo.minimum\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"minimum_saldo\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"saldo.maximum\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"maximum_saldo\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"saldo.dailymaximum\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"dailymaximum_saldo\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"saldo.autocut\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"form-control add-fields\\\",[24,[\\\"autocut_saldo\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"saldo.split_basichours\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"form-control add-fields\\\",[24,[\\\"split_basichours\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktimegroup\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"saldo.skip_worktimegroups\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"worktimegroupField\\\"]]],[[\\\"change\\\",\\\"value\\\"],[\\\"changeWorktimegroups\\\",[24,[\\\"skip_worktimegroups\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isFiService\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"moreInfo\\\"]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"info-button-md col-xs-2\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[1,[28,\\\"t\\\",[\\\"saldo.more_info_link\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"dirty\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showAddSaldoAbsenceButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"saldo.add_saldo_absence\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/saldo-setting/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"q9wV2j0/\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[[24,[\\\"configs\\\",\\\"type\\\"]],[24,[\\\"setting\\\",\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"description\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"date_interval_setting\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"ember-checkbox form-control\\\",[24,[\\\"date_interval_future_check\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.date_interval.can_save_to_future\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"date_interval_future_check\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"date_interval_future\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.date_interval.can_save_to_future_desc\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSaveButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/template.hbs\"}});","import { inject as service } from '@ember/service';\nimport Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\n\nexport default Component.extend({\n    loadTranslations: service(),\n    intl: service(),\n\n    loading: true,\n\n    terms: computed(function () {\n        const terms = get(this, 'intl').t('terms.project');\n        const changesArr = terms.split(/\\n/g);\n        const termList = changesArr[0].split(/,/g);\n\n        return termList.map((item, key) => {\n            return { id: '' + key, text: item };\n        });\n    }),\n\n    didReceiveAttrs() {\n        set(this, 'selectedTerm', get(this, 'loadTranslations').getTermsIndex());\n        set(this, 'loading', false);\n    },\n\n    actions: {\n        termsChanged(index) {\n            get(this, 'loadTranslations').saveTermsIndex(index);\n            get(this, 'loadTranslations').fetch();\n\n            set(this, 'selectedTerm', index);\n\n            get(this, 'loadTranslations').saveTermsIndex(index);\n            this.settingSaved(false);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"k9bJWbZY\",\"block\":\"{\\\"symbols\\\":[\\\"term\\\"],\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"settings.general.terms_desc\\\"],null],false],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"termsChanged\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"terms\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,1,[\\\"id\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"selectedTerm\\\"]]],null]],[8],[1,[23,1,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/terms-setting/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/field-setting-comp/time-setting/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorSettingCompTimeSettingComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nCollectorSettingCompTimeSettingComponent = Ember.Component.extend({\n    store: Em.inject.service(),\n    session: Em.inject.service(),\n    intl: Em.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    notifications: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    setting_default: '16:00',\n    time: Em.computed(function () {\n        return (\n            this.get('customerSettings').checkSetting(this.get('configs.name')) ||\n            this.setting_default\n        );\n    }),\n    second_time: Em.computed(function () {\n        return this.get('customerSettings').checkSetting(\n            this.get('configs.secondary_setting_name'),\n        );\n    }),\n    field1Translation: Em.computed(function () {\n        if (\n            this.get('configs.name').indexOf('_fi') > 0 ||\n            this.get('configs.name').indexOf('_se') > 0\n        ) {\n            return this.get('intl').t(\n                'settings.' + this.get('configs.name').slice(0, -3) + '.field',\n            );\n        } else {\n            return this.get('intl').t('settings.' + this.get('configs.name') + '.field');\n        }\n    }),\n    field2Translation: Em.computed(function () {\n        if (\n            this.get('configs.secondary_setting_name').indexOf('_fi') > 0 ||\n            this.get('configs.secondary_setting_name').indexOf('_se') > 0\n        ) {\n            return this.get('intl').t(\n                'settings.' + this.get('configs.secondary_setting_name').slice(0, -3) + '.field',\n            );\n        } else {\n            return this.get('intl').t('settings.' + this.get('configs.name') + '.field');\n        }\n    }),\n    /*\n  is_dirty: Em.computed 'setting', ->\n      if @get('setting')  != @get('setting_default')\n          return true\n      else\n          return false\n  */\n    actions: {\n        saveSetting: function () {\n            return this.get('customerSettings')\n                .setSetting(this.get('configs.name'), this.get('time'))\n                .then(() => {\n                    var promise;\n                    promise = new Em.RSVP.Promise((resolve, reject) => {\n                        if (this.get('configs.secondary_setting_name')) {\n                            return this.get('customerSettings')\n                                .setSetting(\n                                    this.get('configs.secondary_setting_name'),\n                                    this.get('second_time'),\n                                )\n                                .then(() => {\n                                    return resolve();\n                                });\n                        } else {\n                            return resolve();\n                        }\n                    });\n                    return promise.then(() => {\n                        return this.get('notifications').success(\n                            this.get('intl').t('general.saved'),\n                            {\n                                autoClear: true,\n                            },\n                        );\n                    });\n                });\n        },\n    },\n});\n\n//@get('setting').save().then =>\n//    @sendAction('settingSaved')\nexport default CollectorSettingCompTimeSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"P8HLPR3t\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"configs\\\",\\\"secondary_setting_name\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-horizontal\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-6 control-label\\\"],[8],[1,[22,\\\"field1Translation\\\"],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"time\\\",[24,[\\\"time\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-6 control-label\\\"],[8],[1,[22,\\\"field2Translation\\\"],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"time\\\",[24,[\\\"second_time\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"time\\\",[24,[\\\"time\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/field-setting-comp/time-setting/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/base-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsBaseFieldComponent;\n\nimport Ember from 'ember';\n\nimport collectorField from '../../../../mixins/collector-field';\n\nCollectorFieldsBaseFieldComponent = Ember.Component.extend(collectorField, {\n    object: Ember.computed.alias('field.name'),\n    addModelObs: Ember.on('init', function () {\n        var modelfield;\n        this.updateValueFromModel();\n        modelfield = 'model.' + this.get('object');\n        return this.addObserver(modelfield, this, this.modelChanged);\n    }),\n    modelChanged: function () {\n        return Ember.run.once(this, this.updateValueFromModel);\n    },\n    updateValueFromModel: function () {\n        var modelfieldid;\n        if (this.get('model')) {\n            modelfieldid = this.get('model.' + this.get('object'));\n            if (modelfieldid) {\n                this.set('value', modelfieldid);\n                return this.set('field.value', modelfieldid);\n            }\n        } else if (this.get('field.value')) {\n            return this.set('value', this.get('field.value'));\n        }\n    },\n});\n\nexport default CollectorFieldsBaseFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"LVLkTfTY\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/base-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/checkbox-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsCheckboxFieldComponent;\n\nimport Ember from 'ember';\n\nimport textInput from '../text-field/component';\n\nCollectorFieldsCheckboxFieldComponent = textInput.extend({\n    intl: Ember.inject.service(),\n    options: Em.computed(function () {\n        return [\n            {\n                id: '',\n                name: this.field.prompt ? this.field.prompt : this.get('intl').t('general.choose'),\n            },\n            {\n                id: 'off',\n                name: this.get('intl').t('general.no'),\n            },\n            {\n                id: 'on',\n                name: this.get('intl').t('general.yes'),\n            },\n        ];\n    }),\n});\n\nexport default CollectorFieldsCheckboxFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"d4xqXVIW\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"useAsFilter\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\"],[[24,[\\\"_class\\\"]],[24,[\\\"options\\\"]],[24,[\\\"value\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/fields/toggle-field\\\",null,[[\\\"toggled\\\",\\\"name\\\",\\\"form\\\",\\\"disabled\\\",\\\"class\\\"],[[24,[\\\"value\\\"]],[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"field\\\",\\\"form\\\"]],[24,[\\\"disabled\\\"]],\\\"smallerText\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/checkbox-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/checkboxgroup-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsCheckboxgroupFieldComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collectorField from '../../../../mixins/collector-field';\n\nCollectorFieldsCheckboxgroupFieldComponent = Ember.Component.extend(collectorField, {\n    intl: Ember.inject.service(),\n    checkboxes: Ember.computed('field.options', 'field.value', function () {\n        var checked, key, options_arr, ref, text, value;\n        options_arr = Ember.A([]);\n        ref = this.get('field.options');\n        for (key in ref) {\n            value = ref[key];\n            checked = false;\n            if (Array.isArray(this.get('model.' + this.get('field.name')))) {\n                if (indexOf.call(this.get('model.' + this.get('field.name')), key) >= 0) {\n                    checked = true;\n                }\n            }\n            text =\n                value.substring(0, 1) === '$'\n                    ? this.get('intl').t(\n                          this.get('field.form') + 's.' + this.get('field.name') + '.' + key,\n                      )\n                    : value;\n            if (text === value && this.get('intl').exists(value)) {\n                text = this.get('intl').t(value);\n            }\n            options_arr.pushObject(\n                Ember.Object.create({\n                    checked: checked,\n                    key: key,\n                    text: text,\n                }),\n            );\n        }\n        return options_arr;\n    }),\n    actions: {\n        check: function (box) {\n            box.toggleProperty('checked');\n            return this.sendAction(\n                'bubbleChange',\n                this.get('checkboxes').filterBy('checked').mapBy('key'),\n                this.get('field.name'),\n            );\n        },\n    },\n});\n\nexport default CollectorFieldsCheckboxgroupFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"1stWsTpw\",\"block\":\"{\\\"symbols\\\":[\\\"box\\\"],\\\"statements\\\":[[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-unstyled\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"checkboxes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"checked\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-success\\\"],[8],[1,[28,\\\"standard-icon\\\",[\\\"ok\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[1,[23,1,[\\\"text\\\"]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[12,\\\"class\\\",\\\"nostyle-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"check\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"checked\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"standard-icon\\\",[\\\"checked\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"standard-icon\\\",[\\\"unchecked\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[1,[23,1,[\\\"text\\\"]],false],[0,\\\"\\\\n                        \\\"],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/checkboxgroup-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/database-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDropdownFieldComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collectorField from '../../../../mixins/collector-field';\n\nimport $ from 'jquery';\n\nCollectorFieldsDropdownFieldComponent = Ember.Component.extend(collectorField, {\n    localStorageWrapper: Em.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    store: Ember.inject.service(),\n    sessionGlobals: Ember.inject.service(),\n    dialogs: Em.inject.service(),\n    router: Em.inject.service(),\n    showOptions: false,\n    value: '',\n    text: '',\n    search: '',\n    prompt: Ember.computed('field.prompt', function () {\n        if (this.get('field.show_prompt')) {\n            return this.get('field.prompt');\n        }\n        if (this.get('field.features.remove_empty_selection')) {\n            return null;\n        }\n        if (this.get('field.prompt.string')) {\n            return this.get('field.prompt');\n        }\n        if (this.get('field.prompt')) {\n            return this.get('intl').t(this.get('field.prompt'));\n        } else {\n            if (this.get('useAsFilter')) {\n                return (\n                    this.get('intl').t('general.select_choose') +\n                    ' ' +\n                    this.Collector.getTranslationForColumn(\n                        this.get('field.form'),\n                        this.get('field.name'),\n                    ) +\n                    '...'\n                );\n            } else {\n                return this.get('intl').t('general.select_choose');\n            }\n        }\n    }),\n    query: '',\n    options: Em.A([]),\n    // possible values\n    //   normal = browser's internal component\n    //   search = custom dropdown with search\n    //   lastused = list of last used selctions from localstorage <- not used anymore\n    dropdownType: 'normal',\n    use_normal_dropdown_limit: 30,\n    ajax_search_limit: Em.computed.alias('use_normal_dropdown_limit'),\n    localStorage_size_limit: 20,\n    useBrowsersInternalDropdown: true,\n    localStorageKey: Em.computed('field.name', function () {\n        return 'select_' + this.get('field.name');\n    }),\n    defaultValueForNormalDropdown: null,\n    initAliases: Em.on('init', function () {\n        return Ember.defineProperty(\n            this,\n            'modelValue',\n            Ember.computed.alias('model.' + this.get('field.name')),\n        );\n    }),\n\n    // decide which version to use\n\n    initilizeDropdown: Em.on(\n        'init',\n        Em.observer('session.currentUser', 'field.filterOptions', function () {\n            var settings;\n            if (!this.get('session.currentUser')) {\n                return;\n            }\n            settings = this.getSettingsFromLs();\n            //if settings.use and settings.objects? and settings.objects.length > 3\n            //    @set 'dropdownType', 'lastused'\n            //    @set 'options', @getOptionsFromLocalStorage()\n            //    @set 'moreCount', 'more'\n            //    return\n            return Ember.run.next(() => {\n                // fetching must be done in next loop so everything is settled down and possible reloader field is ready\n                if (this.get('isDestroyed')) {\n                    return;\n                }\n                return this.fetchFromDatabase().then((data) => {\n                    if (this.get('isDestroyed')) {\n                        return;\n                    }\n                    if (\n                        !this.get('field.show_prompt') &&\n                        !this.get('field.value') &&\n                        this.get('field.features.remove_empty_selection')\n                    ) {\n                        this.fetchRecordById(Ember.get(data, 'firstObject.id')).then((record) => {\n                            // super ugly hax to prevent overwriting delayed changes from parent component\n                            // already made an issue to rewrite this whole component EP-4228\n                            return Ember.run.later(\n                                this,\n                                () => {\n                                    if (!this.get('value')) {\n                                        return this.sendChange(record);\n                                    }\n                                },\n                                2500,\n                            );\n                        });\n                    }\n                    if (this.get('queryRowCount') > this.get('ajax_search_limit')) {\n                        if (!settings.use) {\n                            this.setUseLocalStorage();\n                        }\n                        //@set 'moreCount', data.count - @get 'ajax_search_limit'\n                        return this.set('dropdownType', 'search');\n                    } else {\n                        this.set('dropdownType', 'normal');\n                        if (this.get('field.value')) {\n                            return this.set(\n                                'defaultValueForNormalDropdown',\n                                this.get('field.value'),\n                            );\n                        } else {\n                            return this.set(\n                                'defaultValueForNormalDropdown',\n                                this.get('model.' + this.get('field.name') + '.id'),\n                            );\n                        }\n                    }\n                });\n            });\n        }),\n    ),\n    offset: 0,\n\n    // Fetch options from backend .. Use search query if it is set\n\n    fetchFromDatabase: function (loadMore) {\n        var c, field, promise;\n        c = this.get('Collector');\n        field = c.field(this.get('form'), this.get('object'));\n        if (loadMore) {\n            this.set('offset', this.get('offset') + this.get('ajax_search_limit'));\n        } else {\n            this.set('offset', 0);\n        }\n        promise = this.queryBackend(field.options.form);\n        //lataa aluksi, paina lataa lisää, offsettiä kasvatetaan ajax_search_limitin verran, tulos appendataan optionseihin\n        promise.then((data) => {\n            var moreCount, options;\n            options = this.convertOptions(data);\n            if (this.get('isDestroyed')) {\n                return;\n            }\n            this.set('loading', false);\n            if (loadMore) {\n                this.get('options').pushObjects(options);\n            } else {\n                this.set('options', options);\n            }\n            moreCount = this.get('queryRowCount') - this.get('options.length');\n            return this.set('moreCount', moreCount > 0 ? moreCount : null);\n        });\n        //@set 'useSaveToLocalStorage', true if data.count >= @get('search_limit') and not query\n        return promise;\n    },\n    queryBackend: function (form) {\n        var c, params, promise, query_field, row_status, show_removed_arr;\n        c = this.get('Collector');\n        if (this.get('useAsFilter') && this.get('sessionGlobals').get('show_removed')) {\n            show_removed_arr = this.get('sessionGlobals').get('show_removed');\n            if (show_removed_arr && show_removed_arr[form]) {\n                row_status = 'removed';\n            }\n        }\n        params = {\n            form: this.get('form'),\n            field: this.get('object'),\n            limit: this.get('ajax_search_limit'),\n            offset: this.get('offset'),\n            row_info_status: row_status,\n            q: this.get('query'),\n        };\n        //if values loaded by some other field, use that as parameter\n        if (this.get('loadedValuesBy')) {\n            query_field = c.field(this.get('form'), this.get('loadedValuesByKey'));\n            params[query_field.options.form] = this.get('loadedValuesBy');\n        }\n        this.addFilterOptionsToParams(params);\n        promise = this.get('store').query(form, params);\n        promise.then((data) => {\n            if (this.get('isDestroyed')) {\n                return;\n            }\n            if (this != null) {\n                return this.set('queryRowCount', data.meta.count);\n            }\n        });\n        return promise;\n    },\n    addFilterOptionsToParams: function (params) {\n        var filterOptions, key, results;\n        filterOptions = this.get('field.filterOptions');\n        results = [];\n        for (key in filterOptions) {\n            results.push((params[key] = filterOptions[key]));\n        }\n        return results;\n    },\n    convertOptions: function (data) {\n        var options;\n        options = [];\n        data.forEach((row) => {\n            return options.push({\n                id: row.get('id'),\n                text: this.getText(row),\n            });\n        });\n        return options;\n    },\n\n    //   fetch preselected object from localstorage and show it in dropdown\n\n    setDefaultValue: Ember.on(\n        'init',\n        Em.observer('dropdownType', function () {\n            var id, option;\n            if (Ember.isPresent(this.get('field.value')) && this.get('dropdownType') !== 'normal') {\n                id = this.get('field.value');\n                option = this.getOptionsFromLocalStorage().findBy('id', parseInt(id, 10));\n                if (option) {\n                    return this.setState(id, option.text);\n                } else {\n                    return this.fetchRecordById(id).then((record) => {\n                        return this.setState(id, this.getText(record));\n                    });\n                }\n            }\n        }),\n    ),\n\n    //   Create list of options to use with browser's internal component\n\n    normalDropdownOptions: Em.computed('options', 'defaultValueForNormalDropdown', function () {\n        var field, subform;\n        if (\n            !this.get('useAsFilter') &&\n            !this.get('model.isNew') &&\n            Ember.isPresent(this.get('defaultValueForNormalDropdown')) &&\n            !this.get('options').findBy('id', this.get('defaultValueForNormalDropdown'))\n        ) {\n            field = this.get('Collector').field(this.get('form'), this.get('object'));\n            subform = field.options.form;\n            this.get('options').pushObject({\n                id: this.get('defaultValueForNormalDropdown'),\n                text: this.getText(\n                    this.get('store').peekRecord(\n                        subform,\n                        this.get('defaultValueForNormalDropdown'),\n                    ),\n                ),\n            });\n        }\n        return this.get('options').map((option) => {\n            Ember.set(option, 'name', option.text);\n            return option;\n        });\n    }),\n\n    //   Same as above but include \"last used\" objects\n\n    normalDropdownOptionsWithLastused: Em.computed('normalDropdownOptions', function () {\n        var lastUsedCount = 10; // Number of 'last used' items to display\n        var intl, lastused;\n        lastused = this.getOptionsFromLocalStorage()\n            .slice(0, lastUsedCount)\n            .map(function (option) {\n                option.name = option.text;\n                return option;\n            });\n        intl = this.get('intl');\n        if (this.get('loadedValuesBy')) {\n            lastused = false;\n        }\n        if (lastused.length > 0 && this.get('normalDropdownOptions.length') > 10) {\n            return [\n                {\n                    label: intl.t('select.last_selections'),\n                    options: lastused,\n                },\n                {\n                    label: intl.t('select.all'),\n                    options: this.get('normalDropdownOptions'),\n                },\n            ];\n        } else {\n            return null;\n        }\n    }),\n\n    //   options for \"custom dropdown with search\"\n\n    optionsForSearcheableDropdown: Ember.computed('options.[]', function () {\n        var temp;\n        temp = Em.A([]);\n        //if not @get 'search'\n        //    temp.pushObject {id: null, text: @get('intl').t(\"select.clear\"), class: \"clear\"}\n\n        //if @get('dropdownType') == 'lastused' and not @get 'search'\n        //    temp.pushObject {id: null, text: @get('intl').t(\"select.last_selections\"), class: \"lastused\"}\n        return temp.pushObjects(this.get('options'));\n    }),\n\n    //   Same as above but include \"last used\" objects\n\n    optionsForSearcheableDropdownWithLastused: Em.computed(\n        'optionsForSearcheableDropdown',\n        function () {\n            var intl, lastused, temp;\n            lastused = this.getOptionsFromLocalStorage().slice(0, 15);\n            if (this.get('loadedValuesBy')) {\n                lastused = false;\n            }\n            intl = this.get('intl');\n            temp = Em.A([]);\n            if (!this.get('search')) {\n                temp.pushObject({\n                    id: null,\n                    text: this.get('intl').t('select.clear'),\n                    class: 'clear',\n                });\n            }\n            if (lastused.length > 0 && !this.get('search')) {\n                temp.pushObject({\n                    id: null,\n                    text: this.get('intl').t('select.last_selections'),\n                    class: 'lastused',\n                });\n                temp.pushObjects(lastused);\n                temp.pushObject({\n                    id: null,\n                    text: this.get('intl').t('select.all'),\n                    class: 'lastused',\n                });\n            }\n            temp.pushObjects(this.get('optionsForSearcheableDropdown'));\n            return temp;\n        },\n    ),\n\n    //  Observe when user types something to searchable dropdown and update options accordingly\n\n    ObserveSearch: Ember.observer('search', function () {\n        var search;\n        search = this.get('search');\n        if (!search && this.get('dropdownType') === 'lastused') {\n            this.set('moreCount', 'more');\n            this.set('options', this.getOptionsFromLocalStorage());\n            return;\n        }\n        if (typeof search !== 'string') {\n            return;\n        }\n        if (!this.get('showOptions')) {\n            return;\n        }\n        this.set('query', search);\n        this.set('loading', true);\n        return Ember.run.debounce(this, this.fetchFromDatabase, 700);\n    }),\n    // i hope no one finds this..\n    obsValue: Em.observer('field.value', function () {\n        if (Em.isEmpty(this.get('field.value'))) {\n            return this.set('search', null);\n        }\n    }),\n    loadedValuesBy: null,\n\n    // this is for reloading options in another dropdown according to value in another (ie tasks by projects)\n\n    modifyDatabaseItems: function (sender, key, user_selected = true) {\n        var c,\n            data,\n            field,\n            form,\n            forms,\n            old_value,\n            promise,\n            query,\n            query_field,\n            query_key,\n            subform,\n            value;\n        old_value = this.get('field.value');\n        c = this.get('Collector');\n        query = this.get('query');\n        query_key = key.split('.')[1];\n        value = this.get('model.' + query_key + '.id');\n        // reload supporting multiselects .. those values are array of indexes .. not a record\n        if (!value && Ember.isArray(this.get('model.' + query_key))) {\n            value = this.get('model.' + query_key);\n        }\n        // dismiss unneeded observer calls\n        if (value === this.get('loadedValuesBy')) {\n            return;\n        }\n        if (!value && !this.get('loadedValuesBy')) {\n            return;\n        }\n        // test that field has linkings for query_key .. if it doesn't and request is made api returns error\n        // only test for project tasks .. ugly hack.. :(\n        if (this.get('object') === 'task' && query_key === 'project') {\n            forms = c.forms();\n            form = forms[this.get('object')];\n            if (form != null && form.features != null) {\n                if (Ember.isArray(form.features.link)) {\n                    if (form.features.link.indexOf(query_key) === -1) {\n                        return;\n                    }\n                } else if (form.features.link !== query_key) {\n                    return;\n                }\n            } else {\n                return;\n            }\n        }\n        this.set('loadedValuesBy', value);\n        this.set('loadedValuesByKey', query_key);\n        data = {};\n        query_field = c.field(this.get('form'), query_key);\n        if (value) {\n            data[query_field.options.form] = value;\n        }\n        data['form'] = this.get('form');\n        data['field'] = this.get('object');\n        field = c.field(this.get('form'), this.get('object'));\n        promise = this.get('store').query(field.options.form, data);\n        subform = field.options.form;\n        // Not using search limit since this doesn't work with search dropdown and we want all options.\n        return promise.then((data) => {\n            var add_option, option, options;\n            options = this.convertOptions(data);\n            if (this.get('isDestroyed')) {\n                return;\n            }\n            if (!old_value) {\n                this.send('select');\n            }\n            option = [];\n            if (old_value) {\n                option = options.filterBy('id', old_value.toString());\n                // this is the last resort .. if there is more than 100 filtered records and old_value is not one of them .. we\n                // try to fetch record with peekRecord and add it on the fly to options.. it should be found (almost always) because\n                // we came to edit route from report witch has already sideloaded the correct record\n                if (\n                    Ember.isEmpty(option) &&\n                    !this.get('model.isNew') &&\n                    ((user_selected && data.get('meta.count') > 100) || !user_selected) &&\n                    this.router._router.currentPath !== 'timetracker.timecard.add'\n                ) {\n                    add_option = {\n                        id: old_value,\n                        text: this.getText(this.get('store').peekRecord(subform, old_value)),\n                    };\n                    option = [add_option];\n                    options.push(add_option);\n                }\n            }\n            value = void 0;\n            if (option.get('length') > 0) {\n                value = option[0];\n            } else if (options.length === 1 && !field.features.do_not_preselect) {\n                value = options[0];\n            }\n            if (this.get('dropdownType') === 'normal') {\n                this.set('defaultValueForNormalDropdown', value ? value.id : value);\n                this.send('normalSelect', value ? value.id : value);\n            } else {\n                this.send('select', value);\n            }\n            return this.set('options', options);\n        });\n    },\n\n    // add observers for modifyDatabaseItems method\n\n    didReceiveAttrs: function () {\n        var c, field, forms, self;\n        field = this.get('field');\n        c = this.get('Collector');\n        forms = c.fieldArray(this.get('form'));\n        self = this;\n        return forms.forEach(function (form) {\n            var ref, reload;\n            reload = form.features.reload;\n            if (!Ember.isArray(reload)) {\n                reload = [reload];\n            }\n            if (((ref = field.name), indexOf.call(reload, ref) >= 0)) {\n                self.addObserver('model.' + form.name, self, self.modifyDatabaseItems);\n                return Ember.run.later(() => {\n                    return self.modifyDatabaseItems(self, 'model.' + form.name, false);\n                }, 500);\n            }\n        });\n    },\n    getText: function (record, field) {\n        var i, len, ref, ref1, text, val;\n        text = '';\n        if (!record) {\n            return '';\n        }\n        if ((!field && !this.get('form')) || !this.get('object')) {\n            return '';\n        }\n        if (!field) {\n            field = this.get('Collector').field(this.get('form'), this.get('object'));\n        }\n        ref = field.options.fields;\n        for (i = 0, len = ref.length; i < len; i++) {\n            field = ref[i];\n            if (!field) {\n                continue;\n            }\n            val = record.get(field);\n            if (val && (ref1 = Ember.typeOf(val)) !== 'object' && ref1 !== 'array') {\n                text += val + ' ';\n            }\n        }\n        return text.slice(0, -1);\n    },\n    setState: function (id, text = '') {\n        this.set('value', id);\n        this.set('text', text);\n        return this.set('search', text);\n    },\n    //ObservePromptTranslation: Ember.on 'init', Ember.observer 'promptTranslation', ->\n    //    @set 'prompt', @get('intl').t @get 'promptTranslation'\n    addModelObs: Ember.on('init', function () {\n        var modelfield;\n        //@updateValueFromModel true\n        modelfield = 'model.' + this.get('object');\n        return this.addObserver(modelfield, this, this.modelChanged);\n    }),\n    modelChanged: function () {\n        if (!this.get('userHasSelected')) {\n            return Ember.run.once(this, this.updateValueFromModel);\n        }\n    },\n    updateValueFromModel: function (init) {\n        var modelfieldid, modelfieldtext, option_id, option_text, orig_value;\n        modelfieldid = 'model.' + this.get('object') + '.id';\n        modelfieldtext = 'model.' + this.get('object') + '.name';\n        option_id = +this.get(modelfieldid);\n        orig_value = this.get('value');\n        option_text = this.get(modelfieldtext);\n        if (!option_text) {\n            option_text = this.getRealOptionText();\n        }\n        if (option_id != null && option_id && option_id !== orig_value) {\n            if (init) {\n                this.set('field.value', option_id);\n                return this.setDefaultValue();\n            } else {\n                return this.setState(option_id, option_text);\n            }\n        }\n    },\n    getRealOptionText: function () {\n        var fields, textArr;\n        fields = Ember.get(\n            this.get('Collector').field(this.get('form'), this.get('object')),\n            'options.fields',\n        );\n        textArr = [];\n        fields.forEach((field) => {\n            return textArr.push(this.get('model.' + this.get('object') + '.' + field));\n        });\n        return textArr.join(' ');\n    },\n    fetchRecordById: function (id) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var f, field, parsedid, record;\n            if (!id) {\n                resolve(null);\n            }\n            field = this.get('field');\n            f = this.get('Collector').field(field.form, field.name);\n            parsedid = id.length > 15 ? id : parseInt(id, 10);\n            record = this.get('store').peekRecord(f.options.form, parsedid);\n            if (record) {\n                return resolve(record);\n            } else {\n                return this.get('store')\n                    .findRecord(f.options.form, parsedid)\n                    .then(\n                        (record) => {\n                            return resolve(record);\n                        },\n                        function (reason) {\n                            return resolve(null);\n                        },\n                    );\n            }\n        });\n    },\n    pushToStore: function (type, data) {\n        data.type = type;\n        data.attributes = data.values;\n        return this.get('store').push({\n            data: data,\n        });\n    },\n    //#####################################################################################################\n\n    // LocalStorage\n\n    sendChange: function (record) {\n        if (record === null) {\n            this.set('field.value', null);\n        } else if (typeof record === 'object') {\n            this.set('field.value', record.get('id'));\n        } else {\n            this.set('field.value', record);\n        }\n        return this.sendAction('bubbleChange', record, this.get('field.name'));\n    },\n    getSettingsFromLs: function () {\n        return this.get('localStorageWrapper').getUserSetting(this.get('localStorageKey'), {});\n    },\n    saveSettingsToLs: function (settings) {\n        if (!this.get('session.currentUser')) {\n            return;\n        }\n        return this.get('localStorageWrapper').setUserSetting(\n            this.get('localStorageKey'),\n            settings,\n        );\n    },\n    setUseLocalStorage: function () {\n        var settings;\n        settings = this.getSettingsFromLs();\n        settings.use = true;\n        return this.saveSettingsToLs(settings);\n    },\n    addToLastused: function (id, text) {\n        var item, lastused, settings;\n        settings = this.getSettingsFromLs();\n        lastused = Em.A(settings.objects);\n        if ((item = lastused.findBy('id', id))) {\n            item.used = moment().format('YYYY-MM-DD HH:mm:ss');\n            item.text = text;\n        } else {\n            lastused.pushObject({\n                id: id,\n                text: text,\n                used: moment().format('YYYY-MM-DD hh:mm:ss'),\n            });\n        }\n        settings.objects = lastused\n            .sortBy('used')\n            .reverse()\n            .slice(0, this.get('localStorage_size_limit'));\n        return this.saveSettingsToLs(settings);\n    },\n    removeFromLastUsed: function (id) {\n        var item, lastused, settings;\n        settings = this.getSettingsFromLs();\n        lastused = Em.A(settings.objects);\n        if ((item = lastused.findBy('id', id))) {\n            lastused.removeObject(item);\n            settings.objects = lastused\n                .sortBy('used')\n                .reverse()\n                .slice(0, this.get('localStorage_size_limit'));\n            return this.saveSettingsToLs(settings);\n        }\n    },\n    getOptionsFromLocalStorage: function () {\n        var settings;\n        settings = this.getSettingsFromLs();\n        return Em.A(settings.objects);\n    },\n    //####################################################################################################\n    setSessionRemoved: function (state) {\n        var show_removed;\n        if (state === 'show_removed') {\n            this.set('show_removed', true);\n            show_removed = this.get('sessionGlobals').get('show_removed');\n            if (!show_removed || show_removed === null) {\n                show_removed = {};\n            }\n            show_removed[this.get('field.name')] = true;\n            this.get('sessionGlobals').set('show_removed', show_removed);\n            this.initilizeDropdown();\n        }\n        if (state === 'hide_removed') {\n            this.set('show_removed', false);\n            show_removed = this.get('sessionGlobals').get('show_removed');\n            //if !show_removed || show_removed is null\n            //    show_removed = {}\n            if (show_removed[this.get('field.name')]) {\n                delete show_removed[this.get('field.name')];\n                this.get('sessionGlobals').set('show_removed', show_removed);\n            }\n            return this.initilizeDropdown();\n        }\n    },\n    clearOptions: function () {\n        return this.set('options', []);\n    },\n    actions: {\n        focusIn: function () {\n            this.set('search', '');\n            return Em.run.later(\n                this,\n                function () {\n                    return this.set('showOptions', true);\n                },\n                200,\n            );\n        },\n        touchMove: function () {\n            //If the user touches this field and starts scrolling, we actually want to scroll and not snap to this field and open options\n            // #UX´\n            return Em.run.debounce(\n                this,\n                function () {\n                    return this.set('touchMoving', true);\n                },\n                50,\n            );\n        },\n        touchStart: function () {\n            //Only open the options if we have not initiated scrolling\n            return Em.run.later(\n                this,\n                function () {\n                    if (!this.get('touchMoving')) {\n                        this.set('search', '');\n                        return this.set('showOptions', true);\n                    }\n                },\n                200,\n            );\n        },\n        touchEnd: function () {\n            //We have ended fiddling with this field,\n            // if we were moving then blur to not snap scroll back to this field because of mobile shenanigans\n            if (this.get('touchMoving')) {\n                this.set('touchMoving', false);\n                return this.element.querySelector('input').blur();\n            }\n        },\n        closeOptions: function () {\n            this.set('showOptions', false);\n            this.set('search', this.get('text') || this.get('prompt'));\n            return this.set('query', '');\n        },\n        focusOut: function () {\n            this.set('showOptions', false);\n            this.set('search', this.get('text') || this.get('prompt'));\n            this.set('query', '');\n            return this.fetchFromDatabase();\n        },\n        loadMore: function () {\n            return this.fetchFromDatabase(true);\n        },\n        normalSelect: function (id) {\n            var option;\n            if (id === null || id === '' || id === void 0 || id === 'null') {\n                this.sendChange(null);\n            }\n            if (id === 'show_removed' || id === 'hide_removed') {\n                if (id === 'show_removed') {\n                    this.get('dialogs').alert(this.get('intl').t('general.showing_removed'));\n                }\n                this.setSessionRemoved(id);\n                return;\n            }\n            if (id === '(empty)') {\n                this.sendChange(id);\n                return;\n            }\n            option = this.get('normalDropdownOptions').findBy('id', parseInt(id, 10));\n            if (option) {\n                this.addToLastused(parseInt(id, 10), option.name);\n            }\n            return this.fetchRecordById(id).then((record) => {\n                return this.sendChange(record);\n            });\n        },\n        select: function (option) {\n            this.set('userHasSelected', true);\n            if (!option) {\n                option = {};\n            }\n            if (option === 'show_removed' || option === 'hide_removed') {\n                this.setSessionRemoved(option);\n                return;\n            }\n            this.set('search', option.id ? option.text : this.get('prompt'));\n            this.set('value', option.id);\n            this.set('text', option.id ? option.text : null);\n            this.set('showOptions', false);\n            this.set('query', null);\n            this.fetchFromDatabase(); // Trigger fetchFromDatabase to update options and computed values\n            if (this.get('value')) {\n                return this.fetchRecordById(this.get('value')).then((record) => {\n                    if (\n                        record.get != null &&\n                        record.get('row_info.status') === 'removed' &&\n                        !this.get('useAsFilter')\n                    ) {\n                        this.get('dialogs').alert(\n                            this.get('intl').t('collector.fields.database.last_used_is_removed'),\n                        );\n                        this.removeFromLastUsed(option.id);\n                        this.set('value', null);\n                        this.set('text', null);\n                        this.set('search', this.get('prompt'));\n                        return this.sendChange(null);\n                    } else {\n                        this.addToLastused(option.id, option.text);\n                        return this.sendChange(record);\n                    }\n                });\n            } else {\n                return this.sendChange(null);\n            }\n        },\n        toggleRemoved: function () {\n            this.set('showOptions', false);\n            if (this.get('show_removed')) {\n                return this.setSessionRemoved('hide_removed');\n            } else {\n                this.get('dialogs').alert(this.get('intl').t('general.showing_removed'));\n                return this.setSessionRemoved('show_removed');\n            }\n        },\n    },\n});\n\nexport default CollectorFieldsDropdownFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"tqGQtcSe\",\"block\":\"{\\\"symbols\\\":[\\\"option\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"dropdownType\\\"]],\\\"normal\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"field\\\",\\\"optionGroups\\\",\\\"classes\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\",\\\"disabled\\\",\\\"autoclear\\\",\\\"useAsFilter\\\",\\\"showEmptySelection\\\"],[[24,[\\\"normalDropdownOptions\\\"]],[24,[\\\"field\\\"]],[24,[\\\"normalDropdownOptionsWithLastused\\\"]],[24,[\\\"_class\\\"]],[24,[\\\"defaultValueForNormalDropdown\\\"]],\\\"normalSelect\\\",[24,[\\\"prompt\\\"]],[24,[\\\"disabled\\\"]],[24,[\\\"field\\\",\\\"autoclear\\\"]],[24,[\\\"useAsFilter\\\"]],[24,[\\\"showEmptySelection\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"ajax-select \\\",[28,\\\"unless\\\",[[24,[\\\"showOptions\\\"]],[24,[\\\"then\\\"]],\\\"active\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[0,\\\"    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"visible-xs-block\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"placeholder\\\",\\\"class\\\",\\\"touchMove\\\",\\\"touchStart\\\",\\\"touchEnd\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"text\\\",[28,\\\"if\\\",[[24,[\\\"prompt\\\"]],[24,[\\\"prompt\\\"]],[28,\\\"t\\\",[\\\"select.search\\\"],null]],null],[24,[\\\"_class\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"touchMove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"touchStart\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"touchEnd\\\"],null],[24,[\\\"search\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross searchclear\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeOptions\\\"]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"hidden-xs\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"placeholder\\\",\\\"class\\\",\\\"focus-in\\\",\\\"focus-out\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"text\\\",[28,\\\"if\\\",[[24,[\\\"prompt\\\"]],[24,[\\\"prompt\\\"]],[28,\\\"t\\\",[\\\"select.search\\\"],null]],null],[24,[\\\"_class\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"focusIn\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"focusOut\\\"],null],[24,[\\\"search\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"options\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"optionsForSearcheableDropdownWithLastused\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[11,\\\"onmousedown\\\",[28,\\\"action\\\",[[23,0,[]],\\\"select\\\",[23,1,[]]],null]],[11,\\\"class\\\",[29,[[23,1,[\\\"class\\\"]],\\\" \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"value\\\"]]],null],\\\"selected\\\"],null]]]],[8],[1,[23,1,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"footer\\\"],[8],[1,[28,\\\"t\\\",[\\\"select.empty\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"moreCount\\\"]],\\\"more\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"footer\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"loadMore\\\"],[[\\\"on\\\"],[\\\"mouseDown\\\"]]],[8],[1,[28,\\\"t\\\",[\\\"select.search_more\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"moreCount\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"footer\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"loadMore\\\"],[[\\\"on\\\"],[\\\"mouseDown\\\"]]],[8],[0,\\\"+ \\\"],[1,[22,\\\"moreCount\\\"],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"select.more\\\"],null],false],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"useAsFilter\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"show_removed\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"action-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleRemoved\\\"],[[\\\"on\\\"],[\\\"mouseDown\\\"]]],[8],[1,[28,\\\"t\\\",[\\\"general.hide_removed\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"action-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleRemoved\\\"],[[\\\"on\\\"],[\\\"mouseDown\\\"]]],[8],[1,[28,\\\"t\\\",[\\\"general.show_removed\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"visible-xs-block\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/database-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/database-gps-force-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDatabaseForceGpsFieldComponent;\n\nimport Ember from 'ember';\n\nimport collectorField from '../../../../mixins/collector-field';\n\nCollectorFieldsDatabaseForceGpsFieldComponent = Ember.Component.extend(collectorField, {\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    store: Ember.inject.service(),\n    gps: Ember.inject.service(),\n    classes: 'form-control add-fields',\n    init: function () {\n        this._super();\n        this.set('forced_projects', Em.A([]));\n        Ember.defineProperty(\n            this,\n            'modelValue',\n            Ember.computed.oneWay('model.' + this.get('field.name')),\n        );\n        this.fetchProjects();\n        return this.get('gps').on('lockedPositionChanged', () => {\n            return this.fetchProjects();\n        });\n    },\n    fetchProjects: function () {\n        var forced, forced_params;\n        forced = Ember.A([]);\n        forced_params = {\n            force_location: 'on',\n            location_map: '!(empty)',\n            limit: 'all',\n        };\n        this.addFilterOptionsToParams(forced_params);\n        if (!this.get('gps').get('lockedPosition')) {\n            return;\n        }\n        return this.get('store')\n            .query('project', forced_params)\n            .then((data) => {\n                var gps;\n                if (this.get('isDestroyed')) {\n                    return;\n                }\n                this.set('forced_projects', forced);\n                gps = this.get('gps');\n                data.forEach((project) => {\n                    var projLoc;\n                    projLoc = JSON.parse(project.get('location_map'));\n                    if (\n                        project.get('location_map') &&\n                        gps.withinAcceptedDistance(\n                            {\n                                lat: projLoc.latitude,\n                                lon: projLoc.longitude,\n                            },\n                            {\n                                lat: gps.get('lockedLatitude'),\n                                lon: gps.get('lockedLongitude'),\n                            },\n                        )\n                    ) {\n                        return forced.pushObject(project);\n                    }\n                });\n                if (\n                    this.get('modelValue.id') &&\n                    this.get('modelValue.force_location') === 'on' &&\n                    !forced.findBy('id', this.get('modelValue.id'))\n                ) {\n                    return this.send('changeValue', null);\n                }\n            });\n    },\n    normal_projects: Ember.computed(function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                var params;\n                params = {\n                    force_location: 'off',\n                };\n                this.addFilterOptionsToParams(params);\n                return this.get('store')\n                    .query('project', params)\n                    .then((data) => {\n                        if (this.get('isDestroyed')) {\n                            resolve({\n                                value: null,\n                            });\n                            return;\n                        }\n                        return resolve({\n                            value: data,\n                        });\n                    });\n            }),\n        });\n    }),\n    addFilterOptionsToParams: function (params) {\n        var filterOptions, key, results;\n        filterOptions = this.get('field.filterOptions');\n        results = [];\n        for (key in filterOptions) {\n            results.push((params[key] = filterOptions[key]));\n        }\n        return results;\n    },\n    willDestroy: function () {\n        return this.get('gps').off('lockedPositionChanged', this, 'fetchProjects');\n    },\n    actions: {\n        changeValue: function (value) {\n            if (value) {\n                value = this.get('store').peekRecord(this.get('field.options.form'), value);\n            }\n            return this.sendAction('bubbleChange', value, this.get('field'));\n        },\n    },\n});\n\nexport default CollectorFieldsDatabaseForceGpsFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"2z4kJUhb\",\"block\":\"{\\\"symbols\\\":[\\\"project\\\",\\\"project\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"select\\\",true],[11,\\\"disabled\\\",[22,\\\"disabled\\\"]],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[11,\\\"class\\\",[22,\\\"classes\\\"]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[11,\\\"selected\\\",[28,\\\"unless\\\",[[24,[\\\"modelValue\\\"]],true],null]],[8],[1,[28,\\\"t\\\",[\\\"gps.choose\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"gps\\\",\\\"lockedPosition\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"optgroup\\\",true],[11,\\\"label\\\",[28,\\\"t\\\",[\\\"gps.forced_projects\\\"],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"forced_projects\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[24,[\\\"modelValue\\\",\\\"id\\\"]],[23,2,[\\\"id\\\"]]],null]],[11,\\\"value\\\",[29,[[23,2,[\\\"id\\\"]]]]],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"form\\\"]],[23,2,[]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"optgroup\\\",true],[11,\\\"label\\\",[28,\\\"t\\\",[\\\"gps.normal_projects\\\"],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"normal_projects\\\",\\\"value\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[24,[\\\"modelValue\\\",\\\"id\\\"]],[23,1,[\\\"id\\\"]]],null]],[11,\\\"value\\\",[29,[[23,1,[\\\"id\\\"]]]]],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"form\\\"]],[23,1,[]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"gps\\\",\\\"lockedPosition\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"gps\\\",\\\"status\\\"]],\\\"error\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"show-linefeeds\\\",[[28,\\\"t\\\",[[24,[\\\"gps\\\",\\\"lastErrorMessage\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"general.loading\\\"],null]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/database-gps-force-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/databasearray-adder-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDatabasearrayAdderFieldComponent;\n\nimport Ember from 'ember';\n\n//import recordComp from '../../record-comp/component'\nCollectorFieldsDatabasearrayAdderFieldComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    /*\n  THESE THREE VALUES MUST BE CODED BETTER IF THIS FIELD IS USED SOMEWHERE ELSE THAN WORKTIME.MATERIAL\n  */\n    form: Ember.computed.alias('field.options.form'),\n    parentform: Ember.computed.alias('field.form'),\n    fieldname: Ember.computed.alias('field.name'),\n    //records: Ember.computed.alias 'model.material'\n    //helperArray: Ember.A []\n    initAliases: Ember.on('init', function () {\n        return Ember.defineProperty(\n            this,\n            'records',\n            Ember.computed.alias('model.' + this.get('fieldname')),\n        );\n    }),\n    didInsertElement: function () {\n        var ids;\n        this.set('helperArray', Ember.A([]));\n        ids = [];\n        return this.get('records').then((records) => {\n            var promise;\n            records.forEach((record) => {\n                if (record.get('id')) {\n                    return ids.push(record.get('id'));\n                }\n            });\n            promise = new Em.RSVP.Promise((resolve, reject) => {\n                if (ids.length > 0) {\n                    return resolve(\n                        this.get('store').query(this.get('form'), {\n                            id: ids.join(','),\n                            include: true,\n                        }),\n                    );\n                } else {\n                    return resolve([]);\n                }\n            });\n            return promise.then(() => {\n                return records.forEach((record) => {\n                    var show_fields;\n                    // set correct values for every field\n                    show_fields = this.showFields().map(function (field) {\n                        var key;\n                        key = field.name + (field.type === 'database' ? '.id' : '');\n                        field.value = record.get(key);\n                        return field;\n                    });\n                    return this.get('helperArray').pushObject({\n                        record: record,\n                        showFields: show_fields,\n                    });\n                });\n            });\n        });\n    },\n    //willDestroyElement: ->\n    //    console.log \"destroy\"\n    //    @get('records.lastObject').deleteRecord()\n    showFields: function () {\n        var c, fields, form, parentfields;\n        c = this.get('Collector');\n        // Collector form\n        form = this.get('form');\n        parentfields = c.fieldArray(this.get('parentform'));\n        // Fetch form fields with collector service\n        fields = c.fieldArray(form);\n        return fields.filter(function (field) {\n            if (field.features != null && field.features.hide) {\n                return false;\n            }\n            return !parentfields.findBy('name', field.name);\n        });\n    },\n    createAddRow: function () {\n        var parentfields, record;\n        record = this.get('store').createRecord(this.get('form'));\n        //record.send('becomeClean')\n        parentfields = this.get('Collector').fieldArray(this.get('parentform'));\n        parentfields.forEach((field) => {\n            return record.set(field.name, this.get('model.' + field.name));\n        });\n        this.get('records').pushObject(record);\n        return this.get('helperArray').pushObject({\n            record: record,\n            showFields: this.showFields(),\n        });\n    },\n    autoSetHours: function () {\n        var allAreTheSame, endtime, lastOneMinutes, minutes, split, sumBefore;\n        if (this.get('field.features.validate_check') !== 'multipleHours') {\n            return;\n        }\n        minutes = 0;\n        endtime = this.get('model.endtime') ? this.get('model.endtime') : moment().format('HH:mm');\n        if (\n            !this.get('model.starttime') &&\n            !this.get('model.endtime') &&\n            this.get('model.work_hours')\n        ) {\n            split = this.get('model.work_hours').split(':');\n            minutes = parseInt(split[0], 10) * 60 + parseInt(split[1], 10);\n        } else {\n            minutes = moment(this.get('model.date') + ' ' + endtime).diff(\n                moment(this.get('model.date') + ' ' + this.get('model.starttime')),\n                'minutes',\n            );\n        }\n        if (this.get('model.pause')) {\n            minutes -= this.get('model.pause');\n        }\n        if (!minutes) {\n            return;\n        }\n        if (minutes < 0) {\n            minutes += 1440;\n        }\n        sumBefore = 0;\n        lastOneMinutes = null;\n        allAreTheSame = true;\n        this.get('records').forEach((row) => {\n            var addMinutes;\n            if (typeof row.get('hours') === 'string') {\n                split = row.get('hours').split(':');\n                addMinutes = parseInt(split[0], 10) * 60 + parseInt(split[1], 10);\n            } else if (typeof row.get('hours') === 'number') {\n                addMinutes = row.get('hours') * 60;\n            } else {\n                return;\n            }\n            if (lastOneMinutes && lastOneMinutes !== addMinutes) {\n                allAreTheSame = false;\n            }\n            lastOneMinutes = addMinutes;\n            return (sumBefore += addMinutes);\n        });\n        // if all hours is divided to rows and all rows are the same we change hours of every row\n        if (sumBefore === minutes && allAreTheSame) {\n            return this.get('records').forEach((record) => {\n                return record.set('hours', minutes / this.get('records.length') / 60);\n            });\n            // if rows have been edited and there is still minutes left add all of those minutes to new row\n        } else if (minutes > sumBefore) {\n            return this.get('records.lastObject').set('hours', (minutes - sumBefore) / 60);\n        }\n    },\n    actions: {\n        change: function (record) {\n            return this.sendAction(\n                'bubbleChange',\n                this.get('model.' + this.get('field.name')),\n                this.get('field'),\n                false,\n            );\n        },\n        //    if @get('records').indexOf(record) == @get('records.length') - 1\n        //        @createAddRow()\n        addRow: function () {\n            this.createAddRow();\n            this.autoSetHours();\n            return false;\n        },\n        remove: function (helperRow) {\n            var record;\n            //console.log \"before\", @get('records.length')\n            record = Ember.get(helperRow, 'record');\n            this.get('records').removeObject(record);\n            this.get('helperArray').removeObject(helperRow);\n            if (record.get('isNew')) {\n                return record.deleteRecord();\n            } else {\n                record.destroyRecord();\n                return this.sendAction(\n                    'bubbleChange',\n                    this.get('model.' + this.get('field.name')),\n                    this.get('field'),\n                    false,\n                );\n            }\n        },\n    },\n});\n\n//console.log \"after\", @get('records.length')\n//if @get('records.length') < 1\n//    @createAddRow()\nexport default CollectorFieldsDatabasearrayAdderFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"srFKcB9d\",\"block\":\"{\\\"symbols\\\":[\\\"helperRow\\\",\\\"field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"records\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"table\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"helperArray\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"databasearray-adder-field-content-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"showFields\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"databasearray-adder-field-content\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"databasearray-adder-field-content-label\\\"],[8],[1,[23,2,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"collector/field-comp\\\",[[23,2,[]]],[[\\\"change\\\",\\\"model\\\",\\\"filter\\\",\\\"class\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",[24,[\\\"record\\\"]]],null],[23,1,[\\\"record\\\"]],[24,[\\\"filter\\\"]],\\\"form-control add-fields\\\\n                        databasearray-adder-select\\\"]]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"remove move move-Cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,1,[]]]],[8],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"plus\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addRow\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/databasearray-adder-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/databasearray-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDatabasearrayFieldComponent;\n\nimport Ember from 'ember';\n\nimport {\n    //import baseField from '../base-field/component'\n    copy,\n} from 'ember-copy';\n\nCollectorFieldsDatabasearrayFieldComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    //#######\n    // THIS CURRENTLY ONLY WORKS WITH USER FIELD\n    // IF YOU WANT TO USE ELSEWHERE THEN MAKE IT WORK!!!!\n    //######\n    loadValues: Ember.computed('model', function () {\n        var c, hasMany;\n        c = this.get('Collector');\n        if (c.fieldExists(this.get('field.form'), this.get('field.name'))) {\n            hasMany = this.get('model').hasMany(this.get('field.name')).ids();\n            if (hasMany.length > 0) {\n                return this.get('store').query('user', {\n                    field: this.get('field.name'),\n                    form: this.get('field.form'),\n                    id: hasMany.join(','),\n                });\n            }\n        }\n    }),\n    databaseField: Ember.computed('field', function () {\n        var field;\n        field = copy(this.get('field'));\n        field.value = void 0;\n        return field;\n    }),\n    actions: {\n        setValue: function (value) {\n            this.get('model.' + this.get('field.name')).pushObject(value);\n            this.set('databaseField.value', void 0);\n            this.set('showDropdown', false);\n            return this.sendAction(\n                'bubbleChange',\n                this.get('model.' + this.get('field.name')),\n                this.get('field.name'),\n                false,\n            );\n        },\n        removeItem: function (value) {\n            this.get('model.' + this.get('field.name')).removeObject(value);\n            this.set('showDropdown', false);\n            return this.sendAction(\n                'bubbleChange',\n                this.get('model.' + this.get('field.name')),\n                this.get('field.name'),\n                false,\n            );\n        },\n        addValue: function () {\n            this.toggleProperty('showDropdown');\n            return false;\n        },\n    },\n});\n\nexport default CollectorFieldsDatabasearrayFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"5dZCJ57A\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"databasearray-field-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showDropdown\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/fields/database-field\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"bubbleChange\\\"],[[24,[\\\"databaseField\\\"]],\\\"involved-dropdown form-control add-fields\\\",\\\"setValue\\\"]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"databasearray-field-close-dropdown input-group-addon link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addValue\\\"]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cross\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"loadValues\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[28,\\\"get\\\",[[24,[\\\"model\\\"]],[24,[\\\"field\\\",\\\"name\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"databasearray-field-item\\\"],[12,\\\"title\\\",[28,\\\"concat\\\",[[23,1,[\\\"firstname\\\"]],\\\" \\\",[23,1,[\\\"lastname\\\"]]],null]],[12,\\\"style\\\",[29,[\\\"background-color:\\\\n                 \\\",[28,\\\"unless\\\",[[23,1,[\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]],[28,\\\"randomize-color\\\",[[23,1,[\\\"firstname\\\"]],[23,1,[\\\"lastname\\\"]]],null]],null],\\\";\\\\n                 background-image: url(\\\\n            '\\\",[28,\\\"if\\\",[[23,1,[\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]],[28,\\\"api-image\\\",[[23,1,[\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],null]],null],\\\"')\\\"]]],[3,\\\"action\\\",[[23,0,[]],\\\"removeItem\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[23,1,[\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"short-format\\\",[[28,\\\"concat\\\",[[23,1,[\\\"firstname\\\"]],\\\" \\\",[23,1,[\\\"lastname\\\"]]],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"remove-item\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cross\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[4,\\\"unless\\\",[[24,[\\\"showDropdown\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"databasearray-field-add-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addValue\\\"]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/databasearray-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/date-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDateFieldComponent;\n\nimport Ember from 'ember';\n\nimport { inject as service } from '@ember/service';\n\nimport baseField from '../text-field/component';\n\nCollectorFieldsDateFieldComponent = baseField.extend({\n    evented: service(),\n    dropdown_date: Ember.computed(function () {\n        var arr, date, date_interval, end, i, j, ref, ref1, splitted, start;\n        date_interval = this.get('field.features.date_interval');\n        if (!date_interval) {\n            return null;\n        }\n        if (date_interval === 'locked') {\n            return 'locked';\n        }\n        arr = Em.A();\n        splitted = ('' + date_interval).split(',');\n        if (splitted.length > 1) {\n            start = splitted[1] * -1;\n            end = splitted[0];\n        } else {\n            start = 0;\n            end = date_interval;\n        }\n        for (\n            i = j = ref = start, ref1 = end;\n            ref <= ref1 ? j < ref1 : j > ref1;\n            i = ref <= ref1 ? ++j : --j\n        ) {\n            date = moment().subtract(i, 'days');\n            arr.push(\n                Ember.Object.create({\n                    id: date.format('YYYY-MM-DD'),\n                    name: date.format('dddd L'),\n                }),\n            );\n        }\n        return arr;\n    }),\n    init: function () {\n        this._super();\n        return this.evented.on('onResumed', this, 'updateDate');\n    },\n    willDestroyElement: function () {\n        this._super();\n        return this.evented.off('onResumed', this, 'updateDate');\n    },\n    updateDate: function () {\n        return this.notifyPropertyChange('dropdown_date');\n    },\n});\n\nexport default CollectorFieldsDateFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"xGThM79I\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"dropdown_date\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"dropdown_date\\\"]],\\\"locked\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"value\\\"]],\\\"dddd L\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"select-comp\\\",null,[[\\\"content\\\",\\\"value\\\",\\\"classes\\\"],[[24,[\\\"dropdown_date\\\"]],[24,[\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"max\\\",\\\"value\\\",\\\"name\\\",\\\"class\\\",\\\"disabled\\\"],[\\\"9999-12-31\\\",[24,[\\\"value\\\"]],[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"_class\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/date-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/datetime-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDatetimeFieldComponent;\n\nimport Ember from 'ember';\n\nimport baseField from '../text-field/component';\n\nimport moment from 'moment';\n\nCollectorFieldsDatetimeFieldComponent = baseField.extend({\n    datevalue: Em.computed('value', function () {\n        if (!this.get('value')) {\n            return '';\n        }\n        return this.get('value').substr(0, 10);\n    }),\n    timevalue: Em.computed('value', function () {\n        if (!this.get('value')) {\n            return '';\n        }\n        return this.get('value').substr(11, 5);\n    }),\n    actions: {\n        changeTime: function (event) {\n            var time, tmpValue;\n            time = event.target.value;\n            tmpValue = this.get('value') ? this.get('value') : moment().format('YYYY-MM-DD');\n            return this.set('value', tmpValue.substr(0, 10) + ' ' + time);\n        },\n        changeDate: function (event) {\n            var date, tmpValue;\n            date = event.target.value;\n            tmpValue = this.get('value') ? this.get('value') : moment().format('YYYY-MM-DD HH:mm');\n            return this.set('value', date + ' ' + tmpValue.substr(11, 5));\n        },\n    },\n});\n\nexport default CollectorFieldsDatetimeFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"HHxKEV5D\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"name\\\",\\\"disabled\\\",\\\"input\\\"],[\\\"form-control add-fields date-input-component combined-fields\\\",[24,[\\\"datevalue\\\"]],[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"name\\\"]],\\\"-date\\\"],null],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeDate\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[0,\\\"    \\\"],[7,\\\"input\\\",true],[11,\\\"class\\\",[28,\\\"concat\\\",[[24,[\\\"_class\\\"]],\\\" combined-fields\\\"],null]],[11,\\\"name\\\",[29,[[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"name\\\"]],\\\"-time\\\"],null]]]],[11,\\\"value\\\",[22,\\\"timevalue\\\"]],[11,\\\"disabled\\\",[22,\\\"disabled\\\"]],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"changeTime\\\"],null]],[10,\\\"type\\\",\\\"time\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/datetime-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/dropdown-country-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDropdownCountryFieldComponent;\n\nimport Ember from 'ember';\n\nimport base from '../base-field/component';\n\nCollectorFieldsDropdownCountryFieldComponent = base.extend({\n    countryLists: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    prompt: Em.computed(function () {\n        return this.get('intl').t('general.choose') + '...';\n    }),\n    options: Ember.computed.alias('countryLists.fullList'),\n    _value: Ember.computed('field.value', function () {\n        if (this.get('field.value')) {\n            return this.get('field.value').toLowerCase();\n        }\n    }),\n    actions: {\n        bubbleChange: function (value) {\n            return this.sendAction('bubbleChange', value, this.get('field.name'));\n        },\n    },\n});\n\nexport default CollectorFieldsDropdownCountryFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"736lg5jJ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\",\\\"disabled\\\",\\\"autoclear\\\",\\\"name\\\"],[[24,[\\\"options\\\"]],[24,[\\\"_class\\\"]],[24,[\\\"_value\\\"]],\\\"bubbleChange\\\",[24,[\\\"prompt\\\"]],[24,[\\\"disabled\\\"]],[24,[\\\"field\\\",\\\"autoclear\\\"]],[24,[\\\"field\\\",\\\"name\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/dropdown-country-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/dropdown-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDropdownFieldComponent;\n\nimport Ember from 'ember';\n\nimport collectorField from '../../../../mixins/collector-field';\n\nimport $ from 'jquery';\n\nCollectorFieldsDropdownFieldComponent = Ember.Component.extend(collectorField, {\n    intl: Em.inject.service(),\n    localStorageWrapper: Em.inject.service(),\n    setDefaultValue: Ember.on('init', function () {\n        if (this.get('field.value')) {\n            return this.set('value', this.get('field.value'));\n        }\n    }),\n    fieldoptions: Em.computed('field.options', 'field.options.[]', function () {\n        var field, options;\n        options = this.get('field.options');\n        if (!options) {\n            return;\n        }\n        field = this.get('field');\n        return options.map((item) => {\n            if (this.get('intl').exists(field.form + '.' + field.name + '.' + item.value)) {\n                Ember.set(\n                    item,\n                    'value',\n                    this.get('intl').t(field.form + '.' + field.name + '.' + item.value),\n                );\n            }\n            return item;\n        });\n    }),\n    localStorageKey: Em.computed('field.name', function () {\n        return 'select_' + this.get('field.name');\n    }),\n    actions: {\n        change: function () {\n            //update localstorage\n            this.get('localStorageWrapper').setUserSetting(\n                this.get('localStorageKey'),\n                $('select', this.element).val(),\n            );\n            //TODO: Should maybe use normal dropdown component and not own thing ?\n            return this.sendAction(\n                'bubbleChange',\n                $('select', this.element).val(),\n                this.get('field.name'),\n            );\n        },\n    },\n});\n\nexport default CollectorFieldsDropdownFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"X20Cg8rA\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[7,\\\"select\\\",false],[12,\\\"name\\\",[24,[\\\"field\\\",\\\"name\\\"]]],[12,\\\"class\\\",[29,[[22,\\\"_class\\\"]]]],[12,\\\"disabled\\\",[22,\\\"disabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"change\\\"],[[\\\"on\\\"],[\\\"change\\\"]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[8],[1,[28,\\\"if\\\",[[24,[\\\"field\\\",\\\"prompt\\\"]],[24,[\\\"field\\\",\\\"prompt\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fieldoptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[29,[[23,1,[\\\"id\\\"]]]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"value\\\"]]],null]],[8],[0,\\\"\\\\n            \\\"],[1,[23,1,[\\\"value\\\"]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/dropdown-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/dropdown-userlevel-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDropdownCountryFieldComponent;\n\nimport Ember from 'ember';\n\nimport base from '../base-field/component';\n\nCollectorFieldsDropdownCountryFieldComponent = base.extend({\n    intl: Ember.inject.service(),\n    options: Ember.computed('field.options', function () {\n        var i, len, new_option, option, options, real_options;\n        options = this.get('field.options');\n        real_options = [];\n        for (i = 0, len = options.length; i < len; i++) {\n            option = options[i];\n            if (option) {\n                if (typeof option !== 'object') {\n                    new_option = {};\n                    new_option.id = option;\n                    option = new_option;\n                }\n                if (parseInt(option.id) > 9) {\n                    option.name = option.id.substring(2);\n                    option.id = parseInt(option.id).toString(); // to remove all but numbers (in case of own userroles)\n                } else {\n                    option.name = this.get('intl').t(\n                        this.get('field.form') + '.' + this.get('field.name') + '.' + option.id,\n                    );\n                }\n                real_options.push(option);\n            }\n        }\n        return real_options;\n    }),\n    prompt: Ember.computed('field.prompt', function () {\n        if (this.get('field.prompt.string')) {\n            return this.get('field.prompt');\n        }\n        if (this.get('field.prompt')) {\n            return this.get('intl').t(this.get('field.prompt'));\n        } else {\n            return this.get('intl').t('general.select_choose');\n        }\n    }),\n    actions: {\n        bubbleChange: function (value) {\n            return this.sendAction('bubbleChange', value, this.get('field.name'));\n        },\n    },\n});\n\nexport default CollectorFieldsDropdownCountryFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"tTd4y7Pr\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\",\\\"disabled\\\",\\\"autoclear\\\"],[[24,[\\\"options\\\"]],[24,[\\\"_class\\\"]],[24,[\\\"field\\\",\\\"value\\\"]],\\\"bubbleChange\\\",[24,[\\\"prompt\\\"]],[24,[\\\"disabled\\\"]],[24,[\\\"field\\\",\\\"autoclear\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/dropdown-userlevel-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/fileupload-field-ver3/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsFileUploadFieldComponent;\n\nimport Ember from 'ember';\n\nimport config from '../../../../config/environment';\nimport { blackListFiles } from 'tt4/ember-movenium/utils/file';\nimport { get, set, computed } from '@ember/object';\n\nimport File from 'ember-file-upload/file';\n\nimport collector from 'tt4/classes/collector';\n\nimport { resizeImage } from 'tt4/utils/file-util';\n\n// Thumbnail configuration\n// 100px width provides good quality for 50px display (2x retina) and 100px file preview areas\nconst THUMBNAIL_WIDTH = 100;\nconst THUMBNAIL_QUALITY = 80;\n\nCollectorFieldsFileUploadFieldComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    gui: Ember.inject.service(),\n    capi: Ember.inject.service(),\n    FileQueue: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    is_image_file: Ember.computed.alias('field.features.is_image'),\n    // cache for saving base64 images to show in preview before those are even sent\n    base64imageCache: {},\n    base64Cache: {},\n    testQueue: {\n        files: [\n            {\n                name: 'testlongsafaslfsdsdf sdfsdf.txt',\n                progress: 20,\n            },\n            {\n                name: 'test2.txt',\n                progress: 70,\n            },\n        ],\n    },\n    is_image_file: computed.alias('field.features.is_image'),\n    single_file: computed.alias('field.features.single_file'),\n    is_public: computed.alias('field.features.public'),\n    init: function () {\n        this._super();\n        return (this.value = this.get('field.value'));\n    },\n    showAddButton: computed('single_file', 'value.[]', function () {\n        if (this.get('single_file') && this.get('value.length') > 0) {\n            return false;\n        } else if (this.get('gui.isIE')) {\n            return false;\n        } else {\n            return true;\n        }\n    }),\n    addButtonText: computed(function () {\n        if (this.get('field.form') === 'logo') {\n            return this.get('intl').t('add.logo');\n        } else if (this.get('is_image_file') && this.get('gui.isAndroid')) {\n            return this.get('intl').t('field.fileupload.add_from_camera');\n        } else if (this.get('is_image_file')) {\n            return this.get('intl').t('add.image');\n        } else {\n            return this.get('intl').t('add.file');\n        }\n    }),\n    queueName: computed('field.form', 'field.name', function () {\n        return (\n            'files_' +\n            this.get('field.form') +\n            '.' +\n            this.get('field.name') +\n            '.' +\n            Math.random().toString(36).substring(7)\n        );\n    }),\n    imageTypes: [\n        'image/gif',\n        'image/png',\n        'image/jpg',\n        'image/jpeg',\n        'image/gif',\n        'image/svg',\n        'image/bmp',\n    ],\n    exeTypes: [\n        'application/octet-stream',\n        'application/x-msdownload',\n        'application/exe',\n        'application/x-exe',\n        'application/dos-exe',\n        'vms/exe',\n        'application/x-winexe',\n        'application/msdos-windows',\n        'application/x-msdos-program',\n    ],\n    isImageType: function (type) {\n        return this.imageTypes.indexOf(type) !== -1;\n    },\n    addFile: function (file) {\n        if (!Ember.isArray(this.get('value'))) {\n            this.set('value', []);\n        }\n        this.get('value').pushObject(file);\n        return this.send('change', this.get('value'));\n    },\n    fileList: computed('value.[]', 'awsurl', function () {\n        if (!this.get('value')) {\n            return;\n        }\n        return this.get('value').map((file) => {\n            var fileObj;\n            fileObj = {\n                name: get(file, 'name'),\n                type: get(file, 'type'),\n                originalFile: file,\n            };\n            if (this.isImageType(get(file, 'type'))) {\n                // For images: prefer S3 thumbnail URL from API. Fall back to local base64 cache\n                // for files uploaded in current session that don't have S3 URLs yet (upload in progress)\n                fileObj.s3thumb =\n                    get(file, 's3thumb') || this.get('base64imageCache')[get(file, 'name_on_hd')];\n                // For modal, use full image URL instead of thumbnail\n                fileObj.previewFile = get(file, 's3url') || fileObj.s3thumb;\n            } else if (get(file, 's3url')) {\n                // Use signed URLs for other files - prefer s3url, fall back to traditional url, then base64Cache\n                fileObj.previewFile = get(file, 's3url');\n            } else if (get(file, 'url')) {\n                fileObj.previewFile = this.get('Collector').makeFileUrl(\n                    collector.api_url() + '/',\n                    get(file, 'url'),\n                );\n            } else {\n                fileObj.previewFile = this.get('base64Cache')[get(file, 'name_on_hd')];\n            }\n            return fileObj;\n        });\n    }),\n    uploadFile: function (file, isImageType = false) {\n        const fileExt = file.name?.split('.')[1].toLowerCase();\n        if (blackListFiles().includes('.' + fileExt)) {\n            get(this, 'FileQueue.files').removeObject(file);\n            return this.notifications.error(this.intl.t('field.fileupload.blocked_filetype'), {\n                autoClear: true,\n            });\n        }\n        var policyurl;\n        policyurl = 'awsurl?filename=' + get(file, 'name') + '&format=policy';\n        if (this.get('is_public')) {\n            policyurl += '&public=true';\n        }\n        if (isImageType) {\n            policyurl += '&thumb=true';\n        }\n        return this.get('capi')\n            .request(policyurl)\n            .then(\n                (response) => {\n                    var fileObj, task;\n                    fileObj = {\n                        name: get(file, 'name'),\n                        type: get(file, 'type'),\n                        name_on_hd: response.s3file,\n                    };\n                    task = file.upload(response.url, {\n                        data: response.inputs,\n                    });\n                    if (isImageType) {\n                        this.createThumb(get(file, 'name'), get(file, 'type'), file.blob, response);\n                        file.readAsDataURL().then((base64Url) => {\n                            this.get('base64imageCache')[response.s3file] = base64Url;\n                            return this.notifyPropertyChange('fileList');\n                        });\n                    } else {\n                        file.readAsDataURL().then((url) => {\n                            this.get('base64Cache')[response.s3file] = url;\n                            return this.notifyPropertyChange('fileList');\n                        });\n                    }\n                    task.then((response) => {\n                        return this.notifyPropertyChange('fileList');\n                    });\n                    file.task = task;\n                    file.name_on_hd = response.s3file;\n                    return this.addFile(fileObj);\n                },\n                (reason) => {\n                    return alert('upload failed');\n                },\n            );\n    },\n    createThumb: function (filename, type, blob, policyResponse) {\n        return this.resizeImageToThumbnail(blob).then((resized) => {\n            var resizedImageFile;\n            resizedImageFile = File.fromDataURL(resized);\n            set(resizedImageFile, 'name', filename);\n            set(resizedImageFile, 'type', type);\n            return resizedImageFile.upload(policyResponse.thumb.url, {\n                data: policyResponse.thumb.inputs,\n            }).then((result) => {\n                return result;\n            }).catch((error) => {\n                console.error('Thumbnail upload failed:', error);\n                throw error;\n            });\n        }).catch((error) => {\n            console.error('Thumbnail creation failed:', error);\n            throw error;\n        });\n    },\n    resizeImageToThumbnail: function (file) {\n        return new Ember.RSVP.Promise((resolve) => {\n            return resizeImage(file, THUMBNAIL_WIDTH, null, THUMBNAIL_QUALITY, true).then((resized) => {\n                return resolve(resized);\n            }).catch((error) => {\n                console.error('Thumbnail creation failed:', error);\n                throw error;\n            });\n        });\n    },\n\n    resizeMainImage: function (file) {\n        return new Ember.RSVP.Promise((resolve) => {\n            // Don't pass width parameter - let utility's smart logic decide based on image size\n            return resizeImage(file).then((resized) => {\n                return resolve(resized);\n            }).catch((error) => {\n                console.error('Main image processing failed:', error);\n                throw error;\n            });\n        });\n    },\n    actions: {\n        uploadImage: function (file) {\n            if (get(file, 'size') > 20971520) {\n                return this.get('notifications').error(\n                    this.get('intl').t('field.fileupload.file_too_large'),\n                    {\n                        autoClear: true,\n                    },\n                );\n            }\n            if (this.isImageType(get(file, 'type'))) {\n                return this.resizeMainImage(file.blob).then((resized) => {\n                    var queue, resizedImageFile;\n                    queue = get(this, 'FileQueue').find(this.get('queueName'));\n                    // original file must be removed from queue by hand\n                    get(this, 'FileQueue.files').removeObject(file);\n                    resizedImageFile = File.fromDataURL(resized);\n                    set(resizedImageFile, 'name', get(file, 'name'));\n                    set(resizedImageFile, 'type', get(file, 'type'));\n                    get(this, 'FileQueue.files').pushObject(resizedImageFile);\n                    get(queue, 'files').pushObject(resizedImageFile);\n                    return this.uploadFile(resizedImageFile, true);\n                });\n            } else {\n                return this.uploadFile(file);\n            }\n        },\n        abort: function (file) {\n            this.get('value').removeObject(this.get('value').findBy('name_on_hd', file.name_on_hd));\n            this.send('change', this.get('value'));\n            return file.task.cancel();\n        },\n        addFile: function (source = null) {\n            var options;\n            options = {\n                allowEdit: false,\n                targetWidth: 1600,\n                targetHeight: 1600,\n                quality: 70,\n                destinationType: Camera.DestinationType.FILE_URI,\n                sourceType:\n                    source === 'gallery'\n                        ? Camera.PictureSourceType.PHOTOLIBRARY\n                        : Camera.PictureSourceType.CAMERA,\n                mediaType: Camera.MediaType.PICTURE,\n                encodingType: Camera.EncodingType.JPEG,\n                correctOrientation: true,\n                encodingType: 0,\n            };\n            return navigator.camera.getPicture(\n                (imageData) => {\n                    return window.resolveLocalFileSystemURL(\n                        imageData,\n                        (fileEntry) => {\n                            return fileEntry.file((file) => {\n                                file.type = 'image/jpeg';\n                                file.name = file.name.replace(\n                                    'image.',\n                                    'image' + moment().format('YYYY-MM-DD-hh-mm-ss') + '.',\n                                );\n                                return this.send('uploadImage', {\n                                    blob: file,\n                                    name: file.name,\n                                    type: file.type,\n                                });\n                            });\n                        },\n                        function (e) {\n                            throw new Ember.Error(e);\n                        },\n                    );\n                },\n                function (message) {\n                    throw new Ember.Error(message);\n                },\n                options,\n            );\n        },\n        removeFile: function (file) {\n            if (this.showModal) {\n                this.set('showModal', false);\n            }\n            this.get('value').removeObject(file);\n            return this.send('change', this.get('value'));\n        },\n        change: function (value) {\n            this.set('value', value);\n            return this.sendAction('bubbleChange', value, this.get('field.name'));\n        },\n    },\n});\n\nexport default CollectorFieldsFileUploadFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"fgPqt54H\",\"block\":\"{\\\"symbols\\\":[\\\"queue\\\",\\\"file\\\",\\\"file\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"gui\\\",\\\"isIE\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"field.warning.ie_not_supported\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"file-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fileList\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"file-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"includes\\\",[[23,3,[\\\"type\\\"]],[24,[\\\"exeTypes\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"file-preview\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumb-container\\\"],[8],[0,\\\"\\\\n                            \\\"],[4,\\\"unless\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cancel delete\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeFile\\\",[23,3,[\\\"originalFile\\\"]]]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"move move-Note file-icon\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[\\\"s3thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"file-preview\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"previewFile\\\"]]],null],[23,3,[\\\"previewFile\\\"]]],null]]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showModal\\\"]]],null]],null]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumb-container\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[23,3,[\\\"s3thumb\\\"]],\\\")\\\"]]],[8],[0,\\\"\\\\n                            \\\"],[4,\\\"unless\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cancel delete\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeFile\\\",[23,3,[\\\"originalFile\\\"]]]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"file-preview\\\"],[11,\\\"href\\\",[29,[[23,3,[\\\"previewFile\\\"]]]]],[11,\\\"download\\\",[29,[[23,3,[\\\"name\\\"]]]]],[11,\\\"target\\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"isAndroid\\\"]],\\\"_blank\\\",\\\"\\\"],null]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumb-container\\\"],[8],[0,\\\"\\\\n                            \\\"],[4,\\\"unless\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cancel delete\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeFile\\\",[23,3,[\\\"originalFile\\\"]]]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"move move-Note file-icon\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"queue-filename\\\"],[11,\\\"title\\\",[29,[[23,3,[\\\"name\\\"]]]]],[8],[1,[23,3,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@outsideClose\\\",\\\"@classes\\\"],[[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showModal\\\"]]],null],false],null],true,\\\"\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"img\\\",true],[11,\\\"src\\\",[23,0,[\\\"previewFile\\\"]]],[10,\\\"style\\\",\\\"max-width: 90vw;\\\"],[8],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"file-queue\\\",null,[[\\\"name\\\"],[[24,[\\\"queueName\\\"]]]]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"files\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,1,[\\\"files\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,2,[\\\"state\\\"]],\\\"uploading\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3 queue-filename\\\"],[11,\\\"title\\\",[29,[[23,2,[\\\"name\\\"]]]]],[8],[0,\\\"\\\\n                        \\\"],[1,[23,2,[\\\"name\\\"]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-7\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"progress\\\"]],100],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[11,\\\"aria-valuenow\\\",[29,[[23,2,[\\\"progress\\\"]]]]],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[11,\\\"style\\\",[28,\\\"concat\\\",[\\\"width: \\\",[23,2,[\\\"progress\\\"]],\\\"%;\\\"],null]],[8],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cancel\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"abort\\\",[23,2,[]]]],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[4,\\\"if\\\",[[24,[\\\"showAddButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"is_image_file\\\"]],[24,[\\\"gui\\\",\\\"isAndroid\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link inline-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addFile\\\",\\\"gallery\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-picture\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"field.fileupload.add_from_gallery\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link inline-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addFile\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-camera\\\"],[8],[9],[0,\\\" \\\"],[1,[22,\\\"addButtonText\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"file-upload\\\",null,[[\\\"name\\\",\\\"accept\\\",\\\"onfileadd\\\"],[[24,[\\\"queueName\\\"]],[28,\\\"if\\\",[[24,[\\\"is_image_file\\\"]],\\\"image/*\\\",\\\"*\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"uploadImage\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"btn btn-m-link\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"is_image_file\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-camera\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-file\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[1,[22,\\\"addButtonText\\\"],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/fileupload-field-ver3/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/gps-auto-km/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GpsAutoKmComponent;\n\nimport Ember from 'ember';\n\nGpsAutoKmComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    session: Ember.inject.service(),\n    Google: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    classes: 'form-control add-fields',\n    calcDist: Em.computed('model.project', 'model.user', function () {\n        var userid;\n\n        //first get user address\n        userid = this.get('session.currentUser.id');\n        if (this.get('model.user.id') && this.get('model.user.id') !== userid) {\n            userid = this.get('model.user.id');\n        }\n        this.get('store')\n            .findRecord('user', userid, {\n                reload: true,\n                include: true,\n            })\n            .then((user) => {\n                var user_address;\n                if (!user.get('address') || !user.get('city')) {\n                    return;\n                }\n                user_address = user.get('address') + ', ' + user.get('city');\n                if (user.get('fin_address')) {\n                    user_address = user.get('fin_address') + ', ' + user.get('fin_city');\n                }\n                return this.calculateProjectDist(user_address);\n            });\n    }),\n    calculateProjectDist: function (user_address) {\n        var projectid;\n        projectid = this.get('model.project.id');\n        if (projectid) {\n            return this.get('store')\n                .findRecord('project', projectid, {\n                    reload: true,\n                })\n                .then((project) => {\n                    var coords, office_dist, project_address, project_dist;\n                    if (!project.get('address') || !project.get('city')) {\n                        this.set('model.km', null);\n                        return;\n                    }\n                    project_address = project.get('address') + ', ' + project.get('city');\n                    coords = this.hasAddressSetting();\n                    office_dist = null;\n                    if (coords) {\n                        office_dist = this.calculateAddressSettingDist(\n                            JSON.parse(coords),\n                            project_address,\n                        );\n                    }\n                    project_dist = this.get('Google').routeDistanceAndTime(\n                        user_address,\n                        project_address,\n                    );\n                    Ember.RSVP.Promise.all([project_dist, office_dist]).then((data) => {\n                        var coordsJson, dist, finaldist, finaltime;\n                        if (Ember.isPresent(data[0]) || Ember.isPresent(data[1])) {\n                            dist = data[0]\n                                ? data[0]\n                                : {\n                                      dist: 2e308,\n                                  };\n                            if (\n                                data[1] &&\n                                data[1].dist &&\n                                parseInt(data[1].dist) < parseInt(dist.dist)\n                            ) {\n                                dist = data[1];\n                            }\n                            finaldist = dist.dist;\n                            finaltime = dist.time;\n                            if (coords) {\n                                coordsJson = JSON.parse(coords);\n                                if (!coordsJson.no_back_forth) {\n                                    finaldist = finaldist * 2;\n                                    finaltime = finaltime * 2;\n                                }\n                            }\n                            this.set('model.km', finaldist);\n                            return this.set('model.traveltime', finaltime);\n                        } else {\n                            this.set('model.km', null);\n                            return this.set('model.traveltime', null);\n                        }\n                    });\n                });\n        }\n    },\n    hasAddressSetting: function () {\n        var coordsString, worktimegroup;\n        worktimegroup =\n            this.get('model.user.worktimegroup.id') ||\n            this.get('session.currentUser.worktimegroup.id');\n        coordsString = this.get('customerSettings').checkSetting('autokm_address');\n        if (worktimegroup) {\n            coordsString = this.get('customerSettings').checkSetting(\n                'autokm_address_' + worktimegroup,\n            );\n        }\n        return coordsString;\n    },\n    calculateAddressSettingDist: function (coords, project_address) {\n        return this.get('Google').routeDistanceAndTime(\n            {\n                lat: coords.latitude,\n                lng: coords.longitude,\n            },\n            project_address,\n        );\n    },\n    isMandatory: Em.computed('field', function () {\n        if (this.get('field.features.mandatory')) {\n            return true;\n        }\n        return false;\n    }),\n});\n\nexport default GpsAutoKmComponent;\n","export default Ember.HTMLBars.template({\"id\":\"/pyC9UYF\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"value\\\",\\\"class\\\",\\\"disabled\\\"],[\\\"number\\\",[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"model\\\",\\\"km\\\"]],[24,[\\\"_class\\\"]],[24,[\\\"field\\\",\\\"features\\\",\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"],[1,[22,\\\"calcDist\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/gps-auto-km/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/gps-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsGpsFieldComponent;\n\nimport Ember from 'ember';\n\nimport textInput from '../text-field/component';\n\nCollectorFieldsGpsFieldComponent = textInput.extend({\n    store: Ember.inject.service(),\n    session: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    showDistanceError: false,\n    shortestFound: false,\n    errorMsg: false,\n    error_arr: Em.A([]),\n    fetchLocation: Em.on('init', function () {\n        var id, options, self;\n        self = this;\n        if (!this.get('model.isNew')) {\n            return;\n        }\n        options = {\n            enableHighAccuracy: true,\n            timeout: 50000,\n            maximumAge: 5000,\n        };\n        if (navigator.geolocation) {\n            id = navigator.geolocation.watchPosition(\n                function (location) {\n                    var loc, project;\n                    loc = {};\n                    loc.latitude = location.coords.latitude;\n                    loc.longitude = location.coords.longitude;\n                    loc.accuracy = location.coords.accuracy;\n                    self.set('gps_location', JSON.stringify(loc));\n                    self.set('value', JSON.stringify(loc));\n                    if (self.get('distance') === null) {\n                        project = self.get('model.project');\n                        if (project) {\n                            return self\n                                .get('store')\n                                .findRecord('project', project.get('id'), {\n                                    reload: true,\n                                })\n                                .then((record) => {\n                                    var forced, proj_loc, value;\n                                    value = self.get('value');\n                                    proj_loc = record.get('location_map');\n                                    forced = record.get('force_location');\n                                    if (proj_loc && value) {\n                                        return self.calculateDistance(proj_loc, value, forced);\n                                    } else {\n                                        return self.set('distance', null);\n                                    }\n                                });\n                        } else {\n                            return self.set('distance', null);\n                        }\n                    }\n                },\n                function (error) {\n                    var errorKey;\n                    console.log(error);\n                    if (error.code === error.PERMISSION_DENIED) {\n                        errorKey = 'permissindenied';\n                    } else if (error.code === error.POSITION_UNAVAILABLE) {\n                        errorKey = 'poisition_unavailable';\n                    } else if (error.code === error.TIMEOUT) {\n                        errorKey = 'timeout';\n                    } else {\n                        errorKey = 'unknown_error';\n                    }\n                    return self.set('errorMsg', self.intl.t('gps.errors.' + errorKey));\n                },\n                options,\n            );\n            return this.set('watchID', id);\n        } else {\n            return this.set('notSupported', true);\n        }\n    }),\n    removeWatch: Em.on('willDestroyElement', function () {\n        return navigator.geolocation.clearWatch(this.get('watchID'));\n    }),\n    locObs: Ember.observer('gps_location', function () {\n        var distance;\n        if (!(typeof this.get === 'function' ? this.get('first_location') : void 0)) {\n            this.set('first_location', this.get('gps_location'));\n        }\n        //calc dist\n        distance = this.calcDist(this.get('gps_location'), this.get('first_location'));\n        //if distance is changed over 100m\n        if (distance > 100) {\n            //copy present location to temp pos\n            this.set('first_location', this.get('gps_location'));\n            //set distance null, so that everything will be calculated again\n            return this.set('distance', null);\n        }\n    }),\n    //listen changes in address fields\n    projectObserver: Ember.observer('model.project', function () {\n        return Ember.run.once(this, this.processProjectChange);\n    }),\n    processProjectChange: function () {\n        var id, value;\n        id = this.get('model.project.id');\n        this.set('showDistanceError', false);\n        this.set('distance', null);\n        if (id) {\n            value = this.get('value');\n            return this.get('store')\n                .findRecord('project', id, {\n                    reload: true,\n                })\n                .then((record) => {\n                    var forced, proj_loc;\n                    proj_loc = record.get('location_map');\n                    forced = record.get('force_location');\n                    if (proj_loc && value) {\n                        return this.calculateDistance(proj_loc, value, forced);\n                    } else {\n                        return this.set('distance', null);\n                    }\n                });\n        } else {\n            return this.set('distance', null);\n        }\n    },\n    //update distance in value when distance is changed\n    distanceObs: Em.observer('distance', 'value', function () {\n        var loc;\n        if (!this.get('distance')) {\n            if (this.get('value')) {\n                loc = JSON.parse(this.get('value'));\n                if (loc && loc.distance) {\n                    delete loc.distance;\n                }\n                return this.set('value', JSON.stringify(loc));\n            }\n        }\n    }),\n    calcDist: function (loc1, loc2) {\n        var loc1_latlng, loc1_parsed, loc2_latlng, loc2_parsed;\n        loc1_parsed = JSON.parse(loc1);\n        loc2_parsed = JSON.parse(loc2);\n        loc1_latlng = new window.google.maps.LatLng(loc1_parsed.latitude, loc1_parsed.longitude);\n        loc2_latlng = new window.google.maps.LatLng(loc2_parsed.latitude, loc2_parsed.longitude);\n        return window.google.maps.geometry.spherical.computeDistanceBetween(\n            loc1_latlng,\n            loc2_latlng,\n        );\n    },\n    calculateDistance: function (project_loc, present_loc, forced) {\n        var dist_txt, distance, loc, pres_latlng, pres_loc, proj_latlng, proj_loc;\n        proj_loc = JSON.parse(project_loc);\n        pres_loc = JSON.parse(present_loc);\n        if (proj_loc && pres_loc) {\n            proj_latlng = new window.google.maps.LatLng(proj_loc.latitude, proj_loc.longitude);\n            pres_latlng = new window.google.maps.LatLng(pres_loc.latitude, pres_loc.longitude);\n            distance = window.google.maps.geometry.spherical.computeDistanceBetween(\n                proj_latlng,\n                pres_latlng,\n            );\n            loc = JSON.parse(this.get('value'));\n            if (loc) {\n                loc.distance = distance;\n                this.set('value', JSON.stringify(loc));\n                if (distance > 1000) {\n                    dist_txt = Math.round(distance / 1000) + 'km';\n                } else {\n                    dist_txt = Math.round(distance) + 'm';\n                }\n                return this.set('distance', dist_txt);\n            }\n        }\n    },\n});\n\nexport default CollectorFieldsGpsFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"6HRl1ZlX\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"value\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showDistanceError\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h5\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"standard-icon\\\",[\\\"warning\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"gps.location.distance_too_big\\\"],null],false],[9],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"distance\\\"]]],null,{\\\"statements\\\":[[0,\\\"(\\\"],[1,[22,\\\"distance\\\"],false],[0,\\\")\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"gps.location.found\\\"],null],false],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"distance\\\"]]],null,{\\\"statements\\\":[[0,\\\"(\\\"],[1,[28,\\\"t\\\",[\\\"gps.location.distance\\\"],null],false],[0,\\\" \\\"],[1,[22,\\\"distance\\\"],false],[0,\\\")\\\"]],\\\"parameters\\\":[]},null],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-success\\\"],[8],[1,[28,\\\"standard-icon\\\",[\\\"ok\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"notSupported\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"gps.not_supported\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"errorMsg\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[23,0,[\\\"errorMsg\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/gps-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/hours-and-minutes-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsTimeFieldComponent;\n\nimport Ember from 'ember';\n\nimport baseField from '../text-field/component';\n\nCollectorFieldsTimeFieldComponent = baseField.extend({\n    _hours: '',\n    _minutes: '',\n    hours: Em.computed('value', function () {\n        var hours, valarr;\n        if (Em.isPresent(this.get('value'))) {\n            if (typeof this.get('value') === 'string') {\n                valarr = this.get('value').split(':');\n                hours = parseInt(Number(valarr[0]));\n            } else {\n                hours = parseInt(Number(this.get('value')));\n            }\n            if (hours <= 9) {\n                hours = '0' + hours;\n            }\n        }\n        this.set('_hours', hours);\n        return hours;\n    }),\n    minutes: Em.computed('value', function () {\n        var hours, mins, valarr;\n        if (Em.isPresent(this.get('value'))) {\n            if (typeof this.get('value') === 'string') {\n                valarr = this.get('value').split(':');\n                hours = parseInt(Number(valarr[0]));\n                mins = parseInt(Number(valarr[1]));\n            } else {\n                hours = parseInt(Number(this.get('value')));\n                mins = Math.round((Number(this.get('value')) - hours) * 60);\n            }\n            if (mins <= 9) {\n                mins = '0' + mins;\n            }\n        } else {\n            mins = null;\n        }\n        this.set('_minutes', mins);\n        return mins;\n    }),\n    minute_options: Em.computed(function () {\n        var i, j, ret, value;\n        ret = [];\n        for (i = j = 0; j <= 59; i = ++j) {\n            if (i < 10) {\n                value = '0' + i;\n            } else {\n                value = i;\n            }\n            ret.push({\n                id: value,\n                name: value,\n            });\n        }\n        ret.max = ret.length - 1;\n        return ret;\n    }),\n    hour_options: Em.computed(function () {\n        var hours, i, j, ref, ret, value;\n        if (this.get('field.features.validate_check') === 'hour24Check') {\n            hours = 24;\n        } else {\n            hours = 45;\n        }\n        ret = [];\n        for (i = j = 0, ref = hours; 0 <= ref ? j <= ref : j >= ref; i = 0 <= ref ? ++j : --j) {\n            if (i < 10) {\n                value = '0' + i;\n            } else {\n                value = i;\n            }\n            ret.push({\n                id: value,\n                name: value,\n            });\n        }\n        return ret;\n    }),\n    actions: {\n        setHours: function (value) {\n            var hours;\n            value = Number(parseInt(event.target.value));\n            if (value < 0) {\n                value = 0;\n            }\n            hours = '';\n            if (value < 10) {\n                hours = '0' + value;\n            } else {\n                hours = value;\n            }\n            this.set('_hours', hours);\n            if (\n                this.get('_minutes') == null ||\n                this.get('_minutes') == '' ||\n                isNaN(this.get('_minutes'))\n            ) {\n                this.set('_minutes', '00');\n            }\n            return this.set('value', hours + ':' + this.get('_minutes'));\n        },\n        setMins: function (value) {\n            var minutes;\n            value = Number(parseInt(event.target.value));\n            if (value > this.get('minute_options.max') || value < 0) {\n                value = 0;\n            }\n            minutes = '';\n            if (value < 10) {\n                minutes = '0' + value;\n            } else {\n                minutes = value;\n            }\n            this.set('_minutes', minutes);\n            if (this.get('_hours') === '' || isNaN(this.get('_hours'))) {\n                this.set('_hours', '00');\n            }\n            return this.set('value', this.get('_hours') + ':' + minutes);\n        },\n    },\n});\n\nexport default CollectorFieldsTimeFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"ePPzBzQ6\",\"block\":\"{\\\"symbols\\\":[\\\"opt\\\",\\\"opt\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control add-fields hours-and-minutes\\\"],[11,\\\"name\\\",[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"name\\\"]],\\\"-hours\\\"],null]],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setHours\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[11,\\\"disabled\\\",[22,\\\"disabled\\\"]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[24,[\\\"hours\\\"]],null,true],null]],[8],[0,\\\"--\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"hour_options\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[29,[[23,2,[\\\"id\\\"]]]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[28,\\\"number\\\",[[24,[\\\"hours\\\"]]],null],[28,\\\"number\\\",[[23,2,[\\\"id\\\"]]],null],true],null]],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"],[9],[1,[28,\\\"t\\\",[\\\"general.hour_abbr\\\"],null],false],[0,\\\"\\\\n    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control add-fields hours-and-minutes\\\"],[11,\\\"name\\\",[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"name\\\"]],\\\"-minutes\\\"],null]],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setMins\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[11,\\\"disabled\\\",[22,\\\"disabled\\\"]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[24,[\\\"hours\\\"]],null,true],null]],[8],[0,\\\"--\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"minute_options\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[29,[[23,1,[\\\"id\\\"]]]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[28,\\\"number\\\",[[24,[\\\"minutes\\\"]]],null],[28,\\\"number\\\",[[23,1,[\\\"id\\\"]]],null],true],null]],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[1,[28,\\\"t\\\",[\\\"general.min_abbr\\\"],null],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"hidden-xs desktop-input\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"min\\\",\\\"focus-out\\\",\\\"disabled\\\"],[\\\"number\\\",\\\"form-control add-fields inline\\\",[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"name\\\"]],\\\"-hours\\\"],null],[24,[\\\"_hours\\\"]],0,[28,\\\"action\\\",[[23,0,[]],\\\"setHours\\\",[24,[\\\"hours\\\"]]],null],[24,[\\\"disabled\\\"]]]]],false],[1,[28,\\\"t\\\",[\\\"general.hour_abbr\\\"],null],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"min\\\",\\\"max\\\",\\\"focus-out\\\",\\\"disabled\\\"],[\\\"number\\\",\\\"form-control add-fields inline\\\",[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"name\\\"]],\\\"-minutes\\\"],null],[24,[\\\"_minutes\\\"]],0,[24,[\\\"minute_options\\\",\\\"max\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setMins\\\",[24,[\\\"minutes\\\"]]],null],[24,[\\\"disabled\\\"]]]]],false],[1,[28,\\\"t\\\",[\\\"general.min_abbr\\\"],null],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/hours-and-minutes-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/label-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsLabelFieldComponent;\n\nimport Ember from 'ember';\n\nimport base from '../base-field/component';\n\nCollectorFieldsLabelFieldComponent = base.extend({\n    // Methods\n\n    _labels: Ember.computed('value', function () {\n        if (this.get('value')) {\n            return this.get('value').split(',');\n        }\n        return [];\n    }),\n    actions: {\n        removeLabel: function (label) {\n            var value;\n            value = this.get('_labels');\n            if (value.indexOf(label) !== -1) {\n                if (value.length === 1) {\n                    value = [];\n                } else {\n                    value.splice(value.indexOf(label), 1);\n                }\n                return this.sendAction('bubbleChange', value.join(','), this.get('field.name'));\n            }\n        },\n        addLabel: function (label) {\n            var value;\n            if (label) {\n                value = this.get('_labels');\n                value.push(label);\n                this.sendAction('bubbleChange', value.join(','), this.get('field.name'));\n                return this.set('label', '');\n            }\n        },\n    },\n});\n\nexport default CollectorFieldsLabelFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"+z4CRVgE\",\"block\":\"{\\\"symbols\\\":[\\\"label\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label-box\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label-box-input\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_labels\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label-m label-m-info\\\"],[8],[1,[23,1,[]],false],[4,\\\"unless\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cancel link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeLabel\\\",[23,1,[]]]],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[4,\\\"unless\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"focusOut\\\"],[\\\"text\\\",\\\"label-box-input-field\\\",[24,[\\\"label\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addLabel\\\",[24,[\\\"label\\\"]]],null]]]],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/label-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/month-dropdown-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsMonthDropdownFieldComponent;\n\nimport Ember from 'ember';\n\nimport baseField from '../base-field/component';\n\nCollectorFieldsMonthDropdownFieldComponent = baseField.extend({\n    selectedMonth: 0,\n    //get 36 previous months\n    months: Ember.computed(function () {\n        var count, montharr, obj;\n        count = 1;\n        montharr = [];\n        while (count < 36) {\n            obj = {\n                id: this.get('useAsFilter')\n                    ? moment()\n                          .subtract(count - 1, 'months')\n                          .startOf('month')\n                          .format('YYYY-MM')\n                    : moment()\n                          .subtract(count - 1, 'months')\n                          .startOf('month')\n                          .format('YYYY-MM-DD'),\n                name: moment()\n                    .subtract(count - 1, 'months')\n                    .format('MMMM YYYY'),\n            };\n            count++;\n            montharr.push(obj);\n        }\n        return montharr;\n    }),\n    actions: {\n        valueChanged: function (value) {\n            return this.bubbleChange(value, this.get('field.name'));\n        },\n    },\n});\n\nexport default CollectorFieldsMonthDropdownFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"45XviF4Z\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\",\\\"bubbleChange\\\"],[[24,[\\\"_class\\\"]],[24,[\\\"months\\\"]],[24,[\\\"value\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"valueChanged\\\"],null]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/month-dropdown-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/multiselect-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsMultiselectComponent;\n\nimport Ember from 'ember';\n\nimport CollectorFieldsDropdownFieldComponent from '../database-field/component';\n\nimport $ from 'jquery';\n\nCollectorFieldsMultiselectComponent = CollectorFieldsDropdownFieldComponent.extend({\n    intl: Ember.inject.service(),\n    selected_options: Em.A([]),\n    selected_option_ids: Em.A([]),\n    //showOptions: true\n\n    // overwrite database-field fetchFromDatabase\n    fetchFromDatabase: function () {\n        return this.initilizeDropdown();\n    },\n    initilizeDropdown: Em.on(\n        'init',\n        Em.observer('session.currentUser', function () {\n            var c, form, limit, object, promise, query, self;\n            if (!this.get('session.currentUser')) {\n                return;\n            }\n            self = this;\n            c = this.get('Collector');\n            form = this.get('field.form');\n            object = this.get('field.name');\n            query = this.get('query');\n            limit = 25;\n            promise = c.ajax({\n                url: form + '/' + object,\n                data: {\n                    limit: limit,\n                    q: query,\n                },\n            });\n            return promise.then((data) => {\n                var sel_ids;\n                sel_ids = this.create_id_array(this.get('selected_options'));\n                // remove all already selected options\n                if (this.get('selected_options').length > 0) {\n                    this.set('options', Em.A([]));\n                    data[object].forEach(function (obj) {\n                        if (sel_ids.indexOf(obj['id']) < 0) {\n                            return self.get('options').pushObject(obj);\n                        }\n                    });\n                } else {\n                    this.set('options', data[object]);\n                }\n                return this.set('moreCount', data.count > limit ? data.count - limit : null);\n            });\n        }),\n    ),\n    unselected_options: Ember.computed('selected_options.[]', 'options.[]', function () {\n        return this.get('options').reject((option) => {\n            return this.get('selected_options').findBy('id', option.id);\n        });\n    }),\n    // get all records and filter them\n    setDefaultValue: Ember.on('init', function () {\n        var c, field, form, ids, object, promise, self, value;\n        self = this;\n        field = this.get('field');\n        if (field.value == null) {\n            //empty selected options if value not set\n            this.set('selected_options', []);\n            return;\n        }\n        value = field.value;\n        c = this.get('Collector');\n        form = this.get('field.form');\n        object = this.get('field.name');\n        if (typeof value === 'string') {\n            ids = value;\n        } else {\n            ids = value.join();\n        }\n        if (ids === '') {\n            this.setValues([]);\n            return;\n        }\n        promise = c.ajax({\n            url: form + '/' + object,\n            data: {\n                id: ids,\n            },\n        });\n        return promise.then((data) => {\n            return this.setValues(data[object]);\n        });\n    }),\n    setValues: function (values) {\n        var text;\n        this.set('selected_options', values);\n        this.set('value', values);\n        text = this.getText(values);\n        this.set('text', text);\n        return this.set('search', text);\n    },\n    getText: function (values) {\n        if (values.length > 3) {\n            return values.length + ' ' + this.get('intl').t('select.chosen');\n        } else if (values.length > 0) {\n            return values.mapBy('text').join(',');\n        } else {\n            return this.get('prompt');\n        }\n    },\n    create_id_array: function (objects) {\n        var tmp;\n        tmp = Em.A([]);\n        objects.forEach(function (obj) {\n            return tmp.pushObject(obj['id']);\n        });\n        return tmp;\n    },\n    actions: {\n        deselect: function (option) {\n            this.get('selected_options').removeObject(option);\n            this.get('options').pushObject(option);\n            this.set(\n                'value',\n                this.get('selected_options').length + ' ' + this.get('intl').t('select.chosen'),\n            );\n            this.set('text', this.getText(this.get('selected_options')));\n            //$('input', this.element).blur()\n            return this.sendAction(\n                'bubbleChange',\n                this.create_id_array(this.get('selected_options')) || null,\n                this.get('field.name'),\n            );\n        },\n        select: function (option) {\n            if (option === null) {\n                this.set('selected_options', Em.A([]));\n                option = {};\n                this.set('showOptions', false);\n                $('input', this.element).blur();\n                this.set('text', this.get('prompt'));\n                this.set('search', this.get('prompt'));\n            } else {\n                this.get('selected_options').pushObject(option);\n                this.get('options').removeObject(option);\n            }\n            //$('input', this.element).blur()\n            //if (@get('selected_options').length > 0)\n            //    @set 'search', @get('selected_options').length+\" \"+@get('intl').t 'select.chosen'\n            //else\n            //    @set 'search', @get 'prompt'\n            this.set('value', option.id);\n            this.set('text', this.getText(this.get('selected_options')));\n            //@set 'showOptions', false\n            this.set('query', null);\n            return this.sendAction(\n                'bubbleChange',\n                this.create_id_array(this.get('selected_options')) || null,\n                this.get('field.name'),\n            );\n        },\n        select_all: function () {\n            var all_options;\n            all_options = Em.A([]);\n            all_options.pushObjects(this.get('selected_options'));\n            all_options.pushObjects(this.get('options'));\n            this.set('selected_options', all_options);\n            this.set('options', Em.A([]));\n            this.set(\n                'text',\n                this.get('selected_options').length + ' ' + this.get('intl').t('select.chosen'),\n            );\n            return this.sendAction(\n                'bubbleChange',\n                this.create_id_array(this.get('selected_options')) || null,\n                this.get('field.name'),\n            );\n        },\n    },\n});\n\nexport default CollectorFieldsMultiselectComponent;\n","export default Ember.HTMLBars.template({\"id\":\"o+eb54Xn\",\"block\":\"{\\\"symbols\\\":[\\\"opt\\\",\\\"selected_option\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"ajax-select multiselect \\\",[28,\\\"unless\\\",[[24,[\\\"showOptions\\\"]],[24,[\\\"then\\\"]],\\\"active\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"placeholder\\\",\\\"class\\\",\\\"focus-in\\\",\\\"focus-out\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"text\\\",[24,[\\\"field\\\",\\\"name\\\"]],[28,\\\"if\\\",[[24,[\\\"field\\\",\\\"placeholder\\\"]],[28,\\\"t\\\",[[24,[\\\"field\\\",\\\"placeholder\\\"]]],null],[28,\\\"t\\\",[\\\"select.search\\\"],null]],null],[24,[\\\"_class\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"focusIn\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"focusOut\\\"],null],[24,[\\\"search\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"options\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"header\\\"],[8],[1,[28,\\\"t\\\",[\\\"select.selected\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selected_options\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"selected_options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"deselect\\\",[23,2,[]]],[[\\\"on\\\"],[\\\"mouseDown\\\"]]],[8],[1,[23,2,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"footer\\\"],[8],[1,[28,\\\"t\\\",[\\\"select.empty\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"header\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"header\\\"],[8],[1,[28,\\\"t\\\",[\\\"select.unselected\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"unselected_options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",\\\"clear\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"select_all\\\",null],[[\\\"on\\\"],[\\\"mouseDown\\\"]]],[8],[1,[28,\\\"t\\\",[\\\"select.select_all\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"unselected_options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"value\\\"]]],null],\\\"selected\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"select\\\",[23,1,[]]],[[\\\"on\\\"],[\\\"mouseDown\\\"]]],[8],[1,[23,1,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"footer\\\"],[8],[1,[28,\\\"t\\\",[\\\"select.empty\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"moreCount\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"footer\\\"],[8],[1,[28,\\\"t\\\",[\\\"select.more\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/multiselect-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/number-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsNumberFieldComponent;\n\nimport Ember from 'ember';\n\nimport textInput from '../text-field/component';\n\nCollectorFieldsNumberFieldComponent = textInput.extend({\n    session: Ember.inject.service(),\n    unit: Ember.computed('field', function () {\n        var currency;\n        currency = function () {\n            switch (this.get('session.currentUser.company_info.country')) {\n                case 'se':\n                    return 'SEK';\n                case 'fi':\n                    return '€';\n            }\n        }.call(this);\n        switch (this.get('field.type')) {\n            case 'minutes':\n                return 'min';\n            case 'price':\n                return currency;\n            case 'big_price':\n                return currency;\n            default:\n                return this.get('field.options');\n        }\n    }),\n});\n\nexport default CollectorFieldsNumberFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"MKagR7gl\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"unit\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-10\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"value\\\",\\\"class\\\",\\\"disabled\\\",\\\"step\\\"],[\\\"number\\\",[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"value\\\"]],[24,[\\\"_class\\\"]],[24,[\\\"disabled\\\"]],[24,[\\\"any\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[22,\\\"unit\\\"],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"value\\\",\\\"class\\\",\\\"disabled\\\",\\\"step\\\"],[\\\"number\\\",[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"value\\\"]],[24,[\\\"_class\\\"]],[24,[\\\"disabled\\\"]],[24,[\\\"any\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/number-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/password-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsUsernameFieldComponent;\n\nimport Ember from 'ember';\n\nimport text from '../text-field/component';\n\nimport { computed } from '@ember/object';\n\nCollectorFieldsUsernameFieldComponent = text.extend({\n    show_generated: true,\n    showPassword: computed('value', 'show_generated', function () {\n        return this.get('value') && this.get('value') !== 'secured' && this.get('show_generated');\n    }),\n    actions: {\n        changeFieldType: function () {\n            return this.set('show_generated', false);\n        },\n    },\n});\n\nexport default CollectorFieldsUsernameFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"3Dwc1cq9\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"input\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\"],[[28,\\\"if\\\",[[24,[\\\"showPassword\\\"]],\\\"text\\\",\\\"password\\\"],null],[28,\\\"if\\\",[[24,[\\\"_class\\\"]],[24,[\\\"_class\\\"]],\\\"form-control add-fields\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"changeFieldType\\\"],null],[24,[\\\"field\\\",\\\"ext\\\"]],[24,[\\\"placeholder\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/password-field/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set, defineProperty } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { debounce } from '@ember/runloop';\nimport RSVP from 'rsvp';\nimport isDisabled from 'tt4/utils/isDisabled';\n\nexport default Component.extend({\n    store: service(),\n    gui: service(),\n    intl: service(),\n    localstorage: service(),\n\n    isopen: false,\n\n    form: alias('field.form'),\n    subform: alias('field.options.form'),\n    subformfields: alias('field.options.fields'),\n    fieldName: alias('field.name'),\n\n    placeholder: computed('field.prompt', 'prompt', function () {\n        if (this.prompt) return this.prompt;\n        if (!get(this, 'field.prompt')) return null;\n        return get(this, 'intl').t(get(this, 'field.prompt'));\n    }),\n\n    options: computed('filter', function () {\n        return new RSVP.Promise((resolve, reject) => {\n            this._performSearch(\n                null,\n                (options) => {\n                    // do not use lastused if selection are filtered by something or not that many selections in first place\n                    if (get(this, 'filter') || get(options, 'length') < 20) return resolve(options);\n\n                    const lastused = this.getLastUsed(options);\n                    if (lastused) lastused.then(resolve, reject);\n                    else resolve(options);\n                },\n                reject,\n            );\n        });\n    }),\n\n    value: computed('modelValue', 'fieldValue', '_value', 'field.value', function () {\n        if (typeof this._value !== 'undefined') {\n            return !this._value || typeof this._value === 'object'\n                ? this._value\n                : this.store.peekRecord(this.subform, this._value);\n        }\n        if (get(this, 'modelValue')) return get(this, 'modelValue');\n        return get(this, 'fieldValue');\n    }),\n\n    init() {\n        this._super(...arguments);\n        // modelValue alias must be defined this way because field name is dynamic\n        if (get(this, 'model'))\n            defineProperty(this, 'modelValue', alias('model.' + get(this, 'fieldName')));\n    },\n\n    didReceiveAttrs() {\n        if (isDisabled(get(this, 'field'), get(this, 'model'))) {\n            set(this, '_disabled', true);\n        }\n    },\n\n    actions: {\n        search(term) {\n            return new RSVP.Promise((resolve, reject) => {\n                debounce(this, this._performSearch, term, resolve, reject, 600);\n            });\n        },\n\n        changeId(id) {\n            this.send('change', get(this, 'store').peekRecord(get(this, 'subform'), id));\n        },\n\n        change(value) {\n            this.saveLastUsed(value);\n\n            if (get(this, 'model')) set(this, 'model.' + get(this, 'fieldName'), value);\n            else set(this, 'fieldValue', value);\n\n            this.onchange(value, get(this, 'fieldName'));\n        },\n\n        createNew() {\n            this.createNew();\n        },\n\n        showOrHideCreate() {\n            return this.showCreate && this.Collector.testNeeds([this.subform + '@add']);\n        },\n    },\n\n    saveLastUsed(record) {\n        if (!record) return;\n        let lastused = get(this, 'localstorage').getItem('lastused.' + get(this, 'subform'));\n        if (!lastused) lastused = [];\n\n        lastused.unshift(get(record, 'id'));\n\n        const lastUsedCount = 10; // Number of 'last used' items to display\n\n        get(this, 'localstorage').setItem(\n            'lastused.' + get(this, 'subform'),\n            Array.from(new Set(lastused)).slice(0, lastUsedCount),\n        );\n    },\n\n    getLastUsed(all) {\n        const lastused = get(this, 'localstorage').getItem('lastused.' + get(this, 'subform'));\n\n        if (!lastused) return false;\n\n        return new RSVP.Promise((resolve, reject) => {\n            get(this, 'store')\n                .query(get(this, 'subform'), {\n                    id: lastused.join(','),\n                    form: get(this, 'form'),\n                    field: get(this, 'fieldName'),\n                })\n                .then(this.createGroups.bind(this, resolve, all), reject);\n        });\n    },\n\n    createGroups(resolve, all, records) {\n        resolve([\n            {\n                groupName: get(this, 'intl').t('select.last_selections'),\n                options: records.toArray(),\n            },\n            { groupName: get(this, 'intl').t('select.all'), options: all.toArray() },\n        ]);\n    },\n\n    optionsUpdated(term, options) {\n        if (this.isDestroyed) {\n            return;\n        }\n        if (!term)\n            set(this, 'useNormalDropdown', get(this, 'gui').isMobile() && options.length < 20);\n\n        // reset value if not in options\n        if (\n            this.recordIsDirty() &&\n            typeof get(this, 'value') !== 'undefined' &&\n            get(this, 'filter') &&\n            !options.includes(get(this, 'value'))\n        ) {\n            // we still need to check from backend if value really is ok and just not in 20 first options\n            get(this, 'store')\n                .query(get(this, 'subform'), this._createQueryParams(null, get(this, 'value.id')))\n                .then(this.clearFieldIfResolvesEmpty.bind(this));\n        } else {\n            set(this, 'disabled', false);\n        }\n    },\n\n    clearFieldIfResolvesEmpty(result) {\n        if (result.length < 1) this.send('change', null);\n        set(this, 'disabled', false);\n    },\n\n    /**\n     * Create queryParams for options fetching from backend\n     * @param {String} term Search term given by user\n     * @param {String} id Parameter if you want to get only known record by id\n     */\n    _createQueryParams(term = null, id = null) {\n        const params = {\n            form: get(this, 'form'),\n            field: get(this, 'fieldName'),\n            limit: 100,\n            offset: 0,\n        };\n\n        if (id) params.id = id;\n        if (term) params.q = term;\n\n        if (get(this, 'filter')) {\n            for (const key of Object.keys(get(this, 'filter'))) {\n                const filterValue = this.filter[key];\n                if (filterValue) {\n                    params[key] =\n                        typeof filterValue === 'string' ? filterValue : get(this.filter[key], 'id');\n                }\n            }\n        }\n\n        return params;\n    },\n\n    _performSearch(term, resolve, reject) {\n        if (get(this, 'filter') && !term) set(this, 'disabled', true);\n        const promise = get(this, 'store').query(\n            get(this, 'subform'),\n            this._createQueryParams(term),\n        );\n        promise.then(this.optionsUpdated.bind(this, term), () => {});\n        promise.then(resolve, reject);\n    },\n\n    recordIsDirty() {\n        return !!this.model?.isNew || !!this.model?.hasDirtyAttributes;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"CgqFht+M\",\"block\":\"{\\\"symbols\\\":[\\\"record\\\",\\\"field\\\",\\\"opt\\\",\\\"field\\\",\\\"subopt\\\",\\\"field\\\",\\\"@createLabel\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"useNormalDropdown\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control add-fields collector-fields-power-database-select\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"changeId\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[11,\\\"disabled\\\",[23,0,[\\\"_disabled\\\"]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"option\\\",true],[8],[1,[23,0,[\\\"placeholder\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"options\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[\\\"groupName\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"optgroup\\\",true],[11,\\\"label\\\",[23,3,[\\\"groupName\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,5,[\\\"id\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,5,[]],[28,\\\"await\\\",[[24,[\\\"value\\\"]]],null]],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subformfields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"get\\\",[[23,5,[]],[23,6,[]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,3,[\\\"id\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,3,[]],[28,\\\"await\\\",[[24,[\\\"value\\\"]]],null]],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subformfields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"get\\\",[[23,3,[]],[23,4,[]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"power-select-with-create\\\",[],[[\\\"@class\\\",\\\"@dropdownClass\\\",\\\"@tagName\\\",\\\"@allowClear\\\",\\\"@selected\\\",\\\"@preventScroll\\\",\\\"@placeholder\\\",\\\"@options\\\",\\\"@loadingMessage\\\",\\\"@disabled\\\",\\\"@searchEnabled\\\",\\\"@search\\\",\\\"@searchMessage\\\",\\\"@noMatchesMessage\\\",\\\"@onopen\\\",\\\"@onclose\\\",\\\"@onCreate\\\",\\\"@showCreateWhen\\\",\\\"@showCreatePosition\\\",\\\"@suggestedOptionComponent\\\",\\\"@matchTriggerWidth\\\",\\\"@onChange\\\"],[[23,0,[\\\"_class\\\"]],\\\"power-select-add-field\\\",\\\"div\\\",true,[23,0,[\\\"value\\\"]],true,[23,0,[\\\"placeholder\\\"]],[23,0,[\\\"options\\\"]],[28,\\\"t\\\",[\\\"general.loading\\\"],null],[28,\\\"or\\\",[[23,0,[\\\"disabled\\\"]],[28,\\\"is-pending\\\",[[23,0,[\\\"value\\\"]]],null],[23,0,[\\\"_disabled\\\"]]],null],true,[28,\\\"action\\\",[[23,0,[]],\\\"search\\\"],null],[28,\\\"t\\\",[\\\"select.search\\\"],null],[28,\\\"t\\\",[\\\"general.no_search_results\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"isopen\\\"]]],null],true],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"isopen\\\"]]],null],false],null],[28,\\\"action\\\",[[23,0,[]],\\\"createNew\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showOrHideCreate\\\"],null],\\\"bottom\\\",[28,\\\"component\\\",[\\\"suggested-option\\\"],[[\\\"label\\\"],[[28,\\\"if\\\",[[23,7,[]],[23,7,[]],[28,\\\"t\\\",[\\\"general.add\\\"],null]],null]]]],false,[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subformfields\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isopen\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overlay\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/power-database/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/radio-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsRadioFieldComponent;\n\nimport Ember from 'ember';\n\nimport base from '../base-field/component';\n\nCollectorFieldsRadioFieldComponent = base.extend({\n    // Methods\n\n    setValue: Em.on('init', function () {\n        return this.set('value', this.get('field.value'));\n    }),\n    didRender: function () {\n        if (this.element.offsetWidth < 250) {\n            return this.element.children[0].classList.add('is-narrow');\n        }\n    },\n    actions: {\n        change: function (value) {\n            this.set('value', value);\n            return this.sendAction('bubbleChange', value, this.get('field.name'));\n        },\n    },\n});\n\nexport default CollectorFieldsRadioFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"eCktBXDo\",\"block\":\"{\\\"symbols\\\":[\\\"option\\\",\\\"index\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-button-group-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"field\\\",\\\"options\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"field\\\",\\\"name\\\"]],\\\"affects_overtime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"btn-m flex-button-group-item-small flex-button-modal \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],[24,[\\\"value\\\"]]],null],\\\"flex-button-group-item-small-selected\\\"],null]]]],[12,\\\"name\\\",[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"name\\\"]],\\\"-\\\",[23,2,[]]],null]],[3,\\\"action\\\",[[23,0,[]],\\\"change\\\",[23,1,[]]]],[8],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],[24,[\\\"value\\\"]]],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark radio-button-checkbox hidden-xs\\\"],[8],[9]],\\\"parameters\\\":[]},null],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"form\\\"]],\\\".\\\",[24,[\\\"field\\\",\\\"name\\\"]],\\\".\\\",[23,1,[]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"name\\\",[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"name\\\"]],\\\"-\\\",[23,2,[]]],null]],[12,\\\"class\\\",[29,[\\\"btn-m btn-lg flex-button-group-item \\\",[28,\\\"concat\\\",[\\\"radio-button-\\\",[24,[\\\"form\\\"]],\\\"-\\\",[23,2,[]]],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],[24,[\\\"value\\\"]]],null],\\\"flex-button-group-selected\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"change\\\",[23,1,[]]]],[8],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],[24,[\\\"value\\\"]]],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\" \\\"]],\\\"parameters\\\":[]},null],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"form\\\",\\\"field\\\"],[[23,1,[]],[24,[\\\"form\\\"]],[24,[\\\"field\\\",\\\"name\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1,2]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/radio-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/search-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsTextFieldComponent;\n\nimport Ember from 'ember';\n\nimport collectorField from '../../../../mixins/collector-field';\n\nCollectorFieldsTextFieldComponent = Ember.Component.extend(collectorField, {\n    intl: Ember.inject.service(),\n\n    // Methods\n\n    setValue: Em.on('init', function () {\n        return this.set('value', this.get('field.value'));\n    }),\n    placeholder: Ember.computed(function () {\n        return this.get('intl').t('general.search');\n    }),\n    // Send the change action\n    valueObserver: Em.observer('value', function () {\n        if (this.get('value') === this.get('field.value')) {\n            return;\n        }\n        return Ember.run.debounce(\n            this,\n            function () {\n                return this.sendAction(\n                    'bubbleChange',\n                    this.get('value'),\n                    this.get('field.name'),\n                    true,\n                    false,\n                );\n            },\n            2000,\n        );\n    }),\n});\n\nexport default CollectorFieldsTextFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"Lqn6yl3m\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group has-feedback\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"placeholder\\\"],[\\\"text\\\",[24,[\\\"value\\\"]],\\\"form-control\\\",[24,[\\\"placeholder\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-search form-control-feedback\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/search-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/signature-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsSignatureFieldComponent;\n\nimport Ember from 'ember';\n\nimport baseField from '../base-field/component';\n\nimport config from '../../../../config/environment';\n\nimport SignaturePad from 'signature_pad';\n\nimport $ from 'jquery';\n\nCollectorFieldsSignatureFieldComponent = baseField.extend({\n    intl: Ember.inject.service(),\n    signature_pad: null,\n    title: Ember.computed(function () {\n        return this.get('intl').t('modal.signature.title');\n    }),\n    sig: null,\n    signatureSrc: Ember.computed('value', function () {\n        if (typeof this.get('value') === 'string') {\n            return this.get('value');\n        }\n        if (Ember.isArray(this.get('value'))) {\n            return config.APP.COLLECTOR_API_URL + '/' + this.get('value')[0].url;\n        }\n        return config.APP.COLLECTOR_API_URL + '/' + this.get('value').url;\n    }),\n    placeholder: Em.computed(function () {\n        if (this.get('placeholderText')) {\n            return this.get('placeholderText');\n        } else {\n            return this.get('intl').t('field.signature.placeholder');\n        }\n    }),\n    actions: {\n        showSignModal: function () {\n            return this.set('showModal', true);\n        },\n        save: function () {\n            var signature_pad;\n            signature_pad = this.get('signature_pad');\n            if (signature_pad.isEmpty()) {\n                this.set('sig', null);\n                this.sendAction('bubbleChange', null, this.get('field.name'));\n            } else {\n                this.set('sig', signature_pad.toDataURL());\n                this.sendAction('bubbleChange', signature_pad.toDataURL(), this.get('field.name'));\n            }\n            return this.set('showModal', false);\n        },\n        clear: function () {\n            var signature_pad;\n            signature_pad = this.get('signature_pad');\n            return signature_pad.clear();\n        },\n        didinsert: function () {\n            var canvas, signature_pad;\n            canvas = $('canvas').get(0);\n            signature_pad = new SignaturePad(canvas);\n            if (this.get('sig')) {\n                signature_pad.fromDataURL(this.get('sig'));\n            }\n            return this.set('signature_pad', signature_pad);\n        },\n        removeModal: function () {\n            if (this.get('isDestroyed')) {\n                return;\n            }\n            return this.set('showModal', false);\n        },\n    },\n});\n\nexport default CollectorFieldsSignatureFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"bCvVCGBP\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\"],\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"name\\\",[24,[\\\"field\\\",\\\"name\\\"]]],[12,\\\"class\\\",[29,[\\\"list-group-item \\\",[28,\\\"if\\\",[[24,[\\\"value\\\"]],\\\"list-group-item-success\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"showSignModal\\\",\\\"signature-modal\\\",[24,[\\\"model\\\"]],[24,[\\\"field\\\",\\\"ext\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[1,[22,\\\"placeholder\\\"],false],[0,\\\"\\\\n    \\\"],[4,\\\"if\\\",[[24,[\\\"value\\\"]]],null,{\\\"statements\\\":[[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"signature-preview\\\"],[11,\\\"src\\\",[22,\\\"signatureSrc\\\"]],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"field.signature.placeholder\\\"],null]],[8],[9],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok-sign pull-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"bs-modal\\\",[[12,\\\"class\\\",\\\"signature-modal\\\"]],[[\\\"@open\\\",\\\"@onShown\\\",\\\"@onHidden\\\"],[[23,0,[\\\"showModal\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"didinsert\\\"],null],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showModal\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[1,[23,0,[\\\"title\\\"]],false],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"canvas\\\",true],[10,\\\"width\\\",\\\"500\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n        \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"default\\\",[28,\\\"action\\\",[[23,0,[]],\\\"clear\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"modal.clear\\\"],null],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n        \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"primary\\\",[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"modal.ok\\\"],null],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/signature-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/status-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsStatusFieldComponent;\n\nimport Ember from 'ember';\n\nimport textInput from '../text-field/component';\n\nCollectorFieldsStatusFieldComponent = textInput.extend({\n    intl: Ember.inject.service(),\n    prompt: Ember.computed('field.prompt', function () {\n        if (this.get('field.prompt')) {\n            return this.get('field.prompt');\n        }\n        if (this.get('field.translated_name')) {\n            return (\n                this.get('intl').t('general.select_with_fieldname') +\n                ' ' +\n                this.get('field.translated_name').toLowerCase() +\n                '...'\n            );\n        }\n        return this.get('intl').t('general.select_choose');\n    }),\n    options: Ember.computed('field.options', {\n        set: function (key, value) {\n            return (this._value = value);\n        },\n        get: function () {\n            var intl;\n            if (this._value) {\n                return this._value;\n            }\n            intl = this.get('intl');\n            return Em.A(\n                this.get('field.options').map(function (item) {\n                    var name;\n                    if (intl.exists('status.' + item)) {\n                        name = intl.t('status.' + item);\n                    } else {\n                        name = item;\n                    }\n                    return Ember.Object.create({\n                        id: item,\n                        name: name,\n                    });\n                }),\n            );\n        },\n    }),\n    actions: {\n        change: function (id) {\n            return this.sendAction('bubbleChange', id, this.get('field.name'));\n        },\n    },\n});\n\nexport default CollectorFieldsStatusFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"AQUMMq4H\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[7,\\\"select\\\",true],[11,\\\"class\\\",[29,[[22,\\\"_class\\\"]]]],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[8],[1,[28,\\\"if\\\",[[24,[\\\"prompt\\\"]],[24,[\\\"prompt\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[29,[[23,1,[\\\"id\\\"]]]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"value\\\"]]],null]],[8],[0,\\\"\\\\n            \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/status-field/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\nimport { debounce } from '@ember/runloop';\nimport { A } from '@ember/array';\n\nexport default Component.extend({\n    store: service(),\n\n    tags: null,\n    options: A([]),\n\n    init: function () {\n        this._super(...arguments);\n        set(this, 'tags', []);\n    },\n\n    actions: {\n        addTag(tag) {\n            set(this, 'tag', tag);\n            debounce(this, this.addTagToList, 120);\n        },\n\n        removeTagAtIndex(index) {\n            get(this, 'tags').removeAt(index);\n        },\n\n        queryForUser(currentInputValue) {\n            if (currentInputValue === '') {\n                return;\n            }\n            set(this, 'currentInputValue', currentInputValue);\n            debounce(this, this.queryBackend, 700);\n        },\n    },\n\n    queryBackend() {\n        set(this, 'options', A([]));\n\n        let users = get(this, 'store').query(get(this, 'form'), {\n            q: get(this, 'currentInputValue'),\n        });\n        users.then((results) => {\n            set(this, 'showDropdown', true);\n            let field = get(this, 'field');\n            results.forEach((result) => {\n                if (get(result, field)) {\n                    get(this, 'options').pushObject(get(result, field));\n                }\n            });\n        });\n    },\n\n    addTagToList() {\n        let tag = get(this, 'tag');\n        let tagObj = { tag: tag, error: false };\n\n        set(this, 'showDropdown', false);\n\n        if (this.validateEmail(tag)) {\n            tagObj.error = true;\n        }\n\n        get(this, 'tags').pushObject(tagObj);\n\n        this.tagListChanged(get(this, 'tags'));\n    },\n\n    validateEmail(email) {\n        return !/^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i.test(\n            email,\n        );\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"TUyk36y0\",\"block\":\"{\\\"symbols\\\":[\\\"opt\\\",\\\"tag\\\"],\\\"statements\\\":[[4,\\\"tag-input\\\",null,[[\\\"tags\\\",\\\"addTag\\\",\\\"removeTagAtIndex\\\",\\\"onKeyUp\\\"],[[24,[\\\"tags\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addTag\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeTagAtIndex\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"queryForUser\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[23,2,[\\\"error\\\"]],\\\"error\\\"],null]],[8],[1,[23,2,[\\\"tag\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[4,\\\"if\\\",[[24,[\\\"showDropdown\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"options\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"ajax-select\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"options\\\"],[10,\\\"id\\\",\\\"tag-list-dropdown\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"addTag\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                            \\\"],[1,[23,1,[]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/tag-input-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/text-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsTextFieldComponent;\n\nimport Ember from 'ember';\n\nimport base from '../base-field/component';\n\nCollectorFieldsTextFieldComponent = base.extend({\n    // Methods\n\n    setValue: Em.on('init', function () {\n        return Ember.run.next(this, () => {\n            if (this.get('field.value') && !this.get('model.' + this.get('field.name'))) {\n                return this.set('value', this.get('field.value'));\n            }\n        });\n    }),\n    // Send the change action\n    valueObserver: Em.observer('value', function () {\n        if (this.get('value') === this.get('field.value')) {\n            return;\n        }\n        return this.sendAction('bubbleChange', this.get('value'), this.get('field.name'));\n    }),\n    actions: {\n        touchMove: function () {\n            //If the user touches this field and starts scrolling, we actually want to scroll and not snap to this field and open options\n            // #UX\n            return Em.run.debounce(\n                this,\n                function () {\n                    console.log('setting touchmoving');\n                    return this.set('touchMoving', true);\n                },\n                50,\n            );\n        },\n        touchEnd: function () {\n            //We have ended fiddling with this field,\n            // if we were moving then blur to not snap scroll back to this field because of mobile shenanigans\n            console.log(this.get('touchMoving'));\n            if (this.get('touchMoving')) {\n                this.set('touchMoving', false);\n                return this.element.querySelector('input').blur();\n            }\n        },\n    },\n});\n\nexport default CollectorFieldsTextFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"qiqYrjKw\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"value\\\",\\\"class\\\",\\\"disabled\\\",\\\"touchMove\\\",\\\"touchEnd\\\"],[\\\"text\\\",[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"value\\\"]],[24,[\\\"_class\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"touchMove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"touchEnd\\\"],null]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/text-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/textarea-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsTextareaFieldComponent;\n\nimport Ember from 'ember';\n\nimport base from '../base-field/component';\n\nimport $ from 'jquery';\n\nCollectorFieldsTextareaFieldComponent = base.extend({\n    // Methods\n\n    setValue: Em.on('init', function () {\n        return this.set('value', this.get('field.value'));\n    }),\n    // Send the change action\n    valueObserver: Em.observer('value', function () {\n        if (this.get('value') === this.get('field.value')) {\n            return;\n        }\n        return this.sendAction('bubbleChange', this.get('value'), this.get('field.name'));\n    }),\n    actions: {\n        touchMove: function () {\n            //If the user touches this field and starts scrolling, we actually want to scroll and not snap to this field and open options\n            // #UX\n            return Em.run.debounce(\n                this,\n                function () {\n                    console.log('setting touchmoving');\n                    return this.set('touchMoving', true);\n                },\n                50,\n            );\n        },\n        touchEnd: function () {\n            //We have ended fiddling with this field,\n            // if we were moving then blur to not snap scroll back to this field because of mobile shenanigans\n            console.log(this.get('touchMoving'));\n            if (this.get('touchMoving')) {\n                this.set('touchMoving', false);\n                return $('textarea', this.element).blur();\n            }\n        },\n    },\n});\n\nexport default CollectorFieldsTextareaFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"4+Z2zXeH\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"cols\\\",\\\"value\\\",\\\"class\\\",\\\"disabled\\\",\\\"touchMove\\\",\\\"touchEnd\\\"],[4,8,[24,[\\\"value\\\"]],[24,[\\\"_class\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"touchMove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"touchEnd\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/textarea-field/template.hbs\"}});","import baseField from '../text-field/component';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default baseField.extend({\n    gui: service(),\n\n    actions: {\n        changeValue(event) {\n            const value = event.target.value;\n            set(this, 'value', value);\n            if (this.bubbleChange) this.bubbleChange(value, get(this, 'field.name'));\n        },\n\n        timefy() {\n            const value = this.tryToGuessTime(get(this, 'value'));\n            set(this, 'value', value);\n            if (this.bubbleChange) this.bubbleChange(value, get(this, 'field.name'));\n        },\n\n        select() {\n            this.element.querySelector('input').select();\n        },\n    },\n\n    tryToGuessTime(str) {\n        let hours, mins;\n        if (!str) return '';\n        if (str.includes(':')) {\n            const exploded = str.split(':');\n            mins = parseInt(exploded[1]);\n            hours = parseInt(exploded[0]);\n        } else if (str.includes('.')) {\n            const exploded = str.split('.');\n            mins = parseInt(exploded[1]);\n            hours = parseInt(exploded[0]);\n        } else if (str.length >= 3) {\n            mins = parseInt(str.substring(str.length - 2, str.length));\n            hours = parseInt(str.substring(0, str.length - 2));\n        } else if (str === '') {\n            return '';\n        } else {\n            hours = parseInt(str, 10);\n            mins = 0;\n        }\n\n        if (isNaN(hours)) hours = 0;\n        if (isNaN(mins)) mins = 0;\n\n        if (hours < 0) hours *= -1;\n        if (hours > 23) hours = 23;\n        if (mins < 0) mins = 0;\n        if (mins > 60) mins = 59;\n\n        if (hours < 10) hours = '0' + hours;\n        if (mins < 10) mins = '0' + mins;\n\n        return '' + hours + ':' + mins;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"lU8cOVd1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"gui\\\",\\\"isMobileComputed\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"input\\\",true],[11,\\\"class\\\",[22,\\\"_class\\\"]],[11,\\\"name\\\",[24,[\\\"field\\\",\\\"name\\\"]]],[11,\\\"value\\\",[22,\\\"value\\\"]],[11,\\\"disabled\\\",[22,\\\"disabled\\\"]],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\"],null]],[10,\\\"type\\\",\\\"time\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"autocomplete\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"disabled\\\",\\\"focusIn\\\",\\\"focusOut\\\",\\\"enter\\\"],[\\\"text\\\",\\\"off\\\",[28,\\\"concat\\\",[[24,[\\\"_class\\\"]],\\\" narrow\\\"],null],[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"select\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"timefy\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"timefy\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/time-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/timeclean-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsIMEIFieldComponent;\n\nimport Ember from 'ember';\n\nimport base from '../base-field/component';\n\nimport { debounce } from '@ember/runloop';\n\nCollectorFieldsIMEIFieldComponent = base.extend({\n    onInit: Em.on('init', function () {\n        var arr, i, item, len, value;\n        value = this.get('model.rfid_device_id');\n        if (value) {\n            if (typeof value === 'string') {\n                value = JSON.parse(value);\n            }\n            if (Array.isArray(value)) {\n                arr = Em.A([]);\n                for (i = 0, len = value.length; i < len; i++) {\n                    item = value[i];\n                    arr.pushObject({\n                        value: parseInt(item, 10),\n                    });\n                }\n                return this.set('array', arr);\n            }\n        }\n    }),\n    makeArray: Em.observer('model.rfid_device_id', function () {\n        var arr, i, item, len, value;\n        value = this.get('model.rfid_device_id');\n        if (value) {\n            if (typeof value === 'string') {\n                value = JSON.parse(value);\n            }\n            if (Array.isArray(value)) {\n                arr = Em.A([]);\n                for (i = 0, len = value.length; i < len; i++) {\n                    item = value[i];\n                    arr.pushObject({\n                        value: parseInt(item, 10),\n                    });\n                }\n                return this.set('array', arr);\n            }\n        }\n    }),\n    setValue: Em.observer('array.[]', 'array.@each.value', function () {\n        var i, item, len, ref, value;\n        value = [];\n        ref = this.get('array');\n        for (i = 0, len = ref.length; i < len; i++) {\n            item = ref[i];\n            if (item.value !== '') {\n                value.push(item.value);\n            }\n        }\n        this.set('value', JSON.stringify(value));\n        if (this.get('value') === this.get('field.value')) {\n            return;\n        }\n        return this.sendAction('bubbleChange', this.get('value'), this.get('field.name'));\n    }),\n    actions: {\n        change: function () {\n            return debounce(\n                this,\n                function () {\n                    return this.sendAction(\n                        'bubbleChange',\n                        this.get('value'),\n                        this.get('field.name'),\n                        true,\n                        false,\n                    );\n                },\n                2000,\n            );\n        },\n        add: function () {\n            if (!this.get('array')) {\n                this.set('array', Em.A([]));\n            }\n            return this.get('array').pushObject({\n                value: '',\n            });\n        },\n        remove: function (obj) {\n            return this.get('array').removeObject(obj);\n        },\n    },\n});\n\nexport default CollectorFieldsIMEIFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"mMVrYrDZ\",\"block\":\"{\\\"symbols\\\":[\\\"val\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"useAsFilter\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"value\\\",\\\"class\\\",\\\"key-up\\\"],[\\\"text\\\",[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"value\\\"]],[24,[\\\"_class\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"array\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-inline\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,1,[\\\"value\\\"]],[24,[\\\"_class\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,1,[]]]],[8],[1,[28,\\\"standard-icon\\\",[\\\"remove\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success btn-sm\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add\\\"]],[8],[1,[28,\\\"t\\\",[\\\"project.add.imei\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/timeclean-field/template.hbs\"}});","import Component from '@ember/component';\nimport { inject } from '@ember/service';\nimport { computed, get, set } from '@ember/object';\nimport { isPresent } from '@ember/utils';\n// import collectorField from '../../../../mixins/collector-field';\nimport moment from 'moment';\nimport { later } from '@ember/runloop';\n\nexport default Component.extend({\n    store: inject(),\n\n    _record: computed('field.value', function () {\n        if (isPresent(get(this, 'field.value'))) {\n            return get(this, 'store').peekRecord(\n                get(this, 'field.options.form'),\n                get(this, 'field.value'),\n            );\n        } else {\n            const record = get(this, 'store').createRecord(get(this, 'field.options.form'));\n            this.sendAction('bubbleChange', record, get(this, 'field.name')); //eslint-disable-line\n            return record;\n        }\n    }),\n\n    _isRunning: computed('_record.{starttime,endtime}', function () {\n        return (\n            isPresent(get(this, '_record.starttime')) && !isPresent(get(this, '_record.endtime'))\n        );\n    }),\n    _isStopped: computed('_record.endtime', function () {\n        return isPresent(get(this, '_record.endtime'));\n    }),\n\n    time: computed(function () {\n        if (isPresent(get(this, '_record.endtime'))) {\n            return this.giveFormattedDifference(\n                get(this, '_record.starttime'),\n                get(this, '_record.endtime'),\n            );\n        } else if (isPresent(get(this, '_record.starttime'))) {\n            return this.giveFormattedDifference(get(this, '_record.starttime'), moment());\n        } else {\n            return '00:00:00';\n        }\n    }),\n\n    init() {\n        this._super(...arguments);\n        this._ticker();\n    },\n\n    actions: {\n        toggleButton() {\n            if (get(this, '_isStopped')) return;\n            const record = get(this, '_record');\n            if (isPresent(get(record, 'starttime'))) {\n                set(record, 'endtime', moment().format('YYYY-MM-DDTHH:mm:ss.SSSZ'));\n                record.save();\n            } else {\n                this._ticker();\n                set(record, 'starttime', moment().format('YYYY-MM-DDTHH:mm:ss.SSSZ'));\n                record.save();\n            }\n        },\n    },\n\n    _ticker() {\n        if (get(this, '_isStopped')) return;\n        this.notifyPropertyChange('time');\n        later(this, this._ticker, 1000);\n    },\n\n    giveFormattedDifference(start, end) {\n        const ms = moment(end).diff(moment(start));\n        const d = moment.duration(ms);\n        const hours = Math.floor(d.asHours());\n        return (hours < 10 ? '0' + hours : hours) + moment.utc(ms).format(':mm:ss');\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"iy3iI78z\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",[29,[\\\"circle-button \\\",[28,\\\"if\\\",[[24,[\\\"_isRunning\\\"]],\\\"stop\\\",\\\"start\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"_isStopped\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"toggleButton\\\"]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move \\\",[28,\\\"concat\\\",[\\\"move-\\\",[28,\\\"if\\\",[[24,[\\\"_isRunning\\\"]],\\\"Stop\\\",\\\"Play\\\"],null]],null]]]],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"h4\\\",true],[8],[1,[22,\\\"time\\\"],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/timerlink-field/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\n/*\n    Give this component:\n        name(String), this will be used to determine the translation keys for the labels (name + \".on\" / name + \".off\")\n                    -if no name is give/found, will fallback to general \"general.on\" and \"general.off\" translation key\n                    -this will also become the x-toggle's input's name attribute\n        showLabels(bool) whether labels (on/off text) will be show\n        disabled(bool) whether the field is toggleable\n        theme(String) One of 'light', 'ios', 'flat', 'flip', 'skewed', 'default'.\n        size(String) One of 'small', 'medium', 'large'.\n\n    some defaults are set below but you can override them by giving them to this component separetely\n*/\nexport default Component.extend({\n    intl: service(),\n\n    showLabels: true,\n    theme: 'material',\n    size: 'large',\n\n    onLabel: computed(function () {\n        return get(this, 'form') + '.' + get(this, 'name') + '.on';\n    }),\n\n    offLabel: computed(function () {\n        return get(this, 'form') + '.' + get(this, 'name') + '.off';\n    }),\n\n    fallbackOnLabel: computed('intl.primaryLocale', function () {\n        if (this.getLocale() === 'xy') {\n            return get(this, 'onLabel');\n        } else {\n            return 'general.yes';\n        }\n    }),\n\n    fallbackOffLabel: computed('intl.primaryLocale', function () {\n        if (this.getLocale() === 'xy') {\n            return get(this, 'offLabel');\n        } else {\n            return 'general.no';\n        }\n    }),\n\n    getLocale() {\n        let intl = get(this, 'intl');\n        return get(intl, 'primaryLocale');\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"g0I+2h7M\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"theme\\\",\\\"onLabel\\\",\\\"offLabel\\\",\\\"showLabels\\\",\\\"size\\\",\\\"name\\\",\\\"disabled\\\",\\\"class\\\"],[[24,[\\\"toggled\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"toggled\\\"]]],null]],null],[24,[\\\"theme\\\"]],[28,\\\"t\\\",[[24,[\\\"onLabel\\\"]]],[[\\\"default\\\"],[[24,[\\\"fallbackOnLabel\\\"]]]]],[28,\\\"t\\\",[[24,[\\\"offLabel\\\"]]],[[\\\"default\\\"],[[24,[\\\"fallbackOffLabel\\\"]]]]],[24,[\\\"showLabels\\\"]],[24,[\\\"size\\\"]],[24,[\\\"name\\\"]],[24,[\\\"disabled\\\"]],[24,[\\\"class\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/toggle-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/username-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsUsernameFieldComponent;\n\nimport Ember from 'ember';\n\nimport text from '../text-field/component';\n\nCollectorFieldsUsernameFieldComponent = text.extend({\n    // Send the change action\n    valueObserver: Em.observer('value', function () {\n        return this.sendAction(\n            'bubbleChange',\n            this.get('value'),\n            this.get('field.name'),\n            true,\n            true,\n            700,\n        );\n    }),\n});\n\nexport default CollectorFieldsUsernameFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"Md4pBhaC\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"value\\\"]],[24,[\\\"_class\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/username-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/fields/weather-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nimport Ember from 'ember';\n\nimport base from '../base-field/component';\n\nimport { inject as service } from '@ember/service';\n\nimport config from '../../../../config/environment';\n\nexport default base.extend({\n    gps: service(),\n    weather: service(),\n    weatherLoading: true,\n    didInsertElement: function () {\n        return this.get('gps').start();\n    },\n    translations: {\n        temp: '°C',\n        wspeed: 'm/s',\n        percent: '%',\n    },\n\n    // Methods\n\n    setValue: Em.on('init', function () {\n        return Ember.run.next(this, () => {\n            if (this.get('field.value') && !this.get('model.' + this.get('field.name'))) {\n                return this.set('value', this.get('field.value'));\n            }\n        });\n    }),\n    // Send the change action\n    valueObserver: Em.observer('value', function () {\n        if (this.get('value') === this.get('field.value')) {\n            return;\n        }\n        return this.sendAction('bubbleChange', this.get('value'), this.get('field.name'));\n    }),\n    gpsWeather: Ember.computed(\n        'gps.lockedPosition',\n        'gps.lockedLatitude',\n        'gps.lockedLongitude',\n        'gps.lockedAccuracy',\n        function () {\n            var position;\n            this.set('weatherLoading', true);\n            if (!this.get('gps.lockedPosition')) {\n                Ember.run.next(this, () => {\n                    this.set('value', null);\n                    return this.set('weatherLoading', false);\n                });\n                return false;\n            } else {\n                position = {\n                    latitude: this.get('gps.lockedLatitude'),\n                    longitude: this.get('gps.lockedLongitude'),\n                    accuracy: this.get('gps.lockedAccuracy'),\n                };\n                return this.get('weather')\n                    .fetchByGPS(position)\n                    .then((weather) => {\n                        Ember.run.next(this, () => {\n                            this.set('value', weather);\n                            return this.set('weatherLoading', false);\n                        });\n                        return true;\n                    });\n            }\n        },\n    ),\n});\n","export default Ember.HTMLBars.template({\"id\":\"S+1TUeiA\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"weather-info\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"gpsWeather\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"weatherLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.fetching_weather\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move move-\\\",[24,[\\\"value\\\",\\\"weather\\\"]],\\\" weather-icon\\\"]]],[8],[9],[0,\\\"\\\\n                    \\\"],[1,[24,[\\\"value\\\",\\\"temperature\\\"]],false],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[0,\\\", \\\"],[1,[24,[\\\"value\\\",\\\"windspeed\\\"]],false],[1,[24,[\\\"translations\\\",\\\"wspeed\\\"]],false],[0,\\\", \\\"],[1,[24,[\\\"value\\\",\\\"humidity\\\"]],false],[1,[24,[\\\"translations\\\",\\\"percent\\\"]],false],[0,\\\", \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.abbr_dew_point\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"value\\\",\\\"dew_point\\\"]],false],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"weather-brand\\\"],[8],[0,\\\"—\\\"],[1,[28,\\\"t\\\",[\\\"general.weather_provider\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/weather-field/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"cKu8SXDK\",\"block\":\"{\\\"symbols\\\":[\\\"@record\\\",\\\"@remove\\\",\\\"@type\\\",\\\"@openModal\\\",\\\"@canRemove\\\"],\\\"statements\\\":[[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"added-attachment-item \\\",[28,\\\"if\\\",[[28,\\\"or\\\",[[23,1,[\\\"hasDirtyAttributes\\\"]],[23,1,[\\\"isDirty\\\"]]],null],\\\"unsaved-changes\\\"],null],\\\"\\\\n        \\\",[28,\\\"if\\\",[[28,\\\"is-before\\\",[[23,1,[\\\"valid_until\\\"]],[28,\\\"now\\\",null,null]],[[\\\"precision\\\"],[\\\"days\\\"]]],\\\"expired\\\"],null],\\\"\\\\n        \\\",[28,\\\"if\\\",[[23,1,[\\\"isNew\\\"]],\\\"unsaved\\\"],null]]]],[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[\\\"attachment-item-\\\",[23,1,[\\\"id\\\"]]],null]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,4,[]],[23,3,[]],[23,1,[]]],null]]],[8],[0,\\\"\\\\n\\\"],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"size-15\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[23,1,[\\\"attachments\\\"]],\\\"length\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.attachments_count\\\"],[[\\\"count\\\"],[[28,\\\"get\\\",[[23,1,[\\\"attachments\\\"]],\\\"length\\\"],null]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"vismaicon vismaicon-sm vismaicon-filled vismaicon-error\\\"],[8],[0,\\\"\\\\n                \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@tooltipClass\\\",\\\"@spacing\\\",\\\"@text\\\",\\\"@popperContainer\\\"],[\\\"workpermit-tooltip\\\",20,[28,\\\"t\\\",[\\\"workpermit.attachment.missing_attachments\\\"],null],\\\"body\\\"]]],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"size-35\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"workpermit\\\",[28,\\\"if\\\",[[23,1,[\\\"id_type\\\"]],\\\"id_type\\\",\\\"type\\\"],null],[28,\\\"or\\\",[[23,1,[\\\"id_type\\\"]],[23,1,[\\\"type\\\"]]],null]]]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"item-expire-info size-50\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"workpermit\\\",\\\"valid_until\\\",[23,1,[\\\"valid_until\\\"]]]]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-before\\\",[[23,1,[\\\"valid_until\\\"]],[28,\\\"now\\\",null,null]],[[\\\"precision\\\"],[\\\"days\\\"]]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"vismaicon vismaicon-sm vismaicon-filled vismaicon-error\\\"],[10,\\\"data-anchor\\\",\\\"expired-icon\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"                \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@tooltipClass\\\",\\\"@spacing\\\",\\\"@text\\\",\\\"@popperContainer\\\"],[\\\"workpermit-tooltip\\\",20,[28,\\\"t\\\",[\\\"workpermit.attachment.expired_attachment\\\"],null],\\\"body\\\"]]],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,5,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"remove glyphicon glyphicon-trash\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,2,[]],[23,1,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/work-permit-attachment/attachment-item/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Vou1b29D\",\"block\":\"{\\\"symbols\\\":[\\\"dropzone\\\",\\\"queue\\\",\\\"file\\\",\\\"@removeFile\\\",\\\"@downloadFile\\\",\\\"@viewOnly\\\",\\\"@fileList\\\",\\\"@queueName\\\",\\\"@upload\\\"],\\\"statements\\\":[[5,\\\"file-dropzone\\\",[],[[\\\"@accept\\\",\\\"@name\\\"],[\\\"image/*,application/pdf\\\",[23,8,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[0,\\\"    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"modal-attachments\\\\n            \\\",[28,\\\"unless\\\",[[28,\\\"or\\\",[[23,7,[]],[23,2,[\\\"files\\\",\\\"length\\\"]]],null],\\\"attachment-placeholder\\\"],null],\\\"\\\\n            \\\",[28,\\\"if\\\",[[23,1,[\\\"active\\\"]],\\\"dragging\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"files\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"attachment-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"upload-progress\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[11,\\\"aria-valuenow\\\",[29,[[23,2,[\\\"progress\\\"]]]]],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[11,\\\"style\\\",[28,\\\"concat\\\",[\\\"width: \\\",[23,2,[\\\"progress\\\"]],\\\"%;\\\"],null]],[8],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"p\\\",true],[8],[0,\\\" \\\"],[1,[23,2,[\\\"progress\\\"]],false],[0,\\\" %\\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,7,[]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,7,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"attachment-container\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"file-preview\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"img\\\",true],[11,\\\"src\\\",[23,3,[\\\"previewFile\\\"]]],[11,\\\"title\\\",[29,[[23,3,[\\\"name\\\"]]]]],[11,\\\"alt\\\",[29,[[23,3,[\\\"name\\\"]]]]],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"attachment-actions\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"download vismaicon vismaicon-download\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,5,[]],[23,3,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[23,6,[]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"remove glyphicon glyphicon-trash\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,4,[]],[23,3,[\\\"originalFile\\\"]]],null]]],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"or\\\",[[23,7,[]],[23,2,[\\\"files\\\",\\\"length\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"workpermit.attachment_modal.no_attachments\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[5,\\\"file-upload\\\",[],[[\\\"@name\\\",\\\"@accept\\\",\\\"@onfileadd\\\",\\\"@disabled\\\"],[[23,8,[]],\\\"image/*,application/pdf\\\",[23,9,[]],[23,6,[]]]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[23,1,[\\\"active\\\"]],[28,\\\"not\\\",[[23,6,[]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"drag-overlay\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"valid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"drag-message\\\"],[8],[1,[28,\\\"t\\\",[\\\"workpermit.attachment_modal.drop_to_upload\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"drag-message invalid\\\"],[8],[1,[28,\\\"t\\\",[\\\"workpermit.attachment_modal.invalid_file_type\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/work-permit-attachment/attachment-modal/attachments-section/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\nimport { blackListFiles } from 'tt4/ember-movenium/utils/file';\nimport config from 'tt4/config/environment';\nimport { tracked } from '@glimmer/tracking';\nimport podNames from 'ember-component-css/pod-names';\n\n\nexport default class CollectorFieldsWorkPermitAttachmentModalComponent extends Component {\n    @service gui;\n    @service capi;\n    @service ttapi;\n    @service notifications;\n    @service intl;\n    @service dialogs;\n    @service('collector-service') collector;\n\n    @tracked files = [];\n    @tracked isLoading = false;\n\n    constructor(owner, args) {\n        super(owner, args);\n        this.capiURL = config.APP.COLLECTOR_API_URL;\n        this.queueName = 'work-permit-queue';\n        this.form = 'workpermit';\n        this.files = this.args.record.attachments || [];\n        this.initAttachments();\n    }\n\n    get isDoneButtonDisabled() {\n        const record = this.args.record;\n        // Disable the Done button if the record is not new and has no changes\n        if ( !record.isNew && !record.hasDirtyAttributes ) return true;\n        // Disable the Done button unless an expiration date is set, as it is a required field\n        if ( !record.valid_until) return true;\n\n        return false;\n    }\n\n    get styleNamespace() {\n        return podNames['collector/fields/work-permit-attachment/attachment-modal'];\n    }\n\n    get isAndroid() {\n        return this.gui.isAndroid;\n    }\n\n    get permitType() {\n        return this.args.record.type;\n    }\n\n    get filePreviewCache() {\n        return this.args.filePreviewCache;\n    }\n\n    get fileList() {\n\n        if (!this.files) return [];\n\n        // map the file list to include the preview URL\n        const mappedFiles = this.files.toArray().map((file) => {\n            const fileObject = {\n                name: file.name,\n                type: file.type,\n                originalFile: file,\n                name_on_s3: file.name_on_s3,\n            };\n\n            fileObject.previewFile = this.filePreviewCache[file.name_on_s3];\n            return fileObject;\n        });\n\n        return mappedFiles;\n    }\n\n    get showFields() {\n        const formFields = this.collector.fieldArray(this.form);\n        const allowedFields = this.permitTypeFields(this.permitType);\n\n        return formFields\n            // Filter fields based on visibility and allowedFields array\n            .filter(field =>\n                !field.features?.hide &&\n                allowedFields.includes(field.name)\n            )\n            .map(field => {\n                // Handle viewOnly mode, if true, disable all fields\n                // Create a copy for viewOnly mode instead of mutating original\n                if (this.args.viewOnly) {\n                    return {\n                        ...field,\n                        features: {\n                            ...field.features,\n                            disabled: true\n                        }\n                    };\n                }\n                return field;\n            });\n    }\n\n    permitTypeFields(type) {\n        switch (type) {\n            case 'identification':\n                return ['valid_until', 'id_type', 'document_number'];\n            case 'residencepermit':\n                return ['valid_until', 'country', 'document_number'];\n            case 'a1certificate':\n                return ['valid_until', 'country'];\n            default:\n                return [];\n        }\n    }\n\n    @action\n    async upload(file) {\n\n        // check if file is too large\n        if (file.size > 20971520) {\n            return this.notifications.error(this.intl.t('field.fileupload.file_too_large'), {\n                autoClear: true,\n            });\n        }\n\n        // check if file is a valid type\n        const fileExt = file.name?.split('.')[1].toLowerCase();\n        if (blackListFiles().includes('.' + fileExt)) {\n            return this.notifications.error(this.intl.t('field.fileupload.blocked_filetype'), {\n                autoClear: true,\n            });\n        }\n\n        // upload the file\n        this.uploadFile(file);\n    }\n\n    @action\n    removeFile(file) {\n        // Filter out the file to be removed\n        this.files = this.files.filter((item) => item !== file);\n\n        // Update the record and trigger the change action\n        this.args.record.attachments = [...this.files];\n        this.args.change(this.files);\n    }\n\n    @action\n    async cancel() {\n        if (await this.shouldAbortCancel()) return;\n        this.args.onClose('cancel');\n    }\n\n    @action\n    async downloadFile(file) {\n        const downloadUrl = file.previewFile;\n        const fileName = file.name;\n\n        // fetch the file from S3\n        const response = await fetch(downloadUrl, {\n            cache: 'no-store' // Prevents Chrome-specific CORS issues with S3 presigned URLs by forcing fresh requests\n        });\n\n        const blob = await response.blob();\n        const url = window.URL.createObjectURL(blob);\n\n        // create a link element and trigger a download\n        const link = document.createElement('a');\n        link.href = url;\n        link.download = fileName;\n\n        // Append the link to the body, trigger a click, and remove it\n        document.body.appendChild(link);\n        link.click();\n        document.body.removeChild(link);\n\n        // revoke the object URL to free up memory\n        window.URL.revokeObjectURL(url);\n    }\n\n    @action\n    async addAndroidImage(source) {\n        try {\n            const file = await this.androidFile.captureImage(source);\n            await this.uploadImage(file);\n        } catch (error) {\n            // Don't show error if user cancelled\n            if (!error?.message?.toLowerCase().includes('cancel')) {\n                this.notifications.error(\n                    this.intl.t('field.fileupload.camera_error'),\n                    { autoClear: true }\n                );\n            }\n        }\n    }\n\n    async initAttachments() {\n        if(!this.files.length) return\n        this.isLoading = true;\n\n        // get list of file names that need to be fetched from S3\n        const fileS3Names = this.files\n            .filter((file) => file.name_on_s3 && !this.filePreviewCache[file.name_on_s3])\n            .map((file) => file.name_on_s3);\n\n        // if no files need to be fetched, return\n        if (!fileS3Names.length) {\n            this.isLoading = false;\n            return;\n        }\n\n        // get presigned s3 urls from capi\n        const presignedUrls = await this.ttapi.request(\"api/getPresignedUrl\", {\n            data: {\n                workpermitid: this.args.record.id,\n                reasoning: this.args.reason\n            },\n        });\n\n        // set the file preview urls in the cache\n        for (const fileName in presignedUrls) {\n            this.args.addFilePreviewToCache(fileName, presignedUrls[fileName]);\n        }\n\n        this.isLoading = false;\n    }\n\n    async uploadFile(file) {\n        let policyUrl = '/awsurl?filename=' + file.name + '&format=secure';\n\n        try {\n\n            // get s3 upload info from capi\n            const response = await this.capi.request(policyUrl);\n\n            // upload file to s3\n            const task = file.upload(response.url, {\n                data: response.inputs,\n            });\n\n            // create file preview url and add it to the cache\n            const base64Url = await file.readAsDataURL();\n            this.args.addFilePreviewToCache(response.s3file, base64Url);\n\n            await task;\n            file.task = task;\n            file.name_on_s3 = response.s3file;\n\n            // update file list and record\n            this.addFile(file);\n        } catch (e) {\n            alert('upload failed', e);\n        }\n    }\n\n    // adds file to the list of uploaded files and updates the record\n    addFile(file) {\n\n        const updatedValue = [\n            {\n                name: file.name,\n                name_on_s3: file.name_on_s3,\n                type: file.type,\n            },\n            ...this.files,\n        ];\n\n        // Update the tracked property\n        this.files = updatedValue;\n\n        // Update the record and trigger the change action\n        this.args.record.attachments = updatedValue;\n        this.args.change(updatedValue);\n\n    }\n\n    async shouldAbortCancel() {\n        // if the record is not new and has no changes, we can cancel without confirmation\n        if (!this.args.record.isNew && !this.args.record.hasDirtyAttributes) return false;\n\n        // If the record is new and doesn't have anything filled, we can cancel without confirmation\n        const fieldsToCheck = ['valid_until', 'country', 'id_type', 'document_number'];\n        const isEmpty = fieldsToCheck.every(field => !this.args.record[field]);\n\n        if (this.args.record.isNew && isEmpty && this.files.length === 0) return false;\n\n        // if the record has changes, we need to confirm with the user\n        return ! await this.dialogs.confirm(this.intl.t('general.confirm.cancel'));\n    }\n\n}\n","export default Ember.HTMLBars.template({\"id\":\"FCm2t2EU\",\"block\":\"{\\\"symbols\\\":[\\\"@queueName\\\",\\\"@upload\\\",\\\"@disabled\\\",\\\"@addAndroidImage\\\",\\\"@isAndroid\\\",\\\"@cancel\\\",\\\"@isDoneButtonDisabled\\\",\\\"@onClose\\\",\\\"@viewOnly\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,9,[]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-actions\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,8,[]]],null]]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"add-buttons-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,5,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link inline-block\\\"],[12,\\\"disabled\\\",[23,3,[]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,4,[]],\\\"gallery\\\"],null]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-picture\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"field.fileupload.add_from_gallery\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link inline-block\\\"],[12,\\\"disabled\\\",[23,3,[]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,4,[]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-camera\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"field.fileupload.add_from_camera\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"file-upload\\\",[],[[\\\"@name\\\",\\\"@accept\\\",\\\"@onfileadd\\\"],[[23,1,[]],\\\"image/*,application/pdf\\\",[23,2,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"btn btn-secondary \\\",[28,\\\"if\\\",[[23,3,[]],\\\"disabled\\\",\\\"\\\"],null]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"attach-icon vismaicon vismaicon-sm vismaicon-attach\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"add.file\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-actions\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,6,[]]]],[8],[1,[28,\\\"t\\\",[\\\"workpermit.attachment_modal.cancel\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"disabled\\\",[23,7,[]]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,8,[]],\\\"done\\\"],null]]],[8],[1,[28,\\\"t\\\",[\\\"workpermit.attachment_modal.done\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/work-permit-attachment/attachment-modal/modal-buttons/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"wU8HTCKp\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"fieldHash\\\",\\\"@viewOnly\\\",\\\"@change\\\",\\\"@record\\\",\\\"@disabled\\\",\\\"@onClose\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"modal-overlay \\\",[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-content\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"h2\\\",true],[10,\\\"data-anchor\\\",\\\"modal-title\\\"],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"workpermit.attachment_modal.title.\\\",[23,0,[\\\"permitType\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-fields\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"showFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-field\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"features\\\",\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk mandatory-icon\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"label\\\",true],[8],[1,[23,1,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"let\\\",[[28,\\\"hash\\\",null,[[\\\"features\\\",\\\"form\\\",\\\"name\\\",\\\"options\\\",\\\"translated_name\\\",\\\"type\\\",\\\"value\\\"],[[23,1,[\\\"features\\\"]],[23,1,[\\\"form\\\"]],[23,1,[\\\"name\\\"]],[23,1,[\\\"options\\\"]],[23,1,[\\\"translated_name\\\"]],[23,1,[\\\"type\\\"]],[28,\\\"get\\\",[[23,5,[]],[23,1,[\\\"name\\\"]]],null]]]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"collector/field-comp\\\",[],[[\\\"@field\\\",\\\"@change\\\",\\\"@model\\\",\\\"@_class\\\"],[[23,2,[]],[23,4,[]],[23,5,[]],\\\"work-permit-attachments-field form-control\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[5,\\\"collector/fields/work-permit-attachment/attachment-modal/attachments-section\\\",[],[[\\\"@queueName\\\",\\\"@fileList\\\",\\\"@downloadFile\\\",\\\"@removeFile\\\",\\\"@upload\\\",\\\"@viewOnly\\\"],[[23,0,[\\\"queueName\\\"]],[23,0,[\\\"fileList\\\"]],[23,0,[\\\"downloadFile\\\"]],[23,0,[\\\"removeFile\\\"]],[23,0,[\\\"upload\\\"]],[23,3,[]]]]],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"attachment-instructions\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[10,\\\"data-anchor\\\",\\\"attachment-instructions\\\"],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"workpermit.attachment_modal.instructions.\\\",[23,0,[\\\"permitType\\\"]]],null]],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"        \\\"],[5,\\\"collector/fields/work-permit-attachment/attachment-modal/modal-buttons\\\",[],[[\\\"@isAndroid\\\",\\\"@addAndroidImage\\\",\\\"@disabled\\\",\\\"@addButtonText\\\",\\\"@queueName\\\",\\\"@upload\\\",\\\"@cancel\\\",\\\"@isDoneButtonDisabled\\\",\\\"@onClose\\\",\\\"@viewOnly\\\"],[[23,0,[\\\"isAndroid\\\"]],[23,0,[\\\"addAndroidImage\\\"]],[23,6,[]],[23,0,[\\\"addButtonText\\\"]],[23,0,[\\\"queueName\\\"]],[23,0,[\\\"upload\\\"]],[23,0,[\\\"cancel\\\"]],[23,0,[\\\"isDoneButtonDisabled\\\"]],[23,7,[]],[23,3,[]]]]],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/work-permit-attachment/attachment-modal/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { next } from '@ember/runloop';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class CollectorFieldsWorkPermitAttachmentComponent extends Component {\n    @service('collector-service') Collector;\n    @service('ttapi') ttapi;\n    @service session;\n    @service store;\n    @service dialogs;\n    @service intl;\n\n    @tracked records = [];\n    @tracked isModalOpen = false;\n    @tracked workingCopy = null; // Working copy displayed in modal (either new or clone of existing)\n    @tracked editingOriginal = null; // Reference to original when editing existing record\n    @tracked isConfirmModalOpen = false;\n    @tracked reason = '';\n    @tracked filePreviewCache = {};\n    @tracked isLoadingRecords = false;\n    @tracked isLoading = false;\n    @tracked hasUnsavedChanges = false;\n    @tracked viewOnly = false;\n\n    constructor() {\n        super(...arguments);\n        this.permitTypes = ['identification', 'residencepermit', 'a1certificate'];\n        this.initRecords();\n    }\n\n    get styleNamespace() {\n        return podNames['collector/fields/work-permit-attachment'];\n    }\n\n    get form() {\n        return this.args.field.options.form;\n    }\n\n    get parentform() {\n        return this.args.field.form;\n    }\n\n    get fieldname() {\n        return this.args.field.name;\n    }\n\n    get noCertificateRequired() {\n        return this.args.model.no_certificate_required;\n    }\n\n    get employerId() {\n        const employer = this.args.model.employer || this.args.model.ori_employer;\n        return get(employer, 'id')\n    }\n\n    get user() {\n        return this.args.model.ori_user || this.args.model;\n    }\n\n    set noCertificateRequired(value) {\n        this.args.model.no_certificate_required = value;\n    }\n\n    get requiredAttachments() {\n        const workPermit = this.args.model.work_permit_type;\n        switch (workPermit) {\n            case 'identification':\n                return ['identification'];\n            case 'residencepermit':\n                return ['identification', 'residencepermit'];\n            case 'a1certificate':\n                return this.noCertificateRequired ? ['identification'] : ['identification', 'a1certificate'];\n            default:\n                return [];\n        }\n    }\n\n    get isPrivilegedUser() {\n        return parseInt(this.session.currentUser.userlevel) === 5 || parseInt(this.session.currentUser.userlevel) === 6;\n    }\n\n    async initRecords() {\n        this.isLoadingRecords = true;\n        this.records = this.args.model[this.fieldname];\n        await this.loadRecords();\n        this.isLoadingRecords = false;\n    }\n\n    async loadRecords() {\n        const ids = this.records.map(record => record.id).filter(Boolean);\n        if (ids && ids.length > 0) {\n            await this.store.query(this.form, {\n                id: ids.join(','),\n                include: true,\n            });\n        }\n    }\n\n    createNewRecord(type) {\n        const record = this.store.createRecord(this.form, { type });\n        const parentfields = this.Collector.fieldArray(this.parentform);\n        parentfields.forEach(field => {\n            record[field.name] = this.args.model[field.name];\n        });\n        record.workpermit_owner = this.user ?? null;\n        record.attachments = [];\n        return record;\n    }\n\n    /* ------------------------------ Working Copy Helpers ------------------------------ */\n   makeWorkingCopy(record) {\n        return this.Collector?.copyRecord?.(record);\n    }\n\n    applyWorkingCopyChanges() {\n        if (!this.editingOriginal || !this.workingCopy) return;\n        const source = this.workingCopy;\n        const target = this.editingOriginal;\n        const fields = ['attachments','country','valid_until','type','id_type','document_number','workpermit_owner', 'vastuuGroupId'];\n        fields.forEach(f => {\n            if (f === 'attachments') {\n                target.attachments = (source.attachments || []).map(a => ({ ...a }));\n            } else if (source[f] !== undefined) {\n                target[f] = source[f];\n            }\n        });\n    }\n\n    hasMeaningfulData(record) {\n        return !!(\n            (record?.attachments && record.attachments?.length)\n            || record?.valid_until\n            || record?.id_type\n            || record?.document_number\n            || record?.country\n        );\n    }\n\n    startEdit(type, record) {\n        if (record) {\n            // Existing record: DO NOT CLONE YET (we need its id for presigned URL fetch in modal)\n            this.editingOriginal = record;\n            this.workingCopy = null;\n            this.editingType = type;\n        } else {\n            // New record path unchanged\n            this.editingOriginal = null;\n            this.workingCopy = this.createNewRecord(type);\n            this.editingType = type;\n        }\n    }\n\n    cancelEdit() {\n        if (!this.workingCopy && this.editingOriginal) {\n            // Nothing to discard (we never cloned yet)\n        } else if (this.workingCopy) {\n            if (this.editingOriginal) {\n                this.workingCopy.unloadRecord?.();\n            } else if (this.workingCopy.isNew) {\n                this.workingCopy.deleteRecord();\n                if (this.workingCopy.isDeleted) {\n                    this.store.unloadRecord(this.workingCopy);\n                }\n            }\n        }\n        this.workingCopy = null;\n        this.editingOriginal = null;\n        this.editingType = null;\n    }\n\n    doneEdit() {\n        if (!this.workingCopy && this.editingOriginal) {\n            // User made no edits (never cloned); nothing to apply\n        } else if (this.workingCopy) {\n            if (this.editingOriginal) {\n                this.applyWorkingCopyChanges();\n                this.workingCopy.unloadRecord?.();\n            } else {\n                if (!this.records.includes(this.workingCopy)) this.records.pushObject(this.workingCopy);\n            }\n        }\n        this.workingCopy = null;\n        this.editingOriginal = null;\n        this.editingType = null;\n        this.change();\n        this.markAsModified();\n    }\n\n    // Method to call when attachments are modified\n    markAsModified() {\n        this.hasUnsavedChanges = true;\n    }\n\n    // Method to call when form is saved\n    resetModifiedState() {\n        this.hasUnsavedChanges = false;\n    }\n\n    // Method for checking if edit modal should displayed as view-only\n    shouldDisplayViewOnly(record) {\n        if (!record) return false;\n\n        // has vastuuGroupId value then view only\n        if (record.vastuuGroupId) return true;\n        return !this.isPrivilegedUser && !record.isNew;\n    }\n\n    @action\n    change() {\n        this.args.bubbleChange(\n            this.args.model[this.fieldname],\n            this.args.field,\n            false,\n        );\n    }\n\n    @action\n    async remove(record, e) {\n        e?.stopPropagation(); // Prevent open modal action from firing\n\n        // Wait for user confirm before removing\n        if (!(await this.dialogs.confirm(this.intl.t('general.confirm.remove_attachment')))) return;\n\n        if (!record) return;\n\n        if (record.isNew) {\n            // Unsaved yet: fully remove from array and store\n            this.records.removeObject(record);\n            record.deleteRecord();\n            this.store.unloadRecord(record);\n        } else {\n            // Mark as deleted but keep in array so parent form save can process deletion\n            record.deleteRecord();\n        }\n        this.change();\n        this.markAsModified();\n    }\n\n    /* Attachment Modal Actions */\n\n    @action\n    openModal(type, record) {\n        // Reset the viewOnly flag\n        this.viewOnly = false;\n\n        if (this.shouldDisplayViewOnly(record)) {\n            this.viewOnly = true;\n        }\n\n        this.startEdit(type, record);\n        if (record && !record.isNew) {\n            this.isConfirmModalOpen = true;\n            return;\n        }\n        // New record: open directly\n        this.isModalOpen = true;\n    }\n\n    @action\n    closeModal(action) {\n        this.isModalOpen = false;\n        if (action === 'cancel') this.cancelEdit();\n        if (action === 'done') this.doneEdit();\n        this.reason = '';\n    }\n\n    @action\n    addFilePreviewToCache(file, preview) {\n        this.filePreviewCache[file] = preview;\n    }\n\n    /* Confirm Modal Actions */\n\n    @action\n    closeConfirmModal() {\n        this.isConfirmModalOpen = false;\n        this.cancelEdit();\n        this.reason = \"\";\n    }\n\n    @action\n    confirm(reason) {\n        this.reason = reason;\n        this.isConfirmModalOpen = false;\n\n        // Open modal with ORIGINAL record first (so child component sees record.id)\n        this.isModalOpen = true;\n\n        // Lazily create working copy after render so presigned URL fetch already fired with original id\n        if (this.editingOriginal && !this.workingCopy) {\n            next(() => {\n                // If modal still open\n                if (!this.isModalOpen) return;\n                this.workingCopy = this.makeWorkingCopy(this.editingOriginal);\n                if (this.editingType) this.workingCopy.type = this.editingType;\n            });\n        }\n    }\n\n\n    @action\n    handleVgDocuments(documents = []) {\n        if (!Array.isArray(documents) || documents.length === 0) return;\n\n        documents.forEach((doc) => {\n            const rec = this.createNewRecord(doc.type);\n            if (rec) {\n                rec.attachments = [];\n                (doc.attachments || []).forEach((attachment) => {\n                    rec.attachments.pushObject({\n                        name: attachment.s3_object,\n                        name_on_s3: attachment.s3_object,\n                    });\n                    if (attachment.preview) {\n                        this.addFilePreviewToCache(attachment.s3_object, attachment.preview);\n                    }\n                });\n                rec.country = doc.country;\n                rec.valid_until = doc.valid_until;\n                if (doc.id_type) rec.id_type = doc.id_type;\n                if (doc.document_number) rec.document_number = doc.document_number;\n                if (doc.id) rec.vastuuGroupId = doc.id;\n                if (!this.records.includes(rec)) this.records.pushObject(rec);\n            }\n        });\n        this.markAsModified();\n    }\n\n    /* ------------------------------ Lifecycle Cleanup ------------------------------ */\n\n    @action\n    discardUnsavedAttachments() {\n        // Drop modal working copy if it's a new unattached record\n        if (this.workingCopy && this.workingCopy.isNew && !this.records.includes(this.workingCopy)) {\n            try { this.workingCopy.deleteRecord(); } catch(_) { /* ignore */ }\n            try { this.store.unloadRecord(this.workingCopy); } catch(_) { /* ignore */ }\n            this.workingCopy = null;\n        }\n        // Remove any new records not yet persisted\n        (this.records || []).slice().forEach(r => {\n            if (r?.isNew) {\n                try { r.deleteRecord(); } catch(_) { /* ignore */ }\n            }\n        });\n    }\n\n\n    willDestroy() {\n        // Ensure unsaved attachments don't linger in store when navigating away\n        this.discardUnsavedAttachments();\n        // Also unload working copy clone of an existing record if still around (editing existing)\n        if (this.workingCopy && !this.workingCopy.isNew) {\n            try { this.workingCopy.unloadRecord?.(); } catch(_) { /* ignore */ }\n        }\n\n        // Rollback any dirty attributes on existing records that has changes\n        (this.records || []).slice().forEach(r => {\n            if (r?.hasDirtyAttributes && !r.isDeleted) {\n                try { r.rollbackAttributes(); } catch(_) { /* ignore */ }\n            }\n        });\n\n        super.willDestroy?.();\n    }\n}\n","import Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport podNames from 'ember-component-css/pod-names';\n\n\nexport default class ConfirmModalComponent extends Component {\n    @service moment;\n\n    @tracked reason = '';\n\n    constructor(owner, args) {\n        super(owner, args);\n        this.getReasonFromLs();\n    }\n\n    get styleNamespace() {\n        return podNames['collector/fields/work-permit-attachment/confirm-modal'];\n    }\n\n    get isConfirmDisabled() {\n        return this.reason.trim() === '';\n    }\n\n    get charCount() {\n        return this.reason.length;\n    }\n\n    get maxCharCount() {\n        return 255;\n    }\n\n    @action\n    updateReason(event) {\n        this.reason = event.target.value;\n    }\n\n    @action\n    confirm() {\n        this.saveReasonToLs();\n        this.args.onConfirm(this.reason);\n    }\n\n    getReasonFromLs() {\n        const OldReason = localStorage.getItem(`reason-${this.args.recordID}`);\n        if (OldReason) {\n            const reasonObj = JSON.parse(OldReason);\n            const date = this.moment.moment(reasonObj.date);\n\n            // Check if the date is within the last 24 hours\n            // If so, use the reason from localStorage\n            if (date.isSameOrAfter(this.moment.moment().subtract(1, 'days'))) {\n                this.reason = reasonObj.reason;\n            }\n        }\n    }\n\n    saveReasonToLs() {\n        const reasonObj = {\n            reason: this.reason,\n            date:  this.moment.moment().toISOString(),\n        };\n        localStorage.setItem(`reason-${this.args.recordID}`, JSON.stringify(reasonObj));\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"UtS2ZMGC\",\"block\":\"{\\\"symbols\\\":[\\\"@onClose\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"modal-overlay \\\",[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-content\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-modal-header\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"workpermit.confirm_modal.title\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-body\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"workpermit.confirm_modal.info_text\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"reason-field-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"reason\\\"],[8],[1,[28,\\\"t\\\",[\\\"workpermit.confirm_modal.reason_field.label\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"textarea\\\",false],[12,\\\"id\\\",\\\"reason\\\"],[12,\\\"maxlength\\\",[23,0,[\\\"maxCharCount\\\"]]],[12,\\\"rows\\\",\\\"5\\\"],[12,\\\"placeholder\\\",[28,\\\"t\\\",[\\\"workpermit.confirm_modal.reason_field.placeholder\\\"],null]],[12,\\\"data-anchor\\\",\\\"reason\\\"],[3,\\\"on\\\",[\\\"input\\\",[23,0,[\\\"updateReason\\\"]]]],[8],[1,[23,0,[\\\"reason\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"char-counter\\\"],[8],[1,[23,0,[\\\"charCount\\\"]],false],[0,\\\" / \\\"],[1,[23,0,[\\\"maxCharCount\\\"]],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-footer\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"cancel-button btn btn-secondary\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,1,[]]]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"confirm-button btn btn-primary\\\"],[12,\\\"disabled\\\",[23,0,[\\\"isConfirmDisabled\\\"]]],[12,\\\"data-anchor\\\",\\\"confirm-button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"confirm\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"workpermit.confirm_modal.confirm_button\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/work-permit-attachment/confirm-modal/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"vy1+Qf3n\",\"block\":\"{\\\"symbols\\\":[\\\"type\\\",\\\"record\\\",\\\"@model\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isLoadingRecords\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"permit-loader\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5,6\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"collector/fields/work-permit-attachment/vg-button\\\",[],[[\\\"@model\\\",\\\"@user\\\",\\\"@existingRecords\\\",\\\"@onSuccess\\\"],[[23,3,[]],[23,0,[\\\"user\\\"]],[23,0,[\\\"records\\\"]],[23,0,[\\\"handleVgDocuments\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"hasUnsavedChanges\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning unsaved-changes-notification\\\"],[10,\\\"data-anchor\\\",\\\"unsaved-changes-notification\\\"],[8],[0,\\\"\\\\n                 \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"vismaicon vismaicon-sm vismaicon-filled vismaicon-error\\\"],[10,\\\"data-anchor\\\",\\\"unsaved-changes-icon\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"unsaved-changes-notification-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"workpermit.attachments.unsaved_changes\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"attachments-section\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"permitTypes\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"attachment-type-container\\\"],[8],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"attachment-type-header \\\",[28,\\\"if\\\",[[28,\\\"in-array\\\",[[23,1,[]],[23,0,[\\\"requiredAttachments\\\"]]],null],\\\"required\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[[23,1,[]],[23,0,[\\\"requiredAttachments\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"vismaicon vismaicon-sm vismaicon-filled vismaicon-error\\\"],[11,\\\"data-anchor\\\",[29,[\\\"required-icon-\\\",[23,1,[]]]]],[8],[0,\\\"\\\\n                                \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@tooltipClass\\\",\\\"@spacing\\\",\\\"@side\\\",\\\"@event\\\",\\\"@popperContainer\\\",\\\"@text\\\"],[\\\"workpermit-tooltip\\\",20,\\\"left\\\",\\\"hover\\\",\\\"body\\\",[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"workpermit.attachment.mandatory_attachments.\\\",[23,1,[]]],null]],null]]]],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"attachment-type-label\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"workpermit.attachment.\\\",[23,1,[]],\\\".label\\\"],null]],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"records\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[23,1,[]],[28,\\\"get\\\",[[23,2,[]],\\\"type\\\"],null]],null],[28,\\\"not\\\",[[23,2,[\\\"isDeleted\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"collector/fields/work-permit-attachment/attachment-item\\\",[],[[\\\"@record\\\",\\\"@type\\\",\\\"@openModal\\\",\\\"@remove\\\",\\\"@canRemove\\\"],[[23,2,[]],[23,1,[]],[23,0,[\\\"openModal\\\"]],[28,\\\"await\\\",[[23,0,[\\\"remove\\\"]]],null],[28,\\\"or\\\",[[23,0,[\\\"isPrivilegedUser\\\"]],[23,2,[\\\"isNew\\\"]]],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[]],\\\"a1certificate\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"no-certificate-required\\\"],[8],[0,\\\"\\\\n                            \\\"],[5,\\\"input\\\",[],[[\\\"@checked\\\",\\\"@type\\\",\\\"@class\\\"],[[23,0,[\\\"noCertificateRequired\\\"]],\\\"checkbox\\\",\\\"form-check-input\\\"]]],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"form-check-label\\\"],[10,\\\"for\\\",\\\"no_certificate_required\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"workpermit.noCertificateRequired.label\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary attachment-add-button\\\"],[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[\\\"add-attachment-for-\\\",[23,1,[]]],null]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"openModal\\\"]],[23,1,[]],null],null]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"attach-icon vismaicon vismaicon-sm vismaicon-attach\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"workpermit.add.file.button\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isModalOpen\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"collector/fields/work-permit-attachment/attachment-modal\\\",[],[[\\\"@record\\\",\\\"@onClose\\\",\\\"@change\\\",\\\"@addFilePreviewToCache\\\",\\\"@filePreviewCache\\\",\\\"@userId\\\",\\\"@reason\\\",\\\"@viewOnly\\\"],[[28,\\\"or\\\",[[23,0,[\\\"workingCopy\\\"]],[23,0,[\\\"editingOriginal\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"closeModal\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"change\\\"]],[24,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"addFilePreviewToCache\\\"]]],null],[23,0,[\\\"filePreviewCache\\\"]],[23,0,[\\\"user\\\",\\\"id\\\"]],[23,0,[\\\"reason\\\"]],[23,0,[\\\"viewOnly\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isConfirmModalOpen\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"collector/fields/work-permit-attachment/confirm-modal\\\",[],[[\\\"@onClose\\\",\\\"@onConfirm\\\",\\\"@recordID\\\"],[[28,\\\"fn\\\",[[23,0,[\\\"closeConfirmModal\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"confirm\\\"]]],null],[23,0,[\\\"editingOriginal\\\",\\\"id\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/work-permit-attachment/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action, get } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class VgButtonComponent extends Component {\n    @service store;\n    @service ttapi;\n    @service notifications;\n    @service intl;\n\n    @tracked isLoading = false;\n    @tracked employer = null;\n\n    constructor() {\n        super(...arguments);\n        this.loadEmployer();\n    }\n\n    get user() {\n        return this.args.user;\n    }\n\n    get employerId() {\n        const employer = this.args.model?.employer || this.args.model?.ori_employer;\n        if (!employer) return null;\n        // Use Ember's get to support proxies\n        try {\n            return get(employer, 'id');\n        } catch (e) {\n            return null;\n        }\n    }\n\n    async loadEmployer() {\n        //if (this.user?.userlevel == 1) return;\n        const id = this.employerId;\n        if (!id) return;\n        const employerData = await this.store.query('employer', { id });\n        this.employer = employerData.firstObject;\n    }\n\n    get disabledReasonKeys() {\n        const user = this.user;\n        const employer = this.employer;\n\n        const missing = [];\n        if (!user?.nationality) missing.push('workpermit.vg.button.disabled.reason.nationality');\n        if (!user?.taxnumber) missing.push('workpermit.vg.button.disabled.reason.taxnumber');\n        if (!user?.employer) missing.push('workpermit.vg.button.disabled.reason.employer');\n\n        if (!employer?.emp_id) missing.push('workpermit.vg.button.disabled.reason.employer.empid');\n        if (employer?.emp_id_type != 0 && !employer?.emp_homecountry) missing.push('workpermit.vg.button.disabled.reason.employer.country');\n\n        return missing;\n    }\n\n    get isDisabled() {\n        return this.disabledReasonKeys.length > 0;\n    }\n\n    @action\n    async fetch() {\n        this.isLoading = true;\n        try {\n            // Collect existing attachments with vastuuGroupId\n            const existingAttachments = this.args.existingRecords\n                ?.filter(record => record.vastuuGroupId && !record.isDeleted)\n                ?.map(record => ({\n                    vastuuGroupId: record.vastuuGroupId,\n                    type: record.type\n                })) || [];\n\n            const params = {\n                org_id: this.employer?.emp_id,\n                org_id_country: this.employer?.homecountry || 'FI',\n                person_id: this.user?.taxnumber,\n                person_id_type: 'tax_number',\n                //person_id_country: user?.nationality,\n                person_id_country: 'FI',\n                existing_attachments: existingAttachments\n            };\n\n            const response = await this.ttapi.request('api/getDocumentsFromVastuuGroup', { data: params });\n\n            if (response?.success && response.documents?.length > 0) {\n                // New documents fetched successfully\n                const successMessage = `${response.documents.length} ${this.intl.t('workpermit.vgbutton.fetchdocuments.success')}`;\n                this.notifications.success(successMessage, { autoClear: true });\n                if (this.args.onSuccess) this.args.onSuccess(response.documents);\n            } else if (response?.success && response?.message) {\n                // Check which message we got from backend\n                const isNoDocuments = response.message.includes('No documents found');\n\n                if (isNoDocuments) {\n                    // No documents at all in VastuuGroup but successful response from their API\n                    const noDocumentsMessage = this.intl.t('workpermit.vgbutton.fetchdocuments.no_documents_found');\n                    this.notifications.warning(noDocumentsMessage, { autoClear: true });\n                } else {\n                    // All documents already exist\n                    const noNewDocumentsMessage = this.intl.t('workpermit.vgbutton.fetchdocuments.no_new_documents');\n                    this.notifications.info(noNewDocumentsMessage, { autoClear: true });\n                }\n            } else {\n                // API Error response\n                const errorMessage = this.intl.t('workpermit.vgbutton.fetchdocuments.error');\n                this.notifications.error(errorMessage, { autoClear: true });\n            }\n        } catch (e) {\n            if (e?.payload?.error?.includes('No active license')) {\n                const errorMessage = this.intl.t('workpermit.vgbutton.fetchdocuments.error.no_license');\n                this.notifications.error(errorMessage, { autoClear: true });\n            } else {\n                const errorMessage = this.intl.t('workpermit.vgbutton.fetchdocuments.error');\n                this.notifications.error(errorMessage, { autoClear: true });\n            }\n        } finally {\n            this.isLoading = false;\n        }\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"iwVbtpvl\",\"block\":\"{\\\"symbols\\\":[\\\"reason\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"vg-button-wrapper\\\"],[8],[0,\\\"\\\\n  \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"disabled\\\",[28,\\\"or\\\",[[23,0,[\\\"isDisabled\\\"]],[23,0,[\\\"isLoading\\\"]]],null]],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"fetch\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"workpermit.vg.button\\\"],null],false],[0,\\\"\\\\n  \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"permit-loader permit-loader-inline\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"gt\\\",[[23,0,[\\\"disabledReasonKeys\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info vg-disabled-reason\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-info-sign\\\"],[10,\\\"data-anchor\\\",\\\"vg-disabled-icon\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"workpermit.vg.button.disabled.info\\\"],null],false],[0,\\\"\\\\n      \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n      \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"disabledReasonKeys\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"vg-disabled-reason-item\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"vg-disabled-reason-text\\\"],[8],[1,[28,\\\"t\\\",[[23,1,[]]],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"      \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/fields/work-permit-attachment/vg-button/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/filters-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormFiltersComponent;\n\nimport Ember from 'ember';\n\nFormFiltersComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    sessionGlobals: Em.inject.service(),\n    // Name of the form to be used to get different filter options\n    form: null,\n    // all the fields wanted to be shown. format string ie. \"date,user\"\n    filters: null,\n    // parameter for values to be used outside of the component\n    // all values of the filter will be in ember object ie. {date: date, user: user}\n    values: null,\n    refreshValues: Ember.observer('_filters.@each.value', function () {\n        var filters, sessionFilters, values;\n        filters = this.get('_filters');\n        values = [];\n        sessionFilters = {};\n        filters.forEach((item) => {\n            // support for filters from different forms\n            if (item.get('form') && this.get('form') !== item.get('form')) {\n                values.push({\n                    name: item.get('form') + '.' + item.get('name'),\n                    value: item.get('value'),\n                });\n                return (sessionFilters[item.get('name')] = item.get('value'));\n            } else {\n                values.push({\n                    name: item.get('name'),\n                    value: item.get('value'),\n                });\n                return (sessionFilters[item.get('name')] = item.get('value'));\n            }\n        });\n        if (this.get('form')) {\n            this.get('sessionGlobals').set('filters_' + this.get('form'), sessionFilters);\n        }\n        // always save also as global filters so can be used on own reports\n        this.get('sessionGlobals').set('filters', sessionFilters);\n        return this.set('values', Em.A(values));\n    }),\n    _filters: Ember.computed('filters', function () {\n        var filters, types;\n        types = this.get('filters').split(',');\n        filters = Em.A([]);\n        $.each(types, (key, item) => {\n            var filter_field, itemArr;\n            if (item.indexOf('.') > -1) {\n                itemArr = item.split('.');\n                filter_field = this.getFilterObject(itemArr[1], itemArr[0]);\n            } else {\n                filter_field = this.getFilterObject(item);\n            }\n            if (filter_field) {\n                return filters.pushObject(filter_field);\n            }\n        });\n        return filters;\n    }),\n    getFilterObject: function (item, form = null) {\n        var c, defaultFilters, field, fieldType, intl, object, rangesPromise, store, translatedName;\n        form = form || this.get('form');\n        c = this.get('Collector');\n        store = this.get('store');\n        intl = this.get('intl');\n        field = c.fields(form)[item];\n        if (item === 'q') {\n            field = {\n                ext: 'q',\n                type: 'search',\n            };\n        }\n        if (item === 'groupBy') {\n            field = {\n                ext: 'groupBy',\n                type: 'groupByFilter',\n            };\n        }\n        if (field == null) {\n            return;\n        }\n        //skip filter if hide_filter feature found\n        if (field.features && field.features.hide_filter) {\n            return;\n        }\n        fieldType = field.type;\n        object = Ember.Object.create({\n            type: fieldType,\n            name: item,\n            value: null,\n        });\n        if (field.options) {\n            object.set('options', field.options);\n        }\n        switch (fieldType) {\n            case 'date':\n                object.title = field.name;\n                if (field.features.use_index) {\n                    object.start = moment().startOf('week').format('YYYY-MM-DD');\n                    object.end = moment().endOf('week').format('YYYY-MM-DD');\n                    object.value = object.start + '_' + object.end;\n                }\n                if (this.get('form') === 'worktime') {\n                    rangesPromise = $.Deferred();\n                    if (c.formExists('wage_period')) {\n                        this.get('store')\n                            .query('wage-period', {\n                                limit: 20,\n                                order: 'period_end_date-,period_start_date-',\n                            })\n                            .then(function (periods) {\n                                var ranges;\n                                ranges = {};\n                                periods.forEach(function (period) {\n                                    var name;\n                                    if (period.get('period_name')) {\n                                        name = period.get('period_name');\n                                    } else {\n                                        name =\n                                            moment(period.get('period_start_date')).format('L') +\n                                            ' - ' +\n                                            moment(period.get('period_end_date')).format('L');\n                                    }\n                                    return (ranges[name] = [\n                                        moment(period.get('period_start_date')),\n                                        moment(period.get('period_end_date')),\n                                    ]);\n                                });\n                                return rangesPromise.resolve(ranges);\n                            });\n                    } else {\n                        rangesPromise.resolve({});\n                    }\n                    object.ranges = rangesPromise;\n                }\n                translatedName = c.getTranslationForColumn(form, item);\n                object.prompt = intl.t('filter.select_date', {\n                    field:\n                        translatedName.string != null\n                            ? translatedName.string.toLowerCase()\n                            : translatedName.toLowerCase(),\n                });\n                break;\n            case 'database':\n            case 'multiselect':\n                object.name = item;\n                object.form = form;\n                break;\n            //                object.prompt = 'workday.select_' + item\n            case 'status':\n                object.field = item;\n                break;\n            case 'dropdown_values':\n                object.name = item;\n                object.form = form;\n        }\n        //                object.prompt = @get('intl').t('workday.select_' + item)+\"...\"\n        object.features = field.features;\n        if (this.get('form')) {\n            defaultFilters = this.get('sessionGlobals').get('filters_' + this.get('form'));\n        } else {\n            defaultFilters = this.get('sessionGlobals').get('filters');\n        }\n        if (defaultFilters && defaultFilters[item] != null) {\n            object.value = defaultFilters[item];\n        }\n        if (this.get('prompt')) {\n            object.prompt = this.get('prompt');\n        }\n        return object;\n    },\n    setDropdownFilterings: function (changeInField, value) {\n        var filtering, i, len, options, ref, results, setFilter;\n        ref = this.get('Collector').getDropdownDepency(changeInField);\n        results = [];\n        for (i = 0, len = ref.length; i < len; i++) {\n            filtering = ref[i];\n            setFilter = this.get('_filters').findBy('name', filtering.field);\n            if (!setFilter) {\n                continue;\n            }\n            options = {};\n            options[filtering.filter] = value ? value.get('id') : null;\n            results.push(setFilter.set('filterOptions', options));\n        }\n        return results;\n    },\n    actions: {\n        clearFilters: function () {\n            var filters, i, item, len, results;\n            filters = this.get('_filters');\n            results = [];\n            for (i = 0, len = filters.length; i < len; i++) {\n                item = filters[i];\n                if (item.type !== 'date') {\n                    results.push(Ember.set(item, 'value', ''));\n                } else {\n                    results.push(void 0);\n                }\n            }\n            return results;\n        },\n        valueChanged: function (value, fieldName) {\n            var filters, id;\n            this.setDropdownFilterings(fieldName, value);\n            filters = this.get('_filters');\n            if (value) {\n                if (typeof value.get === 'function') {\n                    if (Array.isArray(value)) {\n                        id = value.join();\n                    } else {\n                        id = value.get('id');\n                    }\n                } else {\n                    id = value;\n                }\n            } else {\n                id = null;\n            }\n            filters.findBy('name', fieldName).set('value', id);\n            return this.sendAction('change', value, fieldName);\n        },\n    },\n});\n\n//@set 'filter.value \"change\",a,b\nexport default FormFiltersComponent;\n","export default Ember.HTMLBars.template({\"id\":\"BiBlgwzb\",\"block\":\"{\\\"symbols\\\":[\\\"filter\\\",\\\"&default\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"_filters\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6 col-lg-4 filter-comp-component\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"date\\\",[23,1,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"date-range-picker\\\",null,[[\\\"clearBtn\\\",\\\"start\\\",\\\"end\\\",\\\"value\\\",\\\"title\\\",\\\"wagePeriods\\\"],[[28,\\\"not-eq\\\",[[23,1,[\\\"features\\\",\\\"use_index\\\"]],\\\"index1\\\"],null],[23,1,[\\\"start\\\"]],[23,1,[\\\"end\\\"]],[23,1,[\\\"value\\\"]],[23,1,[\\\"title\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"groupByFilter\\\",[23,1,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"group-by-filter\\\",null,[[\\\"value\\\",\\\"form\\\",\\\"change\\\"],[[23,1,[\\\"value\\\"]],[24,[\\\"form\\\"]],\\\"valueChanged\\\"]]],false],[0,\\\"  \\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,1,[]]],[[\\\"change\\\",\\\"useAsFilter\\\"],[\\\"valueChanged\\\",true]]],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6 col-lg-4\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clearFilters\\\"]],[8],[1,[28,\\\"t\\\",[\\\"filters.clear\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[14,2],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/filters-comp/template.hbs\"}});","import Component from '@ember/component';\nimport { computed } from '@ember/object';\n\nexport default Component.extend({\n    // computed is needed because button disabled needs to be null when off.. disabled=false still renders the disabled\n    isDisabled: computed('disabled', function () {\n        if (this.disabled) return true;\n        else return null;\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"hoU61BHN\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\",\\\"@disabled\\\",\\\"@name\\\",\\\"@form\\\"],[[22,\\\"saving\\\"],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"save\\\"]]],null],\\\"btn btn-m-link btn-block btn-lg save\\\",[22,\\\"isDisabled\\\"],\\\"save-button\\\",[22,\\\"form\\\"]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[12,\\\"name\\\",\\\"cancel-button\\\"],[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-cancel-button\\\"],null]],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"cancel\\\"]]]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/buttons/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isArray } from '@ember/array';\nimport validator from 'tt4/classes/validations';\n\nimport saveTheChildren from 'tt4/mixins/save-the-children';\n\n/**\n *\n * report for collector form\n *\n * usage:\n *  BASIC:\n *      {{collector/form-add form=form}}\n *\n *  ADVANCED:\n *      {{#collector/form-add form=form record=record close=(action (mut show) false) as |form|}}\n            {{#form.fields as |fields fieldcomp|}}\n                {{#each fields as |field|}}\n                    {{fieldcomp field=field}}\n                {{/each}}\n            {{/form.fields}}\n            {{form.buttons}}\n\n            {{form.saved}}\n        {{/collector/form-add}}\n *\n * parameters:\n *      form: collector form name\n *      record: record for the add form\n *      defaults: if record is not given directly (or record is new) you can also give object which is passed to createRecord method\n *      showSaved: if saved page should be shown\n *      only: list columns you want to show (ie \"date,user\")\n *      filters: object containing filters for fields. ie filters=(hash user=(userlevel=\"5\"))\n *\n * actions:\n *      rowAdded: called when new row is created and saved\n *      rowEdited: called when existing row is edited and saved\n *      close: called when cancel is clicked or saved page ok is clicked\n *      fieldChanged: when any field is edited on form action is triggered. Has parameters value and field\n */\n\nexport default Component.extend(saveTheChildren, {\n    collector: service('collector-service'),\n    store: service(),\n    evented: service(),\n    localstorage: service(),\n    surveys: service(),\n\n    showSaved: true,\n\n    // this is the model of the record adding/editing component\n    record: null,\n\n    fields: computed('form', 'only', function () {\n        const fields = get(this, 'collector').fieldArray(get(this, 'form'));\n\n        let filteredFields = fields.filter((field) => {\n            if (get(this, 'only') && !get(this, 'only').split(',').includes(field.name))\n                return false;\n            if (get(field, 'features.hide') && isArray(get(field, 'features.hide'))) {\n                // Always \"show\" fields that are conditionally hidden, this conditionality is handled elsewhere\n                return true;\n            }\n            if (get(field, 'features.hide')) return false;\n\n            return true;\n        });\n\n        filteredFields = filteredFields.map((field) => {\n            if (field.name === 'location' || field.name === 'end_location')\n                field.type = 'gpslocation';\n            if (field.name === 'location_map') field.type = 'gpslocationmap';\n            return field;\n        });\n\n        if (this.sortFields) {\n            return filteredFields.sort((a, b) => {\n                if (get(this, 'only')) {\n                    const onlyArr = get(this, 'only');\n                    return onlyArr.indexOf(a.name) - onlyArr.indexOf(b.name);\n                }\n            });\n        } else {\n            return filteredFields;\n        }\n    }),\n\n    conditionalHides: computed('form', function () {\n        return get(this, 'fields').filter((field) => {\n            return get(field, 'features.hide') && isArray(get(field, 'features.hide'));\n        });\n    }),\n\n    init() {\n        this._super();\n\n        if (\n            !get(this, 'preserveRecordOnDestroy') &&\n            get(this, 'record.isNew') &&\n            get(this, 'defaults')\n        ) {\n            this.setRecordDefaults();\n        }\n\n        set(this, 'filters', {});\n    },\n\n    async didReceiveAttrs() {\n        if (!get(this, 'form')) throw new Error('form-add needs form parameter');\n        if (!get(this, 'record')) {\n            set(\n                this,\n                'record',\n                get(this, 'store').createRecord(get(this, 'form'), await get(this, 'defaults')),\n            );\n        }\n\n        await this.setLsDefaults();\n        await this.setFilters();\n        this.setConditionalHides();\n    },\n\n    willDestroyElement() {\n        // if record is new (and preserveRecordOnDestroy is not set) we just destoy it\n        // if we were editing record we rollback it to make sure record is not left in unsaved state when we destroy this component (preserveRecordOnDestroy skips this also)\n        if (!get(this, 'preserveRecordOnDestroy') && get(this, 'record.isNew'))\n            get(this, 'record').deleteRecord();\n        else if (\n            !get(this, 'preserveRecordOnDestroy') &&\n            !get(this, 'record.isNew') &&\n            get(this, 'record.hasDirtyAttributes')\n        )\n            get(this, 'record').rollbackAttributes();\n        this._super(...arguments);\n    },\n\n    actions: {\n        async addNew() {\n            if (this.addNew) this.addNew();\n            else\n                set(\n                    this,\n                    'record',\n                    get(this, 'store').createRecord(get(this, 'form'), await get(this, 'defaults')),\n                );\n            set(this, 'savedView', false);\n        },\n\n        addSame() {\n            if (this.addSame) this.addSame();\n            else set(this, 'record', this.collector.copyRecord(this.record));\n            set(this, 'savedView', false);\n        },\n\n        fieldChanged(value, field) {\n            this.setFilters(field);\n            this.setConditionalHides(field);\n\n            set(this, 'record.' + field, value);\n\n            // this is a dirty, filthy hack (copied from addon form-add) for marking a record dirty when its relationships (belongsTo, hasMany) are changed\n            // this is done here as a workaround so you don't need to do this in the parent component every time\n            // https://github.com/emberjs/rfcs/pull/21\n            this.record.send('becomeDirty');\n            if (this.fieldChanged) this.fieldChanged(value, field);\n        },\n\n        async save() {\n            set(this, 'saving', true);\n            set(this, 'error', null);\n            set(this, 'stateBeforeSave', get(this, 'record.currentState.stateName'));\n            let isRecordNew = get(this, 'record.isNew');\n\n            try {\n                //saveTheChildren\n                await get(this, 'record').validate();\n\n                if (!get(this, 'record.isValid')) {\n                    set(this, 'saving', false);\n                    const firstErrorElement = this.element.querySelector('.has-error');\n                    if (firstErrorElement) firstErrorElement.scrollIntoView({ behavior: 'smooth' });\n                    return;\n                }\n\n                await this.save_record(get(this, 'record'));\n\n                this.evented.storeEvent('insert', get(this, 'form'), get(this, 'record'));\n\n                if (!this.isDestroyed) set(this, 'saving', false);\n\n                if (!get(this, 'showSaved')) {\n                    if (get(this, 'close')) get(this, 'close')();\n                } else set(this, 'savedView', true);\n\n                if (get(this, 'stateBeforeSave') === 'root.loaded.created.uncommitted') {\n                    if (get(this, 'rowAdded')) get(this, 'rowAdded')(get(this, 'record'));\n                } else {\n                    if (get(this, 'rowEdited')) get(this, 'rowEdited')(get(this, 'record'));\n                }\n                if (get(this, 'form') == 'worktime' && isRecordNew) {\n                    this.surveys.initializeAndRun('worktime_entry'); // show wootric CES-survey after saving worktime\n                }\n            } catch (reason) {\n                set(this, 'error', reason);\n                set(this, 'saving', false);\n                throw reason;\n            }\n        },\n\n        cancel() {\n            get(this, 'close')();\n        },\n\n        close() {\n            get(this, 'close')();\n        },\n    },\n\n    async setRecordDefaults() {\n        const defaults = await get(this, 'defaults');\n        const record = get(this, 'record');\n        // only apply defaults if record value is not set already\n        for (const def in defaults) {\n            if (!get(record, def)) set(record, def, defaults[def]);\n        }\n    },\n\n    async setLsDefaults() {\n        const fields = this.fields;\n        for (var field of fields) {\n            // make sure we don't overwrite any values\n            if (field.type == 'database' && !get(this, 'record.' + field.name)) {\n                let lastused = get(this, 'localstorage').getItem('lastused.' + field.options.form);\n                if (lastused) {\n                    let defValue = lastused[0];\n                    if (\n                        defValue &&\n                        get(this, 'record.isNew') &&\n                        !get(this, 'hide') &&\n                        !field.features.do_not_preselect\n                    ) {\n                        var promisevalue = await this.store.query(\n                            field.options.form,\n                            { id: defValue, form: field.form, field: field.name },\n                            { reload: true },\n                        );\n                        promisevalue = promisevalue?.firstObject;\n                        if (promisevalue && get(promisevalue, 'row_info.status') != 'removed') {\n                            set(field, 'value', promisevalue);\n                            set(this, 'record.' + field.name, await promisevalue);\n                        }\n                    }\n                }\n            }\n        }\n    },\n    setFilters(depends) {\n        const filterBy = this.getFilters(this.form);\n        const filters = {};\n        filterBy.forEach((item) => {\n            if (depends && item.with !== depends) return;\n            if (!filters[item.field]) filters[item.field] = {};\n            filters[item.field][item.filter] = get(this, 'record.' + item.with);\n        });\n\n        Object.keys(filters).forEach((key) => {\n            set(this, 'filters.' + key, filters[key]);\n        });\n    },\n\n    /**\n     * Hide or show fields if field.features.hide setting is conditional\n     * If called without field parameter then goes through all fields that have some kind of conditional setting\n     * else only for the given field name\n     * Sets true/false to fields \"private\" _hide variable that is used atleast in form-add/field component\n     * Examples:\n     * Name: hide, Value: [{\"alasveto\": \"eka\"}]\n     * Name: hide, Value: [{\"alasveto\": \"!(empty)\"}]\n     * Name: hide, Value: [{\"alasveto\": \"(empty)\"}]\n     * @param {string} field the external type of the field also known as \"name\"\n     */\n    setConditionalHides(field = false) {\n        get(this, 'conditionalHides').forEach((item) => {\n            get(item, 'features.hide').forEach((rule) => {\n                let ruleField = Object.keys(rule)[0].split('.')[0];\n                if ((field && ruleField.includes(field)) || !field) {\n                    set(\n                        item,\n                        '_hide',\n                        !validator._is_visible(get(this, 'record'), get(item, 'features.hide')),\n                    );\n                }\n            });\n        });\n    },\n\n    /**\n     * Example of one filter {field: \"task\", filter: \"project\", with: \"project\"}\n     * @param {*} form\n     */\n    getFilters(form) {\n        const filters = [];\n        const fields = this.collector.fieldArray(form);\n        for (const field of fields) {\n            let reload = field.features.reload;\n            if (reload) {\n                if (!isArray(reload)) reload = [reload];\n\n                for (const reloadfield of reload) {\n                    filters.push({\n                        field: reloadfield, // field name that needs to be reloaded\n                        filter: field.options.form, // filter name that is used to fetch objects. Normally the form where reloader field points to. ie tasks?project=1234 => project\n                        with: field.name, // name of the field to use as filter .. this needs to found from model\n                    });\n                }\n            }\n        }\n\n        return filters;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"VWQFWtrg\",\"block\":\"{\\\"symbols\\\":[\\\"@error\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n    \\\"],[5,\\\"error-message\\\",[],[[\\\"@error\\\"],[[23,1,[]]]]],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/error/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    collector: service('collector-service'),\n\n    classNameBindings: ['fieldNameClass'],\n\n    fieldNameClass: computed('field', function () {\n        return 'field-' + get(this, 'field.name');\n    }),\n\n    fieldForFieldContainer: computed('field', function () {\n        const field = get(this, 'field');\n        let value = get(this, 'record.' + get(field, 'name'));\n        if (value && typeof value === 'object' && get(value, 'id')) {\n            this.setFieldValue(get(value, 'id'));\n        } else {\n            this.setFieldValue(value);\n        }\n        return field;\n    }),\n\n    visible: computed('only', 'field._hide', function () {\n        if (get(this, 'field._hide')) return false;\n        if (!get(this, 'only')) return true;\n        return get(this, 'only').split(',').includes(get(this, 'field.name'));\n    }),\n\n    setFieldValue(value) {\n        set(this, 'field.value', value);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"HCOm4hIu\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"visible\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"component\\\",[\\\"collector/field-container\\\"],[[\\\"model\\\",\\\"usePowerDropdown\\\",\\\"filter\\\",\\\"field\\\",\\\"change\\\"],[[24,[\\\"record\\\"]],true,[28,\\\"get\\\",[[24,[\\\"filters\\\"]],[24,[\\\"field\\\",\\\"name\\\"]]],null],[24,[\\\"fieldForFieldContainer\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"fieldChanged\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/field/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n});\n","export default Ember.HTMLBars.template({\"id\":\"Qok4gv78\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"&default\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[14,2,[[24,[\\\"fields\\\"]],[28,\\\"component\\\",[\\\"collector/form-add/field\\\"],[[\\\"record\\\",\\\"filters\\\",\\\"fieldChanged\\\"],[[24,[\\\"record\\\"]],[24,[\\\"filters\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"fieldChanged\\\"]]],null]]]],[24,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"fieldChanged\\\"]]],null]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[\\\"collector/form-add/field\\\"],[[\\\"record\\\",\\\"field\\\",\\\"filters\\\",\\\"only\\\",\\\"fieldChanged\\\"],[[24,[\\\"record\\\"]],[23,1,[]],[24,[\\\"filters\\\"]],[24,[\\\"only\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"fieldChanged\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/fields/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { debounce, next } from '@ember/runloop';\n\nexport default Component.extend({\n    store: service(),\n    collector: service('collector-service'),\n    ttapi: service(),\n    flags: service(),\n    session: service(),\n\n    form: 'abcense',\n\n    fields: computed('formtype', function () {\n        const fields = this.collector.fieldArray(this.form).mapBy('name');\n        if (this.formtype === 'multi')\n            return fields\n                .filter((field) => !['starttime', 'endtime', 'absence_hours'].includes(field))\n                .join(',');\n        else\n            return fields\n                .filter((field) => !['dayamount', 'status', 'enddate'].includes(field))\n                .join(',');\n    }),\n\n    absencetypes: computed('formtype', function () {\n        if (this.formtype === 'multi') return 'both||days||(empty)';\n        else return 'both||hours||(empty)';\n    }),\n\n    didReceiveAttrs() {\n        if (!this.record) this.record = this.store.createRecord('abcense', this.defaults);\n        // set user always my self when adding new\n        if (this.record && this.record.isNew) {\n            if (!this.record.user) {\n                next(this, function () {\n                    if (this.record && !get(this.record, 'user')) {\n                        set(this.record, 'user', this.store.peekRecord('user', this.session.currentUser.id));\n                    }\n                });\n            }\n            set(this, 'formtype', 'multi'); // also when adding, always show multi-day absenceform first\n        } else {\n            if (get(this, 'record.dayamount')) set(this, 'formtype', 'multi');\n            else set(this, 'formtype', 'single');\n        }\n    },\n\n    actions: {\n        /**\n         * when formtype is changed we need to replace some values so they wouldn't save to db\n         */\n        changeType(type) {\n            set(this, 'formtype', type);\n            if (type === 'multi') {\n                set(this, 'record.starttime', null);\n                set(this, 'record.endtime', null);\n                // instead of setting dayamount to 1 we use fieldChanged to set enddate to startdate so it will fetch the days from ttapi\n                if (get(this, 'record.startdate')) {\n                    this.send('fieldChanged', 'enddate', get(this, 'record.startdate'));\n                }\n            } else {\n                set(this, 'record.enddate', get(this, 'record.startdate'));\n                set(this, 'record.dayamount', null);\n            }\n        },\n\n        fieldChanged(value, field) {\n            if (this.flags.test('ember-movenium-form-add-absence')) {\n                // addon form-add returns (field, value) so we have to swap them around\n                [value, field] = [field, value];\n                set(this.record, field, value);\n            }\n\n            // when single adding is on startdate and enddate must be the same all the time\n            if (field === 'startdate' && this.formtype === 'single')\n                set(this, 'record.enddate', value);\n\n            if (field === 'startdate') {\n                let endDate = get(this, 'record.enddate');\n\n                if (!endDate || new Date(value) > new Date(endDate)) {\n                    set(this, 'record.enddate', value);\n                }\n            }\n\n            if (\n                (field === 'startdate' || field === 'enddate' || field === 'abcensetype') &&\n                this.formtype === 'multi'\n            ) {\n                if (get(this, 'record.startdate') && get(this, 'record.enddate')) {\n                    set(this, 'disableForm', true);\n                    debounce(this, this.fetchAbsenceDays, 1000);\n                }\n            }\n        },\n    },\n\n    /**\n     * fetch absence days from ttapi and set value to record.dayamount\n     */\n    async fetchAbsenceDays() {\n        const country =\n            '&country=' + get(get(this, 'store').peekAll('company-info'), 'firstObject.country');\n\n        let url =\n            'absence/getDays?date=' +\n            get(this, 'record.startdate') +\n            '_' +\n            get(this, 'record.enddate') +\n            country;\n        url +=\n            '&userid=' +\n            (get(this, 'record.user')\n                ? get(this, 'record.user.id')\n                : get(this, 'session.currentUser.id'));\n        url += get(this, 'record.abcensetype.id')\n            ? '&absencetype=' + get(this, 'record.abcensetype.id')\n            : '';\n        const back = await this.ttapi.request(url);\n        set(this, 'record.dayamount', back.days);\n        set(this, 'disableForm', false);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"+cEJ7fr+\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@showSaved\\\",\\\"@rowAdded\\\",\\\"@rowEdited\\\",\\\"@close\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"formtype\\\"]],\\\"multi\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"changeType\\\",\\\"multi\\\"]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"menu.add_abcense_multiple\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"formtype\\\"]],\\\"single\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"changeType\\\",\\\"single\\\"]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"menu.add_abcense_single\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-absence\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@rowAdded\\\",\\\"@rowEdited\\\",\\\"@close\\\",\\\"@showSaved\\\",\\\"@disabled\\\",\\\"@filters\\\",\\\"@onFieldChange\\\",\\\"@only\\\"],[[23,0,[\\\"form\\\"]],[23,0,[\\\"record\\\"]],[23,6,[]],[23,7,[]],[23,8,[]],[23,5,[]],[23,0,[\\\"disableForm\\\"]],[28,\\\"hash\\\",null,[[\\\"abcensetype\\\"],[[28,\\\"hash\\\",null,[[\\\"type\\\"],[[23,0,[\\\"absencetypes\\\"]]]]]]]],[28,\\\"action\\\",[[23,0,[]],\\\"fieldChanged\\\"],null],[23,0,[\\\"fields\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\",\\\"@forceType\\\",\\\"@showSaved\\\",\\\"@placeholder\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]],[23,4,[\\\"forceType\\\"]],[23,5,[]],[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"name\\\"]],\\\"description\\\"],null],[28,\\\"t\\\",[\\\"gdpr.no_sensitive_data_message\\\"],null]],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"rowAdded\\\",\\\"rowEdited\\\",\\\"close\\\",\\\"showSaved\\\",\\\"defaults\\\",\\\"disabled\\\",\\\"filters\\\",\\\"fieldChanged\\\",\\\"only\\\"],[[24,[\\\"form\\\"]],[24,[\\\"record\\\"]],[24,[\\\"rowAdded\\\"]],[24,[\\\"rowEdited\\\"]],[24,[\\\"close\\\"]],[24,[\\\"showSaved\\\"]],[24,[\\\"defaults\\\"]],[24,[\\\"disableForm\\\"]],[28,\\\"hash\\\",null,[[\\\"abcensetype\\\"],[[28,\\\"hash\\\",null,[[\\\"type\\\"],[[23,0,[\\\"absencetypes\\\"]]]]]]]],[28,\\\"action\\\",[[23,0,[]],\\\"fieldChanged\\\"],null],[23,0,[\\\"fields\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/absence/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    router: service(),\n    tagName: '',\n\n    selectedComponent: computed('form', function () {\n        const customForms = {\n            worktime: 'collector/form-add/forms/worktime',\n            project: 'collector/form-add/forms/project',\n            employer: 'collector/form-add/forms/employer',\n            abcense: 'collector/form-add/forms/absence',\n            wage_period: 'collector/form-add/forms/wageperiod',\n            diary: 'collector/form-add/forms/diary',\n            worktask: 'collector/form-add/forms/worktask',\n            worksitediary: 'collector/form-add/forms/worksitediary',\n            presence: 'collector/form-add/forms/presence',\n            site_safety_observation: 'collector/form-add/forms/siteSafetyObservation',\n            tooltype: 'collector/form-add/forms/tooltype',\n        };\n\n        if (Object.keys(customForms).includes(get(this, 'form')))\n            return customForms[get(this, 'form')];\n        else return 'collector/form-add';\n    }),\n\n    preserveRecord: computed('form', function () {\n        return this.router.currentRouteName === 'dashboard' && this.form === 'worktime';\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"E9xOzAGk\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"component\\\",[[24,[\\\"selectedComponent\\\"]]],[[\\\"form\\\",\\\"record\\\",\\\"rowAdded\\\",\\\"rowEdited\\\",\\\"close\\\",\\\"showSaved\\\",\\\"defaults\\\",\\\"preserveRecordOnDestroy\\\"],[[24,[\\\"form\\\"]],[24,[\\\"record\\\"]],[24,[\\\"rowAdded\\\"]],[24,[\\\"rowEdited\\\"]],[24,[\\\"close\\\"]],[24,[\\\"showSaved\\\"]],[24,[\\\"defaults\\\"]],[24,[\\\"preserveRecord\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/auto/template.hbs\"}});","import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { A } from '@ember/array';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n\n    columns: computed(async function () {\n        let retBanks = A();\n\n        const banks = await this.store.findAll('bank');\n        banks.forEach((bank) => {\n            const { id, name } = bank;\n            retBanks.pushObject({ id, name });\n        });\n\n        return retBanks;\n    }),\n\n    didReceiveAttrs() {\n        if (this.checkedRows) {\n            this.record.user = this.checkedRows[0];\n        }\n    },\n\n    actions: {\n        fieldChanged(value) {\n            const bank = this.store.peekRecord('bank', value);\n            let column = bank.column;\n\n            if (column === null || column === '') {\n                column = 'bank_' + bank.id;\n            }\n            this.record.column = column;\n            // this.record.hours = 4\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"6pSl8QPU\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,1,[\\\"name\\\"]],\\\"column\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[23,1,[\\\"name\\\"]],\\\"user\\\"],null],[24,[\\\"checkedRows\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"bankdeducter.add.users_selected\\\"],null],false],[0,\\\":\\\"],[7,\\\"b\\\",true],[8],[0,\\\" \\\"],[1,[24,[\\\"checkedRows\\\",\\\"length\\\"]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,0,[\\\"fieldcomp\\\"]],\\\"expected `this.fieldcomp` to be a contextual component but found a string. Did you mean `(component this.fieldcomp)`? ('tt4/pods/collector/form-add/forms/bankdeducter/template.hbs' @ L7:C14) \\\"],null]],[[\\\"class\\\",\\\"field\\\"],[[28,\\\"concat\\\",[\\\"dropdown_\\\",[23,1,[\\\"name\\\"]]],null],[23,1,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main \\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.bank_name\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[4,\\\"if\\\",[[23,1,[\\\"features\\\",\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-control add-fields\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"name\\\",\\\"options\\\",\\\"classes\\\",\\\"bubbleChange\\\"],[\\\"column\\\",[28,\\\"await\\\",[[24,[\\\"columns\\\"]]],null],\\\"form-control add-fields\\\",\\\"fieldChanged\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/bankdeducter/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action, get, setProperties } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\nimport { Promise } from 'rsvp';\nimport { isPresent } from '@ember/utils';\n\nexport default class CollectorFormAddFormsDiaryComponent extends Component {\n    @service flags;\n    @service store;\n    @service session;\n    @service('collector-service') Collector;\n\n    @tracked record;\n    @tracked saving;\n    @tracked date;\n    @tracked project;\n\n    constructor() {\n        super(...arguments);\n        if (!this.args.record && this.flags.test('ember-movenium-form-add-diary')) {\n            this.record = this.store.createRecord('diary', { date: moment().format('YYYY-MM-DD') });\n        } else this.record = this.args.record;\n        this.date = this.record.date;\n        this.project = this.record.project;\n    }\n\n    @action\n    async onFieldChange(field, value) {\n        if (field === 'date') this.date = value;\n        if (field === 'project') this.project = value;\n        if (field === 'project' || field === 'date') await this.setWorkdayStrength();\n        this.record[field] = value;\n    }\n\n    @action\n    async save() {\n        this.saving = true;\n        this.record['weather'] = JSON.stringify(this.record['weather']);\n        await this.record.save();\n        this.saving = false;\n        this.args.close();\n    }\n\n    @action\n    setValue(val) {\n        this.record['event'] = val;\n    }\n\n    async setWorkdayStrength() {\n        const rowsForDate = await this.store.query('diary', {\n            date: this.date,\n            project: this.project.id,\n            sideload: true,\n            order: 'date-',\n        });\n        if (rowsForDate.length > 0) {\n            this.record = rowsForDate.firstObject;\n        } else {\n            const data = {};\n            const strength = await this.getWorkdayStrength(this.date, this.project);\n            setProperties(data, {\n                date: this.date,\n                project: this.project,\n                workforce_foremen: strength.workforce_foremen ? strength.workforce_foremen : 0,\n                workforce_subcontractor: strength.workforce_subcontractor\n                    ? strength.workforce_subcontractor\n                    : 0,\n                workforce_workers: strength.workforce_workers ? strength.workforce_workers : 0,\n            });\n            this.record = this.store.createRecord('diary', data);\n        }\n    }\n\n    async getWorkdayStrength(date, project) {\n        let worktimes = A([]);\n        let presences = A([]);\n\n        if (this.Collector.formExists('worktime')) {\n            worktimes = this.store.query('worktime', {\n                date: date,\n                project: project.id,\n                limit: 'all',\n                sideload: ['user.employer', 'user.userlevel', 'employer.name'],\n            });\n        }\n        if (this.Collector.formExists('presence')) {\n            presences = this.store.query('presence', {\n                date: date,\n                project: project.id,\n                limit: 'all',\n                sideload: ['user.employer', 'user.userlevel', 'employer.name'],\n            });\n        }\n        const data = await Promise.all([worktimes, presences]);\n        const rows = data[0].toArray().concat(data[1].toArray()).uniqBy('user');\n        const employer = get(this.session.currentUser.employer, 'id');\n        let own = null;\n\n        if (isPresent(employer)) {\n            if (this.Collector.testNeeds(['project.maincontractor'])) {\n                const maincontractorId = project.maincontractor\n                    ? get(project.maincontractor, 'id')\n                    : null;\n                own = rows.filterBy('employer.id', maincontractorId);\n            } else own = rows.filterBy('employer.id', employer);\n        } else {\n            own = rows;\n        }\n        const foremen = own.filter((item) => [3, 5, 6].includes(parseInt(item.user.userlevel)));\n\n        const subStrength = rows.length - own.length;\n        const foremenStrength = foremen.length;\n        const workerStrength = own.length - foremenStrength;\n\n        return {\n            workforce_workers: workerStrength,\n            workforce_foremen: foremenStrength,\n            workforce_subcontractor: subStrength,\n        };\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"iyux0U6Z\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@close\\\"],\\\"statements\\\":[[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@error\\\",\\\"@mandatory\\\"],[[28,\\\"t\\\",[\\\"diary.date\\\"],null],null,true]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[5,\\\"addon/fields/date\\\",[],[[\\\"@value\\\",\\\"@onChange\\\"],[[23,0,[\\\"record\\\",\\\"date\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"date\\\"],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@error\\\",\\\"@mandatory\\\"],[[28,\\\"t\\\",[\\\"diary.project\\\"],null],null,true]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[5,\\\"addon/fields/database\\\",[],[[\\\"@form\\\",\\\"@name\\\",\\\"@options\\\",\\\"@value\\\",\\\"@onChange\\\"],[\\\"diary\\\",\\\"project\\\",[28,\\\"hash\\\",null,[[\\\"form\\\",\\\"fields\\\"],[\\\"project\\\",[28,\\\"array\\\",[\\\"number\\\",\\\"name\\\"],null]]]],[23,0,[\\\"record\\\",\\\"project\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"project\\\"],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"record\\\",\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"diary\\\",[23,0,[\\\"record\\\"]],[23,0,[\\\"onFieldChange\\\"]],[23,5,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"eq\\\",[[23,4,[\\\"name\\\"]],\\\"date\\\"],null],[28,\\\"eq\\\",[[23,4,[\\\"name\\\"]],\\\"project\\\"],null]],null]],null,{\\\"statements\\\":[],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,4,[\\\"name\\\"]],\\\"weather\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@error\\\",\\\"@mandatory\\\"],[[28,\\\"t\\\",[\\\"diary.weather\\\"],null],null,false]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[5,\\\"addon/fields/weather\\\",[],[[\\\"@value\\\",\\\"@onChange\\\"],[[23,0,[\\\"record\\\",\\\"weather\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"weather\\\"]]],null]],null]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,4,[\\\"type\\\"]],\\\"databasearray\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                     \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@error\\\",\\\"@mandatory\\\"],[[28,\\\"t\\\",[\\\"diary.event\\\"],null],null,false]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"diary/database-array\\\",null,[[\\\"field\\\",\\\"change\\\",\\\"model\\\"],[[23,4,[]],[28,\\\"fn\\\",[[23,0,[\\\"setValue\\\"]]],null],[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n                     \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[4]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Buttons\\\"]],[],[[\\\"@saving\\\",\\\"@save\\\",\\\"@cancel\\\"],[[23,0,[\\\"saving\\\"]],[23,0,[\\\"save\\\"]],[23,5,[]]]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/diary/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action, setProperties } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\nimport { htmlSafe } from '@ember/string';\nimport podNames from 'ember-component-css/pod-names';\nimport { validateBusinessId, hetuvalidation } from 'tt4/utils/businessid_validation';\n\nexport default class CollectorFormAddFormsEmployerComponent extends Component {\n    @service flags;\n    @service store;\n    @service intl;\n    @service cc;\n    @service notifications;\n    @service session;\n    @service ttapi;\n    @service('collector-service') Collector;\n    @service('vastuu-group') vastuuGroup;\n\n    @tracked record;\n    @tracked loading;\n    @tracked showInviteButton;\n    @tracked message;\n    @tracked messageClass;\n    @tracked TvReport;\n    @tracked showTvModal;\n    @tracked businessIDError;\n    @tracked loadingTvReport\n\n    constructor() {\n        super(...arguments);\n        if (!this.args.record) {\n            this.createEmployerRecord();\n        } else {\n            this.record = this.args.record;\n        }\n    }\n    get styleNamespace() {\n        return podNames['collector/form-add/forms/employer'];\n    }\n    @action\n    onFieldChange(field, value) {\n        this.record[field] = value;\n        this.businessIDError = '';\n        if (\n            field === 'emp_id' &&\n            (!this.record['emp_id_type'] || parseInt(this.record['emp_id_type']) === 0)\n        ) {\n            if (!validateBusinessId(value) && !hetuvalidation(value)) {\n                this.businessIDError = 'employer.emp_id.wrong_format';\n            }\n        }\n    }\n\n    @action\n    addNew() {\n        this.createEmployerRecord();\n    }\n\n    @action\n    addSame() {\n        this.record = this.Collector.copyRecord(this.record);\n    }\n\n    createEmployerRecord() {\n        this.record = this.store.createRecord('employer');\n    }\n\n    get showVgButton() {\n        return this.Collector.testNeeds(['!products.vg_reliable_partner_disabled']);\n    }\n\n    @action\n    async getInfoFromTV() {\n        if (!this.Collector.testNeeds(['!products.vg_reliable_partner_disabled'])) {\n            return;\n        }\n        this.loading = true;\n        let message = '';\n        const empId = this.record.emp_id;\n        if (isEmpty(empId)) {\n            this.loading = false;\n            return;\n        }\n\n        try {\n            let data = await this.vastuuGroup.getReliablePartnerStatus(empId);\n            if (!data.error) data = data.firstObject;\n            message =\n                data && data.status && !data.error\n                    ? this.getFoundStatusMessage(data, empId)\n                    : this.getNotFoundStatusMessage();\n        } catch (e) {\n            message = this.getFailedMessage();\n        } finally {\n            this.loading = false;\n            this.message = message;\n        }\n    }\n\n    @action\n    async sendInviteTilaajavastuuEmail() {\n        this.notifications.success(this.intl.t('general.email_sent'), {\n            autoClear: true,\n        });\n        this.tvText = this.intl.t('employer.invite_tilaajavastuu_email', {\n            company: this.session.currentUser.company,\n        });\n        const addition = this.intl.t('employer.tilaajavastuu_invite_footer_text');\n        await this.ttapi.request('/sendEmail', {\n            method: 'post',\n            data: {\n                email: this.record['emp_email'],\n                content: this.tvText + '<br><br>' + addition,\n                title: this.intl.t('employer.invite_tilaajavastuu_title'),\n            },\n        });\n        this.showInviteModal = false;\n    }\n\n    getFoundStatusMessage(data, empId) {\n        this.showTvModal = true;\n        setProperties(this.record, {\n            name: data.company,\n            emp_country: data.country.toLowerCase(),\n            tv_status: data.status.toLowerCase(),\n        });\n        switch (data.status) {\n            case 'Ok':\n                this.messageClass = 'alert-success';\n                break;\n            case 'Seis':\n                this.messageClass = 'alert-danger';\n                break;\n            default:\n                this.messageClass = 'alert-warning';\n        }\n        this.showTvReport(empId);\n\n        const statusDescription = this.intl.t(`employer.vg_status.description.${data.status.toLowerCase()}`);\n\n        return htmlSafe(\n            '<div> \\\n                                <h3>' +\n                this.intl.t('employer.add.status') +\n                ': <b>' +\n                data.status +\n                '</b></h3> \\\n                                <h4>&nbsp;&nbsp;&nbsp;' +\n                statusDescription +\n                '</h4> \\\n                            </div>',\n        );\n    }\n\n    getNotFoundStatusMessage() {\n        this.record['tv_status'] = 'ei_loydy';\n        this.record['archive_code'] = '';\n        this.messageClass = 'alert-danger';\n        this.showInviteButton = true;\n        return htmlSafe(\n            '<div> \\\n                                <h3><b>' +\n                this.intl.t('employer.add.status.notfound') +\n                '</b></h3>' +\n                this.intl.t('employer.add.status.marketing') +\n                '\\\n                            </div>',\n        );\n    }\n\n    getFailedMessage() {\n        this.record['tv_status'] = 'ei_loydy';\n        this.record['archive_code'] = '';\n        this.messageClass = 'alert-danger';\n        return htmlSafe(\n            '<div> \\\n                                <h3><b>' +\n                this.intl.t('employer.add.status.failed') +\n                '</b></h3> \\\n                            </div>',\n        );\n    }\n\n    async showTvReport(empId) {\n        this.loadingTvReport = true;\n        try {\n            this.TvReport = await this.vastuuGroup.getReliablePartnerHtmlreport(empId);\n        } catch (e) {\n            this.notifications.warning(e, { autoClear: true });\n        }\n        this.loadingTvReport = false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"fkYXGhFc\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"M\\\",\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@close\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"message\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"alert \\\",[23,0,[\\\"messageClass\\\"]],\\\" text-center\\\"]]],[8],[0,\\\"\\\\n            \\\"],[1,[23,0,[\\\"message\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showInviteButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"showInviteModal\\\"]]],null],true],null]],[8],[1,[28,\\\"t\\\",[\\\"employer.tilaajavastuu_invite_button\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\",\\\"@addNew\\\",\\\"@addSame\\\"],[\\\"employer\\\",[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"onFieldChange\\\"],null],[28,\\\"action\\\",[[23,0,[]],[23,7,[]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"addSame\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,4,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,6,[\\\"name\\\"]],\\\"emp_id\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"emp-id-field\\\"],[8],[0,\\\"\\\\n                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@error\\\",\\\"@mandatory\\\",\\\"@class\\\",\\\"@label\\\"],[[28,\\\"t\\\",[\\\"employer.emp_id\\\"],null],[22,\\\"businessIDError\\\"],true,[28,\\\"concat\\\",[\\\"ember-movenium-field-\\\",[23,6,[\\\"name\\\"]]],null],[28,\\\"t\\\",[\\\"employer.emp_id\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[5,\\\"input\\\",[[3,\\\"on\\\",[\\\"change\\\",[28,\\\"fn\\\",[[23,3,[\\\"OnChange\\\"]],[23,6,[\\\"name\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,6,[\\\"name\\\"]]],null]],null]]]],[[\\\"@type\\\",\\\"@value\\\"],[\\\"text\\\",[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,6,[\\\"name\\\"]]],null]]]],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                        \\\"],[5,\\\"addon/loading-button\\\",[[12,\\\"title\\\",[28,\\\"unless\\\",[[23,0,[\\\"showVgButton\\\"]],[28,\\\"t\\\",[\\\"employer.actions.vg_disabled_tooltip\\\"],null]],null]]],[[\\\"@classes\\\",\\\"@loading\\\",\\\"@onClick\\\",\\\"@disabled\\\"],[\\\"fetch-tv-button\\\",[23,0,[\\\"loading\\\"]],[23,0,[\\\"getInfoFromTV\\\"]],[28,\\\"not\\\",[[23,0,[\\\"showVgButton\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"employer.get_tilaajavastuu_info\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,5,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,6,[\\\"name\\\"]],[23,6,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,6,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,3,[\\\"OnChange\\\"]],[23,6,[\\\"name\\\"]]],null],[23,6,[\\\"mandatory\\\"]],[23,6,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[6]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[4,5]}],[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showTvModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@outsideClose\\\"],[[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showTvModal\\\"]]],null],false],null],true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"loadingTvReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,0,[\\\"TvReport\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary pull-right mb-5\\\"],[11,\\\"disabled\\\",[23,0,[\\\"loadingTvReport\\\"]]],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"showTvModal\\\"]]],null],false],null]],[8],[1,[28,\\\"t\\\",[\\\"employer.add.tv_report.read\\\"],null],false],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showInviteModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@outsideClose\\\"],[[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showInviteModal\\\"]]],null],false],null],true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mb-5 pr-5 pl-5\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"employer.tilaajavastuu_email_recipent\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control add-fields inline-edit\\\",[23,0,[\\\"record\\\",\\\"emp_email\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mb-5 pr-5 pl-5\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"employer.tilaajavastuu_email_text\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"class\\\",\\\"value\\\"],[\\\"3\\\",\\\"form-control add-fields inline-edit\\\",[23,0,[\\\"tilaajavastuuText\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"Footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-default pull-right mb-5\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"showInviteModal\\\"]]],null],false],null]],[8],[1,[28,\\\"t\\\",[\\\"modal.clear\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary pull-right mb-5\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"sendInviteTilaajavastuuEmail\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"modal.ok\\\"],null],false],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/employer/template.hbs\"}});","import Component from \"@glimmer/component\";\nimport { tracked } from \"@glimmer/tracking\";\nimport { action } from \"@ember/object\";\nimport { inject as service } from \"@ember/service\";\n\nexport default class CollectorFormAddFormsOrientationComponent extends Component {\n    @service store;\n    @service(\"collector-service\") Collector;\n    @tracked record;\n\n    get showFields() {\n        const fields = [\"parent\", \"workpermit\"];\n\n        if (this.Collector.testNeeds([\"products.orientations_allow_employer_edit\"])) {\n            fields.push(\"ori_employer\");\n        }\n\n        return fields;\n    }\n\n    constructor() {\n        super(...arguments);\n        this.record = this.args.record;\n    }\n    @action\n    onFieldChange(field, value) {\n        this.record[field] = value;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"I/5LnGEs\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@close\\\"],\\\"statements\\\":[[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"orientation\\\",[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"onFieldChange\\\"],null],[28,\\\"action\\\",[[23,0,[]],[23,5,[]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"in-array\\\",[[23,4,[\\\"name\\\"]],[23,0,[\\\"showFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/orientation/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class CollectorFormAddFormsPresenceComponent extends Component {\n    @service store;\n    @service('collector-service') Collector;\n\n    @tracked record;\n\n    constructor() {\n        super(...arguments);\n        this.record = this.args.record\n            ? this.args.record\n            : this.store.createRecord('presence', { date: moment().format('YYYY-MM-DD') });\n        this.filters = {\n            project: { presence_project: 'on' },\n        };\n    }\n\n    @action\n    onFieldChange(field, value) {\n        this.record[field] = value;\n    }\n\n    @action\n    getField(field) {\n        if (\n            field.name === 'description' &&\n            this.Collector.testNeedsOne('products.personalliggareandid06')\n        ) {\n            set(field, 'features.mandatory', true);\n        }\n        return field;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"msnWvGBS\",\"block\":\"{\\\"symbols\\\":[\\\"form\\\",\\\"fields\\\",\\\"fieldcomp\\\",\\\"field\\\",\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@close\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-presence\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"presence\\\",[23,0,[\\\"record\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]]],null],[23,9,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,5,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"map\\\",[[28,\\\"fn\\\",[[23,0,[\\\"getField\\\"]]],null],[23,6,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,7,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@forceType\\\",\\\"@disabled\\\",\\\"@filters\\\"],[[23,8,[\\\"name\\\"]],[23,8,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,8,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,5,[\\\"OnChange\\\"]],[23,8,[\\\"name\\\"]]],null],[23,8,[\\\"features\\\",\\\"mandatory\\\"]],[23,8,[\\\"forceType\\\"]],[23,8,[\\\"features\\\",\\\"disabled\\\"]],[23,0,[\\\"filters\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[6,7]}],[0,\\\"\\\\n        \\\"],[6,[23,5,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,5,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"close\\\",\\\"showSaved\\\"],[\\\"presence\\\",[23,0,[\\\"record\\\"]],[23,9,[]],true]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"fields\\\"]],\\\"expected `form.fields` to be a contextual component but found a string. Did you mean `(component form.fields)`? ('tt4/pods/collector/form-add/forms/presence/template.hbs' @ L34:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[28,\\\"map\\\",[[28,\\\"fn\\\",[[23,0,[\\\"getField\\\"]]],null],[23,2,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[]],\\\"expected `fieldcomp` to be a contextual component but found a string. Did you mean `(component fieldcomp)`? ('tt4/pods/collector/form-add/forms/presence/template.hbs' @ L36:C18) \\\"],null]],[[\\\"field\\\",\\\"model\\\",\\\"filters\\\"],[[23,4,[]],[24,[\\\"record\\\"]],[23,0,[\\\"filters\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[2,3]},null],[0,\\\"\\\\n        \\\"],[1,[23,1,[\\\"buttons\\\"]],false],[0,\\\"\\\\n        \\\"],[1,[23,1,[\\\"saved\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/presence/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { max } from '@ember/object/computed';\n\nexport default class CollectorFormAddFormsProjectComponent extends Component {\n    @service flags;\n    @service store;\n    @service('collector-service') Collector;\n\n    @tracked record;\n    @tracked projectNumbers;\n\n    @max('projectNumbers') maxNumber;\n\n    constructor() {\n        super(...arguments);\n        this.allProjects = this.getAllProjects();\n        if (!this.args.record && this.flags.test('ember-movenium-form-add-projects')) {\n            this.createProjectRecord();\n        }\n    }\n\n    get defaults() {\n        return this.getDefaults();\n    }\n\n    @action\n    onFieldChange(field, value) {\n        this.record[field] = value;\n    }\n\n    @action\n    addNew() {\n        this.createProjectRecord();\n    }\n\n    @action\n    addSame() {\n        this.record = this.Collector.copyRecord(this.record);\n    }\n\n    async getDefaults() {\n        let _defaults = {};\n        const projects = await this.allProjects;\n        this.projectNumbers = projects\n            .mapBy('number')\n            .map((num) => parseInt(num, 10))\n            .filter((filtered) => !isNaN(filtered));\n\n        const biggestNumber = this.projectNumbers.length !== 0 ? this.maxNumber : 0;\n        _defaults.number = biggestNumber + 1;\n        return _defaults;\n    }\n\n    async getAllProjects() {\n        return await this.store.findAll('project');\n    }\n\n    async createProjectRecord() {\n        const _defaults = await this.defaults;\n        this.record = this.store.createRecord('project', _defaults);\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"KeW/Hr0C\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@close\\\"],\\\"statements\\\":[[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\",\\\"@addNew\\\",\\\"@addSame\\\"],[\\\"project\\\",[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"onFieldChange\\\"],null],[28,\\\"action\\\",[[23,0,[]],[23,5,[]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"addSame\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/project/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class CollectorFormAddFormsSiteSafetyObservationComponent extends Component {\n    @service store;\n    @service flags;\n\n    @tracked record;\n\n    constructor() {\n        super(...arguments);\n        this.record = this.store.createRecord('site_safety_observation');\n    }\n\n    @action\n    onFieldChange(field, value) {\n        this.record[field] = value;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"nYuv79NJ\",\"block\":\"{\\\"symbols\\\":[\\\"@close\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-siteSafetyObservation\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"site_safety_observation\\\",[23,0,[\\\"record\\\"]],[23,0,[\\\"onFieldChange\\\"]],[23,1,[]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"collector/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\",\\\"@showSaved\\\"],[\\\"site_safety_observation\\\",[23,0,[\\\"record\\\"]],[23,1,[]],true]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/siteSafetyObservation/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class CollectorFormAddTooltypeComponent extends Component {\n    @service store;\n    @service flags;\n\n    @tracked record;\n\n    constructor() {\n        super(...arguments);\n        this.record = this.store.createRecord('tooltype');\n    }\n\n    @action\n    onFieldChange(field, value) {\n        this.record[field] = value;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"BqsCOZvp\",\"block\":\"{\\\"symbols\\\":[\\\"@close\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-tooltype\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"tooltype\\\",[23,0,[\\\"record\\\"]],[23,0,[\\\"onFieldChange\\\"]],[23,1,[]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"collector/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\",\\\"@showSaved\\\"],[\\\"tooltype\\\",[23,0,[\\\"record\\\"]],[23,1,[]],true]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/tooltype/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { htmlSafe } from '@ember/string';\nimport workPermitUtils from 'tt4/utils/work-permit';\n\nexport default Component.extend({\n    store: service(),\n    intl: service(),\n    gui: service(),\n    form: 'user',\n\n    userlevelInfo: computed(function () {\n        if (this.intl.primaryLocale !== 'fi') return null;\n\n        const linkToCommunityMovenium =\n            'https://ohjeet.visma.fi/articles/#!visma-movenium/k-ytt-j-roolit';\n        const linkToCommunityOtta = get(this, 'intl').t('click.help_link.to.community_otta');\n\n        let linkToCommunity;\n        const brand = get(this, 'gui').getBrand();\n\n        // eslint-disable-next-line no-irregular-whitespace\n        if (brand === 'otta') {\n            linkToCommunity = linkToCommunityOtta;\n        } else {\n            linkToCommunity = linkToCommunityMovenium;\n        }\n\n        return htmlSafe(\n            this.intl.t('user.userlevel.info', {\n                link:\n                    \"<a href='\" +\n                    linkToCommunity +\n                    \"'>\" +\n                    this.intl.t('user.userlevel.info.link') +\n                    '<span class=\"move move-external-link\"></span></a>',\n            }),\n        );\n    }),\n\n    init() {\n        this._super();\n        set(this, 'changeFieldTypeToDate', ['ea1card', 'ea2card', 'firecard', 'safetycard']);\n    },\n\n    didReceiveAttrs() {\n        if (!this.record) set(this, 'userBuilder', true);\n        if (\n            this.Collector.fieldExists('user', 'taxnumber') &&\n            !this.record.taxnumber &&\n            this.record.isNew\n        ) {\n            set(this, 'userBuilder', true);\n        } else {\n            set(this, 'userBuilder', false);\n        }\n        // if record is new we want to generate new random password\n        if (this.record.isNew) {\n            set(this, 'record.password', this.generatePassword());\n        }\n    },\n\n\n    actions: {\n        async onFieldChange(field, value) {\n\n            set(await this.record, field, value);\n\n\n            // set default work permit type, when nationality is changed to something else than fi\n            if (field === 'nationality' && value != 'fi') {\n                set(this, 'record.work_permit_type', workPermitUtils.getDefaultWorkPermitType(value));\n            }\n            // trigger fieldChanged action on every field change so that username can be generated on the fly\n            this.send('fieldChanged', value, field);\n\n        },\n\n        addUser(userInfo) {\n            set(this, 'defaults', this.addDefaults(userInfo));\n            if (userInfo && get(userInfo, 'id')) set(this, 'record', userInfo);\n            this.addUser();\n            set(this, 'userBuilder', false);\n        },\n\n        async fieldChanged(value, field) {\n            if (!field) return;\n            if (field === 'firstname' || field === 'lastname' || field === 'employer') {\n                if (!this.record.isNew) return;\n                set(this, 'record.username', await this.generateUsername(this.record));\n            }\n        },\n    },\n    async getEmployerSuffix(employer) {\n        if (get(employer, 'domain')) return get(employer, 'domain');\n\n        const employerData = await this.store.findRecord('employer', get(employer, 'id'), {\n            reload: true,\n        });\n        if (get(employerData, 'domain')) return get(employerData, 'domain');\n        return get(employer, 'name');\n    },\n\n    async addDefaults(record) {\n        return {\n            userlevel: '1',\n            emp_relation: '1',\n            password: this.generatePassword(),\n            username: await this.generateUsername(record),\n            firstname: record.firstname,\n            lastname: record.lastname,\n            taxnumber: record.taxnumber,\n            employer: record.employer,\n            birthdate: record.birthdate,\n        };\n    },\n\n    generatePassword() {\n        const chars = '23456789abcdefghkmnpqrstuvwxyz';\n        const string_length = 6;\n        let generated_password = '';\n        let i = 0;\n        while (i < string_length) {\n            let rnum = Math.floor(Math.random() * chars.length);\n            generated_password += chars.substring(rnum, rnum + 1);\n            i++;\n        }\n        return generated_password;\n    },\n\n    async generateUsername(record) {\n        let generatedName = '';\n\n        if (record.firstname && record.lastname && record.employer && get(record.employer, 'id')) {\n            let employerSuffix = await this.getEmployerSuffix(record.employer);\n            generatedName = record.firstname + '.' + record.lastname + '@' + employerSuffix;\n        } else if (record.firstname && record.lastname) {\n            generatedName = record.firstname + '.' + record.lastname;\n        } else {\n            generatedName = record.firstname;\n        }\n\n        if (generatedName) {\n            generatedName = generatedName.replace(/\\s+/g, '');\n            generatedName = generatedName.replace(/[&]+/g, '');\n            return generatedName.toLowerCase();\n        } else {\n            return undefined;\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"Ovc9pgUt\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@rowAdded\\\",\\\"@rowEdited\\\",\\\"@close\\\",\\\"@showSaved\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"userBuilder\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/form-add/forms/user/user-builder\\\",null,[[\\\"model\\\",\\\"afterSave\\\",\\\"addUser\\\"],[[24,[\\\"record\\\"]],[24,[\\\"afterSave\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addUser\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@rowAdded\\\",\\\"@rowEdited\\\",\\\"@close\\\",\\\"@showSaved\\\"],[[23,0,[\\\"form\\\"]],[23,0,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"onFieldChange\\\"],null],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"includes\\\",[[23,4,[\\\"name\\\"]],[23,0,[\\\"changeFieldTypeToDate\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\",\\\"@forceType\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]],\\\"date\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,4,[\\\"name\\\"]],\\\"userlevel\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\",\\\"@forceType\\\",\\\"@info\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]],[23,4,[\\\"forceType\\\"]],[23,0,[\\\"userlevelInfo\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\",\\\"@forceType\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]],[23,4,[\\\"forceType\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[4]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/user/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\nimport { set } from '@ember/object';\nimport { htmlSafe } from '@ember/string';\nimport { isEmpty } from '@ember/utils';\n\nexport default Component.extend({\n    session: service(),\n    Collector: service('collector-service'),\n    capi: service(),\n    ttapi: service(),\n    intl: service(),\n    router: service(),\n    store: service(),\n    vastuuGroup: service('vastuu-group'),\n\n    init() {\n        this._super(...arguments);\n        this.found_employers = [];\n        this.not_found_employers = [];\n        this.needs = ['employers/add'];\n        this.empArr = A([]);\n        this.no_employers = false;\n        this.userAlreadyExists = false;\n        this.messageStatus = null;\n        this.message = null;\n        this.create = false;\n        this.users = null;\n        this.noEmployer = false;\n        this.activeUser = null;\n    },\n\n    actions: {\n        async fetchTax() {\n            set(this, 'empArr', A([]));\n            if (!this.taxnumber || this.taxnumber.length !== 12) {\n                set(this, 'message', null);\n                set(this, 'messageStatus', null);\n                return;\n            }\n            set(this, 'loading', true);\n            let user = await this.store.query('user', { taxnumber: this.taxnumber });\n            if (user.length === 0) {\n                let userExists = await this.checkIfUserExists(this.taxnumber);\n                if (userExists) {\n                    set(this, 'loading', false);\n                    set(this, 'userAlreadyExists', true);\n                } else {\n                    set(this, 'userAlreadyExists', false);\n                    try {\n                        set(this, 'loading', true);\n                        let request = await this.vastuuGroup.request('tvpersonapi',\n                            {\n                                country: 'fi',\n                                'id-country': 'fi',\n                                'id-type': 'tax_number',\n                                'id-value': this.taxnumber,\n                            }\n                        );\n                        this.handleRequestMessage(request);\n                    } catch (Exception) {\n                        set(this, 'loading', false);\n                        set(this, 'messageStatus', 'alert-danger');\n                        let message = htmlSafe(\n                            '<div>' +\n                                '<h3><b>' +\n                                this.intl.t('user.add.status.failed') +\n                                '</b></h3></div>',\n                        );\n                        set(this, 'message', message);\n                    }\n                }\n            } else {\n                set(this, 'loading', false);\n                set(this, 'messageStatus', 'alert-danger');\n                let message = htmlSafe(\n                    '<div>' + '<h3><b>' + this.intl.t('user.add.exists') + '</b></h3></div>',\n                );\n                set(this, 'message', message);\n            }\n        },\n\n        async createUser(user, employer) {\n            if (\n                user.homecountry !== 'fi' &&\n                employer.employment_periods[0].address_in_home_country\n            ) {\n                user.address = employer.employment_periods[0].address_in_home_country.address[0];\n                user.zip = employer.employment_periods[0].address_in_home_country.post_code;\n                user.city = employer.employment_periods[0].address_in_home_country.post_area;\n                user.contract_type = employer.employment_periods[0].contract_type;\n                user.workpass = employer.employment_periods[0].documentation_of_sent_employee;\n            }\n            set(this, 'activeUser', user);\n            set(this, 'users', null);\n            set(this, 'message', null);\n\n            if (this.Collector.testNeeds(['employer@access'])) {\n                let employers = await this.store.query('employer', {\n                    emp_id: employer.gov_org_ids[0].gov_org_id,\n                });\n                if (employers.length > 0) {\n                    user.employer = employers.firstObject;\n                    this.setModel(user, ['status', 'vatin']);\n                    set(this, 'message', null);\n                    set(this, 'users', null);\n                    this.addUser(user);\n                } else {\n                    set(this, 'messageStatus', 'alert-warning');\n                    set(this, 'noEmployer', true);\n                    let message = htmlSafe(\n                        '<div>' +\n                            '<h3><b>' +\n                            this.intl.t('user.add.status.employer.notfound') +\n                            '</b></h3><h4>' +\n                            user.employer +\n                            ', ' +\n                            user.vatin +\n                            '</h4></div>',\n                    );\n\n                    set(this, 'message', message);\n                }\n            } else {\n                user.employer = this.session.currentUser.employer;\n                this.setModel(user, ['status', 'vatin']);\n                set(this, 'message', null);\n                set(this, 'users', null);\n                this.addUser(user);\n            }\n        },\n\n        async addEmployer(employer, id) {\n            let emp_obj = {\n                emp_id: id.gov_org_id,\n                name: employer.name,\n                emp_firstname: employer.employers_contact_person.contact_first_name,\n                emp_lastname: employer.employers_contact_person.contact_last_name,\n                emp_phone: employer.employers_contact_person.contact_phone,\n                emp_email: employer.employers_contact_person.contact_email,\n            };\n\n            if (employer.country !== 'FI') {\n                emp_obj.emp_id_type = id.gov_org_id === 'vat_number' ? '1' : '2';\n                emp_obj.emp_homecountry = employer.country.toLowerCase();\n\n                if (employer.address) {\n                    emp_obj.emp_address = employer.address.address.toString();\n                    emp_obj.emp_zip = employer.address.post_code;\n                    emp_obj.emp_city = employer.address.post_area;\n                    emp_obj.emp_country = employer.address.country.toLowerCase();\n                }\n            }\n\n            let emp = this.store.createRecord('employer', emp_obj);\n\n            set(this.user, 'employer', emp);\n\n            this.store.createRecord('user', this.user);\n            let newRoute = await this.router.transitionTo('employers.add');\n            set(newRoute.controller, 'afterSave', this.afterSave);\n        },\n\n        async addUserToGroup(taxnumber) {\n            set(this, 'loading', true);\n            let data = await this.ttapi._post('addusertogroup', { taxnumber: taxnumber });\n            set(this, 'loading', false);\n            let user = await this.store.findRecord('user', data.user.id);\n            this.addUser(user);\n        },\n\n        setUserTaxnumber(taxnumber) {\n            let user = {\n                taxnumber: taxnumber,\n            };\n            this.setModel(user, ['status', 'vatin']);\n            this.addUser(user);\n        },\n    },\n    setModel(data, skip) {\n        for (let k in data) {\n            if (skip.includes(k)) continue;\n            set(this.model, k, data[k]);\n        }\n    },\n\n    setUserData(data) {\n        let user_record = {\n            firstname: data.names[0].given_names[0],\n            lastname: data.names[0].surnames.join(' '),\n            birthdate: data.date_of_birth,\n            taxnumber: data.gov_ids[0].gov_id,\n            homecountry: data.residences ? data.residences[0].toLowerCase() : 'fi',\n        };\n\n        set(this, 'user', user_record);\n    },\n\n    async checkIfUserExists(taxnumber) {\n        try {\n            await this.capi.request('/users?validation_only=taxnumber', {\n                method: 'POST',\n                data: { user: { taxnumber: taxnumber } },\n            });\n            return false;\n        } catch (reason) {\n            if (\n                reason.payload.error_msg ==\n                'user with this ' + taxnumber + ' taxnumber already exists!'\n            ) {\n                return true;\n            } else {\n                return false;\n            }\n        } finally {\n            set(this, 'loading', false);\n        }\n    },\n    async getImage() {\n        let data = await this.vastuuGroup.request('tvcardimage',\n            { taxnumber: this.model.taxnumber, emp_id: this.model.employer.emp_id }\n        );\n        if (data && !data.error) {\n            set(this, 'model.image', [\n                {\n                    file: 'data:image/png;base64,' + data,\n                    name: 'profile.png',\n                },\n            ]);\n            set(this, 'fetchedImage', 'data:image/png;base64,' + data);\n        }\n    },\n\n    handleRequestMessage(data) {\n        let message = '';\n        set(this, 'message', message);\n        if (data.message) {\n            set(this, 'loading', false);\n            set(this, 'messageStatus', 'alert-danger');\n            message = htmlSafe(\n                '<div>' + '<h3><b>' + this.intl.t('user.add.status.notfound') + '</b></h3></div>',\n            );\n            set(this, 'message', message);\n        } else if (!data.error) {\n            if (isEmpty(data.employers)) {\n                set(this, 'loading', false);\n                set(this, 'messageStatus', 'alert-danger');\n                message = htmlSafe(\n                    '<div>' + '<h3><b>' + this.intl.t('user.add.no_employers') + '</b></h3></div>',\n                );\n                set(this, 'message', message);\n            }\n            this.setUserData(data);\n            let accessError = false;\n\n            data.employers.forEach((emp) => {\n                let found = [];\n                let not_found = [];\n\n                let emp_id = emp.gov_org_ids[0].gov_org_id;\n                if (emp.country !== 'FI' && emp.gov_org_ids[1]) {\n                    emp_id = emp.gov_org_ids[1].gov_org_id;\n                }\n                if (this.Collector.testNeeds(['employer@access'])) {\n                    emp.gov_org_ids.forEach(async (gov_ids) => {\n                        let employers = await this.store.query('employer', {\n                            emp_id: gov_ids.gov_org_id,\n                        });\n                        if (employers.length > 0) {\n                            found.pushObject(gov_ids);\n                        } else {\n                            not_found.pushObject(gov_ids);\n                        }\n                    });\n\n                    this.empArr.pushObject({ employer: emp, found: found, not_found: not_found });\n                } else if (this.session.currentUser.employer.emp_id === emp_id) {\n                    emp.gov_org_id = emp_id;\n                    this.empArr.pushObject({\n                        employer: emp,\n                        found: this.session.currentUser.employer,\n                        not_found: [],\n                    });\n                } else {\n                    accessError = true;\n                }\n            });\n            if (accessError && this.found_employers.length === 0) {\n                set(this, 'messageStatus', 'alert-danger');\n                message = htmlSafe(\n                    '<div>' +\n                        '<h3><b>' +\n                        this.intl.t('user.add.no_employer_access') +\n                        '</b></h3></div>',\n                );\n                set(this, 'message', message);\n            }\n        } else {\n            this.setUserInfo(data, false);\n            set(this, 'loading', false);\n        }\n        set(this, 'loading', false);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"+j2qEhbn\",\"block\":\"{\\\"symbols\\\":[\\\"empObj\\\",\\\"not_found_employer\\\",\\\"found_employer\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-offset-3 col-md-12 col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"user.add.by_tax\\\"],null],false],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"input\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"taxnumber\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"fetchTax\\\"],null],\\\"form-control\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[1,[22,\\\"loader-icon\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"message\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"alert \\\",[22,\\\"messageStatus\\\"],\\\" text-center\\\"]]],[8],[0,\\\"\\\\n                \\\"],[1,[22,\\\"message\\\"],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"empArr\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h2\\\",true],[8],[1,[23,1,[\\\"employer\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"found\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder.create\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"list-group-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"createUser\\\",[24,[\\\"user\\\"]],[23,1,[\\\"employer\\\"]]]],[8],[1,[24,[\\\"user\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"user\\\",\\\"lastname\\\"]],false],[0,\\\",\\\\n                            \\\"],[1,[23,1,[\\\"employer\\\",\\\"name\\\"]],false],[0,\\\",\\\\n                            \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"employer.identifier_type.\\\",[23,3,[\\\"org_id_type\\\"]]],null]],null],false],[0,\\\": \\\"],[1,[23,3,[\\\"gov_org_id\\\"]],false],[0,\\\",\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"employer.country\\\"],null],false],[0,\\\": \\\"],[1,[23,3,[\\\"country\\\"]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"not_found\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.status.employer.notfound\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"list-group-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addEmployer\\\",[23,1,[\\\"employer\\\"]],[23,2,[]]]],[8],[1,[24,[\\\"user\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"user\\\",\\\"lastname\\\"]],false],[0,\\\",\\\\n                        \\\"],[1,[23,1,[\\\"employer\\\",\\\"name\\\"]],false],[0,\\\",\\\\n                        \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"employer.identifier_type.\\\",[23,2,[\\\"org_id_type\\\"]]],null]],null],false],[0,\\\": \\\"],[1,[23,2,[\\\"gov_org_id\\\"]],false],[0,\\\",\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"employer.country\\\"],null],false],[0,\\\": \\\"],[1,[23,2,[\\\"country\\\"]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[4,\\\"if\\\",[[28,\\\"await\\\",[[24,[\\\"userAlreadyExists\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addUserToGroup\\\",[24,[\\\"taxnumber\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"user.add.user_to_group\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"create\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"users.add.index\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"user.add.builder.create\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[12,\\\"name\\\",\\\"addUserManually\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setUserTaxnumber\\\",[24,[\\\"taxnumber\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder.manually\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/user/user-builder/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/form-add/forms/wageperiod/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SalaryPeriodAdderComponent;\n\nimport Ember from 'ember';\n\nSalaryPeriodAdderComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    multi: false,\n    amount: 2,\n    period: 'month',\n    from: moment().startOf('month').format('YYYY-MM-DD'),\n    amount_options: Ember.computed(function () {\n        return [\n            {\n                id: 2,\n                name: this.get('intl').t('salary_period.adder.amount.2'),\n            },\n            {\n                id: 4,\n                name: this.get('intl').t('salary_period.adder.amount.4'),\n            },\n            {\n                id: 6,\n                name: this.get('intl').t('salary_period.adder.amount.6'),\n            },\n            {\n                id: 8,\n                name: this.get('intl').t('salary_period.adder.amount.8'),\n            },\n            {\n                id: 12,\n                name: this.get('intl').t('salary_period.adder.amount.12'),\n            },\n        ];\n    }),\n    period_options: Ember.computed(function () {\n        return [\n            {\n                id: 'month',\n                name: this.get('intl').t('salary_period.adder.period.month'),\n            },\n            {\n                id: 'week2',\n                name: this.get('intl').t('salary_period.adder.period.week2'),\n            },\n            {\n                id: 'week4',\n                name: this.get('intl').t('salary_period.adder.period.week4'),\n            },\n        ];\n    }),\n    actions: {\n        changeWorktimeGroup: function (group) {\n            return this.set('record.worktimegroup', group);\n        },\n        create: function () {\n            var amount, end, from, i, period, promises, records, ref, store;\n            this.set('saving', true);\n            this.set('disabled', true);\n            store = this.get('store');\n            amount = this.get('amount');\n            period = this.get('period');\n            from = this.get('from');\n            records = [];\n            for (i = 1, ref = amount; 1 <= ref ? i <= ref : i >= ref; 1 <= ref ? i++ : i--) {\n                end = (function () {\n                    switch (period) {\n                        case 'month':\n                            return moment(from)\n                                .add(1, 'month')\n                                .subtract(1, 'day')\n                                .format('YYYY-MM-DD');\n                        case 'week2':\n                            return moment(from)\n                                .add(2, 'week')\n                                .subtract(1, 'day')\n                                .format('YYYY-MM-DD');\n                        case 'week4':\n                            return moment(from)\n                                .add(4, 'week')\n                                .subtract(1, 'day')\n                                .format('YYYY-MM-DD');\n                    }\n                })();\n                records.push(\n                    store.createRecord('wage-period', {\n                        period_name: moment(from).format('L') + ' - ' + moment(end).format('L'),\n                        period_start_date: from,\n                        period_end_date: end,\n                        worktimegroup: this.get('record.worktimegroup'),\n                    }),\n                );\n                from = (function () {\n                    switch (period) {\n                        case 'month':\n                            return moment(from).add(1, 'month').format('YYYY-MM-DD');\n                        case 'week2':\n                            return moment(from).add(2, 'week').format('YYYY-MM-DD');\n                        case 'week4':\n                            return moment(from).add(4, 'week').format('YYYY-MM-DD');\n                    }\n                })();\n            }\n            promises = records.invoke('save');\n            return Ember.RSVP.Promise.all(promises).then((saved_records) => {\n                if (this.get('rowAdded')) {\n                    this.rowAdded(saved_records);\n                }\n                this.get('close')();\n                this.set('saving', false);\n                return this.set('disabled', false);\n            });\n        },\n        setmulti: function (multi) {\n            return this.set('multi', multi);\n        },\n        closeEditor: function () {\n            return this.get('close')();\n        },\n        rowAdded: function (records) {\n            this.get('rowAdded')(records);\n            return this.get('close')();\n        },\n    },\n});\n\nexport default SalaryPeriodAdderComponent;\n","export default Ember.HTMLBars.template({\"id\":\"K1q+DrI/\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"record\\\",\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"unless\\\",[[24,[\\\"multi\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"setmulti\\\",false]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"salary_period.adder.single\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"if\\\",[[24,[\\\"multi\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"setmulti\\\",true]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"salary_period.adder.multi\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"not\\\",[[24,[\\\"multi\\\"]]],null],\\\"hidden\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"hasErrors\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"salary_period.adder.amount\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"field\\\",\\\"features\\\",\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"firstError\\\",\\\"message\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\"],[[24,[\\\"amount_options\\\"]],\\\"form-control add-fields\\\",[24,[\\\"amount\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"hasErrors\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"salary_period.adder.from\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"field\\\",\\\"features\\\",\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"firstError\\\",\\\"message\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"value\\\",\\\"class\\\"],[[24,[\\\"from\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"hasErrors\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"salary_period.adder.period\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"field\\\",\\\"features\\\",\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"firstError\\\",\\\"message\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\"],[[24,[\\\"period_options\\\"]],\\\"form-control add-fields\\\",[24,[\\\"period\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.worktimegroup\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/field-container\\\",null,[[\\\"field\\\",\\\"change\\\",\\\"model\\\"],[\\\"wage_period.worktimegroup\\\",\\\"changeWorktimeGroup\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"create\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[28,\\\"t\\\",[\\\"salary_period.adder.create\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeEditor\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"multi\\\"]],\\\"hidden\\\"],null]]]],[8],[0,\\\"\\\\n \\\"],[1,[28,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"rowAdded\\\",\\\"rowEdited\\\",\\\"close\\\",\\\"showSaved\\\",\\\"defaults\\\",\\\"disabled\\\",\\\"sortFields\\\",\\\"preserveRecordOnDestroy\\\",\\\"fieldChanged\\\",\\\"only\\\"],[[24,[\\\"form\\\"]],[24,[\\\"record\\\"]],[24,[\\\"rowAdded\\\"]],[24,[\\\"rowEdited\\\"]],[24,[\\\"close\\\"]],[24,[\\\"showSaved\\\"]],[24,[\\\"_defaults\\\"]],[24,[\\\"disableForm\\\"]],[24,[\\\"sortFields\\\"]],[24,[\\\"preserveRecordOnDestroy\\\"]],[24,[\\\"fieldChanged\\\"]],[24,[\\\"only\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/wageperiod/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class CollectorFormAddFormsWorksitediaryComponent extends Component {\n    @service store;\n    @service notifications;\n    @service('collector-service') Collector;\n\n    @tracked record;\n    @tracked saving;\n    @tracked savedView;\n\n    constructor() {\n        super(...arguments);\n        this.record = this.store.createRecord('worksitediary');\n        this.fields = this.Collector.fieldArray('worksitediary');\n    }\n\n    @action\n    onFieldChange(field, value) {\n        this.record[field] = value;\n    }\n\n    @action\n    async save() {\n        this.saving = true;\n        await this.record.validate();\n        if (!this.record.isValid) {\n            return (this.saving = false);\n        }\n\n        this.record['weather'] = JSON.stringify(this.record['weather']);\n        await this.record.save();\n        this.saving = false;\n        this.savedView = true;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"sTj6XUC3\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@close\\\",\\\"@addSame\\\",\\\"@addNew\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"savedView\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add/saved\\\",[],[[\\\"@record\\\",\\\"@fields\\\",\\\"@close\\\",\\\"@edit\\\",\\\"@addSame\\\",\\\"@addNew\\\",\\\"@closeSaved\\\"],[[23,0,[\\\"record\\\"]],[23,0,[\\\"fields\\\"]],[23,5,[]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"savedView\\\"]]],null],false],null],[23,6,[]],[23,7,[]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"savedView\\\"]]],null],false],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"worksitediary\\\",[23,0,[\\\"record\\\"]],[23,0,[\\\"onFieldChange\\\"]],[23,5,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,4,[\\\"name\\\"]],\\\"weather\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@error\\\",\\\"@mandatory\\\"],[[28,\\\"t\\\",[\\\"diary.weather\\\"],null],null,false]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[5,\\\"addon/fields/weather\\\",[],[[\\\"@value\\\",\\\"@onChange\\\"],[[23,0,[\\\"record\\\",\\\"weather\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"weather\\\"],null]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@forceType\\\",\\\"@disabled\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"forceType\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[4]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Buttons\\\"]],[],[[\\\"@saving\\\",\\\"@save\\\",\\\"@cancel\\\"],[[23,0,[\\\"saving\\\"]],[23,0,[\\\"save\\\"]],[23,5,[]]]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/worksitediary/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class CollectorFormAddFormsWorktaskComponent extends Component {\n    @service store;\n    @service flags;\n    @service intl;\n\n    @tracked record;\n    @tracked messageBox;\n\n    constructor() {\n        super(...arguments);\n        // Addon form-add gets defaults from form\n        const defaults = !this.flags.test('ember-movenium-form-add-worktasks')\n            ? { date: moment().format('YYYY-MM-DD') }\n            : {};\n        this.record = this.args.record\n            ? this.args.record\n            : this.store.createRecord('worktask', defaults);\n        this.currentValues = { date: null, userid: null };\n    }\n\n    @action\n    async onFieldChange(field, value) {\n        this.record[field] = value;\n        this.messageBox = await this.updateMessage();\n    }\n\n    /*\n    check if worktasks are found for selected user for selected date\n    */\n    async updateMessage() {\n        if (!this.record.user || !this.record.date) return null;\n        if (\n            this.currentValues.date === this.record.date &&\n            this.currentValues.userid === this.record.user.id\n        )\n            return this.messageBox;\n\n        this.currentValues = {\n            date: this.record.date,\n            userid: this.record.user.id,\n        };\n\n        const params = { user: this.record.user.id, date: this.record.date };\n        if (this.record.id) params.id = '!' + this.record.id;\n        let tasks = await this.store.query('worktask', params);\n\n        const filtered_tasks = tasks.filter((task) => task.id !== this.record_id);\n\n        let hours = 0;\n        filtered_tasks.forEach((task) => (hours += task.est_hours));\n        const minutes = Math.round((hours - Math.floor(hours)) * 60);\n        const formatted_hours = Math.floor(hours) + ':' + (minutes < 10 ? '0' : '') + minutes + 'h';\n\n        let message = null;\n        if (filtered_tasks.length > 0) {\n            message = this.intl.t('worktask.worktasks_found', {\n                count: filtered_tasks.length,\n                hours: formatted_hours,\n            });\n        }\n\n        return message;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"0qIB4Tjd\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@close\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-worktasks\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[4,\\\"if\\\",[[24,[\\\"messageBox\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning modal-message-box\\\"],[8],[1,[23,0,[\\\"messageBox\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"worktask\\\",[23,0,[\\\"record\\\"]],[23,0,[\\\"onFieldChange\\\"]],[23,5,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,4,[\\\"name\\\"]],\\\"involved\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@error\\\",\\\"@mandatory\\\"],[[28,\\\"t\\\",[\\\"worktask.involved\\\"],null],null,false]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[5,\\\"collector/fields/databasearray-field\\\",[],[[\\\"@field\\\",\\\"@model\\\"],[[23,4,[]],[23,0,[\\\"record\\\"]]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[4]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"collector/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\",\\\"@showSaved\\\"],[\\\"worktask\\\",[23,0,[\\\"record\\\"]],[23,5,[]],true]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/worktask/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment';\nimport { isEmpty } from '@ember/utils';\nimport { debounce } from '@ember/runloop';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    collector: service('collector-service'),\n    ttapi: service(),\n    intl: service(),\n    dialogs: service(),\n    router: service(),\n    needs: service(),\n    flags: service(),\n\n    layoutName: 'collector/form-add',\n    form: 'worktime',\n\n    _defaults: computed('defaults', async function () {\n        const defaults = {};\n\n        defaults.date = moment().format('YYYY-MM-DD');\n        defaults.user = get(this, 'session.currentUser');\n\n        const hoursAdding = this.collector.testNeedsOne('products.timetracker_hours');\n\n        if (!hoursAdding) defaults.starttime = await this.getStarttime();\n        if (!hoursAdding) defaults.endtime = moment().format('HH:mm');\n        defaults.affects_overtime = 'off';\n\n        const pauseField = this.collector\n            .fieldArray('worktime')\n            .find((item) => item.name === 'pause');\n        // support for worktime-groups\n        if (pauseField) {\n            if (typeof get(pauseField, 'features.default_value') == 'object')\n                defaults.pause = get(pauseField, 'features.default_value.value');\n            else defaults.pause = get(pauseField, 'features.default_value');\n        }\n\n        if (this.session.currentUser.currentMySite)\n            defaults.project = this.session.currentUser.currentMySite;\n\n        return Object.assign(defaults, await get(this, 'defaults'));\n    }),\n\n    endtimeField: computed('form', function () {\n        return get(this, 'collector').field('worktime', 'endtime');\n    }),\n\n    didReceiveAttrs() {\n        if (!this.record) {\n            !this.flags.test('ember-movenium-form-add-worktime')\n                ? this.createRecord()\n                : (this.record = new Promise((resolve) => {\n                      resolve(this.createRecord());\n                  }));\n        } else if (this.record && this.record.isNew && !this.preserveRecordOnDestroy) {\n            this.setRecordDefaults();\n        }\n    },\n\n    actions: {\n        rowAdded(record) {\n            this.sendWorktimeAdded(record);\n            this.alertMissingOrientation(record);\n            // If we still have trailing new records, rollback them... form-add adds sometimes three of them :D\n            // Addon form-add does this correctly and don't create records on its own and only assumes a record to be given\n            // The real fix should be that form-add shoudn't create any record at all but it's a bit too risky to change now\n            const newRecords = this.store.peekAll('worktime')?.filterBy('isNew', true);\n            newRecords?.forEach((rec) => rec.rollbackAttributes());\n            if (get(this, 'rowAdded')) get(this, 'rowAdded')(record);\n        },\n\n        async onFieldChange(field, value) {\n            set(await this.record, field, value);\n        },\n\n        addNew() {\n            this.createRecord();\n        },\n\n        async addSame() {\n            set(this, 'record', this.collector.copyRecord(this.record));\n        },\n\n        touchMove() {\n            // If the user touches this field and starts scrolling, we actually want to scroll and not snap to this field and open options\n            debounce(this, this.touchMove, 50);\n        },\n\n        touchEnd() {\n            // We have ended fiddling with this field,\n            // if we were moving then blur to not snap scroll back to this field because of mobile shenanigans\n            if (this.touchMoving) {\n                set(this, 'touchMoving', false);\n                this.element.querySelector('textarea').blur();\n            }\n        },\n\n        descriptionSpecialValidation(value) {\n            if (value.length > 256) {\n                this.record.errors.add(\n                    'description',\n                    [this.intl.t('validation.too_long_error')]\n                );\n            }\n        },\n    },\n\n    touchMove() {\n        set(this, 'touchMoving', true);\n    },\n\n    async setRecordDefaults() {\n        const defaults = await this._defaults;\n        const record = this.record;\n        // only apply defaults if record value is not set already\n        for (const def in defaults) {\n            if (!record[def]) record[def] = defaults[def];\n        }\n    },\n\n    async createRecord() {\n        const defaults = await this._defaults;\n        set(this, 'record', this.store.createRecord('worktime', defaults));\n    },\n\n    async getStarttime() {\n        let worktimes = this.store.peekAll('worktime');\n        // Try to query worktimes again with todays date if store is just empty\n        if (!worktimes.length)\n            worktimes = await this.store.query('worktime', { date: moment().format('YYYY-MM-DD') });\n        const filtered = worktimes\n            .filter((worktime) => moment(worktime.date).isSame(moment(), 'day'))\n            .sortBy('endtime');\n        const storeEndtime = !isEmpty(filtered) ? filtered.lastObject.endtime : null;\n        if (storeEndtime) return storeEndtime;\n\n        const starttime = await get(this, 'ttapi').request('get_starttime', { dataType: 'text' });\n        if (starttime) return starttime;\n        return '07:00';\n    },\n\n    sendWorktimeAdded(row) {\n        get(this, 'ttapi').request('/worktimeAdded', {\n            method: 'post',\n            data: {\n                username: get(row, 'user.username'),\n                userid: get(row, 'user.id'),\n                starttime: get(row, 'starttime'),\n                date: get(row, 'date'),\n            },\n        });\n    },\n\n    async alertMissingOrientation(row) {\n        // Alert for missing orientation or outdated pass\n        if (\n            this.collector.testNeedsOne('modules.orientations') &&\n            get(this, 'session.currentUser.userlevel') == '1' &&\n            !get(this, 'session.currentUser.no_orientation')\n        ) {\n            const project = get(row, 'project.id');\n            if (this.collector.testNeedsOne('products.rakentajanpaketti')) {\n                if (get(row, 'project.proj_type') === '2' || get(row, 'project.proj_type') === null)\n                    return;\n            }\n\n            const user = get(row, 'user.id');\n            const data = await get(this, 'store').query('orientation', {\n                ori_site: project,\n                ori_user: user,\n                limit: 1,\n            });\n\n            if (\n                this.collector.testNeedsOne('products.orientations_self') &&\n                get(data, 'meta.count') == 0\n            ) {\n                await get(this, 'dialogs').alert(\n                    get(this, 'intl').t('worktime.after_save.orientation.self_orientation'),\n                );\n                get(this, 'router').transitionTo(\n                    'orientations.own-orientation',\n                    get(row, 'project.id'),\n                );\n            } else if (get(data, 'meta.count') == 0) {\n                if (this.flags.test('disable-worktime-orientations-missing-warning')) {\n                    return;\n                }\n                \n                get(this, 'dialogs').alert(\n                    get(this, 'intl').t('worktime.after_save.orientation.not_found'),\n                );\n            } else if (\n                get(data, 'firstObject.pass_end') &&\n                moment().isAfter(moment(get(data, 'firstObject.pass_end')))\n            ) {\n                get(this, 'dialogs').alert(\n                    get(this, 'intl').t('worktime.after_save.orientation.outdated'),\n                );\n            }\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"GwGiE2ek\",\"block\":\"{\\\"symbols\\\":[\\\"form\\\",\\\"fields\\\",\\\"fieldcomp\\\",\\\"field\\\",\\\"form\\\",\\\"fields\\\",\\\"fieldcomp\\\",\\\"field\\\",\\\"form\\\",\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"Form\\\",\\\"&default\\\",\\\"@rowEdited\\\",\\\"@close\\\",\\\"@showSaved\\\",\\\"@sortFields\\\",\\\"@only\\\",\\\"@preserveRecordOnDestroy\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-worktime\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,15]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@rowAdded\\\",\\\"@rowEdited\\\",\\\"@close\\\",\\\"@addNew\\\",\\\"@addSame\\\",\\\"@showSaved\\\",\\\"@sortFields\\\",\\\"@only\\\",\\\"@preserveRecordOnDestroy\\\"],[[23,0,[\\\"form\\\"]],[23,0,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"onFieldChange\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null],[23,16,[]],[23,17,[]],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"addSame\\\"],null],[23,18,[]],[23,19,[]],[23,20,[]],[23,21,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[14,15,[[23,14,[]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[14]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@rowAdded\\\",\\\"@rowEdited\\\",\\\"@close\\\",\\\"@addNew\\\",\\\"@addSame\\\",\\\"@showSaved\\\",\\\"@sortFields\\\",\\\"@only\\\",\\\"@preserveRecordOnDestroy\\\"],[[23,0,[\\\"form\\\"]],[23,0,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"onFieldChange\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null],[23,16,[]],[23,17,[]],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"addSame\\\"],null],[23,18,[]],[23,19,[]],[23,20,[]],[23,21,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,10,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,11,[]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,13,[\\\"name\\\"]],\\\"starttime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-times\\\"],[8],[0,\\\"\\\\n                            \\\"],[6,[23,12,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,13,[\\\"name\\\"]],[23,13,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,13,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,10,[\\\"OnChange\\\"]],[23,13,[\\\"name\\\"]]],null],[23,13,[\\\"mandatory\\\"]],[23,13,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n                            \\\"],[6,[23,12,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[\\\"endtime\\\",[23,13,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],\\\"endtime\\\"],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,10,[\\\"OnChange\\\"]],\\\"endtime\\\"],null],[23,13,[\\\"mandatory\\\"]],[23,13,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,13,[\\\"name\\\"]],\\\"endtime\\\"],null]],null,{\\\"statements\\\":[],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,13,[\\\"name\\\"]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,12,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\",\\\"@forceType\\\"],[[23,13,[\\\"name\\\"]],[23,13,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,13,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"descriptionSpecialValidation\\\"],null],[23,13,[\\\"mandatory\\\"]],[23,13,[\\\"features\\\",\\\"disabled\\\"]],\\\"Textarea\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[23,13,[\\\"name\\\"]],\\\"km\\\"],null],[28,\\\"needs\\\",[\\\"products.timetracker_km_automatic\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"worktime.km\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[5,\\\"collector/fields/gps-auto-km\\\",[],[[\\\"@field\\\",\\\"@model\\\"],[[23,13,[]],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null]]]],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,12,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\",\\\"@forceType\\\"],[[23,13,[\\\"name\\\"]],[23,13,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,13,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,10,[\\\"OnChange\\\"]],[23,13,[\\\"name\\\"]]],null],[23,13,[\\\"mandatory\\\"]],[23,13,[\\\"features\\\",\\\"disabled\\\"]],[23,13,[\\\"forceType\\\"]]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,13,[\\\"name\\\"]],\\\"project\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"project-help\\\",[],[[\\\"@projectid\\\"],[[23,0,[\\\"record\\\",\\\"project\\\",\\\"id\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[13]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[11,12]}],[0,\\\"\\\\n            \\\"],[6,[23,10,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,10,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[10]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[25,15]],null,{\\\"statements\\\":[[4,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"rowAdded\\\",\\\"rowEdited\\\",\\\"close\\\",\\\"showSaved\\\",\\\"defaults\\\",\\\"disabled\\\",\\\"sortFields\\\",\\\"preserveRecordOnDestroy\\\",\\\"fieldChanged\\\",\\\"only\\\"],[[24,[\\\"form\\\"]],[24,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null],[24,[\\\"rowEdited\\\"]],[24,[\\\"close\\\"]],[24,[\\\"showSaved\\\"]],[24,[\\\"_defaults\\\"]],[24,[\\\"disableForm\\\"]],[24,[\\\"sortFields\\\"]],[24,[\\\"preserveRecordOnDestroy\\\"]],[24,[\\\"fieldChanged\\\"]],[24,[\\\"only\\\"]]]],{\\\"statements\\\":[[0,\\\"            \\\"],[14,15,[[23,9,[]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[9]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"worktime-form-time-fields\\\"],null]],null,{\\\"statements\\\":[[4,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"rowAdded\\\",\\\"rowEdited\\\",\\\"close\\\",\\\"showSaved\\\",\\\"defaults\\\",\\\"disabled\\\",\\\"sortFields\\\",\\\"preserveRecordOnDestroy\\\",\\\"fieldChanged\\\",\\\"only\\\"],[[24,[\\\"form\\\"]],[24,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null],[24,[\\\"rowEdited\\\"]],[24,[\\\"close\\\"]],[24,[\\\"showSaved\\\"]],[24,[\\\"_defaults\\\"]],[24,[\\\"disableForm\\\"]],[24,[\\\"sortFields\\\"]],[24,[\\\"preserveRecordOnDestroy\\\"]],[24,[\\\"fieldChanged\\\"]],[24,[\\\"only\\\"]]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"fields\\\"]],\\\"expected `form.fields` to be a contextual component but found a string. Did you mean `(component form.fields)`? ('tt4/pods/collector/form-add/forms/worktime/template.hbs' @ L133:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,6,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,8,[\\\"name\\\"]],\\\"starttime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-times\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[]],\\\"expected `fieldcomp` to be a contextual component but found a string. Did you mean `(component fieldcomp)`? ('tt4/pods/collector/form-add/forms/worktime/template.hbs' @ L137:C31) \\\"],null]],[[\\\"field\\\",\\\"model\\\"],[[23,8,[]],[24,[\\\"record\\\"]]]]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[]],\\\"expected `fieldcomp` to be a contextual component but found a string. Did you mean `(component fieldcomp)`? ('tt4/pods/collector/form-add/forms/worktime/template.hbs' @ L138:C31) \\\"],null]],[[\\\"field\\\",\\\"model\\\"],[[24,[\\\"endtimeField\\\"]],[24,[\\\"record\\\"]]]]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,8,[\\\"name\\\"]],\\\"endtime\\\"],null]],null,{\\\"statements\\\":[],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,8,[\\\"name\\\"]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"bootstrap-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\",\\\"@name\\\"],[[23,8,[\\\"translated_name\\\"]],[23,8,[\\\"features\\\",\\\"mandatory\\\"]],[23,0,[\\\"tooLongError\\\"]],[23,8,[\\\"name\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[5,\\\"textarea\\\",[],[[\\\"@class\\\",\\\"@value\\\",\\\"@touchMove\\\",\\\"@touchEnd\\\",\\\"@rows\\\",\\\"@input\\\"],[\\\"form-control add-fields\\\",[28,\\\"get\\\",[[24,[\\\"record\\\"]],[23,8,[\\\"name\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"touchMove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"touchEnd\\\"],null],\\\"3\\\",[28,\\\"action\\\",[[23,0,[]],\\\"textareaAction\\\"],null]]]],[0,\\\"                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[]],\\\"expected `fieldcomp` to be a contextual component but found a string. Did you mean `(component fieldcomp)`? ('tt4/pods/collector/form-add/forms/worktime/template.hbs' @ L154:C22) \\\"],null]],[[\\\"field\\\",\\\"model\\\"],[[23,8,[]],[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,8,[\\\"name\\\"]],\\\"project\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"project-help\\\",[],[[\\\"@projectid\\\"],[[24,[\\\"record\\\",\\\"project\\\",\\\"id\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null]],\\\"parameters\\\":[6,7]},null],[0,\\\"\\\\n            \\\"],[1,[23,5,[\\\"buttons\\\"]],false],[0,\\\"\\\\n            \\\"],[1,[23,5,[\\\"saved\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"rowAdded\\\",\\\"rowEdited\\\",\\\"close\\\",\\\"showSaved\\\",\\\"defaults\\\",\\\"disabled\\\",\\\"sortFields\\\",\\\"preserveRecordOnDestroy\\\",\\\"fieldChanged\\\",\\\"only\\\"],[[24,[\\\"form\\\"]],[24,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null],[24,[\\\"rowEdited\\\"]],[24,[\\\"close\\\"]],[24,[\\\"showSaved\\\"]],[24,[\\\"_defaults\\\"]],[24,[\\\"disableForm\\\"]],[24,[\\\"sortFields\\\"]],[24,[\\\"preserveRecordOnDestroy\\\"]],[24,[\\\"fieldChanged\\\"]],[24,[\\\"only\\\"]]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"fields\\\"]],\\\"expected `form.fields` to be a contextual component but found a string. Did you mean `(component form.fields)`? ('tt4/pods/collector/form-add/forms/worktime/template.hbs' @ L182:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"name\\\"]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"bootstrap-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\",\\\"@name\\\"],[[23,4,[\\\"translated_name\\\"]],[23,4,[\\\"features\\\",\\\"mandatory\\\"]],[23,0,[\\\"tooLongError\\\"]],[23,4,[\\\"name\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[5,\\\"textarea\\\",[],[[\\\"@class\\\",\\\"@value\\\",\\\"@touchMove\\\",\\\"@touchEnd\\\",\\\"@rows\\\",\\\"@input\\\"],[\\\"form-control add-fields\\\",[28,\\\"get\\\",[[24,[\\\"record\\\"]],[23,4,[\\\"name\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"touchMove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"touchEnd\\\"],null],\\\"3\\\",[28,\\\"action\\\",[[23,0,[]],\\\"descriptionSpecialValidation\\\"],null]]]],[0,\\\"                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[]],\\\"expected `fieldcomp` to be a contextual component but found a string. Did you mean `(component fieldcomp)`? ('tt4/pods/collector/form-add/forms/worktime/template.hbs' @ L196:C26) \\\"],null]],[[\\\"field\\\",\\\"model\\\"],[[23,4,[]],[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"name\\\"]],\\\"project\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"project-help\\\",[],[[\\\"@projectid\\\"],[[24,[\\\"record\\\",\\\"project\\\",\\\"id\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[2,3]},null],[0,\\\"            \\\"],[1,[23,1,[\\\"buttons\\\"]],false],[0,\\\"\\\\n            \\\"],[1,[23,1,[\\\"saved\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/worktime/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class CollectorFormAddFormsWorktimegroupChangeComponent extends Component {\n    @service flags;\n    @service store;\n    @service('collector-service') Collector;\n    @service intl;\n    @tracked currentPage = 1;\n    @tracked canEdit = true;\n\n    constructor() {\n        super(...arguments);\n        if (!this.args.record) {\n            this.args.record = this.store.createRecord('worktimegroupchange');\n        }\n        this.submenus = [\n            'worktimegroup-change-help',\n            'worktimegroup-change-add',\n            'worktimegroup-change-mapping',\n        ];\n        this.canEdit = this.checkIfCanEdit();\n    }\n\n    get styleNamespace() {\n        return podNames['collector/form-add/forms/worktimegroupchange'];\n    }\n\n    @action\n    onFieldChange(field, value) {\n        this.args.record[field] = value;\n    }\n\n    get currentPageComponent() {\n        return 'collector/form-add/forms/worktimegroupchange/pages/page' + this.currentPage;\n    }\n\n    // record can be edited only if the following conditions are met:\n    // - its enddate is today or in the future or it doesn't have an enddate\n    // - its startdate is today or in the future\n    checkIfCanEdit() {\n        if (this.args.record.enddate) {\n            if (moment(this.args.record.enddate).isSameOrBefore(moment().format('YYYY-MM-DD'))) {\n                return false;\n            }\n        }\n        if (moment(this.args.record.startdate).isSameOrBefore(moment().format('YYYY-MM-DD'))) {\n            return false;\n        }\n        return true;\n    }\n\n    // validate current page and return validation errors\n    // invalid if:\n    // - current page is 2 and:\n    //   - startdate is not set\n    //   - user is not set\n    //   - destination is not set\n    //   - startdate is after enddate (if enddate is set)\n    //   - enddate is before today (if enddate is set)\n    get validationErrors() {\n        let errors = [];\n        if (this.currentPage == 2) {\n            if (!this.args.record.startdate) {\n                errors.push(this.intl.t('validation.error.startdate_required'));\n            }\n            if (!this.args.record.user) {\n                errors.push(this.intl.t('validation.error.user_required'));\n            }\n            if (!this.args.record.destination) {\n                errors.push(this.intl.t('validation.error.destination_required'));\n            }\n            if (this.args.record.startdate && this.args.record.enddate) {\n                if (moment(this.args.record.startdate).isAfter(moment(this.args.record.enddate))) {\n                    errors.push(this.intl.t('validation.error.startdate_before_enddate'));\n                }\n                if (moment(this.args.record.enddate).isBefore(moment().format('YYYY-MM-DD'))) {\n                    errors.push(this.intl.t('validation.error.enddate_in_past'));\n                }\n            }\n        }\n        return errors;\n    }\n\n    // next button should be disabled if there are validation errors\n    get nextButtonDisabled() {\n        return this.validationErrors.length > 0;\n    }\n}\n","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { htmlSafe } from '@ember/string';\n\nexport default class CollectorFormAddFormsWorktimegroupChangeHelpComponent extends Component {\n    @service('collector-service') Collector;\n    @service ajax;\n\n    @tracked help;\n    @tracked loading = false;\n\n    constructor() {\n        super(...arguments);\n        this.help = this.getHelp();\n        Notification.requestPermission();\n    }\n\n    async getHelp() {\n        this.loading = true;\n        let helpText = '';\n        const key = 'help-worktimegroup-changes-' + moment.locale();\n        const fileUrl = `https://cloud-writer-prod.s3.amazonaws.com/${key}.html`;\n        try {\n            helpText = htmlSafe(await this.ajax.request(fileUrl, { dataType: 'text' }));\n        } catch (e) {\n            if (this.Collector.testNeeds(['development'])) {\n                helpText = `cannot find help for ${key}`;\n            }\n        }\n        this.loading = false;\n        return helpText;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"4jYJ2Fii\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[1,[28,\\\"await\\\",[[23,0,[\\\"help\\\"]]],null],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/worktimegroupchange/pages/page1/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"3A9QuayR\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],\\\"statements\\\":[[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\",\\\"@preserveRecordOnDestroy\\\"],[\\\"worktimegroupchange\\\",[23,5,[]],[28,\\\"action\\\",[[23,0,[]],[23,6,[]]],null],[28,\\\"action\\\",[[23,0,[]],[23,7,[]]],null],true]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,3,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,4,[\\\"name\\\"]],[23,4,[\\\"form\\\"]],[28,\\\"get\\\",[[23,5,[]],[23,4,[\\\"name\\\"]]],null],[23,5,[]],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,4,[\\\"name\\\"]]],null],[23,4,[\\\"mandatory\\\"]],[23,4,[\\\"features\\\",\\\"disabled\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/worktimegroupchange/pages/page2/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default class CollectorFormAddFormsWorktimegroupChangePage3Component extends Component {\n    @service store;\n\n    @tracked record;\n    @tracked loading = false;\n    @tracked shouldShowMappings = false;\n    @tracked value = null;\n    @tracked destinationWorktype;\n    @tracked selectedValue;\n\n    constructor() {\n        super(...arguments);\n        // if user is defined, we get worktypes from the user's worktimegroup, otherwise we get worktypes from the worktimegroup\n        this.worktypes = this.getWorktimegroupWorktypes();\n        this.destinationWorktypes = this.getDestinationWorktypes();\n        this.shouldShowMappings = this.getShouldShowMappings();\n    }\n\n    async getDestinationWorktypes() {\n        let worktypes = await this.store.query('worktypev2', {\n            worktimegroup: this.args.record.destination.id,\n        });\n        // map the worktypes to an array of objects with id and name\n        let mappedWorktypes = worktypes.map((worktype) => {\n            return { id: worktype.id, name: worktype.name };\n        });\n        return mappedWorktypes;\n    }\n\n    async getWorktimegroupWorktypes() {\n        this.loading = true;\n        let ret = null;\n        if (this.args.record.user) {\n            // first we need to get the user's worktimegroup\n            const user = await this.store.query('user', {\n                id: this.args.record.user.id,\n                sideload: true,\n            });\n            ret = await this.store.query('worktypev2', {\n                worktimegroup: get(user.firstObject, 'worktimegroup.id'),\n            });\n        } else {\n            ret = await this.store.query('worktypev2', {\n                worktimegroup: this.args.record.worktimegroup.id,\n            });\n        }\n        this.loading = false;\n        return ret;\n    }\n\n    // returns true if args.record.startdate is in the past\n    // returns false if args.record.user is null\n    // default returns true\n    getShouldShowMappings() {\n        if (\n            (this.args.record.startdate <= moment().format('YYYY-MM-DD') &&\n                !this.args.record.user) ||\n            (this.args.record.startdate <= moment().format('YYYY-MM-DD') && this.args.record.user)\n        ) {\n            return true;\n        }\n        return false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"yq2laYe3\",\"block\":\"{\\\"symbols\\\":[\\\"wtype\\\",\\\"opt\\\",\\\"@setDestinationWorktype\\\",\\\"@worktypeMappings\\\",\\\"@worktypeMatchError\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mapping-box-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"not\\\",[[23,0,[\\\"shouldShowMappings\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mapping-box-overlay\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mapping-box-overlay-textbox\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktimegroupchange.mapping_no_mappings_needed\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mapping-box-header pt-1 pb-1\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"worktimegroupchange.mapping_help_text\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[28,\\\"await\\\",[[23,0,[\\\"worktypes\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mapping-box-content pb-2\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mapping-box-name\\\"],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mapping-box-arrow\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"svg\\\",true],[10,\\\"width\\\",\\\"16\\\"],[10,\\\"height\\\",\\\"10\\\"],[10,\\\"viewBox\\\",\\\"0 0 16 10\\\"],[10,\\\"fill\\\",\\\"none\\\"],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M11 1L15 5M15 5L11 9M15 5H1\\\"],[10,\\\"stroke\\\",\\\"#0087E0\\\"],[10,\\\"stroke-width\\\",\\\"2\\\"],[10,\\\"stroke-linecap\\\",\\\"round\\\"],[10,\\\"stroke-linejoin\\\",\\\"round\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mapping-box-dropdown\\\"],[8],[0,\\\"\\\\n                \\\"],[5,\\\"power-select\\\",[],[[\\\"@options\\\",\\\"@onChange\\\",\\\"@searchEnabled\\\",\\\"@selected\\\"],[[23,0,[\\\"destinationWorktypes\\\"]],[28,\\\"action\\\",[[23,0,[]],[23,3,[]],[23,1,[]]],null],true,[28,\\\"get\\\",[[23,4,[]],[23,1,[\\\"id\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[23,2,[\\\"name\\\"]],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,5,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"validation.worktype_match_error_header\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"validation.worktype_match_error_text\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/worktimegroupchange/pages/page3/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"utr6fmod\",\"block\":\"{\\\"symbols\\\":[\\\"W\\\",\\\"error\\\",\\\"@close\\\",\\\"@worktypeMappings\\\",\\\"@setDestinationWorktype\\\",\\\"@record\\\",\\\"@saveMappingsAndForm\\\",\\\"@saving\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"canEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/wizard\\\",[],[[\\\"@pages\\\",\\\"@close\\\",\\\"@currentPage\\\",\\\"@pageChange\\\",\\\"@skipCloseOnDone\\\"],[3,[28,\\\"fn\\\",[[23,3,[]]],null],[23,0,[\\\"currentPage\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"currentPage\\\"]]],null]],null],true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"worktimegroupchange.header\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Steps\\\"]],[],[[\\\"@useSubmenus\\\",\\\"@pageNames\\\",\\\"@infoText\\\",\\\"@isDisabled\\\"],[true,[23,0,[\\\"submenus\\\"]],[23,0,[\\\"infoText\\\"]],[23,0,[\\\"isDisabled\\\"]]]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Content\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[23,0,[\\\"currentPageComponent\\\"]]],[[\\\"close\\\",\\\"record\\\",\\\"onFieldChange\\\",\\\"worktypeMatchError\\\",\\\"setDestinationWorktype\\\",\\\"worktypeMappings\\\"],[[23,3,[]],[23,6,[]],[23,0,[\\\"onFieldChange\\\"]],[23,0,[\\\"worktypeMatchError\\\"]],[23,5,[]],[23,4,[]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[23,0,[\\\"currentPage\\\"]],2],null],[23,0,[\\\"validationErrors\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"validation.error.check_values\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"validationErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"li\\\",true],[8],[1,[23,2,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Buttons\\\"]],[],[[\\\"@done\\\",\\\"@isDisabled\\\",\\\"@loading\\\"],[[28,\\\"fn\\\",[[23,7,[]]],null],[23,0,[\\\"nextButtonDisabled\\\"]],[23,8,[]]]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"validation.cannot_edit_worktimegroup_changes_title\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"validation.cannot_edit_worktimegroup_changes_text\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/forms/worktimegroupchange/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"ESxliPuS\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saved.title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,2,[[24,[\\\"fields\\\"]],[24,[\\\"record\\\"]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"translate-column\\\",null,[[\\\"form\\\",\\\"field\\\"],[[23,1,[\\\"form\\\"]],[23,1,[\\\"name\\\"]]]]],false],[0,\\\": \\\"],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[23,1,[\\\"form\\\"]],[23,1,[\\\"name\\\"]],[28,\\\"get\\\",[[24,[\\\"record\\\"]],[23,1,[\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-lg btn-block\\\"],[12,\\\"data-anchor\\\",\\\"saved-button-ok\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"close\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saved.what_next\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"saved-next-actions\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"saved-next-button\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"saved.add_new\\\"],null]],[12,\\\"data-anchor\\\",\\\"saved-button-addnew\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"addNew\\\"]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"saved-next-button\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"saved.add_same\\\"],null]],[12,\\\"data-anchor\\\",\\\"saved-button-addsame\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"addSame\\\"]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CopyRow\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"saved-next-button\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"saved.edit_new\\\"],null]],[12,\\\"data-anchor\\\",\\\"saved-button-edit\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"edit\\\"]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/saved/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"wLkkemO9\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"savedView\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,1]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"saved\\\"],[[28,\\\"component\\\",[\\\"collector/form-add/saved\\\"],[[\\\"record\\\",\\\"fields\\\",\\\"close\\\",\\\"edit\\\",\\\"addSame\\\",\\\"addNew\\\"],[[24,[\\\"record\\\"]],[24,[\\\"fields\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"savedView\\\"]]],null],false],null],[28,\\\"action\\\",[[23,0,[]],\\\"addSame\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"],null]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[\\\"collector/form-add/saved\\\"],[[\\\"record\\\",\\\"fields\\\",\\\"close\\\",\\\"edit\\\",\\\"addSame\\\",\\\"addNew\\\"],[[24,[\\\"record\\\"]],[24,[\\\"fields\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"savedView\\\"]]],null],false],null],[28,\\\"action\\\",[[23,0,[]],\\\"addSame\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"record\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[5,\\\"dump-dev\\\",[],[[\\\"@text\\\"],[\\\"form-add\\\"]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[25,1]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"fields\\\",\\\"template\\\"],[[28,\\\"component\\\",[\\\"collector/form-add/fields\\\"],[[\\\"record\\\",\\\"fields\\\",\\\"filters\\\",\\\"fieldChanged\\\"],[[24,[\\\"record\\\"]],[24,[\\\"fields\\\"]],[24,[\\\"filters\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"fieldChanged\\\"],null]]]],[28,\\\"component\\\",[\\\"collector/form-add/template\\\"],[[\\\"record\\\",\\\"fields\\\",\\\"filters\\\",\\\"fieldChanged\\\"],[[24,[\\\"record\\\"]],[24,[\\\"fields\\\"]],[24,[\\\"filters\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"fieldChanged\\\"],null]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[\\\"collector/form-add/fields\\\"],[[\\\"record\\\",\\\"fields\\\",\\\"filters\\\",\\\"fieldChanged\\\"],[[24,[\\\"record\\\"]],[24,[\\\"fields\\\"]],[24,[\\\"filters\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"fieldChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[\\\"collector/form-add/error\\\"],[[\\\"error\\\"],[[24,[\\\"error\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[25,1]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"buttons\\\"],[[28,\\\"component\\\",[\\\"collector/form-add/buttons\\\"],[[\\\"form\\\",\\\"disabled\\\",\\\"save\\\",\\\"cancel\\\",\\\"saving\\\"],[[24,[\\\"form\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"],null],[24,[\\\"saving\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[\\\"collector/form-add/buttons\\\"],[[\\\"form\\\",\\\"disabled\\\",\\\"save\\\",\\\"cancel\\\",\\\"saving\\\"],[[24,[\\\"form\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"],null],[24,[\\\"saving\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    fieldsByName: computed('fields', function () {\n        const fieldsByName = {};\n        get(this, 'fields').forEach((field) => (fieldsByName[get(field, 'name')] = field));\n        return fieldsByName;\n    }),\n\n    template: computed('record.user', function () {\n        if (get(this, 'record.user.worktimegroup.id') === '238996')\n            return [\n                {\n                    col1: {\n                        header: 'Perusjutut',\n                        fields: ['date', 'user', 'project'],\n                    },\n                    col2: {\n                        header: 'Työaika',\n                        fields: ['starttime', 'endtime'],\n                    },\n                },\n            ];\n        else\n            return [\n                {\n                    col1: {\n                        header: 'Perusjutut',\n                        help: 'paljon kaikkee leipä tekstiä. paljon kaikkee leipä tekstiä. paljon kaikkee leipä tekstiä.',\n                        fields: ['date', 'user', 'project'],\n                    },\n                    col2: {\n                        header: 'Työaika',\n                        fields: ['starttime', 'endtime'],\n                    },\n                },\n                {\n                    col1: {\n                        header: 'Korvaukset',\n                        closed: true,\n                        fields: ['task'],\n                    },\n                    col2: {\n                        header: 'Lisätiedot',\n                        closed: true,\n                        fields: ['multitask', 'description'],\n                    },\n                },\n            ];\n    }),\n});\n","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\n\nexport default Component.extend({\n    show: true,\n    showHelp: false,\n\n    didReceiveAttrs() {\n        if (get(this, 'col.closed')) set(this, 'show', false);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"Z0kDB/8d\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"col\\\",\\\"closed\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"subheader\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"show\\\"]]],null],[28,\\\"not\\\",[[24,[\\\"show\\\"]]],null]]],[8],[1,[24,[\\\"col\\\",\\\"header\\\"]],false],[0,\\\" \\\\n        \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"glyphicon \\\",[28,\\\"if\\\",[[24,[\\\"show\\\"]],\\\"glyphicon-chevron-up\\\",\\\"glyphicon-chevron-down\\\"],null]]]],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\" \\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"subheader\\\"],[8],[1,[24,[\\\"col\\\",\\\"header\\\"]],false],[9],[0,\\\" \\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"col\\\",\\\"help\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Info subheader pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showHelp\\\"]]],null],[28,\\\"not\\\",[[24,[\\\"showHelp\\\"]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showHelp\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"blockquote\\\",true],[10,\\\"class\\\",\\\"help\\\"],[8],[1,[24,[\\\"col\\\",\\\"help\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"fields\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"col\\\",\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"component\\\",[\\\"collector/field-container\\\"],[[\\\"model\\\",\\\"field\\\",\\\"change\\\"],[[24,[\\\"record\\\"]],[28,\\\"get\\\",[[24,[\\\"fieldsByName\\\"]],[23,1,[]]],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"fieldChanged\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"  \\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/template/subform/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"JDoQqlRf\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"template\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"col1\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/form-add/template/subform\\\",null,[[\\\"col\\\",\\\"fieldsByName\\\",\\\"record\\\",\\\"fieldChanged\\\"],[[23,1,[\\\"col1\\\"]],[24,[\\\"fieldsByName\\\"]],[24,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"fieldChanged\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/form-add/template/subform\\\",null,[[\\\"col\\\",\\\"fieldsByName\\\",\\\"record\\\",\\\"fieldChanged\\\"],[[23,1,[\\\"col2\\\"]],[24,[\\\"fieldsByName\\\"]],[24,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"fieldChanged\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/form-add/template/subform\\\",null,[[\\\"col\\\",\\\"fieldsByName\\\",\\\"record\\\",\\\"fieldChanged\\\"],[[23,1,[]],[24,[\\\"fieldsByName\\\"]],[24,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"fieldChanged\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-add/template/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    dialogs: service(),\n    intl: service(),\n    evented: service(),\n\n    showActionList: computed('record', 'showHistory', function () {\n        if (get(this, 'showHistory')) return false;\n        if (get(this, 'record') && !get(this, 'record.isNew')) return true;\n        return false;\n    }),\n\n    actions: {\n        async remove() {\n            if (!(await this.dialogs.confirm(this.intl.t('general.remove_row')))) return;\n            set(this, 'loading', true);\n            set(this, 'error', null);\n            try {\n                await this.record.destroyRecord();\n            } catch (reason) {\n                set(this, 'loading', false);\n                set(this, 'error', reason);\n                return;\n            }\n            this.evented.storeEvent('delete', this.form, this.record);\n\n            if (this.rowEdited) this.rowEdited();\n            if (this.close) this.close();\n        },\n\n        closeClicked() {\n            if (this.showHistory) set(this, 'showHistory', false);\n            else if (this.close) this.close();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"dOEpCRbT\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\",\\\"@actionList\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeClicked\\\"],null],[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"menu.add_\\\",[24,[\\\"form\\\"]]],null]],null],[28,\\\"if\\\",[[23,0,[\\\"showActionList\\\"]],[28,\\\"array\\\",[[28,\\\"hash\\\",null,[[\\\"name\\\",\\\"action\\\"],[[28,\\\"t\\\",[\\\"rowhistory.title\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showHistory\\\"]]],null],true],null]]]],[28,\\\"hash\\\",null,[[\\\"name\\\",\\\"action\\\"],[[28,\\\"t\\\",[\\\"general.delete\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"remove\\\"],null]]]]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showHistory\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\",\\\"hideTitle\\\"],[[28,\\\"readonly\\\",[[24,[\\\"record\\\",\\\"id\\\"]]],null],[24,[\\\"form\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[22,\\\"error\\\"],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/form-add/forms/auto\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"defaults\\\",\\\"showSaved\\\",\\\"rowAdded\\\",\\\"rowEdited\\\",\\\"close\\\"],[[24,[\\\"form\\\"]],[24,[\\\"record\\\"]],[24,[\\\"defaults\\\"]],[24,[\\\"showSaved\\\"]],[24,[\\\"rowAdded\\\"]],[24,[\\\"rowEdited\\\"]],[24,[\\\"close\\\"]]]]],false],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-modal/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\n/**\n *\n *\n * parameters:\n *      rowActions: what actions to show separated by comma. default: edit,remove\n *\n */\nexport default Component.extend({\n    collector: service('collector-service'),\n\n    showActions: 'edit,history,remove',\n\n    showEdit: computed('showActions', function () {\n        if (!get(this, 'collector').testNeeds([get(this, 'form') + '@edit'])) return false;\n        if (!get(this, 'showActions')) return false;\n        if (!this.row.isEditable) return false;\n        return get(this, 'showActions').split(',').includes('edit');\n    }),\n\n    showHistory: computed('showActions', function () {\n        if (!get(this, 'showActions')) return false;\n        return get(this, 'showActions').split(',').includes('history');\n    }),\n\n    showRemove: computed('showActions', function () {\n        if (!get(this, 'collector').testNeeds([get(this, 'form') + '@remove'])) return false;\n        if (!get(this, 'showActions')) return false;\n        if (!this.row.isEditable) return false;\n        return get(this, 'showActions').split(',').includes('remove');\n    }),\n\n    showCopy: computed('showActions', function () {\n        if (\n            !this.collector.testNeeds([\n                '!' + get(this, 'form') + '@errors',\n                get(this, 'form') + '@add',\n            ])\n        )\n            return false;\n        return true;\n    }),\n\n    showLock: computed('row', function () {\n        if (get(this.row, 'row_info.privilege_openlock') === false) return false;\n        return get(this.row, 'row_info.status') === 'locked';\n    }),\n\n    rowIsRemoved: computed('row', function () {\n        return get(this.row, 'row_info.status') === 'removed';\n    }),\n\n    showRestore: computed('form', function () {\n        return get(this, 'collector').testNeeds([get(this, 'form') + '@remove']);\n    }),\n\n    actions: {\n        clicked(action) {\n            get(this, 'actionClicked')(action, get(this, 'row'));\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"tZameMl0\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"inlineEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[4,\\\"if\\\",[[24,[\\\"showCopy\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-CopyRow\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clicked\\\",\\\"copy\\\"]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showLock\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[4,\\\"if\\\",[[24,[\\\"showHistory\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Search\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.customer.history\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"clicked\\\",\\\"history\\\"]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Lock\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.unlock_selected_rows\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"clicked\\\",\\\"unlock\\\"]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"rowIsRemoved\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[4,\\\"if\\\",[[24,[\\\"showRestore\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-ReuseFilled\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.restore_rows\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"clicked\\\",\\\"restore\\\"]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[4,\\\"if\\\",[[24,[\\\"showHistory\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Search\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.customer.history\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"clicked\\\",\\\"history\\\"]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[4,\\\"if\\\",[[24,[\\\"showEdit\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"general.edit\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"clicked\\\",\\\"edit\\\"]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[4,\\\"if\\\",[[24,[\\\"showHistory\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Search\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.customer.history\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"clicked\\\",\\\"history\\\"]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[4,\\\"if\\\",[[24,[\\\"showRemove\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Delete\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.delete_rows\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"clicked\\\",\\\"remove\\\"]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[14,1,[[24,[\\\"row\\\"]]]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/action-bar/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n    actions: {\n        changeStatus(status) {\n            this.changeStatus(status);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"poo111tX\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more push-left\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-report-action\\\"],null]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.approve_rows\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\",\\\"approved\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.approve_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/approve/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed, set } from '@ember/object';\n\nexport default Component.extend({\n    localstorage: service(),\n    analytics: service(),\n\n    tagName: '',\n\n    hiddenColumns: computed('columns', 'columns.[]', function () {\n        return this.allColumns.filter((column) => !this.columns.includes(column));\n    }),\n\n    actions: {\n        columnDropped(target, dropped) {\n            if (target == dropped) return;\n            this.moveElementInArray(this.columns, this.columns[dropped], target - dropped);\n            this.columnsChanged(this.columns);\n            this.saveToLS(this.columns);\n        },\n\n        moveCol(col, dir) {\n            this.moveElementInArray(this.columns, col, dir);\n            this.columnsChanged(this.columns);\n            this.saveToLS(this.columns);\n        },\n        hideColumn(col) {\n            this.analytics.trackEvent({\n                category: this.form + ' report hide column',\n                action: col,\n                label: 'Form-report',\n            });\n            this.columns.removeObject(col);\n            this.columnsChanged(this.columns);\n            this.saveToLS(this.columns);\n        },\n        showColumn(col) {\n            this.analytics.trackEvent({\n                category: this.form + ' report show column',\n                action: col,\n                label: 'Form-report',\n            });\n            this.columns.pushObject(col);\n            this.columnsChanged(this.columns);\n            this.saveToLS(this.columns);\n        },\n\n        setRowsPerPage(RowsPerPage) {\n            this.setRowsPerPage(RowsPerPage);\n        },\n\n        deactivateTemplate() {\n            const visibleList = this.localstorage.getItem(this.form + '_defaultColumns');\n            const columns = this.allColumns.filter(\n                (column) => !visibleList || visibleList.includes(column.external_type),\n            );\n            this.columnsChanged(columns);\n            set(this, 'currentTemplate', null);\n        },\n\n        activateTemplate(template) {\n            const columns = template.columns.split(',').reduce((accumulator, column) => {\n                let columnObject = this.allColumns.find(\n                    (object) => object.external_type === column,\n                );\n                if (columnObject) accumulator.push(columnObject);\n                return accumulator;\n            }, []);\n\n            this.columnsChanged(columns);\n        },\n    },\n\n    moveElementInArray(obj, col, offset) {\n        let index = obj.indexOf(col);\n        obj.removeObject(col);\n        let newIndex = index + offset;\n        newIndex = newIndex > obj.length ? 0 : newIndex < 0 ? obj.length : newIndex;\n        obj.insertAt(newIndex, col);\n    },\n\n    saveToLS(columns) {\n        this.localstorage.setItem(\n            this.form + '_defaultColumns',\n            columns.map((column) => column.external_type).filter((item) => item),\n        );\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"2LXd4yqJ\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"col\\\",\\\"index\\\",\\\"col\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more display-menu\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-report-action\\\"],null]],[8],[0,\\\"\\\\n    \\\"],[5,\\\"basic-dropdown\\\",[],[[\\\"@verticalPosition\\\",\\\"@horizontalPosition\\\"],[\\\"below\\\",\\\"right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Trigger\\\"]],[[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.columnSort\\\"],null]]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-DragReorder\\\"],[8],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Content\\\"]],[[12,\\\"class\\\",\\\"column-selector-box\\\"]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"column-selector-dropdown side-by-side\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.limit\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-group\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"rowsPerPage\\\"]],25],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",25]],[8],[1,25,false],[9],[0,\\\"|\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"rowsPerPage\\\"]],50],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",50]],[8],[1,50,false],[9],[0,\\\"|\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"rowsPerPage\\\"]],100],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",100]],[8],[1,100,false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"report-template-selector\\\",null,[[\\\"form\\\",\\\"columns\\\",\\\"settings\\\",\\\"currentTemplate\\\",\\\"deactivateTemplate\\\",\\\"activateTemplate\\\"],[[24,[\\\"form\\\"]],[24,[\\\"columns\\\"]],[28,\\\"hash\\\",null,[[\\\"limit\\\",\\\"sortByColumn\\\"],[[24,[\\\"rowsPerPage\\\"]],[24,[\\\"sort\\\"]]]]],[24,[\\\"currentTemplate\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"deactivateTemplate\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"activateTemplate\\\"],null]]]],false],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"column-selector-dropdown side-by-side\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.hidden\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"hiddenColumns\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[12,\\\"draggable\\\",\\\"false\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.columns.click_to_show\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"showColumn\\\",[23,4,[]]]],[8],[1,[23,4,[\\\"translated_name\\\"]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"column-selector-dropdown side-by-side\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.shown\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[\\\"translated_name\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\",\\\"tagName\\\",\\\"data-field\\\",\\\"class\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"columnDropped\\\",[23,3,[]]],null],\\\"li\\\",[23,2,[]],\\\"column-selector-dropzone\\\"]],{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[28,\\\"concat\\\",[\\\"\\\",[23,3,[]]],null],\\\"column-selector-draggable-item\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"a\\\",false],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.columns.click_to_hide\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"hideColumn\\\",[23,2,[]]]],[8],[1,[23,2,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"sort-link pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moveCol\\\",[23,2,[]],-1]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Up2Filled\\\"],[8],[9],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"sort-link pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moveCol\\\",[23,2,[]],1]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Down2Filled\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2,3]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/column-selector/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport collector from 'tt4/classes/collector';\n\nexport default Component.extend({\n    disabledClass: computed('selected', function () {\n        if (!get(this, 'selected')) return 'disabled';\n        return get(this, 'selected').length > 0 ? '' : 'disabled';\n    }),\n\n    canChangeStatus: computed('form', function () {\n        let field = collector.getFormObject(this.form + '.status');\n\n        if (field && !field.features.readonly) {\n            return true;\n        }\n\n        return false;\n    }),\n\n    actions: {\n        toggleInlineEdit() {\n            this.toggleInlineEdit();\n        },\n\n        exportPdf() {\n            this.exportPdf();\n        },\n\n        exportCsv() {\n            this.exportCsv();\n        },\n\n        openExportModal(type) {\n            this.openExportModal(type);\n        },\n\n        saveRows() {\n            this.saveRows();\n        },\n\n        showOrHideRemoved() {\n            this.showOrHideRemoved();\n        },\n\n        setRowsPerPage(RowsPerPage) {\n            this.setRowsPerPage(RowsPerPage);\n        },\n\n        deactivateTemplate() {\n            this.deactivateTemplate();\n        },\n\n        activateTemplate(template) {\n            this.activateTemplate(template);\n        },\n\n        refreshReport() {\n            this.refreshReport();\n        },\n\n        changeStatus(status) {\n            this.changeStatus(status);\n        },\n\n        handleLock(action) {\n            this.handleLock(action);\n        },\n\n        handleRemove(action) {\n            this.handleRemove(action);\n        },\n    },\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({\n    classNames: ['btn-group', 'report-more'],\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'li',\n});\n","export default Ember.HTMLBars.template({\"id\":\"F8uuhyT5\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"exportCsv\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_csv\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/export-more/csv/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'li',\n});\n","export default Ember.HTMLBars.template({\"id\":\"IvjupRyk\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]],\\\"email\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.send_email\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/export-more/email-approval/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'li',\n});\n","export default Ember.HTMLBars.template({\"id\":\"sfe5ENAV\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]],\\\"export_excel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_excel\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/export-more/excel/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'li',\n});\n","export default Ember.HTMLBars.template({\"id\":\"2/Rd/srw\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]],\\\"export_pdf_full\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf_full\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/export-more/pdf-full/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'li',\n});\n","export default Ember.HTMLBars.template({\"id\":\"+WsSxDzs\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]],\\\"export_pdf\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/export-more/pdf/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'li',\n    actions: {\n        action() {\n            this.action();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"+gWwvUoR\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[12,\\\"disabled\\\",[22,\\\"disabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"action\\\"]],[8],[14,1],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/export-more/row/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n});\n","export default Ember.HTMLBars.template({\"id\":\"haoiz0tV\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showRemoved\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"showOrHideRemoved\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.show_normal\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"showOrHideRemoved\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.show_removed\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/export-more/show-removed/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"q74DeT4W\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[5,\\\"bs-dropdown\\\",[[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-report-action\\\"],null]]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"pdf\\\",\\\"pdfFull\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/export-more/pdf\\\"],[[\\\"openExportModal\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]]],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/export-more/pdf-full\\\"],[[\\\"openExportModal\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]]],null]]]]]]]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"isMobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"csv\\\",\\\"excel\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/export-more/csv\\\"],[[\\\"exportCsv\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"exportCsv\\\"]]],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/export-more/excel\\\"],[[\\\"openExportModal\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]]],null]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"removedStatus\\\",\\\"emailApproval\\\",\\\"row\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/export-more/show-removed\\\"],[[\\\"showOrHideRemoved\\\",\\\"showRemoved\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"showOrHideRemoved\\\"]]],null],[24,[\\\"showRemoved\\\"]]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/export-more/email-approval\\\"],[[\\\"openExportModal\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]]],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/export-more/row\\\"],null]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/form-report/actions/export-more/pdf\\\",null,[[\\\"openExportModal\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]]],null]]]],false],[0,\\\"\\\\n\\\\n            \\\"],[1,[28,\\\"collector/form-report/actions/export-more/pdf-full\\\",null,[[\\\"openExportModal\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"isMobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/form-report/actions/export-more/csv\\\",null,[[\\\"exportCsv\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"exportCsv\\\"]]],null]]]],false],[0,\\\"\\\\n\\\\n                \\\"],[1,[28,\\\"collector/form-report/actions/export-more/excel\\\",null,[[\\\"openExportModal\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"collector/form-report/actions/export-more/show-removed\\\",null,[[\\\"showOrHideRemoved\\\",\\\"showRemoved\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"showOrHideRemoved\\\"]]],null],[24,[\\\"showRemoved\\\"]]]]],false],[0,\\\"\\\\n\\\\n            \\\"],[1,[28,\\\"collector/form-report/actions/export-more/email-approval\\\",null,[[\\\"openExportModal\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/export-more/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n});\n","export default Ember.HTMLBars.template({\"id\":\"R106e1XB\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-report-action\\\"],null]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null]],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"exportPdf\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PDF-2Filled\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/export-pdf/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n});\n","export default Ember.HTMLBars.template({\"id\":\"wux/QS3D\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-report-action\\\"],null]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.gps\\\"],null]],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"openGpsMap\\\"]]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Globe\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/gps-location-map/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n    actions: {\n        toggleInlineEdit() {\n            this.toggleInlineEdit();\n        },\n\n        saveRows() {\n            this.saveRows();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"8dLZlZjm\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"inlineEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more push-left\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-report-action\\\"],null]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveRows\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general_report.inline_edit.save\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more hidden-xs hidden-sm\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-report-action\\\"],null]],[8],[0,\\\"\\\\n    \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@theme\\\",\\\"@onLabel\\\",\\\"@offLabel\\\",\\\"@showLabels\\\",\\\"@value\\\",\\\"@onToggle\\\"],[\\\"light\\\",\\\"\\\",[28,\\\"t\\\",[\\\"general_report.inline_edit.toggle\\\"],null],true,[22,\\\"inlineEdit\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"toggleInlineEdit\\\"],null]]]],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/inline-edit/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    actions: {\n        changeStatus(status) {\n            this.changeStatus(status);\n        },\n\n        handleLock(action) {\n            this.handleLock(action);\n        },\n\n        handleRemove(action) {\n            this.handleRemove(action);\n        },\n    },\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n    actions: {\n        handleLock(action) {\n            this.handleLock(action);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"FqUtVYDY\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[22,\\\"disabledClass\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\",\\\"unlock\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.unlock_selected_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[22,\\\"disabledClass\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\",\\\"lock\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.lock_selected_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/more/lock/template.hbs\"}});","import Component from '@ember/component';\nimport { isEmpty } from '@ember/utils';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    router: service(),\n    tagName: '',\n    actions: {\n        transitionToMassedit() {\n            if (isEmpty(this.selected)) return;\n            let mappedIds = this.selected.map((row) => row.id);\n            this.router.transitionTo('massedit', this.form, mappedIds.join(','));\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"HVQDnKG2\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[22,\\\"disabledClass\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"openMassedit\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.massedit\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/more/massedit/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n});\n","export default Ember.HTMLBars.template({\"id\":\"vrCxD+Vj\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"qr-code-generator\\\",null,[[\\\"style\\\",\\\"disabledClass\\\",\\\"rows\\\",\\\"form\\\"],[\\\"li\\\",[23,0,[\\\"disabledClass\\\"]],[23,0,[\\\"selected\\\"]],[23,0,[\\\"form\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/more/qr-code/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n    actions: {\n        handleRemove(action) {\n            this.handleRemove(action);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"XeNnhaKM\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRemoved\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[22,\\\"disabledClass\\\"]]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\",\\\"restore\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.restore_rows\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[22,\\\"disabledClass\\\"]]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\",\\\"remove\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.delete_rows\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/more/remove/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n    actions: {\n        action() {\n            this.action();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"uoK+lOmt\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[22,\\\"disabledClass\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[12,\\\"disabled\\\",[22,\\\"disabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"action\\\"]],[8],[14,1],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/more/row/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n    actions: {\n        changeStatus(status) {\n            this.changeStatus(status);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"5L9a1wgt\",\"block\":\"{\\\"symbols\\\":[\\\"type\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"statusTypes\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[22,\\\"disabledClass\\\"]]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\",[23,1,[\\\"id\\\"]]]],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"li\\\",true],[10,\\\"role\\\",\\\"presentation\\\"],[10,\\\"class\\\",\\\"divider\\\"],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/more/status/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"QMqodB6W\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"&default\\\"],\\\"statements\\\":[[5,\\\"bs-dropdown\\\",[[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-report-action\\\"],null]]],[[\\\"@class\\\"],[\\\"report-more push-left\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"  \\\"],[1,[28,\\\"t\\\",[\\\"report.more_button\\\"],null],false],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabledClass\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"report-notchecked\\\"],[8],[7,\\\"a\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.nothing_checked\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"canChangeStatus\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"status\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/more/status\\\"],[[\\\"statusTypes\\\",\\\"changeStatus\\\",\\\"disabledClass\\\"],[[24,[\\\"statusTypes\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\"],null],[24,[\\\"disabledClass\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/form-report/actions/more/status\\\",null,[[\\\"statusTypes\\\",\\\"changeStatus\\\",\\\"disabledClass\\\"],[[24,[\\\"statusTypes\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\"],null],[24,[\\\"disabledClass\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"lock\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/more/lock\\\"],[[\\\"handleLock\\\",\\\"disabledClass\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\"],null],[24,[\\\"disabledClass\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/form-report/actions/more/lock\\\",null,[[\\\"handleLock\\\",\\\"disabledClass\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\"],null],[24,[\\\"disabledClass\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=3,4,5,6\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"massedit\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/more/massedit\\\"],[[\\\"selected\\\",\\\"form\\\",\\\"disabledClass\\\",\\\"openMassedit\\\"],[[23,0,[\\\"selected\\\"]],[23,0,[\\\"form\\\"]],[24,[\\\"disabledClass\\\"]],[24,[\\\"openMassedit\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/form-report/actions/more/massedit\\\",null,[[\\\"selected\\\",\\\"form\\\",\\\"disabledClass\\\",\\\"openMassedit\\\"],[[23,0,[\\\"selected\\\"]],[23,0,[\\\"form\\\"]],[24,[\\\"disabledClass\\\"]],[24,[\\\"openMassedit\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"@remove\\\"],null]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"remove\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/more/remove\\\"],[[\\\"handleRemove\\\",\\\"showRemoved\\\",\\\"disabledClass\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\"],null],[24,[\\\"showRemoved\\\"]],[24,[\\\"disabledClass\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"collector/form-report/actions/more/remove\\\",null,[[\\\"handleRemove\\\",\\\"showRemoved\\\",\\\"disabledClass\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\"],null],[24,[\\\"showRemoved\\\"]],[24,[\\\"disabledClass\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"qrCode\\\",\\\"row\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/more/qr-code\\\"],[[\\\"disabledClass\\\",\\\"selected\\\",\\\"form\\\"],[[24,[\\\"disabledClass\\\"]],[23,0,[\\\"selected\\\"]],[23,0,[\\\"form\\\"]]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/more/row\\\"],[[\\\"disabledClass\\\"],[[24,[\\\"disabledClass\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/form-report/actions/more/qr-code\\\",null,[[\\\"disabledClass\\\",\\\"selected\\\",\\\"form\\\"],[[24,[\\\"disabledClass\\\"]],[23,0,[\\\"selected\\\"]],[23,0,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/more/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n    actions: {\n        refreshReport() {\n            this.refreshReport();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"jix+JG/X\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-report-action\\\"],null]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.refreshReport\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"refreshReport\\\"]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-refresh\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/refresh/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"cTLoDTOo\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"selected\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more push-left\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"strong\\\",true],[8],[1,[23,0,[\\\"selected\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.items_checked\\\"],null],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[25,1]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"selected\\\",\\\"length\\\"]],[24,[\\\"canChangeStatus\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"approve\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/approve\\\"],[[\\\"changeStatus\\\",\\\"name\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\"],null],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-approve\\\"],null]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"more\\\",\\\"inlineEdit\\\",\\\"columnSelector\\\",\\\"pdfExport\\\",\\\"exportMore\\\",\\\"refresh\\\",\\\"gps\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions/more\\\"],[[\\\"disabledClass\\\",\\\"changeStatus\\\",\\\"handleLock\\\",\\\"handleRemove\\\",\\\"showRemoved\\\",\\\"statusTypes\\\",\\\"canChangeStatus\\\",\\\"form\\\",\\\"selected\\\",\\\"openMassedit\\\",\\\"name\\\"],[[24,[\\\"disabledClass\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\"],null],[24,[\\\"showRemoved\\\"]],[24,[\\\"statusTypes\\\"]],[24,[\\\"canChangeStatus\\\"]],[24,[\\\"form\\\"]],[23,0,[\\\"selected\\\"]],[24,[\\\"openMassedit\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-more\\\"],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/inline-edit\\\"],[[\\\"inlineEdit\\\",\\\"toggleInlineEdit\\\",\\\"saveRows\\\",\\\"name\\\"],[[24,[\\\"inlineEdit\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleInlineEdit\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"saveRows\\\"],null],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-inline-edit\\\"],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/column-selector\\\"],[[\\\"form\\\",\\\"columns\\\",\\\"allColumns\\\",\\\"rowsPerPage\\\",\\\"columnsChanged\\\",\\\"setRowsPerPage\\\",\\\"name\\\"],[[24,[\\\"form\\\"]],[24,[\\\"columns\\\"]],[24,[\\\"allColumns\\\"]],[24,[\\\"rowsPerPage\\\"]],[24,[\\\"columnsChanged\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\"],null],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-column-selector\\\"],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/export-pdf\\\"],[[\\\"exportPdf\\\",\\\"showLoader\\\",\\\"name\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"exportPdf\\\"],null],[24,[\\\"showLoader\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-export-pdf\\\"],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/export-more\\\"],[[\\\"exportCsv\\\",\\\"openExportModal\\\",\\\"showOrHideRemoved\\\",\\\"showRemoved\\\",\\\"showLoader\\\",\\\"name\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"exportCsv\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openExportModal\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showOrHideRemoved\\\"],null],[24,[\\\"showRemoved\\\"]],[24,[\\\"showLoader\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-export-more\\\"],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/refresh\\\"],[[\\\"refreshReport\\\",\\\"name\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"refreshReport\\\"],null],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-refresh\\\"],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/actions/gps-location-map\\\"],[[\\\"openGpsMap\\\",\\\"name\\\"],[[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openGpsMap\\\"]]],null],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-gps\\\"],null]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"selected\\\",\\\"length\\\"]],[24,[\\\"canChangeStatus\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/form-report/actions/approve\\\",null,[[\\\"changeStatus\\\",\\\"name\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\"],null],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-approve\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/form-report/actions/more\\\",null,[[\\\"disabledClass\\\",\\\"changeStatus\\\",\\\"handleLock\\\",\\\"handleRemove\\\",\\\"showRemoved\\\",\\\"statusTypes\\\",\\\"canChangeStatus\\\",\\\"form\\\",\\\"selected\\\",\\\"openMassedit\\\",\\\"name\\\"],[[24,[\\\"disabledClass\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\"],null],[24,[\\\"showRemoved\\\"]],[24,[\\\"statusTypes\\\"]],[24,[\\\"canChangeStatus\\\"]],[24,[\\\"form\\\"]],[23,0,[\\\"selected\\\"]],[24,[\\\"openMassedit\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-more\\\"],null]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"collector/form-report/actions/inline-edit\\\",null,[[\\\"inlineEdit\\\",\\\"toggleInlineEdit\\\",\\\"saveRows\\\",\\\"name\\\"],[[24,[\\\"inlineEdit\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleInlineEdit\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"saveRows\\\"],null],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-inline-edit\\\"],null]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"collector/form-report/actions/column-selector\\\",null,[[\\\"form\\\",\\\"columns\\\",\\\"allColumns\\\",\\\"rowsPerPage\\\",\\\"columnsChanged\\\",\\\"setRowsPerPage\\\",\\\"name\\\"],[[24,[\\\"form\\\"]],[24,[\\\"columns\\\"]],[24,[\\\"allColumns\\\"]],[24,[\\\"rowsPerPage\\\"]],[24,[\\\"columnsChanged\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\"],null],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-column-selector\\\"],null]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"collector/form-report/actions/export-pdf\\\",null,[[\\\"exportPdf\\\",\\\"showLoader\\\",\\\"name\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"exportPdf\\\"],null],[24,[\\\"showLoader\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-export-pdf\\\"],null]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"collector/form-report/actions/export-more\\\",null,[[\\\"exportCsv\\\",\\\"showOrHideRemoved\\\",\\\"openExportModal\\\",\\\"showRemoved\\\",\\\"showLoader\\\",\\\"name\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"exportCsv\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showOrHideRemoved\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openExportModal\\\"],null],[24,[\\\"showRemoved\\\"]],[24,[\\\"showLoader\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-export-more\\\"],null]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"collector/form-report/actions/refresh\\\",null,[[\\\"refreshReport\\\",\\\"name\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"refreshReport\\\"],null],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-refresh\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/actions/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"Z8lhZbt0\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"add-plus-button pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"onClick\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"xmlns:xlink\\\",\\\"http://www.w3.org/1999/xlink\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"viewBox\\\",\\\"6 6 63 63\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"defs\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"filter\\\",true],[10,\\\"id\\\",\\\"Ellipse_27\\\"],[10,\\\"x\\\",\\\"0\\\"],[10,\\\"y\\\",\\\"0\\\"],[10,\\\"width\\\",\\\"75\\\"],[10,\\\"height\\\",\\\"75\\\"],[10,\\\"filterUnits\\\",\\\"userSpaceOnUse\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"feOffset\\\",true],[10,\\\"input\\\",\\\"SourceAlpha\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"feGaussianBlur\\\",true],[10,\\\"stdDeviation\\\",\\\"4\\\"],[10,\\\"result\\\",\\\"blur\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"feFlood\\\",true],[10,\\\"flood-opacity\\\",\\\"0.369\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"feComposite\\\",true],[10,\\\"operator\\\",\\\"in\\\"],[10,\\\"in2\\\",\\\"blur\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"feComposite\\\",true],[10,\\\"in\\\",\\\"SourceGraphic\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"g\\\",true],[10,\\\"id\\\",\\\"PlusSGV\\\"],[10,\\\"transform\\\",\\\"translate(-330 -508)\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"g\\\",true],[10,\\\"transform\\\",\\\"matrix(1, 0, 0, 1, 330, 508)\\\"],[10,\\\"filter\\\",\\\"url(#Ellipse_27)\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"circle\\\",true],[10,\\\"id\\\",\\\"Ellipse_27-2\\\"],[10,\\\"data-name\\\",\\\"Ellipse 27\\\"],[10,\\\"cx\\\",\\\"25.5\\\"],[10,\\\"cy\\\",\\\"25.5\\\"],[10,\\\"r\\\",\\\"25.5\\\"],[10,\\\"transform\\\",\\\"translate(12 12)\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"rect\\\",true],[10,\\\"id\\\",\\\"Rectangle_588\\\"],[10,\\\"data-name\\\",\\\"Rectangle 588\\\"],[10,\\\"width\\\",\\\"27\\\"],[10,\\\"height\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(354 544)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"rect\\\",true],[10,\\\"id\\\",\\\"Rectangle_589\\\"],[10,\\\"data-name\\\",\\\"Rectangle 589\\\"],[10,\\\"width\\\",\\\"27\\\"],[10,\\\"height\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(369 532) rotate(90)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/add/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"aHJ+9SUl\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[25,1]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[14,1,[[24,[\\\"field\\\"]],[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[24,[\\\"form\\\"]],[24,[\\\"field\\\"]],[24,[\\\"value\\\"]]]]],[24,[\\\"value\\\"]],[24,[\\\"row\\\"]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[24,[\\\"form\\\"]],[24,[\\\"field\\\"]],[24,[\\\"value\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/cell/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set, setProperties } from '@ember/object';\nimport { next } from '@ember/runloop';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { isEmpty, typeOf } from '@ember/utils';\nimport { A } from '@ember/array';\nimport filtermodel from 'tt4/mixins/filter-model';\nimport pdfExport from 'tt4/mixins/pdf-export';\nimport saveTheChildren from 'tt4/mixins/save-the-children';\nimport { defer } from 'rsvp';\nimport { pluralize } from 'ember-inflector';\nimport { dasherize, camelize } from '@ember/string';\n\n/**\n *\n * report for collector form\n *\n *  {{#collector/form-report form=\"worktime\" as |report|}}\n        {{report.filters}}\n        {{report.table}}\n    {{/collector/form-report}}\n *\n * parameters:\n *      form: name of the form (mandatory), snake cased eg. export_salary\n *      filter: object containing list of filters that are added to every query.\n *              When used also created records will automatically have these set\n *      showColumns: List of columns to show on report. Also adding and editing form is affected by this.\n *      filterByValues: object containing default-values for filters\n *\n * objects:\n *      filters: filter bar for report.\n *          parameters:\n *              showColumns: list of columns to be shown\n *      add: if used plus button is added above the table\n *      table: the table it self\n *          parameters:\n *              rowActions: list of actions to show for rows separated with comma. default: edit\n *\n */\n\nexport default Component.extend(filtermodel, saveTheChildren, pdfExport, {\n    store: service(),\n    dialogs: service(),\n    intl: service(),\n    collector: service('collector-service'),\n    notifications: service(),\n    error: service(),\n    analytics: service(),\n    capi: service(),\n    router: service(),\n    localStorageWrapper: service(),\n    localstorage: service(),\n    cordova: service('own-cordova-service'),\n    fileExports: service('file-exports'),\n    evented: service(),\n\n    filterByValues: null,\n\n    rowsPerPage: 25,\n    currentPage: 1,\n    rowActions: 'edit,history,remove',\n\n    metaRowCount: alias('data.content.meta.count'),\n\n    pageCount: computed('metaRowCount', function () {\n        if (!this.metaRowCount && !this.cachedRowCount) return 0;\n        const count = this.metaRowCount ? this.metaRowCount : this.cachedRowCount;\n        return Math.ceil(count / get(this, 'rowsPerPage'));\n    }),\n\n    queryParams: computed(\n        'currentPage',\n        'filterByValues',\n        'filter',\n        'sorts',\n        'showRemoved',\n        'jsonapi',\n        'rowsPerPage',\n        function () {\n            let params = {};\n            this.mergeFilters(params, get(this, 'filterByValues'));\n            this.mergeFilters(params, get(this, 'filter'));\n            if (this.jsonapi) {\n                params = this.setJsonapiParams(params);\n            }\n            const sortKey = this.jsonapi ? 'sort' : 'order';\n            if (this.sorts && this.sorts.length)\n                params[sortKey] = this.createSortString(this.sorts, this.jsonapi);\n            params.limit = get(this, 'rowsPerPage');\n            params.offset = get(this, 'rowsPerPage') * (get(this, 'currentPage') - 1);\n            params.sideload = true;\n            if (this.showRemoved) {\n                params.row_info_status = 'removed';\n            }\n            return params;\n        },\n    ),\n\n    allColumns: computed('form', function () {\n        const canEdit = this.collector.testNeeds([\n            '!' + this.form + '@errors',\n            this.form + '@edit',\n        ]);\n        let columns = this.collector.fieldArray(this.form).map((item) => {\n            item['canEdit'] = canEdit;\n            item['valuePath'] = item.name;\n            item['external_type'] = item.name;\n            return item;\n        });\n\n        if (this.showColumns)\n            columns = columns.filter((column) =>\n                this.showColumns.split(',').includes(column.external_type),\n            );\n        columns = columns.filter((column) => column.features && !column.features.hide_column);\n\n        if (!this.hideCreatedColumn)\n            columns.push({\n                name: 'row_info.created',\n                external_type: 'row_info.created',\n                valuePath: 'row_info.created',\n                translated_name: this.intl.t('general.row_info.created'),\n            });\n\n        return columns;\n    }),\n\n    statusTypes: computed('form', function () {\n        let form = camelize(this.form);\n        if (!this.form) return [];\n        if (!this.Collector.fieldExists(form, 'status')) return [];\n\n        let field = this.Collector.field(form, 'status');\n        let fieldOptions = [];\n\n        if (field.features.only_options) {\n            fieldOptions = field.features.only_options.split(',');\n        } else {\n            fieldOptions = field.options;\n        }\n        let options = fieldOptions.map((option) => {\n            if (this.intl.exists('status.' + option)) {\n                return { id: option, name: this.intl.t('report.' + option + '_rows') };\n            } else {\n                return { id: option, name: this.intl.t('report.change_status') + option };\n            }\n        });\n\n        return options;\n    }),\n\n    showApprovalLink: computed('statusTypes', 'selectedExportRows', function () {\n        return this.statusTypes.mapBy('id').includes('approved') && this.selectedExportRows;\n    }),\n\n    init() {\n        this._super();\n        this.updateReport();\n    },\n\n    didReceiveAttrs() {\n        this.selected = [];\n        this.setDefaultLimit();\n        this.setDefaultOrder();\n        this.setVisibleColumns();\n\n        if (!this.filterByValues) {\n            set(this, 'filterByValues', {});\n        }\n\n        // updateReport is called only if this.updateOnDidReceiveAttrs is true .. it might be okay to call by default but let's do this\n        // for now to prevent unwanted behaviour\n        // this.updateReport needs to be called when form is changed .. otherwise we get weird errors when wrong fields are tried to be formatted\n        // with the new form name\n        if (this.updateOnDidReceiveAttrs) this.updateReport();\n    },\n\n    actions: {\n        openGpsMap(selected) {\n            if (this.showLocationMap) {\n                set(this, 'showLocationMap', false);\n                set(this, 'locationMarkers', []);\n                set(this, 'startEndMarkers', []);\n                return;\n            }\n            let rows = selected.length > 0 ? selected : this.data.toArray();\n\n            if (!rows) return;\n\n            let d = defer();\n            let locs = [];\n            let i = 0;\n            let totalLength = rows.length;\n            rows.forEach(async (row) => {\n                if (!row.location && !row.end_location && !row.location_map) {\n                    totalLength--;\n                    return;\n                }\n\n                let locationMapInfo = await this.getLocationMapInfo(row);\n                let loc = {};\n\n                if (locationMapInfo) {\n                    if (typeOf(locationMapInfo) === 'object') {\n                        loc.project = JSON.parse(locationMapInfo.location_map);\n                        loc.project.label = get(locationMapInfo, 'name');\n                    } else {\n                        loc.project = JSON.parse(locationMapInfo);\n                        loc.project.label = row.name ? row.name : null;\n                    }\n                }\n                if (row.location) loc.wStartLoc = JSON.parse(row.location);\n                if (row.end_location) loc.wEndLoc = JSON.parse(row.end_location);\n                loc.wLabel = row.user\n                    ? get(row.user, 'lastname') + ' ' + get(row.user, 'firstname')\n                    : null;\n\n                locs.push(loc);\n\n                if (++i === totalLength) {\n                    if (row.end_location) {\n                        set(this, 'startEndMarkers', locs);\n                    } else {\n                        set(this, 'locationMarkers', locs);\n                    }\n\n                    d.resolve();\n                }\n            });\n            set(this, 'showLocationMap', true);\n            return d;\n        },\n\n        updateSorts(sorts) {\n            this.analytics.trackEvent({\n                category: this.form + ' report sort by column',\n                action: get(sorts, 'firstObject').valuePath,\n                label: 'Form-report',\n            });\n            this.updateReport();\n        },\n\n        columnsChanged(columns) {\n            set(this, 'columns', columns);\n\n            // ugly hax to force ember-table rerender without loading data again\n            const cacheData = get(this, 'data');\n            set(this, 'data', null);\n            next(this, () => set(this, 'data', cacheData));\n        },\n\n        filterChange(value, field) {\n            if (field) {\n                set(this, 'currentPage', 1);\n                set(this, 'filterByValues.' + field, value);\n                this.notifyPropertyChange('queryParams');\n                next(this, () => this.updateReport()); // this needs to be inside next .. if not update is sometimes made before queryParams have changed\n            }\n        },\n        clearFilters() {\n            set(this, 'currentPage', 1);\n            set(this, 'filterByValues', this.filterDefaultValues ? this.filterDefaultValues : {});\n            this.notifyPropertyChange('queryParams');\n            this.updateReport();\n        },\n\n        async actionClicked(action, row) {\n            this.analytics.trackEvent({\n                category: this.form + ' report row actions',\n                action: action,\n                label: 'Form-report',\n            });\n            set(this, 'needsUpdate', true);\n            if (action == 'edit') set(this, 'showForm', row);\n            if (action === 'history') set(this, 'showHistory', row);\n            if (action == 'remove') this.removeRow(row);\n            if (action === 'restore') {\n                await this.restoreRow(row);\n                this.updateReport();\n            }\n            if (action === 'copy') this.copyRow(row);\n            if (action === 'unlock') this.lockOrUnlock(row, 'unlock');\n        },\n\n        add() {\n            const convertFilterToDefaultValues = (values) => {\n                const fields = this.Collector.fieldArray(get(this, 'form'));\n                for (let field in values) {\n                    const fieldObj = fields.findBy('name', field);\n                    if (!fieldObj) continue;\n                    if (fieldObj.type === 'multiselect') values[field] = [values[field]];\n                }\n                return { ...values };\n            };\n\n            const values = Object.assign({}, get(this, 'filter'));\n            const defaultValues = convertFilterToDefaultValues(values);\n\n            set(\n                this,\n                'showForm',\n                get(this, 'store').createRecord(get(this, 'form'), defaultValues),\n            );\n        },\n\n        reload() {\n            this.analytics.trackEvent({\n                category: this.form + ' report actions',\n                action: 'Refresh report',\n                label: 'Form-report',\n            });\n            this.updateReport();\n        },\n\n        pageChange(page) {\n            set(this, 'currentPage', page);\n            this.updateReport();\n        },\n\n        async exportPdf(selected, params = {}) {\n            set(this, 'showLoader', true);\n            this.analytics.trackEvent({\n                category: this.form + ' report actions',\n                action: 'Pdf export',\n                label: 'Form-report',\n            });\n            try {\n                if (params.layoutOption === 'sideHeaders') {\n                    await this.fileExports.createPdfFull(\n                        this.form,\n                        this.selectedExportRows,\n                        this.filterByValues,\n                        this.columns.mapBy('external_type').join(','),\n                        params,\n                        null,\n                    );\n                } else {\n                    await this.createPdf(selected, params, 'download');\n                }\n            } catch (error) {\n                this.error.notify(error);\n            } finally {\n                set(this, 'showLoader', false);\n            }\n        },\n\n        async exportPdfFull(params) {\n            set(this, 'showLoader', true);\n            this.analytics.trackEvent({\n                category: this.form + ' report actions',\n                action: 'Pdf big pictures export',\n                label: 'Form-report',\n            });\n            try {\n                await this.fileExports.createPdfFull(\n                    this.form,\n                    this.selectedExportRows,\n                    this.filterByValues,\n                    this.columns.mapBy('external_type').join(','),\n                    params,\n                    null,\n                );\n            } catch (error) {\n                this.error.notify(error);\n            } finally {\n                set(this, 'showLoader', false);\n            }\n        },\n\n        async exportCsv(selected) {\n            set(this, 'showLoader', true);\n            this.analytics.trackEvent({\n                category: this.form + ' report actions',\n                action: 'Csv export',\n                label: 'Form-report',\n            });\n            try {\n                let data = !isEmpty(selected) ? selected : await this.getExportData();\n                let columns = this.columns.map((col) => {\n                    return { name: col.translated_name, ext: col.name, obj: col };\n                });\n                await this.fileExports.createCsv(this.form, data, columns);\n            } catch (error) {\n                this.error.notify(error);\n            } finally {\n                set(this, 'showLoader', false);\n            }\n        },\n\n        async exportExcel(params) {\n            await this.createExcel(params);\n        },\n\n        handleExportActions(params) {\n            switch (params.type) {\n                case 'export_pdf':\n                    this.send('exportPdf', this.selectedExportRows, params);\n                    break;\n                case 'export_pdf_full':\n                    this.send('exportPdfFull', params);\n                    break;\n                case 'export_excel':\n                    this.send('exportExcel', params);\n                    break;\n            }\n        },\n\n        saveRows() {\n            this.saveDirtyRecords();\n        },\n\n        async toggleInlineEdit() {\n            if (get(this, 'inlineEdit')) {\n                this.analytics.trackEvent({\n                    category: this.form + ' report inline edit',\n                    action: 'disable',\n                    label: 'Form-report',\n                });\n                //if we are closing inline edit, check for dirty/new/invalid records and prompt user if closing is okay\n                let dirtyRecords = [];\n                let reloadPromises = [];\n\n                await get(this, 'data').forEach((record) => {\n                    if (\n                        get(record, 'hasDirtyAttributes') ||\n                        get(record, 'isNew') ||\n                        !get(record, 'isValid')\n                    ) {\n                        dirtyRecords.push(record);\n                    }\n                });\n\n                //if we have dirty records we want to rollback to their previous state\n                if (!isEmpty(dirtyRecords)) {\n                    let confirm = await this.dialogs.confirm(this.intl.t('report.confirm_unsaved'));\n\n                    if (!confirm) return;\n\n                    dirtyRecords.forEach((record) => {\n                        record.rollbackAttributes();\n                        if (!get(record, 'isDeleted')) reloadPromises.push(record.reload());\n                    });\n                }\n\n                await Promise.all(reloadPromises);\n\n                //filter out removed records from data\n                let newData = await get(this, 'data').filter((record) => {\n                    if (get(record, 'isDeleted')) {\n                        this.decrementProperty('cachedRowCount');\n                        return false;\n                    } else return true;\n                });\n\n                set(this, 'data', newData);\n\n                this.toggleProperty('inlineEdit');\n            } else {\n                this.analytics.trackEvent({\n                    category: this.form + ' report inline edit',\n                    action: 'enable',\n                    label: 'Form-report',\n                });\n                if (this.metaRowCount && !this.cachedRowCount)\n                    set(this, 'cachedRowCount', this.metaRowCount);\n                this.toggleProperty('inlineEdit');\n            }\n        },\n\n        changeStatus(selected, status) {\n            if (isEmpty(selected)) return;\n\n            this.analytics.trackEvent({\n                category: this.form + ' report more actions',\n                action: 'Change status',\n                label: 'Form-report',\n            });\n\n            if (this.metaRowCount > selected.length && selected.length === this.data.length) {\n                this.setParamsForStatusChangeAllPages(selected, status, null);\n            }\n\n            selected.forEach(async (row) => {\n                set(row, 'status', status);\n                try {\n                    await row.save();\n                    row.reload();\n                } catch (error) {\n                    this.error.notify(error);\n                    row.rollbackAttributes();\n                }\n            });\n        },\n        openExportModal(selected, type) {\n            set(this, 'showExportModal', true);\n            set(this, 'exportInitType', type);\n            set(this, 'selectedExportRows', selected);\n            set(this, 'showApprovalLinkSelection', this.showApprovalLink);\n            set(this, 'emailSendingCount', selected.length);\n        },\n\n        handleLock(selected, action) {\n            if (isEmpty(selected)) return;\n            if (!this.Collector.testNeeds(['userlevel=5'])) return;\n\n            this.analytics.trackEvent({\n                category: this.form + ' report more actions',\n                action: action + ' rows',\n                label: 'Form-report',\n            });\n\n            if (this.metaRowCount > selected.length && selected.length === this.data.length) {\n                this.setParamsForStatusChangeAllPages(selected, null, action);\n            }\n\n            selected.forEach((row) => {\n                this.lockOrUnlock(row, action);\n            });\n        },\n\n        closeShowChangeStatusForAllPages() {\n            set(this, 'showChangeStatusForAllPages', false);\n        },\n\n        showOrHideRemoved() {\n            if (this.showRemoved) {\n                set(this, 'showRemoved', false);\n            } else {\n                set(this, 'showRemoved', true);\n            }\n            this.updateReport();\n        },\n\n        async handleRemove(selected, action) {\n            if (isEmpty(selected)) return;\n            if (action === 'remove') {\n                let con = await this.dialogs.confirm(this.intl.t('report.confirm_delete'));\n                if (con) {\n                    for (let row of selected) {\n                        await row.destroyRecord();\n                        await row.unloadRecord();\n                    }\n                    this.updateReport();\n                }\n            } else {\n                let con = await this.dialogs.confirm(this.intl.t('report.confirm_restore_rows'));\n                if (con) {\n                    let form_plural = pluralize(this.form).camelize();\n                    selected.forEach(async (row) => {\n                        await this.capi.request(\n                            '/' + form_plural + '/' + row.id + '?validation=off',\n                            {\n                                dataType: 'json',\n                                type: 'PUT',\n                                data:\n                                    '{\"' + this.form.camelize() + '\":{\"row_info.status\":\"normal\"}}',\n                            },\n                        );\n                        await row.unloadRecord();\n                        await this.updateReport();\n                    });\n                }\n            }\n        },\n        async sendEmail(to, title, content, params) {\n            set(this, 'showLoader', true);\n            let rowids = this.selectedExportRows\n                ? this.selectedExportRows.map((item) => get(item, 'id'))\n                : [];\n            try {\n                let base64string = await this.getPdfAttachmentForEmail(params);\n                await this.Collector.ttapi({\n                    url: 'sendReportAsEmail',\n                    data: {\n                        to_address: to,\n                        email: base64string,\n                        content: content,\n                        lang: this.intl.primaryLocale,\n                        includeApproval: get(params, 'approvalLink'),\n                        form_name: this.form,\n                        rowids: rowids,\n                        header: title,\n                        type: get(params, 'type'),\n                    },\n                    method: 'post',\n                });\n                set(this, 'emailSent', true);\n            } catch (err) {\n                set(this, 'emailError', true);\n            } finally {\n                set(this, 'showLoader', false);\n            }\n        },\n\n        setRowsPerPage(RowsPerPage) {\n            this.analytics.trackEvent({\n                category: this.form + ' report rows per page',\n                action: RowsPerPage,\n                label: 'Form-report',\n            });\n            set(this, 'currentPage', 1);\n            set(this, 'rowsPerPage', RowsPerPage);\n            this.localStorageWrapper.setUserSetting(this.defaultLimitKey, RowsPerPage);\n            this.updateReport();\n        },\n    },\n\n    async createExcel(params, base64 = false) {\n        set(this, 'showLoader', true);\n        this.analytics.trackEvent({ category: 'Form-report actions', action: 'Excel export' });\n        try {\n            let filters = this.addFiltersToPdf();\n            let data = !isEmpty(this.selectedExportRows)\n                ? this.selectedExportRows\n                : await this.getExportData();\n            let columns = this.columns.map((col) => {\n                return { name: col.translated_name, ext: col.name, obj: col };\n            });\n            let excelJSON = this.fileExports.createExcelJSONFromForm(\n                this.form,\n                data,\n                columns,\n                filters,\n                params.sumRow,\n            );\n            if (base64) return await this.fileExports.createBase64ExcelFromJSON(excelJSON);\n            await this.fileExports.createExcelFromJSON(excelJSON);\n        } catch (error) {\n            this.error.notify(error);\n        } finally {\n            set(this, 'showLoader', false);\n        }\n    },\n\n    async getProjectInfo(project) {\n        let projects = await this.store.query('project', { id: project.id });\n        return get(projects, 'firstObject');\n    },\n\n    getLocationMapInfo(row) {\n        if (row.location_map) {\n            return row.location_map;\n        } else if (row.project) {\n            return this.getProjectInfo(row.project);\n        } else {\n            return null;\n        }\n    },\n\n    setParamsForStatusChangeAllPages(selected, status = null, action = null) {\n        let visibleRowIds = selected.map((row) => get(row, 'id'));\n        setProperties(this.filterByValues, { limit: 'all', sideload: true });\n        setProperties(this.changeStatusForAllPagesParams, {\n            visibleRowIds: visibleRowIds,\n            requestParams: this.filterByValues,\n            form: this.form,\n            status: status,\n            action: action,\n            rowCount: this.metaRowCount,\n        });\n        set(this, 'showChangeStatusForAllPages', true);\n    },\n\n    async createPdf(selected, params, mode = 'download') {\n        const columnsOnReport = this.columns.map((col) => col.external_type).join(',');\n        let showColumns = params.template\n            ? get(params, 'template.columns')\n            : columnsOnReport\n              ? columnsOnReport\n              : null;\n        let settings = { form: this.form, show_columns: showColumns };\n        let element = await this.fileExports.createPdfElement(\n            this.getExportData(),\n            selected,\n            settings,\n            this.columns,\n            params,\n        );\n        let elements = [element];\n        let filters_body = this.addFiltersToPdf();\n        if (filters_body.length > 0) {\n            elements.unshift({\n                table: { body: filters_body },\n                layout: 'noBorders',\n            });\n        }\n        let file = await this.createPdfFromElements(elements, mode, '', 8, params);\n        if (window.cordova) {\n            this.cordova.openFile(file, 'application/pdf');\n        }\n        return file;\n    },\n\n    addFiltersToPdf() {\n        let filterKeys = Object.keys(this.filterByValues);\n        if (!filterKeys) return [];\n        let pdf_filters_body = filterKeys.map((key) => {\n            let filterValues = this.filterByValues[key];\n            if (!filterValues || !this.Collector.fieldExists(this.form, key)) return;\n            let field = this.Collector.field(this.form, key);\n\n            let filterNameInPdf = this.setFilterNameInPdf(key);\n            let filterValueInPdf = '';\n\n            // if filterValues is object, we just take its id as a filtervalue\n            if (typeof filterValues == 'object') {\n                filterValues = filterValues.id;\n            }\n\n            if (filterValues.includes(',')) {\n                filterValues.split(',').forEach((value) => {\n                    filterValueInPdf +=\n                        this.Collector._format_(\n                            field.type === 'database' ? parseInt(value) : value,\n                            this.form,\n                            key,\n                            'pdf',\n                            this.data,\n                        ) + ', ';\n                });\n                filterValueInPdf = filterValueInPdf.slice(0, -2);\n            } else {\n                filterValues =\n                    field.type === 'database' || field.type === 'multiselect'\n                        ? parseInt(filterValues)\n                        : filterValues;\n                if (key.includes(':')) {\n                    filterValueInPdf += this.Collector._format_(\n                        filterValues,\n                        this.form,\n                        key.split(':')[0],\n                        'pdf',\n                        this.data,\n                    );\n                } else {\n                    filterValueInPdf += this.Collector._format_(\n                        filterValues,\n                        this.form,\n                        key,\n                        'pdf',\n                        this.data,\n                    );\n                }\n            }\n            return [filterNameInPdf + ': ' + filterValueInPdf];\n        });\n\n        return pdf_filters_body.filter((item) => item);\n    },\n\n    setFilterNameInPdf(key) {\n        let field = this.Collector.fieldArray(this.form).findBy('name', key);\n\n        if (this.intl.exists(this.form + '.' + key)) {\n            return this.intl.t(this.form + '.' + key);\n        } else if (field && field.translated_name) {\n            return field.translated_name;\n        } else if (key.includes(':')) {\n            return (\n                this.intl.t(this.form + '.' + key.split(':')[0]) +\n                ' - ' +\n                this.intl.t(this.form + '.' + key.split(':')[1])\n            );\n        } else {\n            return key;\n        }\n    },\n\n    async getPdfAttachmentForEmail(params) {\n        switch (params.type) {\n            case 'export_pdf':\n                return await this.createPdf(this.selectedExportRows, params, 'base64');\n            case 'export_pdf_full':\n                return await this.fileExports.createPdfFull(\n                    this.form,\n                    this.selectedExportRows,\n                    this.filterByValues,\n                    this.showColumns,\n                    params,\n                    'base64',\n                );\n            case 'export_excel':\n                return await this.createExcel(params, true);\n        }\n    },\n\n    setJsonapiParams(params) {\n        if (!params) return {};\n        let filters = {};\n        Object.entries(params).forEach((param) => {\n            if (!param[1]) return; //if value is empty, continue\n            let field = this.Collector.field(this.form, param[0]);\n            if (field.type === 'database') {\n                filters['filter[relationships.' + param[0] + '.data.id]'] = param[1];\n            } else {\n                filters['filter[attributes.' + param[0] + ']'] = param[1];\n            }\n        });\n        return filters;\n    },\n\n    setVisibleColumns() {\n        const visibleList = this.localstorage.getItem(this.form + '_defaultColumns');\n        let columns = [...this.allColumns];\n        if (visibleList) {\n            columns = visibleList.reduce((acc, column) => {\n                let columnObject = this.allColumns.find(\n                    (object) => object.external_type === column,\n                );\n                if (columnObject) acc.push(columnObject);\n                return acc;\n            }, []);\n        }\n        set(this, 'columns', columns);\n    },\n\n    setDefaultLimit() {\n        let key = this.localStorageKey\n            ? this.localStorageKey + '_defaultLimit'\n            : this.form + '_defaultLimit';\n        if (key) set(this, 'defaultLimitKey', key);\n        let limitfromLS = this.localStorageWrapper.getUserSetting(key);\n        set(this, 'rowsPerPage', limitfromLS.length != 0 ? limitfromLS : this.rowsPerPage);\n    },\n\n    setDefaultOrder() {\n        if (this.defaultSort) {\n            set(this, 'sorts', this.createSortArray(this.defaultSort));\n        }\n        // TODO: Sort by first column on default\n    },\n\n    mergeFilters(filters, merge) {\n        if (!merge) return;\n        for (const key in merge) {\n            const value = this.getIdifRecord(merge[key]);\n            if (value) filters[key] = value;\n        }\n    },\n\n    getIdifRecord(value) {\n        return value && typeof value === 'object' ? get(value, 'id') : value;\n    },\n\n    removeRow(row) {\n        get(this, 'dialogs')\n            .confirm(get(this, 'intl').t('report.confirm_delete'))\n            .then(this.removeOrNot.bind(this, row));\n    },\n\n    async restoreRow(row) {\n        const form_plural = pluralize(this.form).camelize();\n\n        await this.capi.request('/' + form_plural + '/' + row.id + '?validation=off', {\n            dataType: 'json',\n            type: 'PUT',\n            data: '{\"' + this.form.camelize() + '\":{\"row_info.status\":\"normal\"}}',\n        });\n        this.evented.storeEvent('restore', get(this, 'form'), null);\n    },\n\n    async copyRow(row) {\n        let newRecord = this.Collector.copyRecord(row);\n        set(newRecord, 'row_info', { privilege_edit: true, privilege_remove: true }); //fake some privileges to enable editing and removing of new row\n        let data = await get(this, 'data').toArray(); //toArray, because the result of a server query is immutable\n        data.unshiftObject(newRecord);\n        this.incrementProperty('cachedRowCount');\n        set(this, 'data', data);\n    },\n\n    async removeOrNot(row, answer) {\n        if (!answer) return;\n        await row.destroyRecord();\n        this.updateReport();\n        this.evented.storeEvent('delete', get(this, 'form'), null);\n    },\n\n    async lockOrUnlock(row, action) {\n        let form_plural = pluralize(this.form).camelize();\n        let data = {};\n        data[this.form] = action === 'lock' ? { locked: true } : { locked: false };\n        try {\n            await this.capi.request('/' + form_plural + '/' + get(row, 'id') + '?validation=off', {\n                dataType: 'json',\n                type: 'PUT',\n                data: JSON.stringify(data),\n            });\n            row.reload();\n        } catch (error) {\n            this.error.notify(error);\n            row.rollbackAttributes();\n        } finally {\n            this.updateReport();\n        }\n    },\n\n    updateReport() {\n        // this is needed to force queryParams to update\n        this.notifyPropertyChange('queryParams');\n        set(\n            this,\n            'data',\n            get(this, 'store').query(dasherize(get(this, 'form')), get(this, 'queryParams')),\n        );\n    },\n\n    createSortString(sorts, jsonapi = false) {\n        if (jsonapi)\n            return sorts\n                .map((item) => (item.isAscending ? '-' : '') + 'attributes.' + item.valuePath)\n                .join(',');\n        return sorts\n            .map(\n                (item) =>\n                    (item.valuePath == 'row_info.created' ? 'id' : item.valuePath) +\n                    (item.isAscending ? '-' : ''),\n            )\n            .join(',');\n    },\n\n    createSortArray(sorts) {\n        if (!sorts) return;\n        return sorts.split(',').map((item) => {\n            return item.slice(-1) == '-'\n                ? { valuePath: item.slice(0, -1), isAscending: true }\n                : { valuePath: item, isAscending: false };\n        });\n    },\n\n    async saveDirtyRecords() {\n        const data = await get(this, 'data');\n\n        let savePromises = A([]);\n        let errors = A([]);\n        set(this, 'errors', errors);\n\n        //push all rows that have dirty attributes into a promise array\n        savePromises = data.map(async (record, index) => {\n            if (get(record, 'hasDirtyAttributes')) {\n                await record.validate(); //validate record. Do not send save request if it is invalid (in save function)\n                return this.saveRecordAndCatchErrors(record, errors, index);\n            }\n        });\n\n        //if promise array is empty display notification and return straight outta here, we don't need to do anyhting\n        if (isEmpty(savePromises)) {\n            this.notifications.warning(this.intl.t('general.no_saved_rows'), {\n                autoClear: true,\n            });\n            return;\n        }\n\n        await Promise.all(savePromises);\n\n        if (isEmpty(errors)) {\n            this.notifications.success(this.intl.t('general.saved'), {\n                autoClear: true,\n            });\n        } else {\n            set(this, 'errors', errors);\n            this.notifications.error(this.intl.t('general.no_saved_rows'), {\n                autoClear: true,\n            });\n        }\n    },\n\n    getExportData() {\n        let params = get(this, 'queryParams');\n        params.limit = 'all';\n        // params must be cloned because appliactions.js stupidly modifies the object\n        return get(this, 'store').query(get(this, 'form'), { ...params });\n    },\n\n    async saveRecordAndCatchErrors(record, errors, index) {\n        //do not send save request is record is invalid\n        try {\n            if (get(record, 'isValid')) {\n                //save via save-the-children mixin\n                return await this.save_record(record);\n            } else {\n                errors.pushObject({\n                    index: index + 1,\n                    message: get(record, 'errors.messages.firstObject'),\n                });\n            }\n        } catch (saveError) {\n            const err = this.error.toError(saveError);\n            err['index'] = index + 1; //arrays start at 0 (╯°□°)╯︵ ┻━┻\n            errors.pushObject(err);\n            return err;\n        }\n    },\n});\n","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\nimport { getSums } from 'tt4/utils/sumrow-util';\n\nexport default Component.extend({\n    gui: service(),\n\n    selected: null,\n\n    allSelected: computed('data.length', 'selected.length', function () {\n        return get(this, 'data.length') === get(this, 'selected.length');\n    }),\n\n    _columns: computed('columns', 'columns.{@each.hide,[]}', function () {\n        const actions = {\n            name: '',\n            valuePath: '@actions',\n            isFixed: 'right',\n            maxwidth: 45,\n            isSortable: false,\n        };\n        return this.columns.concat([actions]);\n    }),\n\n    tableWidthConstraint: computed('_columns', function () {\n        if (this.gui.isMobile()) return 'gte-container';\n        return get(this, 'columns.length') > 13 ? 'gte-container' : 'eq-container';\n    }),\n\n    idsStr: computed('selected.[]', function () {\n        return this.selected.mapBy('id').join(',');\n    }),\n\n    sumRow: computed('data', 'columns', 'selected.[]', function () {\n        let data = !isEmpty(this.selected) ? this.selected : this.data;\n\n        if (!this.columns || !data) return;\n\n        return getSums(data, this.columns, this.form, this.Collector);\n    }),\n\n    didReceiveAttrs() {\n        set(this, 'selected', []);\n    },\n\n    actions: {\n        updateSorts(sorts) {\n            set(this, 'sorts', sorts);\n            if (this.updateSorts) this.updateSorts(sorts);\n        },\n\n        toggleSelectAll() {\n            if (get(this, 'allSelected')) {\n                set(this, 'selected', []);\n            } else {\n                set(this, 'selected', get(this, 'data').toArray());\n            }\n        },\n\n        toggleInlineEdit() {\n            //if inlineEdit is true, the action will be to disable inline editing and vice versa\n            this.toggleInlineEdit();\n        },\n\n        setRowsPerPage(RowsPerPage) {\n            this.setRowsPerPage(RowsPerPage);\n        },\n\n        deselectAll() {\n            set(this, 'selected', []);\n        },\n\n        exportCsv(selected) {\n            this.exportCsv(selected);\n        },\n\n        saveRows() {\n            this.saveRows();\n        },\n\n        refreshReport() {\n            this.refreshReport();\n        },\n\n        changeStatus(selected, status) {\n            this.changeStatus(selected, status);\n        },\n\n        handleLock(selected, action) {\n            this.handleLock(selected, action);\n        },\n\n        handleRemove(selected, action) {\n            this.handleRemove(selected, action);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"ksCboRhq\",\"block\":\"{\\\"symbols\\\":[\\\"table\\\",\\\"b\\\",\\\"r\\\",\\\"value\\\",\\\"cell\\\",\\\"formatted\\\",\\\"head\\\",\\\"r\\\",\\\"columnValue\\\",\\\"columnMeta\\\",\\\"error\\\",\\\"&default\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[25,12]],null,{\\\"statements\\\":[[14,12,[[28,\\\"hash\\\",null,[[\\\"actions\\\",\\\"selected\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/actions\\\"],[[\\\"form\\\",\\\"inlineEdit\\\",\\\"columns\\\",\\\"allColumns\\\",\\\"rowsPerPage\\\",\\\"currentTemplate\\\",\\\"templatesSettings\\\",\\\"toggleInlineEdit\\\",\\\"saveRows\\\",\\\"columnsChanged\\\",\\\"setRowsPerPage\\\",\\\"exportPdf\\\",\\\"exportCsv\\\",\\\"showOrHideRemoved\\\",\\\"openExportModal\\\",\\\"showLoader\\\",\\\"showRemoved\\\",\\\"refreshReport\\\",\\\"statusTypes\\\",\\\"changeStatus\\\",\\\"handleLock\\\",\\\"handleRemove\\\",\\\"selected\\\",\\\"openMassedit\\\",\\\"openGpsMap\\\"],[[24,[\\\"form\\\"]],[24,[\\\"inlineEdit\\\"]],[24,[\\\"columns\\\"]],[24,[\\\"allColumns\\\"]],[24,[\\\"rowsPerPage\\\"]],[24,[\\\"currentTemplate\\\"]],[24,[\\\"templatesSettings\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleInlineEdit\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"saveRows\\\"],null],[24,[\\\"columnsChanged\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\"],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"exportPdf\\\"]],[24,[\\\"selected\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"exportCsv\\\"]],[24,[\\\"selected\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"showOrHideRemoved\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]],[24,[\\\"selected\\\"]]],null],[24,[\\\"showLoader\\\"]],[24,[\\\"showRemoved\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"refreshReport\\\"],null],[24,[\\\"statusTypes\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\",[24,[\\\"selected\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\",[24,[\\\"selected\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\",[24,[\\\"selected\\\"]]],null],[24,[\\\"selected\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showMassedit\\\"]]],null],true],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openGpsMap\\\"]],[24,[\\\"selected\\\"]]],null]]]],[24,[\\\"selected\\\"]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"component\\\",[\\\"collector/form-report/actions\\\"],[[\\\"form\\\",\\\"inlineEdit\\\",\\\"toggleInlineEdit\\\",\\\"saveRows\\\",\\\"statusTypes\\\",\\\"changeStatus\\\",\\\"handleLock\\\",\\\"handleRemove\\\",\\\"showOrHideRemoved\\\",\\\"openExportModal\\\",\\\"showRemoved\\\",\\\"selected\\\",\\\"columns\\\",\\\"allColumns\\\",\\\"rowsPerPage\\\",\\\"currentTemplate\\\",\\\"templatesSettings\\\",\\\"columnsChanged\\\",\\\"setRowsPerPage\\\",\\\"exportPdf\\\",\\\"exportCsv\\\",\\\"refreshReport\\\",\\\"openMassedit\\\"],[[24,[\\\"form\\\"]],[24,[\\\"inlineEdit\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleInlineEdit\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"saveRows\\\"],null],[24,[\\\"statusTypes\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\",[24,[\\\"selected\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\",[24,[\\\"selected\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\",[24,[\\\"selected\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"showOrHideRemoved\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"openExportModal\\\"]],[24,[\\\"selected\\\"]]],null],[24,[\\\"showRemoved\\\"]],[24,[\\\"selected\\\"]],[24,[\\\"columns\\\"]],[24,[\\\"allColumns\\\"]],[24,[\\\"rowsPerPage\\\"]],[24,[\\\"currentTemplate\\\"]],[24,[\\\"templatesSettings\\\"]],[24,[\\\"columnsChanged\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\"],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"exportPdf\\\"]],[24,[\\\"selected\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"exportCsv\\\"]],[24,[\\\"selected\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"refreshReport\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showMassedit\\\"]]],null],true],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"inlineEdit\\\"]],[24,[\\\"errors\\\",\\\"length\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger alert-dismissable\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"#\\\"],[10,\\\"class\\\",\\\"close\\\"],[10,\\\"data-dismiss\\\",\\\"alert\\\"],[11,\\\"aria-label\\\",[28,\\\"t\\\",[\\\"report.close_rows\\\"],null]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general_report.inline_edit.error.title\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,11,[\\\"message\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general_report.inline_edit.error.row\\\"],[[\\\"row\\\",\\\"error\\\"],[[23,11,[\\\"index\\\"]],[23,11,[\\\"message\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[11]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showRemoved\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.report.removed_view\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showLocationMap\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"gps-location-map\\\",null,[[\\\"zoomLevel\\\",\\\"wtmarkers\\\",\\\"projectmarkers\\\"],[15,[24,[\\\"startEndMarkers\\\"]],[24,[\\\"locationMarkers\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[5,\\\"ember-table\\\",[[12,\\\"class\\\",[29,[\\\"movenium-table \\\",[28,\\\"if\\\",[[24,[\\\"showRemoved\\\"]],\\\"removed-rows\\\"],null]]]]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"head\\\"]],[],[[\\\"@enableReorder\\\",\\\"@sortFunction\\\",\\\"@widthConstraint\\\",\\\"@resizeMode\\\",\\\"@columns\\\",\\\"@sorts\\\",\\\"@onUpdateSorts\\\"],[false,null,[23,0,[\\\"tableWidthConstraint\\\"]],\\\"fluid\\\",[23,0,[\\\"_columns\\\"]],[23,0,[\\\"sorts\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateSorts\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,7,[\\\"row\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,8,[\\\"cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"et-cell-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"not\\\",[[24,[\\\"inlineEdit\\\"]]],null],[24,[\\\"selectable\\\"]],[28,\\\"is-equal\\\",[[23,10,[\\\"index\\\"]],0],null]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"et-toggle-select\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"change\\\"],[\\\"checkbox\\\",[23,0,[\\\"allSelected\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleSelectAll\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"th-text-wrapper\\\"],[8],[1,[23,9,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[\\\"ember-th/sort-indicator\\\"],[[\\\"columnMeta\\\"],[[23,10,[]]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[\\\"ember-th/resize-handle\\\"],[[\\\"columnMeta\\\"],[[23,10,[]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[9,10]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-pending\\\",[[24,[\\\"data\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,[23,1,[\\\"body\\\"]],[],[[\\\"@rows\\\",\\\"@onSelect\\\",\\\"@selection\\\"],[[28,\\\"to-array\\\",[[28,\\\"await\\\",[[24,[\\\"data\\\"]]],null]],null],[28,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"not\\\",[[24,[\\\"inlineEdit\\\"]]],null],[24,[\\\"selectable\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"selected\\\"]]],null]],null]],null],[22,\\\"selected\\\"]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"row\\\"]],[],[[\\\"@class\\\"],[[29,[\\\"\\\\n                    \\\",[28,\\\"if\\\",[[28,\\\"or\\\",[[23,2,[\\\"rowValue\\\",\\\"isNew\\\"]],[23,2,[\\\"rowValue\\\",\\\"hasDirtyAttributes\\\"]]],null],\\\"unsaved-record\\\"],null],\\\"\\\\n                    \\\",[28,\\\"if\\\",[[28,\\\"or\\\",[[23,2,[\\\"rowValue\\\",\\\"isSaving\\\"]],[23,2,[\\\"rowValue\\\",\\\"isReloading\\\"]]],null],\\\"inflight-record\\\"],null],\\\"\\\\n                \\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"cell\\\"]],[],[[\\\"@class\\\"],[[29,[[28,\\\"if\\\",[[24,[\\\"inlineEdit\\\"]],\\\"inline-edit\\\"],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[\\\"rowValue\\\",\\\"row_info\\\",\\\"status\\\"]],\\\"locked\\\"],null],\\\"locked-row\\\"],null]]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"valuePath\\\"]],\\\"@actions\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row-actions\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,12]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[14,12,[[28,\\\"hash\\\",null,[[\\\"rowActions\\\"],[[28,\\\"component\\\",[[24,[\\\"actionBar\\\"]]],[[\\\"showActions\\\",\\\"row\\\",\\\"form\\\",\\\"inlineEdit\\\"],[[24,[\\\"rowActions\\\"]],[23,3,[\\\"rowValue\\\"]],[24,[\\\"form\\\"]],[24,[\\\"inlineEdit\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"component\\\",[[24,[\\\"actionBar\\\"]]],[[\\\"showActions\\\",\\\"row\\\",\\\"form\\\",\\\"inlineEdit\\\"],[[24,[\\\"rowActions\\\"]],[23,3,[\\\"rowValue\\\"]],[24,[\\\"form\\\"]],[24,[\\\"inlineEdit\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"inlineEdit\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[23,5,[]],\\\"external_type\\\"],null],\\\"row_info.created\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"inline-edit-row/cell\\\",[[23,3,[\\\"rowValue\\\"]],[23,5,[]],[28,\\\"and\\\",[[23,5,[\\\"canEdit\\\"]],[28,\\\"not\\\",[[23,5,[\\\"features\\\",\\\"hide\\\"]]],null],[28,\\\"or\\\",[[23,3,[\\\"rowValue\\\",\\\"isNew\\\"]],[23,3,[\\\"rowValue\\\",\\\"isEditable\\\"]]],null]],null],[23,3,[\\\"rowValue\\\",\\\"errors\\\",\\\"messages\\\",\\\"firstObject\\\",\\\"message\\\"]]],[[\\\"usePowerDropdown\\\",\\\"tagName\\\"],[true,\\\"div\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"uneditable-field\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[24,[\\\"form\\\"]],[23,5,[\\\"external_type\\\"]],[23,4,[]]]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"formatCells\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[14,12,[[28,\\\"hash\\\",null,[[\\\"cell\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/cell\\\"],[[\\\"form\\\",\\\"field\\\",\\\"value\\\",\\\"row\\\"],[[24,[\\\"form\\\"]],[23,5,[\\\"external_type\\\"]],[23,4,[]],[23,3,[\\\"rowValue\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"type\\\"]],\\\"multiselect\\\"],null],[28,\\\"is-equal\\\",[[23,5,[\\\"type\\\"]],\\\"databasearray\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"query\\\"],[\\\"clickable\\\",[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[28,\\\"concat\\\",[\\\"modalrows,\\\",[24,[\\\"form\\\"]],\\\".\\\",[23,5,[\\\"external_type\\\"]],\\\",\\\",[23,3,[\\\"rowValue\\\",\\\"id\\\"]]],null]]]]]],{\\\"statements\\\":[[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[24,[\\\"form\\\"]],[23,5,[\\\"external_type\\\"]],[23,4,[]]]]],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"let\\\",[[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\",\\\"isImageModal\\\"],[[24,[\\\"form\\\"]],[23,5,[\\\"external_type\\\"]],[23,4,[]],true]]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[23,6,[\\\"isImage\\\"]],[23,6,[\\\"src\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[[23,6,[\\\"classes\\\"]],\\\" clickable\\\"]]],[12,\\\"style\\\",[29,[\\\"background-image: url(\\\",[23,6,[\\\"src\\\"]],\\\")\\\"]]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"previewFile\\\"]]],null],[28,\\\"or\\\",[[23,6,[\\\"fullSrc\\\"]],[23,6,[\\\"src\\\"]]],null]],null]]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showImageModal\\\"]]],null]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[23,6,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[6]},null],[0,\\\"                            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                \\\"]],\\\"parameters\\\":[4,5]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"hideSumRow\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,[23,1,[\\\"foot\\\"]],[],[[\\\"@rows\\\"],[[23,0,[\\\"sumRow\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"data\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-rejected\\\",[[24,[\\\"data\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"get\\\",[[28,\\\"promise-rejected-reason\\\",[[24,[\\\"data\\\"]]],null],\\\"message\\\"],null],false],[0,\\\".\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"data\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[25,12]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,12,[[28,\\\"hash\\\",null,[[\\\"no-content\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/no-content\\\"],null]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[\\\"collector/form-report/no-content\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showMassedit\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"massedit.header\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showMassedit\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"mass-edit\\\",null,[[\\\"form\\\",\\\"idsStr\\\",\\\"inModal\\\",\\\"close\\\"],[[24,[\\\"form\\\"]],[24,[\\\"idsStr\\\"]],true,[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showMassedit\\\"]]],null],false],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showImageModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@outsideClose\\\",\\\"@classes\\\"],[[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showImageModal\\\"]]],null],false],null],true,\\\"\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"popup-image-size-limiter\\\"],[11,\\\"src\\\",[23,0,[\\\"previewFile\\\"]]],[8],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/ember-table/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\n\nexport default Component.extend({\n    collector: service('collector-service'),\n    intl: service(),\n    analytics: service(),\n\n    useMultiFilter: true,\n    filters: computed('form', function () {\n        const allowFilters = [\n            'date',\n            'database',\n            'dropdown_values',\n            'status',\n            'multiselect',\n            'dropdown_userlevel',\n        ];\n\n        let fieldArray = get(this, 'collector')\n            .fieldArray(get(this, 'form'))\n            .filter((field) => {\n                if (!allowFilters.includes(field.type)) return false;\n                if (field.features.hide_filter) return false; // hide_filter feature hides filter\n\n                return true;\n            });\n\n        fieldArray.forEach((item, index) => {\n            if (get(this, 'values.' + item.name))\n                fieldArray[index].value = get(this, 'values.' + item.name);\n            fieldArray[index].label = this.collector.getTranslationForColumn(this.form, item.name);\n            fieldArray[index].prompt = this.intl.t('general.choose');\n            fieldArray[index].data_name = item.form + '-' + item.name;\n        });\n\n        const additionalFilters = this.additional ? this.getAdditionalFilters(this.additional) : [];\n\n        let search = {\n            type: 'searchbox',\n            name: 'q',\n            label: this.intl.t('general.search'),\n            value: get(this, 'values.q') ? get(this, 'values.q') : null,\n            data_name: 'search',\n        };\n\n        if (get(this, 'showColumns')) {\n            fieldArray = fieldArray.filter((item) =>\n                get(this, 'showColumns').split(',').includes(item.name),\n            );\n\n            // if showColumns is in use show fresearch only if given\n            if (!get(this, 'showColumns').split(',').includes('q')) search = null;\n        }\n\n        return fieldArray.concat(additionalFilters, search ? [search] : []);\n    }),\n\n    actions: {\n        /**\n         * custom_field is used with additional filters\n         * @param {*} custom_field\n         * @param {*} value\n         * @param {*} field\n         */\n        change(custom_field, value, field) {\n            if (!field) return;\n            if (custom_field) field = custom_field;\n            this.analytics.trackEvent({\n                category: this.form + ' report filters',\n                action: field,\n                label: 'Form-report',\n            });\n            get(this, 'change')(value, field);\n            if (this.filterChangeAction) {\n                this.filterChangeAction(value, field);\n            }\n        },\n        async clearFilters() {\n            this.analytics.trackEvent({\n                category: this.form + ' report filters',\n                action: 'clear filters',\n                label: 'Form-report',\n            });\n            await this.clearFilters();\n            this.notifyPropertyChange('filters');\n            if (this.filterChangeAction) {\n                this.filters.forEach((filter) => {\n                    let value = filter.value ? filter.value : '';\n                    this.filterChangeAction(value, filter.name);\n                });\n            }\n        },\n    },\n\n    /**\n     * additional filters are given ie. \"project.owner,user.lastname\"\n     * @param string add\n     */\n    getAdditionalFilters(add) {\n        const ret = [];\n        for (const field of add.split(',')) {\n            const fieldArr = field.split('.');\n\n            let fields = this.collector.fieldArray(fieldArr[0]).filter((field) => {\n                return field.name === fieldArr[1];\n            });\n            if (isEmpty(fields)) continue;\n            fields[0].label = fields[0].translated_name;\n            fields[0].customfield = fieldArr[0] + '[' + fieldArr[1] + ']';\n            fields[0].prompt = this.intl.t('general.choose');\n            fields[0].data_name = fields[0].form + '-' + fields[0].name;\n\n            ret.push(fields[0]);\n        }\n\n        return ret;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"aaaRz9c4\",\"block\":\"{\\\"symbols\\\":[\\\"filter\\\",\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column filter-comp-component\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"filters\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,1,[\\\"data_name\\\"]],\\\"-filter\\\"],null]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"filter-label\\\"],[8],[1,[23,1,[\\\"label\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"date\\\",[23,1,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"date-range-picker\\\",null,[[\\\"clearBtn\\\",\\\"start\\\",\\\"fieldName\\\",\\\"end\\\",\\\"value\\\",\\\"title\\\",\\\"wagePeriods\\\",\\\"dateChange\\\"],[[28,\\\"not-eq\\\",[[23,1,[\\\"features\\\",\\\"use_index\\\"]],\\\"index1\\\"],null],[23,1,[\\\"start\\\"]],[23,1,[\\\"name\\\"]],[23,1,[\\\"end\\\"]],[23,1,[\\\"value\\\"]],[23,1,[\\\"title\\\"]],true,[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",[23,1,[\\\"customfield\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[\\\"database\\\",[23,1,[\\\"type\\\"]]],null],[24,[\\\"useMultiFilter\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"database-multiple-filter\\\",null,[[\\\"filter\\\",\\\"value\\\",\\\"allFilters\\\",\\\"change\\\"],[[23,1,[]],[23,1,[\\\"value\\\"]],[24,[\\\"filters\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",[23,1,[\\\"customfield\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"searchbox\\\",[23,1,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                 \\\"],[1,[28,\\\"search-box\\\",null,[[\\\"value\\\",\\\"change\\\"],[[23,1,[\\\"value\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",[23,1,[\\\"customfield\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,1,[]]],[[\\\"change\\\",\\\"useAsFilter\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",[23,1,[\\\"customfield\\\"]]],null],true]]],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,2,[[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",null],null]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter clear-btn\\\"],[10,\\\"data-anchor\\\",\\\"clear-filters\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clearFilters\\\"]],[8],[1,[28,\\\"t\\\",[\\\"filters.clear\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/filters/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"QBSQGvx8\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"no-content\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,1]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,1],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"icon move move-Search\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.no-content\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/no-content/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"2eQxcoFo\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"filters\\\",\\\"add\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/filters\\\"],[[\\\"form\\\",\\\"change\\\",\\\"values\\\",\\\"clearFilters\\\"],[[24,[\\\"form\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChange\\\"],null],[24,[\\\"filterByValues\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"clearFilters\\\"],null]]]],[28,\\\"component\\\",[\\\"collector/form-report/add\\\"],[[\\\"onClick\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"add\\\"],null]]]]]]]]],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"dump-dev\\\",[],[[\\\"@text\\\"],[\\\"form-report\\\"]]],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"movenium-table-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,1]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"table\\\"],[[28,\\\"component\\\",[\\\"collector/form-report/ember-table\\\"],[[\\\"data\\\",\\\"errors\\\",\\\"form\\\",\\\"sorts\\\",\\\"updateSorts\\\",\\\"columns\\\",\\\"allColumns\\\",\\\"selectable\\\",\\\"inlineEdit\\\",\\\"rowActions\\\",\\\"statusTypes\\\",\\\"rowsPerPage\\\",\\\"actionBar\\\",\\\"showLoader\\\",\\\"showRemoved\\\",\\\"saveRows\\\",\\\"toggleInlineEdit\\\",\\\"setRowsPerPage\\\",\\\"exportPdf\\\",\\\"exportCsv\\\",\\\"showOrHideRemoved\\\",\\\"openExportModal\\\",\\\"refreshReport\\\",\\\"changeStatus\\\",\\\"handleLock\\\",\\\"handleRemove\\\",\\\"columnsChanged\\\",\\\"openGpsMap\\\",\\\"showLocationMap\\\",\\\"locationMarkers\\\",\\\"startEndMarkers\\\",\\\"hideSumRow\\\"],[[24,[\\\"data\\\"]],[24,[\\\"errors\\\"]],[24,[\\\"form\\\"]],[24,[\\\"sorts\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateSorts\\\"],null],[24,[\\\"columns\\\"]],[24,[\\\"allColumns\\\"]],[24,[\\\"selectable\\\"]],[24,[\\\"inlineEdit\\\"]],[24,[\\\"rowActions\\\"]],[24,[\\\"statusTypes\\\"]],[24,[\\\"rowsPerPage\\\"]],[28,\\\"component\\\",[\\\"collector/form-report/action-bar\\\"],[[\\\"actionClicked\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"actionClicked\\\"],null]]]],[24,[\\\"showLoader\\\"]],[24,[\\\"showRemoved\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveRows\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleInlineEdit\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"exportPdf\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"exportCsv\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showOrHideRemoved\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openExportModal\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"reload\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"columnsChanged\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openGpsMap\\\"],null],[24,[\\\"showLocationMap\\\"]],[24,[\\\"locationMarkers\\\"]],[24,[\\\"startEndMarkers\\\"]],[24,[\\\"hideSumRow\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[\\\"collector/form-report/ember-table\\\"],[[\\\"data\\\",\\\"form\\\",\\\"sorts\\\",\\\"updateSorts\\\",\\\"columns\\\",\\\"allColumns\\\",\\\"selectable\\\",\\\"inlineEdit\\\",\\\"rowActions\\\",\\\"statusTypes\\\",\\\"rowsPerPage\\\",\\\"actionBar\\\",\\\"showLoader\\\",\\\"showRemoved\\\",\\\"hideSumRow\\\",\\\"toggleInlineEdit\\\",\\\"saveRows\\\",\\\"setRowsPerPage\\\",\\\"exportPdf\\\",\\\"openExportModal\\\",\\\"exportCsv\\\",\\\"showOrHideRemoved\\\",\\\"refreshReport\\\",\\\"changeStatus\\\",\\\"handleLock\\\",\\\"handleRemove\\\",\\\"columnsChanged\\\"],[[24,[\\\"data\\\"]],[24,[\\\"form\\\"]],[24,[\\\"sorts\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateSorts\\\"],null],[24,[\\\"columns\\\"]],[24,[\\\"allColumns\\\"]],[24,[\\\"selectable\\\"]],[24,[\\\"inlineEdit\\\"]],[24,[\\\"rowActions\\\"]],[24,[\\\"statusTypes\\\"]],[24,[\\\"rowsPerPage\\\"]],[28,\\\"component\\\",[\\\"collector/form-report/action-bar\\\"],[[\\\"actionClicked\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"actionClicked\\\"],null]]]],[24,[\\\"showLoader\\\"]],[24,[\\\"showRemoved\\\"]],[24,[\\\"hideSumRow\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleInlineEdit\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"saveRows\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"exportPdf\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openExportModal\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"exportCsv\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showOrHideRemoved\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"reload\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleLock\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"handleRemove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"columnsChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"total-rows\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"b\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.total_rows\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge\\\"],[8],[1,[28,\\\"if\\\",[[23,0,[\\\"metaRowCount\\\"]],[23,0,[\\\"metaRowCount\\\"]],[23,0,[\\\"cachedRowCount\\\"]]],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\",\\\"pageChange\\\"],[[24,[\\\"rowsPerPage\\\"]],[24,[\\\"currentPage\\\"]],[24,[\\\"pageCount\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"pageChange\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showForm\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"collector-form-name\\\",[[24,[\\\"form\\\"]],true],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showForm\\\"]]],null],null],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/form-add/forms/auto\\\",null,[[\\\"only\\\",\\\"form\\\",\\\"rowAdded\\\",\\\"record\\\",\\\"close\\\"],[[24,[\\\"showColumns\\\"]],[24,[\\\"form\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"reload\\\"],null],[24,[\\\"showForm\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showForm\\\"]]],null],null],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showHistory\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"rowhistory.title\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showHistory\\\"]]],null],null],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-history-content\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\",\\\"hideTitle\\\"],[[24,[\\\"showHistory\\\",\\\"id\\\"]],[24,[\\\"form\\\"]],true]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showChangeStatusForAllPages\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"change-status\\\",null,[[\\\"close\\\",\\\"params\\\"],[\\\"closeShowChangeStatusForAllPages\\\",[24,[\\\"changeStatusForAllPagesParams\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showExportModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"export-modal\\\",null,[[\\\"initType\\\",\\\"sendEmailAction\\\",\\\"exportActions\\\",\\\"showExportModal\\\",\\\"includeApprovalLink\\\",\\\"statusFieldIsVisible\\\",\\\"form\\\",\\\"showApprovalLinkSelection\\\",\\\"count\\\",\\\"emailSent\\\",\\\"loading\\\",\\\"emailError\\\",\\\"removeModal\\\"],[[24,[\\\"exportInitType\\\"]],\\\"sendEmail\\\",\\\"handleExportActions\\\",[24,[\\\"showExportModal\\\"]],[24,[\\\"includeApprovalLink\\\"]],[24,[\\\"statusFieldIsVisible\\\"]],[24,[\\\"form\\\"]],[24,[\\\"showApprovalLinkSelection\\\"]],[24,[\\\"emailSendingCount\\\"]],[24,[\\\"emailSent\\\"]],[24,[\\\"showLoader\\\"]],[24,[\\\"emailError\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showExportModal\\\"]]],null],false],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/form-report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/history-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorHistoryCompComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nimport { sanitize } from 'dom-purify';\n\nimport { pluralize } from 'ember-inflector';\n\nimport { isArray } from '@ember/array';\n\nCollectorHistoryCompComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    capi: Ember.inject.service(),\n    intl: Ember.inject.service(),\n\n    // Component properties\n\n    // Rows that contain the history data\n    // format: [{\n    //   \"user\": \"Tauno Tulimies\",\n    //   \"date\": \"2015-11-27 11:20:47\",\n    //   \"columns\": [\n    //       {\n    //        \"column\": \"status\",\n    //        \"old\": null,\n    //        \"new\": \"approved\",\n    //        \"action\": \"edited\",\n    //        \"schemaid\": \"1953491\"\n    //       }\n    //   ]\n    // }, { ... }]\n    rows: null,\n    // Collector form external type that we are working with\n    form: null,\n    // Collector row id\n    row: null,\n\n    // Component methods\n\n    translations: {\n        famoco: 'Famoco',\n        timeclean: 'Timeclean',\n    },\n    // If no given rows we fetch them by ourselves because we are cool!\n    getRows: Em.on('init', function () {\n        var form, id, url;\n        this.set('changesArr', Em.A([]));\n        if (this.get('rows')) {\n            return;\n        }\n        form = this.get('form');\n        id = this.get('row');\n        Em.assert('If no rows are given you need to pass row id to history component', id);\n        Em.assert('Must always pass form external type to history component', form);\n        url = '/' + pluralize(form) + '/' + id + '/history';\n        this.set('loading', true);\n        return this.get('capi')\n            .request(url)\n            .then((data) => {\n                if (!data) {\n                    this.set('error', true);\n                } else {\n                    if (data['meta']) delete data['meta'];\n                    if (!isArray(data)) data = Object.values(data);\n\n                    this.set('rows', data);\n                }\n                return this.set('loading', false);\n            })\n            .catch((err) => {\n                this.set('error', err);\n                return this.set('loading', false);\n            });\n    }),\n    // Format given rows to be pretty\n    formatted_data: Em.computed('rows', function () {\n        var c,\n            crow,\n            field,\n            form,\n            formatted_rows,\n            i,\n            j,\n            k,\n            len,\n            len1,\n            parser,\n            ref,\n            row,\n            rows,\n            user_agent,\n            user_agent_obj;\n        parser = new UAParser(); // used for parsing user-agent data\n        rows = this.get('rows');\n        c = this.get('Collector');\n        form = this.get('form');\n        if (!rows) {\n            return;\n        }\n        Em.assert('Must always pass form external type to history component', form);\n        formatted_rows = [];\n        for (i = 0, len = rows.length; i < len; i++) {\n            row = rows[i];\n            user_agent_obj = parser.setUA(row.user_agent).getResult();\n            // parsing user-agent (may work or may not)\n            user_agent = [];\n            if (user_agent_obj.browser.name) {\n                user_agent['browser'] =\n                    sanitize(user_agent_obj.browser.name) +\n                    ' ' +\n                    sanitize(user_agent_obj.browser.version);\n                user_agent['engine'] =\n                    sanitize(user_agent_obj.engine.name) +\n                    ' ' +\n                    sanitize(user_agent_obj.engine.version);\n                user_agent['os'] =\n                    sanitize(user_agent_obj.os.name) + ' ' + sanitize(user_agent_obj.os.version);\n                if (user_agent_obj.device.model != null) {\n                    user_agent['device'] =\n                        sanitize(user_agent_obj.device.model) +\n                        ' ' +\n                        sanitize(user_agent_obj.device.vendor);\n                }\n                user_agent['raw'] = row.user_agent;\n            }\n            //else\n            // lets assume that if browser is undefined, it is nfc-device\n            //    user_agent['browser'] = @get('intl').t('rowhistory.nfc_device')\n            //    user_agent['raw'] = \"NFC\"\n            row.user_agent = user_agent;\n            if (row.columns) {\n                row.columns.forEach((column) => {\n                    var splittedMessage;\n                    if (column.message && column.message.substring(0, 7) === 'creator') {\n                        splittedMessage = column.message.split(':');\n                        return (row.user = splittedMessage[1]);\n                    }\n                });\n                ref = row.columns;\n                for (k = j = 0, len1 = ref.length; j < len1; k = ++j) {\n                    crow = ref[k];\n                    if (crow.action) {\n                        row.action = crow.action;\n                    }\n                    if (crow.message) {\n                        row.message = crow.message;\n                    }\n                    if (crow.source) {\n                        row.source = crow.source;\n                    }\n                    if (!crow.column) {\n                        continue;\n                    }\n                    field = c.field(form, crow.column);\n                    field.ext = field.name;\n                    row.columns[k].translated_name = field.translated_name;\n                    row.columns[k].old = crow.old\n                        ? c.format(crow.old, field, null, null, null, this.get('form'))\n                        : crow.old;\n                    row.columns[k].new = crow.new\n                        ? c.format(crow.new, field, null, null, null, this.get('form'))\n                        : crow.new;\n                }\n            }\n            if (!row.action && row.changes) {\n                row.action = 'edited';\n            }\n            formatted_rows.push(row);\n        }\n        return formatted_rows;\n    }),\n    actions: {\n        toggleChanges: function (index) {\n            var arr;\n            arr = this.get('changesArr');\n            if (arr.indexOf(index) === -1) {\n                arr.pushObject(index);\n            } else {\n                arr.removeObject(index);\n            }\n            return this.notifyPropertyChange('changesArr');\n        },\n    },\n});\n\nexport default CollectorHistoryCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"lHR5972e\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"index\\\",\\\"column\\\",\\\"changes\\\",\\\"fieldName\\\",\\\"removed\\\",\\\"added\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"hideTitle\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"rowhistory.title\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-fluid \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"development\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"webhook-log\\\",null,[[\\\"rowid\\\"],[[24,[\\\"row\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"formatted_data\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-offset-0 col-sm-12\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-user\\\"],[8],[9],[0,\\\" \\\"],[4,\\\"if\\\",[[23,1,[\\\"userid\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"user\\\",[[23,1,[\\\"userid\\\"]]],null],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[23,1,[\\\"user\\\"]],false]],\\\"parameters\\\":[]}],[0,\\\" - \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"date\\\"]],\\\"llll\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"action\\\"]],\\\"created\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"source\\\"]],\\\"famoco\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                - \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-NFCCheckpoint\\\"],[11,\\\"title\\\",[24,[\\\"translations\\\",\\\"famoco\\\"]]],[8],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,1,[\\\"source\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"source\\\"]],\\\"timeclean\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                - \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Timeclean\\\"],[11,\\\"title\\\",[24,[\\\"translations\\\",\\\"timeclean\\\"]]],[8],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,1,[\\\"source\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"changes\\\",\\\"client_id\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"changes\\\",\\\"client_id\\\"]],\\\"famoco\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                - \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-NFCCheckpoint\\\"],[8],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,1,[\\\"changes\\\",\\\"client_id\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"changes\\\",\\\"client_id\\\"]],\\\"timeclean\\\"],null],[28,\\\"is-equal\\\",[[23,1,[\\\"changes\\\",\\\"client_id\\\"]],\\\"timecleanapi\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                                - \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Timeclean\\\"],[8],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,1,[\\\"changes\\\",\\\"client_id\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                - \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-MultipleDevices\\\"],[8],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,1,[\\\"changes\\\",\\\"client_id\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"user_agent\\\",\\\"browser\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-offset-0 col-sm-12\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-MultipleDevices\\\"],[8],[1,[28,\\\"ember-popover\\\",null,[[\\\"side\\\",\\\"text\\\"],[\\\"right\\\",[23,1,[\\\"user_agent\\\",\\\"raw\\\"]]]]],false],[9],[0,\\\"   \\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"user_agent\\\",\\\"browser\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[23,1,[\\\"user_agent\\\",\\\"browser\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"user_agent\\\",\\\"engine\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            / \\\"],[1,[23,1,[\\\"user_agent\\\",\\\"engine\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"user_agent\\\",\\\"os\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            / \\\"],[1,[23,1,[\\\"user_agent\\\",\\\"os\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"user_agent\\\",\\\"device\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            / \\\"],[1,[23,1,[\\\"user_agent\\\",\\\"device\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-offset-1 col-sm-11\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"action\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"action\\\"]],\\\"message\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[23,1,[\\\"message\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"history.action.\\\",[23,1,[\\\"action\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"                \\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"changes\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[23,1,[\\\"changes\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,5,[]],\\\"client_id\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-offset-1 col-sm-11\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"code\\\",true],[8],[1,[28,\\\"translate-column\\\",null,[[\\\"form\\\",\\\"field\\\"],[[24,[\\\"form\\\"]],[23,5,[]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"history.action.added\\\"],null],false],[0,\\\" \\\"],[1,[23,4,[\\\"added\\\",\\\"length\\\"]],false],[0,\\\", \\\"],[1,[28,\\\"t\\\",[\\\"history.action.removed\\\"],null],false],[0,\\\": \\\"],[1,[23,4,[\\\"removed\\\",\\\"length\\\"]],false],[0,\\\" \\\\n                            \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleChanges\\\",[28,\\\"add\\\",[[23,2,[]],1],null]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[[28,\\\"add\\\",[[23,2,[]],1],null],[24,[\\\"changesArr\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                    (\\\"],[1,[28,\\\"t\\\",[\\\"history.action.hide_data\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    (\\\"],[1,[28,\\\"t\\\",[\\\"history.action.show_data\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                                \\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n \\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[[28,\\\"add\\\",[[23,2,[]],1],null],[24,[\\\"changesArr\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-offset-1 col-sm-11\\\"],[8],[0,\\\"                            \\\\n                            \\\"],[7,\\\"span\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"toggleChanges\\\",[28,\\\"add\\\",[[23,2,[]],1],null]]],[8],[9],[0,\\\"\\\\n                            \\\\n\\\"],[4,\\\"if\\\",[[23,4,[\\\"added\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"history-block\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"t\\\",[\\\"history.action.added\\\"],null],false],[0,\\\":\\\\n\\\"],[4,\\\"each\\\",[[23,4,[\\\"added\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"history-item\\\"],[8],[0,\\\"\\\\n                                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,5,[]],[24,[\\\"form\\\"]],[23,7,[]]]]],false],[0,\\\"\\\\n                                            \\\\n                                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\\n                            \\\\n\\\"],[4,\\\"if\\\",[[23,4,[\\\"removed\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"history-block\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"t\\\",[\\\"history.action.removed\\\"],null],false],[0,\\\":\\\\n\\\"],[4,\\\"each\\\",[[23,4,[\\\"removed\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"history-item\\\"],[8],[0,\\\"\\\\n                                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,5,[]],[24,[\\\"form\\\"]],[23,6,[]]]]],false],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\\n                            \\\\n                        \\\"],[9],[0,\\\"  \\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[],\\\"parameters\\\":[]}]],\\\"parameters\\\":[4,5]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[23,1,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-offset-1 col-sm-11\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"column\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"code\\\",true],[8],[1,[23,3,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"action\\\"]],\\\"message\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[\\\"new\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                : \\\"],[1,[23,3,[\\\"old\\\"]],false],[0,\\\" -> \\\"],[1,[23,3,[\\\"new\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                : \\\"],[1,[23,3,[\\\"old\\\"]],false],[0,\\\" ->\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                \\\\n\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1,2]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"rowhistory.no_history\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/history-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/history-modal/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorHistoryModalComponent;\n\nimport Ember from 'ember';\n\nCollectorHistoryModalComponent = Ember.Component.extend({\n    actions: {\n        removeModal: function () {\n            return this.sendAction('removeModal');\n        },\n    },\n});\n\nexport default CollectorHistoryModalComponent;\n","export default Ember.HTMLBars.template({\"id\":\"coQbbSJ5\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\"],[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"rowhistory.title\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\",\\\"hideTitle\\\"],[[24,[\\\"rowid\\\"]],[24,[\\\"form\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/history-modal/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/image-modal/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorImageModalComponent;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nCollectorImageModalComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    _modal: Ember.computed('modal', function () {\n        return this.get('modal').split(',');\n    }),\n    url: Em.computed('_modal', function () {\n        var splittedUrl, whiteListUrls;\n        if (this.get('_modal')[1].substr(0, 10) === 'data:image') {\n            return this.get('_modal')[1] + ',' + this.get('_modal')[2];\n        }\n        // File urls for dev, next and production\n        whiteListUrls = [\n            'https://movdev-bucket',\n            'https://next-customer-files',\n            'https://production-customer-files',\n        ];\n        if (this.get('_modal')[1].startsWith('http')) {\n            splittedUrl = this.get('_modal')[1].split('.');\n            if (whiteListUrls.includes(splittedUrl[0])) {\n                return this.get('_modal')[1];\n            }\n        } else {\n            return config.APP.COLLECTOR_API_URL + '/' + this.get('_modal')[1];\n        }\n    }),\n    actions: {\n        removeModal: function () {\n            window.history.back();\n            return this.set('modal', []);\n        },\n    },\n});\n\nexport default CollectorImageModalComponent;\n","export default Ember.HTMLBars.template({\"id\":\"GhcnrcW+\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"modal-container\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup modal-image-popup\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"img\\\",true],[11,\\\"src\\\",[29,[[22,\\\"url\\\"]]]],[10,\\\"class\\\",\\\"modal-image\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-overlay\\\"],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/image-modal/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/linker-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorLinkerCompComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nCollectorLinkerCompComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    capi: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    link: null,\n    model: null,\n    fields: null,\n    didInsertElement: function () {\n        return this.set('link_records', Em.A([]));\n    },\n    didReceiveAttrs: function () {\n        Ember.assert(\"Link must be given to linker-comp, ex 'task'\", this.get('link'));\n        Ember.assert('Model must be given to linker-comp, ex project record', this.get('model'));\n        Ember.assert(\n            'Model must be an ember-data record, could not find modelName',\n            this.get('model.constructor.modelName'),\n        );\n        Ember.assert('Model must have an id for linker-comp to work', this.get('model.id'));\n        Ember.assert(\n            \"Fields to show in list must be given to linker-comp property show_fields, ex 'name,number' or ['name','number']\",\n            this.get('show_fields'),\n        );\n        return this.getLinker().then(() => {\n            if (this.get('showLinks')) {\n                this.set('records', this.get('store').findAll(this.get('link')));\n                return this.getLinks();\n            }\n        });\n    },\n    target: Em.computed('model', function () {\n        return this.get('model.constructor.modelName');\n    }),\n    linkIds: Ember.computed.mapBy('link_records', 'id'),\n    link_records: Em.A([]),\n    projField: Em.computed(function () {\n        return this.get('Collector').field('worktime', 'project');\n    }),\n    getLinks: function () {\n        var c, link, promise;\n        c = this.get('Collector');\n        link = this.get('link');\n        promise = c.getLinks(this.get('model.id'), this.get('model.constructor.modelName'), link);\n        return promise.then((records) => {\n            var data, store_records;\n            data = records[c.pluralize(link)];\n            store_records = Em.A([]);\n            if (data) {\n                delete records.count;\n                this.get('store').pushPayload(records);\n                data.forEach((item) => {\n                    var record;\n                    record = this.get('store').peekRecord(link, item.id);\n                    if (link === 'user' && parseInt(this.get('model.id')) === item.id) {\n                        return;\n                    }\n                    if (\n                        link === 'employer' &&\n                        parseInt(this.get('model.employer.id')) === item.id\n                    ) {\n                        record.set('forced', true);\n                        this.set('records', this.get('store').findAll(this.get('link')));\n                    }\n                    return store_records.push(record);\n                });\n            }\n            this.set('original_links', store_records.mapBy('id'));\n            return this.set('link_records', store_records);\n        });\n    },\n    getLinker: function () {\n        var promise;\n        promise = this.Collector.ttapi({\n            url: 'get_linker',\n            data: {\n                rowid: this.get('model.id'),\n                form: this.get('link'),\n                linkto: this.get('linkTo'),\n            },\n            method: 'get',\n        });\n        return promise.then((data) => {\n            if (data['linker']) {\n                return this.set('showLinks', true);\n            } else {\n                return this.set('showLinks', false);\n            }\n        });\n    },\n    showButtons: Ember.computed('original_links.[]', 'link_records.[]', function () {\n        var orig, ret;\n        if (this.get('link_records.length') === this.get('original_links.length')) {\n            orig = this.get('original_links');\n            ret = false;\n            this.get('link_records').forEach(function (item) {\n                var ref;\n                if (((ref = item.get('id')), indexOf.call(orig, ref) < 0)) {\n                    return (ret = true);\n                }\n            });\n            return ret;\n        }\n        return true;\n    }),\n    //showButtons: true\n    removeAllLinks: function () {\n        var c, data, form, id, link_form, params;\n        this.set('link_records', Em.A([]));\n        this.set('records', this.get('store').findAll(this.get('link')));\n        c = this.get('Collector');\n        id = this.get('model.id');\n        form = this.get('model.constructor.modelName');\n        link_form = this.get('link');\n        data = {};\n        data[form] = {};\n        data[form]['link.' + c.pluralize(link_form)] = 'clear';\n        params = {\n            url: c.pluralize(form) + '/' + id + '?validation=off',\n            data: JSON.stringify(data),\n            type: 'PUT',\n        };\n        return this.get('capi').request('/' + params.url, {\n            data: params.data,\n            type: params.type,\n        });\n    },\n    search: function () {\n        return this.get('store')\n            .query(this.get('link'), {\n                q: this.get('searchvalue'),\n            })\n            .then((recs) => {\n                return this.set('records', recs);\n            });\n    },\n    //@getLinks()\n    actions: {\n        toggle: function (value) {\n            if (value) {\n                this.set('showLinks', true);\n                this.get('store')\n                    .findAll(this.get('link'))\n                    .then((data) => {\n                        var emp_id;\n                        //put users own employer to \"selected\" slot\n                        if (this.get('link') === 'employer') {\n                            emp_id = this.get('model.employer.id');\n                            data.forEach((row) => {\n                                if (emp_id === row.id) {\n                                    row.forced = true;\n                                    return this.get('link_records').unshiftObject(row);\n                                }\n                            });\n                        }\n                        this.set('records', data);\n                        return this.send('save');\n                    });\n            } else {\n                this.set('showLinks', false);\n                this.removeAllLinks();\n                this.set('searchvalue', null);\n            }\n            return false;\n        },\n        addLink: function (record) {\n            return this.get('link_records').unshiftObject(record);\n        },\n        removeLink: function (record) {\n            if (record.forced) {\n                return;\n            }\n            return this.get('link_records').removeObject(record);\n        },\n        save: function () {\n            var c, id;\n            id = this.get('model.id');\n            c = this.get('Collector');\n            this.set('saving', true);\n            return c\n                .saveLinks(\n                    id,\n                    this.get('model.constructor.modelName'),\n                    this.get('link'),\n                    this.get('linkIds'),\n                )\n                .then(\n                    (links) => {\n                        this.getLinks();\n                        this.set('saving', false);\n                        return this.set('showLinks', true);\n                    },\n                    (error) => {\n                        this.set('saving', false);\n                        this.set('error', error);\n                        return Em.run.later(\n                            this,\n                            function () {\n                                if (this.get('isDestroyed')) {\n                                    return;\n                                }\n                                return this.set('error', false);\n                            },\n                            5000,\n                        );\n                    },\n                );\n        },\n        cancel: function () {\n            return this.getLinks();\n        },\n        searchChanged: function (term) {\n            if (!term) {\n                this.set('searchvalue', null);\n            }\n            return this.search();\n        },\n        projectChanged: function (project) {\n            var c, link_ids;\n            if (Em.isEmpty(project)) {\n                return;\n            }\n            c = this.get('Collector');\n            this.set('saving', true);\n            //first remove all links\n            this.removeAllLinks();\n            link_ids = [];\n            //get project tasks\n            return c.getLinks(project.id, this.get('target'), this.get('link')).then((links) => {\n                var i, len, link, ref;\n                ref = links.tasks;\n                for (i = 0, len = ref.length; i < len; i++) {\n                    link = ref[i];\n                    link_ids.push(link.id);\n                }\n                return c\n                    .saveLinks(this.get('model.id'), this.get('target'), this.get('link'), link_ids)\n                    .then(\n                        (saved_links) => {\n                            this.getLinks();\n                            this.set('saving', false);\n                            return this.set('showLinks', true);\n                        },\n                        (error) => {\n                            this.set('saving', false);\n                            this.set('error', error);\n                            return Em.run.later(\n                                this,\n                                function () {\n                                    if (this.get('isDestroyed')) {\n                                        return;\n                                    }\n                                    return this.set('error', false);\n                                },\n                                5000,\n                            );\n                        },\n                    );\n            });\n        },\n    },\n});\n\nexport default CollectorLinkerCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"JDhKwa4Y\",\"block\":\"{\\\"symbols\\\":[\\\"record\\\",\\\"record\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.limited\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[24,[\\\"showLinks\\\"]],\\\"btn-default\\\",\\\"btn-primary\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",false]],[8],[1,[28,\\\"t\\\",[\\\"general.no\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"unless\\\",[[24,[\\\"showLinks\\\"]],\\\"btn-default\\\",\\\"btn-primary\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"general.yes\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLinks\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"link-component-container\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"target\\\"]],\\\"project\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"projects.edit.tasks.from_project\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"projField\\\"]]],[[\\\"change\\\",\\\"classes\\\"],[\\\"projectChanged\\\",\\\"form-control add-field\\\"]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[24,[\\\"error\\\",\\\"message\\\"]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showButtons\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-block btn-m-link \\\",[28,\\\"if\\\",[[24,[\\\"saving\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9]],\\\"parameters\\\":[]},null],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-block btn-m-default \\\",[28,\\\"if\\\",[[24,[\\\"saving\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.unselected\\\"],null],false],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"search-box\\\",null,[[\\\"value\\\",\\\"change\\\",\\\"classes\\\"],[[24,[\\\"searchvalue\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"searchChanged\\\"],null],\\\"form-control add-field\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group link-component-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"records\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"id\\\"]],[24,[\\\"model\\\",\\\"id\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,2,[\\\"id\\\"]],[24,[\\\"linkIds\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"list-group-item link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addLink\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"link-component-name\\\"],[11,\\\"title\\\",[29,[[28,\\\"format-option\\\",[[23,2,[]],[24,[\\\"show_fields\\\"]]],null]]]],[8],[1,[28,\\\"format-option\\\",[[23,2,[]],[24,[\\\"show_fields\\\"]]],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.selected\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group link-component-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"link_records\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"list-group-item link \\\",[28,\\\"if\\\",[[23,1,[\\\"forced\\\"]],\\\"forced\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"removeLink\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge link-comp-badge\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"link-component-name\\\"],[11,\\\"title\\\",[29,[[28,\\\"format-option\\\",[[23,1,[]],[24,[\\\"show_fields\\\"]]],null]]]],[8],[1,[28,\\\"format-option\\\",[[23,1,[]],[24,[\\\"show_fields\\\"]]],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/linker-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/nfc-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar NfcCompComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nNfcCompComponent = Ember.Component.extend({\n    Collector: Em.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    schema_map_to_type: [],\n    schema_map_to_exttype: [],\n    nfcIsOn: Ember.computed(function () {\n        var product;\n        product = Em.A(['products.rfid']);\n        return this.get('Collector').testNeeds(product);\n    }),\n    projects: Ember.computed(function () {\n        return this.get('store').query('project', {\n            rfid_device_id: '!(empty)',\n        });\n    }),\n    didReceiveAttrs: function () {\n        var self, types;\n        if (!this.get('nfcIsOn')) {\n            return;\n        }\n        self = this;\n        this._super();\n        types = [];\n        return this.get('store')\n            .findAll('form')\n            .then((raw_forms) => {\n                var hide_these_types,\n                    raw_fields,\n                    raw_form,\n                    schema_map_to_exttype,\n                    schema_map_to_type,\n                    skip_externals,\n                    tmp_types;\n                raw_form = raw_forms.filterBy('external_type', 'worktime');\n                raw_fields = raw_form.get('firstObject.fields');\n                this.set('raw_form', raw_form.get('firstObject'));\n                tmp_types = Em.A([]);\n                // these are not supported by nfc at all\n                skip_externals = [\n                    'date',\n                    'status',\n                    'group',\n                    'user',\n                    'starttime',\n                    'endtime',\n                    'work_hours',\n                    'customer',\n                    'employer',\n                ];\n                // these are not yet supported by collector/collector-field -component\n                hide_these_types = ['checkbox'];\n                schema_map_to_type = this.get('schema_map_to_type');\n                schema_map_to_exttype = this.get('schema_map_to_exttype');\n                raw_fields.forEach(function (field) {\n                    var name;\n                    if (\n                        skip_externals.indexOf(field.get('external_type')) < 0 &&\n                        hide_these_types.indexOf(field.get('type')) < 0\n                    ) {\n                        schema_map_to_type[field.get('schemaid')] = field.get('type');\n                        schema_map_to_exttype[field.get('schemaid')] = field.get('external_type');\n                        if (field.get('name').indexOf('lang') > 0) {\n                            name = self\n                                .get('intl')\n                                .t('worktime' + '.' + field.get('external_type'));\n                        } else {\n                            name = field.get('name');\n                        }\n                        return tmp_types.pushObject(\n                            Em.Object.create({\n                                id: field.get('schemaid'),\n                                name: name,\n                                type: field.get('type'),\n                            }),\n                        );\n                    }\n                });\n                return this.set('types', tmp_types);\n            });\n    },\n    buttonTypeChanged: function (value, button) {\n        var buttonRow, field, i, len, object, raw_form_fields;\n        // first get row\n        i = 0;\n        buttonRow = null;\n        len = this.get('buttonRows').length;\n        while (i < len) {\n            if (this.get('buttonRows')[i]['name'] === button) {\n                buttonRow = this.get('buttonRows')[i];\n                break;\n            }\n            i++;\n        }\n        Ember.set(buttonRow, 'value', null);\n        if (value === 'null') {\n            Ember.set(buttonRow, 'field', null);\n            return;\n        }\n        object = null;\n        raw_form_fields = this.get('raw_form.fields');\n        raw_form_fields.forEach(function (raw_field) {\n            if (value === raw_field.get('schemaid')) {\n                return (object = raw_field);\n            }\n        });\n        Ember.set(buttonRow, 'schemaid', object.get('schemaid'));\n        field = {\n            form: 'worktime',\n            name: this.get('schema_map_to_exttype')[object.get('schemaid')],\n            type: this.get('schema_map_to_type')[object.get('schemaid')],\n            options:\n                collector.forms.worktime.objects[\n                    this.get('schema_map_to_exttype')[object.get('schemaid')]\n                ].options,\n        };\n        Ember.set(buttonRow, 'field', field);\n        Ember.set(buttonRow, 'type', object.get('type'));\n        Ember.set(buttonRow, 'ext_type', object.get('external_type'));\n        return this.updateModel();\n    },\n    buttonValueChanged: function (value, button) {\n        var buttonRow, i, len;\n        if (Ember.typeOf(value) === 'instance') {\n            value = value.get('id');\n        }\n        buttonRow = null;\n        len = this.get('buttonRows').length;\n        i = 0;\n        while (i < len) {\n            if (this.get('buttonRows')[i]['name'] === button) {\n                buttonRow = this.get('buttonRows')[i];\n                break;\n            }\n            i++;\n        }\n        Ember.set(buttonRow, 'value', value);\n        return this.updateModel();\n    },\n    updateModel: function () {\n        var row_setting, tmp;\n        tmp = {};\n        tmp['tce_formid'] = this.get('raw_form.id');\n        this.get('buttonRows').forEach(function (row) {\n            if (row['value']) {\n                tmp[row['name'] + '_select'] = row['schemaid'];\n                return (tmp[row['name'] + '_' + row['schemaid']] = row['value']);\n            }\n        });\n        if (this.get('settings')) {\n            row_setting = this.get('settings');\n            row_setting.send('becomeDirty');\n            return row_setting.set('value', JSON.stringify(tmp));\n        }\n    },\n    actions: {\n        save: function () {\n            var row_setting, tmp;\n            tmp = {};\n            tmp['tce_formid'] = this.get('raw_form.id');\n            this.get('buttonRows').forEach(function (row) {\n                if (row['value']) {\n                    tmp[row['name'] + '_select'] = row['schemaid'];\n                    return (tmp[row['name'] + '_' + row['schemaid']] = row['value']);\n                }\n            });\n            if (this.get('settings')) {\n                row_setting = this.get('settings');\n                row_setting.set('value', JSON.stringify(tmp));\n                return row_setting.save();\n            }\n        },\n        actionBubblerA: function (value) {\n            return this.buttonTypeChanged(value, 'A');\n        },\n        actionBubblerB: function (value) {\n            return this.buttonTypeChanged(value, 'B');\n        },\n        actionBubblerC: function (value) {\n            return this.buttonTypeChanged(value, 'C');\n        },\n        actionBubblerD: function (value) {\n            return this.buttonTypeChanged(value, 'D');\n        },\n        actionBubblerE: function (value) {\n            return this.buttonTypeChanged(value, 'E');\n        },\n        actionBubblerF: function (value) {\n            return this.buttonTypeChanged(value, 'F');\n        },\n        changeButtonValueA: function (value) {\n            return this.buttonValueChanged(value, 'A');\n        },\n        changeButtonValueB: function (value) {\n            return this.buttonValueChanged(value, 'B');\n        },\n        changeButtonValueC: function (value) {\n            return this.buttonValueChanged(value, 'C');\n        },\n        changeButtonValueD: function (value) {\n            return this.buttonValueChanged(value, 'D');\n        },\n        changeButtonValueE: function (value) {\n            return this.buttonValueChanged(value, 'E');\n        },\n        changeButtonValueF: function (value) {\n            return this.buttonValueChanged(value, 'F');\n        },\n        projectSelected: function (projectid) {\n            var buttons;\n            // every time project is changed, init buttons so that old values are removed\n            buttons = [\n                {\n                    name: 'A',\n                    type: null,\n                    value: null,\n                    schemaid: null,\n                },\n                {\n                    name: 'B',\n                    type: null,\n                    value: null,\n                    schemaid: null,\n                },\n                {\n                    name: 'C',\n                    type: null,\n                    value: null,\n                    schemaid: null,\n                },\n                {\n                    name: 'D',\n                    type: null,\n                    value: null,\n                    schemaid: null,\n                },\n                {\n                    name: 'E',\n                    type: null,\n                    value: null,\n                    schemaid: null,\n                },\n                {\n                    name: 'F',\n                    type: null,\n                    value: null,\n                    schemaid: null,\n                },\n            ];\n            return this.get('store')\n                .query('row-setting', {\n                    toid: projectid,\n                })\n                .then((data) => {\n                    var buttonRow,\n                        field,\n                        key,\n                        letter,\n                        schema_map_to_exttype,\n                        schema_map_to_type,\n                        value,\n                        values;\n                    this.set('buttonRows', buttons);\n                    if (data.get('firstObject')) {\n                        schema_map_to_type = this.get('schema_map_to_type');\n                        schema_map_to_exttype = this.get('schema_map_to_exttype');\n                        values = JSON.parse(data.get('firstObject.value'));\n                        for (key in values) {\n                            value = values[key];\n                            // get schemaid\n                            if (key.indexOf('_select') > 0) {\n                                letter = key.substr(0, 1);\n                                buttonRow = buttons.findBy('name', letter);\n                                Ember.set(buttonRow, 'schemaid', value);\n                                Ember.set(buttonRow, 'type', schema_map_to_type[value]);\n                                field = {\n                                    form: 'worktime',\n                                    name: schema_map_to_exttype[value],\n                                    type: schema_map_to_type[value],\n                                    options:\n                                        collector.forms.worktime.objects[\n                                            schema_map_to_exttype[value]\n                                        ].options,\n                                };\n                                Ember.set(buttonRow, 'field', field);\n                            }\n                            // get value\n                            if (parseInt(key.substr(2))) {\n                                letter = key.substr(0, 1);\n                                buttonRow = buttons.findBy('name', letter);\n                                Ember.set(buttonRow, 'value', value);\n                                field = buttonRow['field'];\n                                field['value'] = value;\n                                Ember.set(buttonRow, 'field', field);\n                            }\n                        }\n                        return this.set('settings', data.get('firstObject'));\n                    } else {\n                        return this.set(\n                            'settings',\n                            this.get('store').createRecord('row-setting', {\n                                name: 'timeclean_button',\n                                toid: this.get('project_id'),\n                                value: null,\n                            }),\n                        );\n                    }\n                });\n        },\n    },\n});\n\nexport default NfcCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"asccB87u\",\"block\":\"{\\\"symbols\\\":[\\\"button\\\",\\\"index\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"nfcIsOn\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\"],[[24,[\\\"projects\\\"]],\\\"form-control\\\",[24,[\\\"project_id\\\"]],\\\"projectSelected\\\",[28,\\\"t\\\",[\\\"workday.select_project\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project_id\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well nfc-settings\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"buttonRows\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6 col-sm-6 nfc-button-row\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-5\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"circle\\\"],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-7 dropdowns\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\"],[[24,[\\\"types\\\"]],\\\"form-control\\\",[23,1,[\\\"schemaid\\\"]],[28,\\\"concat\\\",[\\\"actionBubbler\\\",[23,1,[\\\"name\\\"]]],null],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"field\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,1,[\\\"field\\\"]]],[[\\\"change\\\"],[[28,\\\"concat\\\",[\\\"changeButtonValue\\\",[23,1,[\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"compare-helper\\\",[2,[23,2,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix visible-sm-block\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"settings\\\",\\\"hasDirtyAttributes\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/nfc-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/record-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorRecordCompComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport saveTheChildren from '../../../mixins/save-the-children';\n\nimport validator from 'tt4/classes/validations';\n\nimport { isArray } from '@ember/array';\n\nimport { copy } from 'ember-copy';\n\nimport $ from 'jquery';\n\nCollectorRecordCompComponent = Ember.Component.extend(saveTheChildren, {\n    // Properties\n\n    saveTheChildrenRawErrors: true,\n    // Store so we can fetch record\n    store: Em.inject.service(),\n    modalScroller: Ember.inject.service(),\n    evented: Ember.inject.service(),\n    // Collector service\n    Collector: Em.inject.service('collector-service'),\n    // Form of the record\n    form: null,\n    // ID of the record\n    record_id: null,\n    // Record we are working with\n    record: null,\n    // Fields on this form\n    fields: Em.computed('record', {\n        set: function (key, value) {\n            return (this._value = value);\n        },\n        get: function () {\n            var c, fields, form, mandatory, record, skip;\n            if (this._value) {\n                return this._value;\n            }\n            // Collector service\n            c = this.get('Collector');\n            // Collector form\n            form = this.get('form');\n            // Record\n            record = this.get('record');\n            // if needed, you can skip fields or add mandatory-settings to them (used in separating one-day and multi-day absences)\n            skip = this.get('settings.skip');\n            mandatory = this.get('settings.mandatory');\n            if (!record) {\n                return;\n            }\n            Em.assert('You need to provide the FORM for record comp', form);\n            // Fetch form fields with collector service\n            fields = this._mapFields(c.fieldArray(form));\n            return fields.filter((item) => {\n                var ref, ref1, ref2, ref3;\n                if (item.features.stashed) {\n                    return false;\n                }\n                if (\n                    (ref = item.type) === 'fileupload' ||\n                    ref === 'row_linker' ||\n                    ref === 'rowlink' ||\n                    ref === 'device' ||\n                    ref === 'dropdown_language'\n                ) {\n                    return false;\n                }\n                if (\n                    form === 'user' &&\n                    ((ref1 = item.name) === 'fingerprint' || ref1 === 'setting_wap_font_size')\n                ) {\n                    return false;\n                }\n                if (skip && ((ref2 = item.name), indexOf.call(skip, ref2) >= 0)) {\n                    return false;\n                }\n                if (mandatory && ((ref3 = item.name), indexOf.call(mandatory, ref3) >= 0)) {\n                    item.features = copy(item.features);\n                    Em.set(item, 'features.mandatory', true);\n                }\n                return true;\n            });\n        },\n    }),\n    _mapFields: function (fields) {\n        var record;\n        // Fetch form fields with collector service\n        record = this.get('record');\n        return fields.map((field) => {\n            var value;\n            if (field.name === 'location' || field.name === 'end_location') {\n                field.type = 'gpslocation';\n            }\n            if (field.type === 'database' && record.get(field.name)) {\n                field.value = record.get(field.name + '.id');\n            } else if (field.type !== 'databasearray') {\n                field.value = record.get(field.name);\n            }\n            if (\n                this.get('record.isNew') &&\n                field.features.default_value &&\n                Em.isEmpty(record.get(field.name))\n            ) {\n                value = this.getDefaultValue(field);\n                field.value = value;\n                this.send('setValue', value, field.name);\n            }\n            return this.returnField(field);\n        });\n    },\n    // Public way to do whatever you like with the field by extending\n    returnField: function (field) {\n        return field;\n    },\n    getDefaultValue: function (field) {\n        if (field.type === 'date') {\n            if (field.features.default_value === 'today') {\n                return moment().format('YYYY-MM-DD');\n            } else if (field.features.default_value === 'yesterday') {\n                return moment().subtract(1, 'day').format('YYYY-MM-DD');\n            }\n        }\n        return field.features.default_value;\n    },\n    addNeededObservers: Em.on(\n        'init',\n        Em.observer('fields', function () {\n            if (!this.get('fields')) {\n                return;\n            }\n            return this.get('fields').forEach((field) => {\n                var observe_fields;\n                // hide array means there are fields that are visible is some conditions\n                if (Em.isArray(field.features.hide)) {\n                    observe_fields = this.getFieldsToObserve(field.features.hide);\n                    return observe_fields.forEach((observe_field) => {\n                        this.addObserver(\n                            'record.' + observe_field,\n                            {\n                                conditions: field.features.hide,\n                                field: field.name,\n                            },\n                            this.setFieldVisibility,\n                        );\n                        return this.get('record').notifyPropertyChange(observe_field);\n                    });\n                }\n            });\n        }),\n    ),\n    getFieldsToObserve: function (condition_array) {\n        var condition, field, i, len, temp, value;\n        temp = [];\n        for (i = 0, len = condition_array.length; i < len; i++) {\n            condition = condition_array[i];\n            for (field in condition) {\n                value = condition[field];\n                temp.push(field);\n            }\n        }\n        return temp;\n    },\n    setFieldVisibility: function (sender, key) {\n        var features, field;\n        // set field visibility according to are conditions met or not\n        field = sender.get('fields').findBy('name', this.field);\n        features = copy(field.features);\n        Ember.set(features, 'hide', !sender.areTheseMet(this.conditions));\n        Ember.set(field, 'features', features);\n        return sender.notifyPropertyChange('showFields');\n    },\n    areTheseMet: function (condition_array) {\n        if (condition_array && !isArray(condition_array)) {\n            return true;\n        } else if (isArray(condition_array) && this.get('record')) {\n            return validator._is_visible(this.get('record'), condition_array);\n        }\n        return false;\n    },\n    showFields: Em.computed('fields', 'record', function () {\n        if (!this.get('fields')) {\n            return;\n        }\n        return this.get('fields').reject((field) => {\n            var model;\n            if (typeof field.features.hide === 'object') {\n                model = this.get('record');\n                if (\n                    field.features.hide.condition === \"'!$editing'\" ||\n                    field.features.hide.condition === '!$editing'\n                ) {\n                    // hide if adding\n                    if (model.get('isNew')) {\n                        // adding\n                        return true; // hide\n                    } else {\n                        return false; // do not hide\n                    }\n                }\n                if (\n                    field.features.hide.condition === \"'$editing'\" ||\n                    field.features.hide.condition === '$editing'\n                ) {\n                    // hide if editing\n                    if (!model.get('isNew')) {\n                        // editing\n                        return true; // hide\n                    } else {\n                        return false; // do not hide\n                    }\n                }\n                return true;\n            } else {\n                return field.features.hide;\n            }\n        });\n    }),\n\n    //   Methods\n\n    recordSetter: Em.on(\n        'init',\n        Em.observer('form', 'record_id', function () {\n            var form, found, id, self, store, values;\n            self = this;\n            // Collector form external type\n            form = this.get('form');\n            // Record ID\n            id = this.get('record_id');\n            // Store\n            store = this.get('store');\n            Em.assert('You need to provide the FORM for record comp', form);\n            // If we don't have a record ID we create a new record\n            if (!id) {\n                values = {};\n                if (this.get('settings.defaultValues')) {\n                    values = this.get('settings.defaultValues');\n                }\n                Ember.run.next(this, function () {\n                    return this.set('record', store.createRecord(form.dasherize(), values));\n                });\n                return;\n            }\n            // Get record from store\n            if (id === 'new') {\n                found = store.peekAll(form.dasherize()).find((record) => {\n                    return record.get('hasDirtyAttributes');\n                });\n                Ember.assert(\n                    found,\n                    \"When using record-comp with id 'new' you must add dirty record to store before calling this\",\n                );\n                return Ember.run.next(this, function () {\n                    return this.set('record', found);\n                });\n            } else {\n                return store\n                    .findRecord(form.dasherize(), id, {\n                        include: true,\n                    })\n                    .then(function (rec) {\n                        return Ember.run.next(this, function () {\n                            return self.set('record', rec);\n                        });\n                    });\n            }\n        }),\n    ),\n    refreshSettings: Ember.on(\n        'init',\n        Ember.observer('settings.form', 'settings.id', function () {\n            var getSettings, self, settings;\n            getSettings = ['form', 'id'];\n            settings = this.get('settings');\n            if (!settings) {\n                return;\n            }\n            self = this;\n            return $.each(getSettings, function (key, item) {\n                var new_value, old_value;\n                if ((!item) in settings) {\n                    return;\n                }\n                old_value = self.get(item);\n                new_value = settings[item];\n                if (old_value !== new_value) {\n                    return self.set(item, new_value);\n                }\n            });\n        }),\n    ),\n    willClearRender: function () {\n        if (!this.get('fields')) {\n            return;\n        }\n        return this.get('fields').forEach((field) => {\n            var observe_fields;\n            if (Em.isArray(field.features.hide)) {\n                observe_fields = this.getFieldsToObserve(field.features.hide);\n                return observe_fields.forEach((observe_field) => {\n                    return this.removeObserver(\n                        'record.' + observe_field,\n                        {\n                            conditions: field.features.hide,\n                            field: field.name,\n                        },\n                        this.setFieldVisibility,\n                    );\n                });\n            }\n        });\n    },\n    stashed_fields: Em.computed('record', function () {\n        var c, fields, form, record;\n        // Collector service\n        c = this.get('Collector');\n        // Collector form\n        form = this.get('form');\n        // Record\n        record = this.get('record');\n        if (!record) {\n            return;\n        }\n        Em.assert('You need to provide the FORM for record comp', form);\n        // Fetch form fields with collector service\n        fields = this._mapFields(c.fieldArray(form));\n        return fields.filterBy('features.stashed');\n    }),\n    scrollIfErrors: function () {\n        return Em.run.next(this, function () {\n            if ($('.has-error').length > 0) {\n                return this.get('modalScroller').scrollVertical($('.has-error')[0]);\n            }\n        });\n    },\n    actions: {\n        setValue: function (value, field, set = true) {\n            var record;\n            record = this.get('record');\n            if (set) {\n                if (Ember.typeOf(field) === 'object' && field.type === 'databasearray') {\n                    return record.set(field.form, value);\n                } else {\n                    return record.set(field, value);\n                }\n            }\n        },\n        save: function () {\n            var record;\n            this.scrollIfErrors();\n            record = this.get('record');\n            this.set('saving', true);\n            return record.validate().then(() => {\n                if (record.get('isValid')) {\n                    return this.save_record(record).then(\n                        () => {\n                            this.set('saving', false);\n                            this.send('afterSave', this.get('settings'), this.get('record'));\n                            this.get('evented').storeEvent(\n                                'insert',\n                                this.get('form'),\n                                this.get('record'),\n                            );\n                            return this.sendAction(\n                                'recordSaved',\n                                this.get('settings'),\n                                this.get('record'),\n                            );\n                        },\n                        (e) => {\n                            this.set('saving', false);\n                            return this.set('validationMessage', e);\n                        },\n                    );\n                } else {\n                    return this.set('saving', false);\n                }\n            });\n        },\n        afterSave: function (settings, record) {},\n        cancel: function () {\n            if (this.get('record')) {\n                if (this.get('record.isNew')) {\n                    this.get('record').deleteRecord();\n                } else {\n                    this.get('record').rollbackAttributes();\n                }\n            }\n            return this.sendAction('cancelClicked', this.get('settings'), true);\n        },\n        show_stashed_fields: function () {\n            this.toggleProperty('stashed_visible');\n            return false;\n        },\n    },\n});\n\nexport default CollectorRecordCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"XJHGnjKG\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"record-comp-content\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"messageBox\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning modal-message-box\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[22,\\\"messageBox\\\"],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"showFields\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/field-container\\\",[[23,2,[]]],[[\\\"change\\\",\\\"model\\\"],[\\\"setValue\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"stashed_fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"stashed-fields\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"show-stashed-link\\\"],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_stashed_fields\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.add.hide_stashed\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.add.show_stashed\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"glyphicon \\\",[28,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]],\\\"glyphicon-chevron-up\\\",\\\"glyphicon-chevron-down\\\"],null],\\\" \\\"]]],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"panel panel-default \\\",[28,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]],\\\"show-stashed-div\\\",\\\"hide-stashed-div\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"stashed_fields\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"collector/field-container\\\",[[23,1,[]]],[[\\\"change\\\",\\\"model\\\"],[\\\"setValue\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"validationMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"error-message\\\",null,[[\\\"error\\\"],[[24,[\\\"validationMessage\\\"]]]]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row record-comp-buttons\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\",\\\"name\\\",\\\"form\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]],\\\"save-button\\\",[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[12,\\\"name\\\",\\\"cancel-button\\\"],[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-cancel-button\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"compact\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/record-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/record-custom-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorRecordCustomCompComponent;\n\nimport Ember from 'ember';\n\nimport recordComp from '../record-comp/component';\n\nCollectorRecordCustomCompComponent = recordComp.extend({\n    recordSetter: Em.on(\n        'init',\n        Em.observer('form', 'record_id', function () {\n            if (this.get('record')) {\n                return;\n            }\n            return this._super();\n        }),\n    ),\n    actions: {\n        setValue: function (value, field) {\n            if (!field) {\n                return;\n            }\n            this._super(value, field);\n            return this.sendAction('bubbleChange', value, field);\n        },\n    },\n});\n\nexport default CollectorRecordCustomCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"dt5SqXD0\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"field\\\",\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"showFields\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[25,3]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[14,3,[[23,0,[]],[23,2,[]],[24,[\\\"record\\\"]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-container\\\",[[23,2,[]]],[[\\\"change\\\",\\\"model\\\"],[\\\"setValue\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[2]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"stashed_fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"stashed-fields\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"show-stashed-link\\\"],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_stashed_fields\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.add.hide_stashed\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.add.show_stashed\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"glyphicon \\\",[28,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]],\\\"glyphicon-chevron-up\\\",\\\"glyphicon-chevron-down\\\"],null],\\\" \\\"]]],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"panel panel-default \\\",[28,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]],\\\"show-stashed-div\\\",\\\"hide-stashed-div\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"stashed_fields\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"collector/field-container\\\",[[23,1,[]]],[[\\\"change\\\",\\\"model\\\"],[\\\"setValue\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"validationMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"error-message\\\",null,[[\\\"error\\\"],[[24,[\\\"validationMessage\\\"]]]]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/record-custom-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/record-view-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ColletorRecordViewCompComponent;\n\nimport Ember from 'ember';\n\nColletorRecordViewCompComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    _fields: Ember.computed('fields', function () {\n        var c, fields, model;\n        fields = this.get('fields');\n        model = this.get('model');\n        if (!fields) {\n            return;\n        }\n        if (!model) {\n            return;\n        }\n        c = this.get('Collector');\n        fields.forEach(function (field) {\n            return (field.value = c.format(\n                model.get(field.name),\n                field,\n                null,\n                model,\n                false,\n                model.get('constructor.modelName'),\n            ));\n        });\n        return fields;\n    }),\n});\n\nexport default ColletorRecordViewCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"mD8fGJHs\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"dd\\\",\\\"ddm\\\",\\\"export\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"exports\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more pull-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"exports\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export\\\",[23,4,[]]]],[8],[1,[28,\\\"t\\\",[\\\"general.export\\\"],[[\\\"type\\\"],[[23,4,[]]]]],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"translated_name\\\"]],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[23,1,[\\\"value\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/record-view-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/report-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormReportComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport pdfExport from '../../../mixins/pdf-export';\n\nimport collector from '../../../classes/collector';\n\nimport config from '../../../config/environment';\n\nimport statusUtil from 'tt4/utils/status';\n\nimport $ from 'jquery';\n\nimport { pluralize } from 'ember-inflector';\n\nFormReportComponent = Ember.Component.extend(pdfExport, {\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    sessionGlobals: Em.inject.service(),\n    dialogs: Ember.inject.service(),\n    capi: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    checked_rows: null,\n    //# Set the form which data will be fetched\n    form: null,\n    //# Query parameters for fetching data from api. format [{name: \"param1\", value: \"value1\"},...]\n    query: null,\n    //# List of columns to be hidden. Format is string \"column1,column2\"\n    hide_columns: null,\n    //# List of columns to be shown. Format is string \"column1,column2\".\n    // This overcomes hide_columns setting if used\n    show_columns: null,\n    //# Data can be grouped by columns. Format is string \"column1,column2\"\n    groupBy: null,\n    //# Data can be ordered by columns. Format is string \"column1(-),column2(-)\"\n    order: null,\n    //# Header over the table\n    header: null,\n    imagePromises: [],\n    //# Row action buttons like edit and remove\n    rowActions: [\n        {\n            action: 'editRow',\n            icon: 'move move-Pencil',\n        },\n        {\n            action: 'removeRow',\n            icon: 'move move-Delete',\n        },\n    ],\n    //# PRIVATE PARAMETERS\n\n    //# Rows per page\n    rowsPerPage: Em.computed('settings.rowsPerPage', function () {\n        return this.get('settings.rowsPerPage') || 25;\n    }),\n    currentPage: 1,\n    //# summable field type list\n    summableTypes: ['hours', 'number', 'price', 'big_price', 'checkbox'],\n    groupableColumnList: [\n        'date',\n        'hours',\n        'number',\n        'price',\n        'big_price',\n        'dropdown_values',\n        'dropdown_options',\n    ],\n    /*\n\n  METHODS FOR INITIALIZING SETTINGS AND OBSERVING settings PROPERTY\n\n  */\n    refreshSettings: Ember.on(\n        'init',\n        Ember.observer(\n            'settings.form',\n            'settings.group',\n            'settings.query',\n            'settings.order',\n            'settings.row_info_status',\n            function () {\n                var getSettings, self, settings;\n                getSettings = [\n                    'form',\n                    'group',\n                    'query',\n                    'header',\n                    'hide_columns',\n                    'show_columns',\n                    'order',\n                    'row_info_status',\n                ];\n                settings = this.get('settings');\n                if (!settings) {\n                    return;\n                }\n                self = this;\n                return $.each(getSettings, function (key, item) {\n                    var new_value, old_value;\n                    if ((!item) in settings) {\n                        return;\n                    }\n                    old_value = self.get(item);\n                    new_value = settings[item];\n                    if (old_value !== new_value) {\n                        return self.set(item, new_value);\n                    }\n                });\n            },\n        ),\n    ),\n    /*\n\n  PROPERTIES AND METHODS FOR DATA\n\n  */\n    didInsertElement: function () {\n        return this.set('checked_rows', Em.A([]));\n    },\n    // querying form server is done here\n    data: Ember.computed(\n        'form',\n        'group',\n        'query',\n        'currentPage',\n        'order',\n        'statusChanged',\n        'row_info_status',\n        'rowsPerPage',\n        'status',\n        'settings.refreshRows',\n        function () {\n            var c,\n                data,\n                datefieldname,\n                end,\n                field,\n                form,\n                group,\n                order,\n                param,\n                params,\n                query,\n                settings,\n                start,\n                status,\n                use_default_even_without_index;\n            ({ form, query, group, order, status } = this.getProperties(\n                'form',\n                'query',\n                'group',\n                'order',\n                'status',\n            ));\n            if (!form) {\n                return null;\n            }\n            if (!this.get('checked_rows')) {\n                this.set('checked_rows', Em.A([]));\n            }\n            params = {};\n            settings = this.get('settings');\n            if (this.get('settings.calendar') === true) {\n                this.set('rowsPerPage', 100);\n            }\n            if (query) {\n                query.forEach((item) => {\n                    if (item.name === 'date') {\n                        Ember.run.next(this, function () {\n                            return this.set('dateRange', item.value);\n                        });\n                    }\n                    if (item.value !== 'null') {\n                        return (params[item.name] = item.value);\n                    }\n                });\n            } else {\n                // this is not the correct way to do this but only way I figured out :|\n                // form-filters should be able to update these automatically - Veikko\n                if (form) {\n                    params = this.get('sessionGlobals').get('filters_' + form) || null;\n                }\n                // try also fetching from global filters if form specifics not found\n                if (params === null) {\n                    params = this.get('sessionGlobals').get('filters') || {};\n                }\n                c = this.get('Collector');\n                use_default_even_without_index = false;\n                if (c.fieldExists(form, 'date')) {\n                    datefieldname = 'date';\n                } else if (c.fieldExists(form, 'startdate') && form === 'abcense') {\n                    use_default_even_without_index = true;\n                    datefieldname = 'startdate';\n                } else {\n                    datefieldname = null;\n                }\n                if (params[datefieldname] == null && datefieldname) {\n                    field = c.field(form, datefieldname);\n                    if (field) {\n                        if (use_default_even_without_index || 'use_index' in field.features) {\n                            start = params.date\n                                ? params.date.split('_')[0]\n                                : moment().startOf('week').format('YYYY-MM-DD');\n                            end = params.date\n                                ? params.date.split('_')[1]\n                                : moment().endOf('week').format('YYYY-MM-DD');\n                            params[datefieldname] = start + '_' + end;\n                        }\n                    }\n                }\n            }\n            for (param in params) {\n                if (param.includes(':')) {\n                    continue;\n                }\n                if (param === 'q') {\n                    continue;\n                }\n                if (params[param] === null) {\n                    delete params[param];\n                }\n                if (param === 'groupBy') {\n                    continue;\n                }\n                if (!this.testFieldExistance(form, param)) {\n                    delete params[param];\n                }\n            }\n            params = this.transformQuery(params);\n            params = this.special_queryParams(params, form);\n            params.sideload = this.getSideload();\n            if (this.get('settings.row_info_status')) {\n                params.row_info_status = this.get('settings.row_info_status');\n            }\n            if (group) {\n                params.groupBy = group;\n            }\n            if (order) {\n                params.order = order;\n            }\n            if (status) {\n                params.status = status;\n            }\n            params = this.add_limits(params);\n            data = this.get('store').query(form, params);\n            data.then((data) => {\n                if (data.get('meta.count') > 100 && this.get('settings.calendar') === true) {\n                    return this.get('dialogs').alert(this.get('intl').t('report.too_many'));\n                }\n            });\n            return data;\n        },\n    ),\n    transformQuery: function (params) {\n        var pArr, param, value;\n        for (param in params) {\n            value = params[param];\n            if (param.indexOf('.') > -1) {\n                pArr = param.split('.');\n                delete params[param];\n                params[pArr[0] + '[' + pArr[1] + ']'] = value;\n            }\n        }\n        return params;\n    },\n    special_queryParams: function(params, form) {\n        \n        if (!this.get('useSpecialQueryParams')) return params;\n        \n        // absense form has startdate and enddate fields, but we want to use them as one field so all absences are returned\n        if (form === 'abcense' && Object.keys(params).includes('startdate')) {\n            const newParams = {startdate_enddate: params.startdate, ...params}\n            delete newParams.startdate\n            return newParams\n        }\n        return params\n    },\n    getSideload: function () {\n        var column, columns, i, len, ret, subfields, subform;\n        columns = this.get('columns');\n        ret = [];\n        for (i = 0, len = columns.length; i < len; i++) {\n            column = columns[i];\n            [subform, subfields] = this.parseColumn(column);\n            if (subfields) {\n                ret.push(subform + '.' + subfields[0]);\n            }\n        }\n        if (ret.length > 0) {\n            return ret;\n        } else {\n            return true;\n        }\n    },\n    // all data is formatted here before rendering\n    formatted_data: Ember.computed('data.[]', function () {\n        return this.formatData('html');\n    }),\n    pdf_formatted_data: Ember.computed('data.[]', 'checked_rows.[]', function () {\n        return this.formatData('pdf');\n    }),\n    csv_formatted_data: Ember.computed('data.[]', function () {\n        return this.formatData('csv');\n    }),\n    xls_formatted_data: Ember.computed('data.[]', function () {\n        return this.formatData('excel');\n    }),\n    calendar_formatted_data: Ember.computed('data.[]', function () {\n        return this.formatData('calendar');\n    }),\n    asCsvArray: Ember.computed(function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise, rows;\n            promise = this.get('data');\n            rows = [];\n            return promise.then(() => {\n                var column, columns, csv_data, i, j, len, len1, newrow, row;\n                rows.push(\n                    this.get('translated_columns').map(function (item) {\n                        if (Ember.String.isHTMLSafe(item)) {\n                            return item.string;\n                        }\n                        return item;\n                    }),\n                );\n                csv_data = this.get('csv_formatted_data');\n                columns = this.get('columnList');\n                for (i = 0, len = csv_data.length; i < len; i++) {\n                    row = csv_data[i];\n                    newrow = [];\n                    for (j = 0, len1 = columns.length; j < len1; j++) {\n                        column = columns[j];\n                        newrow.push(row[column]);\n                    }\n                    rows.push(newrow);\n                }\n                return resolve(rows);\n            });\n        });\n    }),\n    //        header: @get 'settings.header'\n    asXlsArray: Ember.computed(function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise, rows;\n            promise = this.get('data');\n            rows = [];\n            return promise.then(() => {\n                var column, columns, csv_data, i, j, len, len1, newrow, row;\n                rows.push(\n                    this.get('translated_columns').map(function (item) {\n                        if (Ember.String.isHTMLSafe(item)) {\n                            return item.string;\n                        }\n                        return item;\n                    }),\n                );\n                csv_data = this.get('xls_formatted_data');\n                columns = this.get('columnList');\n                for (i = 0, len = csv_data.length; i < len; i++) {\n                    row = csv_data[i];\n                    newrow = [];\n                    for (j = 0, len1 = columns.length; j < len1; j++) {\n                        column = columns[j];\n                        newrow.push(row[column]);\n                    }\n                    rows.push(newrow);\n                }\n                return resolve(rows);\n            });\n        });\n    }),\n    asPdfElement: Ember.computed('checked_rows.[]', function () {\n        var pdf_data_with_column_names;\n        pdf_data_with_column_names = [];\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise;\n            promise = this.get('data');\n            return promise.then(() => {\n                var promises;\n                promises = Em.RSVP.Promise.all(\n                    this.get('pdf_formatted_data').map(function (innerPromiseArray) {\n                        return Em.RSVP.Promise.all(innerPromiseArray);\n                    }),\n                );\n                return promises.then((resolved_pdf_arr) => {\n                    var field, i, ind, j, len, len1, pdfRow, row;\n                    for (i = 0, len = resolved_pdf_arr.length; i < len; i++) {\n                        row = resolved_pdf_arr[i];\n                        pdfRow = Ember.Object.create();\n                        for (ind = j = 0, len1 = row.length; j < len1; ind = ++j) {\n                            field = row[ind];\n                            pdfRow[this.get('columnList')[ind]] = field;\n                        }\n                        pdf_data_with_column_names.push(pdfRow);\n                    }\n                    // wait for all images to be loaded before resolving\n                    return Em.RSVP.Promise.all(this.imagePromises).then(() => {\n                        this.imagePromises = [];\n                        return resolve(\n                            this.createPdfTableElement(\n                                this.get('columnList'),\n                                pdf_data_with_column_names,\n                                this.get('translated_columns'),\n                                this.get('pdf_formatted_sumRow'),\n                                this.get('pdfSettings'),\n                            ),\n                        );\n                    });\n                });\n            });\n        });\n    }),\n    asPdfElementFull: Ember.computed(function () {\n        var pdf_data_with_column_names;\n        pdf_data_with_column_names = [];\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise;\n            promise = this.get('data');\n            return promise.then(() => {\n                var promises;\n                promises = Em.RSVP.Promise.all(\n                    this.get('pdf_formatted_data').map(function (innerPromiseArray) {\n                        return Em.RSVP.Promise.all(innerPromiseArray);\n                    }),\n                );\n                return promises.then((resolved_pdf_arr) => {\n                    var field, i, ind, j, len, len1, pdfRow, row;\n                    for (i = 0, len = resolved_pdf_arr.length; i < len; i++) {\n                        row = resolved_pdf_arr[i];\n                        pdfRow = Ember.Object.create();\n                        for (ind = j = 0, len1 = row.length; j < len1; ind = ++j) {\n                            field = row[ind];\n                            pdfRow[this.get('columnList')[ind]] = field;\n                        }\n                        pdf_data_with_column_names.push(pdfRow);\n                    }\n                    // wait for all images to be loaded before resolving\n                    return Em.RSVP.Promise.all(this.imagePromises).then(() => {\n                        this.imagePromises = [];\n                        return resolve(\n                            this.createPdfTableElementRows(\n                                this.get('columnList'),\n                                pdf_data_with_column_names,\n                                this.get('translated_columns'),\n                                this.get('pdf_formatted_sumRow'),\n                            ),\n                        );\n                    });\n                });\n            });\n        });\n    }),\n    formatData: function (format) {\n        var c, calendar_formatted_data, columns, data, form, formatted_data, pdfRows;\n        data = this.get('data');\n        if (!data) {\n            return null;\n        }\n        if (!data.isFulfilled) {\n            return null;\n        }\n        columns = this.get('columns');\n        c = this.get('Collector');\n        form = this.get('form');\n        //        fields = c.fields form\n        formatted_data = Em.A([]);\n        calendar_formatted_data = [];\n        pdfRows = [];\n        data.forEach((unformatted_row) => {\n            var date_is_set, pdfRow, row;\n            row = Ember.Object.create();\n            date_is_set = false;\n            pdfRow = [];\n            //do some magic if there are rows checked\n            if (this.get('checked_rows').length > 0) {\n                //put row as checked (if you go to another route and come back)\n                if (this.get('checked_rows').indexOf(unformatted_row.id) !== -1) {\n                    row.checkedClass = 'checked';\n                }\n                //skip row this is not, only in exports\n                if (format === 'pdf' || format === 'csv' || format === 'excel') {\n                    if (this.get('checked_rows').indexOf(unformatted_row.id) === -1) {\n                        return;\n                    }\n                }\n            }\n            if (unformatted_row.id) {\n                row.id = unformatted_row.id;\n            }\n            $.each(columns, (key, column) => {\n                var cell,\n                    field_obj,\n                    formObj,\n                    formattedImages,\n                    formatted_cell,\n                    i,\n                    img,\n                    len,\n                    ref,\n                    subfields,\n                    subform;\n                [subform, subfields] = this.parseColumn(column);\n                cell = unformatted_row.get(subform);\n                formObj = c.formField(form, subform);\n                if (this.get('formReport') || this.get('settings.useRowInfo')) {\n                    row.row_info = unformatted_row.get('row_info');\n                }\n                if (Ember.isPresent(unformatted_row.get('isEditable'))) {\n                    row.isEditable = unformatted_row.get('isEditable');\n                }\n                if (column === 'id') {\n                    formatted_cell = cell;\n                } else if (subfields) {\n                    formatted_cell = c.database_value(cell, subform, subfields);\n                } else {\n                    // 1. we check that if field type is signature or hdfile and we are generating pdf..\n                    if (\n                        formObj &&\n                        ((ref = formObj['type']) === 'signature' || ref === 'hdfile') &&\n                        format === 'pdf' &&\n                        cell[0] &&\n                        cell[0].type\n                    ) {\n                        formattedImages = [];\n                        // 2. then we go through all files..\n                        for (i = 0, len = cell.length; i < len; i++) {\n                            img = cell[i];\n                            // 3. and check that current file is image and skip if not!\n                            if (img.type.indexOf('image') === -1) {\n                                continue;\n                            }\n                            // add images to promise array so that we can wait for them to be loaded when creating pdf\n                            const imgPromise = this.formatImageToPdf(\n                                img,\n                                'row',\n                                false,\n                                false,\n                                this.get('pdfSettings.imgLocation'),\n                            ).then((img) => {\n                                formattedImages.push(img);\n                            });\n                            if (format === 'pdf') {\n                                this.imagePromises.push(imgPromise);\n                            }\n                        }\n                        formatted_cell = formattedImages;\n                    } else {\n                        formatted_cell = c._format_(cell, form, subform, format);\n                    }\n                }\n                if (column === 'row_info.created' && row.row_info) {\n                    Ember.set(row, 'row_info.created', formatted_cell);\n                } else if (column === 'status_last_changed') {\n                    formatted_cell = this.getStatusChangedInfo(unformatted_row.id);\n                } else {\n                    if (format === 'excel' && Ember.String.isHTMLSafe(formatted_cell)) {\n                        formatted_cell = formatted_cell.string;\n                    }\n                    row[this.columnKey(column)] = formatted_cell;\n                }\n                pdfRow.push(formatted_cell);\n                // if calendar-format, add unformatted date so it can be used in calendar\n                if (format === 'calendar' && c.fieldExists(form, subform)) {\n                    field_obj = c.formField(form, subform);\n                    if (field_obj['type'] === 'date' && !date_is_set) {\n                        date_is_set = true;\n                        row['cal_date_value'] = cell;\n                        return this.set('cal_date_field', column);\n                    }\n                }\n            });\n            formatted_data.pushObject(row);\n            return pdfRows.push(pdfRow);\n        });\n        // if formatting is pdf, return data in different format so it can be resolved\n        if (format === 'pdf') {\n            //    console.log pdfRows\n            //    console.log formatted_data\n            //    return\n            return pdfRows;\n        }\n        //else\n        return formatted_data;\n    },\n    sumRow: Ember.computed('data.[]', function () {\n        var c, columns, data, fields, form, sumRow, summableTypes;\n        data = this.get('data');\n        if (!data) {\n            return null;\n        }\n        if (!data.isFulfilled) {\n            return null;\n        }\n        columns = this.get('columns');\n        summableTypes = this.get('summableTypes');\n        c = this.get('Collector');\n        form = this.get('form');\n        fields = c.fields(form);\n        sumRow = Ember.Object.create();\n        $.each(columns, (key, column) => {\n            var sum, type;\n            if (!(column in fields)) {\n                return;\n            }\n            type = fields[column].type;\n            if (!(indexOf.call(summableTypes, type) >= 0)) {\n                return;\n            }\n            sum = 0;\n            data.forEach((unformatted_row) => {\n                if (this.get('checked_rows').length > 0) {\n                    if (this.get('checked_rows').indexOf(unformatted_row.id) === -1) {\n                        return;\n                    }\n                }\n                if (fields[column].type === 'checkbox') {\n                    if (!sumRow[column]) {\n                        sumRow[column] = [0, 0];\n                    }\n                    if (unformatted_row.get(column)) {\n                        return sumRow[column][0]++;\n                    } else {\n                        return sumRow[column][1]++;\n                    }\n                } else {\n                    sum += unformatted_row.get(column);\n                    return (sumRow[column] = sum);\n                }\n            });\n            if (fields[column].type !== 'checkbox') {\n                return (sumRow[column] = Math.round(sumRow[column] * 100) / 100);\n            }\n        });\n        return sumRow;\n    }),\n    // all data is formatted here before rendering\n    formatted_sumRow: Ember.computed('sumRow', function () {\n        return this.formatSumRow();\n    }),\n    pdf_formatted_sumRow: Ember.computed('sumRow', function () {\n        return this.formatSumRow('pdf');\n    }),\n    formatSumRow: function (format) {\n        var c, columns, fields, form, formatted_sumRow, sumRow;\n        sumRow = this.get('sumRow');\n        if (!sumRow) {\n            return null;\n        }\n        columns = this.get('columns');\n        c = this.get('Collector');\n        form = this.get('form');\n        fields = c.fields(form);\n        formatted_sumRow = Ember.Object.create();\n        $.each(columns, function (key, column) {\n            var cell;\n            cell = sumRow.get(column);\n            if (column === 'id') {\n                return (formatted_sumRow[column] = cell);\n            } else if (fields[column] && fields[column].type === 'checkbox') {\n                if (Ember.isArray(cell)) {\n                    return (formatted_sumRow[column] =\n                        c._format_(true, form, column, format) +\n                        ': ' +\n                        cell[0] +\n                        ' / ' +\n                        c._format_(false, form, column, format) +\n                        ': ' +\n                        cell[1]);\n                }\n            } else {\n                return (formatted_sumRow[column] = c._format_(cell, form, column, format));\n            }\n        });\n        return formatted_sumRow;\n    },\n    /*\n\n  PROPERTIES AND METHODS FOR COLUMNS\n\n  */\n    // list all columns from collector form\n    columns: Ember.computed('form', 'hide_columns', 'show_columns', 'group', function () {\n        var c,\n            column,\n            field_arr,\n            fields,\n            form,\n            hide_columns,\n            hide_columns_arr,\n            i,\n            len,\n            show_columns,\n            show_columns_arr;\n        c = this.get('Collector');\n        form = this.get('form');\n        if (!form || !c.formExists(form)) {\n            return [];\n        }\n        fields = c.fields(form);\n        hide_columns = this.get('hide_columns');\n        hide_columns_arr = hide_columns ? hide_columns.split(',') : [];\n        show_columns = this.get('show_columns');\n        show_columns_arr = show_columns ? show_columns.split(',') : null;\n        field_arr = [];\n        if (show_columns === 'empty') {\n            field_arr = [];\n        } else if (show_columns) {\n            for (i = 0, len = show_columns_arr.length; i < len; i++) {\n                column = show_columns_arr[i];\n                if (\n                    column === 'id' ||\n                    column === 'row_info.created' ||\n                    column === 'row_info.modified' ||\n                    this.testFieldExistance(form, column)\n                ) {\n                    field_arr.push(column);\n                }\n                if (column === 'status' && this.pdfSettings?.statusInfo) {\n                    field_arr.push('status_last_changed');\n                }\n            }\n        } else {\n            // show fields that aren't hidden\n            $.each(fields, (key, item) => {\n                if (indexOf.call(hide_columns_arr, key) >= 0) {\n                    return;\n                }\n                if (this.testFieldExistance(form, key)) {\n                    return field_arr.push(key);\n                }\n            });\n        }\n        if (this.get('group')) {\n            return this.groupableColumns(field_arr, fields);\n        } else {\n            return field_arr;\n        }\n    }),\n    testFieldExistance: function (form, column) {\n        var c;\n        c = this.get('Collector');\n        if (column.indexOf('.') !== -1) {\n            [form, column] = column.split('.');\n        }\n        return c.fieldExists(form, column);\n    },\n    columnList: Ember.computed('columns', function () {\n        return this.get('columns').map((item) => {\n            return this.columnKey(item);\n        });\n    }),\n    // skip all the other columns but those that are shown on grouped reports\n    groupableColumns: function (columns, fields) {\n        var group, groupableColumnsList, ret_arr;\n        groupableColumnsList = this.get('groupableColumnList');\n        group = this.get('group');\n        ret_arr = group.split(',');\n        ret_arr = ret_arr.reject(function (item) {\n            return item === 'all';\n        });\n        $.each(columns, function (key, item) {\n            var type;\n            if (fields[item]) {\n                type = fields[item].type;\n                if (\n                    indexOf.call(groupableColumnsList, type) >= 0 &&\n                    !(indexOf.call(group.split(','), item) >= 0)\n                ) {\n                    return ret_arr.push(item);\n                }\n            }\n        });\n        return ret_arr;\n    },\n    // get translation for every column\n    translated_columns: Ember.computed('columns', function () {\n        var c, columns, form, translated_columns;\n        c = this.get('Collector');\n        ({ columns, form } = this.getProperties('columns', 'form'));\n        form = this.get('form');\n        translated_columns = [];\n        $.each(columns, (key, item) => {\n            var subform, subitem;\n            if (item.indexOf('.') !== -1 && item.substring(0, 9) !== 'row_info.') {\n                [subform, subitem] = item.split('.');\n                if (subitem !== 'name') {\n                    item = subitem;\n                } else {\n                    item = subform;\n                    subform = form;\n                }\n            } else {\n                subform = form;\n            }\n            if (item === 'status_last_changed') {\n                return translated_columns.push(this.get('intl').t('export.pdf.status_last_change'));\n            }\n            return translated_columns.push(c.getTranslationForColumn(subform, item));\n        });\n        return translated_columns;\n    }),\n    columnKey: function (column) {\n        var subfields, subform;\n        [subform, subfields] = this.parseColumn(column);\n        return subform + (subfields ? subfields[0] : '');\n    },\n    parseColumn: function (column) {\n        var subfields, subform;\n        if (column.indexOf('.') !== -1 && column.substring(0, 9) !== 'row_info.') {\n            [subform, subfields] = column.split('.');\n            subfields = [subfields];\n        } else {\n            subform = column;\n            subfields = null;\n        }\n        return [subform, subfields];\n    },\n    formatSubfield: function (subform, subfields) {\n        return subform + '.' + subfields[0];\n    },\n    pageCount: Ember.computed('data.content.meta.count', 'rowsPerPage', function () {\n        if (this.get('rowsPerPage') === 'all') {\n            return 1;\n        } else {\n            return Math.ceil(this.get('data.content.meta.count') / this.get('rowsPerPage'));\n        }\n    }),\n    //# query limits by pagination\n    add_limits: function (params) {\n        var currentPage, rowsPerPage;\n        rowsPerPage = this.get('rowsPerPage');\n        currentPage = this.get('currentPage');\n        if (rowsPerPage === 'all') {\n            params.limit = 'all';\n        } else {\n            params.limit = rowsPerPage;\n            params.offset = rowsPerPage * (currentPage - 1);\n        }\n        return params;\n    },\n    //array for checked rows\n    //checked_rows: Em.A([])\n\n    // default date-range for calendar\n    dateRange: Em.computed(function () {\n        return (\n            moment().startOf('week').format('YYYY-MM-DD') +\n            '_' +\n            moment().endOf('week').format('YYYY-MM-DD')\n        );\n    }),\n\n    getStatusChangedInfo: function (rowId) {\n        const statusrow = this.statusInfoRows[rowId];\n        return statusrow\n            ? moment(statusrow.datetime).format('L') +\n                  ' ' +\n                  moment(statusrow.datetime).format('LT') +\n                  '\\n' +\n                  statusrow.user\n            : '';\n    },\n\n    actions: {\n        catchActions: function (action, params) {\n            if (\n                action === 'columnClicked' ||\n                action === 'removeRow' ||\n                action === 'changeStatus' ||\n                action === 'checkRow' ||\n                action === 'rowHistory' ||\n                action === 'lockRows' ||\n                action === 'deleteChecked' ||\n                action === 'restoreChecked' ||\n                action === 'columnClickedMulti'\n            ) {\n                return this.send(action, params);\n            } else {\n                return this.sendAction(action, params, this.get('settings'));\n            }\n        },\n        deleteChecked: function () {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    if (con) {\n                        return this.checked_rows.forEach((row) => {\n                            row = this.get('store').peekRecord(this.get('form'), row);\n                            if (row.get('row_info.privilege_remove') === false) {\n                                this.get('dialogs').alert(\n                                    this.get('intl').t('general_report.mass_delete.not_allowed'),\n                                );\n                                return;\n                            }\n                            return row.destroyRecord();\n                        });\n                    }\n                });\n        },\n        restoreChecked: function () {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_restore_rows'))\n                .then((con) => {\n                    var form, form_plural;\n                    if (con) {\n                        form = this.get('form');\n                        form_plural = pluralize(form).camelize();\n                        return this.checked_rows.forEach((row) => {\n                            row = this.get('store').peekRecord(this.get('form'), row);\n                            return this.get('capi')\n                                .request('/' + form_plural + '/' + row.id + '?validation=off', {\n                                    dataType: 'json',\n                                    type: 'PUT',\n                                    data:\n                                        '{\"' + form.camelize() + '\":{\"row_info.status\":\"normal\"}}',\n                                })\n                                .then(() => {\n                                    return row.unloadRecord();\n                                });\n                        });\n                    }\n                });\n        },\n        lockRows: function ({ act, rows }) {\n            var form, form_plural, store;\n            if (!this.get('Collector').testNeeds(['userlevel=5'])) {\n                return;\n            }\n            form = this.get('form');\n            form_plural = pluralize(this.get('form')).camelize();\n            store = this.get('store');\n            return rows.forEach((row) => {\n                var data;\n                data = {};\n                if (act === 'lock') {\n                    data[form] = {\n                        locked: true,\n                    };\n                }\n                if (act === 'unlock') {\n                    data[form] = {\n                        locked: false,\n                    };\n                }\n                return this.get('capi')\n                    .request('/' + form_plural + '/' + row.get('id') + '?validation=off', {\n                        dataType: 'json',\n                        type: 'PUT',\n                        data: JSON.stringify(data),\n                    })\n                    .then((data) => {\n                        var record;\n                        // don't need to save row again, just reload it and it will be updated\n                        record = store.peekRecord(form, row.id);\n                        // if form has export_salary field empty it when opening lock\n                        if (this.get('Collector').testNeeds([form + '.export_salary'])) {\n                            record.set('export_salary', '');\n                            return record.save().then(() => {\n                                return this.notifyPropertyChange('data');\n                            });\n                        } else {\n                            return record.reload();\n                        }\n                    });\n            });\n        },\n        export_pdf: function () {\n            return this.get('asPdfElement').then((element) => {\n                return this.createPdfFromElements([element]).then((file) => {\n                    if (typeof cordova !== 'undefined' && cordova !== null) {\n                        return this.get('cordova').openFile(file, 'application/pdf');\n                    }\n                });\n            });\n        },\n        export_pdf_full: function () {\n            return this.get('asPdfElementFull').then((element) => {\n                return this.createPdfFromElements([element]).then((file) => {\n                    if (typeof cordova !== 'undefined' && cordova !== null) {\n                        return this.get('cordova').openFile(file, 'application/pdf');\n                    }\n                });\n            });\n        },\n        // This action sets the sort order of the report\n        columnClicked: function (order) {\n            var currentOrder;\n            currentOrder = this.get('order');\n            if (currentOrder === order || currentOrder === null) {\n                currentOrder = order + '-';\n            } else {\n                currentOrder = order;\n            }\n            //console.log currentOrder\n            this.set('order', currentOrder);\n            if (this.get('settings')) {\n                return this.set('settings.order', currentOrder);\n            }\n        },\n        columnClickedMulti: function (obj) {\n            var col, colArr, sortCol;\n            col = obj.name;\n            //return if obj? and obj.type == \"row_info\"\n            if (obj.ext === 'row_info.created') {\n                col = 'id';\n            }\n            sortCol = this.get('settings.order');\n            if (sortCol === this.get('settings.defaultOrder') && !this.get('manuallyOrdered')) {\n                this.set('settings.order', col);\n                this.set('manuallyOrdered', true);\n                this.set('order', col);\n                return;\n            }\n            if (sortCol.includes(col + '-')) {\n                sortCol = sortCol.replace(col + '-', col);\n            } else if (sortCol.includes(col) && (sortCol = sortCol.replace(col, col + '-'))) {\n            } else if (Ember.isEmpty(sortCol)) {\n                sortCol = col;\n            } else {\n                sortCol += ',' + col;\n            }\n            colArr = sortCol.split(',');\n            if (colArr.length > 4) {\n                // Only use the 4 last options in the sortcol array\n                sortCol = colArr.splice(-4).join(',');\n            }\n            this.set('manuallyOrdered', true);\n            this.set('order', sortCol);\n            return this.set('settings.order', sortCol);\n        },\n        removeFieldFromOrder: function (field) {\n            var cols;\n            cols = this.get('settings.order').split(',');\n            if (cols.length === 1) {\n                this.set('settings.order', this.get('settings.defaultOrder'));\n                this.set('manuallyOrdered', false);\n                this.set('order', this.get('settings.defaultOrder'));\n                return;\n            }\n            if (cols.includes(field + '-')) {\n                field = field + '-';\n            }\n            cols.splice(cols.indexOf(field), 1);\n            if (cols.length > 0) {\n                this.set('manuallyOrdered', true);\n                this.set('order', cols.join(','));\n                return this.set('settings.order', cols.join(','));\n            }\n        },\n        removeRow: function (row) {\n            var form, store;\n            store = this.get('store');\n            form = this.get('form');\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    var record;\n                    if (con) {\n                        // first try to peek record from store .. if just findRecord is used error occurs if record is in store..\n                        // this is because DELETE request is called before GET is ready\n                        record = store.peekRecord(form, row.id);\n                        if (record) {\n                            return record.destroyRecord();\n                        } else {\n                            return store.findRecord(form, row.id).then(function (record) {\n                                return record.destroyRecord();\n                            });\n                        }\n                    }\n                });\n        },\n        rowHistory: function (row) {\n            return this.set('showHistoryForRow', row.get('id'));\n        },\n        removeHistoryModal: function () {\n            return this.set('showHistoryForRow', null);\n        },\n        changeStatus: function (params) {\n            var form, intl, promises, rows, statusField, statusUtilRes, store;\n            this.set('statusUtil', statusUtil.create());\n            store = this.get('store');\n            form = this.get('form');\n            rows = params.rows;\n            intl = this.get('intl');\n            promises = [];\n            statusField = this.get('Collector').field(form, 'status');\n            statusUtilRes = this.get('statusUtil').canChangeStatus(\n                rows,\n                params.status,\n                statusField,\n            );\n            statusUtilRes.accepted.forEach((row) => {\n                var record;\n                return promises.push(\n                    (record = store.peekRecord(form, row.id)),\n                    record\n                        ? (record.set('status', params.status), record.save())\n                        : store.findRecord(form, row.id).then(function (record) {\n                              record.set('status', params.status);\n                              return record.save();\n                          }),\n                );\n            });\n            Promise.all(promises).then(() => {\n                if (statusUtilRes.accepted.length > 0) {\n                    return this.get('notifications').success(\n                        intl.t('general.status_change__success', {\n                            amount: statusUtilRes.accepted.length,\n                        }),\n                        {\n                            autoClear: true,\n                        },\n                    );\n                }\n            });\n            if (statusUtilRes.rejected.length > 0) {\n                this.get('notifications').error(\n                    intl.t('general.status_change_error', {\n                        amount: statusUtilRes.rejected.length,\n                    }),\n                    {\n                        autoClear: true,\n                    },\n                );\n            }\n            return this.toggleProperty('statusChanged');\n        },\n        checkRow: function (params) {\n            if (params.action === 'add') {\n                if (this.get('checked_rows').indexOf(params.id) === -1) {\n                    this.get('checked_rows').pushObject(params.id);\n                }\n            } else {\n                if (this.get('checked_rows').indexOf(params.id) !== -1) {\n                    this.get('checked_rows').removeObject(params.id);\n                }\n            }\n            return this.sendAction('checkedRowsChanged', this.get('checked_rows'));\n        },\n    },\n});\n\nexport default FormReportComponent;\n","export default Ember.HTMLBars.template({\"id\":\"BxK7PLLT\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\",\\\"index\\\",\\\"specialDay\\\",\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"export_pdf\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-right\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more text-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[1,[28,\\\"report-order\\\",null,[[\\\"order\\\",\\\"defaultOrder\\\",\\\"showDefaultOrder\\\",\\\"onRemove\\\",\\\"form\\\"],[[24,[\\\"settings\\\",\\\"order\\\"]],[24,[\\\"settings\\\",\\\"defaultOrder\\\"]],[24,[\\\"manuallyOrdered\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"removeFieldFromOrder\\\"],null],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clear-div\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"settings\\\",\\\"calendar\\\"]]],null,{\\\"statements\\\":[[4,\\\"calendar-report\\\",null,[[\\\"hideDateRangePicker\\\",\\\"date\\\"],[true,[24,[\\\"dateRange\\\"]]]],{\\\"statements\\\":[[4,\\\"calendar-report-day\\\",null,[[\\\"day\\\",\\\"specialDay\\\"],[[23,1,[]],[23,3,[]]]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"calendar-card\\\",null,[[\\\"formatted_data\\\",\\\"day\\\",\\\"columns\\\",\\\"form\\\",\\\"date_field\\\"],[[24,[\\\"calendar_formatted_data\\\"]],[23,1,[]],[24,[\\\"columnList\\\"]],[24,[\\\"form\\\"]],[24,[\\\"cal_date_field\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2,3]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"sumRow\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"form\\\",\\\"checkable\\\",\\\"rowInfoStatus\\\",\\\"hideCheckedActions\\\",\\\"multiSort\\\",\\\"order\\\",\\\"hideSumRow\\\"],[[24,[\\\"columnList\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"formatted_data\\\"]],[24,[\\\"formatted_sumRow\\\"]],[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",[24,[\\\"form\\\"]],[24,[\\\"checkable\\\"]],[24,[\\\"settings\\\",\\\"row_info_status\\\"]],[24,[\\\"hideCheckedActions\\\"]],true,[24,[\\\"order\\\"]],[24,[\\\"hideSumRow\\\"]]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"rowsPerPage\\\"]],[24,[\\\"currentPage\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showHistoryForRow\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/history-modal\\\",null,[[\\\"form\\\",\\\"rowid\\\",\\\"removeModal\\\"],[[24,[\\\"form\\\"]],[24,[\\\"showHistoryForRow\\\"]],\\\"removeHistoryModal\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/report-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/rows-modal/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorAddModalComponent;\n\nimport Ember from 'ember';\nimport { set } from '@ember/object';\n\nCollectorAddModalComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    //rows: Ember.computed 'form', 'rowids.[]', ->\n    //    @get('store').query @get('form'), {id: this.get('rowids').join(\",\")}\n    async didReceiveAttrs() {\n        set(this, 'loading', true);\n        let parent_row_found = this.store.peekRecord(this.parent_form, this.parent_rowid);\n        if (!parent_row_found) await this.store.query(this.parent_form, { id: this.parent_rowid });\n        set(this, 'loading', false);\n    },\n    form: Ember.computed('field', function () {\n        return this.get('field').options.form;\n    }),\n    parent_form: Ember.computed('modal', function () {\n        var formfield;\n        formfield = this.get('modal').split(',')[1];\n        return formfield.split('.')[0];\n    }),\n    parent_field: Ember.computed('modal', function () {\n        var formfield;\n        formfield = this.get('modal').split(',')[1];\n        return formfield.split('.')[1];\n    }),\n    field: Ember.computed('modal', function () {\n        return this.get('Collector').formField(this.get('parent_form'), this.get('parent_field'));\n    }),\n    rows: Ember.computed('form', 'field', 'parent_rowid', function () {\n        var child, parent_row;\n        parent_row = this.get('store').peekRecord(\n            this.get('parent_form'),\n            this.get('parent_rowid'),\n        );\n        child = parent_row.get(this.get('parent_field'));\n        if (this.get('field.type') === 'multiselect') {\n            return this.get('store').query(this.get('form'), {\n                id: child.join(','),\n            });\n        } else {\n            if (this.get('field.type') === 'databasearray') {\n                // for now we reload all databasearrayfields instead of material only\n                this.reloadChilds(child);\n            }\n            return child;\n        }\n    }),\n    reloadChilds: function (child) {\n        var ids;\n        ids = [];\n        child.forEach((record) => {\n            return ids.push(record.get('id'));\n        });\n        return this.get('store').query(this.get('form'), {\n            id: ids.join(','),\n        });\n    },\n    modalHeader: Ember.computed('parent_form', 'parent_field', function () {\n        if (this.get('parent_form').substring(0, 18) === 'measurement_custom') {\n            return this.get('intl').t('site_safety.notices');\n        }\n        return this.get('intl').t(\n            'report.' + this.get('parent_form') + '.' + this.get('parent_field'),\n        );\n    }),\n    main_columns: Ember.computed('field', function () {\n        return this.get('field').options.fields;\n    }),\n    all_columns: Ember.computed('field', function () {\n        var key, temp;\n        temp = [];\n        for (key in this.get('Collector').fields(this.get('form'))) {\n            temp.push(key);\n        }\n        return temp;\n    }),\n    parent_rowid: Ember.computed('modal', function () {\n        return this.get('modal').split(',').slice(2).join();\n    }),\n    actions: {\n        modalRecordSaved: function (settings, record) {},\n        toggle: function (row) {\n            return row.set('show', !row.get('show'));\n        },\n        removeModal: function () {\n            return this.set('modal', []);\n        },\n    },\n});\n\nexport default CollectorAddModalComponent;\n","export default Ember.HTMLBars.template({\"id\":\"8pF7bE/n\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"column\\\",\\\"column\\\"],\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"modalHeader\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"rows\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"panel-heading\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[7,\\\"b\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"type\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[\\\"type\\\",[24,[\\\"main_columns\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[24,[\\\"form\\\"]],\\\"type\\\",[23,1,[\\\"type\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"main_columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[24,[\\\"form\\\"]],[23,3,[]],[28,\\\"get\\\",[[23,1,[]],[23,3,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                \\\"],[9],[0,\\\" \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"icon-big pull-right text-report-muted \\\",[28,\\\"if\\\",[[23,1,[\\\"show\\\"]],\\\"move move-SortUp\\\",\\\"move move-SortDown\\\"],null]]]],[8],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"show\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"all_columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"translate-column\\\",null,[[\\\"form\\\",\\\"field\\\"],[[24,[\\\"form\\\"]],[23,2,[]]]]],false],[0,\\\": \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,2,[]],[24,[\\\"form\\\"]],[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/rows-modal/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/collector/setting-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorSettingCompComponent;\n\nimport Ember from 'ember';\n\nCollectorSettingCompComponent = Ember.Component.extend();\n\nexport default CollectorSettingCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"FKsekfvN\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[24,[\\\"setting\\\",\\\"translatedName\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"setting\\\",\\\"type\\\"]],\\\"boolean\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"name\\\",\\\"checked\\\"],[\\\"form-control\\\",\\\"checkbox\\\",\\\"setting\\\",[24,[\\\"setting\\\",\\\"value\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"name\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"text\\\",\\\"setting\\\",[24,[\\\"setting\\\",\\\"value\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/setting-comp/template.hbs\"}});","import { computed, get } from '@ember/object';\nimport { equal } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport Component from '@ember/component';\n\nexport default Component.extend({\n    Collector: service('collector-service'),\n    tagName: 'span',\n\n    typeIsArray: equal('fieldObj.type', 'databasearray'),\n\n    preformatted: computed('field', function () {\n        if (get(this, 'field') === 'row_info.created') {\n            return moment(get(this, 'value')).format('LLL');\n        } else {\n            return null;\n        }\n    }),\n\n    fieldObj: computed('form', 'field', function () {\n        return get(this, 'Collector').field(get(this, 'form'), get(this, 'field'));\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"rPTUXMzs\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"f\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"preformatted\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"preformatted\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"typeIsArray\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"value\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"databasearray_row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fieldObj\\\",\\\"options\\\",\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,2,[]],[24,[\\\"fieldObj\\\",\\\"options\\\",\\\"form\\\"]],[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[24,[\\\"fieldObj\\\",\\\"name\\\"]],[24,[\\\"fieldObj\\\",\\\"form\\\"]],[24,[\\\"value\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/collector/value-format/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { isNone } from '@ember/utils';\n\nexport default Component.extend({\n    addOptions: computed(function () {\n        let options = [];\n        const c = get(this, 'Collector');\n        if (\n            c.testNeeds([\n                'worktime',\n                '!products.gps_force',\n                '!worktime.starttime@disabled',\n                '!worktime@errors',\n            ])\n        ) {\n            options.push('worktime');\n        }\n        if (c.testNeeds(['abcense', '!abcense@errors'])) {\n            options.push('abcense');\n        }\n\n        return options;\n    }),\n\n    summableAbsenceFields: computed(function () {\n        const abFields = get(this, 'Collector').fieldArray('abcense');\n        const summableTypes = get(this, 'summableFieldTypes');\n        return abFields.filter((field) => {\n            return summableTypes.includes(get(field, 'type'));\n        });\n    }),\n\n    absencesByType: computed('absences.[]', function () {\n        if (isNone(get(this, 'absences'))) {\n            return 0;\n        }\n        let ret = [];\n        let types = get(this, 'absenceTypes');\n        types.forEach((type) => {\n            let absences = get(this, 'absences').filterBy('abcensetype', type.id);\n            ret.push({\n                typeId: type.id,\n                daySum: get(absences.mapBy('date').uniq(), 'length'),\n                rows: absences,\n            });\n        });\n        return ret;\n    }),\n\n    init() {\n        this._super();\n        // Do not show fields with \"hide_column\" field setting in worktime sums section\n        const hideColumnFields = this.Collector.fieldArray('worktime')\n            .filter((field) => field.features?.hide_column)\n            .mapBy('name');\n        this.skipSumFields = hideColumnFields.concat(['id', 'user']);\n        this.summableFieldTypes = [\n            'number',\n            'hours',\n            'dropdown_options',\n            'dropdown_values',\n            'checkbox',\n        ];\n    },\n\n    actions: {\n        sendFilterChange(value, field) {\n            this.filterChanged(value, field);\n        },\n    },\n});\n","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    worktimeColumns: computed(function () {\n        return get(this, 'collector').fieldArray('worktime').rejectBy('features', 'hide_column');\n    }),\n    absenceColumns: computed(function () {\n        return get(this, 'collector').fieldArray('abcense').rejectBy('features', 'hide_column');\n    }),\n\n    actions: {\n        setRowsPerPage(form, limit) {\n            this.setRowsPerPage(form, limit);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"4PaYGOWX\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"customFullScreen\\\"]],\\\"report-main-zoomed\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timetracker.aggregated.rows.worktimes\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\",\\\"fullscreenmode\\\",\\\"bubbleSetRowsPerPage\\\"],[\\\"bubbleTransition\\\",\\\"worktime\\\",[24,[\\\"model\\\",\\\"worktimeRows\\\"]],[24,[\\\"worktime_page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]],\\\"custom\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"setRowsPerPage\\\"]],\\\"worktime\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timetracker.aggregated.rows.absences\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\",\\\"fullscreenmode\\\",\\\"bubbleSetRowsPerPage\\\"],[\\\"bubbleTransition\\\",\\\"abcense\\\",[24,[\\\"model\\\",\\\"absenceRows\\\"]],[24,[\\\"absence_page\\\"]],[24,[\\\"absence_settings\\\"]],[24,[\\\"status\\\"]],\\\"custom\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"setRowsPerPage\\\"]],\\\"absence\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/aggre-gated/rows/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"1JItrjTA\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\",\\\"index\\\",\\\"specialDay\\\",\\\"abSum\\\",\\\"wSum\\\",\\\"type\\\",\\\"field\\\",\\\"absence\\\",\\\"wsum\\\",\\\"v\\\",\\\"k\\\",\\\"filter\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column aggregated-report\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-20 padding-small\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"aggregated-filters\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"filters\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"aggregated-filter\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"date\\\",[23,12,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"date-range-picker\\\",null,[[\\\"value\\\",\\\"wagePeriods\\\",\\\"dateChange\\\"],[[23,12,[\\\"value\\\"]],true,\\\"sendFilterChange\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,12,[]]],[[\\\"change\\\",\\\"useAsFilter\\\"],[\\\"sendFilterChange\\\",true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[12]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column worktime-highlight sum-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timetracker.aggregated.worktime_sums\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"worktimeSums\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[10,\\\"class\\\",\\\"worktime-sub-header user\\\"],[8],[1,[23,9,[\\\"user\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[23,9,[]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,11,[]],[24,[\\\"skipSumFields\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[[28,\\\"concat\\\",[\\\"worktime.\\\",[23,11,[]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 sum-item\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"form\\\",\\\"field\\\"],[\\\"worktime\\\",[23,11,[]]]]],false],[9],[0,\\\":\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 sum-item\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"worktime\\\",[23,11,[]],[23,10,[]]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[10,11]},null]],\\\"parameters\\\":[9]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column absence-highlight sum-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timetracker.aggregated.absence_sums\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"absenceTypes\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[10,\\\"class\\\",\\\"absence-sub-header\\\"],[8],[1,[23,6,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"summableAbsenceFields\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"absencesByType\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,8,[\\\"typeId\\\"]],[23,6,[\\\"id\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 absence-sum-item\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"form\\\",\\\"field\\\"],[\\\"abcense\\\",[23,7,[\\\"name\\\"]]]]],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 absence-sum-item\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,7,[\\\"name\\\"]],\\\"dayamount\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",[23,7,[\\\"name\\\"]],[23,8,[\\\"daySum\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,7,[\\\"name\\\"]],\\\"absence_hours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",[23,7,[\\\"name\\\"]],[28,\\\"sum-field\\\",null,[[\\\"field\\\",\\\"rows\\\"],[[28,\\\"hash\\\",null,[[\\\"type\\\",\\\"name\\\"],[\\\"hours\\\",\\\"hours\\\"]]],[23,8,[\\\"rows\\\"]]]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",[23,7,[\\\"name\\\"]],[28,\\\"sum-field\\\",null,[[\\\"field\\\",\\\"rows\\\"],[[23,7,[]],[23,8,[\\\"rows\\\"]]]]]]]],false],[0,\\\"\\\\n                                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[8]},null]],\\\"parameters\\\":[7]},null]],\\\"parameters\\\":[6]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-80 padding-small\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link no-print\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"print\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.print\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link no-print\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"printAll\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.print_all\\\"],null],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right rows-toggle\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"theme\\\",\\\"onToggle\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[[24,[\\\"showAllRows\\\"]],\\\"light\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"toggleAllRows\\\"]]],null],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"timetracker.aggregated.show_rows\\\"],null],\\\"\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showWarning\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.too_many_rows\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"calendar-report\\\",null,[[\\\"hideDateRangePicker\\\",\\\"date\\\",\\\"user\\\",\\\"hideWeekend\\\",\\\"classNames\\\"],[true,[24,[\\\"date\\\"]],[24,[\\\"user\\\"]],[24,[\\\"hideWeekend\\\"]],\\\"no-bottom-padding\\\"]],{\\\"statements\\\":[[4,\\\"calendar-report-day\\\",null,[[\\\"day\\\",\\\"specialDay\\\"],[[23,1,[]],[23,3,[]]]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"calendar-report-add-options\\\",null,[[\\\"options\\\",\\\"date\\\",\\\"add\\\"],[[24,[\\\"addOptions\\\"]],[23,1,[]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"addNew\\\"]],[23,1,[]]],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",false],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"timetracker.aggregated.show_rows_date\\\"],null]],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"showRows\\\"]],[23,1,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"calendar-card-sum\\\",null,[[\\\"model\\\",\\\"date\\\",\\\"fields\\\",\\\"classNames\\\"],[[24,[\\\"dailyWorktimeSums\\\"]],[23,1,[]],[28,\\\"hash\\\",null,[[\\\"hours\\\",\\\"date\\\"],[\\\"work_hours\\\",\\\"date\\\"]]],\\\"calendar-card worktime-calendar-card\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"not-eq\\\",[[23,5,[]],null],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"h2\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"format-hours\\\",[[23,5,[]],\\\"0:00h\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[5]},null],[4,\\\"calendar-card-sum\\\",null,[[\\\"model\\\",\\\"date\\\",\\\"fields\\\",\\\"classNames\\\",\\\"title\\\"],[[24,[\\\"absences\\\"]],[23,1,[]],[28,\\\"hash\\\",null,[[\\\"hours\\\",\\\"date\\\"],[\\\"hours\\\",\\\"date\\\"]]],\\\"calendar-card absence-calendar-card\\\",[28,\\\"t\\\",[\\\"timetracker.aggregated.show_rows_date\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"not-eq\\\",[[23,4,[]],null],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"h2\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cup\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"format-hours\\\",[[23,4,[]],\\\"0:00h\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2,3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100 padding-small\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/aggre-gated/template.hbs\"}});","import { Promise as EmberPromise } from 'rsvp';\nimport PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\nimport ObjectProxy from '@ember/object/proxy';\nimport { computed, set, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport Component from '@ember/component';\n\nexport default Component.extend({\n    ttapi: service(),\n    Collector: service('collector-service'),\n    intl: service(),\n    notifications: service(),\n    sendto: '',\n    days: '',\n    nameField: '',\n    projectField: '',\n    error_negative: false,\n    showCustomField: false,\n\n    showNameField: computed(function () {\n        return get(this, 'form') == 'user' || get(this, 'form') == 'card' ? false : true;\n    }),\n\n    formFields: computed(function () {\n        return get(this, 'Collector').fieldArray(get(this, 'form'));\n    }),\n\n    sendto_options: computed(function () {\n        const intl = get(this, 'intl');\n        let roles = [\n            { id: '3', translated_name: intl.t('user.userlevel.3'), name: 'userlevel=3' },\n            { id: '6', translated_name: intl.t('user.userlevel.6'), name: 'userlevel=6' },\n            { id: '5', translated_name: intl.t('user.userlevel.5'), name: 'userlevel=5' },\n        ];\n\n        if (get(this, 'Collector').testNeeds(['products.project_owner'])) {\n            roles = this._getProjectOwnerRole(roles);\n        }\n        return roles;\n    }),\n    alarmValue: computed(function () {\n        const key = 'expires@' + get(this, 'form') + '.' + get(this, 'field');\n\n        return ObjectProxy.extend(PromiseProxyMixin).create({\n            promise: new EmberPromise((resolve) => {\n                get(this, 'ttapi')\n                    ._get('alarm', { key: key })\n                    .then((back) => this._setAlarms(back, resolve));\n            }),\n        });\n    }),\n\n    showSaveButton: computed('nameField', 'days', 'sendto', function () {\n        let name = get(get(this, 'alarmValue'), 'name');\n        let days = get(get(this, 'alarmValue'), 'before');\n        let sendto = get(get(this, 'alarmValue'), 'sendto');\n\n        if (this.error_negative || !get(this, 'days')) return false;\n\n        if (\n            name != get(this, 'nameField') ||\n            days != get(this, 'days') ||\n            sendto != get(this, 'sendto')\n        ) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n\n    init() {\n        this._super(...arguments);\n        this.alarmOptions = ['0', '5', '7', '10', '14', '21', '28'];\n    },\n\n    async didReceiveAttrs() {\n        let alarm = await get(this, 'alarmValue');\n        if (alarm) set(this, 'showCustomField', !this.alarmOptions.includes(alarm.before));\n    },\n\n    actions: {\n        saveAlarm: function () {\n            const key = 'expires@' + get(this, 'form') + '.' + get(this, 'field');\n            const fieldTranslation = get(this, 'Collector').getTranslationForColumn(\n                get(this, 'form'),\n                get(this, 'field'),\n            );\n            const days = get(this, 'days');\n\n            get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n                autoClear: true,\n            });\n\n            if (!isNaN(days)) {\n                get(this, 'ttapi')._post('alarms', {\n                    type: 'expires',\n                    extra: {\n                        form: get(this, 'form'),\n                        field: get(this, 'field'),\n                        before: days,\n                        fieldTranslation: fieldTranslation.string\n                            ? fieldTranslation.string\n                            : fieldTranslation,\n                        locale: moment.locale(),\n                        send_to: get(this, 'sendto'),\n                        nameField: get(this, 'nameField'),\n                        projectField: get(this, 'projectField'),\n                    },\n                    key: key,\n                });\n            } else {\n                get(this, 'ttapi')._delete('alarms/' + key);\n            }\n        },\n\n        setDays(value) {\n            set(this, 'error_negative', false);\n\n            if (value === 'custom') {\n                set(this, 'showCustomField', true);\n            } else {\n                set(this, 'days', value);\n                set(this, 'showCustomField', false);\n            }\n        },\n\n        validateAndSetCustomDays(days) {\n            if (days < 0) {\n                set(this, 'error_negative', true);\n                return;\n            }\n            set(this, 'error_negative', false);\n            set(this, 'days', days);\n        },\n    },\n\n    _setAlarms(back, resolve) {\n        if (back.length > 0) {\n            let sendTo = JSON.parse(get(back, 'firstObject.extra')).send_to;\n            if (sendTo) {\n                set(this, 'sendto', sendTo);\n            }\n            let nameField = JSON.parse(get(back, 'firstObject.extra')).nameField;\n            if (nameField) {\n                set(this, 'nameField', nameField);\n            }\n            let before = JSON.parse(get(back, 'firstObject.extra')).before;\n            if (before) {\n                set(this, 'days', before);\n            }\n            resolve({ before: before, name: nameField, sendto: sendTo });\n        } else {\n            resolve();\n        }\n    },\n    _getProjectOwnerRole(roles) {\n        const intl = get(this, 'intl');\n        let projectFieldName = '';\n        get(this, 'formFields').forEach(function (field) {\n            if (field.type == 'database' && field.options.form == 'project') {\n                projectFieldName = field.name;\n                roles.push({\n                    translated_name: intl.t('alarm.project_owner'),\n                    name: 'project_owner',\n                });\n            }\n        });\n        set(this, 'projectField', projectFieldName);\n        return roles;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"hKqbHEQ8\",\"block\":\"{\\\"symbols\\\":[\\\"opt\\\",\\\"field\\\",\\\"&default\\\"],\\\"statements\\\":[[14,3],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"alarmValue\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"alarms.turn_on_expires\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[10,\\\"name\\\",\\\"days\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setDays\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.not_in_use\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"0\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"0\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.0_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"5\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"5\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.5_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"7\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"7\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.7_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"10\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"10\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.10_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"14\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"14\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.14_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"21\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"21\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.21_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"28\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[\\\"28\\\",[24,[\\\"alarmValue\\\",\\\"before\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.28_days\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"custom\\\"],[11,\\\"selected\\\",[28,\\\"await\\\",[[23,0,[\\\"showCustomField\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.custom_days\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[23,0,[\\\"showCustomField\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"min\\\",\\\"value\\\",\\\"input\\\",\\\"class\\\"],[\\\"number\\\",\\\"0\\\",[24,[\\\"days\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validateAndSetCustomDays\\\",[24,[\\\"days\\\"]]],null],\\\"form-control\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"error_negative\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"field.error.negative\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showNameField\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"alarms.select_name_field\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 \\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[10,\\\"name\\\",\\\"name\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"nameField\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"option\\\",true],[8],[1,[28,\\\"t\\\",[\\\"alarms.select.default\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"formFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,2,[\\\"name\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,2,[\\\"name\\\"]],[24,[\\\"alarmValue\\\",\\\"name\\\"]]],null]],[8],[1,[23,2,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"alarms.select_send_to\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 \\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[10,\\\"name\\\",\\\"sendto\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"sendto\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sendto_options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,1,[\\\"name\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"name\\\"]],[24,[\\\"alarmValue\\\",\\\"sendto\\\"]]],null]],[8],[1,[23,1,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSaveButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"pull-left btn btn-primary btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveAlarm\\\"]],[8],[1,[28,\\\"t\\\",[\\\"alarms.save\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/alarm-setter/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport podNames from 'ember-component-css/pod-names';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment';\n\nexport default class AppVersionDialogComponent extends Component {\n    @service('collector-service') Collector;\n    @service() gui;\n\n    @tracked completed;\n    get styleNamespace() {\n        return podNames['app-version-dialog'];\n    }\n    get isOtta() {\n        return this.Collector.testNeedsOne('products.generic_timetracker');\n    }\n    get currentLang() {\n        return moment.locale();\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"zfw7BRMz\",\"block\":\"{\\\"symbols\\\":[\\\"@version\\\",\\\"@closeModal\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"await\\\",[[23,1,[\\\"status\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@class\\\",\\\"@header\\\",\\\"@hideClose\\\",\\\"@close\\\"],[[23,0,[\\\"styleNamespace\\\"]],[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"await\\\",[[23,1,[\\\"status\\\"]]],null],\\\"deprecated\\\"],null],[28,\\\"t\\\",[\\\"app-version-dialog.update-available\\\"],null],[28,\\\"t\\\",[\\\"app-version-dialog.app-expired\\\"],null]],null],[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"await\\\",[[23,1,[\\\"status\\\"]]],null],\\\"deprecated\\\"],null],false,true],null],[23,2,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dialog-body-text\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pt-5 pb-5\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"await\\\",[[23,1,[\\\"status\\\"]]],null],\\\"deprecated\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Error\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"app-version-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"await\\\",[[23,1,[\\\"status\\\"]]],null],\\\"deprecated\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.deprecation-text\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.deprecation-text-stop-working-1\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"days-until-expires\\\"],[8],[1,[23,1,[\\\"days_until_expires\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.deprecation-text-stop-working-2\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.expired-text\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"link-to-store\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isOtta\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"gui\\\",\\\"isAndroid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"https://play.google.com/store/apps/details?id=fi.movenium.visma\\\"],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-external-link\\\"],[8],[9],[1,[28,\\\"t\\\",[\\\"app-version-dialog.update-link-text\\\"],null],false],[9],[0,\\\"\\\\n                        (\\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.play-store-link\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[29,[\\\"https://apps.apple.com/fi/app/visma-entry/id1281506211?l=\\\",[23,0,[\\\"currentLang\\\"]]]]],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-external-link\\\"],[8],[9],[1,[28,\\\"t\\\",[\\\"app-version-dialog.update-link-text\\\"],null],false],[9],[0,\\\"\\\\n                        (\\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.app-store-link\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"gui\\\",\\\"isAndroid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"https://play.google.com/store/apps/details?id=fi.movenium.app\\\"],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-external-link\\\"],[8],[9],[1,[28,\\\"t\\\",[\\\"app-version-dialog.update-link-text\\\"],null],false],[9],[0,\\\"\\\\n                        (\\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.play-store-link\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[29,[\\\"https://apps.apple.com/fi/app/movenium/id1037756306?l=\\\",[23,0,[\\\"currentLang\\\"]]]]],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-external-link\\\"],[8],[9],[1,[28,\\\"t\\\",[\\\"app-version-dialog.update-link-text\\\"],null],false],[9],[0,\\\"\\\\n                        (\\\"],[1,[28,\\\"t\\\",[\\\"app-version-dialog.app-store-link\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"version-number\\\"],[8],[1,[28,\\\"t\\\",[\\\"app-version-dialog.version-code\\\"],null],false],[1,[28,\\\"get\\\",[[28,\\\"await\\\",[[23,1,[]]],null],\\\"version\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/app-version-dialog/template.hbs\"}});","import Component from '@ember/component';\nimport { set } from '@ember/object';\n\n/**\n * \n * {{#auto-modal as |modal|}}\n        {{#modal.open}}<button {{action modal.show}}>open</button>{{/modal.open}}\n\n        {{#modal.content}}\n            modal content goes here\n\n            <button {{action (model.close)}}>close</button>\n        {{/modal.content}}\n    {{/auto-modal}}\n * \n */\nexport default Component.extend({\n    showModal: false,\n\n    actions: {\n        openModal() {\n            set(this, 'showModal', true);\n        },\n\n        closeModal() {\n            set(this, 'showModal', false);\n        },\n    },\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"i0IZMQHv\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/auto-modal/content/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"JmWej+6t\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/auto-modal/open/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"RoF1iiDN\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"open\\\",\\\"show\\\",\\\"close\\\"],[[28,\\\"component\\\",[\\\"auto-modal/open\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openModal\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]]]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"header\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showModal\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"content\\\",\\\"show\\\",\\\"close\\\"],[[28,\\\"component\\\",[\\\"auto-modal/content\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openModal\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/auto-modal/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"hff7uudi\",\"block\":\"{\\\"symbols\\\":[\\\"@label\\\",\\\"@value\\\",\\\"@toggleValue\\\"],\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"beta-toggle\\\"],[11,\\\"data-anchor\\\",[29,[\\\"beta-toggle-\\\",[23,1,[]]]]],[8],[0,\\\"\\\\n    \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@value\\\",\\\"@theme\\\",\\\"@onToggle\\\",\\\"@offLabel\\\",\\\"@onLabel\\\",\\\"@showLabels\\\",\\\"@size\\\"],[[23,2,[]],\\\"light\\\",[23,3,[]],\\\"\\\",\\\"Beta\\\",true,\\\"large\\\"]]],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/beta-toggle/template.hbs\"}});","import Component from '@ember/component';\nimport moment from 'moment';\nimport { inject } from '@ember/service';\nimport { get, set, computed } from '@ember/object';\n\nexport default Component.extend({\n    blocks: inject(),\n    data: null,\n\n    _data: computed('data', function () {\n        let first = true;\n        let format = false;\n\n        get(this, 'data').forEach((item) => {\n            if (first) {\n                if (item[0] === 'date') format = true;\n                first = false;\n            } else if (format) {\n                item[0] = moment(item[0]).toDate();\n            }\n        });\n\n        return get(this, 'data');\n    }),\n\n    options: computed('title', function () {\n        return {\n            title: get(this, 'title'),\n        };\n    }),\n\n    didReceiveAttrs() {\n        if (get(this, 'url')) {\n            get(this, 'blocks')\n                .request(get(this, 'url'), {\n                    data: get(this, 'params'),\n                })\n                .then((data) => this._setData(data));\n        }\n    },\n\n    _setData(data) {\n        set(this, 'data', data);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"dHvZ/g71\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"component\\\",[[28,\\\"concat\\\",[[24,[\\\"type\\\"]],\\\"-chart\\\"],null]],[[\\\"data\\\",\\\"options\\\"],[[24,[\\\"_data\\\"]],[24,[\\\"options\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/blocks-chart/template.hbs\"}});","import Component from '@ember/component';\n\n/**\n * usage\n *\n *   <BootstrapField @text={{\"Field name\"}} @mandatory={{true}} @error={{someErrorText}} @name={{\"Name of the field\"}}>\n *       <Input @class=\"form-control\" />\n *   </BootstrapField>\n */\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"WFh7lD/w\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[24,[\\\"error\\\"]],\\\"has-error has-feedback\\\"],null]]]],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"name\\\"]],\\\"-field\\\"],null]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"title\\\"],[8],[1,[22,\\\"text\\\"],false],[9],[0,\\\"\\\\n    \\\"],[4,\\\"if\\\",[[24,[\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[23,0,[\\\"error\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[14,1],[0,\\\"\\\\n    \\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/bootstrap-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-card-multi-day/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarCardMultiDayComponent;\n\nimport Ember from 'ember';\n\nCalendarCardMultiDayComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    end_field: 'enddate',\n    _data: Ember.computed('day', 'data.@each.date', function () {\n        return this.getData();\n    }),\n    _fields: Ember.computed('fields', function () {\n        var fields;\n        fields = this.get('fields');\n        if (Ember.typeOf(fields) === 'string') {\n            Em.assert(\n                'You need to provide the form if giving fields to calendar-card as string',\n                this.get('form'),\n            );\n            fields = this.get('Collector').fieldArray(this.get('form'), fields.split(','));\n        }\n        return fields;\n    }),\n    getData: function () {\n        var data, day, day_index, end, first, start;\n        data = this.get('data');\n        if (data) {\n            day = this.get('day');\n            start = this.get('date_field');\n            end = this.get('end_field');\n            first = this.get('date').split('_')[0];\n            day_index = this.get('index');\n            return data.map(function (item) {\n                if (item.get(start) <= day && item.get(end) >= day) {\n                    return Ember.Object.create({\n                        row: item,\n                        first: day === first || day_index === 0 ? true : false,\n                    });\n                } else if (\n                    day <= item.get(start) ||\n                    moment(day).week() > moment(item.get(end)).week()\n                ) {\n                    return false;\n                } else {\n                    return 'empty';\n                }\n            });\n        }\n    },\n    actions: {\n        click: function (row) {\n            if (this.get('onclick')) {\n                return this.onclick(row);\n            }\n        },\n        removeRecord: function (row) {\n            if (this.get('remove')) {\n                return this.remove(row);\n            }\n        },\n        showRemoveIcon: function (index) {\n            var elem;\n            elem = '.calendar-remove-item.num-' + index;\n            return $(elem).css('visibility', 'visible');\n        },\n        hideRemoveIcon: function (index) {\n            var elem;\n            elem = '.calendar-remove-item.num-' + index;\n            return $(elem).css('visibility', 'hidden');\n        },\n    },\n});\n\nexport default CalendarCardMultiDayComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-card-multi-day/content/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarCardMultiDayContentComponent;\n\nimport Ember from 'ember';\n\nCalendarCardMultiDayContentComponent = Ember.Component.extend();\n\nexport default CalendarCardMultiDayContentComponent;\n","export default Ember.HTMLBars.template({\"id\":\"vw8Sb986\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"index\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[24,[\\\"row\\\"]],\\\"status\\\"],null],\\\"fixed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"status-icon\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CheckedCircle\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"day-fields\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_fields\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],[24,[\\\"date_field\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,1,[\\\"name\\\"]],[23,1,[\\\"form\\\"]],[28,\\\"get\\\",[[24,[\\\"row\\\"]],[23,1,[\\\"name\\\"]]],null]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    - \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,1,[\\\"name\\\"]],[23,1,[\\\"form\\\"]],[28,\\\"get\\\",[[24,[\\\"row\\\"]],[23,1,[\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-card-multi-day/content/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"qOt1z9iH\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"idx\\\",\\\"&default\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"_data\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"empty\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card-multi-day empty-card\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"remove\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[23,1,[\\\"row\\\"]],[24,[\\\"end_field\\\"]]],null],[24,[\\\"day\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"row\\\",\\\"isRemovable\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[\\\"calendar-remove-item move move-Cancel num-\\\",[23,2,[]]]]],[12,\\\"onmouseenter\\\",[28,\\\"action\\\",[[23,0,[]],\\\"showRemoveIcon\\\",[23,2,[]]],null]],[12,\\\"onmouseleave\\\",[28,\\\"action\\\",[[23,0,[]],\\\"hideRemoveIcon\\\",[23,2,[]]],null]],[3,\\\"action\\\",[[23,0,[]],\\\"removeRecord\\\",[23,1,[\\\"row\\\"]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"card-multi-day \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[23,1,[\\\"row\\\"]],[24,[\\\"date_field\\\"]]],null],[24,[\\\"day\\\"]]],null],\\\"first-day\\\"],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[23,1,[\\\"row\\\"]],[24,[\\\"end_field\\\"]]],null],[24,[\\\"day\\\"]]],null],\\\"last-day\\\"],null]]]],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"click\\\",[23,1,[\\\"row\\\"]]],null]],[11,\\\"onmouseenter\\\",[28,\\\"action\\\",[[23,0,[]],\\\"showRemoveIcon\\\",[23,2,[]]],null]],[11,\\\"onmouseleave\\\",[28,\\\"action\\\",[[23,0,[]],\\\"hideRemoveIcon\\\",[23,2,[]]],null]],[11,\\\"style\\\",[29,[\\\"border-color:\\\",[28,\\\"randomize-color\\\",null,[[\\\"record\\\",\\\"fields\\\"],[[23,1,[\\\"row\\\"]],[24,[\\\"randomColor\\\"]]]]],\\\";\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[23,1,[\\\"row\\\"]],[24,[\\\"date_field\\\"]]],null],[24,[\\\"day\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"calendar-card-multi-day/content\\\",null,[[\\\"row\\\",\\\"_fields\\\",\\\"date_field\\\"],[[23,1,[\\\"row\\\"]],[24,[\\\"_fields\\\"]],[24,[\\\"date_field\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"first\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"calendar-card-multi-day/content\\\",null,[[\\\"row\\\",\\\"_fields\\\",\\\"date_field\\\"],[[23,1,[\\\"row\\\"]],[24,[\\\"_fields\\\"]],[24,[\\\"date_field\\\"]]]]],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[14,3,[[23,1,[\\\"row\\\"]]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1,2]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-card-multi-day/template.hbs\"}});","import { assert } from '@ember/debug';\nimport { computed, get } from '@ember/object';\nimport Component from '@ember/component';\nimport { defineProperty } from '@ember/object';\nimport { isEmpty } from '@ember/utils';\n\nexport default Component.extend({\n    filteredModel: computed('model', function () {\n        const date = get(this, 'date');\n        const fields = get(this, 'fields');\n        const model = get(this, 'model');\n        if (isEmpty(model)) {\n            return [];\n        }\n        return model.filterBy(fields.date, date);\n    }),\n\n    init() {\n        this._super(...arguments);\n        const date = get(this, 'date');\n        const fields = get(this, 'fields');\n        assert('Date must be given for what day we are filtering sums', date);\n        assert('Fields must be given and contain date and hour field names', fields);\n        assert('Date field name must be given', fields.date);\n        assert('Hours field name must be given from where we calculate hours', fields.hours);\n        defineProperty(\n            this,\n            'sum',\n            computed('filteredModel', 'model.@each.' + fields.hours, function () {\n                const model = get(this, 'filteredModel');\n                const date = get(this, 'date');\n                const fields = get(this, 'fields');\n                assert(\n                    'Model must be given that has the rows from where sums should be calculated',\n                    model,\n                );\n                let sum = null;\n\n                model.filterBy(fields.date, date).forEach((item) => {\n                    if (sum === null) sum = 0;\n                    sum += get(item, fields.hours);\n                });\n\n                if (sum) {\n                    sum = Number(sum);\n                    if (!isNaN(sum)) {\n                        sum = sum.toFixed(2);\n                    }\n                }\n                return sum;\n            }),\n        );\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"JCC5+HKn\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1,[[24,[\\\"sum\\\"]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-card-sum/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-card-v2/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarCardComponent;\n\nimport Ember from 'ember';\n\nCalendarCardComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    classNames: ['calendar-card'],\n    _data: Ember.computed('day', 'data.@each.date', function () {\n        return this.getData();\n    }),\n    _fields: Ember.computed('fields', function () {\n        var boldArray, fields;\n        fields = this.get('fields');\n        boldArray = this.get('boldFields') ? this.get('boldFields').split(' ') : [];\n        this.set('boldArray', boldArray);\n        if (Ember.typeOf(fields) === 'string') {\n            Em.assert(\n                'You need to provide the form if giving fields to calendar-card as string',\n                this.get('form'),\n            );\n            fields = this.get('Collector').fieldArray(this.get('form'), fields.split(','));\n        }\n        fields.forEach((item, i, arr) => {\n            if (boldArray.includes(item.name)) {\n                return arr.push(arr.splice(i, 1)[0]);\n            }\n        });\n        return fields;\n    }),\n    getData: function () {\n        var data;\n        data = this.get('data');\n        if (data) {\n            return data.filterBy(this.get('date_field'), this.get('day'));\n        }\n    },\n    actions: {\n        click: function (row) {\n            if (this.get('onclick')) {\n                return this.onclick(row);\n            }\n        },\n        removeRecord: function (row) {\n            if (this.get('remove')) {\n                return this.remove(row);\n            }\n        },\n    },\n});\n\nexport default CalendarCardComponent;\n","export default Ember.HTMLBars.template({\"id\":\"3NsYupcw\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"field\\\",\\\"index\\\",\\\"&default\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"_data\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"remove\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"isRemovable\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"calendar-remove-item move move-Cancel\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeRecord\\\",[23,1,[]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"click\\\",[23,1,[]]],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"topImage\\\"]],\\\"user-image\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"style\\\",\\\"float:right\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"user-icon\\\",[[23,1,[\\\"user\\\",\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],[[\\\"text\\\"],[[28,\\\"concat\\\",[[23,1,[\\\"user\\\",\\\"firstname\\\"]],\\\" \\\",[23,1,[\\\"user\\\",\\\"lastname\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"_fields\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"name\\\"]],[24,[\\\"date_field\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[23,3,[]],0],null],[28,\\\"not\\\",[[24,[\\\"boldFields\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,2,[\\\"name\\\"]],[23,2,[\\\"form\\\"]],[28,\\\"get\\\",[[23,1,[]],[23,2,[\\\"name\\\"]]],null]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"in-array\\\",[[23,2,[\\\"name\\\"]],[24,[\\\"boldArray\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h5\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,2,[\\\"name\\\"]],[23,2,[\\\"form\\\"]],[28,\\\"get\\\",[[23,1,[]],[23,2,[\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[23,2,[\\\"name\\\"]],[23,2,[\\\"form\\\"]]]]],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[23,2,[\\\"form\\\"]],[23,2,[\\\"name\\\"]],[28,\\\"get\\\",[[23,1,[]],[23,2,[\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2,3]},null],[0,\\\"        \\\"],[14,4,[[23,1,[]]]],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-card-v2/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-card/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarCardComponent;\n\nimport Ember from 'ember';\n\nCalendarCardComponent = Ember.Component.extend({\n    didReceiveAttrs: function () {\n        return this.setData();\n    },\n    setData: function () {\n        var formatted_data, rows;\n        formatted_data = this.get('formatted_data');\n        // first_column_is_date = false\n        if (formatted_data) {\n            rows = formatted_data.filterBy('cal_date_value', this.get('day'));\n            return this.set('currentDayData', rows);\n        }\n    },\n});\n\nexport default CalendarCardComponent;\n","export default Ember.HTMLBars.template({\"id\":\"AX1K24ti\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"column\\\",\\\"index\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"currentDayData\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,2,[]],[24,[\\\"date_field\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[23,2,[]],[24,[\\\"form\\\"]]]]],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2,3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-card/template.hbs\"}});","import Component from '@ember/component';\nimport moment from 'moment';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    dates: computed('range', function () {\n        function getRangeOfDates(start, end, key, arr = [start.startOf(key)]) {\n            if (start.isAfter(end)) throw new Error('start must precede end');\n            if (!key) throw new Error('key must be given');\n            const next = moment(start).add(1, key).startOf(key);\n\n            if (next.isAfter(end, key)) return arr;\n\n            return getRangeOfDates(next, end, key, arr.concat(next));\n        }\n        if (!get(this, 'range')) return [];\n        const [start, end] = get(this, 'range').split('_');\n        return getRangeOfDates(moment(start), moment(end), 'day');\n    }),\n\n    fixedCellWidths: computed('range', function () {\n        return get(this, 'dates.length') * 35 > this.element.offsetWidth;\n    }),\n});\n","import Component from '@ember/component';\nimport { computed } from '@ember/object';\n\nexport default Component.extend({\n    tagName: 'tr',\n\n    toDay: computed(function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"vOoGuv10\",\"block\":\"{\\\"symbols\\\":[\\\"date\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"toDay\\\"]],[28,\\\"moment-format\\\",[[23,1,[]],\\\"YYYY-MM-DD\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"today\\\"],[8],[1,[28,\\\"moment-format\\\",[[23,1,[]],\\\"DD\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[]],\\\"DD\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"th\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/days-header/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    tagName: 'tr',\n\n    _dates: computed('dates', function () {\n        return get(this, 'dates').map((date, index) => {\n            if (index == 0 && moment(date).format('D') <= 26) return date; // show month in first column if next month is at least 4 days from this date\n            return moment(date).format('D') === '1' ? date : ''; // show date string on every month change column\n        });\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"bN6WTn+S\",\"block\":\"{\\\"symbols\\\":[\\\"date\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[]],\\\"MMMM YYYY\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"th\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/months-header/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, set, get } from '@ember/object';\n\nexport default Component.extend({\n    tagName: 'div',\n    classNames: ['day-cell-bar'],\n    startDateField: 'date',\n    endDateField: 'enddate',\n    colorString: computed('colorFields', function () {\n        const row = get(this, 'cellRows.firstObject');\n        let string = '';\n        get(this, 'colorFields').forEach((field) => {\n            string += get(row, field);\n        });\n        return string;\n    }),\n\n    init() {\n        this._super(...arguments);\n        if (!this.colorFields) {\n            set(this, 'colorFields', ['user.id', 'id']);\n        }\n    },\n    //classNameBindings: ['hasRows:day-empty'],\n    //hasRows: notEmpty('rows')\n});\n","export default Ember.HTMLBars.template({\"id\":\"Bd6XHatS\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"cell-block \\\",[28,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[24,[\\\"cellRows\\\",\\\"firstObject\\\"]],[24,[\\\"startDateField\\\"]]],null],[28,\\\"moment-format\\\",[[24,[\\\"cellDate\\\"]],\\\"YYYY-MM-DD\\\"],null]],null],[28,\\\"get\\\",[[24,[\\\"cellRows\\\",\\\"firstObject\\\"]],[24,[\\\"endDateField\\\"]]],null]],null],\\\"cell-block-first\\\"],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[24,[\\\"cellRows\\\",\\\"firstObject\\\"]],[24,[\\\"endDateField\\\"]]],null],[28,\\\"moment-format\\\",[[24,[\\\"cellDate\\\"]],\\\"YYYY-MM-DD\\\"],null]],null],\\\"cell-block-last\\\"],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"not\\\",[[28,\\\"get\\\",[[24,[\\\"cellRows\\\",\\\"firstObject\\\"]],[24,[\\\"endDateField\\\"]]],null]],null],\\\"cell-block-single\\\"],null]]]],[11,\\\"style\\\",[29,[\\\"background-color:\\\",[28,\\\"randomize-color\\\",[[24,[\\\"colorString\\\"]]],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[24,[\\\"cellRows\\\",\\\"firstObject\\\"]],[24,[\\\"startDateField\\\"]]],null],[28,\\\"moment-format\\\",[[24,[\\\"cellDate\\\"]],\\\"YYYY-MM-DD\\\"],null],[28,\\\"get\\\",[[24,[\\\"cellRows\\\",\\\"firstObject\\\"]],[24,[\\\"endDateField\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"cell-block-info\\\"],[8],[0,\\\"\\\\n            \\\"],[14,1],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/cell/bar/template.hbs\"}});","import Component from '@ember/component';\nimport { notEmpty } from '@ember/object/computed';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    tagName: 'td',\n    classNames: ['day-cell'],\n    classNameBindings: ['hasRows:day-empty', 'isWeekend:weekend'],\n    hasRows: notEmpty('rows'),\n\n    isWeekend: computed(function () {\n        const weekday = moment(get(this, 'date')).format('d');\n        if (weekday == 0 || weekday == 6) return true;\n\n        return false;\n    }),\n});\n","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    tagName: 'div',\n    classNames: ['day-cell-bar'],\n    //classNameBindings: ['hasRows:day-empty'],\n    //hasRows: notEmpty('rows')\n\n    blockWidth: 35,\n\n    dayCount: 3 /*computed(\"rows\", function() {\n       return this.get(\"rows.length\")\n    }),*/,\n\n    widthInPixels: computed('dayCount', function () {\n        return get(this, 'dayCount') * get(this, 'blockWidth') - 4 + 'px';\n    }),\n\n    isFirst: computed('rows', 'date', function () {\n        return moment(get(this, 'rows.firstObject.date')).isSame(get(this, 'date'), 'day');\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"V36ShUgb\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"isFirst\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"cell-block-long-bar\\\"],[11,\\\"style\\\",[29,[\\\"width: \\\",[22,\\\"widthInPixels\\\"],\\\"; background-color:\\\",[28,\\\"randomize-color\\\",[[28,\\\"concat\\\",[[24,[\\\"rows\\\",\\\"firstObject\\\",\\\"user\\\",\\\"id\\\"]],[24,[\\\"cellRows\\\",\\\"firstObject\\\",\\\"id\\\"]]],null]],null]]]],[8],[0,\\\"\\\\n    \\\"],[14,1],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/cell/long-bar/template.hbs\"}});","import Component from '@ember/component';\nimport { get } from '@ember/object';\n\nexport default Component.extend({\n    actions: {\n        addNew(user) {\n            this.onAdd(moment(get(this, 'date')).format('YYYY-MM-DD'), user);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"89Zfel9S\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"calendar-plus-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addNew\\\",[24,[\\\"user\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"plus move move-PlusMath\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/cell/plus-button/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    actions: {\n        editRow(row) {\n            this.onEdit(row);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"Kv53hphM\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"field\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"rows\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"report.\\\",[24,[\\\"form\\\"]],\\\".\\\",[23,2,[\\\"name\\\"]]],null]],null],false],[0,\\\":\\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,2,[\\\"name\\\"]],[24,[\\\"form\\\"]],[28,\\\"get\\\",[[23,1,[]],[28,\\\"concat\\\",[[23,2,[\\\"name\\\"]]],null]],null]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"],[4,\\\"if\\\",[[23,1,[\\\"isEditable\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"editRow\\\",[23,1,[]]]],[8],[9],[7,\\\"br\\\",true],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,1,[]],[24,[\\\"rows\\\",\\\"lastObject\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/cell/popover-content-fields/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"OJSfJrPo\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasRows\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"rows\\\",\\\"date\\\",\\\"bar\\\",\\\"long-bar\\\"],[[24,[\\\"rows\\\"]],[24,[\\\"date\\\"]],[28,\\\"component\\\",[\\\"calendar-compact/row/cell/bar\\\"],[[\\\"cellRows\\\",\\\"cellDate\\\"],[[24,[\\\"rows\\\"]],[24,[\\\"date\\\"]]]]],[28,\\\"component\\\",[\\\"calendar-compact/row/cell/long-bar\\\"],[[\\\"rows\\\",\\\"date\\\"],[[24,[\\\"rows\\\"]],[24,[\\\"date\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"],[4,\\\"ember-popover\\\",null,[[\\\"event\\\",\\\"hideOn\\\",\\\"popoverHideDelay\\\",\\\"class\\\"],[\\\"click\\\",\\\"mouseleave\\\",1000,\\\"ember-popover\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"popover-content-fields\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/row/cell/popover-content-fields\\\"],[[\\\"rows\\\"],[[24,[\\\"rows\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"plus-button\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/row/cell/plus-button\\\"],[[\\\"user\\\",\\\"date\\\"],[[24,[\\\"user\\\"]],[24,[\\\"date\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/cell/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'tr',\n});\n","export default Ember.HTMLBars.template({\"id\":\"ChMHoIfw\",\"block\":\"{\\\"symbols\\\":[\\\"date\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"cell\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/row/cell\\\"],[[\\\"rows\\\",\\\"user\\\",\\\"date\\\"],[[28,\\\"get\\\",[[24,[\\\"row\\\",\\\"rows\\\"]],[28,\\\"moment-format\\\",[[23,1,[]],\\\"YYYY-MM-DD\\\"],null]],null],[24,[\\\"row\\\",\\\"main\\\"]],[23,1,[]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[14,2,[[28,\\\"hash\\\",null,[[\\\"title\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/row/title\\\"],[[\\\"title\\\"],[[24,[\\\"row\\\",\\\"main\\\"]]]]]]]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    flags: service(),\n    tagName: 'td',\n    classNames: 'title-cell',\n    // we can use classnamebindings to add a css-class to the element based on some computed property\n    classNameBindings: ['isTopMenu:top-menu-left-margin-fix'],\n    isTopMenu: computed(function () {\n        return get(this, 'flags').test('top-header-menu');\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"Ej2MQ/V/\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1,[[24,[\\\"title\\\"]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/row/title/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"aDYqsgEC\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"table\\\",true],[11,\\\"class\\\",[29,[\\\"table \\\",[28,\\\"if\\\",[[24,[\\\"fixedCellWidths\\\"]],\\\"fixed\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n        \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"months-header\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/months-header\\\"],[[\\\"dates\\\"],[[24,[\\\"dates\\\"]]]]]]]]]],[0,\\\"\\\\n        \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"weeks-header\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/weeks-header\\\"],[[\\\"dates\\\"],[[24,[\\\"dates\\\"]]]]]]]]]],[0,\\\"\\\\n        \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"days-header\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/days-header\\\"],[[\\\"dates\\\"],[[24,[\\\"dates\\\"]]]]]]]]]],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"row\\\"],[[28,\\\"component\\\",[\\\"calendar-compact/row\\\"],[[\\\"row\\\",\\\"dates\\\"],[[23,1,[]],[24,[\\\"dates\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'tr',\n});\n","export default Ember.HTMLBars.template({\"id\":\"/p8PnPvd\",\"block\":\"{\\\"symbols\\\":[\\\"date\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"moment-format\\\",[[23,1,[]],\\\"E\\\"],null],\\\"1\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[]],\\\"W\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"th\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-compact/weeks-header/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-report-add-options/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarReportAddOptionsComponent;\n\nimport Ember from 'ember';\n\nimport clickelsewhere from 'tt4/mixins/clickelsewhere';\n\nCalendarReportAddOptionsComponent = Ember.Component.extend(clickelsewhere, {\n    Collector: Ember.inject.service('collector-service'),\n    analytics: Ember.inject.service(),\n    showOptions: false,\n    onClickElsewhere: function () {\n        return this.set('showOptions', false);\n    },\n    addableOptions: Ember.computed('options.[]', function () {\n        var c;\n        c = this.get('Collector');\n        return this.get('options').filter((option) => {\n            if (option === 'worktime') {\n                return c.canAddWorktime(this.get('date')) && !c.hasErrors(option);\n            }\n            return !c.hasErrors(option);\n        });\n    }),\n    actions: {\n        toggleOptions: function () {\n            if (this.get('addableOptions.length') === 1) {\n                return this.send('addRecord', this.get('addableOptions.firstObject'));\n            } else {\n                return this.toggleProperty('showOptions');\n            }\n        },\n        addRecord: function (type) {\n            if (type === 'worktime') {\n                this.get('analytics').customData = { category: 'calendar-report' };\n            }\n            if (this.get('add')) {\n                this.add(type);\n            }\n            return this.set('showOptions', false);\n        },\n    },\n});\n\nexport default CalendarReportAddOptionsComponent;\n","export default Ember.HTMLBars.template({\"id\":\"j6Wn8Crl\",\"block\":\"{\\\"symbols\\\":[\\\"opt\\\"],\\\"statements\\\":[[1,[28,\\\"calendar-report-add\\\",null,[[\\\"options\\\",\\\"click\\\"],[[24,[\\\"options\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleOptions\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"options\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showOptions\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"addableOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addRecord\\\",[23,1,[]]]],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"menu.add_\\\",[23,1,[]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-report-add-options/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-report-add/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarReportAddComponent;\n\nimport Ember from 'ember';\n\nCalendarReportAddComponent = Ember.Component.extend({\n    classNames: 'calendar-report-add',\n});\n\nexport default CalendarReportAddComponent;\n","export default Ember.HTMLBars.template({\"id\":\"LWkDFOXy\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"plus-button\\\"],[8],[0,\\\"\\\\n   \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-report-add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-report-day/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarReportDayComponent;\n\nimport Ember from 'ember';\n\nCalendarReportDayComponent = Ember.Component.extend({\n    isToday: Ember.computed('day', function () {\n        return moment().isSame(this.get('day'), 'day');\n    }),\n    utcday: Ember.computed('day', function () {\n        if (!this.get('day') || this.get('day') === '') {\n            return;\n        }\n        return moment(this.get('day')).format('DD.MM');\n    }),\n});\n\nexport default CalendarReportDayComponent;\n","export default Ember.HTMLBars.template({\"id\":\"x0EXKL26\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"p\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"isToday\\\"]],\\\"istoday\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"dateNonBlock\\\"]],\\\"non-block\\\"],null]]]],[8],[4,\\\"if\\\",[[24,[\\\"utcday\\\"]]],null,{\\\"statements\\\":[[1,[22,\\\"utcday\\\"],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\" \\\"]],\\\"parameters\\\":[]}],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"specialDay\\\"]]],null,{\\\"statements\\\":[[0,\\\" - \\\"],[7,\\\"b\\\",true],[8],[1,[22,\\\"specialDay\\\"],false],[9]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[14,1],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-report-day/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/calendar-report/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CalendarReportComponent;\n\nimport Ember from 'ember';\n\n//import collector from '../../classes/collector'\nCalendarReportComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    store: Ember.inject.service(),\n    date:\n        moment.utc().startOf('month').format('YYYY-MM-DD') +\n        '_' +\n        moment.utc().endOf('month').format('YYYY-MM-DD'),\n    hideWeekend: true,\n    showWeekend: Ember.computed.not('hideWeekend'),\n    workdays: Ember.computed('user', 'date', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                var c, params;\n                c = this.get('Collector');\n                params = {\n                    country: this.get('session.currentUser.company_info.country'),\n                    date: this.get('date'),\n                };\n                if (c.formExists('worktimegroup') && this.get('user')) {\n                    // Use peekRecord instead of findRecord, temporary fix for Foreman issue EP-13300\n                    const record = this.store.peekRecord('user', this.get('user'));\n                    params['worktimegroup'] = record.get('worktimegroup.id')\n                        ? record.get('worktimegroup.id')\n                        : null;\n                }\n                return this.get('store')\n                    .query('workday-day', params)\n                    .then((rows) => {\n                        var days;\n                        days = {};\n                        rows.forEach((row) => {\n                            return (days[row.get('date')] = row.get('desc'));\n                        });\n                        return resolve({\n                            value: days,\n                        });\n                    });\n            }),\n        });\n    }),\n    calendar: Ember.computed('date', function () {\n        const extractDates = (dateString) => {\n            const [start, end] = dateString.split('_');\n            return { startDay: moment.utc(start).toDate(), endDay: moment.utc(end).toDate() };\n        };\n        const weekdayNames = [\n            'monday',\n            'tuesday',\n            'wednesday',\n            'thursday',\n            'friday',\n            'saturday',\n            'sunday',\n        ];\n        const { startDay, endDay } = extractDates(this.get('date'));\n        // Get days between start and end\n        const days = [];\n        let day = startDay;\n        while (day <= endDay) {\n            days.push(day);\n            day = moment.utc(day).add(1, 'day').toDate();\n        }\n        // Get week number(s) between start and end\n        const weekNumbers = [];\n        let week = moment(startDay).startOf('isoWeek').toDate();\n        while (week <= endDay) {\n            weekNumbers.push(moment(week).isoWeek());\n            week = moment(week).add(1, 'week').toDate();\n        }\n        // Create array for each week\n        const weekArrays = [];\n        weekNumbers.forEach(() => {\n            weekArrays.push(['', '', '', '', '', '', '']);\n        });\n        // Fill week arrays with their days\n        weekArrays.forEach((weekArray) => {\n            for (let i = 0; i < 7; i++) {\n                const _day = days.shift();\n                if (!_day) break;\n                const index = weekdayNames.indexOf(\n                    _day.toLocaleDateString('en', { weekday: 'long' }).toLowerCase(),\n                );\n                weekArray[index] = _day;\n                if (index === 6 || days.length === 0) break;\n            }\n        });\n        // Format week array dates\n        const formattedWeekArrays = weekArrays.map((weekArray) => {\n            return weekArray.map((weekday) => {\n                if (weekday === '') return weekday;\n                else return moment(weekday).format('YYYY-MM-DD');\n            });\n        });\n        // Create object with week numbers as keys and week arrays as values (i.e 202309: [....])\n        let weekObject = {};\n        let currentYear = moment().year();\n        let lastWeekNumber = 0; // Variable to keep track of the last week number\n\n        weekNumbers.forEach((weekNumber, index) => {\n            // Check if the weekNumber has rolled over to the next year\n            if (weekNumber < lastWeekNumber) {\n                currentYear++;\n            }\n            // Update the lastWeekNumber for the next iteration\n            lastWeekNumber = weekNumber;\n            // Generate the key for weekObject\n            let key =\n                weekNumber < 10 ? `${currentYear}0${weekNumber}` : `${currentYear}${weekNumber}`;\n            weekObject[key] = formattedWeekArrays[index];\n        });\n        return weekObject;\n    }),\n    actions: {\n        fullScreen: function () {\n            if (this.get('fullscreenmode') === 'custom') {\n                return this.get('gui').toggleCustomFullScreen();\n            } else {\n                return this.get('gui').togglefullScreen();\n            }\n        },\n        toggleHideWeekend: function () {\n            return this.toggleProperty('hideWeekend');\n        },\n    },\n});\n\nexport default CalendarReportComponent;\n","export default Ember.HTMLBars.template({\"id\":\"MJ0Ky2Ji\",\"block\":\"{\\\"symbols\\\":[\\\"week\\\",\\\"key\\\",\\\"day\\\",\\\"index\\\",\\\"&default\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"hideDateRangePicker\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-8 col-sm-4 text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"date-range-picker\\\",null,[[\\\"value\\\"],[[24,[\\\"date\\\"]]]]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"fullScreen\\\"]],\\\"report-main-zoomed\\\"],null],\\\" calendar-report\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"gui\\\",\\\"fullScreen\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row no-margin-row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-right report-button-row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"fullscreenmode\\\"]],\\\"custom\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"fullScreen\\\"]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"customFullScreen\\\"]],\\\"move move-Cross\\\",\\\"move move-FitWidth report-fullscreen\\\"],null]],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"fullScreen\\\"]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"fullScreen\\\"]],\\\"move move-Cross\\\",\\\"move move-FitWidth report-fullscreen\\\"],null]],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-right report-button-row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more weekend-toggle\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"theme\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[[24,[\\\"showWeekend\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleHideWeekend\\\"],null],\\\"light\\\",[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"calendar.hide.weekend\\\"],null],\\\"\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-striped table-responsive\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"no-borders\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.monday\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.tuesday\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.wednesday\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.thursday\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.friday\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hideWeekend\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.saturday\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.sunday\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[24,[\\\"calendar\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"week-number no-borders\\\"],[8],[1,[28,\\\"moment-format\\\",[[23,2,[]],\\\"ww\\\",\\\"YYYYww\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"and\\\",[[24,[\\\"hideWeekend\\\"]],[28,\\\"is-weekend\\\",[[28,\\\"add\\\",[[23,4,[]],1],null]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[11,\\\"class\\\",[29,[\\\"day \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[]],\\\"\\\"],null],\\\"day-inactive\\\"],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"workdays\\\",\\\"value\\\"]],[23,3,[]]],null],\\\"day-special\\\"],null],\\\" \\\",[28,\\\"concat\\\",[\\\"weekday-\\\",[23,4,[]]],null]]]],[8],[0,\\\"\\\\n\\\"],[0,\\\"                            \\\"],[14,5,[[23,3,[]],[23,4,[]],[28,\\\"get\\\",[[24,[\\\"workdays\\\",\\\"value\\\"]],[23,3,[]]],null]]],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3,4]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/calendar-report/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action, get } from '@ember/object';\n\nexport default class CcbuttonComponent extends Component {\n    @tracked integrations;\n    @tracked saving = false;\n    @tracked selected = null;\n    @tracked errorMessage = null;\n    @tracked values = {};\n    @service store;\n    @service ttapi;\n    @service notifications;\n    @service intl;\n    @service error;\n\n    constructor() {\n        super(...arguments);\n        this.load();\n    }\n\n    async load() {\n        const integrations = await this.store.findAll('ccbutton');\n\n        const running = await this.store.query('ccbuttonexecution', {\n            filter: { 'attributes.state': 'running' },\n        });\n\n        const oldRows = running.filter((item) =>\n            moment(item.started).isBefore(moment().subtract(1, 'hour')),\n        );\n\n        oldRows.forEach((record) => {\n            record.state = 'error';\n            record.save();\n        });\n\n        this.integrations = integrations.map((item) => {\n            return {\n                id: item.id,\n                name: item.name,\n                disabled: running.find((a) => {\n                    if (!a.ccbutton) return false;\n                    if (a.state !== 'running') return false;\n                    return get(a, 'ccbutton.id') === get(item, 'id');\n                })\n                    ? true\n                    : false,\n            };\n        });\n    }\n\n    get selectedIntegrationName() {\n        return this.store.peekRecord('ccbutton', this.selected).name;\n    }\n\n    get fields() {\n        let fields = this.store.peekRecord('ccbutton', this.selected).fields;\n        if (!fields) return [];\n        fields = fields.split(',');\n        return fields.map((field) => {\n            if (field.includes('.')) {\n                const [form, fieldName] = field.split('.');\n                return { form, fieldName };\n            }\n            return { form: 'worktime', fieldName: field };\n        });\n    }\n\n    @action async execute() {\n        this.saving = true;\n        this.errorMessage = null;\n\n        const queryParams = Object.keys(this.values).map((key) => {\n            const value = this.values[key];\n            return key + '=' + (value.id ? value.id : value);\n        });\n        queryParams.push('blocking=' + this.store.peekRecord('ccbutton', this.selected).blocking);\n        if (this.store.peekRecord('ccbutton', this.selected).token) queryParams.push('token=true');\n\n        try {\n            await this.ttapi.request(\n                'api/ccbutton/execute/' + this.selected + '?' + queryParams.join('&'),\n                { method: 'post' },\n            );\n            this.notifications.success(this.intl.t('integrations.started'), { autoClear: true });\n            this.selected = null;\n        } catch (e) {\n            this.errorMessage = get(e, 'payload.message') || e;\n        }\n\n        this.saving = false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"dpW+NjTg\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"integration\\\",\\\"&default\\\"],\\\"statements\\\":[[14,3],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-33 pr-4\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"bootstrap-field\\\",[[12,\\\"class\\\",\\\"mt-6\\\"]],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"menu.integrations\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"selected\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[10,\\\"class\\\",\\\"form-control mb-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[8],[1,[28,\\\"t\\\",[\\\"integrations.select\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"integrations\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"disabled\\\",[23,2,[\\\"disabled\\\"]]],[11,\\\"value\\\",[23,2,[\\\"id\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[24,[\\\"selected\\\"]],[23,2,[\\\"id\\\"]]],null]],[8],[1,[23,2,[\\\"name\\\"]],false],[0,\\\" \\\"],[4,\\\"if\\\",[[23,2,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"integration.not_done\\\"],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selected\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column center\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"text-primary mt-0 mb-2\\\"],[8],[1,[23,0,[\\\"selectedIntegrationName\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[]],\\\"date_interval\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"report.worktime.date\\\"],null]]],{\\\"statements\\\":[],\\\"parameters\\\":[]}],[0,\\\"\\\\n                            \\\"],[5,\\\"date-range-picker\\\",[[12,\\\"class\\\",\\\"pb-4\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"values\\\",\\\"date\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[[28,\\\"concat\\\",[[23,1,[\\\"form\\\"]],\\\".\\\",[23,1,[\\\"fieldName\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"addon/field-container\\\",[],[[\\\"@field\\\",\\\"@value\\\",\\\"@onChange\\\"],[[28,\\\"concat\\\",[[23,1,[\\\"form\\\"]],\\\".\\\",[23,1,[\\\"fieldName\\\"]]],null],[28,\\\"get\\\",[[23,0,[\\\"values\\\"]],[23,1,[\\\"fieldName\\\"]]],null],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[28,\\\"get\\\",[[23,0,[\\\"values\\\"]],[23,1,[\\\"fieldName\\\"]]],null]],null]],null]]]],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column pt-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 pr-2\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"saveButtonText\\\"],[[23,0,[\\\"saving\\\"]],[23,0,[\\\"execute\\\"]],\\\"btn btn-primary btn-block\\\",[28,\\\"t\\\",[\\\"integrations.execute\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 pl-2\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-block\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[24,[\\\"selected\\\"]]],null],false],null]]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[23,0,[\\\"errorMessage\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[28,\\\"t\\\",[\\\"integrations.select_first\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/ccbutton/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/change-status/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Component;\n\nimport Ember from 'ember';\n\nimport { pluralize } from 'ember-inflector';\n\nComponent = Ember.Component.extend({\n    notifications: Ember.inject.service(),\n    store: Ember.inject.service(),\n    capi: Ember.inject.service(),\n    rowCount: Ember.computed('params.rowCount', function () {\n        return this.get('params.rowCount');\n    }),\n    rowHeap: [],\n    fullHeapSize: 0,\n    done: false,\n    numericalProgress: 0,\n    progress: Ember.computed('numericalProgress', function () {\n        return this.get('numericalProgress') + ' %';\n    }),\n    progressStyle: Ember.computed('progress', function () {\n        return Ember.String.htmlSafe('width: ' + this.get('numericalProgress') + '%');\n    }),\n    setStatusForAll: function (changeData) {\n        var data, form, reqParams;\n        reqParams = this.get('params.requestParams');\n        form = this.get('params.form');\n        data = {};\n        data[form] = changeData;\n        this.set('executing', true);\n        return this.get('store')\n            .query(form, reqParams)\n            .then((rows) => {\n                var array_row_ids, chunkSize, handled, i, j, promises, ref, row_ids, slices;\n                row_ids = [];\n                array_row_ids = [];\n                rows.forEach((row) => {\n                    return row_ids.push(row.get('id'));\n                });\n                // set size of id's to capi multiedit\n                chunkSize = 10;\n                slices = Math.ceil(row_ids.length / chunkSize);\n                //covert long id array to chunks of max chunkSize\n                for (\n                    i = j = 0, ref = slices;\n                    0 <= ref ? j < ref : j > ref;\n                    i = 0 <= ref ? ++j : --j\n                ) {\n                    array_row_ids.push(row_ids.slice(i * chunkSize, (i + 1) * chunkSize));\n                }\n                promises = [];\n                handled = 0;\n                array_row_ids.forEach((item) => {\n                    var form_plural, promise;\n                    data[form].id = item;\n                    data[form].meta = {\n                        insert_history: 'true',\n                    };\n                    form_plural = pluralize(form).camelize();\n                    promise = this.get('capi')\n                        .request('/' + form_plural, {\n                            dataType: 'json',\n                            type: 'PUT',\n                            data: JSON.stringify(data),\n                        })\n                        .then(() => {\n                            handled++;\n                            return this.set(\n                                'numericalProgress',\n                                Math.ceil((handled / array_row_ids.length) * 100),\n                            );\n                        })\n                        .catch((e) => {\n                            this.get('notifications').error(e, {\n                                autoClear: true,\n                            });\n                            handled++;\n                            return this.set(\n                                'numericalProgress',\n                                Math.ceil((handled / array_row_ids.length) * 100),\n                            );\n                        });\n                    return promises.push(promise);\n                });\n                return Em.RSVP.Promise.all(promises).then(() => {\n                    this.set('executing', false);\n                    return this.set('done', true);\n                });\n            });\n    },\n    actions: {\n        closeModal: function () {\n            return this.sendAction('close');\n        },\n        changeStatusForAll: function () {\n            var action, changeData, locked, status;\n            action = this.get('params.action');\n            status = this.get('params.status');\n            if (action === 'lock' || action === 'unlock') {\n                locked = this.get('params.action') === 'lock' ? true : false;\n                changeData = {\n                    locked: locked,\n                };\n            } else {\n                changeData = {\n                    status: status,\n                };\n            }\n            return this.setStatusForAll(changeData);\n        },\n    },\n});\n\nexport default Component;\n","export default Ember.HTMLBars.template({\"id\":\"xuLUYyz2\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"report.change_status_to_all_header\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.change_status_to_all\\\"],[[\\\"count\\\"],[[24,[\\\"rowCount\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"general.done\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"executing\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"executing\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[10,\\\"aria-valuenow\\\",\\\"20\\\"],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[11,\\\"style\\\",[22,\\\"progressStyle\\\"]],[8],[0,\\\"\\\\n                    \\\"],[1,[22,\\\"progress\\\"],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"executing\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-cancel\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeStatusForAll\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.change_status_to_all_button\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/change-status/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"RsglJR6M\",\"block\":\"{\\\"symbols\\\":[\\\"@animate\\\"],\\\"statements\\\":[[7,\\\"svg\\\",true],[10,\\\"class\\\",\\\"clock\\\"],[10,\\\"width\\\",\\\"30\\\"],[10,\\\"height\\\",\\\"30\\\"],[10,\\\"viewBox\\\",\\\"0 0 24 24\\\"],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[8],[0,\\\"\\\\n\\\\n \\\"],[7,\\\"g\\\",true],[8],[0,\\\"\\\\n  \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"m9,0l0,2l6,0l0,-2l-6,0zm2,3l0,1.0625c-5.06474,0.49692 -9,4.73956 -9,9.9375c0,5.53333 4.46667,10 10,10c5.53333,0 10,-4.46667 10,-10c0,-2.91958 -1.26241,-5.51752 -3.25,-7.34375l1.34375,-1.34375l-1.40625,-1.40625l-1.53125,1.53125c-1.23644,-0.74298 -2.64489,-1.22671 -4.15625,-1.375l0,-1.0625l-2,0zm1,3c4.46667,0 8,3.53333 8,8c0,4.46667 -3.53333,8 -8,8c-4.46667,0 -8,-3.53333 -8,-8c0,-4.46667 3.53333,-8 8,-8z\\\"],[10,\\\"shape-rendering\\\",\\\"geometricPrecision\\\"],[8],[9],[0,\\\"\\\\n  \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"m6.68738,8.49994l3.5625,4.96875c-0.04601,0.16835 -0.0625,0.34831 -0.0625,0.53125c0,1.10457 0.89543,2 2,2c1.10457,0 2,-0.89543 2,-2c0,-1.10457 -0.89543,-2 -2,-2c-0.18294,0 -0.3629,0.01649 -0.53125,0.0625l-4.96875,-3.5625z\\\"],[10,\\\"shape-rendering\\\",\\\"geometricPrecision\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"animateTransform\\\",true],[10,\\\"attributeName\\\",\\\"transform\\\"],[10,\\\"attributeType\\\",\\\"XML\\\"],[10,\\\"from\\\",\\\"0 12 14\\\"],[10,\\\"to\\\",\\\"360 12 14\\\"],[10,\\\"dur\\\",\\\"60s\\\"],[10,\\\"repeatCount\\\",\\\"indefinite\\\"],[10,\\\"type\\\",\\\"rotate\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/clockcard/clock/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport podNames from 'ember-component-css/pod-names';\nimport { tracked } from '@glimmer/tracking';\nimport { later, next } from '@ember/runloop';\nimport { A } from '@ember/array';\n\nexport default class ClockcardComponent extends Component {\n    @service store;\n    @service session;\n    @service evented;\n    @service('collector-service') collector;\n    @service() notifications;\n    @service intl;\n    @service error;\n    @service('gps2') gps;\n    @service dialogs;\n    @service router;\n    @service analytics;\n\n    @tracked worktimes;\n    @tracked openWorktime;\n    @tracked newWorktime;\n    @tracked showNext;\n    @tracked promise;\n    @tracked showEdit = false;\n    @tracked nextContainerOnTop;\n    @tracked siteTooFar;\n    @tracked descriptionTooLong;\n    @tracked loading;\n    @tracked saving = false;\n    @tracked saveAction;\n    @tracked overRideEditModalTitle = false;\n\n    get styleNamespace() {\n        return podNames['clockcard'];\n    }\n\n    get workHoursToday() {\n        if (!this.worktimes) return '';\n        return this.worktimes.reduce((total, worktime) => total + (worktime.work_hours || 0), 0);\n    }\n    get startTimeToday() {\n        if (!this.worktimes) return '';\n        // sort worktimes by starttime and return first starttime\n        return this.worktimes.filter((worktime) => worktime.starttime).sortBy('starttime')\n            .firstObject?.starttime;\n    }\n    get pauseToday() {\n        if (!this.worktimes) return '';\n        // Manual pause: only add pauses for worktimes which have work_hours so it doesn't add currently running worktime's default pause\n        // Multipause: use pause field normally, because multipauses are added during the open worktime\n        const worktimes = this.collector.testNeeds(['products.multipause'])\n            ? this.worktimes\n            : this.worktimes.filter((worktime) => worktime.work_hours);\n        return worktimes.reduce((total, worktime) => total + (worktime.pause / 60 || 0), 0);\n    }\n\n    get timer() {\n        if (!this.openWorktime) return null;\n\n        // on first minute seconds should start from current seconds so counter starts from 00:00:00\n        const seconds =\n            this.openWorktime.starttime === moment().format('HH:mm') ? moment().format('ss') : '00';\n        return (\n            moment(this.openWorktime.date + ' ' + this.openWorktime.starttime).format(\n                'YYYY-MM-DD HH:mm:',\n            ) + seconds\n        );\n    }\n\n    get openPause() {\n        if (!this.openWorktime?.multipause) return null;\n\n        const pausesWithoutEnd = this.openWorktime.multipause.filter(\n            (pause) => pause.start && !pause.end,\n        );\n\n        return pausesWithoutEnd?.firstObject;\n    }\n\n    get pauseTimer() {\n        if (!this.openPause) return null;\n\n        // on first minute seconds should start from current seconds so counter starts from 00:00:00\n        const seconds =\n            this.openPause.start === moment().format('HH:mm') ? moment().format('ss') : '00';\n        return (\n            moment(this.openPause.date + ' ' + this.openPause.start).format('YYYY-MM-DD HH:mm:') +\n            seconds\n        );\n    }\n\n    // select fields that are shown on timecard start\n    // filter fields that are alwaysVisible or mandatory but not in newerShow\n    // show fields that have show_field_on_clockcard_start feature\n    // return as string ie \"field1,field2\"\n    get showFieldsOnStart() {\n        const neverShow = ['user', 'date', 'starttime', 'endtime', 'location', 'description'];\n        const neverShowType = ['databasearray'];\n        const neverShowFeature = ['hide_field_on_clockcard_start']; // fields with this feature are hidden on clockcard start\n\n        const fields = this.collector.fieldArray('worktime').filter((field) => {\n            const hasDesiredFeature = field.features.mandatory || field.features.show_field_on_clockcard_start;\n            return (\n                !neverShowType.includes(field.type) &&\n                hasDesiredFeature &&\n                !neverShow.includes(field.name) &&\n                !neverShowFeature.some((feature) => field.features[feature])\n            );\n        });\n\n        return fields.mapBy('name').join(',');\n    }\n\n    get showFieldsOnEdit() {\n        const neverShow = ['user', 'date', 'starttime', 'endtime', 'location'];\n        const fields = this.collector.fieldArray('worktime').filter((field) => {\n            return !neverShow.includes(field.name);\n        });\n\n        return fields.mapBy('name').join(',');\n    }\n\n    constructor() {\n        super(...arguments);\n        // clean new worktimes that are not saved, to prevent issue where endtime is taken from worktime form, causing an imediate save\n        this.cleanNewWorktimes();\n\n        if (\n            this.collector.testNeedsOne('products.gps_force') ||\n            this.collector.testNeedsOne('products.gps')\n        ) {\n            // if gps2 service is not started yet, start it now (this is needed because database-gps-force-field doesn't start it automatically for userlevel != 1)\n            // gps2 service has a check so that it cannot be started twice\n            this.gps.start();\n            this.siteTooFar = true;\n        }\n\n        // eslint-disable-next-line ember/named-functions-in-promises\n        this.getWorktimes().then(() => {\n            this.setMySite(); // Check if this.newWorktime and session.currentMySite exist and if so, set this.newWorktime.project to session.currentMySite\n        });\n\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumeEvent');\n        this.evented.on('gpsLockedPositionChanged', this, 'checkIfSiteTooFar');\n\n        this.router.on('routeWillChange', (transition) => {\n            if (!transition.to.find((route) => route.name === this.routeName)) {\n                this.newWorktime?.rollbackAttributes();\n                this.openWorktime?.rollbackAttributes();\n            }\n        });\n        // Validate all except databasearrays and fields with hide_field_on_clockcard_start feature, \n        // because they are hidden from start component regardless of being mandatory\n        // used in worktime start validation\n        this.fields = this.collector.fieldArray('worktime');\n        this.validateFields = this.fields\n            .filter((field) => \n                field.type !== 'databasearray' && \n                field.name !== 'description' &&\n                !field.features?.hide_field_on_clockcard_start\n            )\n            .mapBy('name');\n    }\n\n    cleanNewWorktimes() {\n        const newWorktimes = this.store.peekAll('worktime').filterBy('isNew', true);\n        newWorktimes.forEach((worktime) => worktime.destroyRecord());\n    }\n\n    setMySite() {\n        if (this.newWorktime && this.session && this.session.currentUser.currentMySite) {\n            this.newWorktime.project = this.session.currentUser.currentMySite;\n        }\n    }\n\n    willDestroy() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumeEvent');\n        this.evented.off('gpsLockedPositionChanged', this, 'checkIfSiteTooFar');\n    }\n\n    @action\n    async start() {\n        if (this.saving) return;\n        this.saving = true;\n\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Start worktime' });\n\n        // Do all validation before UI updates\n        const worktime = this.newWorktime?.isDeleted\n            ? this.collector.copyRecord(this.newWorktime)\n            : this.newWorktime;\n        worktime.date = moment().format('YYYY-MM-DD');\n        if (!worktime.user) worktime.user = this.session.currentUser;\n\n        worktime.starttime = moment().format('HH:mm');\n        if ('location' in worktime) worktime.location = await this.getLocation();\n\n        await worktime.validate(this.validateFields);\n        if (!worktime.isValid) {\n            this.saving = false;\n            return;\n        }\n\n        await this.checkIfSiteTooFar();\n        if (this.siteTooFar) {\n            worktime.starttime = null;\n            this.saving = false;\n            return;\n        }\n\n        // Save first\n        try {\n            worktime.validation = 'off';\n            await worktime.save();\n\n            // Only update UI after successful save\n            this.openWorktime = worktime;\n            this.newWorktime = worktime;\n            this.updateWorktimes();\n\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n            this.evented.storeEvent('insert', 'worktime', this.openWorktime);\n            if (this.args.saveAction) this.args.saveAction();\n        } catch (error) {\n            this.dialogs.alert(await this.error.toStringAsyncHTML(error));\n            worktime.starttime = null;\n            this.newWorktime = worktime;\n            this.openWorktime = null;\n        } finally {\n            this.saving = false;\n        }\n    }\n\n    @action\n    async takeABreak() {\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Start break' });\n        let worktime = this.openWorktime;\n        this.loading = true;\n\n        let pauseParams = {\n            date: worktime.date,\n            start: moment().format('HH:mm'),\n            user: worktime.user,\n        };\n        const pauseRecord = await this.store.createRecord('multipause', pauseParams);\n\n        try {\n            await pauseRecord.save();\n            if (!worktime.multipause) worktime.multipause = A([]);\n            worktime.multipause.pushObject(pauseRecord);\n            await worktime.save();\n            this.openWorktime = worktime;\n            this.notifications.success(this.intl.t('general.pause_started'), { autoClear: true });\n            if (this.args.saveAction) this.args.saveAction();\n        } catch (error) {\n            this.dialogs.alert(await this.error.toStringAsyncHTML(error));\n        } finally {\n            this.loading = false;\n        }\n    }\n\n    @action\n    async continueWork() {\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Stop break' });\n        this.loading = true;\n        let openPause = this.openPause;\n        let worktime = this.openWorktime;\n\n        openPause.end = moment().format('HH:mm');\n\n        try {\n            await openPause.save();\n            await worktime.save();\n            this.notifications.success(this.intl.t('general.pause_saved'), { autoClear: true });\n        } catch (error) {\n            this.dialogs.alert(await this.error.toStringAsyncHTML(error));\n        } finally {\n            this.loading = false;\n        }\n    }\n\n    @action\n    async cancelPause() {\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Cancel break' });\n        this.loading = true;\n        let openPause = this.openPause;\n        let worktime = this.openWorktime;\n        try {\n            worktime.multipause.removeObject(openPause);\n            await openPause.destroyRecord();\n            await worktime.save();\n            this.notifications.info(this.intl.t('general.pause_canceled'), { autoClear: true });\n        } catch (error) {\n            this.dialogs.alert(await this.error.toStringAsyncHTML(error));\n        } finally {\n            this.loading = false;\n        }\n    }\n\n    @action\n    async stop(enforce_forced = false) {\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Stop worktime' });\n        if (this.siteTooFar) return;\n\n        const worktime = this.openWorktime;\n        await worktime.validate();\n\n        if (\n            !worktime.isValid ||\n            (enforce_forced && this.collector.testNeeds(['products.force_clockcard_dialog']))\n        ) {\n            this.saveAction = 'stop';\n            this.overRideEditModalTitle = this.intl.t('general.end_last_worktime');\n            return (this.showEdit = true);\n        }\n\n        worktime.endtime = moment().format('HH:mm');\n        if ('end_location' in worktime) worktime.end_location = await this.getLocation();\n        await this.checkIfSiteTooFar();\n        if (this.siteTooFar) {\n            return;\n        }\n        this.openWorktime = null;\n\n        this.updateWorktimes();\n        try {\n            await worktime.save();\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n            this.evented.storeEvent('insert', 'worktime', this.openWorktime);\n            if (this.args.saveAction) this.args.saveAction();\n        } catch (error) {\n            this.error.notify(error);\n            worktime.endtime = null;\n            this.openWorktime = worktime;\n        }\n    }\n\n    // After clicking save in edit modal, determine next action based on saveAction\n    @action\n    async afterSave() {\n        switch (this.saveAction) {\n            case 'stop':\n                await this.stop();\n                break;\n            case 'startnext':\n                await this.startNext();\n                break;\n        }\n    }\n\n    @action\n    openEditModal() {\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Open edit modal' });\n        this.saveAction = null;\n        this.overRideEditModalTitle = this.intl.t('general.edit_worktime');\n        this.showEdit = true;\n    }\n\n    @action\n    async startNext() {\n        this.analytics.trackEvent({ category: 'Clockcard', action: 'Start next worktime' });\n        if (this.siteTooFar) return;\n\n        const oldWorktime = this.openWorktime;\n        const newWorktime = this.newWorktime;\n\n        await oldWorktime.validate();\n        await newWorktime.validate(this.validateFields);\n\n        if (!oldWorktime.isValid) {\n            this.showEdit = true;\n            this.saveAction = 'startnext';\n            return;\n        }\n\n        if (!newWorktime.isValid) return;\n\n        oldWorktime.endtime = moment().format('HH:mm');\n        if ('end_location' in oldWorktime) oldWorktime.end_location = await this.getLocation();\n        newWorktime.starttime = moment().format('HH:mm');\n\n        // hax to force render form again so new values of new record would be updated to fields... this wouldn't be needed\n        // if fields would support ddau better .. when ddau works change to one line \"this.openWorktime = newWorktime\"\n        this.openWorktime = null;\n        next(this, () => {\n            this.openWorktime = newWorktime;\n        });\n\n        this.newWorktime = this.createNewWorktime();\n\n        // hide next worktime component\n        this.closeNext();\n\n        this.updateWorktimes();\n\n        try {\n            newWorktime.validation = 'off';\n\n            await oldWorktime.save();\n            await newWorktime.save();\n\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n            this.evented.storeEvent('insert', 'worktime', oldWorktime);\n        } catch (error) {\n            this.error.notify(error);\n            newWorktime.starttime = null;\n            oldWorktime.endtime = null;\n            this.newWorktime = newWorktime;\n            this.openWorktime = oldWorktime;\n\n            this.openNext(0);\n        }\n    }\n\n    @action\n    openNext(time = 301) {\n        this.showNext = true;\n        this.saveAction = null;\n\n        // animation takes 300ms so after that we change nextContainerOnTop to true witch makes removes stop div to hidden\n        // and makes startnew div to not absolute so it will change the size of the parent div\n        later(\n            this,\n            () => {\n                this.nextContainerOnTop = true;\n                // if force_clockcard_dialog is on, show edit modal when we are opening \"next worktime\"-page\n                if (this.collector.testNeeds(['products.force_clockcard_dialog'])) {\n                    this.showEdit = true;\n                    this.overRideEditModalTitle = this.intl.t('general.edit_last_worktime');\n                }\n            },\n            time,\n        );\n    }\n\n    @action\n    closeNext() {\n        this.showNext = false;\n        this.nextContainerOnTop = false;\n    }\n\n    @action onFieldChange(type, field, value) {\n        value = value?.target ? value.target.value : value;\n        if (type === 'open') this.openWorktime[field] = value;\n        else if (type === 'new') this.newWorktime[field] = value;\n        if (field === 'description') {\n            this.descriptionTooLong =\n                value.length > 256 ? this.intl.t('validation.too_long_error') : null;\n        }\n        if (field === 'project') this.checkIfSiteTooFar();\n    }\n\n    @action\n    closeEdit(ExtraInfo) {\n        this.showEdit = false;\n        // Is needed so that default pause is not lost when worktime form is opened and closed :')\n        if (ExtraInfo !== 'AfterSave') this.setDefaultPause(this.openWorktime);\n    }\n\n    createNewWorktime() {\n        let defaults = { date: moment().format('YYYY-MM-DD'), user: this.session.currentUser };\n        if (this.collector.fieldExists('worktime', 'affects_overtime'))\n            defaults.affects_overtime = 'off';\n        return this.store.createRecord('worktime', defaults);\n    }\n\n    async dummy() {}\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime') this.getWorktimes();\n    }\n\n    onResumeEvent(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        this.getWorktimes();\n    }\n\n    async getWorktimes() {\n        this.promise = this.store.query('worktime', {\n            date:\n                moment().subtract(1, 'day').format('YYYY-MM-DD') +\n                '_' +\n                moment().format('YYYY-MM-DD'),\n            user: this.session.currentUser.id,\n            sideload: true,\n        });\n        // Have to load multipauses also to store so some data is not undefined 🥲\n        if (this.collector.testNeeds(['products.multipause']))\n            await this.store.query('multipause', {\n                date:\n                    moment().subtract(1, 'day').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD'),\n                user: this.session.currentUser.id,\n                sideload: true,\n            });\n\n        const worktimes = await this.promise;\n\n        this.updateWorktimes();\n\n        const openWorktime = worktimes.find((worktime) => {\n            return worktime.starttime && !worktime.endtime;\n        });\n\n        if (openWorktime) {\n            this.setDefaultPause(openWorktime);\n            this.openWorktime = openWorktime;\n            this.checkIfSiteTooFar();\n        } else this.openWorktime = null;\n    }\n\n    updateWorktimes() {\n        this.worktimes = this.store.peekAll('worktime').filter((worktime) => {\n            return (\n                worktime.date === moment().format('YYYY-MM-DD') &&\n                worktime.user == this.session.currentUser\n            );\n        });\n\n        const records = this.store.peekAll('worktime').filterBy('isNew', true);\n        if (records.length > 0) {\n            this.newWorktime = records.firstObject;\n            // when reusing unsaved worktime .. date must always be today so play starts worktime for today\n            this.newWorktime.date = moment().format('YYYY-MM-DD');\n            if (\n                this.collector.fieldExists('worktime', 'affects_overtime') &&\n                !this.newWorktime.affects_overtime\n            )\n                this.newWorktime.affects_overtime = 'off';\n        } else {\n            this.newWorktime = this.createNewWorktime();\n        }\n        this.checkIfSiteTooFar();\n    }\n\n    // check if pause is on .. and set pause for given worktime\n    setDefaultPause(worktime) {\n        const pauseField = this.collector\n            .fieldArray('worktime')\n            .find((item) => item.name === 'pause');\n        let pause = null;\n        // support for worktime-groups\n        if (pauseField) {\n            if (typeof get(pauseField, 'features.default_value') == 'object')\n                pause = get(pauseField, 'features.default_value.value');\n            else pause = get(pauseField, 'features.default_value');\n        }\n\n        if ((!worktime.pause || worktime.pause == null) && pause) worktime.pause = pause;\n        // Overwrite worktime default pause as null if worktime doesn't have any multipauses\n        // why: because multipauses are calculated in capi and setting default value is unnecessary and messes up pauseToday\n        if (worktime.multipause?.length === 0) worktime.pause = null;\n    }\n\n    async getLocation() {\n        if (this.gps.status != 'located') return null;\n\n        let location = {\n            latitude: await this.gps.lockedLatitude,\n            longitude: await this.gps.lockedLongitude,\n            accuracy: await this.gps.lockedAccuracy,\n        };\n\n        return JSON.stringify(location);\n    }\n\n    async checkIfSiteTooFar() {\n        if (!this.collector.fieldExists('project', 'force_location')) {\n            this.siteTooFar = false;\n            return;\n        }\n        if (!this.openWorktime) {\n            return;\n        }\n        let worktime = this.openWorktime;\n\n        if (this.newWorktime?.project && !this.openWorktime) {\n            worktime = this.newWorktime;\n        }\n\n        if (worktime.project.force_location == undefined)\n            await this.store.findRecord('project', worktime.project.id, { reload: true });\n        if (!worktime.project.force_location) {\n            this.siteTooFar = false;\n            return;\n        }\n\n        if (!this.gps.lockedPosition) {\n            this.siteTooFar = true;\n            return;\n        }\n        let projectLocation = JSON.parse(worktime.project.location_map);\n        const distance = this.gps.getDistance(projectLocation, this.gps.lockedPosition);\n        if (distance > this.gps.allowedDistance) {\n            this.siteTooFar = true;\n            return;\n        }\n\n        this.siteTooFar = false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"mYG27bCD\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"x\\\",\\\"0px\\\"],[10,\\\"y\\\",\\\"0px\\\"],[10,\\\"width\\\",\\\"30\\\"],[10,\\\"height\\\",\\\"30\\\"],[10,\\\"viewBox\\\",\\\"0 0 30 30\\\"],[10,\\\"style\\\",\\\" fill:#000000;\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M 22.40625 4 L 17.78125 8.59375 C 16.628906 9.746094 16.628906 11.660156 17.78125 12.8125 L 16 14.5625 L 7.21875 5.78125 L 6.5 5.09375 L 5.78125 5.78125 C 4.011719 7.550781 4.011719 10.449219 5.78125 12.21875 L 12.0625 18.5 L 4.28125 26.28125 L 5.71875 27.71875 L 13.5 19.9375 L 14.6875 21.09375 L 15.40625 21.8125 L 16.09375 21.09375 L 17.875 19.3125 L 26.28125 27.71875 L 27.71875 26.28125 L 18.59375 17.1875 L 17.4375 16 L 19.1875 14.21875 L 19.21875 14.21875 L 19.25 14.25 C 20.410156 15.351563 22.269531 15.355469 23.40625 14.21875 L 23.5 14.09375 L 28 9.59375 L 26.59375 8.1875 L 22 12.78125 C 21.566406 13.214844 21.0625 13.226563 20.625 12.8125 L 25.90625 7.5 L 24.5 6.09375 L 19.1875 11.375 C 18.773438 10.9375 18.785156 10.433594 19.21875 10 L 23.8125 5.40625 Z M 6.78125 8.21875 L 16.46875 17.90625 L 15.40625 18.96875 L 7.21875 10.78125 C 6.476563 10.039063 6.457031 9.105469 6.78125 8.21875 Z\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/clockcard/dining/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"7iJncf0g\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"@close\\\",\\\"@title\\\",\\\"@showFields\\\",\\\"@record\\\",\\\"@afterSave\\\"],\\\"statements\\\":[[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[23,2,[]],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"if\\\",[[23,3,[]],[23,3,[]],[28,\\\"t\\\",[\\\"menu.add_worktime\\\"],null]],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"collector/form-add/forms/worktime\\\",[],[[\\\"@form\\\",\\\"@only\\\",\\\"@record\\\",\\\"@preserveRecordOnDestroy\\\",\\\"@close\\\",\\\"@showSaved\\\",\\\"@rowEdited\\\"],[\\\"worktime\\\",[23,4,[]],[23,5,[]],true,[23,2,[]],false,[23,6,[]]]]],[0,\\\"\\\\n\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/clockcard/edit/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { htmlSafe } from '@ember/template';\nimport fetch from 'fetch';\n\nexport default class ClockcardEndComponent extends Component {\n    @tracked showWorktimeRoundedPopup = false;\n    @tracked worktimeRoundedInfoText;\n\n    constructor() {\n        super(...arguments);\n        this.setInfoText();\n    }\n\n    @action toggleWorktimeRoundedPopup() {\n        this.showWorktimeRoundedPopup = !this.showWorktimeRoundedPopup;\n    }\n\n    async setInfoText() {\n        const key = 'worktime-rounded-' + moment.locale();\n        const fileUrl = `https://cloud-writer-prod.s3.amazonaws.com/${key}.html`;\n\n        let response = await fetch(fileUrl, { dataType: 'text' });\n        if (!response.ok) return (this.worktimeRoundedInfoText = `cannot find help for ${key}`);\n\n        this.worktimeRoundedInfoText = htmlSafe(await response.text());\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"EwUbd3En\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"fields\\\",\\\"fieldcomp\\\",\\\"record\\\",\\\"change\\\",\\\"field\\\",\\\"Fields\\\",\\\"Field\\\",\\\"Container\\\",\\\"FieldComponent\\\",\\\"@edit\\\",\\\"@takeABreak\\\",\\\"@descriptionTooLong\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@pause\\\",\\\"@timer\\\",\\\"@workhours\\\",\\\"@startTime\\\",\\\"@siteTooFar\\\",\\\"@stop\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"time-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_tracked\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"time\\\"],[8],[5,\\\"clockcard/clock\\\",[],[[\\\"@animate\\\"],[true]]],[0,\\\"\\\\n        \\\"],[1,[28,\\\"if\\\",[[23,17,[]],[28,\\\"duration-clock\\\",[[23,17,[]]],null],\\\"00:00:00\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"includes\\\",[\\\"-\\\",[28,\\\"duration-clock\\\",[[23,17,[]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"rounded-worktime\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"timecard.worktime_rounded\\\"],null],false],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"toggleWorktimeRoundedPopup\\\"]]],null]]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"timecard.worktime_rounded.info\\\"],null],false],[0,\\\"\\\\n                \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@text\\\",\\\"@tooltipClass\\\",\\\"@popperContainer\\\",\\\"@event\\\",\\\"@isShown\\\",\\\"@hideOn\\\",\\\"@side\\\"],[[23,0,[\\\"worktimeRoundedInfoText\\\"]],\\\"help-tooltip\\\",\\\"body\\\",\\\"none\\\",[23,0,[\\\"showWorktimeRoundedPopup\\\"]],\\\"click\\\",\\\"bottom\\\"]]],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime.pause\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pt-2\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pause\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.pause_today\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"clockcard-time-bold\\\"],[8],[1,[28,\\\"if\\\",[[23,16,[]],[28,\\\"format-hours\\\",[[23,16,[]]],null],\\\"00:00h\\\"],null],false],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pt-2 time-today pb-5\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"border-line pt-2\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"data-anchor\\\",\\\"clockcard-end-time-today\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_today\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"clockcard-time-bold\\\"],[8],[1,[28,\\\"if\\\",[[23,18,[]],[28,\\\"format-hours\\\",[[23,18,[]]],null],\\\"00:00h\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"data-anchor\\\",\\\"clockcard-start-time-today\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.start\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"clockcard-time-bold\\\"],[8],[1,[28,\\\"if\\\",[[23,19,[]],[23,19,[]],\\\"-\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"project\\\"],[8],[1,[23,14,[\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"collector/form-add/forms/worktime\\\",[],[[\\\"@only\\\",\\\"@sortFields\\\",\\\"@record\\\",\\\"@preserveRecordOnDestroy\\\"],[\\\"description,pause\\\",true,[23,14,[]],true]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,7,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"flex-item-100 field-\\\",[23,8,[\\\"name\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,8,[\\\"name\\\"]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"bootstrap-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\",\\\"@name\\\"],[[23,8,[\\\"translated_name\\\"]],[23,8,[\\\"features\\\",\\\"mandatory\\\"]],[23,13,[]],[23,8,[\\\"name\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[5,\\\"textarea\\\",[],[[\\\"@class\\\",\\\"@value\\\",\\\"@rows\\\",\\\"@change\\\"],[\\\"form-control add-fields\\\",[28,\\\"get\\\",[[23,14,[]],[23,8,[\\\"name\\\"]]],null],\\\"4\\\",[28,\\\"fn\\\",[[23,15,[]],[23,8,[\\\"name\\\"]]],null]]]],[0,\\\"                            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"title\\\"],[8],[1,[23,8,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[5,\\\"addon/field-container\\\",[],[[\\\"@record\\\",\\\"@form\\\",\\\"@field\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@value\\\"],[[23,14,[]],[23,8,[\\\"form\\\"]],[23,8,[\\\"name\\\"]],[28,\\\"fn\\\",[[23,15,[]],[23,8,[\\\"name\\\"]]],null],[23,8,[\\\"mandatory\\\"]],[28,\\\"get\\\",[[23,14,[]],[23,8,[\\\"name\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"let\\\",[[23,9,[\\\"fieldComponent\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,10,[]],[],[[\\\"@value\\\",\\\"@onChange\\\",\\\"@class\\\",\\\"@record\\\"],[[28,\\\"get\\\",[[23,14,[]],[23,8,[\\\"name\\\"]]],null],[23,9,[\\\"args\\\",\\\"onChange\\\"]],\\\"form-control\\\",[23,14,[]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[10]},null],[0,\\\"                            \\\"]],\\\"parameters\\\":[9]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[6,[23,1,[\\\"fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"flex-item-100 field-\\\",[23,6,[\\\"name\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,6,[\\\"name\\\"]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"bootstrap-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\",\\\"@name\\\"],[[23,6,[\\\"translated_name\\\"]],[23,6,[\\\"features\\\",\\\"mandatory\\\"]],[23,13,[]],[23,6,[\\\"name\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[5,\\\"textarea\\\",[],[[\\\"@class\\\",\\\"@value\\\",\\\"@rows\\\",\\\"@change\\\"],[\\\"form-control add-fields\\\",[28,\\\"get\\\",[[23,14,[]],[23,6,[\\\"name\\\"]]],null],\\\"4\\\",[28,\\\"fn\\\",[[23,15,[]],[23,6,[\\\"name\\\"]]],null]]]],[0,\\\"                            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"title\\\"],[8],[1,[23,6,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"record\\\",\\\"change\\\"],[[28,\\\"hash\\\",null,[[\\\"features\\\",\\\"form\\\",\\\"name\\\",\\\"options\\\",\\\"translated_name\\\",\\\"type\\\",\\\"value\\\"],[[23,6,[\\\"features\\\"]],[23,6,[\\\"form\\\"]],[23,6,[\\\"name\\\"]],[23,6,[\\\"options\\\"]],[23,6,[\\\"translated_name\\\"]],[23,6,[\\\"type\\\"]],[28,\\\"get\\\",[[23,4,[]],[23,6,[\\\"name\\\"]]],null]]]],[23,4,[]],[23,5,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[2,3,4,5]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,20,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h5\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.gps.too_far\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column stop-buttons\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100 flex-center\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"stop-button\\\",[],[[\\\"@click\\\",\\\"@disabled\\\",\\\"@width\\\",\\\"@height\\\"],[[23,21,[]],[23,20,[]],\\\"100\\\",\\\"100\\\"]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.multipause\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 flex-center flex-center-vertically\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"end-worktime-button start-pause\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,12,[]]]],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"timecard.start_pause\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 flex-center flex-center-vertically\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"end-worktime-button extra-info\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,11,[]]]],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"timecard.add_extra_info\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100 flex-center flex-center-vertically\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"end-worktime-button extra-info\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,11,[]]]],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"timecard.add_extra_info\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/clockcard/end/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"iF8JwNt8\",\"block\":\"{\\\"symbols\\\":[\\\"@gpsStatus\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"searching\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"general.loading\\\"],null]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"worktime.location\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"located\\\"],null],\\\"text-success\\\",\\\"text-danger\\\"],null]],[8],[1,[28,\\\"standard-icon\\\",[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"located\\\"],null],\\\"ok\\\",\\\"remove\\\"],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/clockcard/gps-indicator/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"IoF/7okf\",\"block\":\"{\\\"symbols\\\":[\\\"@pauseTimer\\\",\\\"@continueWork\\\",\\\"@cancelPause\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"time-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.pause_tracked\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"time\\\"],[8],[5,\\\"clockcard/dining\\\",[],[[],[]]],[0,\\\" \\\"],[1,[28,\\\"if\\\",[[23,1,[]],[28,\\\"duration-clock\\\",[[23,1,[]]],null],\\\"00:00:00\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100 pause-button-continue-work\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,2,[]]]],[8],[1,[28,\\\"t\\\",[\\\"timecard.continue_work\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-100 pause-button-cancel-pause\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,3,[]]]],[8],[1,[28,\\\"t\\\",[\\\"timecard.cancel_pause\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/clockcard/pause/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action } from '@ember/object';\n\nexport default class ClockCardComponent extends Component {\n    @action\n    // we have to have this \"middleware\" action to handle the formOnchange and also the onFieldChange\n    onChangeHandler(field, formOnchange, value) {\n        // Manually call formOnchange with field name and value\n        formOnchange(field, value);\n        // Manually call onFieldChange with field name and value\n        this.args.onFieldChange(field, value);\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"ZgdLY2L8\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"fields\\\",\\\"fieldcomp\\\",\\\"field\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@descriptionTooLong\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@pause\\\",\\\"@timer\\\",\\\"@workhours\\\",\\\"@startTime\\\",\\\"@showFields\\\",\\\"@siteTooFar\\\",\\\"@start\\\",\\\"@saving\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"time-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_tracked\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"time\\\"],[8],[5,\\\"clockcard/clock\\\",[],[[],[]]],[0,\\\" \\\"],[1,[28,\\\"if\\\",[[23,12,[]],[28,\\\"duration-clock\\\",[[23,12,[]]],null],\\\"00:00:00\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime.pause\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pt-2\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pause\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.pause_today\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"clockcard-time-bold\\\"],[8],[1,[28,\\\"if\\\",[[23,11,[]],[28,\\\"format-hours\\\",[[23,11,[]]],null],\\\"00:00h\\\"],null],false],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pt-2 time-today\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"border-line pt-2\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"data-anchor\\\",\\\"clockcard-time-today\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_today\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"clockcard-time-bold\\\"],[8],[1,[28,\\\"if\\\",[[23,13,[]],[28,\\\"format-hours\\\",[[23,13,[]]],null],\\\"00:00h\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"data-anchor\\\",\\\"clockcard-start-time-today\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.start\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"clockcard-time-bold\\\"],[8],[1,[28,\\\"if\\\",[[23,14,[]],[23,14,[]],\\\"-\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"collector/form-add/forms/worktime\\\",[],[[\\\"@only\\\",\\\"@record\\\",\\\"@preserveRecordOnDestroy\\\"],[[23,15,[]],[23,9,[]],true]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field-cont\\\"],[8],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,5,[]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"flex-item-100 field-\\\",[23,7,[\\\"name\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[\\\"name\\\"]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"bootstrap-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\",\\\"@name\\\"],[[23,7,[\\\"translated_name\\\"]],[23,7,[\\\"features\\\",\\\"mandatory\\\"]],[23,8,[]],[23,7,[\\\"name\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[5,\\\"textarea\\\",[],[[\\\"@class\\\",\\\"@value\\\",\\\"@rows\\\",\\\"@change\\\"],[\\\"form-control add-fields\\\",[28,\\\"get\\\",[[23,9,[]],[23,7,[\\\"name\\\"]]],null],\\\"4\\\",[28,\\\"fn\\\",[[23,10,[]],[23,7,[\\\"name\\\"]]],null]]]],[0,\\\"                            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[6,[23,6,[]],[],[[\\\"@record\\\",\\\"@form\\\",\\\"@field\\\",\\\"@onChange\\\",\\\"@value\\\",\\\"@mandatory\\\",\\\"@forceType\\\",\\\"@prompt\\\"],[[28,\\\"readonly\\\",[[23,9,[]]],null],[23,7,[\\\"form\\\"]],[23,7,[\\\"name\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"onChangeHandler\\\"]],[23,7,[\\\"name\\\"]],[23,1,[\\\"OnChange\\\"]]],null],[28,\\\"get\\\",[[23,9,[]],[23,7,[\\\"name\\\"]]],null],[23,7,[\\\"mandatory\\\"]],[23,7,[\\\"forceType\\\"]],\\\"general.choose\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[\\\"name\\\"]],\\\"project\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"project-help\\\",[],[[\\\"@projectid\\\"],[[23,9,[\\\"project\\\",\\\"id\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[5,6]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field-cont\\\"],[8],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"flex-item-100 field-\\\",[23,4,[\\\"name\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,4,[\\\"name\\\"]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"bootstrap-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\",\\\"@name\\\"],[[23,4,[\\\"translated_name\\\"]],[23,4,[\\\"features\\\",\\\"mandatory\\\"]],[23,8,[]],[23,4,[\\\"name\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[5,\\\"textarea\\\",[],[[\\\"@class\\\",\\\"@value\\\",\\\"@rows\\\",\\\"@change\\\"],[\\\"form-control add-fields\\\",[28,\\\"get\\\",[[23,9,[]],[23,4,[\\\"name\\\"]]],null],\\\"4\\\",[28,\\\"fn\\\",[[23,10,[]],[23,4,[\\\"name\\\"]]],null]]]],[0,\\\"                            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[]],\\\"expected `fieldcomp` to be a contextual component but found a string. Did you mean `(component fieldcomp)`? ('tt4/pods/components/clockcard/start/template.hbs' @ L100:C30) \\\"],null]],[[\\\"field\\\"],[[23,4,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center play-button-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,16,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h5\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.gps.too_far\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[5,\\\"play-button\\\",[],[[\\\"@click\\\",\\\"@disabled\\\",\\\"@width\\\",\\\"@height\\\"],[[23,17,[]],[28,\\\"or\\\",[[23,16,[]],[23,18,[]]],null],\\\"100\\\",\\\"100\\\"]]],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/clockcard/start/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"fbwX9u/V\",\"block\":\"{\\\"symbols\\\":[\\\"@additionalClass\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"dash-board/widget-spinner\\\",[],[[\\\"@promise\\\",\\\"@skeletonRows\\\"],[[23,0,[\\\"promise\\\"]],6]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loading-state\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"openPause\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"clockcard/pause\\\",[],[[\\\"@pauseTimer\\\",\\\"@continueWork\\\",\\\"@cancelPause\\\"],[[23,0,[\\\"pauseTimer\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"continueWork\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"cancelPause\\\"]]],null]]]],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"openWorktime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"nextContainerOnTop\\\"]],\\\"hidden\\\"],null]],[8],[0,\\\"\\\\n            \\\"],[5,\\\"clockcard/end\\\",[],[[\\\"@record\\\",\\\"@workhours\\\",\\\"@startTime\\\",\\\"@pause\\\",\\\"@timer\\\",\\\"@stop\\\",\\\"@takeABreak\\\",\\\"@edit\\\",\\\"@onFieldChange\\\",\\\"@siteTooFar\\\",\\\"@descriptionTooLong\\\"],[[23,0,[\\\"openWorktime\\\"]],[23,0,[\\\"workHoursToday\\\"]],[23,0,[\\\"startTimeToday\\\"]],[23,0,[\\\"pauseToday\\\"]],[23,0,[\\\"timer\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"stop\\\"]],true],null],[28,\\\"fn\\\",[[23,0,[\\\"takeABreak\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"openEditModal\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"open\\\"],null],[23,0,[\\\"siteTooFar\\\"]],[23,0,[\\\"descriptionTooLong\\\"]]]]],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"not\\\",[[24,[\\\"showNext\\\"]]],null],[28,\\\"needs\\\",[\\\"products.gps||products.gps_force\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clockcard-gps-indicator clockcard-gps-indicator-end\\\"],[8],[5,\\\"clockcard/gps-indicator\\\",[],[[\\\"@gpsStatus\\\"],[[23,0,[\\\"gps\\\",\\\"status\\\"]]]]],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"next-container\\\\n                \\\",[23,1,[]],\\\"\\\\n                \\\",[28,\\\"if\\\",[[24,[\\\"showNext\\\"]],\\\"animate\\\"],null],\\\"\\\\n                \\\",[28,\\\"if\\\",[[24,[\\\"nextContainerOnTop\\\"]],\\\"normalPosition\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column tabs\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25 sidetab\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showNext\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"closeNext\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Back\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"general.back\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 flex-center next-worktime-container\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"end-worktime-button next\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openNext\\\"]],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"general.next\\\"],null],false],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"general.worktime\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25 sidetab\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[5,\\\"clockcard/start\\\",[],[[\\\"@record\\\",\\\"@workhours\\\",\\\"@startTime\\\",\\\"@pause\\\",\\\"@showFields\\\",\\\"@start\\\",\\\"@onFieldChange\\\",\\\"@siteTooFar\\\",\\\"@saving\\\",\\\"@descriptionTooLong\\\"],[[23,0,[\\\"newWorktime\\\"]],[23,0,[\\\"workHoursToday\\\"]],[23,0,[\\\"startTimeToday\\\"]],[23,0,[\\\"pauseToday\\\"]],[23,0,[\\\"showFieldsOnStart\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"startNext\\\"]],true],null],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"new\\\"],null],[23,0,[\\\"siteTooFar\\\"]],[23,0,[\\\"saving\\\"]],[23,0,[\\\"descriptionTooLong\\\"]]]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"showNext\\\"]],[28,\\\"needs\\\",[\\\"products.gps||products.gps_force\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clockcard-gps-indicator\\\"],[8],[5,\\\"clockcard/gps-indicator\\\",[],[[\\\"@gpsStatus\\\"],[[23,0,[\\\"gps\\\",\\\"status\\\"]]]]],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"newWorktime\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"clockcard/start\\\",[],[[\\\"@record\\\",\\\"@pause\\\",\\\"@workhours\\\",\\\"@startTime\\\",\\\"@showFields\\\",\\\"@start\\\",\\\"@onFieldChange\\\",\\\"@descriptionTooLong\\\",\\\"@siteTooFar\\\",\\\"@saving\\\"],[[23,0,[\\\"newWorktime\\\"]],[23,0,[\\\"pauseToday\\\"]],[23,0,[\\\"workHoursToday\\\"]],[23,0,[\\\"startTimeToday\\\"]],[23,0,[\\\"showFieldsOnStart\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"start\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"new\\\"],null],[23,0,[\\\"descriptionTooLong\\\"]],[23,0,[\\\"siteTooFar\\\"]],[23,0,[\\\"saving\\\"]]]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"not\\\",[[24,[\\\"showNext\\\"]]],null],[28,\\\"needs\\\",[\\\"products.gps||products.gps_force\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clockcard-gps-indicator\\\"],[8],[5,\\\"clockcard/gps-indicator\\\",[],[[\\\"@gpsStatus\\\"],[[23,0,[\\\"gps\\\",\\\"status\\\"]]]]],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"clockcard/edit\\\",[],[[\\\"@record\\\",\\\"@showFields\\\",\\\"@close\\\",\\\"@onFieldChange\\\",\\\"@descriptionTooLong\\\",\\\"@afterSave\\\",\\\"@title\\\"],[[23,0,[\\\"openWorktime\\\"]],[23,0,[\\\"showFieldsOnEdit\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"closeEdit\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"open\\\"],null],[23,0,[\\\"descriptionTooLong\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"afterSave\\\"]]],null],[23,0,[\\\"overRideEditModalTitle\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/clockcard/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/company-info/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Component;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nComponent = Ember.Component.extend({\n    notifications: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    countries: Em.computed(function () {\n        return [\n            {\n                id: 'se',\n                name: 'se',\n            },\n            {\n                id: 'fi',\n                name: 'fi',\n            },\n        ];\n    }),\n    errors: Em.Object.create({\n        company_vatin: false,\n        company_name: false,\n    }),\n    showAdminMode: Em.computed('application.impersonate', 'Ember.devModeOn', function () {\n        if (Ember.get(Ember, 'devModeOn')) {\n            return true;\n        }\n        if (this.get('application.impersonate')) {\n            return true;\n        }\n    }),\n    actions: {\n        save: function (row) {\n            var field, hasError, i, len, ref;\n            ref = ['company_vatin', 'company_name'];\n            for (i = 0, len = ref.length; i < len; i++) {\n                field = ref[i];\n                if (!this.get('model.' + field) || this.get('model.' + field) === '') {\n                    this.set('errors.' + field, true);\n                    hasError = true;\n                } else {\n                    this.set('errors.' + field, false);\n                }\n            }\n            if (!hasError) {\n                return row.save().then(() => {\n                    if (this.get('refreshNeeded')) {\n                        this.refreshNeeded();\n                    }\n                    return this.get('notifications').success(\n                        this.get('intl').t('billing_info.company_info_saved'),\n                        {\n                            autoClear: true,\n                        },\n                    );\n                });\n            }\n        },\n    },\n});\n\nexport default Component;\n","export default Ember.HTMLBars.template({\"id\":\"klpG6Mi5\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-group address-info\\\"],[10,\\\"id\\\",\\\"accordion\\\"],[10,\\\"role\\\",\\\"tablist\\\"],[10,\\\"aria-multiselectable\\\",\\\"false\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"company_info.company_name\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"company_name\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"company_name\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"company_info.company_vatin\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"company_vatin\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"company_vatin\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"company_info.company_contact_person\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"company_contact_person\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"company_info.company_phone\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"company_phone\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"company_info.company_email\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"company_email\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAdminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"company_info.country\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"prompt\\\",\\\"classes\\\"],[[24,[\\\"countries\\\"]],[24,[\\\"model\\\",\\\"country\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"model\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/company-info/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    valid: computed('status', 'date', function () {\n        if (get(this, 'status') === 'approved' && moment(get(this, 'expires')).isAfter(moment())) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"5+dJUP3q\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-md-4\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"competencecard\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"style\\\",[29,[\\\"background-image:url(\\\",[22,\\\"image\\\"],\\\")\\\"]]],[10,\\\"class\\\",\\\"image\\\"],[8],[9],[0,\\\"\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"caption\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[\\\"type\\\",\\\"card\\\",[24,[\\\"type\\\"]]]]],false],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[24,[\\\"user\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"user\\\",\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"valid\\\"]],\\\"valid\\\",\\\"notvalid\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"status\\\"]],\\\"approved\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CheckedCircle\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Circle\\\"],[8],[9],[0,\\\" (\\\"],[1,[22,\\\"status\\\"],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[7,\\\"i\\\",true],[8],[1,[28,\\\"moment-format\\\",[[24,[\\\"expires\\\"]],\\\"L\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/competence-card/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { inject as service } from '@ember/service';\nimport { action, set } from '@ember/object';\nimport fetch from 'fetch';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class CustomExportComponent extends Component {\n    @service('collector-service') collector;\n    @service router;\n    @service store;\n    @service intl;\n    @service error;\n    @service() notifications;\n    @service ttapi;\n    @service('export-file') exportFile;\n    @service dialogs;\n\n    defaultsForCustomExport = {\n        encoding: 'utf8',\n        separator: 'comma',\n        decimal: 'colon',\n        linebreak: 'lf',\n        headers: true,\n        integrationtype: 'salary',\n        absences: true,\n        templateId: null,\n        orderBy: [],\n        absencesAfterWorktimes: false,\n    };\n\n    texts = {\n        utf8: 'Unicode UTF-8',\n        latin1: 'Latin 1',\n        lf: 'LF',\n        lfcr: 'LFCR',\n        showIntegration: 'show integration',\n    };\n\n    get styleNamespace() {\n        return podNames['custom-export-comp'];\n    }\n\n    get columnList() {\n        return this.createColumnList();\n    }\n\n    @tracked isLoadingPreview = false;\n    @tracked isSaving = false;\n    @tracked isLoadingFile = false;\n    @tracked exportList = [];\n    @tracked validate = false;\n    @tracked absenceTypes = [];\n    @tracked record;\n    @tracked templateList = [];\n\n    constructor() {\n        super(...arguments);\n        this.loadExportList();\n        this.createTemplateList();\n        set(this, 'record', this.store.createRecord('custom-export', this.defaultsForCustomExport));\n        set(this, 'filterPreview', {\n            date:\n                moment().startOf('week').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('week').format('YYYY-MM-DD'),\n        });\n        set(this, 'dateFormatList', ['YYYY-MM-DD', 'DD.MM.YYYY', 'YYYY/MM/DD']);\n        this.absenceTypes = this.getAbsenceTypes();\n    }\n\n    @action\n    addColumn() {\n        if (!this.record.columns) this.record.columns = [{}];\n        else this.record.columns.pushObject({});\n    }\n\n    @action\n    async save() {\n        this.isSaving = true;\n        this.validate = false;\n\n        if (this.checkValidations()) {\n            this.validate = true;\n            this.isSaving = false;\n            return;\n        }\n\n        const firstSave = this.record.isNew;\n        try {\n            await this.record.save();\n            if (firstSave) this.loadExportList();\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n        } catch (e) {\n            this.notifications.error(this.error.toString(e), { autoClear: true });\n        }\n        this.isSaving = false;\n    }\n\n    @action\n    delete(column) {\n        this.record.columns.removeObject(column);\n    }\n\n    @action\n    move(direction, column) {\n        const originalIndex = this.record.columns.indexOf(column);\n\n        if (direction === 'up') {\n            if (originalIndex === 0) return;\n            this.record.columns.removeObject(column);\n            this.record.columns.insertAt(originalIndex - 1, column);\n        }\n\n        if (direction === 'down') {\n            if (originalIndex === this.record.columns.length - 1) return;\n            this.record.columns.removeObject(column);\n            this.record.columns.insertAt(originalIndex + 1, column);\n        }\n    }\n\n    @action\n    goto(record) {\n        set(this, 'record', record);\n    }\n\n    @action\n    createNew() {\n        set(this, 'record', this.store.createRecord('custom-export', this.defaultsForCustomExport));\n    }\n\n    @action\n    async remove(record) {\n        if (await this.dialogs.confirm(this.intl.t('general.remove_row'))) {\n            record.destroyRecord();\n            if (record === this.record)\n                set(\n                    this,\n                    'record',\n                    this.store.createRecord('custom-export', this.defaultsForCustomExport),\n                );\n        }\n    }\n\n    @action\n    updateColumnKey(column, event) {\n        const obj = this.columnList.findBy('key', event.target.value);\n\n        if (obj.type === 'date') set(column, 'dateformat', this.dateFormatList[0]); // auto select default dateformat\n\n        set(column, 'type', obj.type);\n        set(column, 'key', obj.key);\n    }\n\n    @action\n    filterChange(value, field) {\n        if (!field) return;\n        set(this.filterPreview, field, value);\n\n        if (this.previewHasBeenLoaded) this.updatePreview();\n    }\n\n    @action\n    async updatePreview() {\n        this.isLoadingPreview = true;\n        const data = await this.fetchExport();\n        set(this, 'previewStr', data);\n        set(this, 'previewHasBeenLoaded', true);\n        this.isLoadingPreview = false;\n    }\n\n    @action\n    async loadFile() {\n        this.isLoadingFile = true;\n        const data = await this.fetchExport();\n        this.exportFile.exportFile(data, 'preview', 'csv');\n        this.isLoadingFile = false;\n    }\n\n    @action\n    toggleType(type) {\n        this.record.integrationtype = type;\n        if (type === 'absences') this.record.absences = true;\n    }\n\n    @action\n    setAbsenceTypes(type) {\n        if (!this.record.absencetypes) this.record.absencetypes = [];\n        if (this.record.absencetypes.findBy('id', type.id)) {\n            this.record.absencetypes.removeObject(type);\n        } else {\n            this.record.absencetypes.pushObject(type);\n        }\n    }\n\n    get orderByOptions() {\n        return this.columnList.filter((col) => col.type !== 'static');\n    }\n\n    @action\n    setPeriodDate(column, event) {\n        const value = event.target.value;\n        if (value) {\n            set(column, 'periodDate', value);\n        } else {\n            delete column.periodDate;\n        }\n    }\n\n    @action\n    setOrderBy(option) {\n        if (!this.record.orderBy) this.record.orderBy = [];\n        const existing = this.record.orderBy.indexOf(option.key);\n        if (existing !== -1) {\n            this.record.orderBy.removeAt(existing);\n        } else {\n            this.record.orderBy.pushObject(option.key);\n        }\n    }\n\n    @action\n    removeOrderBy(key) {\n        if (!this.record.orderBy) return;\n        this.record.orderBy.removeObject(key);\n    }\n\n    checkValidations() {\n        let somethingIsMissing = false;\n        if (!this.record.name) somethingIsMissing = true;\n        if (this.record.columns) {\n            for (let column of this.record.columns) {\n                if (!column.header) somethingIsMissing = true;\n                if (column.type === 'database' && !column.subfield) somethingIsMissing = true;\n            }\n        }\n\n        return somethingIsMissing ? true : false;\n    }\n\n    async loadExportList() {\n        set(this, 'exportList', await this.store.query('custom-export', {}));\n    }\n\n    // Salary templates\n    createTemplateList() {\n        const personec = {\n            name: 'Personec',\n            columns: [\n                {\n                    header: 'Henkilönumero',\n                    type: 'database',\n                    key: 'user',\n                    subfield: 'number',\n                },\n                {\n                    header: 'Palkkalaji',\n                    key: 'salarycode',\n                },\n                {\n                    header: 'Määrä',\n                    key: 'amount',\n                },\n                {\n                    header: 'Päivämäärä',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'date',\n                },\n                {\n                    header: 'Seurantataso',\n                    type: 'database',\n                    key: 'project',\n                    subfield: 'number',\n                },\n            ],\n            encoding: 'utf8',\n            separator: 'semicolon',\n            decimal: 'comma',\n            linebreak: 'lf',\n            quotes: false,\n            headers: false,\n            integrationtype: 'salary',\n            absences: true,\n            onerowabsences: false,\n            orderBy: [],\n        };\n\n        const mepco = {\n            name: 'Mepco',\n            columns: [\n                {\n                    header: 'PVM',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'date',\n                },\n                {\n                    header: 'Filleri 1',\n                },\n                {\n                    header: 'TYNRO',\n                    type: 'database',\n                    key: 'user',\n                    subfield: 'number',\n                },\n                {\n                    header: 'PLNRO',\n                    key: 'salarycode',\n                },\n                {\n                    header: 'KPL/MÄÄRÄ',\n                    key: 'amount',\n                },\n                {\n                    header: 'Filleri2',\n                },\n                {\n                    header: 'KUSTPA',\n                    type: 'database',\n                    key: 'project',\n                    subfield: 'number',\n                },\n            ],\n            encoding: 'utf8',\n            separator: 'semicolon',\n            decimal: 'comma',\n            linebreak: 'lf',\n            quotes: false,\n            headers: false,\n            integrationtype: 'salary',\n            absences: true,\n            onerowabsences: false,\n            orderBy: [],\n        };\n\n        const procountor = {\n            name: 'Procountor',\n            columns: [\n                {\n                    header: 'Rivityyppi',\n                    type: 'static',\n                    key: 'static',\n                    static: 'E',\n                },\n                {\n                    header: 'Henkilönumero',\n                    type: 'database',\n                    key: 'user',\n                    subfield: 'number',\n                },\n                {\n                    header: 'Palkkalajin koodi',\n                    key: 'salarycode',\n                },\n                {\n                    header: 'Palkkalajin nimi',\n                },\n                {\n                    header: 'Rivin lukumäärä',\n                    key: 'amount',\n                },\n                {\n                    header: 'Rivin yksikköhinta',\n                },\n                {\n                    header: 'Dimension nimi 1',\n                },\n                {\n                    header: 'Nimikkeen nimi 1',\n                },\n                {\n                    header: 'Dimension nimi 2',\n                },\n                {\n                    header: 'Nimikkeen nimi 2',\n                },\n                {\n                    header: 'Dimension nimi 3',\n                },\n                {\n                    header: 'Nimikkeen nimi 3',\n                },\n                {\n                    header: 'Dimension nimi 4',\n                },\n                {\n                    header: 'Nimikkeen nimi 4',\n                },\n                {\n                    header: 'Dimension nimi 5',\n                },\n                {\n                    header: 'Nimikkeen nimi 5',\n                },\n                {\n                    header: 'Dimension nimi 6',\n                },\n                {\n                    header: 'Nimikkeen nimi 6',\n                },\n                {\n                    header: 'Ansaintajakson alku pvm',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'date',\n                },\n                {\n                    header: 'Ansaintajakson loppu pvm',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'date',\n                },\n                {\n                    header: 'Rivikommentti',\n                    type: 'textbox',\n                    key: 'description',\n                },\n            ],\n            encoding: 'utf8',\n            separator: 'semicolon',\n            decimal: 'colon',\n            linebreak: 'lf',\n            quotes: false,\n            headers: false,\n            integrationtype: 'salary',\n            absences: true,\n            onerowabsences: false,\n            orderBy: [],\n            templateId: 'Procountor',\n        };\n\n        const talenom_tyoajat = {\n            name: 'Talenom - Työajat',\n            columns: [\n                {\n                    header: 'PVM',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'date',\n                },\n                {\n                    header: 'TYNRO',\n                    type: 'database',\n                    key: 'user',\n                    subfield: 'number',\n                },\n                {\n                    header: 'PLAJI',\n                    key: 'salarycode',\n                },\n                {\n                    header: 'MÄÄRÄ',\n                    key: 'amount',\n                },\n                {\n                    header: 'TYHJÄ 1',\n                },\n                {\n                    header: 'TYHJÄ 2',\n                },\n                {\n                    header: 'TYHJÄ 3',\n                },\n                {\n                    header: 'PROJ',\n                    key: 'project',\n                    type: 'database',\n                    subfield: 'number',\n                },\n            ],\n            encoding: 'utf8',\n            separator: 'semicolon',\n            decimal: 'colon',\n            linebreak: 'lf',\n            quotes: false,\n            headers: false,\n            integrationtype: 'salary',\n            absences: false,\n            onerowabsences: false,\n        };\n\n        const talenom_poissaolot = {\n            name: 'Talenom - Poissaolot',\n            columns: [\n                {\n                    header: 'TYNRO',\n                    type: 'database',\n                    key: 'user',\n                    subfield: 'number',\n                },\n                {\n                    header: 'APVM',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'startdate',\n                },\n                {\n                    header: 'LPVM',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'enddate',\n                },\n                {\n                    header: 'KOODI',\n                    type: 'database',\n                    key: 'abcensetype',\n                    subfield: 'key',\n                },\n                {\n                    header: 'TUNNIT',\n                    type: 'hours',\n                    key: 'absence_hours',\n                },\n            ],\n            encoding: 'utf8',\n            separator: 'semicolon',\n            decimal: 'colon',\n            linebreak: 'lf',\n            quotes: false,\n            headers: false,\n            integrationtype: 'absences',\n            absences: true,\n            onerowabsences: true,\n        };\n\n        const talenom_vuosilomat = {\n            name: 'Talenom - Vuosilomat',\n            columns: [\n                {\n                    header: 'TYNRO',\n                    type: 'database',\n                    key: 'user',\n                    subfield: 'number',\n                },\n                {\n                    header: 'APVM',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'startdate',\n                },\n                {\n                    header: 'LPVM',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'enddate',\n                },\n                {\n                    header: 'KOODI',\n                    type: 'database',\n                    key: 'abcensetype',\n                    subfield: 'absence_code',\n                },\n            ],\n            encoding: 'utf8',\n            separator: 'semicolon',\n            decimal: 'colon',\n            linebreak: 'lf',\n            quotes: false,\n            headers: false,\n            integrationtype: 'absences',\n            absences: true,\n            onerowabsences: true,\n        };\n\n        const fennoa_tyoajat = {\n            name: 'Fennoa - Työajat',\n            columns: [\n                {\n                    header: 'Henkilönumero',\n                    type: 'database',\n                    key: 'user',\n                    subfield: 'number',\n                },\n                {\n                    header: 'Palkkalajin koodi',\n                    key: 'salarycode',\n                },\n                {\n                    header: 'Päivämäärä',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'date',\n                },\n                {\n                    header: 'Määrä',\n                    key: 'amount',\n                },\n                {\n                    header: 'Hinta',\n                },\n                {\n                    header: 'Kerroin',\n                },\n                {\n                    header: 'Selite',\n                },\n                {\n                    header: 'Poissaolo alkaa',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'startdate',\n                },\n                {\n                    header: 'Poissaolo päättyy',\n                    dateformat: 'DD.MM.YYYY',\n                    type: 'date',\n                    key: 'enddate',\n                },\n                {\n                    header: 'Poissaolo päivät',\n                    key: 'dayamount',\n                },\n                {\n                    header: 'Dimensio1',\n                },\n                {\n                    header: 'Dimensio2',\n                },\n                {\n                    header: 'Dimensio3',\n                },\n                {\n                    header: 'Dimensio4',\n                },\n            ],\n            encoding: 'utf8',\n            separator: 'semicolon',\n            decimal: 'colon',\n            linebreak: 'lf',\n            quotes: false,\n            headers: false,\n            integrationtype: 'salary',\n            absences: true,\n            onerowabsences: true,\n            templateId: 'Fennoa',\n            orderBy: [],\n        };\n\n        this.templateList = [\n            personec,\n            mepco,\n            procountor,\n            talenom_tyoajat,\n            talenom_poissaolot,\n            talenom_vuosilomat,\n            fennoa_tyoajat,\n        ];\n    }\n\n    @action\n    createTemplateFields(template) {\n        set(this, 'record', this.store.createRecord('custom-export', template));\n    }\n\n    createColumnList() {\n        const whiteListTypes = ['date', 'database', 'textbox'];\n        const absenceWhiteListTypes = ['date', 'database', 'textbox', 'hours', 'number'];\n        const blackListFields = [\n            'export_salary',\n            'salarytype',\n            'location',\n            'end_location',\n            'superior',\n        ];\n        const columnList = [\n            { key: 'static', name: this.intl.t('custom-export.static'), type: 'static' },\n            { key: 'salarycode', name: this.intl.t('custom-export.salary-code') },\n            { key: 'amount', name: this.intl.t('custom-export.amount') },\n        ];\n\n        if (this.record.integrationtype === 'salary') {\n            let worktimeFieldArray = this.collector\n                .fieldArray('worktime')\n                .filter(\n                    (item) =>\n                        whiteListTypes.includes(item.type) && !blackListFields.includes(item.name),\n                );\n            for (let field of worktimeFieldArray)\n                columnList.push({ key: field.name, name: field.translated_name, type: field.type });\n        }\n\n        if (this.record.absences) {\n            let absencesFieldArray = this.collector\n                .fieldArray('abcense')\n                .filter((item) => absenceWhiteListTypes.includes(item.type));\n            for (let field of absencesFieldArray) {\n                if (!columnList.findBy('key', field.name))\n                    columnList.push({\n                        key: field.name,\n                        name: field.translated_name,\n                        type: field.type,\n                    });\n            }\n            if (!columnList.findBy('key', 'date')) {\n                let dateField = this.collector.field('worktime', 'date');\n                columnList.push({\n                    key: dateField.name,\n                    name: dateField.translated_name,\n                    type: dateField.type,\n                });\n            }\n        }\n\n        return columnList.sort((a, b) => ('' + a.name).localeCompare(b.name));\n    }\n\n    async fetchExport() {\n        const headers = this.ttapi.headers;\n        headers['Content-Type'] = 'application/json';\n        const response = await fetch(\n            this.ttapi.host + '/api/custom-export?salaryversion=' + this.getVersion(),\n            {\n                headers: headers,\n                method: 'POST',\n                body: JSON.stringify(\n                    Object.assign(\n                        this.filterPreview,\n                        {\n                            limit: 25,\n                            preview: true,\n                            debug: this.debugShowIntegration ? 'integration' : null,\n                        },\n                        { export: this.record.toJSON() },\n                    ),\n                ),\n            },\n        );\n        return await response.text();\n    }\n\n    async getAbsenceTypes() {\n        const types = await this.store.findAll('abcensetype');\n        return types.map((type) => {\n            return { id: type.id, text: type.name };\n        });\n    }\n\n    getVersion() {\n        if (this.collector.testNeeds(['products.salarytype_v2'])) return 2;\n        else return 1;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"dh6U0mkl\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\",\\\"@remove\\\",\\\"@selected\\\",\\\"@disabled\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[23,4,[]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"custom-export.absencetypes.selected_amount\\\"],[[\\\"amount\\\"],[[23,3,[\\\"length\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@event\\\",\\\"@hideOn\\\",\\\"@side\\\",\\\"@delay\\\",\\\"@class\\\"],[\\\"hover\\\",\\\"mouseleave\\\",\\\"right\\\",700,\\\"ember-popover\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"popover-item\\\"],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross add-modal-cross\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,2,[]],[23,1,[]]],null]]],[8],[9],[1,[23,1,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/custom-export-comp/multi-select-amount/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"O/xniJkP\",\"block\":\"{\\\"symbols\\\":[\\\"key\\\",\\\"index\\\",\\\"@remove\\\",\\\"@selected\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[23,4,[\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"custom-export.orderby.selected_amount\\\"],[[\\\"amount\\\"],[[23,4,[\\\"length\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@event\\\",\\\"@hideOn\\\",\\\"@side\\\",\\\"@delay\\\",\\\"@class\\\"],[\\\"hover\\\",\\\"mouseleave\\\",\\\"right\\\",700,\\\"ember-popover\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,4,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"popover-item\\\"],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross add-modal-cross\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,3,[]],[23,1,[]]],null]]],[8],[9],[1,[28,\\\"add\\\",[[23,2,[]],1],null],false],[0,\\\". \\\"],[1,[23,1,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/custom-export-comp/order-by-select/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"wNJBIJeH\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"item\\\",\\\"option\\\",\\\"@createTemplateFields\\\",\\\"@onChange\\\",\\\"@remove\\\",\\\"@selected\\\",\\\"@createNew\\\",\\\"@options\\\",\\\"@templateList\\\"],\\\"statements\\\":[[5,\\\"basic-dropdown\\\",[],[[\\\"@verticalPosition\\\",\\\"@horizontalPosition\\\"],[\\\"below\\\",\\\"left\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Trigger\\\"]],[[12,\\\"data-anchor\\\",\\\"custom-export-basic-dropdown\\\"],[12,\\\"class\\\",\\\"ember-basic-dropdown-trigger  ember-power-select-trigger\\\"]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"data-anchor\\\",\\\"custom-export-selected-item\\\"],[10,\\\"class\\\",\\\"ember-power-select-selected-item\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[23,7,[\\\"name\\\"]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"ember-power-select-status-icon\\\"],[8],[9],[0,\\\"\\\\n\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Content\\\"]],[[12,\\\"data-anchor\\\",\\\"custom-export-basic-dropdown-content\\\"],[12,\\\"class\\\",\\\"ember-power-select-dropdown px-5 py-4\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,1,[\\\"actions\\\",\\\"close\\\"]]]]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",false],[12,\\\"role\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,8,[]]]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"custom-export.create\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"my-5\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"custom-export.custom.templates\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,9,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"py-1\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,5,[]],[23,3,[]]],null]]],[8],[1,[23,3,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"pull-right pl-6\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,6,[]],[23,3,[]]],null]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Delete\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"custom-export.templates\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,10,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"py-1\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"data-anchor\\\",\\\"custom-export-template-option\\\"],[12,\\\"role\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,4,[]],[23,2,[]]],null]]],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/custom-export-comp/select-export/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"z8ii/mMd\",\"block\":\"{\\\"symbols\\\":[\\\"column\\\",\\\"index\\\",\\\"subfield\\\",\\\"format\\\",\\\"col\\\",\\\"option\\\",\\\"option\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"query\\\"],[\\\"btn btn-visma btn-wide my-4\\\",[28,\\\"hash\\\",null,[[\\\"wizard\\\"],[\\\"help-custom-export\\\"]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"dashboard.show_info\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-33 pr-4\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"boxed\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.exports\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"custom-export-comp/select-export\\\",[],[[\\\"@options\\\",\\\"@templateList\\\",\\\"@selected\\\",\\\"@remove\\\",\\\"@onChange\\\",\\\"@createNew\\\",\\\"@createTemplateFields\\\"],[[23,0,[\\\"exportList\\\"]],[23,0,[\\\"templateList\\\"]],[23,0,[\\\"record\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"remove\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"goto\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"createNew\\\"]]],null],[28,\\\"fn\\\",[[24,[\\\"createTemplateFields\\\"]]],null]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.export_type\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"radio-button\\\",[],[[\\\"@value\\\",\\\"@groupValue\\\",\\\"@changed\\\"],[\\\"salary\\\",[23,0,[\\\"record\\\",\\\"integrationtype\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"toggleType\\\"]],\\\"salary\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"custom-export.export_type.salary\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[5,\\\"radio-button\\\",[],[[\\\"@value\\\",\\\"@groupValue\\\",\\\"@changed\\\"],[\\\"absences\\\",[23,0,[\\\"record\\\",\\\"integrationtype\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"toggleType\\\"]],\\\"absences\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"custom-export.export_type.absence\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\"],[[28,\\\"t\\\",[\\\"custom-export.name\\\"],null],true,[28,\\\"and\\\",[[28,\\\"not\\\",[[23,0,[\\\"record\\\",\\\"name\\\"]]],null],[23,0,[\\\"validate\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"record\\\",\\\"name\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.encoding\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"encoding\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"utf8\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"encoding\\\"]],\\\"utf8\\\"],null]],[8],[1,[23,0,[\\\"texts\\\",\\\"utf8\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"latin1\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"encoding\\\"]],\\\"latin1\\\"],null]],[8],[1,[23,0,[\\\"texts\\\",\\\"latin1\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.separator\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                     \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"separator\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"comma\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"separator\\\"]],\\\"comma\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.comma\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"semicolon\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"separator\\\"]],\\\"semicolon\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.semicolon\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"tab\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"separator\\\"]],\\\"tab\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.tabulator\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.decimal\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                     \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"decimal\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"colon\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"decimal\\\"]],\\\"colon\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.colon\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"comma\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"decimal\\\"]],\\\"comma\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.comma\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.linebreak\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                     \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"linebreak\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"lf\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"linebreak\\\"]],\\\"lf\\\"],null]],[8],[1,[23,0,[\\\"texts\\\",\\\"lf\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"lfcr\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"linebreak\\\"]],\\\"lfcr\\\"],null]],[8],[1,[23,0,[\\\"texts\\\",\\\"lfcr\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.quotes\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                     \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[23,0,[\\\"record\\\",\\\"quotes\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"quotes\\\"]]],null],[28,\\\"not\\\",[[23,0,[\\\"record\\\",\\\"quotes\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.headers\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                     \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[23,0,[\\\"record\\\",\\\"headers\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"headers\\\"]]],null],[28,\\\"not\\\",[[23,0,[\\\"record\\\",\\\"headers\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"integrationtype\\\"]],\\\"salary\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.absences\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@value\\\",\\\"@onToggle\\\",\\\"@size\\\",\\\"@theme\\\"],[[23,0,[\\\"record\\\",\\\"absences\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"absences\\\"]]],null],[28,\\\"not\\\",[[23,0,[\\\"record\\\",\\\"absences\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.absences.asOneRow\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@value\\\",\\\"@onToggle\\\",\\\"@size\\\",\\\"@theme\\\",\\\"@disabled\\\"],[[23,0,[\\\"record\\\",\\\"onerowabsences\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"onerowabsences\\\"]]],null],[28,\\\"not\\\",[[23,0,[\\\"record\\\",\\\"onerowabsences\\\"]]],null]],null],\\\"large\\\",\\\"light\\\",[28,\\\"not\\\",[[23,0,[\\\"record\\\",\\\"absences\\\"]]],null]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.absencetypes\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"power-select\\\",[],[[\\\"@placeholder\\\",\\\"@selected\\\",\\\"@selectedItemComponent\\\",\\\"@options\\\",\\\"@disabled\\\",\\\"@onChange\\\"],[[28,\\\"if\\\",[[23,0,[\\\"record\\\",\\\"absences\\\"]],[28,\\\"t\\\",[\\\"custom-export.absencetypes.export_all\\\"],null]],null],[23,0,[\\\"record\\\",\\\"absencetypes\\\"]],[28,\\\"component\\\",[\\\"custom-export-comp/multi-select-amount\\\"],[[\\\"selected\\\",\\\"remove\\\",\\\"disabled\\\"],[[23,0,[\\\"record\\\",\\\"absencetypes\\\"]],[23,0,[\\\"setAbsenceTypes\\\"]],[28,\\\"not\\\",[[23,0,[\\\"record\\\",\\\"absences\\\"]]],null]]]],[23,0,[\\\"absenceTypes\\\"]],[28,\\\"not\\\",[[23,0,[\\\"record\\\",\\\"absences\\\"]]],null],[23,0,[\\\"setAbsenceTypes\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[23,7,[\\\"text\\\"]],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.orderby\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"power-select\\\",[],[[\\\"@placeholder\\\",\\\"@selected\\\",\\\"@selectedItemComponent\\\",\\\"@options\\\",\\\"@onChange\\\"],[[28,\\\"t\\\",[\\\"custom-export.orderby.placeholder\\\"],null],[23,0,[\\\"record\\\",\\\"orderBy\\\"]],[28,\\\"component\\\",[\\\"custom-export-comp/order-by-select\\\"],[[\\\"selected\\\",\\\"remove\\\"],[[23,0,[\\\"record\\\",\\\"orderBy\\\"]],[23,0,[\\\"removeOrderBy\\\"]]]]],[23,0,[\\\"orderByOptions\\\"]],[23,0,[\\\"setOrderBy\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[23,6,[\\\"name\\\"]],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[23,0,[\\\"record\\\",\\\"integrationtype\\\"]],\\\"salary\\\"],null],[23,0,[\\\"record\\\",\\\"absences\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"data-anchor\\\",\\\"custom-export-absences-after-worktimes-field\\\"],[8],[0,\\\"\\\\n                        \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"custom-export.absencesAfterWorktimes\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@value\\\",\\\"@onToggle\\\",\\\"@size\\\",\\\"@theme\\\"],[[23,0,[\\\"record\\\",\\\"absencesAfterWorktimes\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"record\\\",\\\"absencesAfterWorktimes\\\"]]],null],[28,\\\"not\\\",[[23,0,[\\\"record\\\",\\\"absencesAfterWorktimes\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-66 pl-4\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"boxed\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"movenium-table\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"custom-export.index\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"custom-export.header\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"custom-export.column\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"custom-export.extra\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"record\\\",\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"add\\\",[[23,2,[]],1],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"not\\\",[[23,1,[\\\"header\\\"]]],null],[23,0,[\\\"validate\\\"]]],null],\\\"has-error\\\"],null]]]],[8],[0,\\\"\\\\n                                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"]],[[\\\"@value\\\"],[[23,1,[\\\"header\\\"]]]]],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"select\\\",false],[12,\\\"class\\\",\\\"form-control\\\"],[3,\\\"on\\\",[\\\"change\\\",[28,\\\"fn\\\",[[23,0,[\\\"updateColumnKey\\\"]],[23,1,[]]],null]]],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.choose\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"columnList\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,5,[\\\"key\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"key\\\"]],[23,5,[\\\"key\\\"]]],null]],[8],[1,[23,5,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[\\\"type\\\"]],\\\"static\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"]],[[\\\"@value\\\"],[[23,1,[\\\"static\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[\\\"type\\\"]],\\\"date\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,1,[\\\"dateformat\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"dateFormatList\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,4,[]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"dateformat\\\"]],[23,4,[]]],null]],[8],[1,[23,4,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[11,\\\"selected\\\",[28,\\\"not\\\",[[28,\\\"includes\\\",[[23,1,[\\\"dateformat\\\"]],[23,0,[\\\"dateFormatList\\\"]]],null]],null]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.customdate\\\"],null],false],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"not\\\",[[28,\\\"includes\\\",[[23,1,[\\\"dateformat\\\"]],[23,0,[\\\"dateFormatList\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"wrap-custom-dateformat\\\"],[8],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control display-inline\\\"]],[[\\\"@value\\\"],[[23,1,[\\\"dateformat\\\"]]]]],[0,\\\" \\\"],[5,\\\"help-bubble-icon\\\",[],[[\\\"@side\\\",\\\"@text\\\"],[\\\"left-start\\\",\\\"testing\\\"]]],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control mt-2\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[23,0,[\\\"setPeriodDate\\\"]],[23,1,[]]],null]],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[11,\\\"selected\\\",[28,\\\"not\\\",[[23,1,[\\\"periodDate\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.periodDate.none\\\"],null],false],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"start\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"periodDate\\\"]],\\\"start\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.periodDate.start\\\"],null],false],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"end\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"periodDate\\\"]],\\\"end\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.periodDate.end\\\"],null],false],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[\\\"type\\\"]],\\\"database\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"not\\\",[[23,1,[\\\"subfield\\\"]]],null],[23,0,[\\\"validate\\\"]]],null],\\\"has-error\\\"],null]]]],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,1,[\\\"subfield\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.choose\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"sort\\\",[[28,\\\"collector-field-list\\\",[[23,1,[\\\"key\\\"]]],[[\\\"onlyTypes\\\"],[\\\"textbox,number,date\\\"]]]],[[\\\"sortBy\\\"],[\\\"translated_name\\\"]]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,3,[\\\"name\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"subfield\\\"]],[23,3,[\\\"name\\\"]]],null]],[8],[1,[23,3,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"t\\\",[\\\"custom-export.no-extra\\\"],null],false],[0,\\\"\\\\n                                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"actions\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-SortDown\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"move\\\"]],\\\"down\\\",[23,1,[]]],null]]],[8],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-SortUp\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"move\\\"]],\\\"up\\\",[23,1,[]]],null]]],[8],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Delete\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"delete\\\"]],[23,1,[]]],null]]],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"validate\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.something_missing\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-33\\\"],[8],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-visma btn-wide\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"addColumn\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"custom-export.add-column\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-33\\\"],[8],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\",\\\"@saveButtonText\\\"],[[22,\\\"isLoadingPreview\\\"],[28,\\\"fn\\\",[[23,0,[\\\"updatePreview\\\"]]],null],\\\"btn btn-visma btn-wide\\\",[28,\\\"t\\\",[\\\"custom-export.update-preview\\\"],null]]]],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-33\\\"],[8],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\",\\\"@saveButtonText\\\"],[[22,\\\"isSaving\\\"],[28,\\\"fn\\\",[[23,0,[\\\"save\\\"]]],null],\\\"btn btn-primary btn-wide\\\",[28,\\\"t\\\",[\\\"custom-export.save\\\"],null]]]],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"development\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column py-4\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[23,0,[\\\"debugShowIntegration\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"debugShowIntegration\\\"]]],null],[28,\\\"not\\\",[[23,0,[\\\"debugShowIntegration\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\" \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"px-5\\\"],[8],[1,[23,0,[\\\"texts\\\",\\\"showIntegration\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"custom-export.prevew\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"collector/form-report/filters\\\",[],[[\\\"@form\\\",\\\"@showColumns\\\",\\\"@values\\\",\\\"@change\\\"],[\\\"worktime\\\",\\\"date,employer,project,user\\\",[23,0,[\\\"filterPreview\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"filterChange\\\"]]],null]]]],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"preview\\\"],[8],[4,\\\"if\\\",[[24,[\\\"isLoadingPreview\\\"]]],null,{\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[22,\\\"previewStr\\\"],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"previewStr\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column center\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\"],[[22,\\\"isLoadingFile\\\"],[28,\\\"fn\\\",[[23,0,[\\\"loadFile\\\"]]],null],\\\"btn btn-visma\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"custom-export.load\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-download pl-4\\\"],[8],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/custom-export-comp/template.hbs\"}});","import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\n\nexport default Component.extend({\n    intl: service(),\n    analytics: service(),\n    gui: service(),\n    classNames: ['widget'],\n    attributeBindings: ['draggable', 'data-name'],\n    classNameBindings: ['dragClass'],\n    dragClass: 'inactive',\n    draggable: alias('editing'),\n    'data-name': alias('name'),\n\n    widgetPath: computed(function () {\n        return 'dash-board/widgets/' + get(this, 'name');\n    }),\n\n    helpBubbleText: computed('betaValue', function () {\n        if (!this.name) return '';\n        const translationName = this.betaValue ? this.name + '-beta' : this.name;\n        return 'widget.' + translationName + '.help';\n    }),\n\n    actions: {\n        removeMe() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'remove-' + get(this, 'name'),\n            });\n            this.onremove(this.name);\n        },\n\n        helpClicked() {\n            this.analytics.trackEvent({\n                category: 'widget',\n                action: 'help_opened',\n                property: get(this, 'name'),\n            });\n        },\n    },\n\n    dragStart(event) {\n        event.dataTransfer.setData('text/data', get(this, 'name'));\n        window.Tt4.draggedWidgetType = 'widget';\n    },\n\n    dragLeave(event) {\n        event.preventDefault();\n        set(this, 'dragClass', 'inactive');\n    },\n\n    dragOver(event) {\n        const itemType = window.Tt4.draggedWidgetType;\n        if (itemType === 'widget' || itemType === 'widgetIcon') {\n            event.preventDefault();\n            const { y, height } = event.target.getBoundingClientRect();\n            if (event.originalEvent.pageY - window.scrollY < y + height / 2) {\n                set(this, 'dragClass', 'active-up');\n            } else {\n                set(this, 'dragClass', 'active-down');\n            }\n        }\n    },\n\n    dragEnter(event) {\n        event.preventDefault();\n    },\n\n    drop(event) {\n        set(this, 'dragClass', 'inactive');\n        const data = event.dataTransfer.getData('text/data');\n        if (!data || data == this.name) return;\n        this.dropped(this.name, data, event);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"Jio8GdRn\",\"block\":\"{\\\"symbols\\\":[\\\"@name\\\",\\\"@toggleValue\\\",\\\"@declineBeta\\\",\\\"@betaValue\\\",\\\"@dontShowPopupAgain\\\",\\\"@popupText\\\",\\\"@tableLayout\\\",\\\"@changeLayout\\\",\\\"@moveWidget\\\",\\\"@position\\\",\\\"@betaFeatureToggle\\\",\\\"&default\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"editing\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"gui\\\",\\\"isMobileComputed\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"draggableArea\\\"],[11,\\\"data-name\\\",[22,\\\"name\\\"]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Delete\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeMe\\\"]],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"   \\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mobile-edit-container transform-widget\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"moving-buttons\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],[23,9,[]],[23,0,[]],\\\"top\\\"],null]],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,10,[]],\\\"top\\\"],null],\\\"disabled-moving-button\\\"],null],\\\" moving-button move-to-top\\\"]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-FastForwardUp\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],[23,9,[]],[23,0,[]],\\\"up\\\"],null]],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,10,[]],\\\"top\\\"],null],\\\"disabled-moving-button\\\"],null],\\\" moving-button move-up\\\"]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-MoveUp\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],[23,9,[]],[23,0,[]],\\\"bottom\\\"],null]],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,10,[]],\\\"bottom\\\"],null],\\\"disabled-moving-button\\\"],null],\\\" moving-button move-to-bottom\\\"]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-FastForwardDown\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],[23,9,[]],[23,0,[]],\\\"down\\\"],null]],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,10,[]],\\\"bottom\\\"],null],\\\"disabled-moving-button\\\"],null],\\\" moving-button move-down\\\"]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-MoveDown\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"moving-button delete-widget\\\"],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Delete\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeMe\\\"]],[8],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-header\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text\\\"],[8],[1,[22,\\\"header\\\"],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[23,7,[]],[28,\\\"not\\\",[[24,[\\\"editing\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"layout-buttons\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[\\\"move move-GridLayout \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[]],\\\"grid\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],[23,8,[]],\\\"grid\\\"]],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[\\\"move move-ReportLayout \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[]],\\\"report\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],[23,8,[]],\\\"report\\\"]],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,11,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"beta-toggle\\\",[],[[\\\"@label\\\",\\\"@toggleValue\\\",\\\"@declineBeta\\\",\\\"@value\\\",\\\"@dontShowPopupAgain\\\",\\\"@popupText\\\"],[[23,1,[]],[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"helpBubbleText\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"widget-help-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"helpClicked\\\"]],[8],[0,\\\"\\\\n            \\\"],[5,\\\"help-bubble-icon\\\",[],[[\\\"@vismaIcon\\\",\\\"@side\\\",\\\"@key\\\"],[\\\"vismaicon vismaicon-dynamic vismaicon-info\\\",\\\"left-start\\\",[22,\\\"helpBubbleText\\\"]]],{\\\"statements\\\":[],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-content\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[14,12],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/base-widget/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set, setProperties } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { later, debounce, next } from '@ember/runloop';\nimport Ember from 'ember';\n\nexport default Component.extend({\n    intl: service(),\n    collector: service('collector-service'),\n    flags: service(),\n    gui: service(),\n    store: service(),\n    localstorage: service(),\n    analytics: service(),\n    evented: service(),\n    userSettings: service(),\n\n    widgets: computed(function () {\n        const widgets = [\n            {\n                needs: [\n                    'worktime',\n                    'worktime@add',\n                    'modulecontrol.worktimes',\n                    'flag.clockcard-25||!products.gps_force',\n                    '!products.timetracker_hours',\n                ],\n                name: 'timecard',\n                icon: 'Time',\n                header: this.intl.t('header.path.add.timecard'),\n            },\n            {\n                needs: [\n                    'worktime',\n                    'worktime@add',\n                    '!products.timetracker_clockcard||!userlevel=1?',\n                    'modulecontrol.worktimes',\n                ],\n                name: 'worktime-add',\n                icon: 'Time',\n                header: this.intl.t('widget.worktime-add.header'),\n            },\n            { needs: ['userHasSaldos'], name: 'saldo', icon: 'Timespan', header: 'Saldo' },\n            {\n                needs: ['worktime', 'modulecontrol.worktimes'],\n                name: 'worktime-calendar',\n                icon: 'Calendar',\n                header: this.intl.t('widget.worktime-calendar.header'),\n                wide: true,\n            },\n            {\n                needs: [\n                    '!mobileView',\n                    'worktime',\n                    'worktime@add',\n                    'modulecontrol.worktimes',\n                    '!products.gps_force',\n                ],\n                name: 'my-sites',\n                icon: 'MySites',\n                header: this.intl.t('widget.my-sites.header'),\n                wide: true,\n            },\n            {\n                needs: [\n                    'worktime',\n                    'products.absences',\n                    '!customersetting.hide_holidays',\n                    'holiday@access',\n                ],\n                name: 'holiday',\n                icon: 'Sun',\n                header: this.intl.t('widget.holiday.header'),\n            },\n            {\n                needs: ['worktime', 'products.absences'],\n                name: 'absence',\n                icon: 'Cup',\n                header: this.intl.t('widget.absence.header'),\n            },\n            {\n                needs: [],\n                name: 'custom-help',\n                icon: 'FAQ',\n                header: this.intl.t('widget.custom-help.header'),\n            },\n            {\n                needs: [\n                    'worktime',\n                    'salarytype||salarytypev2',\n                    'salarytype@access||salarytypev2@access',\n                ],\n                name: 'salary-sum',\n                icon: 'Timespan',\n                header: this.intl.t('widget.salary-sum.header'),\n            },\n            {\n                needs: ['products.worktimebank'],\n                name: 'bank',\n                icon: 'Timespan',\n                header: this.intl.t('widget.bank.header'),\n            },\n            {\n                needs: [],\n                name: 'promo-messages',\n                icon: 'Message',\n                header: this.intl.t('widget.promoMessages.header'),\n            },\n            {\n                needs: ['worktime||presence', '!userlevel=1?'],\n                name: 'working-now',\n                icon: 'Calendar',\n                header: this.intl.t('widget.working-now.header'),\n            },\n            {\n                needs: [\n                    'employer',\n                    'employer@access',\n                    'employer.tv_status',\n                    'worktime.project||presence.project',\n                ],\n                name: 'tv-status',\n                icon: 'PieChart',\n                header: this.intl.t('widget.tv-status.header'),\n            },\n            {\n                needs: ['worktime', 'products.absences', '!userlevel=1,9?'],\n                name: 'absentees',\n                icon: 'Calendar',\n                header: this.intl.t('widget.absentees.header'),\n            },\n        ];\n\n        if (this.flags.test('anomality-widget')) {\n            widgets.unshift({\n                needs: [\n                    'products.saldo||worktime||products.orientations||export_taxman',\n                    '!userlevel=1',\n                ],\n                name: 'anomalities',\n                icon: 'Expired',\n                header: this.intl.t('widget.anomalities.header'),\n            });\n        }\n\n        return widgets.filter((item) => this.collector.testNeeds(item.needs));\n    }),\n\n    hidden_widgets: computed('widgets', 'widget_columns', function () {\n        const allWidgets = this.widgets;\n        const shownWidgets = this.widget_columns;\n        let hidden_widgets = [];\n        if (this.isMobileOrEditingMobile) {\n            allWidgets\n                .filter((widget) => !widget.needs.includes('!mobileView'))\n                .forEach((widget) => {\n                    if (shownWidgets.mobile.findBy('name', widget.name)) return;\n                    hidden_widgets.push(widget);\n                });\n        } else {\n            allWidgets.forEach((widget) => {\n                if (shownWidgets.left.findBy('name', widget.name)) return;\n                if (shownWidgets.center.findBy('name', widget.name)) return;\n                if (shownWidgets.right.findBy('name', widget.name)) return;\n                hidden_widgets.push(widget);\n            });\n        }\n        return hidden_widgets;\n    }),\n\n    widget_columns: computed('isMobileOrEditingMobile', function () {\n        const dashboard = this.localstorage.getItem('dashboard');\n        const dashboardMobile = this.localstorage.getItem('dashboard-mobile');\n\n        if (this.isMobileOrEditingMobile && dashboardMobile) {\n            return {\n                mobile: this.mapWidgetsAndFilter(dashboardMobile.mobile),\n            };\n        } else if (!this.isMobileOrEditingMobile && dashboard) {\n            return {\n                left: this.mapWidgetsAndFilter(dashboard.left),\n                center: this.mapWidgetsAndFilter(dashboard.center),\n                right: this.mapWidgetsAndFilter(dashboard.right),\n            };\n        }\n\n        return this.default_widgets;\n    }),\n\n    default_widgets: computed(function () {\n        const narrow_widgets = this.widgets.filter((item) => !item.wide);\n        const slice_from = Math.floor(narrow_widgets.length / 2);\n\n        return {\n            left: narrow_widgets.slice(0, slice_from),\n            center: this.widgets.filter((item) => item.wide),\n            right: narrow_widgets.slice(slice_from, narrow_widgets.length),\n            mobile: this.widgets.filter((widget) => !widget.needs.includes('!mobileView')),\n        };\n    }),\n\n    isMobileOrEditingMobile: computed('dashboardView', function () {\n        return this.gui.isMobile() || this.dashboardView === 'mobile';\n    }),\n\n    projectField: computed('project', function () {\n        const form = this.Collector.fieldExists('worktime', 'project') ? 'worktime' : 'presence';\n        let field = this.collector.field(form, 'project');\n        if (field) {\n            field.prompt = 'general.all_projects';\n        }\n        return field;\n    }),\n\n    init() {\n        this._super(...arguments);\n        this.dashboardView = 'browser';\n        this.evented.on('onResumed', this, 'onResumed');\n        set(this, 'refreshTime', new Date()); // this is shown in template\n        if (!Ember.testing) later(this, this.autorefresh, 30 * 60 * 1000); // 30 minutes\n        this.doTheseBeforeRender();\n    },\n\n    didInsertElement() {\n        this.loadDashboard();\n    },\n\n    didDestroyElement() {\n        this.evented.off('onResumed', this, 'onResumed');\n    },\n\n    actions: {\n        projectFilterChange(project) {\n            this.analytics.trackEvent({ category: 'Dashboard', action: 'main project filter changed' });\n            set(this, 'project', project?.id);\n            this.evented.dashboardProjectChanged(project);\n        },\n\n        toggleEdit() {\n            this.toggleProperty('editingDashboard');\n            this.analytics.trackEvent({ category: 'Dashboard', action: 'edit-mode' });\n            window.Tt4.draggedWidgetType = null;\n            if (this.editingDashboard) {\n                set(this, 'gui.sidebar', false);\n            } else {\n                this.gui.resetSidebar();\n                this.send('changeView', 'browser'); //to load the correct view when exiting edit mode\n            }\n        },\n\n        async onremove(name) {\n            this.analytics.trackEvent({ category: 'Dashboard', action: `Widget removed: ${name}` });\n            let widgetStrings = this.moveWidgets(name);\n            await this.saveDashboard(widgetStrings);\n            this.evented.storeEvent('insert', 'dashboard', null);\n        },\n\n        widgetDropped(dropTargetName, dropWidgetName, event) {\n            this.analytics.trackEvent({ category: 'Dashboard', action: `Widget moved` });\n\n            const { y, height } = event.target.getBoundingClientRect();\n            // set(this, 'dragClass', 'active-down')\n            const dropPlacement =\n                event.originalEvent.pageY - window.scrollY < y + height / 2 ? 'above' : 'below';\n\n            let widgetStrings = this.moveWidgets(dropWidgetName, dropTargetName, dropPlacement);\n            this.saveDashboard(widgetStrings);\n        },\n\n        async changeView(view) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Edit view changed to ${view}`,\n            });\n            set(this, 'dashboardView', view);\n            set(this, 'loading', true);\n            await this.loadDashboard();\n            set(this, 'loading', false);\n        },\n\n        refresh() {\n            this.analytics.trackEvent({ category: 'Dashboard', action: 'Refresh' });\n            // prevent fast clicking\n            debounce(this, this.refreshDebounce, 1000, true);\n        },\n        async moveWidget(widget, direction) {\n            this.disableScrolling(); // we have to disable scrolling because if we unshift objects to the top of the array the page jumps to the top without smooth scrolling\n\n            let widgets = this.widget_columns.mobile;\n            let currentWidget = widgets.findBy('name', widget.name);\n            let currentIndex = widgets.indexOf(currentWidget);\n\n            if (direction == 'up' && currentIndex - 1 >= 0) {\n                widgets.removeObject(currentWidget);\n                widgets.insertAt(currentIndex - 1, currentWidget);\n            } else if (direction == 'down' && currentIndex + 1 < widgets.length) {\n                widgets.removeObject(currentWidget);\n                widgets.insertAt(currentIndex + 1, currentWidget);\n            } else if (direction == 'bottom') {\n                widgets.removeObject(currentWidget);\n                widgets.pushObject(currentWidget);\n            } else if (direction == 'top') {\n                widgets.removeObject(currentWidget);\n                widgets.unshiftObject(currentWidget);\n            }\n\n            let widgetNames = widgets.reduce((acc, widget) => {\n                acc.push(widget.name);\n                return acc;\n            }, []);\n\n            this.saveDashboard({ mobile: widgetNames.join() });\n\n            next(this, () => {\n                this.enableScrolling(); // we can enable scrolling once again so we can smoothly scroll to correct position\n                this.evented.storeEvent('insert', 'dashboard', null);\n                let element = document.querySelector(\"[data-name='\" + widget.name + \"']\");\n                element.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'nearest' });\n            });\n        },\n\n        async addWidget(widget) {\n            let widgets = this.widget_columns.mobile;\n            let widgetNames = widgets.reduce((acc, widget) => {\n                acc.push(widget.name);\n                return acc;\n            }, []);\n            widgetNames.unshiftObject(widget.name);\n            await this.saveDashboard({ mobile: widgetNames.join() });\n            this.evented.storeEvent('insert', 'dashboard', null);\n        },\n    },\n\n    async doTheseBeforeRender() {\n        set(this, 'loading', true);\n\n        //check if 'user has saldo on' info is not found form localstorage or if userSettings has different value than localstorage\n        //if so, refresh userSettings\n        //why? because first time user logs in dashboard is rendered before user-settings service has checked if user has saldos\n        if (this.localstorage.getItem('saldosOn') === null || (this.userSettings.hasSaldos != this.localstorage.getItem('saldosOn'))) {\n            await this.userSettings.setUserSettings();\n        }\n\n        set(this, 'loading', false);\n    },\n\n    refreshDebounce() {\n        get(this, 'evented').resumed({ force: true });\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n\n        set(this, 'refreshTime', new Date()); // this is shown in template\n    },\n\n    autorefresh() {\n        if (this.isDestroyed) return;\n\n        // stop autorefreshing after 3 days .. just for case\n        if (get(this, 'evented').getOntime() > 3 * 24 * 3600) return;\n\n        get(this, 'evented').resumed({ force: true });\n        later(this, this.autorefresh, 30 * 60 * 1000); // 30 minutes\n    },\n\n    async loadDashboard() {\n        let dashboards;\n        try {\n            dashboards = this.isMobileOrEditingMobile\n                ? await this.store.query('dashboard-mobile', {})\n                : await this.store.query('dashboard', {});\n        } catch (error) {\n            // no need for actions .. we just use what is in ls\n            return;\n        }\n\n        if (this.isMobileOrEditingMobile) {\n            // dashboard is different in database and localstorage .. update localstorage and inform widget_columns to reload\n            if (\n                JSON.stringify(this.localstorage.getItem('dashboard-mobile')) !==\n                JSON.stringify(get(dashboards, 'firstObject') || null)\n            ) {\n                if (get(dashboards, 'firstObject'))\n                    this.localstorage.setItem('dashboard-mobile', get(dashboards, 'firstObject'));\n                else this.localstorage.removeItem('dashboard-mobile');\n            }\n        } else {\n            // dashboard is different in database and localstorage .. update localstorage and inform widget_columns to reload\n            if (\n                JSON.stringify(this.localstorage.getItem('dashboard')) !==\n                JSON.stringify(get(dashboards, 'firstObject') || null)\n            ) {\n                if (get(dashboards, 'firstObject'))\n                    this.localstorage.setItem('dashboard', get(dashboards, 'firstObject'));\n                else this.localstorage.removeItem('dashboard');\n            }\n        }\n        this.notifyPropertyChange('widget_columns');\n    },\n\n    async saveDashboard(dashboard) {\n        this.isMobileOrEditingMobile\n            ? this.localstorage.setItem('dashboard-mobile', dashboard)\n            : this.localstorage.setItem('dashboard', dashboard);\n        this.notifyPropertyChange('widget_columns');\n        const storeDashboards = this.isMobileOrEditingMobile\n            ? this.store.peekAll('dashboard-mobile')\n            : this.store.peekAll('dashboard');\n        let storeBoard = '';\n        if (get(storeDashboards, 'length') > 0) {\n            storeBoard = get(storeDashboards, 'firstObject');\n        } else {\n            storeBoard = this.isMobileOrEditingMobile\n                ? this.store.createRecord('dashboard-mobile', dashboard)\n                : this.store.createRecord('dashboard', dashboard);\n        }\n        setProperties(storeBoard, dashboard);\n        return storeBoard.save();\n    },\n\n    moveWidgets(move, moveAt = false, dropPlacement) {\n        let lsWidgets = this.localstorage.getItem('dashboard');\n        let mobileLsWidgets = this.localstorage.getItem('dashboard-mobile');\n        let widgets = {};\n        if (this.isMobileOrEditingMobile && mobileLsWidgets) {\n            widgets = {\n                mobile: this.mapWidgetsAndFilter(mobileLsWidgets.mobile),\n            };\n        } else if (!this.isMobileOrEditingMobile && lsWidgets) {\n            widgets = {\n                left: this.mapWidgetsAndFilter(lsWidgets.left),\n                center: this.mapWidgetsAndFilter(lsWidgets.center),\n                right: this.mapWidgetsAndFilter(lsWidgets.right),\n            };\n        } else {\n            widgets = this.default_widgets;\n        }\n\n        if (this.isMobileOrEditingMobile)\n            return {\n                mobile: this.mapWidgetsToString(\n                    widgets.mobile,\n                    move,\n                    moveAt,\n                    'mobile',\n                    dropPlacement,\n                ),\n            };\n        return {\n            left: this.mapWidgetsToString(widgets.left, move, moveAt, 'left', dropPlacement),\n            center: this.mapWidgetsToString(widgets.center, move, moveAt, 'center', dropPlacement),\n            right: this.mapWidgetsToString(widgets.right, move, moveAt, 'right', dropPlacement),\n        };\n    },\n\n    mapWidgetsToString(widgets, move, moveAt, column, dropPlacement) {\n        let widgetNames = widgets.map((item) => item.name);\n        if (moveAt === column) {\n            if (widgetNames.includes(move)) {\n                widgetNames = widgetNames.filter((item) => item !== move);\n            }\n            widgetNames.push(move);\n            return widgetNames.join(',');\n        }\n\n        let indexMove = widgetNames.indexOf(move);\n        if (indexMove > -1) {\n            widgetNames.splice(indexMove, 1);\n        }\n\n        let index1 = widgetNames.indexOf(moveAt);\n        if (index1 > -1) {\n            if (dropPlacement === 'above') {\n                widgetNames.splice(index1, 0, move);\n            } else {\n                widgetNames.splice(index1 + 1, 0, move);\n            }\n        }\n\n        return widgetNames.join(',');\n    },\n\n    mapWidgetsAndFilter(str) {\n        if (!str) return [];\n        return str\n            .split(',')\n            .map((name) => this.widgets.find((item) => item.name === name))\n            .filter((item) => item);\n    },\n\n    disableScrolling() {\n        var x = window.scrollX;\n        var y = window.scrollY;\n        window.onscroll = function () {\n            window.scrollTo(x, y);\n        };\n    },\n    enableScrolling() {\n        window.onscroll = function () {};\n    },\n    position(index, count) {\n        if (index === 0) return 'top';\n        if (index === count - 1) return 'bottom';\n        return 'center';\n    },\n});\n","import Component from '@ember/component';\nimport { set } from '@ember/object';\n\nexport default Component.extend({\n    classNameBindings: ['dragClass'],\n    dragClass: 'inactive',\n\n    dragLeave(event) {\n        event.preventDefault();\n        set(this, 'dragClass', 'inactive');\n    },\n\n    dragOver(event) {\n        event.preventDefault();\n        set(this, 'dragClass', 'active');\n    },\n\n    dragEnter(event) {\n        event.preventDefault();\n    },\n\n    drop(event) {\n        set(this, 'dragClass', 'inactive');\n\n        const data = event.dataTransfer.getData('text/data');\n        if (!data) return;\n        this.dropped(this.name, data, event);\n    },\n});\n","import Component from '@ember/component';\nimport { set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport pdfExport from 'tt4/mixins/pdf-export';\n\nexport default Component.extend(pdfExport, {\n    intl: service(),\n    cordova: service('own-cordova-service'),\n    error: service(),\n\n    actions: {\n        async exportPdf() {\n            set(this, 'showLoader', true);\n            try {\n                await this.createPdf('download');\n            } catch (error) {\n                this.error.notify(error);\n            } finally {\n                set(this, 'showLoader', false);\n            }\n        },\n    },\n\n    async createPdf(mode = 'download') {\n        let showColumns = this.headers;\n        let element = await this.createPdfTableElement(\n            showColumns,\n            this.data,\n            this.translated_headers,\n        );\n        let elements = [element];\n        let file = await this.createPdfFromElements(elements, mode, '', 8);\n\n        if (window.cordova) {\n            this.cordova.openFile(file, 'application/pdf');\n        }\n        return file;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"sxRSo1Ut\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"export_button\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"exportPdf\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PDF-2Filled\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/export/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nexport default class GanttComponent extends Component {\n    get styleNamespace() {\n        return podNames['dash-board/gantt'];\n    }\n\n    get dates() {\n        const [start, end] = this.args.range.split('_');\n        let dates = [];\n        let date = start;\n        while (moment(date) < moment(end)) {\n            dates = [...dates, date];\n            date = moment(date).add(1, 'days');\n        }\n        dates = [...dates, moment(end)];\n        return dates;\n    }\n\n    get hideHeaders() {\n        let containerWidth = document.getElementsByClassName('data-container')[0].offsetWidth;\n        return (this.dates.length >= 14 && containerWidth < 320) || this.dates.length > 14\n            ? true\n            : false;\n    }\n}\n","import Component from '@glimmer/component';\nimport { get } from '@ember/object';\n\nexport default class RowCellComponent extends Component {\n    get isWeekend() {\n        const weekday = moment(this.args.date).format('d');\n        if (weekday == 0 || weekday == 6) return true;\n        return false;\n    }\n\n    get colorString() {\n        let row = this.args.row.firstObject;\n        let string = this.args.colorFields.reduce((acc, current) => {\n            acc += get(row, current);\n            return acc;\n        }, '');\n\n        return string;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"FRcCvzHJ\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"@row\\\",\\\"@popupFields\\\",\\\"@hideHeaders\\\"],\\\"statements\\\":[[7,\\\"td\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"isWeekend\\\"]],\\\"weekend\\\"],null],\\\" \\\",[28,\\\"if\\\",[[23,4,[]],\\\"hideHeaders\\\"],null]]]],[11,\\\"style\\\",[28,\\\"if\\\",[[23,2,[]],[28,\\\"concat\\\",[\\\"background-color:\\\",[28,\\\"randomize-color\\\",[[24,[\\\"colorString\\\"]]],null]],null]],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@delay\\\",\\\"@tooltipClass\\\",\\\"@side\\\"],[\\\"400\\\",\\\"help-tooltip\\\",\\\"right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"get\\\",[[23,2,[\\\"firstObject\\\"]],[28,\\\"concat\\\",[[23,1,[]]],null]],null],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/gantt/row-cell/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"zkY2ABuT\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"columndate\\\",\\\"date\\\",\\\"@colorFields\\\",\\\"@popupFields\\\",\\\"@data\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,6,[]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"data-container\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"th\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"hideHeaders\\\"]],\\\"hideHeaders\\\"],null]]]],[8],[1,[28,\\\"moment-format\\\",[[23,3,[]],\\\"D.M\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,6,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"dash-board/gantt/row-cell\\\",[],[[\\\"@date\\\",\\\"@row\\\",\\\"@colorFields\\\",\\\"@hideHeaders\\\",\\\"@popupFields\\\"],[[23,2,[]],[28,\\\"get\\\",[[23,1,[\\\"rows\\\"]],[28,\\\"moment-format\\\",[[23,2,[]],\\\"YYYY-MM-DD\\\"],null]],null],[23,4,[]],[23,0,[\\\"hideHeaders\\\"]],[23,5,[]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"mainHeader\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"no-data\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"icon move move-Search\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.no-content\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/gantt/template.hbs\"}});","import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    flags: service(),\n    classNames: ['widget-library'],\n    classNameBindings: ['nonFixedMode:non-fixed-mode'],\n    // if flag 'top-header-menu' is true then we add non-fixed-mode class to the component\n    nonFixedMode: computed(function () {\n        return this.flags.test('top-header-menu');\n    }),\n});\n","import Component from '@ember/component';\nimport { get } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nexport default Component.extend({\n    classNames: ['widget-thumbnail'],\n    attributeBindings: ['draggable', 'data-name'],\n    draggable: true,\n    'data-name': alias('widget.name'),\n    dragStart(event) {\n        event.dataTransfer.setData('text/data', get(this, 'widget.name'));\n        window.Tt4.draggedWidgetType = 'widgetIcon';\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"WZ+en7XU\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"p\\\",true],[8],[1,[24,[\\\"widget\\\",\\\"header\\\"]],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"p\\\",true],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"icon move move-\\\",[24,[\\\"widget\\\",\\\"icon\\\"]]]]],[8],[9],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/library/library-widget/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"cDC5Oz4a\",\"block\":\"{\\\"symbols\\\":[\\\"widget\\\",\\\"widget\\\",\\\"@addWidget\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"isMobile\\\"]]],null,{\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"dashboard.widget_library.title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"widgets\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"dash-board/library/library-widget\\\",null,[[\\\"widget\\\"],[[23,2,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\" \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"mobile-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"dashboard.widget_library.title\\\"],null],false],[9],[0,\\\"\\\\n \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mobile-widgets-library\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"widgets\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"widgets\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",false],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,3,[]],[23,1,[]]],null]]],[8],[1,[28,\\\"dash-board/library/library-widget\\\",null,[[\\\"widget\\\"],[[23,1,[]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-library\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-EmptyBox\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"all-widgets-added-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"dashboard.widget_library.all_widgets_added\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/library/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    intl: service(),\n\n    translated_headers: computed(function () {\n        let headers = get(this, 'headers');\n        return headers.map((header) =>\n            this.intl.t('widget.' + get(this, 'form') + '.table-header.' + header),\n        );\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"HzFS4fZZ\",\"block\":\"{\\\"symbols\\\":[\\\"rowData\\\",\\\"row\\\",\\\"header\\\",\\\"translated_header\\\",\\\"@rowClicked\\\"],\\\"statements\\\":[[7,\\\"table\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"translated_headers\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"th\\\",true],[8],[1,[23,4,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"await\\\",[[24,[\\\"data\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[11,\\\"onclick\\\",[28,\\\"if\\\",[[23,5,[]],[28,\\\"fn\\\",[[23,5,[]],[23,2,[]]],null]],null]],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[23,2,[\\\"class\\\"]],[23,2,[\\\"class\\\"]]],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"headers\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[]],\\\"status\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[28,\\\"get\\\",[[23,2,[]],[23,3,[]]],null],\\\"open\\\"],null],\\\"open-status\\\",\\\"approved-status\\\"],null]],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.\\\",[24,[\\\"form\\\"]],\\\".status.\\\",[28,\\\"get\\\",[[23,2,[]],[23,3,[]]],null]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[]],\\\"hours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"if\\\",[[28,\\\"get\\\",[[23,2,[]],[23,3,[]]],null],[28,\\\"format-hours\\\",[[28,\\\"get\\\",[[23,2,[]],[23,3,[]]],null]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"get\\\",[[23,2,[]],[23,3,[]]],null],false],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[3]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"no-rows-cell\\\"],[11,\\\"colspan\\\",[23,0,[\\\"headers\\\",\\\"length\\\"]]],[8],[1,[28,\\\"t\\\",[\\\"general.no_rows_found\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/table/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"dR/UYuov\",\"block\":\"{\\\"symbols\\\":[\\\"widget\\\",\\\"widget\\\",\\\"widget\\\",\\\"widget\\\",\\\"index\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"buttons flex-column align-center pt-3\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"gui\\\",\\\"isMobileComputed\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"query\\\"],[\\\"btn btn-xs btn-secondary dashboard-top-button\\\",[28,\\\"hash\\\",null,[[\\\"wizard\\\"],[\\\"dashboard-info-wizard\\\"]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"dashboard.show_info\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-xs btn-secondary dashboard-top-button\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggleEdit\\\"],null]],[8],[4,\\\"if\\\",[[24,[\\\"editingDashboard\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"dashboard.edit_mode_off\\\"],null],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"dashboard.edit_mode_on\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"gui\\\",\\\"isMobileComputed\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"editingDashboard\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"radio-buttons\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"browser\\\",[24,[\\\"dashboardView\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeView\\\",\\\"browser\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"dashboard.edit_mode_browser\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"mobile\\\",[24,[\\\"dashboardView\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeView\\\",\\\"mobile\\\"],null]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"t\\\",[\\\"dashboard.edit_mode_mobile\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"refresh\\\"],null]],[10,\\\"class\\\",\\\"btn btn-secondary refresh\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-refresh\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pl-3\\\"],[8],[1,[28,\\\"t\\\",[\\\"dashboard.last_refresh\\\"],[[\\\"time\\\"],[[28,\\\"moment-format\\\",[[24,[\\\"refreshTime\\\"]],\\\"HH:mm:ss\\\"],null]]]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime||presence\\\",\\\"!userlevel=1\\\",\\\"flag.dashboard-project\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pl-3\\\"],[8],[1,[28,\\\"collector/field-comp\\\",[[23,0,[\\\"projectField\\\"]]],[[\\\"change\\\",\\\"value\\\",\\\"usePowerDropdown\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"projectFilterChange\\\"],null],[24,[\\\"project\\\"]],true]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"dashboard-container \\\",[28,\\\"if\\\",[[24,[\\\"editingDashboard\\\"]],[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"dashboardView\\\"]],\\\"browser\\\"],null],\\\"edit-mode-br\\\",\\\"edit-mode-mb\\\"],null]],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"editingDashboard\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"dashboard-widget-library-container \\\",[28,\\\"unless\\\",[[28,\\\"flag\\\",[\\\"top-header-menu\\\"],null],\\\"dashboard-widget-library-absolute-position\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"dash-board/library\\\",null,[[\\\"widgets\\\",\\\"isMobile\\\",\\\"addWidget\\\",\\\"libraryUpdated\\\"],[[24,[\\\"hidden_widgets\\\"]],[24,[\\\"gui\\\",\\\"isMobileComputed\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addWidget\\\"],null],[24,[\\\"libraryUpdated\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dashboard-widgets-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isMobileOrEditingMobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"column\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"widget_columns\\\",\\\"mobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"concat\\\",[\\\"dash-board/widgets/\\\",[23,4,[\\\"name\\\"]]],null]],[[\\\"onremove\\\",\\\"dropped\\\",\\\"name\\\",\\\"editing\\\",\\\"icon\\\",\\\"header\\\",\\\"position\\\",\\\"moveWidget\\\",\\\"project\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"onremove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null],[23,4,[\\\"name\\\"]],[24,[\\\"editingDashboard\\\"]],[23,4,[\\\"icon\\\"]],[23,4,[\\\"header\\\"]],[28,\\\"call\\\",[[28,\\\"fn\\\",[[23,0,[\\\"position\\\"]],[23,5,[]],[24,[\\\"widget_columns\\\",\\\"mobile\\\",\\\"length\\\"]]],null]],null],[28,\\\"action\\\",[[23,0,[]],\\\"moveWidget\\\"],null],[24,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4,5]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"dash-board/empty-drop-zone\\\",null,[[\\\"name\\\",\\\"dropped\\\"],[\\\"mobile\\\",[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"column left-column\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"widget_columns\\\",\\\"left\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"concat\\\",[\\\"dash-board/widgets/\\\",[23,3,[\\\"name\\\"]]],null]],[[\\\"onremove\\\",\\\"dropped\\\",\\\"name\\\",\\\"editing\\\",\\\"icon\\\",\\\"header\\\",\\\"project\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"onremove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null],[23,3,[\\\"name\\\"]],[24,[\\\"editingDashboard\\\"]],[23,3,[\\\"icon\\\"]],[23,3,[\\\"header\\\"]],[24,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"dash-board/empty-drop-zone\\\",null,[[\\\"name\\\",\\\"dropped\\\"],[\\\"left\\\",[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"column center-column\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"widget_columns\\\",\\\"center\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"concat\\\",[\\\"dash-board/widgets/\\\",[23,2,[\\\"name\\\"]]],null]],[[\\\"onremove\\\",\\\"dropped\\\",\\\"name\\\",\\\"editing\\\",\\\"icon\\\",\\\"header\\\",\\\"project\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"onremove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null],[23,2,[\\\"name\\\"]],[24,[\\\"editingDashboard\\\"]],[23,2,[\\\"icon\\\"]],[23,2,[\\\"header\\\"]],[24,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"dash-board/empty-drop-zone\\\",null,[[\\\"name\\\",\\\"dropped\\\"],[\\\"center\\\",[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"column right-column\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"widget_columns\\\",\\\"right\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"concat\\\",[\\\"dash-board/widgets/\\\",[23,1,[\\\"name\\\"]]],null]],[[\\\"onremove\\\",\\\"dropped\\\",\\\"name\\\",\\\"editing\\\",\\\"icon\\\",\\\"header\\\",\\\"project\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"onremove\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null],[23,1,[\\\"name\\\"]],[24,[\\\"editingDashboard\\\"]],[23,1,[\\\"icon\\\"]],[23,1,[\\\"header\\\"]],[24,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"dash-board/empty-drop-zone\\\",null,[[\\\"name\\\",\\\"dropped\\\"],[\\\"right\\\",[28,\\\"action\\\",[[23,0,[]],\\\"widgetDropped\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\n\n/*\nShow skeleton component on widget first load, and normal loader on subsequent loads\nJust dump this component in the first line of the widget's template\n\n{{dash-board/widget-spinner promise=promise skeletonRows=<number>}}\n\nIf you have more than one promise use the promise-all helper\n{{dash-board/widget-spinner promise=(promise-all promise1 promise2 promise3)}}\n\n*/\n\nexport default Component.extend({\n    skeletonRows: 4,\n    firstLoad: true,\n\n    async didUpdateAttrs() {\n        if (!get(this, 'firstLoad')) return;\n        try {\n            await get(this, 'promise');\n            set(this, 'firstLoad', false);\n        } catch (e) {\n            set(this, 'firstLoad', false);\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"ia5qbe6k\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"promise\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"firstLoad\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"skeleton-component\\\",[],[[\\\"@rows\\\",\\\"@loader\\\"],[[22,\\\"skeletonRows\\\"],true]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"loader-icon\\\",[],[[\\\"@class\\\"],[\\\"component_overlay_loader\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widget-spinner/template.hbs\"}});","import Component from '@ember/component';\nimport { set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment-timezone';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n\n    init() {\n        this._super(...arguments);\n        this.headers = ['date', 'absencetype', 'status'];\n        this.form = 'absence';\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n    },\n\n    didInsertElement() {\n        set(this, 'data', this.getAbsences());\n    },\n\n    didDestroyElement() {\n        this._super(...arguments);\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'abcense') set(this, 'data', this.getAbsences());\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        set(this, 'data', this.getAbsences());\n    },\n\n    async getAbsences() {\n        if (!this.Collector.testNeedsOne('abcense')) return [];\n        let absences = await this.store.query('abcense', {\n            startdate_enddate:\n                moment().format('YYYY-MM-DD') + '_' + moment().add(2, 'years').format('YYYY-MM-DD'),\n            order: 'startdate,enddate',\n            user: this.session.currentUser.id,\n            sideload: ['abcensetype.name'],\n        });\n        let arr = [];\n\n        absences.forEach((data) => {\n            let enddate =\n                data.startdate !== data.enddate ? ' - ' + moment(data.enddate).format('L') : '';\n            arr.pushObject({\n                date: moment(data.startdate).format('L') + enddate,\n                absencetype: data.abcensetype.name,\n                status: data.status,\n            });\n        });\n        return arr;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"ZSY0Ys6/\",\"block\":\"{\\\"symbols\\\":[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,1,[]],[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[24,[\\\"data\\\"]],3]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/table\\\",null,[[\\\"data\\\",\\\"headers\\\",\\\"form\\\"],[[24,[\\\"data\\\"]],[24,[\\\"headers\\\"]],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/absence/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { action, set } from '@ember/object';\nimport { isEmpty } from '@ember/utils';\n\nexport default class AbsenteesComponent extends Component {\n    @service store;\n    @service intl;\n    @service('collector-service') Collector;\n    @service localstorage;\n    @service evented;\n    @service analytics;\n\n    @tracked data;\n    @tracked dateRange;\n    @tracked currentSalaryPeriod;\n    @tracked layout;\n    @tracked ganttData;\n    @tracked dateRanges;\n\n    get styleNamespace() {\n        return podNames['dash-board/widgets/absentees'];\n    }\n\n    get colorFields() {\n        return ['abcensetype.id'];\n    }\n\n    get popupFields() {\n        return ['dateRange', 'userName', 'absencetype', 'description'];\n    }\n\n    get absenceTypes() {\n        let field = this.Collector.field('abcense', 'abcensetype');\n        if (field) {\n            field.value = this.abcensetype;\n            field.prompt = 'general.all_absencetypes';\n        }\n        return field;\n    }\n\n    async getDateRanges() {\n        if (!this.currentSalaryPeriod) await this.setCurrentPeriod();\n        return [\n            {\n                key: 'this_week',\n                id:\n                    moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('isoWeek').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.this_week'),\n            },\n            {\n                key: 'this_and_next_week',\n                id:\n                    moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().add(1, 'week').endOf('isoWeek').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.this_and_next_week'),\n            },\n            {\n                key: 'this_month',\n                id:\n                    moment().startOf('month').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('month').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.this_month'),\n            },\n            {\n                key: 'next_month',\n                id:\n                    moment().add(1, 'month').startOf('month').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().add(1, 'month').endOf('month').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.next_month'),\n            },\n            {\n                key: 'this_salaryperiod',\n                id: this.currentSalaryPeriod,\n                name: this.intl.t('general.period.this_salaryperiod'),\n            },\n        ];\n    }\n\n    // Fetch absences for all users in batches\n    async fetchAllAbsencesInBatches() {\n        const allAbsences = [];\n        const limit = 100; // Fetch 100 records at a time\n        let offset = 0;\n        let hasMore = true;\n\n        while (hasMore) {\n            let batch = await this.store.query('abcense', {\n                startdate_enddate: this.dateRanges.filterBy('key', this.dateRange.key)[0]['id'],\n                order: 'startdate,enddate',\n                abcensetype: this.abcensetype,\n                sideload: true,\n                limit: limit,\n                offset: offset,\n            });\n\n            allAbsences.push(...batch.toArray());\n\n            if (batch.length < limit) {\n                hasMore = false;\n            } else {\n                offset += limit;\n            }\n        }\n\n        return allAbsences;\n    }\n\n    async getAbsences() {\n        if (!this.dateRanges) await this.setDateRanges();\n\n        const absences = await this.fetchAllAbsencesInBatches();\n        const formattedData = this.formatAbsences(absences);\n        this.ganttData = this.absencesByuser(formattedData);\n        return formattedData;\n    }\n\n    async setCurrentPeriod() {\n        let salaryPeriods = this.store.peekAll('wage-period');\n        if (isEmpty(salaryPeriods)) salaryPeriods = await this.store.findAll('wage-period');\n        if (isEmpty(salaryPeriods))\n            return (this.currentSalaryPeriod =\n                moment().startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('month').format('YYYY-MM-DD'));\n\n        const currentDate = moment().format('YYYY-MM-DD');\n        const currentPeriods = salaryPeriods.filter((period) => {\n            return period.period_start_date <= currentDate && period.period_end_date >= currentDate;\n        });\n        if (isEmpty(currentPeriods))\n            return (this.currentSalaryPeriod =\n                moment().startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('month').format('YYYY-MM-DD'));\n        // Just set first that is found\n        this.currentSalaryPeriod =\n            currentPeriods[0].period_start_date + '_' + currentPeriods[0].period_end_date;\n    }\n\n    constructor() {\n        super(...arguments);\n        this.data = this.getAbsences();\n        this.form = 'absence';\n        this.headers = ['userName', 'absencetype', 'start', 'end'];\n        this.layout = this.getFilter('absentee_widget_layout', 'table');\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n    }\n\n    @action\n    filterchanged(value, field) {\n        if (field && typeof field === 'string') {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Change ${field}`,\n                label: 'Absentees widget',\n            });\n            if (!value) set(this, field, null);\n            else set(this, field, value.id);\n        }\n        this.data = this.getAbsences();\n    }\n\n    @action\n    changeDate(value) {\n        if (value) this.dateRange = value;\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: `Change date range`,\n            label: 'Absentees widget',\n        });\n        this.setFilterToLS('absentee_widget_filter', this.dateRange);\n        this.data = this.getAbsences();\n    }\n\n    @action\n    changeLayout(layout) {\n        this.layout = layout;\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: `Use ${layout} layout`,\n            label: 'Absentees widget',\n        });\n        this.setFilterToLS('absentee_widget_layout', layout);\n    }\n\n    async setDateRanges() {\n        this.dateRanges = await this.getDateRanges();\n        let lsRange = this.getFilter('absentee_widget_filter', this.dateRanges[0]);\n        if (!lsRange.key) this.dateRange = this.dateRanges[0];\n        else this.dateRange = lsRange;\n    }\n\n    setFilterToLS(key, filter) {\n        this.localstorage.setItem(key, filter);\n    }\n\n    getFilter(key, defaultValue) {\n        let LSFilter = this.localstorage.getItem(key);\n        return LSFilter ? LSFilter : defaultValue;\n    }\n\n    formatAbsences(absences) {\n        return absences.map((item) => {\n            set(item, 'start', moment(item.startdate).format('L'));\n            set(item, 'end', moment(item.enddate).format('L'));\n            set(\n                item,\n                'dateRange',\n                moment(item.startdate).format('DD.MM') +\n                    ' - ' +\n                    moment(item.enddate).format('DD.MM'),\n            );\n            set(item, 'absencetype', item.abcensetype.name);\n            set(item, 'userName', item.user.firstname + ' ' + item.user.lastname);\n            return item;\n        });\n    }\n\n    absencesByuser(absences) {\n        let users = absences.reduce((acc, item) => {\n            let arr = [...acc, item.user];\n            return [...new Set(arr)];\n        }, []);\n\n        return users.map((user) => {\n            let arr = [];\n            let rows = this.formatganttData(absences.filterBy('user.id', user.id));\n            arr.rows = rows;\n            arr.mainHeader = user.firstname + ' ' + user.lastname;\n            return arr;\n        });\n    }\n\n    formatganttData(rows) {\n        return rows.reduce((acc, item) => {\n            const date = item.startdate;\n            if (!acc[date]) acc[date] = [];\n\n            if (item.enddate) {\n                let i = 1;\n                const moment_date = moment(date);\n                const diff = moment(item.enddate).diff(moment_date, 'day');\n                acc[date].push(item);\n                while (i <= diff) {\n                    const new_date = moment_date.add(1, 'day').format('YYYY-MM-DD');\n                    if (!acc[new_date]) acc[new_date] = [];\n                    acc[new_date].push(item);\n                    i++;\n                }\n            } else {\n                acc[date].push(item);\n            }\n            return acc;\n        }, {});\n    }\n    willDestroy() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n    }\n\n    onStoreEvent(params) {\n        if (params.type === 'abcense') this.data = this.getAbsences();\n    }\n\n    async onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        if (this.currentSalaryPeriod) {\n            // If dashboard is open for a long time, we have to update current period if its end date is past current date\n            const splitCurrent = this.currentSalaryPeriod.split('_');\n            if (splitCurrent[1] < moment().format('YYYY-MM-DD')) await this.setCurrentPeriod();\n        }\n        this.dateRanges = await this.getDateRanges();\n        if (this.dateRange.key) {\n            this.setFilterToLS(\n                'absentee_widget_filter',\n                this.dateRanges.filterBy('key', this.dateRange.key)[0],\n            );\n            this.dateRange = this.dateRanges.filterBy('key', this.dateRange.key)[0];\n        } else {\n            this.dateRange = this.dateRanges[0];\n        }\n        this.data = this.getAbsences();\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"yKfax/G0\",\"block\":\"{\\\"symbols\\\":[\\\"option\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@tableLayout\\\",\\\"@changeLayout\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,0,[\\\"layout\\\"]],[23,0,[\\\"changeLayout\\\"]],[23,8,[]],[23,9,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"dash-board/widget-spinner\\\",[],[[\\\"@promise\\\",\\\"@skeletonRows\\\"],[[23,0,[\\\"data\\\"]],4]]],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"fixed-flex-filters\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"collector/field-comp\\\",[],[[\\\"@field\\\",\\\"@change\\\",\\\"@_class\\\"],[[23,0,[\\\"absenceTypes\\\"]],[23,0,[\\\"filterchanged\\\"]],\\\"\\\"]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"power-select\\\",[],[[\\\"@selected\\\",\\\"@options\\\",\\\"@onChange\\\"],[[23,0,[\\\"dateRange\\\"]],[23,0,[\\\"dateRanges\\\"]],[23,0,[\\\"changeDate\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"layout\\\"]],\\\"grid\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"dash-board/gantt\\\",[],[[\\\"@data\\\",\\\"@range\\\",\\\"@colorFields\\\",\\\"@popupFields\\\"],[[23,0,[\\\"ganttData\\\"]],[23,0,[\\\"dateRange\\\",\\\"id\\\"]],[23,0,[\\\"colorFields\\\"]],[23,0,[\\\"popupFields\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"dash-board/table\\\",[],[[\\\"@data\\\",\\\"@headers\\\",\\\"@form\\\"],[[23,0,[\\\"data\\\"]],[23,0,[\\\"headers\\\"]],[23,0,[\\\"form\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/absentees/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n    ttapi: service(),\n    intl: service(),\n    localstorage: service(),\n    router: service(),\n    collector: service('collector-service'),\n    notifications: service(),\n    analytics: service(),\n    user: null,\n    project: null,\n    worktimegroup: null,\n    showOkAlso: true,\n\n    tableLayout: computed(function () {\n        if (this.localstorage.getItem('anomalitywidget-layout')) {\n            return this.localstorage.getItem('anomalitywidget-layout');\n        } else {\n            return 'report';\n        }\n    }),\n\n    missingWorktimesPerUser: computed('anomalities', async function () {\n        const anomalities = this.anomalities.findBy('type', 'missing_worktimes');\n        let data = anomalities.data;\n        const userIds = this.unique(data.mapBy('user'));\n        const users = anomalities.users;\n        return userIds.map((userid) => {\n            const user = users.findBy('id', userid);\n            const missing_dates = data\n                .filter((item) => item.user === userid)\n                .map((item) => item.date + ' 00:00:00Z');\n            return {\n                userid: userid,\n                name: `${user.firstname} ${user.lastname}`,\n                missing_dates: missing_dates,\n                email: user.email,\n                phone: user.phone,\n            };\n        });\n    }),\n\n    saldo: computed('anomalities', function () {\n        return get(this, 'anomalities').findBy('type', 'saldo').data;\n    }),\n\n    taxman_errors: computed('anomalities', function () {\n        return get(this, 'anomalities').findBy('type', 'taxman_errors').data;\n    }),\n\n    init() {\n        this._super();\n        const promise = this.loadAnomalities();\n        set(this, 'promise', promise);\n\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n        this.evented.on('dashboardProjectChanged', this, 'dashboardProjectChanged');\n    },\n\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n        this.evented.off('dashboardProjectChanged', this, 'dashboardProjectChanged');\n    },\n\n    actions: {\n        /* general actions */\n        setEditableSetting(setting) {\n            set(this, 'showSettings', false);\n            set(this, 'currentSetting', setting);\n        },\n        closeCurrentSetting() {\n            set(this, 'showSettings', true);\n            set(this, 'currentSetting', false);\n        },\n        changeLayout(layout) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Use ${layout} layout`,\n                label: 'Anomalities widget',\n            });\n            this.localstorage.setItem('anomalitywidget-layout', layout);\n            //set(this,'tableLayout',layout)\n            this.notifyPropertyChange('tableLayout');\n        },\n        gotoAnomality(anomality) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Binoculars clicked for ${anomality.type}`,\n                label: 'Anomalities widget',\n            });\n            if (anomality.link) {\n                this.router.transitionTo(anomality.link.route, {\n                    queryParams: anomality.link.query_params,\n                });\n            } else {\n                set(this, 'showAnomality', anomality.type);\n                set(this, 'anomalityValue', anomality.value);\n            }\n        },\n\n        /* settings-actions */\n        async saveSettings() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Save settings',\n                label: 'Anomalities widget',\n            });\n            set(this, 'showSettings', false);\n            set(this, 'promise', this.saveSettingsAndReloadAnomalities());\n        },\n\n        closeSettings() {\n            set(this, 'showSettings', false);\n            set(this, 'promise', this.loadAnomalities());\n        },\n\n        /* missing-worktimes actions */\n        async toggleCheckAll(check) {\n            let data = await this.missingWorktimesPerUser;\n            data.map((row) => set(row, 'checked', check));\n        },\n        async toggleCheckRow(row) {\n            set(row, 'checked', row.checked ? false : true);\n\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Show ${row.type} set ${row.checked}`,\n                label: 'Anomalities widget',\n            });\n\n            let missingWorktimes = await this.missingWorktimesPerUser;\n            if (!missingWorktimes) return;\n            set(this, 'allRowsChecked', missingWorktimes.isEvery('checked', true));\n        },\n\n        async sendNotificationToCheckedUsers() {\n            let users = [...(await this.missingWorktimesPerUser)];\n            let sendTo = users.filter((user) => user.checked);\n            let sendBy = this.getSendBySetting('missing_worktimes', 'push');\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Send notification to selected users by ${sendBy}`,\n                label: 'Anomalities widget',\n            });\n            sendTo.forEach((user) => {\n                let content = this.getNoticeContent(user);\n                this.sendNotice(sendBy, user, content);\n            });\n        },\n\n        showSettings() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Open settings',\n                label: 'Anomalities widget',\n            });\n            set(this, 'showSettings', true);\n        },\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime' || params.type === 'abcense')\n            set(this, 'promise', this.loadAnomalities());\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        set(this, 'promise', this.loadAnomalities());\n    },\n\n    getNoticeContent(user) {\n        let message = this.intl.t('widget.anomalities.missing-worktimes.noticeContent') + '\\n';\n        user.missing_dates.map((date) => (message += moment(date).format('DD.MM.') + ' '));\n        return message;\n    },\n\n    sendNotice(sendBy, user, content) {\n        let title = this.intl.t('widget.anomalities.missing-worktimes.noticeTitle');\n        switch (sendBy) {\n            case 'email':\n                if (user.email)\n                    return this.sender(\n                        'sendEmail',\n                        { email: user.email, title: title, content: content },\n                        user.name,\n                    );\n                return this.notifications.error(\n                    this.intl.t('widget.anomalities.missing-worktimes.noEmailAddress', {\n                        user: user.name,\n                    }),\n                    {\n                        autoClear: true,\n                    },\n                );\n\n            case 'sms':\n                if (user.phone)\n                    return this.sender(\n                        'sendSms',\n                        {\n                            phone: user.phone,\n                            messageid: 'anomalities_notice',\n                            language: moment.locale(),\n                            values: {\n                                days: user.missing_dates\n                                    .map((date) => moment(date).format('DD.MM.'))\n                                    .join(','),\n                            },\n                        },\n                        user.name,\n                    );\n                return this.notifications.error(\n                    this.intl.t('widget.anomalities.missing-worktimes.noPhone', {\n                        user: user.name,\n                    }),\n                    {\n                        autoClear: true,\n                    },\n                );\n\n            case 'push':\n                return this.sender(\n                    'push',\n                    { userids: JSON.stringify([user.userid]), title: title, message: content },\n                    user.name,\n                );\n        }\n    },\n    async sender(url, data, user) {\n        try {\n            await this.ttapi.request(url, {\n                dataType: 'text',\n                data: data,\n                method: 'post',\n            });\n        } catch (e) {\n            return this.notifications.error(e, { autoClear: true });\n        }\n        this.notifications.success(\n            this.intl.t('widget.anomalities.missing-worktimes.noticeSent', { user: user }),\n            {\n                autoClear: true,\n            },\n        );\n    },\n\n    async loadAnomalities() {\n        let c = this.collector;\n        const settings = await this.store.findAll('widget-anomalies-setting');\n\n        if (settings.findBy('name', 'show-ok'))\n            set(this, 'showOkAlso', settings.findBy('name', 'show-ok').value);\n\n        let arr = c.needsOfArray([\n            {\n                type: 'missing_worktimes',\n                needs: ['worktime'],\n                hasSettings: true,\n                checked: this.isChecked('missing_worktimes', settings),\n            },\n            {\n                type: 'saldo',\n                needs: ['products.saldo'],\n                checked: this.isChecked('saldo', settings),\n            },\n            {\n                type: 'ending_passes',\n                needs: ['products.orientations||products.orientations_new', 'orientation@access'],\n                hasSettings: true,\n                checked: this.isChecked('ending_passes', settings),\n                link: {\n                    route: 'orientations.passes',\n                    query_params: {\n                        order: 'pass_end-',\n                        'pass_end:pass_end': this.getDaterange('ending_passes'),\n                        'ori_site': this.project,\n                    },\n                },\n            },\n            {\n                type: 'unapproved_worktimes',\n                needs: ['worktime', 'worktime@access'],\n                hasSettings: true,\n                checked: this.isChecked('unapproved_worktimes', settings),\n                link: {\n                    route: 'timetracker.worktime-list',\n                    query_params: {\n                        date: this.getDaterange('unapproved_worktimes'),\n                        status: 'open',\n                        project: this.project,\n                    },\n                },\n            },\n            {\n                type: 'taxman_errors',\n                needs: [\n                    'export_taxman',\n                    '!userlevel=1?',\n                    'export_contact_person@access',\n                    'urakkaraportointi@access',\n                ],\n                checked: this.isChecked('taxman_errors', settings),\n            },\n            {\n                type: 'abcense',\n                needs: ['abcense'],\n                hasSettings: true,\n                checked: this.isChecked('abcense', settings),\n                link: {\n                    route: 'abcenses',\n                    query_params: { startdate: this.getDaterange('abcense'), status: 'open' },\n                },\n            },\n        ]);\n\n        const queryParams = ['show=' + arr.filterBy('checked', true).mapBy('type').join(',')];\n        if (arr.findBy('type', 'unapproved_worktimes'))\n            queryParams.push(\n                'unapproved_worktimes_date=' + this.getDaterange('unapproved_worktimes'),\n            );\n        if (arr.findBy('type', 'ending_passes'))\n            queryParams.push('ending_passes_date=' + this.getDaterange('ending_passes'));\n        if (arr.findBy('type', 'missing_worktimes')) {\n            queryParams.push('missing_worktimes_date=' + this.getDaterange('missing_worktimes'));\n            const setting = this.store\n                .peekAll('widget-anomalies-setting')\n                .findBy('name', 'missing_worktimes');\n            if (setting && setting.value.hideUserIds)\n                queryParams.push('missing_worktimes_hide=' + setting.value.hideUserIds.join(','));\n        }\n        if (arr.findBy('type', 'abcense'))\n            queryParams.push('abcense=' + this.getDaterange('abcense'));\n\n        if (this.project) queryParams.push('project=' + this.project);\n\n        set(this, 'anomalitiesSettings', arr);\n        // get values from backend\n        const response = await this.ttapi.request('api/anomalies?' + queryParams.join('&'));\n        for (let type in response) Object.assign(arr.findBy('type', type), response[type]);\n\n        set(this, 'anomalities', arr);\n    },\n\n    getDaterange(type) {\n        const setting = this.store.peekAll('widget-anomalies-setting').findBy('name', type);\n        const defaults = {\n            unapproved_worktimes: 7,\n            ending_passes: 7,\n            missing_worktimes: 'current_week',\n            abcense: 1,\n        };\n        const dateRange = setting ? setting.value.selectedDateRange : defaults[type];\n\n        if (type === 'ending_passes')\n            return (\n                moment().format('YYYY-MM-DD') +\n                '_' +\n                moment().add(dateRange, 'days').format('YYYY-MM-DD')\n            );\n        if (type === 'abcense')\n            return (\n                moment().subtract(3, 'month').format('YYYY-MM-DD') +\n                '_' +\n                moment().add(dateRange, 'months').format('YYYY-MM-DD')\n            );\n\n        if (dateRange === 'current_week')\n            return (\n                moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                '_' +\n                moment().format('YYYY-MM-DD')\n            );\n        if (dateRange === 'last_week')\n            return (\n                moment().startOf('isoWeek').subtract(1, 'week').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('isoWeek').subtract(1, 'week').format('YYYY-MM-DD')\n            );\n        if (dateRange === 'last_2_weeks')\n            return (\n                moment().startOf('isoWeek').subtract(2, 'week').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('isoWeek').subtract(1, 'week').format('YYYY-MM-DD')\n            );\n        if (dateRange === 'current_month')\n            return (\n                moment().startOf('month').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD')\n            );\n        if (dateRange === 'last_month')\n            return (\n                moment().subtract(1, 'month').startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().subtract(1, 'month').endOf('month').format('YYYY-MM-DD')\n            );\n\n        // default style is to calculate days backwards\n        return (\n            moment().subtract(dateRange, 'days').format('YYYY-MM-DD') +\n            '_' +\n            moment().format('YYYY-MM-DD')\n        );\n    },\n\n    getSendBySetting(type, defaultValue = null) {\n        const setting = this.store.peekAll('widget-anomalies-setting').findBy('name', type);\n        // if setting is never saved .. default to push\n        return setting ? setting.value.sendBy : defaultValue;\n    },\n\n    isChecked(name, settings) {\n        if (!settings.findBy('name', 'show-anomalies')) return true; // default is always on\n        return settings.findBy('name', 'show-anomalies').value.includes(name);\n    },\n\n    async saveSettingsAndReloadAnomalities() {\n        let record = this.store\n            .peekAll('widget-anomalies-setting')\n            .findBy('name', 'show-anomalies');\n        if (!record)\n            record = this.store.createRecord('widget-anomalies-setting', {\n                name: 'show-anomalies',\n            });\n        set(record, 'value', this.anomalitiesSettings.filterBy('checked', true).mapBy('type'));\n        await record.save();\n\n        let recordShowOk = this.store.peekAll('widget-anomalies-setting').findBy('name', 'show-ok');\n        if (!recordShowOk)\n            recordShowOk = this.store.createRecord('widget-anomalies-setting', { name: 'show-ok' });\n        set(recordShowOk, 'value', this.showOkAlso);\n        await recordShowOk.save();\n\n        await this.loadAnomalities();\n    },\n\n    unique(array) {\n        // https://stackoverflow.com/questions/1960473/get-all-unique-values-in-a-javascript-array-remove-duplicates\n        return [...new Set(array)];\n    },\n\n    dashboardProjectChanged(params) {\n        set(this, 'promise', this.loadAnomalities());\n        set(this, 'projectName', params.project?.name);\n    },\n});\n","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n    ttapi: service(),\n    error: service(),\n    intl: service(),\n    localstorage: service(),\n\n    init() {\n        this._super();\n        let forms = [];\n        if (this.Collector.testNeedsOne('worktime')) forms.push('worktime');\n        if (this.Collector.testNeedsOne('abcense')) forms.push('abcense');\n        this.forms = forms;\n        let own_settings = {}; //this.settings.findBy('type','missing_worktimes').settings;\n        if (!own_settings || !own_settings.unSelectedUsers) {\n            own_settings = { unSelectedUsers: [] };\n        }\n\n        set(this, 'own_settings', own_settings);\n        //set(this, 'settings', await this.data.settings);\n        //console.log(this.settings);\n    },\n\n    actions: {\n        check(row) {\n            this.toggleCheckRow(row);\n        },\n        checkAll() {\n            this.isChecked ? this.toggleCheckAll(false) : this.toggleCheckAll(true);\n            this.toggleProperty('isChecked');\n        },\n\n        sendNotificationToCheckedUsers() {\n            this.sendNotificationToCheckedUsers();\n        },\n        showAddModal(user, date) {\n            set(this, 'selectedUser', user);\n            set(this, 'selectedDate', date);\n            set(this, 'showAddModal', true);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"bjvMKM+J\",\"block\":\"{\\\"symbols\\\":[\\\"table\\\",\\\"user\\\",\\\"date\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"promise\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"centered-table\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"isChecked\\\"]],\\\"move move-CheckedCheckbox\\\",\\\"move move-UncheckedCheckbox\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"checkAll\\\"]],[8],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.user\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.date\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[23,0,[\\\"users\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,2,[\\\"userid\\\"]],[24,[\\\"own_settings\\\",\\\"unSelectedUsers\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[28,\\\"if\\\",[[23,2,[\\\"checked\\\"]],\\\"move move-CheckedCheckbox\\\",\\\"move move-UncheckedCheckbox\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"check\\\",[23,2,[]]]],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[\\\"missing_dates\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"missing-day\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showAddModal\\\",[23,2,[\\\"userid\\\"]],[23,3,[]]]],[8],[1,[28,\\\"moment-format\\\",[[23,3,[]],\\\"D.M.\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendNotificationToCheckedUsers\\\"]],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.send_to_selected\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[23,0,[\\\"showAddModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@header\\\",\\\"@close\\\"],[[28,\\\"moment-format\\\",[[23,0,[\\\"selectedDate\\\"]],\\\"dd DD[.]MM[.]\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"showAddModal\\\"]]],[[\\\"value\\\"],[null]]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"workday-summary\\\",[],[[\\\"@user\\\",\\\"@day\\\",\\\"@date\\\",\\\"@addForms\\\",\\\"@autoclose\\\",\\\"@close\\\"],[[23,0,[\\\"selectedUser\\\"]],[28,\\\"moment-format\\\",[[23,0,[\\\"selectedDate\\\"]],\\\"YYYY-MM-DD\\\"],null],[23,0,[\\\"selectedDate\\\"]],[23,0,[\\\"forms\\\"]],true,[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"showAddModal\\\"]]],[[\\\"value\\\"],[null]]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"edit\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"add\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/missing-worktimes/template.hbs\"}});","import Component from '@ember/component';\nimport { set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n\n    init() {\n        this._super();\n        this.load();\n    },\n\n    async load() {\n        await this.store.query('user', { id: this.data.mapBy('saldos.userid').join(','), limit: 'all' });\n\n        const over = [];\n        const under = [];\n        for (let row of this.data) {\n            const user = this.store.peekRecord('user', row.saldos.userid);\n            const add = {\n                name: `${user.firstname} ${user.lastname}`,\n                saldo: this.toHoursAndMinutes(parseInt(row.saldos.saldo, 10)),\n            };\n            if (parseInt(row.saldo, 10) > 0) over.push(add);\n            else under.push(add);\n        }\n\n        set(this, 'over', over);\n        set(this, 'under', under);\n    },\n\n    toHoursAndMinutes(minutes) {\n        const negative = minutes < 0;\n        minutes = Math.abs(minutes);\n        let hours = Math.floor(minutes / 60);\n        let minutesLeft = Math.floor(minutes - hours * 60);\n\n        return (\n            (negative ? '-' : '') + hours + ':' + (minutesLeft < 10 ? '0' : '') + minutesLeft + 'h'\n        );\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"r5t8wPg0\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\",\\\"user\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"saldo-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"over\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.over-max-saldo\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"table\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.user\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.saldo-anomality\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"over\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"saldo\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,0,[\\\"under\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.under-min-saldo\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"table\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.user\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.saldo-anomality\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"under\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"saldo\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/saldo/template.hbs\"}});","import Component from '@ember/component';\nimport settingsDateRange from '../common/common';\n\nexport default Component.extend(settingsDateRange('abcense'));\n","export default Ember.HTMLBars.template({\"id\":\"nGGohr0e\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"widget.anomalities.notify_time\\\"],null],false],[0,\\\"\\\\n\\\"],[5,\\\"drop-down\\\",[],[[\\\"@options\\\",\\\"@value\\\",\\\"@prompt\\\"],[[22,\\\"dateRanges\\\"],[22,\\\"selectedDateRange\\\"],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general.select.worktimegroup\\\"],null],\\\" \\\",[28,\\\"t\\\",[\\\"widget.anomalities.notify_time\\\"],null]],null]]]],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg save\\\"],[12,\\\"disabled\\\",[22,\\\"isDisabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"selectedDateRange\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/settings/abcense/template.hbs\"}});","import { set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default function settingsDateRange(page) {\n    return {\n        intl: service(),\n        store: service(),\n        analytics: service(),\n\n        // 7pv, 14,pv, 30pv, 60pv, 90pv\n        dateRanges: computed(function () {\n            if (page === 'abcense') {\n                return [\n                    { id: '1', name: '1 ' + this.intl.t('general.months') },\n                    { id: '2', name: '2 ' + this.intl.t('general.months') },\n                    { id: '3', name: '3 ' + this.intl.t('general.months') },\n                    { id: '6', name: '6 ' + this.intl.t('general.months') },\n                    { id: '12', name: '12 ' + this.intl.t('general.months') },\n                ];\n            }\n\n            return [\n                { id: '7', name: '7 ' + this.intl.t('general.days') },\n                { id: '14', name: '14 ' + this.intl.t('general.days') },\n                { id: '30', name: '30 ' + this.intl.t('general.days') },\n                { id: '60', name: '60 ' + this.intl.t('general.days') },\n                { id: '90', name: '90 ' + this.intl.t('general.days') },\n            ];\n        }),\n        init() {\n            this._super();\n            let record = this.store.peekAll('widget-anomalies-setting').findBy('name', page);\n            if (!record) {\n                let storeValue = {\n                    name: page,\n                };\n\n                if (page === 'abcense') {\n                    storeValue.value = { selectedDateRange: 1 };\n                } else {\n                    storeValue.value = { selectedDateRange: 7 };\n                }\n                record = this.store.createRecord('widget-anomalies-setting', storeValue);\n            }\n            set(this, 'record', record);\n            set(this, 'selectedDateRange', this.record.value.selectedDateRange);\n        },\n        actions: {\n            save(selectedDateRange) {\n                this.analytics.trackEvent({\n                    category: 'Dashboard',\n                    action: `Change date range setting for ${page} to ${selectedDateRange}`,\n                    label: 'Anomalities widget',\n                });\n                set(this, 'record.value.selectedDateRange', selectedDateRange);\n                this.record.save();\n                this.cancel();\n            },\n            cancel() {\n                this.cancel();\n            },\n        },\n    };\n}\n","import Component from '@ember/component';\nimport { set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    analytics: service(),\n\n    settingsComponent: computed('currentSetting', function () {\n        return 'dash-board/widgets/anomalities/settings/' + this.currentSetting.replace('_', '-');\n    }),\n\n    actions: {\n        check(setting) {\n            this.toggleCheckRow(setting);\n        },\n        saveSettings() {\n            set(this, 'currentSetting', false);\n        },\n        closeModal() {\n            set(this, 'currentSetting', false);\n        },\n        setCurrentSetting(setting) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Open ${setting} settings`,\n                label: 'Anomalities widget',\n            });\n            set(this, 'currentSetting', setting);\n        },\n    },\n});\n","import Component from '@ember/component';\nimport settingsDateRange from '../common/common';\n\nexport default Component.extend(settingsDateRange('ending_passes'));\n","export default Ember.HTMLBars.template({\"id\":\"A/4W+oMd\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"widget.anomalities.notify_time\\\"],null],false],[0,\\\"\\\\n\\\"],[5,\\\"drop-down\\\",[],[[\\\"@options\\\",\\\"@value\\\",\\\"@prompt\\\"],[[22,\\\"dateRanges\\\"],[22,\\\"selectedDateRange\\\"],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general.select.worktimegroup\\\"],null],\\\" \\\",[28,\\\"t\\\",[\\\"widget.anomalities.notify_time\\\"],null]],null]]]],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg save\\\"],[12,\\\"disabled\\\",[22,\\\"isDisabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"selectedDateRange\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/settings/ending-passes/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\n\nexport default Component.extend({\n    intl: service(),\n    store: service(),\n    analytics: service(),\n    linkIds: computed.mapBy('hideUsers', 'id'),\n\n    dateRanges: computed(function () {\n        return [\n            { id: 'current_week', name: this.intl.t('widget.anomalities.current_week') },\n            { id: 'last_week', name: this.intl.t('widget.anomalities.last_week') },\n            { id: 'last_2_weeks', name: this.intl.t('widget.anomalities.last_2_weeks') },\n            { id: 'current_month', name: this.intl.t('widget.anomalities.current_month') },\n            { id: 'last_month', name: this.intl.t('widget.anomalities.last_month') },\n        ];\n    }),\n    sendMethods: computed(function () {\n        return [\n            { id: 'sms', name: this.intl.t('widget.anomalities.sms') },\n            { id: 'push', name: this.intl.t('widget.anomalities.push') },\n            { id: 'email', name: this.intl.t('widget.anomalities.email') },\n        ];\n    }),\n\n    showUsers: computed('users', 'hideUserIds', 'hideUserIds.length', function () {\n        return this.users.filter((user) => !this.hideUserIds.includes(user.id));\n    }),\n\n    hiddenUsers: computed('users', 'hideUserIds', 'hideUserIds.length', function () {\n        return this.users.filter((user) => this.hideUserIds.includes(user.id));\n    }),\n\n    init() {\n        this._super();\n        let record = this.store\n            .peekAll('widget-anomalies-setting')\n            .findBy('name', 'missing_worktimes');\n        if (!record)\n            record = this.store.createRecord('widget-anomalies-setting', {\n                name: 'missing_worktimes',\n                value: { selectedDateRange: 'current_week', hideUserIds: [], sendBy: 'push' },\n            });\n        set(this, 'record', record);\n        set(this, 'selectedDateRange', this.record.value.selectedDateRange);\n        set(this, 'hideUserIds', A(this.record.value.hideUserIds || []));\n        set(this, 'sendBy', this.record.value.sendBy);\n\n        set(this, 'users', []);\n        this.loadUsers();\n    },\n\n    actions: {\n        save() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Missing worktimes settings saved',\n                label: 'Anomalities widget',\n            });\n\n            set(this, 'record.value.selectedDateRange', this.selectedDateRange);\n            set(this, 'record.value.hideUserIds', this.hideUserIds);\n            set(this, 'record.value.sendBy', this.sendBy);\n\n            this.record.save();\n            this.cancel();\n        },\n        cancel() {\n            this.cancel();\n        },\n        searchChanged(value) {\n            this.loadUsers(typeof value == 'string' ? value : null);\n        },\n        selectUser(user) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'User selected to be shown on missing worktimes',\n                label: 'Anomalities widget',\n            });\n            this.hideUserIds.removeObject(user.id);\n        },\n        deselectUser(user) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'User selected to be hidden on missing worktimes',\n                label: 'Anomalities widget',\n            });\n            this.hideUserIds.pushObject(user.id);\n        },\n    },\n\n    async loadUsers(term) {\n        let params = {};\n        if (term) params.q = term;\n        set(this, 'users', await get(this, 'store').query('user', params));\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"wHKLsVUX\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"row\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.date_range\\\"],null],false],[0,\\\"\\\\n\\\"],[5,\\\"drop-down\\\",[],[[\\\"@options\\\",\\\"@value\\\",\\\"@prompt\\\"],[[22,\\\"dateRanges\\\"],[22,\\\"selectedDateRange\\\"],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general.select.worktimegroup\\\"],null],\\\" \\\",[28,\\\"t\\\",[\\\"worksitediary.date_range\\\"],null]],null]]]],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"widget.anomalities.send_method\\\"],null],false],[0,\\\"\\\\n\\\"],[5,\\\"drop-down\\\",[],[[\\\"@options\\\",\\\"@value\\\",\\\"@prompt\\\"],[[22,\\\"sendMethods\\\"],[22,\\\"sendBy\\\"],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general.select.worktimegroup\\\"],null],\\\" \\\",[28,\\\"t\\\",[\\\"widget.anomalities.send_method\\\"],null]],null]]]],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"user-selector\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"first-list\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"list-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.selected_users\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"showUsers\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"list-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"deselectUser\\\",[23,2,[]]]],[8],[1,[23,2,[\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"middle-svg\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"13\\\"],[10,\\\"height\\\",\\\"28\\\"],[10,\\\"viewBox\\\",\\\"0 0 13 28\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"g\\\",true],[10,\\\"id\\\",\\\"Polygon_12\\\"],[10,\\\"data-name\\\",\\\"Polygon 12\\\"],[10,\\\"transform\\\",\\\"translate(0 28) rotate(-90)\\\"],[10,\\\"fill\\\",\\\"#737373\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M 26.72672462463379 12.5 L 1.273276209831238 12.5 L 14 0.6823278665542603 L 26.72672462463379 12.5 Z\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M 14 1.364636421203613 L 2.546531677246094 12 L 25.45346832275391 12 L 14 1.364636421203613 M 14 0 L 28 13 L 0 13 L 14 0 Z\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[10,\\\"fill\\\",\\\"#707070\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"13\\\"],[10,\\\"height\\\",\\\"28\\\"],[10,\\\"viewBox\\\",\\\"0 0 13 28\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"g\\\",true],[10,\\\"id\\\",\\\"Polygon_11\\\"],[10,\\\"data-name\\\",\\\"Polygon 11\\\"],[10,\\\"transform\\\",\\\"translate(13) rotate(90)\\\"],[10,\\\"fill\\\",\\\"#737373\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M 26.72672462463379 12.5 L 1.273276209831238 12.5 L 14 0.6823278665542603 L 26.72672462463379 12.5 Z\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M 14 1.364636421203613 L 2.546531677246094 12 L 25.45346832275391 12 L 14 1.364636421203613 M 14 0 L 28 13 L 0 13 L 14 0 Z\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[10,\\\"fill\\\",\\\"#707070\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"second-list\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"list-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.unselected_users\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"hiddenUsers\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"list-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"selectUser\\\",[23,1,[]]]],[8],[1,[23,1,[\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"search-box-div\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"search-box\\\",null,[[\\\"value\\\",\\\"change\\\",\\\"classes\\\"],[[24,[\\\"searchvalue\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"searchChanged\\\"],null],\\\"form-control add-field\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg save\\\"],[12,\\\"disabled\\\",[22,\\\"isDisabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/settings/missing-worktimes/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"IJAowNXq\",\"block\":\"{\\\"symbols\\\":[\\\"setting\\\",\\\"@save\\\"],\\\"statements\\\":[[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"centered-table\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.setting\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[23,0,[\\\"data\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[28,\\\"if\\\",[[23,1,[\\\"checked\\\"]],\\\"move move-CheckedCheckbox\\\",\\\"move move-UncheckedCheckbox\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"check\\\",[23,1,[]]]],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.anomalities.\\\",[23,1,[\\\"type\\\"]]],null]],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"hasSettings\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setCurrentSetting\\\",[23,1,[\\\"type\\\"]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"no-rows-cell\\\"],[10,\\\"colspan\\\",\\\"3\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.no_rows_found\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"onToggle\\\",\\\"theme\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[\\\"mt-4\\\",[24,[\\\"showOkAlso\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showOkAlso\\\"]]],null]],null],\\\"light\\\",[28,\\\"t\\\",[\\\"widget.anomalities.show_ok_also\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentSetting\\\"]]],null,{\\\"statements\\\":[[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"currentSetting\\\"]]],null],false],null],[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.anomalities.settings-header-\\\",[24,[\\\"currentSetting\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,0,[\\\"settingsComponent\\\"]],[],[[\\\"@settings\\\",\\\"@data\\\",\\\"@saveSettings\\\",\\\"@cancel\\\"],[[23,0,[\\\"settings\\\"]],[23,0,[\\\"data\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveSettings\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"edit-button mt-4\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],[23,2,[]]]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/settings/template.hbs\"}});","import Component from '@ember/component';\nimport settingsDateRange from '../common/common';\n\nexport default Component.extend(settingsDateRange('unapproved_worktimes'));\n","export default Ember.HTMLBars.template({\"id\":\"BFcG5Uhy\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.date_range\\\"],null],false],[0,\\\"\\\\n\\\"],[5,\\\"drop-down\\\",[],[[\\\"@options\\\",\\\"@value\\\",\\\"@prompt\\\"],[[22,\\\"dateRanges\\\"],[22,\\\"selectedDateRange\\\"],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general.select.worktimegroup\\\"],null],\\\" \\\",[28,\\\"t\\\",[\\\"worksitediary.date_range\\\"],null]],null]]]],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg save\\\"],[12,\\\"disabled\\\",[22,\\\"isDisabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"selectedDateRange\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/settings/unapproved-worktimes/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n    ttapi: service(),\n    error: service(),\n    intl: service(),\n    localstorage: service(),\n\n    init() {\n        this._super();\n        let forms = [];\n        if (this.Collector.testNeedsOne('worktime')) forms.push('worktime');\n        if (this.Collector.testNeedsOne('abcense')) forms.push('abcense');\n        this.forms = forms;\n\n        this.loadProjects();\n    },\n\n    actions: {\n        check(row) {\n            this.toggleCheckRow(row);\n        },\n        checkAll() {\n            if (this.isChecked) {\n                this.toggleCheckAll('missing_worktimes', false);\n            } else {\n                this.toggleCheckAll('missing_worktimes', true);\n            }\n            this.toggleProperty('isChecked');\n        },\n\n        sendNotificationToCheckedUsers() {\n            this.sendNotificationToCheckedUsers();\n        },\n        showAddModal(user, date) {\n            set(this, 'selectedUser', user);\n            set(this, 'selectedDate', date);\n            set(this, 'showAddModal', true);\n        },\n    },\n\n    async loadProjects() {\n        const projectSums = {};\n        this.data.forEach((item) => {\n            const message = JSON.parse(item.message);\n            if (!message.project) return;\n            if (projectSums[message.project]) projectSums[message.project]++;\n            else projectSums[message.project] = 1;\n        });\n\n        const projects = await this.store.query('project', {\n            id: Object.keys(projectSums).join(','),\n        });\n\n        const errorsByProject = Object.keys(projectSums).map((projectid) => {\n            return {\n                project: { name: projects.findBy('id', projectid).name, id: projectid },\n                errors: projectSums[projectid],\n            };\n        });\n\n        set(this, 'projects', errorsByProject);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"6DlMRl33\",\"block\":\"{\\\"symbols\\\":[\\\"project\\\"],\\\"statements\\\":[[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"centered-table\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.worksite\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.errors\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"projects\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"errors\\\"]],false],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"td\\\",true],[8],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-primary\\\",\\\"projects.edit.taxmanerrors\\\",[23,1,[\\\"project\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"widget.anomalities.link-to-report\\\"],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/taxman-errors/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"2HD+BuUw\",\"block\":\"{\\\"symbols\\\":[\\\"anomality\\\",\\\"anomality\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@tableLayout\\\",\\\"@changeLayout\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,0,[\\\"tableLayout\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeLayout\\\"],null],[23,9,[]],[23,10,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[23,0,[\\\"promise\\\"]],3]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"tableLayout\\\"]],\\\"grid\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"anomality-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"anomalities\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"and\\\",[[23,2,[\\\"checked\\\"]],[28,\\\"not\\\",[[24,[\\\"showOkAlso\\\"]]],null],[28,\\\"not\\\",[[28,\\\"eq\\\",[[23,2,[\\\"value\\\"]],\\\"0\\\"],null]],null]],null],[28,\\\"and\\\",[[23,2,[\\\"checked\\\"]],[24,[\\\"showOkAlso\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"anomality-item \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,2,[\\\"value\\\"]],\\\"0\\\"],null],\\\"ok-item\\\",\\\"warning-item\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"gotoAnomality\\\",[23,2,[]]]],[8],[0,\\\"\\\\n\\\"],[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"anomality-item-content\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h2\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"value\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[23,2,[\\\"value\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,0,false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.anomalities.\\\",[23,2,[\\\"type\\\"]]],null]],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"centered-table\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.anomality\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.amount\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"anomalities\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"and\\\",[[23,1,[\\\"checked\\\"]],[28,\\\"not\\\",[[24,[\\\"showOkAlso\\\"]]],null],[28,\\\"not\\\",[[28,\\\"eq\\\",[[23,1,[\\\"value\\\"]],\\\"0\\\"],null]],null]],null],[28,\\\"and\\\",[[23,1,[\\\"checked\\\"]],[24,[\\\"showOkAlso\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[\\\"value\\\"]],\\\"0\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Error\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"filteredByProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.anomalities.\\\",[23,1,[\\\"type\\\"]],\\\".filtered\\\"],null]],[[\\\"project\\\"],[[24,[\\\"projectName\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.anomalities.\\\",[23,1,[\\\"type\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[23,1,[\\\"value\\\"]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-View\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"gotoAnomality\\\",[23,1,[]]]],[8],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"no-rows-cell\\\"],[10,\\\"colspan\\\",\\\"4\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.no_rows_found\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"showSettings\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeSettings\\\"],null],[28,\\\"t\\\",[\\\"widget.anomalities.settings-header\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"dash-board/widgets/anomalities/settings\\\",[],[[\\\"@save\\\",\\\"@data\\\",\\\"@toggleCheckRow\\\",\\\"@showOkAlso\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"saveSettings\\\"],null],[23,0,[\\\"anomalitiesSettings\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCheckRow\\\"],null],[23,0,[\\\"showOkAlso\\\"]]]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAnomality\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAnomality\\\"]]],null],false],null],[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.anomalities.\\\",[24,[\\\"showAnomality\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"anomalityValue\\\"]],\\\"0\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"report-placeholder\\\",null,[[\\\"customHeader\\\",\\\"searchIcon\\\",\\\"searchInfoText\\\"],[[28,\\\"t\\\",[\\\"widget.anomalities.no_rows\\\"],null],true,[28,\\\"t\\\",[\\\"widget.anomalities.no_rows.infoText\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showAnomality\\\"]],\\\"missing_worktimes\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"dash-board/widgets/anomalities/missing-worktimes\\\",[],[[\\\"@users\\\",\\\"@settings\\\",\\\"@toggleCheckAll\\\",\\\"@toggleCheckRow\\\",\\\"@isChecked\\\",\\\"@sendNotificationToCheckedUsers\\\",\\\"@promise\\\"],[[23,0,[\\\"missingWorktimesPerUser\\\"]],[23,0,[\\\"settings\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCheckAll\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCheckRow\\\"],null],[23,0,[\\\"allRowsChecked\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"sendNotificationToCheckedUsers\\\"],null],[23,0,[\\\"promise\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showAnomality\\\"]],\\\"saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"dash-board/widgets/anomalities/saldo\\\",[],[[\\\"@data\\\"],[[23,0,[\\\"saldo\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showAnomality\\\"]],\\\"taxman_errors\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"dash-board/widgets/anomalities/taxman-errors\\\",[],[[\\\"@data\\\"],[[23,0,[\\\"taxman_errors\\\"]]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"edit-button mt-4\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showSettings\\\"]],[8],[1,[28,\\\"t\\\",[\\\"widget.anomalities.settings\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/anomalities/template.hbs\"}});","import Component from '@ember/component';\nimport { set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    session: service(),\n    evented: service(),\n    ttapi: service(),\n    intl: service(),\n    collector: service('collector-service'),\n    flags: service(),\n\n    init() {\n        this._super(...arguments);\n        this.headers = ['name', 'hours'];\n        this.form = 'bank';\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n    },\n\n    didInsertElement() {\n        set(this, 'data', this.getData());\n    },\n\n    didDestroyElement() {\n        this._super(...arguments);\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'abcense' || params.type === 'worktime')\n            set(this, 'data', this.getData());\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        set(this, 'data', this.getData());\n    },\n    async getData() {\n        let data = await this.ttapi.request(\n            '/api/getBankHours?user=' + this.session.currentUser.id,\n        );\n        return data;\n    }\n});\n","export default Ember.HTMLBars.template({\"id\":\"U7mSTPUe\",\"block\":\"{\\\"symbols\\\":[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,1,[]],[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[28,\\\"promise-all\\\",[[24,[\\\"data\\\"]],[24,[\\\"headers\\\"]]],null],3]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/table\\\",null,[[\\\"data\\\",\\\"headers\\\",\\\"form\\\"],[[24,[\\\"data\\\"]],[24,[\\\"headers\\\"]],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/bank/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n    intl: service(),\n    dialogs: service(),\n    analytics: service(),\n\n    didReceiveAttrs() {\n        set(this, 'help', this.store.findAll('help'));\n    },\n\n    actions: {\n        save(row) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Save instruction',\n                label: 'custom-help widget',\n            });\n\n            if (row.type === 'link' && !row.url) return;\n\n            row.save();\n            set(this, 'editRow', null);\n        },\n\n        create() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Create new clicked',\n                label: 'custom-help widget',\n            });\n            set(this, 'editRow', this.store.createRecord('help', {}));\n        },\n\n        async remove(row) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Remove instruction',\n                label: 'custom-help widget',\n            });\n            if (await this.dialogs.confirm(this.intl.t('general.remove_row'))) row.destroyRecord();\n        },\n\n        edit(row) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Edit instruction',\n                label: 'custom-help widget',\n            });\n            set(this, 'show', null);\n            set(this, 'editRow', row);\n        },\n\n        open(row) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Open instruction',\n                label: 'custom-help widget',\n            });\n            if (row.type === 'link') window.open(this.addProtocol(row.url), '_blank');\n            else set(this, 'show', row);\n        },\n\n        close() {\n            if (get(this, 'editRow.isNew')) this.editRow.deleteRecord();\n            set(this, 'editRow', null);\n        },\n    },\n\n    addProtocol(url) {\n        if (!url.startsWith('http://') && !url.startsWith('https://')) return 'https://' + url;\n        return url;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"AlkyZoMQ\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,9,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[23,0,[\\\"help\\\"]],2]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"help-container\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[23,0,[\\\"help\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"help\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"open\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"header\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[8],[1,[23,1,[\\\"header\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    (\\\"],[1,[28,\\\"t\\\",[\\\"general.empty\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[\\\"type\\\"]],\\\"link\\\"],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-external-link\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"show-on-hover pull-right move move-Delete\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,1,[]]]],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"show-on-hover pull-right move move-Pencil\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"edit\\\",[23,1,[]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"report-placeholder\\\",null,[[\\\"customHeader\\\"],[[28,\\\"t\\\",[\\\"report.placeholder.custom-help\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"create\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"close\\\",\\\"header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"show\\\"]]],null],null],null],[24,[\\\"show\\\",\\\"header\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-container\\\"],[8],[1,[24,[\\\"show\\\",\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"show\\\"]]],null],null]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"editRow\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"editRow\\\",\\\"header\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"bootstrap-field\\\",null,[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"widget.help.header\\\"],null]]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control\\\",[24,[\\\"editRow\\\",\\\"header\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"bootstrap-field\\\",null,[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"widget.help.type\\\"],null]]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-button-group-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"btn-m flex-button-group-item-small flex-button-modal \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]],\\\"link\\\"],null],\\\"flex-button-group-item-small-selected\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]]],null],\\\"link\\\"]],[8],[0,\\\"\\\\n                    \\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]],\\\"link\\\"],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark radio-button-checkbox hidden-xs hidden-sm\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"widget.help.link\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"btn-m flex-button-group-item-small flex-button-modal \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]],\\\"text\\\"],null],\\\"flex-button-group-item-small-selected\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]]],null],\\\"text\\\"]],[8],[0,\\\"\\\\n                    \\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]],\\\"text\\\"],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark radio-button-checkbox hidden-xs hidden-sm\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"widget.help.text\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]],\\\"link\\\"],null]],null,{\\\"statements\\\":[[4,\\\"bootstrap-field\\\",null,[[\\\"text\\\",\\\"error\\\",\\\"mandatory\\\"],[[28,\\\"t\\\",[\\\"widget.help.url\\\"],null],[28,\\\"unless\\\",[[24,[\\\"editRow\\\",\\\"url\\\"]],[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null]],null],true]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control\\\",[24,[\\\"editRow\\\",\\\"url\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"editRow\\\",\\\"type\\\"]],\\\"text\\\"],null]],null,{\\\"statements\\\":[[4,\\\"bootstrap-field\\\",null,[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"widget.help.content\\\"],null]]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"class\\\",\\\"rows\\\",\\\"value\\\"],[\\\"form-control\\\",8,[24,[\\\"editRow\\\",\\\"text\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"editRow\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/custom-help/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment-timezone';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n    flags: service(),\n    totalDaysLeft: 0,\n\n    init() {\n        this._super();\n        this.headers = ['year', 'days', 'daysleft'];\n        if (this.Collector.testNeedsOne('modules.holiday_pay') && this.flags.test('holidaypay_v2'))\n            this.headers.push('holidayPays');\n        this.form = 'holiday';\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n    },\n\n    didInsertElement() {\n        set(this, 'data', this.getHolidays());\n    },\n\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'abcense') set(this, 'data', this.getHolidays());\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        set(this, 'data', this.getHolidays());\n    },\n\n    async getHolidays() {\n        if (this.flags.test('holiday-checker')) return this.newGetHolidays();\n\n        if (!this.Collector.testNeedsOne('abcense')) return [];\n\n        let holidaySeasonChangeDate = moment().startOf('year').add({ days: 1, months: 4 });\n        let holidaySeason = moment().isSameOrAfter(holidaySeasonChangeDate, 'day')\n            ? moment().year() + 1\n            : moment().year();\n        // If it's currently 1.1 - 1.4, dont't show newest holiday season yet\n        const isStartOfYear = moment().isBetween(\n            moment().startOf('year'),\n            moment().startOf('year').add({ months: 3 }),\n            'day',\n        );\n\n        let arr = [];\n        let years = [];\n\n        if (!isStartOfYear) years.pushObject(holidaySeason + '-05-02');\n        years.pushObject(holidaySeason - 1 + '-05-02');\n        years.pushObject(holidaySeason - 2 + '-05-02');\n        years.pushObject(holidaySeason - 3 + '-05-02');\n        years.pushObject(holidaySeason - 4 + '-05-02');\n\n        arr = await this.getMultiSeasonHolidays(years);\n        let filteredArr = arr.filter((data) => data.daysleft > 0 || data.year == holidaySeason - 1 || data.holidayPays > 0);\n\n        set(\n            this,\n            'totalDaysLeft',\n            filteredArr.reduce((sum, data) => sum + (data.daysleft || 0), 0),\n        );\n\n        filteredArr = arr.filter(\n            (data) =>\n                data.daysleft > 0 ||\n                data.year == holidaySeason - 1 ||\n                (data.holidayPays > 0 && this.Collector.testNeedsOne('modules.holiday_pay')),\n        );\n        const totalDays = filteredArr.reduce(\n            (sum, data) =>\n                sum +\n                (data.daysleft || 0) +\n                (this.Collector.testNeedsOne('modules.holiday_pay') ? data.holidayPays || 0 : 0),\n            0,\n        );\n        set(this, 'totalDaysLeft', totalDays);\n\n        return filteredArr.reverse();\n    },\n\n    async getMultiSeasonHolidays(years) {\n        let params = {\n            id: this.session.currentUser.id,\n            years: years.join(','),\n            country: this.session.currentUser.company_info.country,\n        };\n\n        const url = 'api/getMultipleSeasons';\n\n        let holidays = await get(this, 'Collector').ttapi({\n            url: url,\n            data: params,\n        });\n\n        return holidays.users.map((row) => {\n            return {\n                year: row.holidayYear,\n                days: row.allDays,\n                daysleft: row.daysLeft,\n                holidayPays: row.availableHolidayPays,\n            };\n        });\n    },\n\n    /**\n     * holidays are fetched directly from ttapi route api/getUserHolidays\n     * @returns\n     */\n    async newGetHolidays() {\n        if (!this.Collector.testNeedsOne('abcense')) return [];\n\n        let params = {\n            id: this.session.currentUser.id,\n            country: this.session.currentUser.company_info.country,\n        };\n\n        const url = 'api/getUserHolidays';\n\n        let holidays = await get(this, 'Collector').ttapi({\n            url: url,\n            data: params,\n        });\n\n        set(this, 'totalDaysLeft', (holidays.sums.daysleft + holidays.sums.holidayPays));\n\n        // current year (key === 0) is always shown\n        const yearsWithDaysLeft = holidays.years.filter(\n            (year, key) => year.daysleft > 0 || key === 0 || year.holidayPays > 0,\n        );\n        return yearsWithDaysLeft;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"n2iv0g2Y\",\"block\":\"{\\\"symbols\\\":[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,1,[]],[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[24,[\\\"data\\\"]],4]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/table\\\",null,[[\\\"data\\\",\\\"headers\\\",\\\"form\\\"],[[24,[\\\"data\\\"]],[24,[\\\"headers\\\"]],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"daysleft\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"daysleft-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.holiday.daysleft_total\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"daysleft-sum-circle\\\"],[8],[1,[22,\\\"totalDaysLeft\\\"],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/holiday/template.hbs\"}});","import Component from '@ember/component';\nimport { set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\n\nexport default Component.extend({\n    session: service(),\n    collector: service('collector-service'),\n    store: service(),\n    evented: service(),\n\n    init() {\n        this._super();\n        this.siteCards = [null, null, null];\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumeEvent');\n    },\n\n    async didReceiveAttrs() {\n        this.mysites = await this.getMySites();\n        if (this.mysites) {\n            this.addMysitesToCards();\n        }\n    },\n\n    didInsertElement() {\n        set(this, 'canUse', this.canWeUseThisWidget());\n        set(this, 'promise', this.getOpenWorktime());\n    },\n\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumeEvent');\n    },\n\n    actions: {\n        notifySiteCards() {\n            this.addMysitesToCards();\n        },\n        setRemovableIndexNull(project) {\n            this.siteCards.splice(this.siteCards.indexOf(project), 1, null);\n        },\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime') {\n            set(this, 'promise', this.getOpenWorktime());\n        }\n    },\n\n    onResumeEvent(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        set(this, 'promise', this.getOpenWorktime());\n    },\n\n    async getMySites() {\n        return await this.store.findAll('my-site');\n    },\n\n    addMysitesToCards() {\n        let mySitesArr = this.mysites.toArray();\n        for (let i = 0; i < this.mysites.length; i++) {\n            set(this.siteCards, i, mySitesArr[i]);\n        }\n        this.notifyPropertyChange('siteCards');\n    },\n\n    async getOpenWorktime() {\n        let worktimes = await this.store.query('worktime', {\n            date:\n                moment().subtract(1, 'day').format('YYYY-MM-DD') +\n                '_' +\n                moment().format('YYYY-MM-DD'),\n            user: this.session.currentUser.id,\n            sideload: true,\n        });\n        let openWorktimes = await worktimes.filter((worktime) => isEmpty(worktime.endtime));\n        set(this, 'openWorktime', !isEmpty(openWorktimes) ? openWorktimes.firstObject : null);\n    },\n\n    canWeUseThisWidget() {\n        return !this.collector.fieldArray('worktime').some((item) => {\n            return item.features.mandatory && !['project', 'user'].includes(item.name);\n        });\n    },\n});\n","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\n\nexport default Component.extend({\n    async didReceiveAttrs() {\n        let proj = await get(this.project, 'project');\n        set(this, 'projectInfo', proj);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"Fj3/NdKj\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"projectInfo\\\",\\\"image\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-image\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[28,\\\"api-image\\\",[[24,[\\\"projectInfo\\\",\\\"image\\\",\\\"firstObject\\\",\\\"s3url\\\"]]],null],\\\"')\\\"]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"my-sites-delete-button\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"showConfirmationPage\\\"]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-image\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[28,\\\"random-mysite-image\\\",[[24,[\\\"projectInfo\\\",\\\"id\\\"]],5],null],\\\"')\\\"]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"my-sites-delete-button\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"showConfirmationPage\\\"]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"my-sites-project-name\\\"],[11,\\\"title\\\",[29,[[24,[\\\"projectInfo\\\",\\\"name\\\"]]]]],[8],[1,[24,[\\\"projectInfo\\\",\\\"name\\\"]],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/my-sites/project-info/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, set, get, setProperties } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment-timezone';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    intl: service(),\n    notifications: service(),\n    error: service(),\n    evented: service(),\n    analytics: service(),\n    classNameBindings: ['isDashed:dashed'],\n    confirmPage: false,\n    pausePage: false,\n    commentPage: false,\n    selectNew: false,\n    loading: false,\n    unit: 'min',\n\n    isDashed: computed('project', function () {\n        return !this.project;\n    }),\n\n    projectField: computed(function () {\n        let field = this.Collector.field('worktime', 'project');\n        if (field) {\n            field.prompt = 'my-sites.add_site';\n            field.skipForcedGPS = true;\n        }\n        return field;\n    }),\n\n    worktimeOn: computed('openWorktime', 'project', function () {\n        if (!this.openWorktime || !this.project) return false;\n\n        let openWorktimeProject = get(this.openWorktime, 'project.id');\n        let siteCardProject = get(this.project, 'project.id');\n\n        if (openWorktimeProject === siteCardProject) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n\n    startDateAndTime: computed('openWorktime', function () {\n        return this.openWorktime.date + ' ' + this.openWorktime.starttime;\n    }),\n\n    actions: {\n        async startWork(mysite) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Worktime startted',\n                label: 'my-sites widget',\n            });\n\n            let proj = await get(mysite, 'project');\n            try {\n                set(this, 'loading', true);\n                let record = this.createWorktime(proj);\n                await record.save();\n                set(this, 'worktimeStartMoment', moment());\n                this.notifications.success(this.intl.t('timetracker.timecard.started'), {\n                    autoClear: true,\n                });\n                set(this, 'openWorktime', record);\n            } catch (error) {\n                if (\n                    error.errors &&\n                    error.errors.firstObject &&\n                    error.errors.firstObject.error === 'overlap' &&\n                    this.openWorktime\n                ) {\n                    //Ugly try catch to handle absences on project change...should be made better in EP-6663\n                    try {\n                        if (error.errors.firstObject.errorMeta.hits === 'worktime') {\n                            this.setEndtime();\n                            await this.openWorktime.save();\n                            this.notifications.success(this.intl.t('general.saved'), {\n                                autoClear: true,\n                            });\n                            get(this, 'evented').storeEvent(\n                                'insert',\n                                'worktime',\n                                this.openWorktime,\n                            );\n                            set(this, 'openWorktime', null);\n\n                            let record = this.createWorktime(proj);\n                            await record.save();\n                            set(this, 'worktimeStartMoment', moment());\n                            this.notifications.success(\n                                this.intl.t('timetracker.timecard.started'),\n                                {\n                                    autoClear: true,\n                                },\n                            );\n                            set(this, 'openWorktime', record);\n                            set(this, 'pausePage', false);\n                            set(this, 'commentPage', false);\n                        }\n                    } catch (error) {\n                        this.error.notify(error);\n                    }\n                } else {\n                    this.error.notify(error);\n                }\n            } finally {\n                set(this, 'loading', false);\n            }\n        },\n\n        async endWork() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Worktime ended',\n                label: 'my-sites widget',\n            });\n\n            try {\n                set(this, 'loading', true);\n                this.setEndtime();\n                await this.openWorktime.save();\n                this.notifications.success(this.intl.t('general.saved'), {\n                    autoClear: true,\n                });\n                get(this, 'evented').storeEvent('insert', 'worktime', this.openWorktime);\n                set(this, 'openWorktime', null);\n            } catch (error) {\n                this.error.notify(error);\n            } finally {\n                set(this, 'loading', false);\n            }\n        },\n\n        showPausePage() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Show pause page',\n                label: 'my-sites widget',\n            });\n\n            set(this, 'pausePage', true);\n            set(this, 'pause', this.openWorktime.pause ? this.openWorktime.pause : null);\n            set(this, 'commentPage', false);\n        },\n\n        addPauseToWorktime(value) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Pause added',\n                label: 'my-sites widget',\n            });\n\n            set(this.openWorktime, 'pause', value);\n            this.openWorktime.save();\n            this.notifications.success(this.intl.t('general.saved'), {\n                autoClear: true,\n            });\n            set(this, 'pausePage', false);\n        },\n\n        showCommentPage() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Show comment page',\n                label: 'my-sites widget',\n            });\n\n            set(this, 'commentPage', true);\n            set(\n                this,\n                'comment',\n                this.openWorktime.description ? this.openWorktime.description : null,\n            );\n            set(this, 'pausePage', false);\n        },\n\n        addCommentToWorktime(value) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Comment added',\n                label: 'my-sites widget',\n            });\n\n            set(this.openWorktime, 'description', value);\n            this.openWorktime.save();\n            this.notifications.success(this.intl.t('general.saved'), {\n                autoClear: true,\n            });\n            set(this, 'commentPage', false);\n        },\n        async addMySite(project) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'My site Added',\n                label: 'my-sites widget',\n            });\n            if (!project || (project && !project.data)) return; //stupid jquery event\n            if (this.siteCardAlreadyAdded(project.id)) {\n                this.notifications.info(this.intl.t('widget.my-sites.sitecard_already_added'), {\n                    autoClear: true,\n                });\n                return;\n            }\n            await this.store.createRecord('my-site', { project }).save();\n            set(this, 'selectNew', false);\n            this.notifySiteCards();\n        },\n\n        async removeMySite(project) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'My site Removed',\n                label: 'my-sites widget',\n            });\n            await project.destroyRecord();\n            set(this, 'project', null);\n            set(this, 'confirmPage', false);\n            set(this, 'selectNew', false);\n            this.setRemovableIndexNull(project);\n        },\n    },\n\n    createWorktime(proj) {\n        let record = this.store.createRecord('worktime');\n\n        setProperties(record, {\n            date: moment().format('YYYY-MM-DD'),\n            user: this.session.currentUser.id,\n            project: proj,\n            starttime: moment().format('HH:mm'),\n            validation: 'off',\n        });\n\n        return record;\n    },\n\n    setEndtime() {\n        if (\n            get(this.openWorktime, 'date') === moment().format('YYYY-MM-DD') &&\n            get(this.openWorktime, 'starttime') > moment().format('HH:mm')\n        ) {\n            set(this.openWorktime, 'endtime', get(this.openWorktime, 'starttime'));\n        } else {\n            set(this.openWorktime, 'endtime', moment().format('HH:mm'));\n        }\n    },\n\n    siteCardAlreadyAdded(project) {\n        let siteCards = this.store.peekAll('my-site');\n        let mapped = siteCards.map((site) => {\n            if (site) {\n                let cardData = get(site, 'project');\n                return get(cardData, 'id');\n            }\n        });\n        return mapped.includes(project);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"xQTAVWsH\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\"],[true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"confirmPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-confirm-page\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"flex-item\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.my-sites.confirm_card_removal\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs flex-item yes-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeMySite\\\",[24,[\\\"project\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.yes\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs flex-item no-button\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"confirmPage\\\"]]],null],false]],[8],[1,[28,\\\"t\\\",[\\\"general.no\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"worktimeOn\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"commentPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"mysites-align-center\\\"],[8],[1,[23,0,[\\\"openWorktime\\\",\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mysites-comment-objects\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"value\\\",\\\"class\\\",\\\"placeholder\\\"],[8,[24,[\\\"comment\\\"]],\\\"\\\",[28,\\\"t\\\",[\\\"mysites.commentpage.add_comment\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mysites-flexy-buttons\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"mysites-ok-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addCommentToWorktime\\\",[24,[\\\"comment\\\"]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"mysites-notok-button\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"commentPage\\\"]]],null],false]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[8],[9],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"dash-board/widgets/my-sites/project-info\\\",null,[[\\\"project\\\",\\\"showConfirmationPage\\\"],[[24,[\\\"project\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"confirmPage\\\"]]],null],true],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"pausePage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"mysites-align-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.mysites.add_pause\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mysites-pause-objects\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mysites-pause-values\\\"],[10,\\\"data-anchor\\\",\\\"mysites-pause-field\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"pause\\\"]],\\\"mysites-pause-text\\\"]]],false],[0,\\\" \\\"],[1,[22,\\\"unit\\\"],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"mysites-ok-button\\\"],[12,\\\"data-anchor\\\",\\\"mysites-pause-save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addPauseToWorktime\\\",[24,[\\\"pause\\\"]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"mysites-notok-button\\\"],[12,\\\"data-anchor\\\",\\\"mysites-pause-close\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"pausePage\\\"]]],null],false]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[8],[9],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-stop-button-container\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"my-sites-stop-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"endWork\\\"]],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Stop\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worktime-duration\\\"],[8],[4,\\\"if\\\",[[23,0,[\\\"openWorktime\\\",\\\"starttime\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"duration-clock\\\",[[23,0,[\\\"startDateAndTime\\\"]]],null],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"00:00:00\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"commentPage\\\"]],\\\"absolute-buttons\\\",\\\"my-sites-additional-buttons\\\"],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.pause\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-xs my-sites-additional-button \\\",[28,\\\"if\\\",[[24,[\\\"pausePage\\\"]],\\\"active-button\\\"],null]]]],[12,\\\"data-anchor\\\",\\\"my-sites-widget-pause-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showPausePage\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worktime.pause\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-xs my-sites-additional-button \\\",[28,\\\"if\\\",[[24,[\\\"commentPage\\\"]],\\\"active-button\\\"],null]]]],[12,\\\"data-anchor\\\",\\\"my-sites-widget-description-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showCommentPage\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worktime.description\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[2,\\\"button class=\\\\\\\"btn btn-xs my-sites-additional-button\\\\\\\">{{t \\\\\\\"widget.my-sites.change\\\\\\\"}}</button\\\"],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"dash-board/widgets/my-sites/project-info\\\",null,[[\\\"project\\\",\\\"showConfirmationPage\\\"],[[24,[\\\"project\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"confirmPage\\\"]]],null],true],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-play-button-container\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"my-sites-play-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"startWork\\\",[24,[\\\"project\\\"]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Play\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"selectNew\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-selecting-page\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"change\\\"],[[24,[\\\"projectField\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addMySite\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"my-sites-add-new\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"selectNew\\\"]]],null],true]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.my-sites.add_new_card\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CityScape\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/my-sites/site-card/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"iyDlwN5v\",\"block\":\"{\\\"symbols\\\":[\\\"site\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,9,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[23,0,[\\\"promise\\\"]],6]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-card-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[23,0,[\\\"canUse\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overlay\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.my-sites.can_not_use\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[23,0,[\\\"siteCards\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"dash-board/widgets/my-sites/site-card\\\",null,[[\\\"project\\\",\\\"openWorktime\\\",\\\"setRemovableIndexNull\\\",\\\"notifySiteCards\\\"],[[23,1,[]],[23,0,[\\\"openWorktime\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setRemovableIndexNull\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"notifySiteCards\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/my-sites/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport Ember from 'ember';\nimport { later } from '@ember/runloop';\nimport { htmlSafe } from '@ember/template';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class WorkingNowComponent extends Component {\n    @service session;\n    @service evented;\n    @service('collector-service') Collector;\n    @service intl;\n    @service localStorageWrapper;\n    @service analytics;\n    @service('promo-messages') promoMessages;\n\n    @tracked data;\n    @tracked messageModalcontent;\n    @tracked showMessageModal;\n    @tracked selectedType;\n\n    get styleNamespace() {\n        return podNames['dash-board/widgets/promo-messages'];\n    }\n\n    constructor() {\n        super(...arguments);\n        this.types = ['release_note', 'tips', 'new_feature', 'future_webinar', 'failure_report'];\n        this.headers = ['subject', 'startdate'];\n        this.form = 'promomessage';\n        this.key = 'messageWidgetFilters';\n        this.subtle_key = 'promomessages_subtle';\n        this.selectedType = this.getFiltersFromLS();\n        this.getUnreadMessages();\n        this.data = this.getMessages();\n\n        if (!Ember.testing) {\n            later(\n                this,\n                () => {\n                    this.getUnreadMessages();\n                    this.data = this.getMessages();\n                },\n                10000,\n            );\n        }\n\n        this.evented.on('onResumed', this, 'onResumed');\n    }\n\n    @action\n    showMessage(row) {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Show message',\n            label: 'Promo messages widget',\n        });\n\n        this.markMessageAsRead(row);\n        this.messageModalcontent = row;\n        this.showMessageModal = true;\n    }\n\n    @action\n    closeMessage() {\n        this.messageModalcontent = null;\n        this.showMessageModal = false;\n    }\n\n    @action\n    typeChange(type) {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: `Message type change to ${type}`,\n            label: 'Promo messages widget',\n        });\n\n        this.selectedType = type;\n        this.setFiltersToLS(this.selectedType);\n        this.data = this.getMessages();\n    }\n\n    willDestroy() {\n        this.evented.off('onResumed', this, 'onResumed');\n    }\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        this.data = this.getMessages();\n    }\n\n    async getMessages() {\n        let products = this.Collector.products;\n        let country = this.session.currentUser.company_info.country;\n        let userlevel = this.session.currentUser.userlevel;\n\n        if (!products || !country || !userlevel) return [];\n\n        const messages = await this.promoMessages.getMessages({\n            country: country,\n            userlevel: userlevel,\n            prods: products,\n            new: true,\n            type: this.selectedType,\n        });\n        // Sort by startdate\n        let data = messages.data.sort((el1, el2) => (el1.startdate < el2.startdate ? 1 : -1));\n        return this.formatMessageData(data);\n    }\n\n    formatMessageData(data) {\n        let badgeText = this.intl.t('widget.promomessage.unread');\n        let formattedData = data.map((item) => {\n            item.subject = item.type\n                ? this.intl.t('promomessage.type.' + item.type) + ': ' + item.title\n                : item.title;\n            item.startdate = moment(item.startdate).format('DD.MM.YYYY');\n            if (this.unReadMessages && this.unReadMessages.findBy('id', item.id)) {\n                item.subject = htmlSafe(\n                    item.subject +\n                        ' <span class=\"badge badge-pill badge-unread\">' +\n                        badgeText +\n                        '</span>',\n                );\n                item.class = 'unread';\n            }\n            return item;\n        });\n        return formattedData;\n    }\n\n    setFiltersToLS(filters) {\n        if (this.key) this.localStorageWrapper.setUserSetting(this.key, filters);\n    }\n\n    getFiltersFromLS() {\n        let LSfilters = this.localStorageWrapper.getUserSetting(this.key);\n        if (LSfilters && LSfilters.length > 0 && this.key) return LSfilters;\n        return null;\n    }\n\n    getUnreadMessages() {\n        let messages = this.localStorageWrapper.getUserSetting(this.subtle_key);\n        if (messages && messages.length > 0) this.unReadMessages = messages;\n    }\n\n    markMessageAsRead(item) {\n        if (!this.unReadMessages) return;\n        this.unReadMessages = this.unReadMessages.rejectBy('id', item.id);\n        this.localStorageWrapper.setUserSetting(this.subtle_key, this.unReadMessages);\n\n        let readMessages = this.localStorageWrapper.getUserSetting('promomessages');\n        readMessages.push(item.id);\n        this.localStorageWrapper.setUserSetting('promomessages', [...new Set(readMessages)]);\n        this.data = this.getMessages();\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"5mp436Tb\",\"block\":\"{\\\"symbols\\\":[\\\"type\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,9,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"dash-board/widget-spinner\\\",[],[[\\\"@promise\\\",\\\"@skeletonRows\\\"],[[23,0,[\\\"data\\\"]],3]]],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"fixed-flex-filters\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n                \\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@options\\\",\\\"@selected\\\",\\\"@placeholder\\\",\\\"@onChange\\\",\\\"@noMatchesMessage\\\"],[[23,0,[\\\"types\\\"]],[23,0,[\\\"selectedType\\\"]],[28,\\\"t\\\",[\\\"promomessage.select_type\\\"],null],[23,0,[\\\"typeChange\\\"]],[28,\\\"t\\\",[\\\"general.no-content\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"promomessage.type.\\\",[23,1,[]]],null]],null],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"dash-board/table\\\",[],[[\\\"@data\\\",\\\"@headers\\\",\\\"@form\\\",\\\"@rowClicked\\\"],[[23,0,[\\\"data\\\"]],[23,0,[\\\"headers\\\"]],[23,0,[\\\"form\\\"]],[23,0,[\\\"showMessage\\\"]]]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showMessageModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"mess-ages/types/promo\\\",[],[[\\\"@close\\\",\\\"@store\\\",\\\"@content\\\"],[[23,0,[\\\"closeMessage\\\"]],[23,0,[\\\"store\\\"]],[23,0,[\\\"messageModalcontent\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/promo-messages/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed, setProperties } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment-timezone';\nimport { isEmpty } from '@ember/utils';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n    ttapi: service(),\n    error: service(),\n    intl: service(),\n    localstorage: service(),\n    analytics: service(),\n    Collector: service('collector-service'),\n\n    user: null,\n    project: null,\n    worktimegroup: null,\n\n    formattedSalaryData: computed('salaryData', async function () {\n        let salarytypes = await this.getSalarytypes();\n        let data = await this.salaryData;\n        if (isEmpty(data)) return [];\n        let arr = [];\n\n        //First calculate total work hours and push to array (% is always 100 if there are work hours)\n        let total_hours = await this.calculateTotalHours();\n        if (total_hours > 0) {\n            arr.pushObject({\n                salarytype: this.intl.t('report.worktime.work_hours'),\n                accrual: get(this, 'Collector')._format_(\n                    total_hours,\n                    'worktime',\n                    'work_hours',\n                    'salarycategory',\n                ),\n                percent: '100.0',\n            });\n        }\n\n        //Then loop through salarytypes and calculate accruals based on salarydata and % based on work hours\n        salarytypes.forEach(async (type) => {\n            let accrual = data.reduce((sum, row) => sum + (Number(row[type.name]) || 0), 0);\n            if (accrual === 0) return;\n            let percent =\n                type.fieldType === 'work_hours' && total_hours > 0\n                    ? ((accrual / total_hours) * 100).toFixed(1)\n                    : '-';\n\n            if (type.fieldType) {\n                let fieldType =\n                    type.fieldType === 'no_percent_hours' ? 'work_hours' : type.fieldType;\n                accrual = get(this, 'Collector')._format_(\n                    accrual,\n                    'worktime',\n                    fieldType,\n                    'salarycategory',\n                );\n            }\n\n            let salarytype = type.translatedName ? type.translatedName : type.name;\n            arr.pushObject({\n                salarytype: salarytype,\n                accrual:\n                    type.fieldType === 'comp'\n                        ? accrual + ' ' + this.intl.t('general.amount')\n                        : accrual,\n                percent: percent >= 0 ? percent : '-',\n            });\n        });\n\n        let sortedArr = arr.sort((a, b) => {\n            let percentA = !isNaN(parseFloat(a.percent)) ? parseFloat(a.percent) : 0;\n            let percentB = !isNaN(parseFloat(b.percent)) ? parseFloat(b.percent) : 0;\n            if (percentA === 0 && typeof a.accrual === 'string' && !a.accrual.indexOf('h') > -1) {\n                percentA = 0.01;\n            }\n            return percentB - percentA;\n        });\n\n        return sortedArr;\n    }),\n\n    tableLayout: computed(function () {\n        if (this.localstorage.getItem('sumwidget-layout')) {\n            return this.localstorage.getItem('sumwidget-layout');\n        } else {\n            return 'report';\n        }\n    }),\n\n    projectField: computed('project', function () {\n        let field = this.Collector.field('worktime', 'project');\n        if (field) {\n            field.prompt = 'general.all_projects';\n        }\n        return field;\n    }),\n\n    userField: computed('user', function () {\n        let field = this.Collector.field('worktime', 'user');\n        if (field) {\n            field.prompt = 'general.all_users';\n        }\n        return field;\n    }),\n\n    /*worktimegroupField: computed('worktimegroup', function() {\n        let field = this.Collector.field('user', 'worktimegroup')\n        if (field) {\n            field.value = this.worktimegroup\n            field.prompt = \"general.all_worktimegroups\"\n        }\n        return field\n    }),*/\n\n    init() {\n        this._super();\n        this.headers = ['salarytype', 'accrual'];\n        if (this.session.currentUser.userlevel !== '1') this.headers.push('percent');\n        this.form = 'salarytype';\n        this.useSalarytypeV2 = this.Collector.testNeeds(['products.salarytype_v2']);\n        this.salarytypes = this.store.query(this.useSalarytypeV2 ? 'salarytypev2' : 'salarytype', {\n            sideload: true,\n            limit: 'all',\n        });\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumeEvent');\n    },\n\n    async didReceiveAttrs() {\n        set(this, 'periods', await this.getPeriods());\n        setProperties(this, {\n            date: this.periods[0],\n            user: this.session.currentUser.id,\n            project: this.project,\n            worktimegroup: null,\n        });\n        set(this, 'salaryData', this.getSalaryData());\n    },\n\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumeEvent');\n    },\n\n    actions: {\n        filterChange(value, field) {\n            if (field && typeof field === 'string') {\n                this.analytics.trackEvent({\n                    category: 'Dashboard',\n                    action: `change ${field} filter`,\n                    label: 'salary-sum widget',\n                });\n                if (!value) set(this, field, null);\n                else set(this, field, value.id);\n            }\n            set(this, 'salaryData', this.getSalaryData());\n        },\n\n        changeDate(value) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `change date filter`,\n                label: 'salary-sum widget',\n            });\n            if (value) set(this, 'date', value);\n            set(this, 'salaryData', this.getSalaryData());\n        },\n\n        changeLayout(layout) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Use ${layout} layout`,\n                label: 'salary-sum widget',\n            });\n\n            this.localstorage.setItem('sumwidget-layout', layout);\n            this.notifyPropertyChange('tableLayout');\n        },\n    },\n\n    async getPeriods() {\n        if (!this.currentSalaryPeriod) await this.setCurrentPeriod();\n        return [\n            {\n                key: 'this_week',\n                id:\n                    moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('isoWeek').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.this_week'),\n            },\n            {\n                key: 'last_week',\n                id:\n                    moment().subtract(1, 'week').startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().subtract(1, 'week').endOf('isoWeek').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.last_week'),\n            },\n            {\n                key: 'this_month',\n                id:\n                    moment().startOf('month').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('month').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.this_month'),\n            },\n            {\n                key: 'last_month',\n                id:\n                    moment().subtract(1, 'month').startOf('month').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().subtract(1, 'month').endOf('month').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.last_month'),\n            },\n            {\n                key: 'this_year',\n                id:\n                    moment().startOf('year').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('year').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.this_year'),\n            },\n            {\n                key: 'last_year',\n                id:\n                    moment().subtract(1, 'year').startOf('year').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().subtract(1, 'year').endOf('year').format('YYYY-MM-DD'),\n                name: this.intl.t('general.period.last_year'),\n            },\n            {\n                key: 'this_salaryperiod',\n                id: this.currentSalaryPeriod,\n                name: this.intl.t('general.period.this_salaryperiod'),\n            },\n        ];\n    },\n\n    async setCurrentPeriod() {\n        let salaryPeriods = this.store.peekAll('wage-period');\n        if (isEmpty(salaryPeriods)) salaryPeriods = await this.store.findAll('wage-period');\n        if (isEmpty(salaryPeriods))\n            return (this.currentSalaryPeriod =\n                moment().startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('month').format('YYYY-MM-DD'));\n\n        const currentDate = moment().format('YYYY-MM-DD');\n        const currentPeriods = salaryPeriods.filter((period) => {\n            return period.period_start_date <= currentDate && period.period_end_date >= currentDate;\n        });\n        if (isEmpty(currentPeriods))\n            return (this.currentSalaryPeriod =\n                moment().startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('month').format('YYYY-MM-DD'));\n        // Just set first that is found\n        this.currentSalaryPeriod =\n            currentPeriods[0].period_start_date + '_' + currentPeriods[0].period_end_date;\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime' || params.type === 'abcense') {\n            set(this, 'salaryData', this.getSalaryData());\n        }\n    },\n\n    async onResumeEvent(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        if (this.currentSalaryPeriod) {\n            // If dashboard is open for a long time, we have to update current period if its end date is past current date\n            const splitCurrent = this.currentSalaryPeriod.split('_');\n            if (splitCurrent[1] < moment().format('YYYY-MM-DD')) await this.setCurrentPeriod();\n        }\n        set(this, 'periods', await this.getPeriods());\n        if (this.date.key) set(this, 'date', this.periods.findBy('key', this.date.key));\n        else set(this, 'date', this.periods[0]);\n        set(this, 'salaryData', this.getSalaryData());\n    },\n\n    async getSalaryData() {\n        let data = {\n            date: this.date?.id\n                ? this.date.id\n                : moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                  '_' +\n                  moment().endOf('isoWeek').format('YYYY-MM-DD'),\n            user: this.user,\n            project: this.project ? this.project : null,\n            allowEmptySalaryCodes: true,\n            useSalarytypeV2: this.useSalarytypeV2,\n        };\n\n        /*if (this.worktimegroup) {\n            data.worktimegroup = this.worktimegroup\n            data.user = null\n        }*/\n        return this.ttapi.request('api/salary-categories', {\n            method: 'GET',\n            data: data,\n        });\n    },\n\n    async getSalarytypes() {\n        let data = await this.salaryData;\n        if (!data) return [];\n        let types = [];\n        data.forEach((row) => {\n            types = types.concat(\n                Object.keys(row).reject((item) => ['date', 'hours'].includes(item)),\n            );\n        });\n        // only unique ones sorted\n        types = types.filter((v, i, a) => a.indexOf(v) === i).sort();\n\n        let stypes = await this.salarytypes;\n        let formFields = await this.Collector.fieldArray('worktime');\n        let temptypes = [];\n        types.forEach((row) => {\n            let fieldType = this.getFieldType(row, stypes, formFields);\n            if (['pause', 'saldo'].includes(row)) {\n                let translatedName = this.intl.t('salarycategory.' + row);\n                temptypes.push({ name: row, fieldType, translatedName });\n            } else {\n                temptypes.push({ name: row, fieldType });\n            }\n        });\n        return temptypes;\n    },\n\n    getFieldType(type, salary, fields) {\n        let typeName = type.split(/\\((.*)\\)/);\n        let stype = salary.find((item) => item.name == typeName[0].trim());\n        if (!stype) return 'no_percent_hours';\n        if (stype.control === 'work_hours;salarytype=$this') return 'work_hours';\n        if (stype.control === '_midweek_holiday_pay') return 'no_percent_hours';\n        let fieldExt = this.useSalarytypeV2 ? stype.type : stype.option;\n        if (!stype.option && stype.control) {\n            let control = stype.control.split(/;|=/);\n            fieldExt = control[1];\n        }\n\n        // compensations and other dropdowns have : have in them (ie meal:full) but the field external type is only\n        // the first part.. ie meal:full -> meal\n        if (fieldExt.includes(':')) fieldExt = fieldExt.split(':')[0];\n\n        let field = fields.find((item) => item.name == fieldExt);\n        if (!field || field.type === 'hours') return 'work_hours';\n        return field.name;\n    },\n\n    handleComp(data, type) {\n        let dropdown = [];\n        data.forEach((row) => {\n            if (!row[type.name]) return;\n            dropdown[row[type.name]] = (dropdown[row[type.name]] || 0) + 1;\n        });\n        return dropdown;\n    },\n\n    async calculateTotalHours() {\n        let worktimeHours = await this.store.query('worktime', {\n            user: this.user,\n            date: this.date.id,\n            project: this.project,\n            cols: 'starttime,endtime,work_hours,user',\n        });\n        return worktimeHours.reduce((sum, row) => sum + (row['work_hours'] || 0), 0);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"MMuyt8i1\",\"block\":\"{\\\"symbols\\\":[\\\"sdata\\\",\\\"option\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@tableLayout\\\",\\\"@changeLayout\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,0,[\\\"tableLayout\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeLayout\\\"],null],[23,9,[]],[23,10,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[23,0,[\\\"salaryData\\\"]],6]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!userlevel=1\\\"],null],\\\"auto-flex-filters\\\",\\\"fixed-flex-filters\\\"],null]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"power-select\\\",[],[[\\\"@selected\\\",\\\"@options\\\",\\\"@onChange\\\"],[[23,0,[\\\"date\\\"]],[23,0,[\\\"periods\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeDate\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[23,2,[\\\"name\\\"]],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!userlevel=1\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"collector/field-comp\\\",[],[[\\\"@field\\\",\\\"@change\\\",\\\"@_class\\\",\\\"@value\\\",\\\"@usePowerDropdown\\\"],[[23,0,[\\\"projectField\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChange\\\"],null],\\\"\\\",[23,0,[\\\"project\\\"]],true]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"collector/field-comp\\\",[],[[\\\"@field\\\",\\\"@change\\\",\\\"@_class\\\",\\\"@value\\\"],[[23,0,[\\\"userField\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChange\\\"],null],\\\"\\\",[23,0,[\\\"user\\\"]]]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"tableLayout\\\"]],\\\"grid\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"salary-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"await\\\",[[23,0,[\\\"formattedSalaryData\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"no-salary-data\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"icon move move-Search\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.no-content\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[28,\\\"await\\\",[[23,0,[\\\"formattedSalaryData\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"salary-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h2\\\",true],[8],[1,[23,1,[\\\"accrual\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[8],[1,[23,1,[\\\"salarytype\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"dash-board/table\\\",null,[[\\\"data\\\",\\\"headers\\\",\\\"form\\\"],[[23,0,[\\\"formattedSalaryData\\\"]],[24,[\\\"headers\\\"]],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/salary-sum/template.hbs\"}});","/* eslint-disable ember/named-functions-in-promises */\nimport Component from '@ember/component';\nimport { set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    session: service(),\n    evented: service(),\n\n    init() {\n        this._super();\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n    },\n\n    didInsertElement() {\n        set(this, 'saldoHours', this.getSaldoData());\n    },\n\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime' || params.type === 'abcense')\n            set(this, 'saldoHours', this.getSaldoData());\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        set(this, 'saldoHours', this.getSaldoData());\n    },\n\n    async getSaldoData() {\n        const saldoSettings = await this.Collector.ttapi({\n            url: 'saldo/saldoSettings?userid=' + this.session.currentUser.id,\n        });\n        const userSaldo = await this.Collector.ttapi({\n            url: 'saldo/get_current_saldo?userid=' + this.session.currentUser.id,\n        });\n\n        set(this, 'max', saldoSettings['maximum'] / 60);\n        set(this, 'min', saldoSettings['minimum'] / 60);\n\n        return userSaldo['saldo'] / 60;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"KsNuUYhf\",\"block\":\"{\\\"symbols\\\":[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,1,[]],[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[24,[\\\"saldoHours\\\"]],6]]],false],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[5,\\\"gauge-chart\\\",[],[[\\\"@value\\\",\\\"@max\\\",\\\"@min\\\",\\\"@label\\\",\\\"@subLabel\\\"],[[28,\\\"await\\\",[[24,[\\\"saldoHours\\\"]]],null],[23,0,[\\\"max\\\"]],[23,0,[\\\"min\\\"]],[28,\\\"t\\\",[\\\"widget.saldo.label\\\"],null],[28,\\\"t\\\",[\\\"widget.saldo.sublabel\\\"],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/saldo/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"IddPsRb3\",\"block\":\"{\\\"symbols\\\":[\\\"@animate\\\"],\\\"statements\\\":[[7,\\\"svg\\\",true],[10,\\\"class\\\",\\\"clock\\\"],[10,\\\"width\\\",\\\"30\\\"],[10,\\\"height\\\",\\\"30\\\"],[10,\\\"viewBox\\\",\\\"0 0 24 24\\\"],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[8],[0,\\\"\\\\n\\\\n \\\"],[7,\\\"g\\\",true],[8],[0,\\\"\\\\n  \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"m9,0l0,2l6,0l0,-2l-6,0zm2,3l0,1.0625c-5.06474,0.49692 -9,4.73956 -9,9.9375c0,5.53333 4.46667,10 10,10c5.53333,0 10,-4.46667 10,-10c0,-2.91958 -1.26241,-5.51752 -3.25,-7.34375l1.34375,-1.34375l-1.40625,-1.40625l-1.53125,1.53125c-1.23644,-0.74298 -2.64489,-1.22671 -4.15625,-1.375l0,-1.0625l-2,0zm1,3c4.46667,0 8,3.53333 8,8c0,4.46667 -3.53333,8 -8,8c-4.46667,0 -8,-3.53333 -8,-8c0,-4.46667 3.53333,-8 8,-8z\\\"],[10,\\\"shape-rendering\\\",\\\"geometricPrecision\\\"],[8],[9],[0,\\\"\\\\n  \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"m6.68738,8.49994l3.5625,4.96875c-0.04601,0.16835 -0.0625,0.34831 -0.0625,0.53125c0,1.10457 0.89543,2 2,2c1.10457,0 2,-0.89543 2,-2c0,-1.10457 -0.89543,-2 -2,-2c-0.18294,0 -0.3629,0.01649 -0.53125,0.0625l-4.96875,-3.5625z\\\"],[10,\\\"shape-rendering\\\",\\\"geometricPrecision\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"animateTransform\\\",true],[10,\\\"attributeName\\\",\\\"transform\\\"],[10,\\\"attributeType\\\",\\\"XML\\\"],[10,\\\"from\\\",\\\"0 12 14\\\"],[10,\\\"to\\\",\\\"360 12 14\\\"],[10,\\\"dur\\\",\\\"60s\\\"],[10,\\\"repeatCount\\\",\\\"indefinite\\\"],[10,\\\"type\\\",\\\"rotate\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/timecard/clock/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport podNames from 'ember-component-css/pod-names';\nimport { tracked } from '@glimmer/tracking';\nimport { later, next } from '@ember/runloop';\nimport { save_record } from 'tt4/ember-movenium/utils/save-the-children';\n\nexport default class DashBoardWidgetsTimecardComponent extends Component {\n    @service store;\n    @service session;\n    @service evented;\n    @service('collector-service') collector;\n    @service() notifications;\n    @service intl;\n    @service error;\n    @service gps;\n    @service dialogs;\n    @service router;\n    @service localstorage;\n    @service flags;\n    @service analytics;\n\n    @tracked worktimes;\n    @tracked openWorktime;\n    @tracked newWorktime;\n    @tracked showNext;\n    @tracked promise;\n    @tracked showNext;\n    @tracked nextContainerOnTop;\n    @tracked siteTooFar;\n    @tracked descriptionTooLong;\n    @tracked showEdit;\n\n    get styleNamespace() {\n        return podNames['dash-board/widgets/timecard'];\n    }\n\n    get workHoursToday() {\n        if (!this.worktimes) return '';\n        return this.worktimes.reduce((total, worktime) => total + (worktime.work_hours || 0), 0);\n    }\n\n    get started() {\n        if (!this.worktimes) return '';\n        if (this.worktimes.length === 0) return '';\n        let min = '24:00';\n        this.worktimes.forEach((worktime) => {\n            if (worktime.starttime < min) min = worktime.starttime;\n        });\n        return min;\n    }\n\n    get timer() {\n        if (!this.openWorktime) return null;\n\n        // on first minute seconds should start from current seconds so counter starts from 00:00:00\n        const seconds =\n            this.openWorktime.starttime === moment().format('HH:mm') ? moment().format('ss') : '00';\n        return (\n            moment(this.openWorktime.date + ' ' + this.openWorktime.starttime).format(\n                'YYYY-MM-DD HH:mm:',\n            ) + seconds\n        );\n    }\n\n    // select fields that are shown on timecard start\n    // filter fields that are alwaysVisible or mandatory but not in newerShow\n    // return as string ie \"field1,field2\"\n    get showFieldsOnStart() {\n        const alwaysVisible = [\n            'project',\n            'task',\n            'subtask',\n            'subproject',\n            'affects_overtime',\n            'salarytype',\n        ];\n        const neverShow = ['user', 'date', 'starttime', 'endtime', 'location'];\n        const fields = this.collector.fieldArray('worktime').filter((field) => {\n            return (\n                alwaysVisible.includes(field.name) ||\n                (field.features.mandatory && !neverShow.includes(field.name))\n            );\n        });\n\n        return fields.mapBy('name').join(',');\n    }\n\n    get showFieldsOnEdit() {\n        const neverShow = ['user', 'date', 'starttime', 'endtime', 'location'];\n        const fields = this.collector.fieldArray('worktime').filter((field) => {\n            return !neverShow.includes(field.name);\n        });\n\n        return fields.mapBy('name').join(',');\n    }\n\n    constructor() {\n        super(...arguments);\n        this.form = 'worktime';\n        if (this.collector.testNeedsOne('products.gps_force')) this.siteTooFar = true;\n        this.getWorktimes();\n\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumeEvent');\n        this.gps.on('lockedPositionChanged', this, 'checkIfSiteTooFar');\n\n        this.router.on('routeWillChange', (transition) => {\n            if (!transition.to.find((route) => route.name === this.routeName)) {\n                this.newWorktime?.rollbackAttributes();\n                this.openWorktime?.rollbackAttributes();\n            }\n        });\n    }\n\n    willDestroy() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumeEvent');\n        this.gps.off('lockedPositionChanged', this, 'checkIfSiteTooFar');\n    }\n\n    @action\n    async start() {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Start worktime',\n            label: 'Timecard widget',\n        });\n\n        if (this.siteTooFar) return;\n\n        const worktime = this.newWorktime?.isDeleted\n            ? this.collector.copyRecord(this.newWorktime)\n            : this.newWorktime;\n        if (!worktime.date) worktime.date = moment().format('YYYY-MM-DD');\n        if (!worktime.user) worktime.user = this.session.currentUser;\n\n        worktime.starttime = moment().format('HH:mm');\n        if ('location' in worktime) worktime.location = await this.getLocation();\n        await worktime.validate();\n\n        if (!worktime.isValid) return;\n\n        // this.setDefaultPause(worktime)\n        this.openWorktime = worktime;\n        this.newWorktime = worktime;\n\n        this.updateWorktimes();\n\n        try {\n            await save_record(worktime, this);\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n            this.evented.storeEvent('insert', 'worktime', this.openWorktime);\n            if (this.args.saveAction) this.args.saveAction();\n        } catch (error) {\n            this.dialogs.alert(await this.error.toStringAsyncHTML(error));\n            worktime.starttime = null;\n            this.newWorktime = worktime;\n            this.openWorktime = null;\n        }\n    }\n\n    @action\n    async stop() {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Stop worktime',\n            label: 'Timecard widget',\n        });\n\n        if (this.siteTooFar) return;\n\n        const worktime = this.openWorktime;\n        await worktime.validate();\n\n        if (!worktime.isValid) return;\n\n        worktime.endtime = moment().format('HH:mm');\n        if ('end_location' in worktime) worktime.end_location = await this.getLocation();\n\n        this.openWorktime = null;\n        this.updateWorktimes();\n\n        try {\n            await worktime.save();\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n            this.evented.storeEvent('insert', 'worktime', this.openWorktime);\n            if (this.args.saveAction) this.args.saveAction();\n        } catch (error) {\n            this.error.notify(error);\n            worktime.endtime = null;\n            this.openWorktime = worktime;\n        }\n    }\n\n    @action\n    async startNext() {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Start next worktime',\n            label: 'Timecard widget',\n        });\n\n        if (this.siteTooFar) return;\n\n        const oldWorktime = this.openWorktime;\n        const newWorktime = this.newWorktime;\n\n        await oldWorktime.validate();\n        await newWorktime.validate();\n\n        if (!oldWorktime.isValid) return;\n        if (!newWorktime.isValid) return;\n\n        oldWorktime.endtime = moment().format('HH:mm');\n        if ('end_location' in oldWorktime) oldWorktime.end_location = await this.getLocation();\n        newWorktime.starttime = moment().format('HH:mm');\n\n        // hax to force render form again so new values of new record would be updated to fields... this wouldn't be needed\n        // if fields would support ddau better .. when ddau works change to one line \"this.openWorktime = newWorktime\"\n        this.openWorktime = null;\n        next(this, () => {\n            this.openWorktime = newWorktime;\n        });\n\n        this.newWorktime = this.createNewWorktime();\n\n        // hide next worktime component\n        this.closeNext();\n\n        this.updateWorktimes();\n\n        try {\n            await oldWorktime.save();\n            await newWorktime.save();\n\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n            this.evented.storeEvent('insert', 'worktime', oldWorktime);\n        } catch (error) {\n            this.error.notify(error);\n            newWorktime.starttime = null;\n            oldWorktime.endtime = null;\n            this.newWorktime = newWorktime;\n            this.openWorktime = oldWorktime;\n\n            this.openNext(0);\n        }\n    }\n\n    @action\n    openNext(time = 301) {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Open next worktime view',\n            label: 'Timecard widget',\n        });\n\n        this.showNext = true;\n\n        // animation takes 300ms so after that we change nextContainerOnTop to true witch makes removes stop div to hidden\n        // and makes startnew div to not absolute so it will change the size of the parent div\n        later(\n            this,\n            () => {\n                this.nextContainerOnTop = true;\n            },\n            time,\n        );\n    }\n\n    @action\n    closeNext() {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Close next worktime view',\n            label: 'Timecard widget',\n        });\n\n        this.showNext = false;\n        this.nextContainerOnTop = false;\n    }\n\n    @action\n    showEditView() {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Open edit worktime view',\n            label: 'Timecard widget',\n        });\n        this.showEdit = true;\n    }\n\n    @action onFieldChange(type, field, value) {\n        if (type === 'open') this.openWorktime[field] = value;\n        else if (type === 'new') this.newWorktime[field] = value;\n        if (field === 'description') {\n            this.descriptionTooLong =\n                value.length > 256 ? this.intl.t('validation.too_long_error') : null;\n        }\n    }\n\n    createNewWorktime() {\n        let defaults = { date: moment().format('YYYY-MM-DD'), user: this.session.currentUser };\n        if (this.collector.fieldExists('worktime', 'affects_overtime'))\n            defaults.affects_overtime = 'off';\n        return this.store.createRecord('worktime', defaults);\n    }\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime') this.getWorktimes();\n    }\n\n    onResumeEvent(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        this.getWorktimes();\n    }\n\n    async getWorktimes() {\n        this.promise = this.store.query('worktime', {\n            date:\n                moment().subtract(1, 'day').format('YYYY-MM-DD') +\n                '_' +\n                moment().format('YYYY-MM-DD'),\n            user: this.session.currentUser.id,\n            sideload: true,\n        });\n        const worktimes = await this.promise;\n\n        this.updateWorktimes();\n\n        const openWorktime = worktimes.find((worktime) => {\n            return worktime.starttime && !worktime.endtime;\n        });\n\n        if (openWorktime) {\n            this.setDefaultPause(openWorktime);\n            this.openWorktime = openWorktime;\n            this.checkIfSiteTooFar();\n        } else this.openWorktime = null;\n    }\n\n    updateWorktimes() {\n        this.worktimes = this.store.peekAll('worktime').filter((worktime) => {\n            return (\n                worktime.date === moment().format('YYYY-MM-DD') &&\n                worktime.user == this.session.currentUser\n            );\n        });\n\n        const records = this.store.peekAll('worktime').filterBy('isNew', true);\n        if (records.length > 0) {\n            this.newWorktime = records.firstObject;\n            // when reusing unsaved worktime .. date must always be today so play starts worktime for today\n            this.newWorktime.date = moment().format('YYYY-MM-DD');\n            if (\n                this.collector.fieldExists('worktime', 'affects_overtime') &&\n                !this.newWorktime.affects_overtime\n            )\n                this.newWorktime.affects_overtime = 'off';\n        } else {\n            this.newWorktime = this.createNewWorktime();\n        }\n        this.checkIfSiteTooFar();\n    }\n\n    // check if pause is on .. and set pause for given worktime\n    setDefaultPause(worktime) {\n        const pauseField = this.collector\n            .fieldArray('worktime')\n            .find((item) => item.name === 'pause');\n        let pause = null;\n        // support for worktime-groups\n        if (pauseField) {\n            if (typeof get(pauseField, 'features.default_value') == 'object')\n                pause = get(pauseField, 'features.default_value.value');\n            else pause = get(pauseField, 'features.default_value');\n        }\n\n        if ((!worktime.pause || worktime.pause == null) && pause) worktime.pause = pause;\n        // Need this hax also here because it overwrites somehow default pause in new clockcard 😩\n        if (worktime.multipause?.length === 0) worktime.pause = null;\n    }\n\n    async getLocation() {\n        if (this.gps.status != 'located') return null;\n\n        let location = {\n            latitude: await this.gps.lockedLatitude,\n            longitude: await this.gps.lockedLongitude,\n            accuracy: await this.gps.lockedAccuracy,\n        };\n\n        return JSON.stringify(location);\n    }\n\n    async checkIfSiteTooFar() {\n        if (!this.collector.fieldExists('project', 'force_location'))\n            return (this.siteTooFar = false);\n\n        if (!this.openWorktime) return (this.siteTooFar = true);\n\n        if (this.openWorktime.project.force_location == undefined)\n            await this.store.findRecord('project', this.openWorktime.project.id, { reload: true });\n        if (!this.openWorktime.project.force_location) return (this.siteTooFar = false);\n\n        if (!this.gps.getLockedPosition) return (this.siteTooFar = true);\n\n        let projectLocation = JSON.parse(this.openWorktime.project.location_map);\n        if (\n            !this.gps.withinAcceptedDistance(\n                { lat: projectLocation.latitude, lon: projectLocation.longitude },\n                {\n                    lat: this.gps.getLockedPosition.latitude,\n                    lon: this.gps.getLockedPosition.longitude,\n                },\n            )\n        )\n            return (this.siteTooFar = true);\n\n        this.siteTooFar = false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"i/+wgjIp\",\"block\":\"{\\\"symbols\\\":[\\\"@click\\\"],\\\"statements\\\":[[7,\\\"svg\\\",false],[12,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[12,\\\"width\\\",\\\"40\\\"],[12,\\\"height\\\",\\\"40\\\"],[12,\\\"viewBox\\\",\\\"0 0 60 60\\\"],[12,\\\"class\\\",\\\"timecard-edit-button\\\"],[3,\\\"action\\\",[[23,0,[]],[23,1,[]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"circle\\\",true],[10,\\\"id\\\",\\\"Ellipse_20\\\"],[10,\\\"data-name\\\",\\\"Ellipse 20\\\"],[10,\\\"cx\\\",\\\"30\\\"],[10,\\\"cy\\\",\\\"30\\\"],[10,\\\"r\\\",\\\"30\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Pencil\\\"],[10,\\\"d\\\",\\\"M20.094.25a2.245,2.245,0,0,0-1.625.656l-1,1.031,6.594,6.625,1-1.031a2.319,2.319,0,0,0,0-3.281L21.75.938A2.36,2.36,0,0,0,20.094.25Zm-3.75,2.594-1.562,1.5,6.875,6.875L23.25,9.75ZM13.781,5.438,2.969,16.156a.975.975,0,0,0-.5.625L.156,24.625a.975.975,0,0,0,1.219,1.219l7.844-2.312A.975.975,0,0,0,10,22.875L20.656,12.313,18,9.656h-.031L16.188,7.844Zm-9.625,12.5.531.531,2.594.219.125,2.531.656.656L3.844,23.094l-.937-.937Z\\\"],[10,\\\"transform\\\",\\\"translate(16.887 16.75)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/timecard/edit-button/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"xjJoFpum\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"fields\\\",\\\"fieldcomp\\\",\\\"field\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@timer\\\",\\\"@started\\\",\\\"@workhours\\\",\\\"@showFields\\\",\\\"@close\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_tracked\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"time\\\"],[8],[5,\\\"dash-board/widgets/timecard/clock\\\",[],[[\\\"@animate\\\"],[true]]],[0,\\\" \\\"],[1,[28,\\\"if\\\",[[23,10,[]],[28,\\\"duration-clock\\\",[[23,10,[]]],null],\\\"00:00:00\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"table\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.start\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[23,11,[]],false],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_today\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[28,\\\"if\\\",[[23,12,[]],[28,\\\"format-hours\\\",[[23,12,[]]],null],\\\"-\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"project\\\"],[8],[1,[23,8,[\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"collector/form-add/forms/worktime\\\",[],[[\\\"@only\\\",\\\"@record\\\",\\\"@close\\\",\\\"@preserveRecordOnDestroy\\\",\\\"@showSaved\\\"],[[23,13,[]],[23,8,[]],[23,14,[]],true,false]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field-cont\\\"],[8],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,5,[]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50\\\"],[8],[0,\\\"\\\\n                        \\\"],[6,[23,6,[]],[],[[\\\"@form\\\",\\\"@field\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@value\\\",\\\"@mandatory\\\"],[[23,7,[\\\"form\\\"]],[23,7,[\\\"name\\\"]],[23,8,[]],[28,\\\"fn\\\",[[23,9,[]],[23,7,[\\\"name\\\"]]],null],[28,\\\"get\\\",[[23,8,[]],[23,7,[\\\"name\\\"]]],null],[23,7,[\\\"mandatory\\\"]]]]],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[5,6]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field-cont\\\"],[8],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[]],\\\"expected `fieldcomp` to be a contextual component but found a string. Did you mean `(component fieldcomp)`? ('tt4/pods/components/dash-board/widgets/timecard/edit/template.hbs' @ L39:C26) \\\"],null]],[[\\\"field\\\"],[[23,4,[]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/timecard/edit/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"JarBmwur\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"fields\\\",\\\"fieldcomp\\\",\\\"record\\\",\\\"change\\\",\\\"field\\\",\\\"Fields\\\",\\\"Field\\\",\\\"Container\\\",\\\"FieldComponent\\\",\\\"@record\\\",\\\"@descriptionTooLong\\\",\\\"@onFieldChange\\\",\\\"@timer\\\",\\\"@started\\\",\\\"@workhours\\\",\\\"@siteTooFar\\\",\\\"@stop\\\",\\\"@edit\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_tracked\\\"],null],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"time\\\"],[8],[5,\\\"dash-board/widgets/timecard/clock\\\",[],[[\\\"@animate\\\"],[true]]],[0,\\\" \\\"],[1,[28,\\\"if\\\",[[23,14,[]],[28,\\\"duration-clock\\\",[[23,14,[]]],null],\\\"00:00:00\\\"],null],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"table\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.start\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[23,15,[]],false],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_today\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[28,\\\"if\\\",[[23,16,[]],[28,\\\"format-hours\\\",[[23,16,[]]],null],\\\"-\\\"],null],false],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"project\\\"],[8],[1,[23,11,[\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"collector/form-add/forms/worktime\\\",[],[[\\\"@only\\\",\\\"@sortFields\\\",\\\"@record\\\",\\\"@preserveRecordOnDestroy\\\"],[\\\"description,pause\\\",true,[23,11,[]],true]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,7,[]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-20\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[23,8,[\\\"translated_name\\\"]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"flex-item-80 field-\\\",[23,8,[\\\"name\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,8,[\\\"name\\\"]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[23,12,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[5,\\\"addon/field-container\\\",[],[[\\\"@record\\\",\\\"@form\\\",\\\"@field\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@value\\\"],[[23,11,[]],[23,8,[\\\"form\\\"]],[23,8,[\\\"name\\\"]],[28,\\\"fn\\\",[[23,13,[]],[23,8,[\\\"name\\\"]]],null],[23,8,[\\\"mandatory\\\"]],[28,\\\"get\\\",[[23,11,[]],[23,8,[\\\"name\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"let\\\",[[23,9,[\\\"fieldComponent\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,10,[]],[],[[\\\"@value\\\",\\\"@onChange\\\",\\\"@class\\\",\\\"@record\\\"],[[28,\\\"get\\\",[[23,11,[]],[23,8,[\\\"name\\\"]]],null],[23,9,[\\\"args\\\",\\\"onChange\\\"]],\\\"form-control\\\",[23,11,[]]]],{\\\"statements\\\":[],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[10]},null],[0,\\\"                            \\\"]],\\\"parameters\\\":[9]}],[0,\\\"\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,1,[\\\"fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-20\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[23,6,[\\\"translated_name\\\"]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"flex-item-80 field-\\\",[23,6,[\\\"name\\\"]]]]],[8],[0,\\\"\\\\n\\\\n                            \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"record\\\",\\\"change\\\"],[[28,\\\"hash\\\",null,[[\\\"features\\\",\\\"form\\\",\\\"name\\\",\\\"options\\\",\\\"translated_name\\\",\\\"type\\\",\\\"value\\\"],[[23,6,[\\\"features\\\"]],[23,6,[\\\"form\\\"]],[23,6,[\\\"name\\\"]],[23,6,[\\\"options\\\"]],[23,6,[\\\"translated_name\\\"]],[23,6,[\\\"type\\\"]],[28,\\\"get\\\",[[23,4,[]],[23,6,[\\\"name\\\"]]],null]]]],[23,4,[]],[23,5,[]]]]],false],[0,\\\"\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[2,3,4,5]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,17,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h5\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.gps.too_far\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column two-buttons\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 flex-center\\\"],[8],[0,\\\"\\\\n                \\\"],[5,\\\"stop-button\\\",[],[[\\\"@click\\\",\\\"@disabled\\\"],[[23,18,[]],[23,17,[]]]]],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25 flex-center flex-center-vertically\\\"],[8],[0,\\\"\\\\n                \\\"],[5,\\\"dash-board/widgets/timecard/edit-button\\\",[],[[\\\"@click\\\"],[[28,\\\"fn\\\",[[23,19,[]]],null]]]],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/timecard/end/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"vz5zCkI1\",\"block\":\"{\\\"symbols\\\":[\\\"@gpsStatus\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"searching\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"general.loading\\\"],null]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"worktime.location\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"located\\\"],null],\\\"text-success\\\",\\\"text-danger\\\"],null]],[8],[1,[28,\\\"standard-icon\\\",[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"located\\\"],null],\\\"ok\\\",\\\"remove\\\"],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/timecard/gps-indicator/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Gm59EnT+\",\"block\":\"{\\\"symbols\\\":[\\\"Form\\\",\\\"fields\\\",\\\"fieldcomp\\\",\\\"field\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@record\\\",\\\"@timer\\\",\\\"@started\\\",\\\"@workhours\\\",\\\"@showFields\\\",\\\"@siteTooFar\\\",\\\"@start\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_tracked\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"time\\\"],[8],[1,[22,\\\"dash-board/widgets/timecard/clock\\\"],false],[0,\\\" \\\"],[1,[28,\\\"if\\\",[[23,9,[]],[28,\\\"duration-clock\\\",[[23,9,[]]],null],\\\"00:00:00\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"table\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.start\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[23,10,[]],false],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.time_today\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[28,\\\"if\\\",[[23,11,[]],[28,\\\"format-hours\\\",[[23,11,[]]],null],\\\"-\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"collector/form-add/forms/worktime\\\",[],[[\\\"@only\\\",\\\"@record\\\",\\\"@preserveRecordOnDestroy\\\"],[[23,12,[]],[23,8,[]],true]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-add-worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field-cont\\\"],[8],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,5,[]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"length\\\"]],1],null],\\\"flex-item-100\\\",\\\"flex-item-50\\\"],null]],[8],[0,\\\"\\\\n                        \\\"],[6,[23,6,[]],[],[[\\\"@record\\\",\\\"@form\\\",\\\"@field\\\",\\\"@onChange\\\",\\\"@value\\\",\\\"@mandatory\\\"],[[28,\\\"readonly\\\",[[23,8,[]]],null],[23,7,[\\\"form\\\"]],[23,7,[\\\"name\\\"]],[28,\\\"fn\\\",[[23,1,[\\\"OnChange\\\"]],[23,7,[\\\"name\\\"]]],null],[28,\\\"get\\\",[[23,8,[]],[23,7,[\\\"name\\\"]]],null],[23,7,[\\\"mandatory\\\"]]]]],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[5,6]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column field-cont\\\"],[8],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,2,[\\\"length\\\"]],1],null],\\\"flex-item-100\\\",\\\"flex-item-50\\\"],null]],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[]],\\\"expected `fieldcomp` to be a contextual component but found a string. Did you mean `(component fieldcomp)`? ('tt4/pods/components/dash-board/widgets/timecard/start/template.hbs' @ L39:C26) \\\"],null]],[[\\\"field\\\"],[[23,4,[]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[2,3]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,13,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h5\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.gps.too_far\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[5,\\\"play-button\\\",[],[[\\\"@click\\\",\\\"@disabled\\\"],[[23,14,[]],[23,13,[]]]]],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/timecard/start/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"NH3ammiC\",\"block\":\"{\\\"symbols\\\":[\\\"@additionalClass\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\",\\\"@betaFeatureToggle\\\",\\\"@betaValue\\\"],[[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,9,[]],false,true]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"clockcard-25\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"dump-dev\\\",[],[[\\\"@text\\\"],[\\\"new clockcard v2.5\\\"]]],[0,\\\"\\\\n    \\\"],[5,\\\"clockcard\\\",[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\\n        \\\"],[5,\\\"dash-board/widget-spinner\\\",[],[[\\\"@promise\\\",\\\"@skeletonRows\\\"],[[23,0,[\\\"promise\\\"]],6]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"dash-board/widgets/timecard/edit\\\",[],[[\\\"@record\\\",\\\"@started\\\",\\\"@workhours\\\",\\\"@timer\\\",\\\"@showFields\\\",\\\"@close\\\",\\\"@onFieldChange\\\"],[[23,0,[\\\"openWorktime\\\"]],[23,0,[\\\"started\\\"]],[23,0,[\\\"workHoursToday\\\"]],[23,0,[\\\"timer\\\"]],[23,0,[\\\"showFieldsOnEdit\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[24,[\\\"showEdit\\\"]]],null],false],null],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"open\\\"],null]]]],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"openWorktime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"nextContainerOnTop\\\"]],\\\"hidden\\\"],null]],[8],[0,\\\"\\\\n                \\\"],[5,\\\"dash-board/widgets/timecard/end\\\",[],[[\\\"@record\\\",\\\"@started\\\",\\\"@workhours\\\",\\\"@timer\\\",\\\"@stop\\\",\\\"@edit\\\",\\\"@onFieldChange\\\",\\\"@siteTooFar\\\",\\\"@descriptionTooLong\\\"],[[23,0,[\\\"openWorktime\\\"]],[23,0,[\\\"started\\\"]],[23,0,[\\\"workHoursToday\\\"]],[23,0,[\\\"timer\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"stop\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"showEditView\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"open\\\"],null],[23,0,[\\\"siteTooFar\\\"]],[23,0,[\\\"descriptionTooLong\\\"]]]]],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"next-container \\\",[23,1,[]],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"showNext\\\"]],\\\"animate\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"nextContainerOnTop\\\"]],\\\"normalPosition\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column tabs\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25 sidetab\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showNext\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"closeNext\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Back\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"general.back\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.gps||products.gps_force\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[5,\\\"dash-board/widgets/timecard/gps-indicator\\\",[],[[\\\"@gpsStatus\\\"],[[23,0,[\\\"gps\\\",\\\"status\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"flex-item-50 tab flex-center\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openNext\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.next\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"general.worktime\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25 sidetab\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[5,\\\"dash-board/widgets/timecard/start\\\",[],[[\\\"@record\\\",\\\"@started\\\",\\\"@workhours\\\",\\\"@showFields\\\",\\\"@start\\\",\\\"@onFieldChange\\\",\\\"@siteTooFar\\\"],[[23,0,[\\\"newWorktime\\\"]],[23,0,[\\\"started\\\"]],[23,0,[\\\"workHoursToday\\\"]],[23,0,[\\\"showFieldsOnStart\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"startNext\\\"]]],null],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"new\\\"],null],[23,0,[\\\"siteTooFar\\\"]]]]],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"newWorktime\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"dash-board/widgets/timecard/start\\\",[],[[\\\"@record\\\",\\\"@started\\\",\\\"@workhours\\\",\\\"@showFields\\\",\\\"@start\\\",\\\"@siteTooFar\\\",\\\"@onFieldChange\\\"],[[23,0,[\\\"newWorktime\\\"]],[23,0,[\\\"started\\\"]],[23,0,[\\\"workHoursToday\\\"]],[23,0,[\\\"showFieldsOnStart\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"start\\\"]]],null],[23,0,[\\\"siteTooFar\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"onFieldChange\\\"]],\\\"new\\\"],null]]]],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.gps||products.gps_force\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[4,\\\"unless\\\",[[28,\\\"and\\\",[[23,0,[\\\"openWorktime\\\"]],[28,\\\"not\\\",[[24,[\\\"showNext\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\" \\\"],[5,\\\"dash-board/widgets/timecard/gps-indicator\\\",[],[[\\\"@gpsStatus\\\"],[[23,0,[\\\"gps\\\",\\\"status\\\"]]]]],[0,\\\" \\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/timecard/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action, set } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class TvStatusComponent extends Component {\n    @service ttapi;\n    @service evented;\n    @service intl;\n    @service store;\n    @service router;\n    @service localstorage;\n    @service analytics;\n    @service('collector-service') Collector;\n\n    @tracked pieData;\n    @tracked project;\n\n    get styleNamespace() {\n        return podNames['dash-board/widgets/tv-status'];\n    }\n\n    get projectField() {\n        let field = {};\n        if (this.Collector.fieldExists('worktime', 'project')) {\n            field = this.Collector.field('worktime', 'project');\n        } else {\n            field = this.Collector.field('presence', 'project');\n        }\n        if (field) {\n            field.prompt = this.intl.t('widget.tv-status.select_project');\n            field.value = this.project;\n        }\n        return field;\n    }\n\n    async getPieData() {\n        const response = await this.ttapi.request('api/project/employersTvStatus', {\n            data: { project: this.project },\n        });\n\n        const employers = response?.employers ?? [];\n        if (employers.length === 0) return [];\n\n        // Count employers by status\n        const statusCounts = employers.reduce((acc, employer) => {\n            const status = employer.tv_status || 'missing';\n            acc[status] = (acc[status] || 0) + 1;\n            return acc;\n        }, {});\n\n        this.statuses = Object.keys(statusCounts);\n\n        // Build chart data: [header, ...data rows]\n        const chartHeader = [\n            this.intl.t('submenu.project.tv_status'),\n            this.intl.t('submenu.project.tv_status')\n        ];\n\n        const chartData = Object.entries(statusCounts).map(([status, count]) => {\n            const normalizedStatus = status.replace(/ä/g, 'a').replace(/ö/g, 'o');\n            return [this.intl.t('employer.tv_status.' + normalizedStatus), count];\n        });\n\n        return [chartHeader, ...chartData];\n    }\n\n    constructor() {\n        super(...arguments);\n        this.project = this.localstorage.getItem('widget-tv-status-filter')\n            ? this.localstorage.getItem('widget-tv-status-filter')\n            : null;\n        this.project = this.args.project ? this.args.project : this.project;\n        this.pieData = this.getPieData();\n        this.pieOptions = {\n            height: 220,\n            width: 400,\n            pieSliceTextStyle: {\n                color: 'black',\n            },\n        };\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n        this.evented.on('dashboardProjectChanged', this, 'dashboardProjectChanged');\n    }\n\n    @action\n    filterChange(value, field) {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Change project',\n            label: 'Tv-status widget',\n        });\n        if (field) {\n            if (!value) set(this, field, null);\n            else set(this, field, value.id);\n        }\n        this.localstorage.setItem('widget-tv-status-filter', this.project);\n        this.pieData = this.getPieData();\n    }\n\n    @action\n    onSelect(value) {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Pie clicked',\n            label: 'Tv-status widget',\n        });\n\n        this.router.transitionTo('projects.edit.tv-status', this.project, {\n            queryParams: {\n                status: this.statuses[value],\n            },\n        });\n    }\n\n    willDestroy() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n        this.evented.off('dashboardProjectChanged', this, 'dashboardProjectChanged');\n    }\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime') this.pieData = this.getPieData();\n    }\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        this.pieData = this.getPieData();\n    }\n\n    dashboardProjectChanged() {\n        this.project = this.args.project ? this.args.project : null;\n        this.pieData = this.getPieData();\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"X4Eya9CE\",\"block\":\"{\\\"symbols\\\":[\\\"data\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,9,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n    \\\"],[5,\\\"dash-board/widget-spinner\\\",[],[[\\\"@promise\\\",\\\"@skeletonRows\\\"],[[23,0,[\\\"pieData\\\"]],5]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"fixed-flex-filters\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n              \\\"],[5,\\\"collector/field-comp\\\",[],[[\\\"@field\\\",\\\"@change\\\",\\\"@_class\\\",\\\"@value\\\",\\\"@usePowerDropdown\\\"],[[23,0,[\\\"projectField\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"filterChange\\\"]]],null],\\\"\\\",[23,0,[\\\"project\\\"]],true]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"project\\\"]]],null,{\\\"statements\\\":[[4,\\\"with\\\",[[28,\\\"await\\\",[[23,0,[\\\"pieData\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pie-chart\\\"],[8],[0,\\\"\\\\n                \\\\n                \\\"],[5,\\\"chart-comp\\\",[],[[\\\"@data\\\",\\\"@type\\\",\\\"@colors\\\",\\\"@options\\\",\\\"@onSelect\\\"],[[23,1,[]],\\\"pie\\\",[28,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.generic_timetracker\\\"],null],\\\"#5FCA8A,#FCD498,#FFB6B6,#FFF171,#92A1EF,#C894CE\\\",\\\"#A3C8C1,#F1E5C0,#F98B73,#F3DB87,#A6B9EE,#E3C0E7\\\"],null],[23,0,[\\\"pieOptions\\\"]],[28,\\\"action\\\",[[23,0,[]],[23,0,[\\\"onSelect\\\"]]],null]]],{\\\"statements\\\":[],\\\"parameters\\\":[]}],[0,\\\"\\\\n      \\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"centered-data\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.no-content\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"centered-data\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"widget.tv-status.select_project\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/tv-status/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { action, set } from '@ember/object';\n\nexport default class WorkingNowComponent extends Component {\n    @service ttapi;\n    @service('collector-service') Collector;\n    @service evented;\n    @service intl;\n    @service analytics;\n\n    @tracked data;\n    @tracked page;\n    @tracked promise;\n    @tracked project;\n\n    get styleNamespace() {\n        return podNames['dash-board/widgets/working-now'];\n    }\n\n    get projectField() {\n        let field = this.Collector.field(this.form, 'project');\n        if (field) {\n            field.value = this.project;\n            field.prompt = 'general.all_projects';\n        }\n        return field;\n    }\n\n    get usersField() {\n        let field = this.Collector.field(this.form, 'user');\n        if (field) {\n            field.value = this.user;\n            field.prompt = 'general.all_users';\n        }\n        return field;\n    }\n\n    get employersField() {\n        let field = this.Collector.field(this.form, 'employer');\n        if (field) {\n            field.value = this.employer;\n            field.prompt = 'general.all_employers';\n        }\n        return field;\n    }\n\n    get pageCount() {\n        if (!this.data) return null;\n        return Math.ceil(this.data.count / this.limit);\n    }\n\n    get translated_headers() {\n        return this.headers.map((header) =>\n            this.intl.t('widget.working-now.table-header.' + header),\n        );\n    }\n\n    get form() {\n        return this.Collector.testNeedsOne('worktime') ? 'worktime' : 'presence';\n    }\n\n    async setData() {\n        this.data = await this.ttapi.request('api/workingNow', {\n            data: {\n                project: this.project,\n                employer: this.employer,\n                user: this.user,\n                offset: this.page,\n            },\n        });\n    }\n\n    constructor() {\n        super(...arguments);\n        this.promise = this.setData();\n        this.setHeaders();\n        this.limit = 25;\n        this.page = 1;\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n        this.evented.on('dashboardProjectChanged', this, 'dashboardProjectChanged');\n    }\n\n    @action\n    filterchanged(value, field) {\n        if (field) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Change ${field} filter`,\n                label: 'Working-now widget',\n            });\n            if (!value) set(this, field, null);\n            else set(this, field, value.id);\n        }\n        this.page = 1;\n        this.promise = this.setData();\n    }\n\n    @action\n    pageChange(page) {\n        this.page = page;\n        this.promise = this.setData();\n    }\n\n    willDestroy() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n        this.evented.off('dashboardProjectChanged', this, 'dashboardProjectChanged');\n    }\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime' || params.type === 'presence') this.promise = this.setData();\n    }\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        this.promise = this.setData();\n    }\n\n    dashboardProjectChanged() {\n        this.project = this.args.project ? this.args.project : null;\n        this.promise = this.setData();\n    }\n\n    setHeaders() {\n        this.headers = ['user', 'project', 'starttime'];\n        if (this.Collector.testNeedsOne('employer')) this.headers.insertAt(1, 'employer');\n    }\n    // if headers contain \"starttime\" and customer doesn't have worktime module, change \"starttime\" to \"in\" and return modified headers but don't change original headers\n    get pdf_headers() {\n        if (this.headers.includes('starttime') && !this.Collector.testNeedsOne('worktime')) {\n            let headers = this.headers.slice();\n            headers[headers.indexOf('starttime')] = 'in';\n            return headers;\n        }\n        return this.headers;\n    }\n    // if data contains \"starttime\" and customer doesn't have worktime module, change \"starttime\" to \"in\" and return modified data but don't change original data\n    get pdf_data() {\n        // check that:\n        // 1. data has rows\n        // 2. data has rows[0]\n        // 3. rows[0] has starttime\n        // 4. customer doesn't have worktime module\n        if (\n            this.data?.rows &&\n            this.data.rows[0] &&\n            this.data.rows[0].starttime &&\n            !this.Collector.testNeedsOne('worktime')\n        ) {\n            let data = this.data.rows.slice();\n            data.forEach((row) => {\n                row.in = row.starttime;\n                delete row.starttime;\n            });\n            return data;\n        }\n        return this.data ? this.data.rows : null;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"iDLAggCE\",\"block\":\"{\\\"symbols\\\":[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,1,[]],[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n    \\\"],[5,\\\"dash-board/widget-spinner\\\",[],[[\\\"@promise\\\",\\\"@skeletonRows\\\"],[[23,0,[\\\"promise\\\"]],3]]],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"needs\\\",[\\\"employer\\\"],null],\\\"auto-flex-filters\\\",\\\"fixed-flex-filters\\\"],null]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"collector/field-comp\\\",[],[[\\\"@field\\\",\\\"@change\\\",\\\"@_class\\\"],[[23,0,[\\\"usersField\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"filterchanged\\\"]]],null],\\\"\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"employer\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"collector/field-comp\\\",[],[[\\\"@field\\\",\\\"@change\\\",\\\"@_class\\\"],[[23,0,[\\\"employersField\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"filterchanged\\\"]]],null],\\\"\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"collector/field-comp\\\",[],[[\\\"@field\\\",\\\"@change\\\",\\\"@_class\\\",\\\"@value\\\",\\\"@usePowerDropdown\\\"],[[23,0,[\\\"projectField\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"filterchanged\\\"]]],null],\\\"\\\",[23,0,[\\\"project\\\"]],true]],{\\\"statements\\\":[],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"dash-board/table\\\",[],[[\\\"@data\\\",\\\"@headers\\\",\\\"@form\\\",\\\"@export\\\"],[[23,0,[\\\"data\\\",\\\"rows\\\"]],[23,0,[\\\"headers\\\"]],\\\"working-now\\\",true]],{\\\"statements\\\":[],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actions\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"dash-board/export\\\",[],[[\\\"@data\\\",\\\"@headers\\\",\\\"@translated_headers\\\",\\\"@form\\\"],[[23,0,[\\\"pdf_data\\\"]],[23,0,[\\\"pdf_headers\\\"]],[23,0,[\\\"translated_headers\\\"]],[23,0,[\\\"form\\\"]]]]],[0,\\\"\\\\n        \\\"],[5,\\\"pagi-nate\\\",[],[[\\\"@rowsPerPage\\\",\\\"@currentPage\\\",\\\"@pageCount\\\",\\\"@pageChange\\\"],[[23,0,[\\\"limit\\\"]],[23,0,[\\\"page\\\"]],[23,0,[\\\"pageCount\\\"]],[23,0,[\\\"pageChange\\\"]]]]],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/working-now/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment-timezone';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    evented: service(),\n    notifications: service(),\n    intl: service(),\n    analytics: service(),\n\n    loading: false,\n\n    workweek: computed('data', async function () {\n        const worktimes = await this.data;\n        return [0, 1, 2, 3, 4, 5, 6].map((index) => {\n            const date = moment().startOf('isoWeek').add(index, 'days');\n            return {\n                name: this.capitalize(date.format('dd')),\n                active: moment().isSame(date, 'day'),\n                hours: worktimes\n                    .filter((worktime) => moment(worktime.date).isSame(date, 'day'))\n                    .reduce((hours, worktime) => (hours += worktime.work_hours), 0),\n            };\n        });\n    }),\n\n    hoursToday: computed('data', async function () {\n        return (await this.data)\n            .filter((worktime) => moment(worktime.date).isSame(moment(), 'day'))\n            .reduce((hours, worktime) => (hours += worktime.work_hours), 0);\n    }),\n\n    hourSum: computed('workweek', async function () {\n        return (await this.workweek).reduce((hours, day) => (hours += day.hours), 0);\n    }),\n\n    init() {\n        this._super();\n\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n    },\n\n    didInsertElement() {\n        set(this, 'data', this.loadWorktimeData());\n    },\n\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n    },\n\n    actions: {\n        notifySaved() {\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n        },\n        showWorktimeModal() {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: 'Add worktime clicked',\n                label: 'worktime add widget',\n            });\n            set(this, 'addWorktimeModal', true);\n        },\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime') set(this, 'data', this.loadWorktimeData());\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        set(this, 'data', this.loadWorktimeData());\n    },\n\n    async loadWorktimeData() {\n        return await this.store.query('worktime', {\n            user: get(this, 'session.currentUser.id'),\n            date:\n                moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                '_' +\n                moment().endOf('week').format('YYYY-MM-DD'),\n        });\n    },\n\n    capitalize(str) {\n        return str.charAt(0).toUpperCase() + str.slice(1);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"nzNyGxLS\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\",\\\"&default\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,2,[]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]],[23,7,[]],[23,8,[]],[23,9,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[14,10],[0,\\\"\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[24,[\\\"data\\\"]],6]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"column\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showWorktimeModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"calendar.add_worktime\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"hours-today\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.worktime-add.today\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"if\\\",[[28,\\\"await\\\",[[23,0,[\\\"hoursToday\\\"]]],null],[28,\\\"format-hours\\\",[[28,\\\"await\\\",[[23,0,[\\\"hoursToday\\\"]]],null]],null],\\\"-\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"column\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"week\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"header\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.worktime-add.week\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"workweek\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"day \\\",[28,\\\"if\\\",[[23,1,[\\\"active\\\"]],\\\"active\\\"],null]]]],[8],[7,\\\"div\\\",true],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\" \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"if\\\",[[23,1,[\\\"hours\\\"]],[28,\\\"format-hours\\\",[[23,1,[\\\"hours\\\"]]],null],\\\"-\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"foot\\\"],[8],[1,[28,\\\"t\\\",[\\\"widget.worktime-add.sum\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"if\\\",[[28,\\\"await\\\",[[23,0,[\\\"hourSum\\\"]]],null],[28,\\\"format-hours\\\",[[28,\\\"await\\\",[[23,0,[\\\"hourSum\\\"]]],null]],null],\\\"-\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"addWorktimeModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"close\\\",\\\"header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"addWorktimeModal\\\"]]],null],false],null],[28,\\\"t\\\",[\\\"calendar.add_worktime\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/form-add/forms/worktime\\\",null,[[\\\"showSaved\\\",\\\"rowAdded\\\",\\\"close\\\"],[false,[28,\\\"action\\\",[[23,0,[]],\\\"notifySaved\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"addWorktimeModal\\\"]]],null],false],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/worktime-add/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    intl: service(),\n    store: service(),\n    session: service(),\n    ttapi: service(),\n    gui: service(),\n    evented: service(),\n    analytics: service(),\n\n    minDate: computed('center', function () {\n        if (!this.Collector.testNeedsOne('worktime')) return;\n        return new Date(this.center.getFullYear(), this.center.getMonth(), 1);\n    }),\n\n    maxDate: computed('center', function () {\n        if (!this.Collector.testNeedsOne('worktime')) return;\n        return new Date(this.center.getFullYear(), this.center.getMonth() + 1, 0);\n    }),\n\n    startOfMonth: computed('center', function () {\n        return moment(this.center).startOf('month').format('YYYY-MM-DD');\n    }),\n\n    endOfMonth: computed('center', function () {\n        return moment(this.center).endOf('month').format('YYYY-MM-DD');\n    }),\n\n    modalDate: computed('selected', function () {\n        let date = moment(this.selected).format('YYYY-MM-DD');\n        return date + '_' + date;\n    }),\n\n    navMonth: computed('center', 'intl.primaryLocale', function () {\n        return moment(this.center).format('MMMM YYYY');\n    }),\n\n    modalHeader: computed('selected', 'intl.primaryLocale', function () {\n        return moment(this.selected).format('dd DD[.]MM[.]YYYY');\n    }),\n\n    formattedDate: computed('selected', function () {\n        return moment(this.selected).format('YYYY-MM-DD');\n    }),\n\n    init() {\n        this._super();\n\n        let date = new Date();\n        this.center = new Date(date.getFullYear(), date.getMonth(), 1);\n        // this.specialDays = []\n        let forms = [];\n        if (this.Collector.testNeedsOne('worktime')) forms.push('worktime');\n        if (this.Collector.testNeedsOne('abcense')) forms.push('abcense');\n        this.forms = forms;\n\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n        this.evented.on('onResumed', this, 'onResumed');\n    },\n\n    didInsertElement() {\n        this.setAllData();\n    },\n\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n        this.evented.off('onResumed', this, 'onResumed');\n    },\n\n    actions: {\n        changeCenter(date) {\n            set(this, 'center', date);\n            this.setAllData();\n        },\n        changeMonth(amount) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Change month`,\n                label: 'worktime-calendar widget',\n            });\n            let center = get(this, 'center');\n            let newCenter = new Date(center.setMonth(center.getMonth() + amount));\n            set(this, 'center', newCenter);\n            this.setAllData();\n        },\n        selectDate(date) {\n            this.analytics.trackEvent({\n                category: 'Dashboard',\n                action: `Date clicked`,\n                label: 'worktime-calendar widget',\n            });\n            if (this.dayToBeCopied) {\n                this.dayToBeCopied(date);\n                return;\n            }\n            set(this, 'selected', date);\n        },\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime') set(this, 'worktimes', this.getWorktimes());\n        if (params.type === 'abcense') set(this, 'absences', this.getAbsences());\n    },\n\n    onResumed(params) {\n        // do not refresh if resume event was triggered last time no more than 5 minutes ago\n        // params.force is used by manual refresh button and autorefresh\n        if (params.duration < 5 * 60 && !params.force) return;\n        let center = get(this, 'center');\n        let date = new Date();\n        // if month shown in calendar is current month, update it to reflect possible day change\n        if (center.getMonth() === date.getMonth()) {\n            set(this, 'center', new Date(date.getFullYear(), date.getMonth(), 1));\n        }\n        this.setAllData();\n    },\n\n    setAllData() {\n        set(this, 'worktimes', this.getWorktimes());\n        set(this, 'absences', this.getAbsences());\n        set(this, 'specialDays', this.getSpecialDays());\n        set(this, 'weekNumbers', this.getweekNumbersForMonth());\n    },\n\n    async getWorktimes() {\n        if (!this.Collector.testNeedsOne('worktime')) return;\n        const params = {\n            date: this.startOfMonth + '_' + this.endOfMonth,\n            user: this.session.currentUser.id,\n            sideload: true,\n            limit: 500,\n        };\n        let query = await this.store.query('worktime', params);\n        let days = {};\n        let sum = 0;\n        query.forEach((worktime) => {\n            let date = get(worktime, 'date');\n\n            if (days[date]) days[date] += get(worktime, 'work_hours');\n            else days[date] = get(worktime, 'work_hours');\n\n            sum += get(worktime, 'work_hours');\n        });\n        return { days, sum };\n    },\n\n    async getAbsences() {\n        if (!this.Collector.testNeedsOne('abcense')) return;\n        const params = {\n            startdate: this.startOfMonth,\n            enddate: this.endOfMonth,\n            order: 'starttime,endtime',\n            user: this.session.currentUser.id,\n            sideload: ['abcensetype.name'],\n        };\n        let absences = await this.ttapi._get('absence/split', params);\n\n        let days = {};\n        let sum = 0;\n\n        absences.forEach((absence) => {\n            let date = get(absence, 'date');\n            let hours = get(absence, 'hours');\n\n            // Handle absences with exporttype==days which have their hours always set to 1.\n            // Calculate hours based on total absence hours divided by amount of days.\n            const dayamount = get(absence, 'dayamount');\n            if (absence.abcensetype?.exporttype === 'days' && dayamount > 0) {\n                hours = get(absence, 'absence_hours') / dayamount;\n            }\n\n            if (days[date]) {\n                days[date] += hours;\n            } else {\n                days[date] = hours;\n            }\n\n            sum += hours;\n        });\n        return { days, sum };\n    },\n\n    async getSpecialDays() {\n        const worktimegroup = await this.session.currentUser.worktimegroup;\n        let params = { date: this.startOfMonth + '_' + this.endOfMonth };\n        if (worktimegroup) params.worktimegroup = worktimegroup.id;\n        let workdays = await this.store.query('workday-day', params);\n        let days = {};\n        workdays.forEach((day) => {\n            if (day.minutes === 0) days[get(day, 'date')] = get(day, 'date');\n        });\n        return days;\n    },\n\n    // https://stackoverflow.com/questions/2483719/get-weeks-in-month-through-javascript\n    getweekNumbersForMonth() {\n        var firstOfMonth = moment(this.center).startOf('month');\n        var lastOfMonth = moment(this.center).endOf('month');\n        var day = firstOfMonth.day() || 6;\n        day = day === 1 ? 0 : day;\n        if (day) {\n            day--;\n        }\n        var diff = 7 - day;\n        var lastDate = lastOfMonth.date();\n        if (lastOfMonth.day() === 1) {\n            diff--;\n        }\n        var weeksInMonth = Math.ceil((lastDate - diff) / 7);\n        let weeks = [];\n        for (var i = 0; i < weeksInMonth + 1; i++) {\n            weeks.pushObject(\n                moment(this.center)\n                    .startOf('month')\n                    .add(i * 7, 'day')\n                    .isoWeek(),\n            );\n        }\n        return weeks;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"bn4OWDgA\",\"block\":\"{\\\"symbols\\\":[\\\"table\\\",\\\"calendar\\\",\\\"day\\\",\\\"absence\\\",\\\"worktime\\\",\\\"week\\\",\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],\\\"statements\\\":[[5,\\\"dash-board/base-widget\\\",[],[[\\\"@onremove\\\",\\\"@dropped\\\",\\\"@name\\\",\\\"@editing\\\",\\\"@icon\\\",\\\"@header\\\",\\\"@position\\\",\\\"@moveWidget\\\"],[[23,7,[]],[23,8,[]],[23,9,[]],[23,10,[]],[23,11,[]],[23,12,[]],[23,13,[]],[23,14,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"promise\\\",\\\"skeletonRows\\\"],[[28,\\\"promise-all\\\",[[24,[\\\"worktimes\\\"]],[24,[\\\"absences\\\"]],[24,[\\\"specialDays\\\"]]],null],22]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"hideStatictics\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-worktime-sum\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-sum-text\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"general.worktimes\\\"],null],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"if\\\",[[28,\\\"await\\\",[[28,\\\"promise-all\\\",[[24,[\\\"worktimes\\\"]],[24,[\\\"absences\\\"]],[24,[\\\"specialDays\\\"]]],null]],null],[28,\\\"format-hours\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"worktimes\\\"]]],null],\\\"sum\\\"],null],\\\"0:00h\\\"],null]],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"hideStatictics\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-absence-sum\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-sum-text\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"general.absences\\\"],null],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"if\\\",[[28,\\\"await\\\",[[28,\\\"promise-all\\\",[[24,[\\\"worktimes\\\"]],[24,[\\\"absences\\\"]],[24,[\\\"specialDays\\\"]]],null]],null],[28,\\\"format-hours\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"absences\\\"]]],null],\\\"sum\\\"],null],\\\"0:00h\\\"],null]],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-weeknumbers-container\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-weeknumbers-day-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.week_abbr\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[28,\\\"promise-all\\\",[[24,[\\\"weekNumbers\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-week-number\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-week-span\\\"],[8],[1,[23,6,[]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column widget-worktime-calendar-week-container\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"power-calendar\\\",[],[[\\\"@locale\\\",\\\"@center\\\",\\\"@onCenterChange\\\",\\\"@selected\\\",\\\"@onSelect\\\"],[[23,0,[\\\"intl\\\",\\\"primaryLocale\\\"]],[23,0,[\\\"center\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeCenter\\\"],[[\\\"value\\\"],[\\\"date\\\"]]],[23,0,[\\\"selected\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"selectDate\\\"],[[\\\"value\\\"],[\\\"date\\\"]]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\\n        \\\"],[6,[23,2,[\\\"days\\\"]],[],[[\\\"@startOfWeek\\\",\\\"@minDate\\\",\\\"@maxDate\\\"],[1,[23,0,[\\\"minDate\\\"]],[23,0,[\\\"maxDate\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-pending\\\",[[28,\\\"promise-all\\\",[[24,[\\\"worktimes\\\"]],[24,[\\\"absences\\\"]],[24,[\\\"specialDays\\\"]]],null]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[\\\"isCurrentMonth\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-day-number\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"strong\\\",true],[11,\\\"class\\\",[29,[\\\"\\\\n                                \\\",[28,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-sunday\\\",[[23,3,[\\\"date\\\"]]],null],[23,3,[\\\"isCurrentMonth\\\"]]],null],\\\"sunday\\\"],null],\\\"\\\\n                                \\\",[28,\\\"if\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"specialDays\\\"]]],null],[23,3,[\\\"id\\\"]]],null],\\\"specialDay\\\"],null],\\\"\\\\n                                \\\",[28,\\\"unless\\\",[[23,3,[\\\"isCurrentMonth\\\"]],\\\"lastMonth\\\"],null],\\\"\\\\n                            \\\"]]],[8],[0,\\\"\\\\n                                \\\"],[1,[23,3,[\\\"number\\\"]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\\n\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"get\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"worktimes\\\"]]],null],\\\"days\\\"],null],[23,3,[\\\"id\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-item worktime-item\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"format-hours\\\",[[23,5,[]],0,true],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"get\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"absences\\\"]]],null],\\\"days\\\"],null],[23,3,[\\\"id\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"widget-worktime-calendar-item absence-item\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"format-hours\\\",[[23,4,[]],0,true],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\\n\\\\n\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n        \\\"],[2,\\\" custom <calendar.nav /> \\\"],[0,\\\"\\\\n        \\\"],[7,\\\"nav\\\",true],[10,\\\"class\\\",\\\"ember-power-calendar-nav\\\"],[8],[0,\\\"\\\\n            \\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn-icon\\\"],[12,\\\"name\\\",\\\"calendar-nav-last-month\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeMonth\\\",-1]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"vismaicon vismaicon-dynamic vismaicon-move-left-circle\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"ember-power-calendar-nav-title\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[23,0,[\\\"navMonth\\\"]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn-icon\\\"],[12,\\\"name\\\",\\\"calendar-nav-next-month\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeMonth\\\",1]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"vismaicon vismaicon-dynamic vismaicon-move-right-circle\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"selected\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"isPreviousDayCopyComponent\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@header\\\",\\\"@close\\\"],[[23,0,[\\\"modalHeader\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"selected\\\"]]],[[\\\"value\\\"],[null]]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"workday-summary\\\",[],[[\\\"@user\\\",\\\"@day\\\",\\\"@date\\\",\\\"@addForms\\\",\\\"@autoclose\\\",\\\"@close\\\"],[[23,0,[\\\"session\\\",\\\"currentUser\\\",\\\"id\\\"]],[23,0,[\\\"formattedDate\\\"]],[23,0,[\\\"modalDate\\\"]],[23,0,[\\\"forms\\\"]],true,[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"selected\\\"]]],[[\\\"value\\\"],[null]]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"edit\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"add\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/dash-board/widgets/worktime-calendar/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/database-multiple-filter/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Component;\n\nimport Ember from 'ember';\n\nComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    mySites: Ember.inject.service(),\n    //which filter options are affected by query params\n    linked_fields: ['worktime.user'],\n    placeholder: Em.computed(function () {\n        if (!this.get('filter.prompt')) {\n            return this.get('intl').t(this.get('filter.form') + '.' + this.get('filter.field'));\n        }\n        return this.get('intl').t(this.get('filter.prompt'));\n    }),\n    show_deleted: false,\n    salaryTypeFields: ['abcensetype', 'worktype'],\n\n    //must have observer to observe filter clear\n    valueObs: Em.observer('filter.value', function () {\n        if (Em.isEmpty(this.get('filter.value'))) {\n            this.set('row', []);\n            return this.sendAction('change', [], this.get('filter.field'));\n        }\n    }),\n    init: function () {\n        var filter_ids, promise_arr, selected_rows;\n        this._super();\n        if (this.get('filter.name') && !this.get('filter.field')) {\n            this.set('filter.field', this.get('filter.name'));\n        }\n        if (!Em.isEmpty(this.get('filter.value'))) {\n            filter_ids = [];\n            if (typeof this.get('filter.value') === 'string') {\n                filter_ids = this.get('filter.value').split(',');\n            }\n            selected_rows = [];\n            promise_arr = [];\n            return this.get('options').then((options) => {\n                filter_ids.forEach((filter_id) => {\n                    var sel_opt;\n                    sel_opt = options.findBy('id', filter_id);\n                    //if option not found in list already\n                    if (Em.isEmpty(sel_opt)) {\n                        promise_arr.push(\n                            this.get('Collector').findFormRelations(\n                                this.get('filter.form'),\n                                this.get('filter.field'),\n                                {\n                                    id: filter_id,\n                                },\n                            ),\n                        );\n                        return promise_arr.push(\n                            this.get('Collector').findFormRelations(\n                                this.get('filter.form'),\n                                this.get('filter.field'),\n                                {\n                                    id: filter_id,\n                                    row_info_status: 'removed',\n                                },\n                            ),\n                        );\n                    } else {\n                        return selected_rows.push(sel_opt);\n                    }\n                });\n                if (!Em.isEmpty(promise_arr)) {\n                    return Ember.RSVP.Promise.all(promise_arr).then((rows) => {\n                        //if second row not empty = show deleted is selected\n                        if (!Em.isEmpty(rows[1])) {\n                            this.set('show_deleted', true);\n                        }\n                        rows.forEach((rowobj) => {\n                            var obj, row, text;\n                            row = rowobj.get('firstObject');\n                            if (!Em.isEmpty(row)) {\n                                text = this.getText(row);\n                                obj = {\n                                    id: row.get('id'),\n                                    name: text,\n                                };\n                                return selected_rows.push(obj);\n                            }\n                        });\n                        return this.set('row', selected_rows);\n                    });\n                } else {\n                    return this.set('row', selected_rows);\n                }\n            });\n        }\n    },\n    currentMySites: Ember.computed(function () {\n        var currentMySites, slicedArr;\n        currentMySites = this.get('mySites').loadFromLocalStorage();\n        slicedArr = currentMySites.slice(0, 5);\n        return slicedArr;\n    }),\n    options: Em.computed('show_deleted', function () {\n        var arr,\n            currentMySites,\n            field,\n            filterOptions,\n            formfield,\n            key,\n            links,\n            mySitesArr,\n            params,\n            projectFields;\n        params = {};\n        arr = [];\n        mySitesArr = [];\n        currentMySites = this.get('currentMySites');\n        projectFields = ['project', 'ori_site', 'contract_project'];\n        //filter options only when field is found in linked_fields\n        formfield = this.get('filter.form') + '.' + this.get('filter.field');\n        if (this.get('linked_fields').includes(formfield)) {\n            field = this.get('Collector').field(this.get('filter.form'), this.get('filter.field'));\n            //get this field forms database links\n            links = this.get('Collector')\n                .fieldArray(field.options.form)\n                .filterBy('type', 'database')\n                .mapBy('options.form');\n            //check if some filter which has value is related to this filter\n            this.get('allFilters').forEach((other_filter) => {\n                var real_field;\n                //skip filters without value\n                if (Em.isEmpty(other_filter.value)) {\n                    return;\n                }\n                //skip all but database fields\n                if (other_filter.type !== 'database') {\n                    return;\n                }\n                //skip self\n                if (other_filter.field === this.get('filter.field')) {\n                    return;\n                }\n                //check if filter is found in current form fields\n                if (links.includes(other_filter.field)) {\n                    //get real name for field\n                    real_field = this.get('Collector')\n                        .fieldArray(field.options.form)\n                        .filterBy('options.form', other_filter.field)\n                        .get('firstObject');\n                    //and add it to params\n                    return (params[real_field.name] = other_filter.value);\n                }\n            });\n        }\n        if (this.get('show_deleted')) {\n            params.row_info_status = 'removed';\n        }\n        filterOptions = this.get('filter.filterOptions');\n        if (filterOptions) {\n            for (key in filterOptions) {\n                if (filterOptions[key]) {\n                    params[key] = filterOptions[key];\n                }\n            }\n        }\n        // set mysite options\n        if (projectFields.includes(this.get('filter.field')) && currentMySites.length > 0) {\n            this.set('showMySitesLabel', true);\n            this.set('showOthersLabel', true);\n            this.findMysites(currentMySites.getEach('id')).then((items) => {\n                return items.forEach((item) => {\n                    return mySitesArr.push({\n                        id: item.id,\n                        name: this.getText(item),\n                    });\n                });\n            });\n        }\n        // return filter options with subheaders\n        if (\n            this.salaryTypeFields.includes(this.get('filter.field')) &&\n            this.Collector.testNeedsOne('products.salarytype_v2')\n        ) {\n            return this.getOptionsWithSubheaders(this.filter, params);\n        }\n\n        // set other options\n        return this.get('Collector')\n            .findFormRelations(this.get('filter.form'), this.get('filter.field'), params)\n            .then((rows) => {\n                var randomId;\n                rows.forEach((row) => {\n                    var text;\n                    text = this.getText(row);\n                    return arr.push({\n                        id: row.id,\n                        name: text,\n                    });\n                });\n                randomId =\n                    Math.random().toString(36).substring(2, 15) +\n                    Math.random().toString(36).substring(2, 15);\n                if (this.get('showMySitesLabel')) {\n                    mySitesArr.unshift({\n                        id: randomId,\n                        label: this.get('intl').t('my-sites.title'),\n                        disabled: true,\n                    });\n                }\n                if (this.get('showOthersLabel')) {\n                    arr.unshift({\n                        id: randomId + 1,\n                        label: this.get('intl').t('other-sites.label'),\n                        disabled: true,\n                    });\n                }\n                if (mySitesArr.length > 0) {\n                    arr = mySitesArr.concat(arr).uniqBy('id');\n                }\n                if (this.get('show_deleted')) {\n                    arr.push({\n                        hide_deleted: true,\n                    });\n                } else {\n                    arr.push({\n                        show_deleted: true,\n                    });\n                }\n                return arr;\n            });\n    }),\n    // why: some salarytype fields needs subheaders,\n    // ie service can have multiple absence types with same name so we need to have subheader that tells user which worktimegroup it belongs to\n    async getOptionsWithSubheaders(filter, params) {\n        params.sideload = true;\n        let options = await this.store.query(filter.options.form, params);\n        let orderedOptions = await options.sortBy('worktimegroup.name');\n        let filterOptionsArr = [];\n\n        orderedOptions.map((item) => {\n            // if worktimegroup label is not found in optionsArr, add it\n            if (\n                item.worktimegroup &&\n                !filterOptionsArr.find((option) => option?.id == item.worktimegroup.id)\n            ) {\n                filterOptionsArr.push({\n                    id: item.worktimegroup.id,\n                    label: item.worktimegroup.name,\n                    disabled: true,\n                });\n            }\n            // add item to optionsArr\n            return filterOptionsArr.push({\n                id: item.id,\n                name: this.getText(item),\n            });\n        });\n        // add show/hide deleted options\n        filterOptionsArr.push(this.show_deleted ? { hide_deleted: true } : { show_deleted: true });\n\n        return filterOptionsArr;\n    },\n\n    getText: function (record) {\n        var field, i, len, ref, ref1, text, val;\n        text = '';\n        if (!record) {\n            return '';\n        }\n        field = this.get('Collector').field(this.get('filter.form'), this.get('filter.field'));\n        ref = field.options.fields;\n        for (i = 0, len = ref.length; i < len; i++) {\n            field = ref[i];\n            if (!field) {\n                continue;\n            }\n            val = record.get(field);\n            if (val && (ref1 = Ember.typeOf(val)) !== 'object' && ref1 !== 'array') {\n                text += val + ' ';\n            }\n        }\n        return text.slice(0, -1);\n    },\n    findRows: function () {\n        var arr, filterOptions, key, params, q, row_status;\n        if (this.get('show_deleted')) {\n            row_status = 'removed';\n        }\n        q = this.get('q');\n        params = {\n            q: q,\n            row_info_status: row_status,\n        };\n        // add filter options also to search params\n        filterOptions = this.get('filter.filterOptions');\n        if (filterOptions) {\n            for (key in filterOptions) {\n                if (filterOptions[key]) {\n                    params[key] = filterOptions[key];\n                }\n            }\n        }\n        // set filter options with subheaders\n        if (\n            this.salaryTypeFields.includes(this.get('filter.field')) &&\n            this.Collector.testNeedsOne('products.salarytype_v2')\n        ) {\n            this.set('options', this.getOptionsWithSubheaders(this.filter, params));\n            return this.set('searching', false);\n        }\n\n        arr = [];\n        return this.get('Collector')\n            .findFormRelations(this.get('filter.form'), this.get('filter.field'), params)\n            .then((rows) => {\n                if (this.get('isDestroyed')) {\n                    return;\n                }\n                rows.forEach((row) => {\n                    var text;\n                    text = this.getText(row);\n                    return arr.push({\n                        id: row.id,\n                        name: text,\n                    });\n                });\n                if (this.get('show_deleted')) {\n                    arr.push({\n                        hide_deleted: true,\n                    });\n                } else {\n                    arr.push({\n                        show_deleted: true,\n                    });\n                }\n                this.set('options', arr);\n                return this.set('searching', false);\n            });\n    },\n    findMysites: function (ids) {\n        return this.get('Collector').findFormRelations(\n            this.get('filter.form'),\n            this.get('filter.field'),\n            {\n                id: ids.join(),\n            },\n        );\n    },\n    showIEPlaceholder: Ember.computed('row', function () {\n        // Mega haxx for showing a \"placeholder\" on IE11 because power-select is buggy\n        return this.get('isIE') && !this.get('row');\n    }),\n    actions: {\n        selectRow: function (row) {\n            var ids;\n            if (!Em.isEmpty(row.findBy('show_deleted'))) {\n                this.set('show_deleted', true);\n                return;\n            }\n            if (!Em.isEmpty(row.findBy('hide_deleted'))) {\n                this.set('show_deleted', false);\n                return;\n            }\n            this.set('row', row);\n            ids = row.mapBy('id').toString();\n            ids = ids.replace(/(,$)|(^,)/g, ''); // make sure we don't have preceding or trailing comma.\n            //do not send change action if values not actually changed\n            if (ids === this.get('filter.value')) {\n                return;\n            }\n            return this.sendAction('change', ids, this.get('filter.field'));\n        },\n        searchRows: function (q) {\n            this.set('searching', true);\n            this.set('options', [\n                {\n                    loader: true,\n                },\n            ]);\n            this.set('q', q);\n            return Ember.run.debounce(this, this.findRows, 500);\n        },\n        closeDropdown: function () {\n            if (!Em.isNone(this.get('q'))) {\n                this.set('q', void 0);\n                return this.findRows();\n            }\n        },\n        preventEnter: function (options, e) {\n            if (e.key === 'Enter' && this.get('searching')) {\n                e.preventDefault();\n                return false;\n            }\n            return true;\n        },\n    },\n});\n\nexport default Component;\n","export default Ember.HTMLBars.template({\"id\":\"hNuq9MbH\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showIEPlaceholder\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"ie-placeholder\\\"],[8],[1,[22,\\\"placeholder\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@options\\\",\\\"@selected\\\",\\\"@search\\\",\\\"@searchField\\\",\\\"@searchEnabled\\\",\\\"@onclose\\\",\\\"@placeholder\\\",\\\"@onChange\\\",\\\"@loadingMessage\\\",\\\"@noMatchesMessage\\\",\\\"@searchMessage\\\",\\\"@onkeydown\\\"],[[23,0,[\\\"options\\\"]],[23,0,[\\\"row\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"searchRows\\\"],null],\\\"name\\\",true,[28,\\\"action\\\",[[23,0,[]],\\\"closeDropdown\\\"],null],[23,0,[\\\"placeholder\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"selectRow\\\"],null],[28,\\\"t\\\",[\\\"general.loading\\\"],null],[28,\\\"t\\\",[\\\"general.no_rows_found\\\"],null],[28,\\\"t\\\",[\\\"general.search\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"preventEnter\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"loader\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"show_deleted\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.actions.show_removed\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"hide_deleted\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.actions.show_normal\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"label\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"b\\\",true],[10,\\\"data-anchor\\\",\\\"multiple-filter-label\\\"],[8],[1,[23,1,[\\\"label\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/database-multiple-filter/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/date-range-picker/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsDateRangePickerComponent;\n\nimport Ember from 'ember';\n\nimport { computed } from '@ember/object';\n\nimport $ from 'jquery';\n\nimport { isEmpty } from '@ember/utils';\n\nEmber.TextField.reopen({\n    attributeBindings: ['data-anchor'],\n});\n\nCollectorFieldsDateRangePickerComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    serverFormat: 'YYYY-MM-DD',\n    screenLimit: 564,\n    maximumDateIntervalInYears: 3,\n    showDropdown: true,\n    didInsertElement: function () {\n        let datesArr, end, lang, options, self, serverFormat, start;\n\n        if (window.innerWidth <= this.get('screenLimit')) {\n            this.set('readonly', true);\n        }\n\n        self = this;\n        serverFormat = this.get('serverFormat');\n\n        if (this.get('value')) {\n            datesArr = this.get('value').split('_');\n        } else {\n            datesArr = [];\n            datesArr.push(moment(this.get('start'), serverFormat));\n            datesArr.push(moment(this.get('end'), serverFormat));\n        }\n\n        if (moment.locale() === 'se') {\n            lang = 'sv';\n        } else {\n            lang = moment.locale();\n        }\n\n        options = {\n            language: lang,\n            autoclose: true,\n            todayHighlight: true,\n            calendarWeeks: true,\n            orientation: 'bottom auto',\n            clearBtn: !!this.get('clearBtn'),\n            weekStart: 1,\n        };\n\n        //startDate: startDate.format(\"L\")\n        $('.input-daterange', this.element).datepicker(options);\n\n        const startDateElement = $('.input-daterange .startdate', this.element);\n        const endDateElement = $('.input-daterange .enddate', this.element);\n\n        startDateElement.datepicker(\n            'setDate',\n            moment(datesArr[0]).toDate(),\n        );\n\n        endDateElement.datepicker(\n            'setDate',\n            moment(datesArr[1]).toDate(),\n        );\n\n        start = datesArr[0];\n        end = moment(start).add(this.maximumDateIntervalInYears, 'years');\n\n        endDateElement.datepicker('setEndDate', end.format('L'));\n\n        startDateElement.on('changeDate', (ev) => {\n            start = ev['date'];\n            end = moment(start).add(this.maximumDateIntervalInYears, 'years');\n            endDateElement.datepicker('setEndDate', end.format('L'));\n\n            if (\n                self.get('value') &&\n                moment(start).diff(self.get('value').split('_')[1], 'years', true) <\n                    -this.maximumDateIntervalInYears\n            ) {\n                endDateElement.datepicker(\n                    'setDate',\n                    moment(start).add(this.maximumDateIntervalInYears, 'years').toDate(),\n                );\n            }\n\n            // if mobile, do not show end-calendar automatically\n            if (window.innerWidth >= self.get('screenLimit')) {\n                return endDateElement.datepicker('show');\n                // but set value, because users wonder why nothing happens when only selecting startdate SUP-2234\n            }\n\n            if (endDateElement.datepicker('getDate')) {\n                self.set(\n                    'value',\n                    moment(start).format(serverFormat) +\n                        '_' +\n                        moment(\n                            endDateElement.datepicker('getDate'),\n                        ).format(serverFormat),\n                );\n                return this.sendAction('dateChange', this.get('value'), this.get('fieldName'));\n            }\n        });\n\n        endDateElement.on('hide', (ev) => {\n            const changeDates = () => {\n                let endDate, startDate;\n                startDate = moment(start);\n                endDate = moment(ev['date']);\n\n                if (!startDate.isValid() || !endDate.isValid()) {\n                    return;\n                }\n\n                this.set(\n                    'value',\n                    startDate.format(serverFormat) + '_' + endDate.format(serverFormat),\n                );\n\n                return this.sendAction('dateChange', this.get('value'), this.get('fieldName'));\n            };\n\n            // Ember.run.next loop was originally added in https://jira.visma.com/browse/SUP-2326\n            // but it does not work when screen size is smaller than 564 and datepicker changes in to the mobile mode\n            // if next loop is used with mobile mode this.set crashes because element is already destroyed\n            return this.gui.isMobile(564) ? changeDates() : Ember.run.next(this, changeDates);\n        });\n\n        if (this.get('ranges')) {\n            return this.get('ranges').then((ranges) => {\n                return this.set('periods', ranges);\n            });\n        }\n\n        const excludedField = !['employmentstarted', 'birthdate'].includes(this.get('fieldName'));\n\n        this.set('showDropdown', excludedField)\n\n        if (excludedField) {\n            return this.setWagePeriods();\n        }\n    },\n    setWagePeriods: function () {\n        var params;\n        if (this.get('Collector').formExists('wage_period')) {\n            params = {\n                limit: 20,\n                order: 'period_end_date-,period_start_date-',\n                period_start_date:\n                    moment().subtract(1, 'years').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD'),\n            };\n            return this.get('store')\n                .query('wage-period', params)\n                .then((periods) => {\n                    var ranges;\n                    if (periods.get('length') === 0) {\n                        return;\n                    }\n                    ranges = {};\n                    periods.forEach(function (period) {\n                        var name;\n                        if (period.get('period_name')) {\n                            name = period.get('period_name');\n                        } else {\n                            name =\n                                moment(period.get('period_start_date')).format('L') +\n                                ' - ' +\n                                moment(period.get('period_end_date')).format('L');\n                        }\n                        return (ranges[name] = [\n                            moment(period.get('period_start_date')),\n                            moment(period.get('period_end_date')),\n                        ]);\n                    });\n                    if (!this.get('isDestroyed')) {\n                        return this.set('periods', ranges);\n                    }\n                });\n        }\n    },\n    formattedPeriods: computed('periods', function () {\n        if (this.get('periods')) {\n            return Object.entries(this.get('periods'));\n        }\n    }),\n    currentPeriod: computed('periods', function () {\n        var currentPeriods, dateToday;\n        if (this.get('periods')) {\n            dateToday = moment().format('YYYY-MM-DD');\n            currentPeriods = Object.entries(this.get('periods')).filter((period) => {\n                var periodEndDate, periodStartDate;\n                periodStartDate = period[1][0].format('YYYY-MM-DD');\n                periodEndDate = period[1][1].format('YYYY-MM-DD');\n                return moment(dateToday).isBetween(periodStartDate, periodEndDate, null, '[]');\n            });\n            if (isEmpty(currentPeriods)) {\n                return false;\n            } else {\n                return currentPeriods[0][1];\n            }\n        }\n    }),\n    lastPeriod: computed('periods', function () {\n        var periodDates;\n        if (this.get('periods')) {\n            periodDates = Object.entries(this.get('periods')).map((period) => {\n                return period[1];\n            });\n            if (isEmpty(periodDates)) {\n                return false;\n            }\n            // If current period is found, return second newest\n            if (periodDates.includes(this.get('currentPeriod'))) {\n                return periodDates[1];\n            } else {\n                return periodDates[0];\n            }\n        }\n    }),\n    actions: {\n        setPeriod: function (period) {\n            var today = moment();\n            var dayOfWeek = today.day();\n            // if today is sunday, last monday is 7 days ago\n            var lastMonday = today.subtract(dayOfWeek === 0 ? 7 : dayOfWeek - 1, 'days');\n            var lastWeeksMonday = lastMonday.clone().subtract(1, 'weeks');\n\n            if (period === 'currentWeek') {\n                period = [lastMonday.clone(), lastMonday.clone().add(6, 'days')];\n            }\n            if (period === 'lastWeek') {\n                period = [lastWeeksMonday.clone(), lastWeeksMonday.clone().add(6, 'days')];\n            }\n            $('.input-daterange .startdate', this.element).datepicker(\n                'setDate',\n                moment(period[0]).toDate(),\n            );\n            $('.input-daterange .enddate', this.element).datepicker(\n                'setDate',\n                moment(period[1]).toDate(),\n            );\n            $('.input-daterange .enddate', this.element).datepicker('show'); //for mobile to update the picker must be shown first\n            return $('.input-daterange .enddate', this.element).datepicker('hide');\n        },\n    },\n});\n\nexport default CollectorFieldsDateRangePickerComponent;\n","export default Ember.HTMLBars.template({\"id\":\"bzsQTseN\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\",\\\"period\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"title\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"input-daterange-title\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[[24,[\\\"title\\\"]]],null],false],[0,\\\":\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group input-group-sm input-daterange\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-EmptyCalendar\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"readonly\\\",\\\"data-anchor\\\"],[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"focusedInput\\\"]],\\\"start\\\"],null],\\\"startdate form-control active\\\",\\\"startdate form-control\\\"],null],[24,[\\\"start\\\"]],[24,[\\\"readonly\\\"]],\\\"date-range-picker-start\\\"]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"readonly\\\",\\\"data-anchor\\\"],[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"focusedInput\\\"]],\\\"end\\\"],null],\\\"enddate form-control active\\\",\\\"enddate form-control\\\"],null],[24,[\\\"end\\\"]],[24,[\\\"readonly\\\"]],\\\"date-range-picker-end\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showDropdown\\\"]]],null,{\\\"statements\\\":[[0,\\\"         \\\"],[5,\\\"bs-dropdown\\\",[[12,\\\"class\\\",\\\"input-group-btn\\\"]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"button\\\"]],[[12,\\\"class\\\",\\\"btn\\\"],[12,\\\"data-anchor\\\",\\\"date-range-picker-more\\\"]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"caret\\\"],[8],[9],[0,\\\"\\\\n\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"date-range-picker-wageperiods\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n                \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"data-anchor\\\",\\\"date-range-picker-currentWeek\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setPeriod\\\",\\\"currentWeek\\\"]],[8],[1,[28,\\\"t\\\",[\\\"timetracker.approval.this_week\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"data-anchor\\\",\\\"date-range-picker-lastWeek\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setPeriod\\\",\\\"lastWeek\\\"]],[8],[1,[28,\\\"t\\\",[\\\"timetracker.approval.last_week\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"currentPeriod\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"data-anchor\\\",\\\"date-range-picker-currentPeriod\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setPeriod\\\",[23,0,[\\\"currentPeriod\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.period.this_salaryperiod\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,0,[\\\"lastPeriod\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"data-anchor\\\",\\\"date-range-picker-lastPeriod\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setPeriod\\\",[23,0,[\\\"lastPeriod\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.period.last_salaryperiod\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"periods\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,2,[\\\"divider\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"formattedPeriods\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"setPeriod\\\",[23,3,[\\\"lastObject\\\"]]]],[8],[1,[23,3,[\\\"firstObject\\\"]],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"hide\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\"],[[24,[\\\"start\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\"],[[24,[\\\"end\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/date-range-picker/template.hbs\"}});","import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { get } from '@ember/object';\n\nexport default Component.extend({\n    tagName: '',\n\n    color: '#0974B3',\n    color2: '#A0A0A0',\n\n    style: '',\n\n    strokeWidth: 30,\n\n    size: computed('custom_size', function () {\n        if (get(this, 'custom_size')) {\n            return get(this, 'custom_size');\n        } else {\n            return 220;\n        }\n    }),\n    styleStr: computed('color', 'style', function () {\n        if (this.style === 'outline') {\n            return `fill-opacity:0;fill-rule:nonzero;stroke:${this.color};stroke-width:${this.strokeWidth}`;\n        } else {\n            return `fill:${this.color};fill-opacity:1;fill-rule:nonzero;stroke:none`;\n        }\n    }),\n\n    styleFill: computed('color', function () {\n        return `fill:${this.color};fill-opacity:1;fill-rule:nonzero;stroke:none`;\n    }),\n\n    styleFillColor2: computed('color2', function () {\n        return `fill:${this.color2};fill-opacity:1;fill-rule:nonzero;stroke:none`;\n    }),\n\n    viewBox: computed('number', function () {\n        return [\n            '0 -20 128 128',\n            '96 0 155 128',\n            '243 -20 128 128',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 100 85 128',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '265 209 155 128',\n            '0 0 0 0',\n            '0 0 75.52 74.075',\n            '0 0 0 0',\n            '0 0 48 74',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '151 421 128 128',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '0 0 0 0',\n            '375 537 90 110',\n            '469 519 94 140',\n            '0 0 0 0',\n        ][this.number - 1];\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"DlmnFLuX\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"svg\\\",true],[10,\\\"xmlns:dc\\\",\\\"http://purl.org/dc/elements/1.1/\\\"],[10,\\\"xmlns:cc\\\",\\\"http://creativecommons.org/ns#\\\"],[10,\\\"xmlns:rdf\\\",\\\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\\\"],[10,\\\"xmlns:svg\\\",\\\"http://www.w3.org/2000/svg\\\"],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[11,\\\"viewBox\\\",[29,[[22,\\\"viewBox\\\"]]]],[11,\\\"height\\\",[29,[[22,\\\"size\\\"]]]],[11,\\\"width\\\",[29,[[22,\\\"size\\\"]]]],[10,\\\"xml:space\\\",\\\"preserve\\\",\\\"http://www.w3.org/XML/1998/namespace\\\"],[10,\\\"id\\\",\\\"svg2\\\"],[10,\\\"version\\\",\\\"1.1\\\"],[8],[0,\\\"\\\\n   \\\"],[7,\\\"defs\\\",true],[10,\\\"id\\\",\\\"defs6\\\"],[8],[9],[0,\\\"\\\\n   \\\"],[7,\\\"g\\\",true],[11,\\\"transform\\\",[28,\\\"if\\\",[[24,[\\\"noTransforming\\\"]],\\\"\\\",\\\"matrix(1.3333333,0,0,-1.3333333,0,641.57333)\\\"],null]],[10,\\\"id\\\",\\\"g10\\\"],[8],[0,\\\"\\\\n      \\\"],[7,\\\"g\\\",true],[11,\\\"transform\\\",[28,\\\"if\\\",[[24,[\\\"noScaling\\\"]],\\\"scale(1)\\\",\\\"scale(0.1)\\\"],null]],[10,\\\"id\\\",\\\"g12\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],1],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path44\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 465.723,4654.14 c 39.14,21.78 53.265,71.11 31.496,110.24 -21.727,39.12 -71.051,53.2 -110.149,31.49 -39.168,-21.75 -53.304,-71.07 -31.523,-110.17 21.711,-39.18 71.051,-53.26 110.176,-31.56\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path46\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 629.605,4779.14 c -22.535,7.81 -47.121,-4.12 -54.921,-26.66 l -35.071,-101.15 -55.211,-22 c -3.031,0.52 -6.187,0.81 -9.445,0.81 h -97.152 c -1.617,0 -3.203,-0.08 -4.77,-0.21 -13.316,1.23 -25.879,-3.36 -33.168,-13.53 L 208.961,4434.2 c -12.004,-16.72 -5.195,-42.2 15.219,-56.85 20.371,-14.66 46.726,-12.96 58.672,3.76 l 52.445,72.98 v -123.07 c 0,-0.98 0.066,-1.97 0.176,-2.94 -1.743,-2.91 -3.032,-6.09 -3.762,-9.51 L 284.645,4099.2 c -4.282,-20.15 12.097,-40.75 36.648,-46.01 24.59,-5.26 48.023,6.82 52.312,26.95 l 46.883,218.61 h 11.797 l 46.875,-218.61 c 4.274,-20.13 27.719,-32.21 52.317,-26.95 24.496,5.26 40.918,25.86 36.632,46.01 l -47.031,219.37 c -0.73,3.43 -2.031,6.63 -3.793,9.55 0.11,0.96 0.188,1.92 0.188,2.9 v 218.53 l 72.449,28.88 c 11.641,4.64 20.699,14.11 24.797,25.96 l 41.543,119.81 c 7.808,22.52 -4.121,47.13 -26.657,54.94\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path48\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 281.48,4055.1 -9.628,-1.05 -76.825,707.57 9.621,1.05 76.832,-707.57\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"flag\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 22.1875,4751.87 c 11.4453,-5.18 20.0039,-10.93 33.0508,-12.21 12.0234,-1.19 24.2773,0.28 35.8398,3.72 17.6519,5.26 32.4959,17.59 50.6679,21.17 18.641,3.69 35.539,-3.09 46.82,-18.48 0,0 10.211,-96.37 12.11,-114.55 0.203,-1.89 0.203,-1.59 -0.18,-0.89 -2.586,4.8 -14.723,9.46 -17.625,10.93 -10.117,5.09 -20.906,9.94 -31.687,13.41 -7.422,2.39 -15.875,3.29 -23.606,1.9 -12.113,-2.17 -23.519,-8.38 -33.3866,-15.5 -10.5976,-7.62 -20.207,-13.98 -33.25,-16.47 -12.8984,-2.46 -26.5664,-1.08 -39.2266,1.96 0,34.5 0.1954,68.98 -0.0351,103.48 -0.0547,7.18 -0.1602,14.37 0.5078,21.53\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],2],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path122\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 1132.64,4626.42 c 43.64,6.37 73.9,46.86 67.53,90.49 -6.32,43.61 -46.83,73.83 -90.4,67.49 -43.68,-6.33 -73.93,-46.79 -67.53,-90.41 6.29,-43.68 46.8,-73.86 90.4,-67.57\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path124\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 1286.07,4404.97 -56.45,33.29 -66.27,131.62 c -0.98,2.63 -2.29,5.18 -3.87,7.64 -7.67,14.25 -21.67,23.02 -36.75,24.61 l -89.26,33.87 c -24.01,9.12 -49.064,1.71 -55.97,-16.48 L 873.969,4346.75 c -1,-2.63 -1.547,-5.34 -1.719,-8.1 -2.504,-5.74 -3.891,-12.11 -3.891,-18.78 v -74.42 l -79.527,-37.24 c -23.617,-11.03 -33.801,-39.14 -22.754,-62.76 8.039,-17.15 25.043,-27.21 42.785,-27.21 6.707,0 13.516,1.43 19.996,4.48 l 106.707,49.95 c 16.582,7.77 27.184,24.43 27.184,42.74 v 59.91 l 23.949,-9.09 31.301,-64.43 -41.258,-81.26 c -11.797,-23.24 -2.523,-51.65 20.731,-63.45 6.847,-3.46 14.137,-5.13 21.317,-5.13 17.22,0 33.8,9.45 42.13,25.84 l 51.88,102.18 c 6.69,13.18 6.82,28.73 0.37,42.01 l -41.3,84.92 50.8,133.84 28.86,-57.34 c 4.07,-8.07 10.4,-14.82 18.18,-19.43 l 68.41,-40.33 c 7.54,-4.44 15.79,-6.54 23.93,-6.54 16.15,0 31.91,8.32 40.71,23.23 13.23,22.46 5.77,51.4 -16.69,64.63\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path126\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 1721.81,4143.16 c 0,-40.2 -32.57,-72.77 -72.75,-72.77 -40.18,0 -72.76,32.57 -72.76,72.77 0,40.18 32.58,72.74 72.76,72.74 40.18,0 72.75,-32.56 72.75,-72.74\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path128\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 1413.51,4361.67 229.36,-69.25 c 0,0 -58.3,212.68 -229.36,69.25\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path130\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 1674.8,4143.16 c 0,-14.21 -11.53,-25.74 -25.74,-25.74 -14.21,0 -25.73,11.53 -25.73,25.74 0,14.2 11.52,25.74 25.73,25.74 14.21,0 25.74,-11.54 25.74,-25.74\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path132\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 1390.95,4170.15 -2.85,105.87 87.83,-50.16 z m 294.88,112.7 -318.94,94.3 v -49.61 l -36.98,21.13 -16.97,-29.71 60.82,-34.72 -6.87,-147.58 125.93,79.56 139.28,-79.56 16.96,29.68 -56.06,32.03 92.83,84.48\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path134\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 1661.91,4143.15 c 0,-7.1 -5.75,-12.87 -12.87,-12.87 -7.1,0 -12.86,5.77 -12.86,12.87 0,7.1 5.76,12.87 12.86,12.87 7.12,0 12.87,-5.77 12.87,-12.87\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],3],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"lefthand\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2241.26,4363.4 c -17.19,0 -33.94,8.86 -43.28,24.78 l -37.75,64.31 c -11.37,19.4 -8.45,43.98 7.15,60.17 l 65.08,67.54 c 19.21,19.93 50.96,20.52 70.89,1.3 19.95,-19.2 20.53,-50.95 1.32,-70.89 l -38.7,-40.16 18.5,-31.53 c 14.01,-23.88 6.01,-54.6 -17.87,-68.62 -7.97,-4.66 -16.72,-6.9 -25.34,-6.9\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"righthand\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2428.3,4363.4 c 17.22,0 33.96,8.86 43.3,24.78 l 37.74,64.31 c 11.38,19.4 8.46,43.98 -7.14,60.17 l -65.07,67.54 c -19.22,19.93 -50.97,20.52 -70.9,1.3 -19.94,-19.2 -20.53,-50.95 -1.32,-70.89 l 38.71,-40.16 -18.5,-31.53 c -14.03,-23.88 -6.03,-54.6 17.86,-68.62 7.97,-4.66 16.71,-6.9 25.32,-6.9\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path160\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2380.48,4623.43 c 45.45,25.27 61.86,82.55 36.57,128.01 -25.21,45.42 -82.5,61.79 -127.9,36.57 -45.5,-25.25 -61.91,-82.54 -36.63,-127.94 25.23,-45.5 82.52,-61.85 127.96,-36.64\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path162\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2334.79,4175.04 -3.27,35.65 h 6.54 z m 106.95,199.1 v 183.93 c 0,20.7 -22.1,37.48 -49.37,37.48 h -112.83 c -27.27,0 -49.37,-16.78 -49.37,-37.48 v -182.13 c -8.39,-6.1 -13.22,-13.89 -12.48,-21.89 l 25.37,-276.19 c 1.49,-16.2 25.04,-27.28 52.6,-24.75 16.5,1.52 30.71,7.58 39.13,15.68 8.42,-8.1 22.63,-14.16 39.13,-15.68 27.55,-2.53 51.12,8.55 52.6,24.75 l 25.36,276.19 c 0.67,7.24 -3.21,14.28 -10.14,20.09\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path164\\\"],[11,\\\"style\\\",[22,\\\"styleFill\\\"]],[10,\\\"d\\\",\\\"m 2615.3,4411.99 h -741.81 c -12.05,0 -21.91,-9.87 -21.91,-21.92 v -38.62 c 0,-12.05 9.86,-21.9 21.91,-21.9 h 33.47 v -277.59 h 36.05 v 277.59 h 602.78 v -277.59 h 36.05 v 277.59 h 33.46 c 12.06,0 21.92,9.85 21.92,21.9 v 38.62 c 0,12.05 -9.86,21.92 -21.92,21.92\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"laptop1\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 2476.76,4419.28 c 0,-5.02 -4.11,-9.11 -9.12,-9.11 h -256.53 c -5.01,0 -9.12,4.09 -9.12,9.11 v 2.14 c 0,5.01 4.11,9.12 9.12,9.12 h 256.53 c 5.01,0 9.12,-4.11 9.12,-9.12 v -2.14\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"laptop2\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 2463.73,4430.54 h -248.7 v 165.01 h 248.7 v -165.01\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path170\\\"],[11,\\\"style\\\",[22,\\\"styleFill\\\"]],[10,\\\"d\\\",\\\"m 1915.92,4457.36 c -10.08,0 -18.24,-8.16 -18.24,-18.23 v -0.54 c 0,-10.08 8.16,-18.25 18.24,-18.25 h 161.85 v 37.02 h -161.85\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path172\\\"],[11,\\\"style\\\",[22,\\\"styleFill\\\"]],[10,\\\"d\\\",\\\"m 1926.51,4484.15 c -6.74,0 -12.21,-5.46 -12.21,-12.21 v -0.36 c 0,-6.75 5.47,-12.21 12.21,-12.21 h 108.39 v 24.78 h -108.39\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path174\\\"],[11,\\\"style\\\",[22,\\\"styleFill\\\"]],[10,\\\"d\\\",\\\"m 2041.98,4511.63 c 6.74,0 12.21,-5.46 12.21,-12.2 v -0.38 c 0,-6.75 -5.47,-12.2 -12.21,-12.2 h -108.39 v 24.78 h 108.39\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],6],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path290\\\"],[11,\\\"style\\\",[22,\\\"styleFill\\\"]],[10,\\\"d\\\",\\\"m 211.742,3678.58 v -146.19 l -21.683,6.62 c 3.492,6.75 5.211,14.54 4.535,22.68 l -7.375,89.45 z m 218.938,-27.44 -7.383,-89.45 c -0.668,-8.14 1.035,-15.93 4.539,-22.68 l -21.691,-6.62 v 146.19 z m 74.453,42.39 -92.36,103.35 c -10.546,11.81 -26.273,16.23 -40.683,12.9 -3.613,0.7 -7.395,1.07 -11.297,1.07 H 257.105 c -3.906,0 -7.691,-0.37 -11.3,-1.07 -14.407,3.33 -30.137,-1.09 -40.684,-12.9 l -92.363,-103.35 c -7.645,-8.57 -11.453,-19.91 -10.512,-31.35 l 8.871,-107.38 c 1.809,-21.88 20.117,-38.43 41.688,-38.43 1.16,0 2.328,0.04 3.5,0.13 9.394,0.78 17.8,4.6 24.34,10.41 l 31.097,-37.74 v -226.34 c 0,-14.96 20.621,-27.07 46.055,-27.07 25.402,0 46.051,12.11 46.051,27.07 v 194.4 h 10.199 v -194.4 c 0,-14.96 20.641,-27.07 46.051,-27.07 25.39,0 46.047,12.11 46.047,27.07 v 226.34 l 31.101,37.74 c 6.543,-5.81 14.949,-9.63 24.348,-10.41 1.172,-0.09 2.336,-0.13 3.496,-0.13 21.555,0 39.883,16.55 41.687,38.43 l 8.868,107.38 c 0.949,11.44 -2.852,22.78 -10.512,31.35\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path292\\\"],[11,\\\"style\\\",[22,\\\"styleFill\\\"]],[10,\\\"d\\\",\\\"m 350.934,3836.49 c 41.765,23.21 56.836,75.87 33.597,117.63 -23.172,41.74 -75.801,56.77 -117.519,33.61 -41.817,-23.22 -56.895,-75.85 -33.66,-117.56 23.175,-41.81 75.812,-56.85 117.582,-33.68\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path294\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 318.57,3780.08 8.633,18.3 -8.289,5.44 H 299.34 l -8.621,-5.44 8.605,-18.3 -9.136,-92.04 18.734,-36.88 v 0.24 l 0.055,-0.24 18.718,36.88 -9.125,92.04\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],15],null]],null,{\\\"statements\\\":[[0,\\\"             \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path184\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2008.69,2883.39 c 0,-11.72 18.42,-21.22 41.14,-21.22 h 454.36 c 22.72,0 41.13,9.5 41.13,21.22 v 23.33 c 0,11.72 -18.41,21.22 -41.13,21.22 h -454.36 c -22.72,0 -41.14,-9.5 -41.14,-21.22 v -23.33\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path186\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2008.69,2515.06 c 0,-11.72 18.42,-21.24 41.14,-21.24 h 454.36 c 22.72,0 41.13,9.52 41.13,21.24 v 23.31 c 0,11.73 -18.41,21.22 -41.13,21.22 h -454.36 c -22.72,0 -41.14,-9.49 -41.14,-21.22 v -23.31\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path188\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2440.52,2640.86 c 0,-29.72 22.06,-53.82 49.28,-53.82 v 0 c 27.22,0 49.32,24.1 49.32,53.82 v 136.2 c 0,29.71 -22.1,53.81 -49.32,53.81 v 0 c -27.22,0 -49.28,-24.1 -49.28,-53.81 v -136.2\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path190\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2298.65,2640.86 c 0,-29.72 22.07,-53.82 49.28,-53.82 v 0 c 27.25,0 49.31,24.1 49.31,53.82 v 136.2 c 0,29.71 -22.06,53.81 -49.31,53.81 v 0 c -27.21,0 -49.28,-24.1 -49.28,-53.81 v -136.2\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path192\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2156.79,2640.86 c 0,-29.72 22.06,-53.82 49.28,-53.82 v 0 c 27.25,0 49.29,24.1 49.29,53.82 v 136.2 c 0,29.71 -22.04,53.81 -49.29,53.81 v 0 c -27.22,0 -49.28,-24.1 -49.28,-53.81 v -136.2\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path194\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2014.93,2640.86 c 0,-29.72 22.06,-53.82 49.3,-53.82 v 0 c 27.22,0 49.28,24.1 49.28,53.82 v 136.2 c 0,29.71 -22.06,53.81 -49.28,53.81 v 0 c -27.24,0 -49.3,-24.1 -49.3,-53.81 v -136.2\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path196\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2548.62,2945.32 -271.63,160.42 -271.6,-160.42 z\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path198\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2830.09,3010.52 c -40.42,22.49 -55.02,73.47 -32.53,113.91 22.45,40.4 73.42,54.97 113.82,32.54 40.48,-22.48 55.08,-73.44 32.59,-113.84 -22.47,-40.48 -73.42,-55.03 -113.88,-32.61\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path200\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2590.7,2921.1 203.19,57.76 c 7.4,4.3 16.64,6.85 26.69,6.85 h 100.38 c 2.42,0 4.81,-0.16 7.12,-0.44 17.92,2.33 34.82,-4.8 41.89,-19.33 l 101.44,-208.4 c 9.3,-19.14 -2.02,-43.88 -25.38,-55.24 -23.34,-11.36 -49.84,-5.05 -59.14,14.07 l -22.02,45.23 v -59.76 -25.21 -221.57 c 0,-14.5 -19.96,-26.21 -44.59,-26.21 -24.59,0 -44.59,11.71 -44.59,26.21 v 188.23 h -16.87 l -26.11,-193.75 c -1.95,-14.35 -23.32,-23.3 -47.7,-20.01 -24.37,3.28 -42.62,17.57 -40.68,31.93 l 32.31,239.67 v 175.08 l -160.21,-45.53 c -20.44,-5.81 -42.85,9.67 -49.93,34.66 -7.1,24.97 3.76,49.94 24.2,55.76\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path202\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 2861.45,2939.35 -8.36,17.7 8.01,5.28 h 18.97 l 8.32,-5.28 -8.31,-17.7 8.84,-89.14 -18.14,-35.71 v 0.23 l -0.05,-0.23 -18.13,35.71 8.85,89.14\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path204\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 3030.85,2659.22 h 10.5 v 31.48 h -10.5 v -31.48\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path206\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 3019.88,2511.69 c 0,-4.46 3.65,-8.11 8.12,-8.11 h 16.2 c 4.47,0 8.11,3.65 8.11,8.11 v 135.61 c 0,4.46 -3.64,8.11 -8.11,8.11 H 3028 c -4.47,0 -8.12,-3.65 -8.12,-8.11 v -135.61\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],26],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path464\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 1588.98,1529.49 c 23.98,35.16 70.07,43.22 102.95,18 32.85,-25.21 40.05,-74.16 16.03,-109.34 -23.98,-35.14 -70.08,-43.22 -102.96,-17.99 -32.85,25.21 -40.03,74.16 -16.02,109.33\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path466\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 1372.37,1196.67 136.18,171.66 c 7.37,13.5 21.32,22.89 37.55,23.84 v 0.08 h 1.37 11.13 31.15 l 0.07,-0.03 c 0.05,0.01 0.1,0.02 0.16,0.03 l 38.63,-87.73 6.86,69.38 -8.53,18.08 h 36.15 l -8.54,-18.08 6.88,-69.38 38.5,87.46 c 0.48,-0.09 1.07,0.09 1.55,0 h 53.12 v -0.09 c 23.9,-1.38 42.89,-21.09 43.14,-45.29 v 0 -0.46 -31.77 -142.22 h 0.01 v -65.78 c 0,-25.33 -20.53,-45.86 -45.85,-45.86 -3.36,0 -6.63,0.38 -9.8,1.07 V 828.352 c 0,-14.813 -20.6,-26.801 -46.01,-26.801 -25.39,0 -45.98,11.988 -45.98,26.801 v 203.028 h -10.2 V 828.352 c 0,-14.813 -20.59,-26.801 -45.99,-26.801 -25.4,0 -45.99,11.988 -45.99,26.801 v 252.298 c 0,0.13 0.03,0.26 0.03,0.38 l -0.03,177.91 -101.26,-123.3 c -13.83,-16.8 -41.65,-16.78 -62.16,0.06 -20.51,16.85 -25.94,44.14 -12.14,60.97\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path468\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 1197.02,985.23 h 46.55 c 0.81,-26.39 5.03,-51.718 12.58,-75.5 h -37.34 c -12.89,23.071 -20.37,48.981 -21.79,75.5 z m 33.85,-94.16 h 31.92 c 1,-2.48 1.98,-4.8 3,-7.031 7.74,-17.289 17.26,-32.668 28.17,-45.59 -24.81,12.18 -46.45,30.192 -63.09,52.621 z m 54.3,0 h 76.18 v -70.16 c -6.82,0.391 -13.79,1.199 -20.84,2.461 -22.32,13.539 -41.73,37.328 -55.34,67.699 z m 76.18,18.66 h -83.55 c -0.05,0.161 -0.1,0.34 -0.16,0.5 -7.95,23.45 -12.41,48.661 -13.26,75 h 96.97 z m 0,94.17 h -96.97 c 0.85,26.34 5.31,51.53 13.26,75.01 0.07,0.17 0.13,0.35 0.19,0.55 h 83.52 z m -95.56,101.19 c -1.02,-2.3 -2,-4.62 -2.95,-6.98 h -31.89 c 16.62,22.42 38.24,40.38 63.03,52.56 -10.93,-12.94 -20.45,-28.31 -28.19,-45.58 z m -46.95,-25.63 h 37.32 c -7.56,-23.8 -11.78,-49.16 -12.59,-75.56 h -46.55 c 1.42,26.55 8.91,52.48 21.82,75.56 z m 161.14,0 h 83.52 c 0.08,-0.2 0.14,-0.41 0.2,-0.61 7.95,-23.39 12.39,-48.61 13.26,-74.95 h -96.98 z m 0,-94.23 h 96.98 c -0.87,-26.371 -5.31,-51.582 -13.26,-75.019 -0.06,-0.141 -0.1,-0.32 -0.17,-0.481 h -83.55 z m 0,-94.16 h 76.18 c -13.6,-30.371 -33,-54.16 -55.34,-67.699 -7.16,-1.289 -14.02,-2.07 -20.84,-2.461 z m 67.38,-52.621 c 10.93,12.922 20.46,28.301 28.2,45.571 0.95,2.14 1.91,4.402 2.97,7.05 h 31.92 c -16.63,-22.429 -38.28,-40.441 -63.09,-52.621 z m -269.69,156.11 c 0,-106.43 86.58,-193.008 193.01,-193.008 67.32,0 126.7,34.66 161.25,87.07 v 40.77 c -2.72,-6.719 -5.84,-13.321 -9.39,-19.661 h -37.35 c 7.54,23.758 11.77,49.102 12.58,75.5 h 34.16 v 18.67 h -34.16 c -0.83,26.4 -5.05,51.76 -12.58,75.56 h 37.29 c 3.58,-6.38 6.73,-12.99 9.45,-19.74 v 40.75 c -14.96,22.69 -34.55,42.08 -57.43,56.74 l -12.2,-14.84 c 18.57,-11.51 34.92,-26.49 48.08,-44.26 h -31.86 c -0.95,2.36 -1.95,4.68 -2.96,6.95 -5.17,11.53 -11.12,22.17 -17.76,31.83 l -6.43,-7.81 c -2.32,-2.84 -4.99,-5.25 -7.89,-7.28 4.63,-7.34 8.86,-15.25 12.65,-23.69 h -76.15 v 28.22 c -1.23,0.9 -2.47,1.82 -3.69,2.81 -6.1,5.05 -11.12,10.86 -14.94,17.04 v -48.07 h -76.14 c 13.61,30.34 33,54.11 55.3,67.66 4.27,0.73 8.49,1.32 12.65,1.75 -1.1,6.59 -0.95,13.15 0.57,19.3 -98.52,-8.61 -176.06,-91.55 -176.06,-192.261\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],35],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path432\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 3193,568.012 c -39.5,21.949 -53.76,71.726 -31.79,111.218 21.92,39.45 71.69,53.692 111.12,31.782 39.55,-21.942 53.81,-71.723 31.84,-111.172 -21.92,-39.52 -71.71,-53.738 -111.17,-31.828\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path434\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"M 3040.78,324.879 3145.69,525.5 c 6.67,12.75 21.23,19.27 37.02,18.148 1.22,0.082 2.45,0.133 3.7,0.133 h 92.19 l 81.06,8.16 -15.96,16.258 c -16.88,17.16 -16.63,44.75 0.52,61.602 17.15,16.879 44.75,16.64 61.61,-0.531 l 79.63,-81.04 c 11.74,-11.949 15.59,-29.57 9.89,-45.332 -5.68,-15.75 -19.93,-26.859 -36.59,-28.527 L 3327.32,461.109 V 266.582 241.969 25.6016 c 0,-14.1524 -19.49,-25.5898812 -43.53,-25.5898812 -24.02,0 -43.55,11.4374812 -43.55,25.5898812 V 209.422 h -9.63 V 25.6016 c 0,-14.1524 -19.54,-25.5898812 -43.56,-25.5898812 -24,0 -43.53,11.4374812 -43.53,25.5898812 v 216.3674 24.613 56.719 l -21.41,-40.969 c -9.57,-18.371 -35.64,-23.793 -58.14,-12.051 -22.41,11.719 -32.82,36.207 -23.19,54.598\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path436\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 3341.66,655.852 3.91,32.179 c 0.24,2.129 2.19,3.649 4.31,3.391 2.14,-0.262 3.66,-2.192 3.39,-4.332 l -3.29,-27.102 c 1.55,0.274 3.15,0.332 4.78,0.121 8.96,-1.097 15.35,-9.25 14.25,-18.218 l -5.26,-43.461 c -1.1,-8.981 -9.25,-15.348 -18.21,-14.27 -8.98,1.078 -15.35,9.238 -14.26,18.211 l 5.26,43.469 c 0.48,4 2.39,7.492 5.12,10.012\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path438\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 3226.33,514.699 -8.16,17.293 7.82,5.137 h 18.51 l 8.16,-5.137 -8.16,-17.293 8.65,-87.027 -17.7,-34.891 v 0.258 l -0.06,-0.258 -17.69,34.891 8.63,87.027\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path440\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 3023.2,693.59 c -2.27,1.859 -5.94,1.859 -8.21,0 l -24.74,-20.469 v 28.93 c 0,2.66 -2.6,4.808 -5.8,4.808 -3.2,0 -5.8,-2.148 -5.8,-4.808 V 661.52 c 0,0 0.01,-0.008 0.01,-0.04 0,-0.289 0.03,-0.589 0.09,-0.878 0.05,-0.161 0.11,-0.293 0.17,-0.422 0.05,-0.16 0.08,-0.321 0.17,-0.481 0.09,-0.16 0.2,-0.328 0.31,-0.457 0.07,-0.14 0.13,-0.242 0.23,-0.363 0.42,-0.508 0.96,-0.981 1.6,-1.328 0.14,-0.071 0.28,-0.129 0.43,-0.192 0.19,-0.089 0.36,-0.179 0.57,-0.257 0.19,-0.063 0.39,-0.09 0.58,-0.153 0.16,-0.039 0.33,-0.078 0.5,-0.097 0.38,-0.082 0.76,-0.122 1.14,-0.122 v 0 0 c 0.37,0 0.77,0.04 1.14,0.122 0.16,0.019 0.32,0.058 0.49,0.097 0.2,0.051 0.4,0.09 0.58,0.153 0.21,0.078 0.39,0.168 0.56,0.25 0.14,0.07 0.3,0.128 0.44,0.199 0.32,0.16 0.62,0.379 0.89,0.59 v 0 l 34.65,28.668 c 2.26,1.863 2.26,4.91 0,6.781\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path442\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2893.36,666 c 0,50.039 40.58,90.609 90.64,90.609 50.05,0 90.63,-40.57 90.63,-90.609 0,-50.078 -40.58,-90.66 -90.63,-90.66 -50.06,0 -90.64,40.582 -90.64,90.66 z m -12.27,0 c 0,-56.852 46.08,-102.918 102.91,-102.918 56.83,0 102.89,46.066 102.89,102.918 0,56.82 -46.06,102.891 -102.89,102.891 -56.83,0 -102.91,-46.071 -102.91,-102.891\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path444\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2990.59,584.57 v 9.782 c 34.66,3.136 62.22,30.91 65.08,65.668 h 9.79 c -2.9,-40.149 -34.82,-72.25 -74.87,-75.45\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path446\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2990.5,737.641 v 9.757 c 40.1,-3.156 72.05,-35.289 74.96,-75.457 h -9.79 c -2.86,34.801 -30.45,62.571 -65.17,65.7\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path448\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2978.65,594.25 v -9.77 c -40.43,2.61 -72.85,34.629 -76.06,74.911 h 9.77 c 3.17,-34.879 31.23,-62.571 66.29,-65.141\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path450\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2978.55,747.488 v -9.777 c -35.41,-2.641 -63.67,-30.949 -66.28,-66.371 h -9.77 c 2.65,40.801 35.26,73.449 76.05,76.148\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path452\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 2984.53,744.691 c 2.36,0 4.27,-1.941 4.27,-4.293 V 719.07 c 0,-2.328 -1.91,-4.269 -4.27,-4.269 -2.36,0 -4.28,1.941 -4.28,4.269 v 21.328 c 0,2.352 1.92,4.293 4.28,4.293\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path454\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2984.92,615.52 c 2.37,0 4.27,-1.918 4.27,-4.27 v -21.328 c 0,-2.363 -1.9,-4.274 -4.27,-4.274 -2.35,0 -4.25,1.911 -4.25,4.274 v 21.328 c 0,2.352 1.9,4.27 4.25,4.27\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path456\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 3036.63,670.02 h 21.34 c 2.35,0 4.27,-1.891 4.27,-4.258 0,-2.364 -1.92,-4.274 -4.27,-4.274 h -21.34 c -2.34,0 -4.25,1.91 -4.25,4.274 0,2.367 1.91,4.258 4.25,4.258\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path458\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 2907.5,669.629 h 21.31 c 2.36,0 4.27,-1.91 4.27,-4.27 0,-2.347 -1.91,-4.257 -4.27,-4.257 h -21.31 c -2.37,0 -4.29,1.91 -4.29,4.257 0,2.36 1.92,4.27 4.29,4.27\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path460\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 3058,73.7695 h 28.89 V 229.371 H 3058 V 73.7695\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path462\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 3067.45,235.281 h 10 v 23.328 h -10 v -23.328\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],36],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path176\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 4057.19,358.148 -136.63,190.231 c -7.49,10.422 -20.23,15.25 -33.81,14.25 -1.28,0.07 -2.55,0.109 -3.85,0.109 h -101.46 c -2.51,0 -4.99,-0.148 -7.41,-0.457 -2.55,-0.062 -5.13,-0.32 -7.71,-0.82 l -74.72,-14.57 -33.85,102.941 c -7.78,23.668 -33.26,36.539 -56.91,28.758 -23.65,-7.781 -36.5,-33.258 -28.74,-56.91 l 46.27,-140.711 c 6.18,-18.809 23.68,-31.028 42.8,-31.028 2.85,0 5.75,0.289 8.65,0.84 l 67.24,13.11 V 275.879 250.41 26.4883 c 0,-14.6289 20.19,-26.4765812 45.07,-26.4765812 24.86,0 45.07,11.8476812 45.07,26.4765812 V 216.719 h 9.99 V 26.4883 c 0,-14.6289 20.19,-26.4765812 45.04,-26.4765812 24.83,0 45.07,11.8476812 45.07,26.4765812 V 250.41 275.879 376.141 l 52.75,-73.442 c 12.54,-17.469 39.99,-19.211 61.29,-3.91 21.33,15.293 28.39,41.871 15.85,59.359\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path178\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"d\\\",\\\"m 3876.1,587.809 c 40.86,22.73 55.62,74.25 32.87,115.113 -22.65,40.848 -74.18,55.566 -115,32.898 -40.91,-22.718 -55.66,-74.238 -32.92,-115.039 22.68,-40.922 74.18,-55.621 115.05,-32.972\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"tie\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 3844.43,529.262 8.44,17.898 -8.09,5.309 h -19.17 l -8.42,-5.309 8.42,-17.898 -8.94,-90.082 18.32,-36.071 v 0.231 l 0.05,-0.231 18.34,36.071 -8.95,90.082\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"bubble\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"d\\\",\\\"m 4152.29,876.59 h -142.64 c -18.11,0 -32.77,-14.68 -32.77,-32.789 v -55.86 l -41.22,-66.781 86.76,33.988 h 129.87 c 18.1,0 32.77,14.684 32.77,32.793 v 55.86 c 0,18.109 -14.67,32.789 -32.77,32.789\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],17],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"g\\\",true],[10,\\\"id\\\",\\\"Group_84\\\"],[10,\\\"data-name\\\",\\\"Group 84\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_26\\\"],[10,\\\"data-name\\\",\\\"Path 26\\\"],[10,\\\"d\\\",\\\"M346.815,228.23a2.085,2.085,0,0,1-2.085,2.085h0a2.085,2.085,0,0,1-2.084-2.085V166.3a2.084,2.084,0,0,1,2.084-2.084h0a2.084,2.084,0,0,1,2.085,2.084Z\\\"],[10,\\\"transform\\\",\\\"translate(-306 -115)\\\"],[10,\\\"fill\\\",\\\"#595651\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_27\\\"],[10,\\\"data-name\\\",\\\"Path 27\\\"],[10,\\\"d\\\",\\\"M366.349,228.348a1.351,1.351,0,0,1-.582,1.817h0a1.348,1.348,0,0,1-1.817-.581l-8.425-16.352a1.352,1.352,0,0,1,.582-1.818h0a1.351,1.351,0,0,1,1.818.582Z\\\"],[10,\\\"transform\\\",\\\"translate(-306 -115)\\\"],[10,\\\"fill\\\",\\\"#595651\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_28\\\"],[10,\\\"data-name\\\",\\\"Path 28\\\"],[10,\\\"d\\\",\\\"M323.113,228.348a1.349,1.349,0,0,0,.581,1.817h0a1.35,1.35,0,0,0,1.818-.581l8.424-16.352a1.35,1.35,0,0,0-.582-1.818h0a1.35,1.35,0,0,0-1.817.582Z\\\"],[10,\\\"transform\\\",\\\"translate(-306 -115)\\\"],[10,\\\"fill\\\",\\\"#595651\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_29\\\"],[10,\\\"data-name\\\",\\\"Path 29\\\"],[10,\\\"d\\\",\\\"M364.972,212.15c0,.688-.3,1.247-.681,1.247H325.173c-.376,0-.682-.559-.682-1.247V167.766c0-.689.306-1.248.682-1.248h39.118c.376,0,.681.559.681,1.248Z\\\"],[10,\\\"transform\\\",\\\"translate(-306 -115)\\\"],[10,\\\"fill\\\",\\\"#a14944\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_30\\\"],[10,\\\"data-name\\\",\\\"Path 30\\\"],[10,\\\"d\\\",\\\"M362.66,209.615c0,.609-.27,1.106-.6,1.106H327.406c-.332,0-.6-.5-.6-1.106V170.3c0-.61.27-1.1.6-1.1h34.651c.333,0,.6.494.6,1.1Z\\\"],[10,\\\"transform\\\",\\\"translate(-306 -115)\\\"],[10,\\\"fill\\\",\\\"#afafaf\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_31\\\"],[10,\\\"data-name\\\",\\\"Path 31\\\"],[10,\\\"d\\\",\\\"M386.476,179.96a8.4,8.4,0,1,0-11.417-3.271A8.4,8.4,0,0,0,386.476,179.96Z\\\"],[10,\\\"transform\\\",\\\"translate(-306 -115)\\\"],[10,\\\"fill\\\",\\\"#595651\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_32\\\"],[10,\\\"data-name\\\",\\\"Path 32\\\"],[10,\\\"d\\\",\\\"M398.352,207.359l-6.568-22.3a4.055,4.055,0,0,0-4.274-2.6c-.087,0-.176-.006-.266-.006H377.176l-.093,0a2.763,2.763,0,0,0-.271-.07l-22.762-4.727c-2.088-.434-4.214,1.282-4.742,3.834s.74,4.967,2.824,5.4l20.639,4.289v44.492c0,1.453,2,2.628,4.473,2.628s4.472-1.175,4.472-2.628V216.786h.991v18.878c0,1.453,2,2.628,4.472,2.628s4.47-1.175,4.47-2.628V212.347a5.324,5.324,0,0,0,3.276.052C397.417,211.663,398.954,209.4,398.352,207.359Z\\\"],[10,\\\"transform\\\",\\\"translate(-306 -115)\\\"],[10,\\\"fill\\\",\\\"#595651\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_33\\\"],[10,\\\"data-name\\\",\\\"Path 33\\\"],[10,\\\"d\\\",\\\"M383.012,186.649l.8-1.7c-.5-.3-1.6-1.2-1.6-1.2s-1.1.9-1.6,1.2l.8,1.7h-.053l-.7,9.989,1.551,2.979,1.549-2.979-.7-9.989Z\\\"],[10,\\\"transform\\\",\\\"translate(-306 -115)\\\"],[10,\\\"fill\\\",\\\"#a14944\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"number\\\"]],19],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"g\\\",true],[10,\\\"id\\\",\\\"Group_8\\\"],[10,\\\"data-name\\\",\\\"Group 8\\\"],[10,\\\"transform\\\",\\\"translate(-91.403 -244.223)\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_22\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"data-name\\\",\\\"Path 22\\\"],[10,\\\"d\\\",\\\"M132.654,262.76c-2.068,0-3.81.822-4.334,1.939h8.669C136.462,263.582,134.72,262.76,132.654,262.76Z\\\"],[10,\\\"fill\\\",\\\"#595651\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_23\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"data-name\\\",\\\"Path 23\\\"],[10,\\\"d\\\",\\\"M116.608,260.055a8.446,8.446,0,1,0-11.482-3.289A8.445,8.445,0,0,0,116.608,260.055Z\\\"],[10,\\\"fill\\\",\\\"#595651\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_24\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"data-name\\\",\\\"Path 24\\\"],[10,\\\"d\\\",\\\"M117.287,262.556H107.163c-2.447,0-4.43,1.507-4.43,3.363v50.154c0,1.461,2.013,2.643,4.5,2.643s4.5-1.182,4.5-2.643V297.089h1v18.984c0,1.461,2.015,2.643,4.5,2.643s4.5-1.182,4.5-2.643V265.919C121.717,264.063,119.733,262.556,117.287,262.556Z\\\"],[10,\\\"fill\\\",\\\"#595651\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"rect\\\",true],[10,\\\"id\\\",\\\"Rectangle_4\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor2\\\"]],[10,\\\"data-name\\\",\\\"Rectangle 4\\\"],[10,\\\"width\\\",\\\"32.03\\\"],[10,\\\"height\\\",\\\"22.725\\\"],[10,\\\"transform\\\",\\\"translate(107.775 264.698)\\\"],[10,\\\"fill\\\",\\\"#a14944\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"rect\\\",true],[10,\\\"id\\\",\\\"Rectangle_5\\\"],[11,\\\"style\\\",[22,\\\"styleFillColor1\\\"]],[10,\\\"data-name\\\",\\\"Rectangle 5\\\"],[10,\\\"width\\\",\\\"28.876\\\"],[10,\\\"height\\\",\\\"20.485\\\"],[10,\\\"transform\\\",\\\"translate(109.352 265.818)\\\"],[10,\\\"fill\\\",\\\"#afafaf\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_25\\\"],[11,\\\"style\\\",[22,\\\"styleStr\\\"]],[10,\\\"data-name\\\",\\\"Path 25\\\"],[10,\\\"d\\\",\\\"M110.914,287.236a4.54,4.54,0,0,1-.936-.1l-15-3.174a4.5,4.5,0,0,1-2.809-6.9l8.368-12.505a4.5,4.5,0,0,1,6.242-1.236c2.065,1.381-.279,8.5-.279,8.5l-3.154,4.713,8.5,1.8a4.5,4.5,0,0,1-.926,8.9Z\\\"],[10,\\\"fill\\\",\\\"#595651\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path14\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3614.65,887.191 c 0,-11.75 -9.52,-21.3 -21.29,-21.3 v 0 c -11.75,0 -21.28,9.55 -21.28,21.3 v 632.439 c 0,11.76 9.53,21.27 21.28,21.27 v 0 c 11.77,0 21.29,-9.51 21.29,-21.27 V 887.191\\\"],[8],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path16\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3814.14,885.988 c 3.49,-6.769 0.81,-15.097 -5.95,-18.566 v 0 c -6.74,-3.461 -15.05,-0.82 -18.55,5.957 l -86.04,166.971 c -3.48,6.77 -0.81,15.08 5.97,18.57 v 0 c 6.75,3.47 15.06,0.83 18.53,-5.95 l 86.04,-166.982\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path18\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3372.61,885.988 c -3.49,-6.769 -0.83,-15.097 5.94,-18.566 v 0 c 6.74,-3.461 15.07,-0.82 18.56,5.957 l 86.03,166.971 c 3.48,6.77 0.81,15.08 -5.95,18.57 v 0 c -6.76,3.47 -15.07,0.83 -18.56,-5.95 l -86.02,-166.982\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path20\\\"],[10,\\\"style\\\",\\\"fill:#e4e4e3;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3849.3,1406.61 c -3.26,37.86 -21.97,67.46 -45.44,67.47 -140.33,0 -280.67,0 -420.96,0 -23.5,0 -42.21,-29.61 -45.47,-67.47 -8.8,-108.47 -34.75,-223.1 -41.36,-330.78 h 594.59 c -6.58,107.68 -32.53,222.31 -41.36,330.78\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path22\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3331.39,1037 h 524.5 c 19.33,0 35.01,17.4 35.01,38.83 h -594.5 c 0,-21.43 15.66,-38.83 34.99,-38.83\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path24\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3661.01,1141.88 c 72.52,35.9 102.23,123.78 66.36,196.3 -13.76,27.76 -35.11,49.23 -60.3,63.18 l -71.05,-128.17 2.38,-146.51 c 21.09,0.31 42.43,5.22 62.61,15.2\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path26\\\"],[10,\\\"style\\\",\\\"fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3593.31,1126.15 -2.37,146.55 -138.7,47.24 c -12.13,-35.6 -10.65,-75.86 7.36,-112.23 25.93,-52.36 78.95,-82.4 133.71,-81.56\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path28\\\"],[10,\\\"style\\\",\\\"fill:#adabaa;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3527.04,1408.55 c -36,-17.8 -61.45,-48.46 -73.58,-83.71 l 138.55,-47.6 71.06,128.15 c -40.63,22.46 -91.25,25.31 -136.03,3.16\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path30\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4644.06,1182.28 -134.13,186.67 c -7.13,11.82 -20.2,20.52 -35.77,23.27 l -142.79,1.37 v 0 l -207.43,5.91 c -21.57,0.64 -39.65,-20.18 -40.41,-46.46 -0.75,-26.27 16.16,-48.12 37.67,-48.74 l 202.23,-5.76 c 0,0 -2.35,-214.96 -2.99,-217.89 l -49.17,-229.619 c -4.53,-21.07 12.59,-42.672 38.33,-48.191 25.77,-5.5 50.31,7.14 54.79,28.199 l 43.65,203.591 h 23.18 l 43.59,-203.591 c 4.55,-21.059 29.08,-33.699 54.76,-28.199 25.71,5.519 42.9,27.121 38.37,48.191 l -49.19,229.619 c -0.63,2.9 -2.96,116.96 -2.96,116.96 l 50.96,-70.89 c 12.55,-17.56 40.08,-19.31 61.43,-3.96 21.33,15.33 28.44,41.97 15.88,59.52\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path32\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4457.29,1419.34 c 37.54,20.82 51.01,68.11 30.21,105.57 -20.87,37.51 -68.09,51.04 -105.58,30.23 -37.5,-20.84 -51.03,-68.08 -30.22,-105.61 20.82,-37.51 68.12,-51 105.59,-30.19\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path34\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4066.45,1360.71 c -0.3,-3.78 -3.38,-6.6 -6.86,-6.32 l -378.62,31.41 c -3.45,0.31 -6.02,3.6 -5.72,7.39 v 0 c 0.32,3.78 3.39,6.6 6.85,6.31 l 378.65,-31.44 c 3.46,-0.28 6.01,-3.56 5.7,-7.35 v 0\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path36\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4464.1,577.941 c 37.63,25.539 47.46,76.7 21.92,114.309 -25.47,37.602 -76.63,47.422 -114.21,21.941 -37.69,-25.55 -47.51,-76.711 -21.98,-114.261 25.49,-37.66 76.65,-47.481 114.27,-21.989\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path38\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4639.27,334.512 -14.83,122 c -1.63,13.289 -9.24,25.136 -20.68,32.097 l -97.55,59.641 c -7.47,4.582 -15.74,6.609 -23.88,6.441 -2.2,0.059 -4.46,0 -6.71,-0.211 l -98.29,-8.761 c -1.68,-0.137 -3.35,-0.379 -4.98,-0.66 -5.94,-0.848 -11.69,-2.879 -16.85,-6.008 -7.68,-4.41 -13.47,-10.621 -16.34,-17.641 l -41.44,-70.238 -89.97,-35.223 c -22.54,-8.859 -33.64,-34.277 -24.81,-56.828 6.78,-17.289 23.31,-27.859 40.82,-27.859 5.32,0 10.72,1 15.99,3.047 l 104.02,40.781 c 1.82,0.691 3.54,1.558 5.21,2.492 l 10.73,-120.523 -44.06,-74.118 c -7.35,-12.359 -8.17,-27.543 -2.16,-40.652 L 4366.9,25.6211 c 7.38,-16.10157 23.27,-25.58985 39.91,-25.58985 6.09,0 12.28,1.27734 18.19,3.96875 22.03,10.0703 31.71,36.1094 21.62,58.1016 l -43.87,95.7964 32.83,55.223 13.7,1.231 -3.95,-22.301 c -1.36,-7.77 -0.59,-15.781 2.19,-23.153 l 53.41,-140.6089 c 6.65,-17.5 23.29,-28.25785 40.97,-28.25785 5.17,0 10.44,0.898438 15.56,2.83984 22.66,8.58981 34.01,33.92971 25.42,56.55861 l -49.1,129.2893 9.5,54.121 c 1.84,4.09 2.65,8.48 2.24,12.969 l -15.6,175.203 10.03,-6.133 12.28,-100.949 c 2.93,-24.039 24.78,-41.129 48.8,-38.231 1.46,0.18 2.9,0.442 4.27,0.762 21.75,4.82 36.7,25.469 33.97,48.051\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path40\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4604.33,281.992 h -19.69 v -20.031 h 19.69 v 20.031\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path42\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4611.47,255.93 c -1.16,2.289 -2.76,4.351 -4.71,6.031 v -5.5 h -24.58 v 5.5 c -1.96,-1.68 -3.57,-3.742 -4.71,-6.031 h -48.44 V 103.398 h 153.24 V 255.93 h -70.8\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path52\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3250.38,2170.32 c 46.47,14.3 72.6,63.5 58.3,109.99 -14.25,46.44 -63.44,72.52 -109.87,58.27 -46.51,-14.24 -72.65,-63.46 -58.34,-109.88 14.24,-46.52 63.46,-72.6 109.91,-58.38\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path54\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3451.55,2058.54 h -108.68 l -58.83,67.99 c -6.38,7.38 -14.54,12.28 -23.31,14.6 -1.92,0.64 -3.89,1.16 -5.95,1.61 l -103.21,21.92 c -24.91,5.29 -48.41,-5.76 -52.44,-24.69 l -60.16,-283.43 c -4.02,-18.93 12.94,-38.57 37.88,-43.85 l 103.19,-21.92 c 1.76,-0.37 3.52,-0.65 5.28,-0.87 l 64.48,-14.29 -48.65,-45.49 c -18.9,-17.7 -19.89,-47.36 -2.2,-66.26 7.35,-7.85 16.75,-12.62 26.59,-14.24 13.85,-2.28 28.6,1.68 39.66,12.01 l 113.61,106.27 c 12.69,11.88 17.79,29.83 13.22,46.61 -4.6,16.78 -18.1,29.63 -35.1,33.4 l -112.28,24.87 26.58,125.29 14.75,-17.07 c 8.9,-10.29 21.86,-16.2 35.45,-16.2 h 130.12 c 25.91,0 46.9,20.99 46.9,46.87 0,25.91 -20.99,46.87 -46.9,46.87\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path56\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3147.91,1789.27 h -167.23 v 322.96 c 0,17.44 -14.13,31.57 -31.57,31.57 -17.44,0 -31.57,-14.13 -31.57,-31.57 v -341.86 c 0,-1.14 0.07,-2.29 0.19,-3.43 -0.1,-1.1 -0.19,-2.19 -0.19,-3.33 0,-14.18 9.14,-25.67 20.4,-25.67 h 86.22 c -0.56,-1.42 -0.88,-2.97 -0.88,-4.58 v -83.19 h -28.8 c -7.07,0 -12.79,-5.72 -12.79,-12.8 0,-7.04 5.72,-12.77 12.79,-12.77 h 83.16 c 7.08,0 12.78,5.73 12.78,12.77 0,7.08 -5.7,12.8 -12.78,12.8 h -28.8 v 83.19 c 0,1.61 -0.32,3.16 -0.86,4.58 h 99.93 c 11.26,0 20.4,11.49 20.4,25.67 0,14.16 -9.14,25.66 -20.4,25.66\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path58\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3757.83,1624.6 h -338.26 v 313.86 h 338.26 V 1624.6\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path60\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3626.25,2280.17 v -331.46 c 18.3,0 33.14,14.84 33.14,33.14 v 265.18 c 0,18.29 -14.84,33.14 -33.14,33.14\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path62\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1326.54,2184.17 c -20.68,0 -38.1,-8.22 -43.34,-19.38 h 86.69 c -5.27,11.16 -22.69,19.38 -43.35,19.38\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path64\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1166.08,2211.22 c 40.79,22.69 55.51,74.09 32.81,114.88 -22.63,40.75 -74.04,55.44 -114.77,32.82 -40.82,-22.67 -55.55,-74.08 -32.86,-114.81 22.63,-40.83 74.04,-55.5 114.82,-32.89\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path66\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1172.87,2186.21 h -101.24 c -24.47,0 -44.31,-15.07 -44.31,-33.63 v -252.67 -25.41 -223.46 c 0,-14.6 20.14,-26.43 44.98,-26.43 24.81,0 44.98,11.83 44.98,26.43 v 189.84 h 9.96 v -189.84 c 0,-14.6 20.15,-26.43 44.96,-26.43 24.78,0 44.97,11.83 44.97,26.43 v 223.46 25.41 252.67 c 0,18.56 -19.84,33.63 -44.3,33.63\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path68\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1398.05,1937.54 h -320.3 v 227.25 h 320.3 v -227.25\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path70\\\"],[10,\\\"style\\\",\\\"fill:#adadab;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1382.28,1948.74 h -288.76 v 204.85 h 288.76 v -204.85\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path72\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1109.14,1939.41 c -3.09,0 -6.23,0.33 -9.36,0.99 l -150.053,31.74 c -14.618,3.08 -26.747,13.23 -32.379,27.07 -5.629,13.84 -4.02,29.56 4.289,41.97 l 83.683,125.05 c 13.82,20.65 41.77,26.18 62.41,12.36 20.66,-13.8 -2.78,-85.04 -2.78,-85.04 l -31.54,-47.13 84.99,-17.98 c 24.31,-5.14 39.84,-29.03 34.7,-53.33 -4.48,-21.17 -23.17,-35.7 -43.96,-35.7\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path74\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3468.15,2529.47 c 0,-11.51 -9.33,-20.85 -20.85,-20.85 v 0 c -11.51,0 -20.83,9.34 -20.83,20.85 v 619.29 c 0,11.51 9.32,20.84 20.83,20.84 v 0 c 11.52,0 20.85,-9.33 20.85,-20.84 v -619.29\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path76\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3663.49,2528.29 c 3.4,-6.62 0.79,-14.77 -5.82,-18.17 v 0 c -6.62,-3.42 -14.75,-0.81 -18.17,5.81 l -84.25,163.52 c -3.4,6.63 -0.79,14.77 5.82,18.18 v 0 c 6.63,3.41 14.75,0.8 18.18,-5.82 l 84.24,-163.52\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path78\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3231.13,2528.29 c -3.41,-6.62 -0.8,-14.76 5.81,-18.17 v 0 c 6.63,-3.42 14.76,-0.81 18.18,5.81 l 84.24,163.52 c 3.41,6.63 0.81,14.77 -5.82,18.18 v 0 c -6.62,3.41 -14.75,0.8 -18.17,-5.82 l -84.24,-163.52\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path80\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3649.72,2690.27 c 0,-6.88 -3.05,-12.47 -6.81,-12.47 h -391.18 c -3.76,0 -6.82,5.59 -6.82,12.47 v 443.84 c 0,6.89 3.06,12.48 6.82,12.48 h 391.18 c 3.76,0 6.81,-5.59 6.81,-12.48 v -443.84\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path82\\\"],[10,\\\"style\\\",\\\"fill:#adadab;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3626.6,2715.62 c 0,-6.09 -2.7,-11.05 -6.03,-11.05 h -346.51 c -3.32,0 -6.02,4.96 -6.02,11.05 v 393.14 c 0,6.1 2.7,11.04 6.02,11.04 h 346.51 c 3.33,0 6.03,-4.94 6.03,-11.04 v -393.14\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path84\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3864.76,3012.17 c 40.55,22.56 55.19,73.67 32.62,114.23 -22.5,40.53 -73.6,55.14 -114.13,32.63 -40.6,-22.53 -55.24,-73.65 -32.66,-114.15 22.49,-40.6 73.61,-55.19 114.17,-32.71\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path86\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3983.52,2738.18 -65.68,223.02 c -4.93,16.78 -22.72,26.96 -42.74,26.03 -0.87,0.04 -1.76,0.06 -2.66,0.06 h -100.68 c -0.3,0 -0.63,0 -0.93,-0.02 -0.89,0.27 -1.79,0.52 -2.71,0.7 l -227.62,47.27 c -20.88,4.34 -42.14,-12.82 -47.42,-38.34 -5.32,-25.44 7.4,-49.67 28.24,-53.96 l 206.4,-42.89 v -197.44 -25.27 -222.21 c 0,-14.52 20.02,-26.28 44.72,-26.28 24.67,0 44.72,11.76 44.72,26.28 v 188.78 h 9.91 v -188.78 c 0,-14.52 20.04,-26.28 44.72,-26.28 24.64,0 44.7,11.76 44.7,26.28 v 222.21 10.96 c 9.71,-3.46 21.24,-3.91 32.76,-0.52 24.92,7.36 40.29,29.96 34.27,50.4\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path88\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3830.12,2945.28 8.02,17.03 c -5.01,3 -16.03,12.02 -16.03,12.02 0,0 -11.02,-9.02 -16.04,-12.02 l 8.03,-17.03 h -0.53 l -6.96,-99.89 15.51,-29.79 15.49,29.79 -6.97,99.89 h -0.52\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path90\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1575.07,3845.16 c 32.42,13.25 47.97,50.25 34.71,82.67 -13.21,32.39 -50.19,47.94 -82.58,34.71 -32.46,-13.24 -48.03,-50.22 -34.75,-82.6 13.21,-32.46 50.2,-47.98 82.62,-34.78\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path92\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1714.19,3769.95 c -9.66,15.95 -30.42,21.05 -46.37,11.4 l -31.97,-19.36 -25.13,44.44 c -3.23,5.75 -7.93,10.17 -13.34,13.1 -4.85,3.13 -10.8,5.33 -17.37,6.13 l -75.46,9.06 c -2.92,0.34 -5.78,0.39 -8.53,0.18 -10.17,0.88 -20.61,-2.84 -27.98,-10.98 l -114.02,-125.91 c -12.52,-13.83 -11.46,-35.19 2.37,-47.7 7.79,-7.06 17.99,-9.8 27.64,-8.37 7.46,1.11 14.59,4.71 20.04,10.74 l 52.05,57.46 -12.44,-103.74 c -0.4,-3.31 0.06,-6.56 1.25,-9.63 0.15,-1.76 0.43,-3.53 0.87,-5.29 l 21.83,-88.06 -40.19,-62.48 c -10.09,-15.68 -5.56,-36.57 10.13,-46.67 5.65,-3.64 11.97,-5.37 18.23,-5.37 11.11,0 21.98,5.47 28.43,15.5 l 48.08,74.74 c 5.03,7.81 6.61,17.35 4.37,26.39 l -16.42,66.26 27.12,-3.25 c 2.53,-1.07 5.25,-1.87 8.1,-2.31 l 46.59,-7.17 -24.98,-73.25 c -6.03,-17.65 3.41,-36.83 21.05,-42.86 4.12,-1.4 8.31,-1.95 12.39,-1.78 13.48,0.6 25.86,9.31 30.48,22.84 l 37.98,111.39 c 3.23,9.45 2.11,19.84 -3.06,28.4 -5.19,8.54 -13.87,14.35 -23.76,15.88 l -62.25,9.58 7.71,64.24 c 4.47,-5.38 10.52,-9.27 17.39,-11.08 2.82,-0.74 5.69,-1.1 8.54,-1.1 6.12,0 12.18,1.66 17.49,4.88 l 61.74,37.37 c 15.96,9.66 21.06,30.41 11.4,46.38\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path94\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1940.45,3235.76 h -587.59 v 71.02 h 80.66 v 64.26 h 103.68 v 74.39 h 138.25 v 74.4 h 134.42 v 77.78 h 130.58 v -361.85\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path96\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2661.75,589.34 c 40.97,22.781 55.77,74.441 32.97,115.39 -22.73,40.942 -74.39,55.711 -115.29,32.969 -41.02,-22.758 -55.82,-74.418 -33.02,-115.34 22.73,-41 74.39,-55.738 115.34,-33.019\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path98\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 2819.69,337.102 2710.82,545.23 c -6.89,13.239 -22.01,19.989 -38.4,18.829 -1.29,0.089 -2.54,0.152 -3.84,0.152 h -95.67 l -84.09,8.48 16.58,16.848 c 17.5,17.82 17.26,46.441 -0.57,63.941 -17.8,17.469 -46.41,17.231 -63.91,-0.589 l -82.61,-84.071 c -12.19,-12.379 -16.18,-30.679 -10.27,-47.039 5.89,-16.34 20.68,-27.851 37.97,-29.601 l 136.36,-13.75 V 276.59 251.051 26.5508 C 2522.37,11.8906 2542.61,0 2567.53,0 c 24.93,0 45.2,11.8906 45.2,26.5508 V 217.281 h 9.99 V 26.5508 C 2622.72,11.8906 2642.99,0 2667.91,0 c 24.88,0 45.16,11.8906 45.16,26.5508 v 224.5002 25.539 58.851 l 22.22,-42.48 c 9.94,-19.09 37,-24.731 60.32,-12.539 23.27,12.187 34.05,37.578 24.08,56.68\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path100\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2507.49,680.492 -4.05,33.379 c -0.28,2.199 -2.26,3.77 -4.48,3.5 -2.21,-0.25 -3.77,-2.25 -3.53,-4.461 l 3.44,-28.148 c -1.61,0.289 -3.24,0.347 -4.96,0.136 -9.3,-1.128 -15.92,-9.597 -14.79,-18.878 l 5.47,-45.129 c 1.12,-9.289 9.59,-15.942 18.88,-14.809 9.3,1.137 15.93,9.609 14.8,18.898 l -5.47,45.129 c -0.5,4.121 -2.47,7.743 -5.31,10.383\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path102\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2627.16,534.02 8.47,17.972 -8.13,5.309 h -19.21 l -8.43,-5.309 8.43,-17.972 -8.96,-90.27 18.35,-36.191 v 0.23 l 0.08,-0.23 18.36,36.191 -8.96,90.27\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path104\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2062.84,572.609 c 39.38,21.911 53.58,71.52 31.67,110.891 -21.82,39.352 -71.46,53.52 -110.77,31.691 -39.41,-21.89 -53.64,-71.511 -31.73,-110.832 21.85,-39.41 71.46,-53.57 110.83,-31.75\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path106\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 2159.36,47.5508 2114.9,254.98 v 261.051 c 0,17.918 -19.15,32.438 -42.76,32.438 h -97.74 c -23.61,0 -42.75,-14.52 -42.75,-32.438 V 255.121 L 1887.19,47.5508 c -4.37,-20.2813 12.16,-41.01174 36.84,-46.28908 24.72,-5.3125 48.25,6.80859 52.62,27.07808 l 40.03,186.8012 h 13.17 l 40.02,-186.8012 c 4.3,-20.26949 27.86,-32.39058 52.6,-27.07808 24.77,5.27734 41.23,26.00778 36.89,46.28908\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path108\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2001.5,531.691 c -14.73,18.93 -42,22.36 -60.95,7.641 l -102.74,-79.871 c -9.23,-7.172 -15.16,-17.742 -16.49,-29.32 -1.34,-11.602 2.06,-23.27 9.41,-32.321 l 23.94,-29.539 72.83,48.09 -1.39,1.711 67.75,52.668 c 18.93,14.73 22.34,42 7.64,60.941\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path110\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2044.79,531.691 c 14.71,18.93 41.99,22.36 60.92,7.641 l 102.76,-79.871 c 9.2,-7.172 15.15,-17.742 16.47,-29.32 1.34,-11.602 -2.04,-23.27 -9.4,-32.321 l -23.96,-29.539 -72.81,48.09 1.38,1.711 -67.75,52.668 c -18.92,14.73 -22.34,42 -7.61,60.941\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path112\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2024.64,143.352 c -76.06,0 -137.7,61.628 -137.7,137.687 0,76.051 61.64,137.68 137.7,137.68 76.05,0 137.69,-61.629 137.69,-137.68 0,-76.059 -61.64,-137.687 -137.69,-137.687 z m 0,315.66 c -98.3,0 -177.97,-79.672 -177.97,-177.973 0,-98.32 79.67,-178 177.97,-178 98.29,0 177.97,79.68 177.97,178 0,98.301 -79.68,177.973 -177.97,177.973\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path114\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 1978.55,0.0117188 2024.64,281.039 2070.73,0.0117188 Z\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path116\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2243.83,300.238 c -5.84,0 -11.01,-2.679 -14.53,-6.797 h -164.97 c -1.9,6.028 -5.15,11.43 -9.34,15.93 l 81.43,143.527 c 5.34,1.051 10.2,4.211 13.09,9.313 5.23,9.211 2,20.93 -7.21,26.187 -9.23,5.211 -20.96,1.973 -26.2,-7.257 -2.89,-5.071 -3.12,-10.891 -1.26,-15.993 l -81.43,-143.507 c -2.81,0.629 -5.74,0.961 -8.77,0.961 -3.01,0 -5.96,-0.332 -8.77,-0.961 l -81.42,143.507 c 1.84,5.102 1.61,10.922 -1.26,15.993 -5.26,9.23 -16.98,12.468 -26.21,7.257 -9.2,-5.257 -12.44,-16.976 -7.21,-26.187 2.89,-5.102 7.76,-8.262 13.09,-9.313 l 81.43,-143.527 c -4.19,-4.5 -7.44,-9.902 -9.33,-15.93 h -164.98 c -3.51,4.118 -8.69,6.797 -14.54,6.797 -10.61,0 -19.19,-8.597 -19.19,-19.199 0,-10.617 8.58,-19.199 19.19,-19.199 5.85,0 11.03,2.652 14.54,6.781 h 164.98 c 1.89,-6.031 5.14,-11.43 9.33,-15.922 L 1912.86,109.16 c -5.33,-1.039 -10.2,-4.211 -13.09,-9.3084 -5.23,-9.2305 -2,-20.9297 7.21,-26.1719 9.23,-5.2305 20.95,-2 26.19,7.2305 2.89,5.0781 3.12,10.8984 1.27,15.9804 l 81.41,143.5074 c 2.83,-0.597 5.78,-0.937 8.79,-0.937 3.03,0 5.96,0.34 8.78,0.937 l 81.42,-143.5074 c -1.86,-5.082 -1.61,-10.9023 1.26,-15.9804 5.24,-9.2305 16.97,-12.461 26.2,-7.2305 9.21,5.2422 12.44,16.9414 7.21,26.1719 -2.89,5.0974 -7.75,8.2694 -13.08,9.3084 l -81.44,143.539 c 4.19,4.492 7.44,9.891 9.34,15.922 h 164.97 c 3.52,-4.129 8.69,-6.781 14.53,-6.781 10.61,0 19.2,8.582 19.2,19.199 0,10.602 -8.59,19.199 -19.2,19.199\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path118\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1863.24,357.891 c 8.57,-10.602 21.09,-16.071 33.75,-16.071 9.62,0 19.28,3.168 27.32,9.7 18.63,15.089 21.49,42.441 6.38,61.082 l -12.48,15.39 -72.82,-48.101 17.85,-22\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path120\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2183.05,357.891 c -8.59,-10.602 -21.13,-16.071 -33.78,-16.071 -9.59,0 -19.25,3.168 -27.31,9.7 -18.62,15.089 -21.49,42.441 -6.38,61.082 l 12.48,15.39 72.81,-48.101 -17.82,-22\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path136\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4247.44,3578.42 c -4.93,-0.99 -9.88,1.89 -11.38,6.79 -1.59,5.21 1.34,10.74 6.55,12.35 1.09,0.34 110.61,34.31 225.63,106.48 105.31,66.08 237.06,178.7 266.59,340 1,5.36 6.14,8.92 11.51,7.94 5.37,-0.99 8.92,-6.14 7.94,-11.52 -13.65,-74.58 -48.95,-145.37 -104.89,-210.36 -44.47,-51.65 -102.01,-99.79 -171.05,-143.05 -117.2,-73.46 -228.84,-108.05 -229.94,-108.39 -0.32,-0.1 -0.64,-0.18 -0.96,-0.24\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path138\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4702.03,4039.24 58.33,113.59 22.35,-127.64 -32.1,44.53 -48.58,-30.48\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path140\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4593.75,3839.69 c 41.99,23.35 57.14,76.27 33.78,118.26 -23.3,41.96 -76.23,57.1 -118.16,33.79 -42.05,-23.33 -57.19,-76.25 -33.84,-118.18 23.3,-42.04 76.23,-57.14 118.22,-33.87\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path142\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4769.09,4010.27 c -24.93,5.7 -49.76,-9.89 -55.49,-34.84 l -30.88,-135.29 -56.49,-30.75 c -6.66,2.88 -14.36,4.54 -22.58,4.54 h -104.23 c -2.61,0 -5.15,-0.17 -7.64,-0.48 -20.85,2.74 -40.37,-6.46 -46.76,-23.62 l -84.46,-225.39 c -7.71,-20.68 6.47,-45.14 31.69,-54.58 25.25,-9.45 51.99,-0.35 59.77,20.34 l 1.8,4.79 v -15.8 -26.16 -230.06 c 0,-15.04 20.72,-27.21 46.29,-27.21 25.54,0 46.3,12.17 46.3,27.21 v 195.44 h 10.25 v -195.44 c 0,-15.04 20.75,-27.21 46.29,-27.21 25.54,0 46.32,12.17 46.32,27.21 v 230.06 26.16 197.28 l 96.1,52.3 c 11.68,6.35 20.07,17.41 23.03,30.37 l 35.55,155.67 c 5.68,24.94 -9.92,49.78 -34.86,55.46\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path144\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3711.69,3848.11 c -41.4,23.04 -56.36,75.24 -33.32,116.66 22.99,41.38 75.19,56.3 116.54,33.32 41.48,-23.01 56.42,-75.21 33.39,-116.57 -22.98,-41.47 -75.18,-56.36 -116.61,-33.41\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path146\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3701.92,3810 h 102.82 c 3.07,0 6.09,-0.22 8.99,-0.67 l 80.19,41.35 23.56,74.66 c 7.61,24.06 33.27,37.4 57.33,29.8 24.08,-7.59 37.41,-33.25 29.81,-57.32 l -29.3,-92.8 c -3.67,-11.6 -11.81,-21.26 -22.63,-26.84 l -102.97,-53.1 v -231.6 c 0,-14.09 -11.24,-26.19 -27.3,-31.4 V 3262.6 c 0,-14.84 -20.44,-26.84 -45.65,-26.84 -9.8,0 -18.87,1.82 -26.31,4.91 -7.43,-3.09 -16.51,-4.91 -26.3,-4.91 -25.19,0 -45.67,12 -45.67,26.84 v 201.73 c -12.91,6 -21.55,16.81 -21.55,29.15 v 282.38 c 0,18.87 20.14,34.14 44.98,34.14\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path148\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4040.14,3847.21 c 6.33,2.11 13.17,-1.32 15.27,-7.66 l 18.06,-54.2 c 1.58,-4.74 0.06,-9.74 -3.44,-12.86 l 12.56,-37.78 -9.03,-3 -12.57,37.77 c -4.67,0.38 -8.88,3.5 -10.46,8.23 l -18.06,54.22 c -2.1,6.33 1.33,13.18 7.67,15.28\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path150\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4019.69,3823.43 c 5.58,1.86 11.64,-1.17 13.51,-6.77 l 15.96,-47.93 c 1.4,-4.19 0.06,-8.62 -3.05,-11.37 l 11.12,-33.39 -7.99,-2.66 -11.12,33.39 c -4.13,0.35 -7.85,3.09 -9.24,7.27 l -15.95,47.94 c -1.88,5.6 1.16,11.65 6.76,13.52\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path152\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3999.39,3798.54 c 4.82,1.59 10,-1 11.61,-5.82 l 13.7,-41.16 c 1.2,-3.58 0.04,-7.39 -2.61,-9.76 l 9.54,-28.67 -6.86,-2.29 -9.55,28.68 c -3.54,0.3 -6.73,2.66 -7.93,6.24 l -13.71,41.17 c -1.61,4.82 0.99,10.01 5.81,11.61\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path154\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3886.75,3747.76 h 215.37 l -77.49,-92.31 h -8.8 v -419.69 h -119.29 v 419.69 h -9.79 v 92.31\\\"],[8],[9],[0,\\\"\\\\n\\\\n           \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path208\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 530.012,1222.61 H 340.676 v 129.5 h 189.336 v -129.5\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path210\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 514.871,1360.71 H 355.805 v 108.79 h 159.066 v -108.79\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path212\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 498.441,1476.22 H 372.246 v 86.32 h 126.195 v -86.32\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path214\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 241.145,1352.86 c 34.359,23.94 42.859,71.18 18.918,105.54 -23.891,34.34 -71.122,42.82 -105.454,18.93 -34.41,-23.92 -42.906,-71.16 -18.964,-105.47 23.902,-34.42 71.125,-42.88 105.5,-19\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path216\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 459.199,1269.53 c -8.148,20.75 -31.586,30.98 -52.34,22.82 l -67.039,-26.32 -50.332,52.85 c -8.566,8.99 -20.289,13.16 -31.789,12.44 -2.683,0.15 -5.429,0.1 -8.226,-0.18 l -90.407,-9.15 c -21.855,-2.22 -38.199,-17.45 -36.511,-34.03 l 23.535,-232.59 c -0.324,-0.73 -0.578,-1.49 -0.774,-2.28 L 93.2422,835.879 c -3.0625,-12.758 12.0348,-27.277 33.7068,-32.488 21.656,-5.18 41.723,0.918 44.785,13.668 l 47.844,199.541 26.031,2.65 31.973,-73.129 -40.906,-87.012 c -9.496,-20.179 -0.832,-44.23 19.359,-53.718 5.551,-2.61 11.391,-3.84 17.153,-3.84 15.164,0 29.687,8.578 36.562,23.211 l 48.711,103.59 c 4.953,10.539 5.117,22.687 0.449,33.359 l -41.758,95.479 -13.136,129.86 c 7.238,-5.82 16.183,-8.93 25.297,-8.93 4.957,0 9.96,0.92 14.753,2.81 l 92.317,36.27 c 20.758,8.14 30.98,31.58 22.816,52.33\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path218\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2666.69,2221.91 c 41.52,23.1 56.52,75.44 33.42,116.98 -23.05,41.49 -75.39,56.44 -116.87,33.4 -41.57,-23.07 -56.56,-75.42 -33.46,-116.88 23.04,-41.57 75.39,-56.51 116.91,-33.5\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path220\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2804.26,1941.8 -81.5,239.94 c -3.81,11.25 -19.52,16.57 -37.87,14.1 -2.72,0.39 -5.52,0.61 -8.41,0.61 H 2573.4 c -24.92,0 -45.11,-15.34 -45.11,-34.25 v -250.54 c -0.95,-2.16 -1.44,-4.4 -1.44,-6.72 v -253.42 c 0,-14.87 20.5,-26.91 45.79,-26.91 25.26,0 45.8,12.04 45.8,26.91 v 193.31 h 10.13 v -193.31 c 0,-14.87 20.53,-26.91 45.8,-26.91 25.23,0 45.78,12.04 45.78,26.91 v 218.94 c 0.93,2.74 1.44,5.63 1.44,8.6 v 26.85 c 8.81,-8.92 28.17,-11.05 47.96,-4.33 23.91,8.12 39.48,26.13 34.71,40.22\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path222\\\"],[10,\\\"style\\\",\\\"fill:#b6ac8f;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2634.51,2164.01 8.57,18.2 -8.22,5.4 h -19.47 l -8.57,-5.4 8.55,-18.2 -9.07,-91.52 18.62,-36.67 v 0.23 l 0.05,-0.23 18.61,36.67 -9.07,91.52\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path224\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2584.36,1871.87 -111.61,45.33 67.45,166.06 111.61,-45.33 -67.45,-166.06\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path226\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2528.47,1897.65 c -10.23,0 -20.52,3.39 -29.04,10.39 l -73.45,60.23 c -17.86,14.65 -22.02,40.32 -9.69,59.86 l 92.67,146.93 c 13.5,21.4 41.8,27.8 63.19,14.3 21.4,-13.5 27.8,-41.79 14.31,-63.2 l -71.1,-112.69 42.18,-34.59 c 19.56,-16.03 22.41,-44.91 6.38,-64.47 -9.07,-11.04 -22.21,-16.76 -35.45,-16.76\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path228\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:0;fill-rule:nonzero;stroke:#006199;stroke-width:30\\\"],[10,\\\"d\\\",\\\"m 674.492,3158.06 c -50.211,-13.44 -100.437,-26.88 -150.648,-40.32 l 5.648,-63.05 c 51.801,-4.3 103.617,-8.58 155.426,-12.88 l -10.426,116.25\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path230\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 696.047,3029.86 c -2.442,-0.23 -4.617,1.59 -4.84,4.03 l -11.922,133.09 c -0.215,2.44 1.582,4.61 4.035,4.83 v 0 c 2.446,0.22 4.625,-1.6 4.836,-4.04 l 11.926,-133.08 c 0.227,-2.44 -1.59,-4.61 -4.035,-4.83 v 0\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path232\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 519.859,3049.83 c -2.449,-0.22 -4.527,0.59 -4.629,1.82 l -5.976,66.55 c -0.098,1.22 1.797,2.39 4.242,2.61 v 0 c 2.461,0.22 4.527,-0.6 4.633,-1.83 l 5.973,-66.54 c 0.113,-1.21 -1.793,-2.39 -4.243,-2.61 v 0\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path234\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 612.027,3050.18 -8.839,0.63 c -0.708,-10.16 -7,-17.98 -14.008,-17.49 l -19.895,1.39 c -7.027,0.5 -12.168,9.13 -11.449,19.28 l -8.828,0.61 c -0.981,-14.1 6.121,-26.1 15.887,-26.77 l 27.66,-1.96 c 9.769,-0.67 18.484,10.21 19.472,24.31\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path236\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:0;fill-rule:nonzero;stroke:#006199;stroke-width:30\\\"],[10,\\\"d\\\",\\\"m 135.32,2791.82 144.637,181.01 c 8.047,10.06 21.156,14.15 34.746,12.26 2.344,0.3 4.754,0.46 7.227,0.46 h 100.367 c 4.598,0 9.035,-0.54 13.207,-1.54 0.785,-0.18 1.562,-0.37 2.324,-0.59 l 110.391,-31.17 v 48.32 c 0,24.64 19.965,44.6 44.59,44.6 24.636,0 44.593,-19.96 44.593,-44.6 v -107.26 c 0,-13.98 -6.543,-27.14 -17.679,-35.57 -7.828,-5.93 -17.313,-9.04 -26.914,-9.04 -4.047,0 -8.125,0.56 -12.11,1.69 l -114.5,32.33 v -180.96 -25.19 -221.52 c 0,-14.48 -19.961,-26.2 -44.566,-26.2 -24.602,0 -44.59,11.72 -44.59,26.2 v 188.18 h -9.875 v -188.18 c 0,-14.48 -19.98,-26.2 -44.574,-26.2 -24.567,0 -44.574,11.72 -44.574,26.2 v 221.52 25.19 118.08 l -69.309,-86.72 c -13.262,-16.61 -40.473,-16.94 -60.746,-0.75 -20.301,16.19 -25.914,42.83 -12.645,59.45\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path238\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:0;fill-rule:nonzero;stroke:#006199;stroke-width:30\\\"],[10,\\\"d\\\",\\\"m 331.465,3010.34 c -40.426,22.49 -55.016,73.45 -32.535,113.88 22.449,40.4 73.398,54.96 113.781,32.52 40.473,-22.46 55.059,-73.41 32.57,-113.79 -22.429,-40.47 -73.383,-55.01 -113.816,-32.61\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path240\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3491.16,4615.47 c 39.19,21.82 53.34,71.22 31.55,110.42 -21.77,39.18 -71.19,53.3 -110.34,31.55 -39.24,-21.78 -53.4,-71.19 -31.59,-110.35 21.76,-39.25 71.17,-53.34 110.38,-31.62\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path242\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3645.71,4368.59 -109.66,212.62 c -4.21,8.18 -15.36,11.53 -28.52,9.76 -2.31,0.3 -4.7,0.46 -7.13,0.46 h -97.31 c -3.01,0 -5.92,-0.24 -8.75,-0.69 -17.75,3.18 -36.32,-5.03 -45.49,-21.71 l -51.26,-93.11 -52.76,15.31 c -22.93,6.66 -46.92,-6.53 -53.58,-29.48 -6.66,-22.94 6.53,-46.93 29.47,-53.58 l 85.99,-24.97 c 4,-1.15 8.06,-1.72 12.07,-1.72 15.44,0 30.13,8.32 37.87,22.4 l 3.85,6.99 v -119.06 c 0,-4.42 1.17,-8.63 3.29,-12.47 l 20.69,-206.05 c 1.43,-13.97 21.81,-23.34 45.57,-20.95 8.07,0.8 15.47,2.87 21.69,5.79 6.22,-2.92 13.64,-4.99 21.69,-5.79 23.77,-2.39 44.16,6.98 45.56,20.95 l 20.7,206.05 c 2.13,3.84 3.3,8.05 3.3,12.47 v 87.35 l 25.89,-50.2 c 6.42,-12.47 28.85,-13.69 50.06,-2.76 21.17,10.93 33.2,29.91 26.77,42.39\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path244\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2942.21,4615.47 c -39.2,21.82 -53.35,71.22 -31.56,110.42 21.76,39.18 71.18,53.3 110.34,31.55 39.24,-21.78 53.4,-71.19 31.59,-110.35 -21.76,-39.25 -71.17,-53.34 -110.37,-31.62\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path246\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2787.65,4368.59 109.65,212.62 c 4.22,8.18 15.37,11.53 28.52,9.76 2.32,0.3 4.71,0.46 7.13,0.46 h 97.33 c 2.99,0 5.92,-0.24 8.74,-0.69 17.75,3.18 36.31,-5.03 45.49,-21.71 l 51.26,-93.11 52.76,15.31 c 22.93,6.66 46.92,-6.53 53.59,-29.48 6.65,-22.94 -6.53,-46.93 -29.48,-53.58 l -85.99,-24.97 c -4,-1.15 -8.06,-1.72 -12.06,-1.72 -15.45,0 -30.13,8.32 -37.88,22.4 l -3.85,6.99 v -119.06 c 0,-4.42 -1.18,-8.63 -3.29,-12.47 l -20.69,-206.05 c -1.41,-13.97 -21.81,-23.34 -45.56,-20.95 -8.07,0.8 -15.48,2.87 -21.7,5.79 -6.23,-2.92 -13.64,-4.99 -21.7,-5.79 -23.75,-2.39 -44.16,6.98 -45.55,20.95 l -20.7,206.05 c -2.12,3.84 -3.3,8.05 -3.3,12.47 v 87.35 l -25.88,-50.2 c -6.43,-12.47 -28.87,-13.69 -50.07,-2.76 -21.17,10.93 -33.21,29.91 -26.77,42.39\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path248\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2825.37,4290.31 h -11.1 v 27.75 h 11.1 v -27.75\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path250\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2834.39,4131.52 h -29.14 v 153.94 h 29.14 v -153.94\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path252\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1318.23,2667.01 c 25.8,0 46.73,20.93 46.73,46.74 0,25.82 -20.93,46.73 -46.73,46.73 -25.82,0 -46.73,-20.91 -46.73,-46.73 0,-25.81 20.91,-46.74 46.73,-46.74\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path254\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1393.31,2771.73 c -11.1,0 -20.11,-8.09 -20.11,-18.09 h 0.01 v -45.69 c 0,-31.83 -24.62,-57.62 -54.99,-57.62 -30.35,0 -54.97,25.79 -54.97,57.62 v 45.69 h 0.01 c 0,10 -9.01,18.09 -20.12,18.09 -11.11,0 -20.12,-8.09 -20.12,-18.09 v -51.66 c 0,-32.18 19.54,-60.24 48.48,-75.01 v -198.12 h 43.04 v 88.24 h 7.38 v -88.24 h 43.04 v 198.12 c 28.93,14.77 48.47,42.83 48.47,75.01 v 51.66 c 0,10 -9,18.09 -20.12,18.09\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path256\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1659.73,3007.86 c 40.47,22.52 55.09,73.53 32.57,114.02 -22.46,40.45 -73.48,55.02 -113.9,32.56 -40.54,-22.5 -55.15,-73.51 -32.62,-113.94 22.45,-40.52 73.48,-55.07 113.95,-32.64\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path258\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1840.83,2780.39 -131.52,183.06 c -0.88,1.48 -1.9,2.9 -3.06,4.26 l -0.81,1.13 c -7.28,10.15 -19.65,14.93 -32.9,14.11 -1.08,0.05 -2.16,0.09 -3.26,0.09 H 1568.8 c -1.1,0 -2.19,-0.04 -3.27,-0.09 -13.24,0.82 -25.62,-3.96 -32.91,-14.11 l -0.82,-1.14 c -1.14,-1.35 -2.16,-2.77 -3.04,-4.24 l -131.51,-183.07 c -12.43,-17.28 -5.38,-43.65 15.74,-58.79 21.05,-15.15 48.31,-13.4 60.65,3.89 l 51.18,71.22 v -113.93 -9.1 -200.19 c 0,-24.67 18.59,-44.64 41.51,-44.64 22.91,0 41.5,19.97 41.5,44.64 v 166.82 h 22.42 v -166.82 c 0,-24.67 18.58,-44.64 41.48,-44.64 22.93,0 41.52,19.97 41.52,44.64 v 200.19 9.1 113.96 l 51.18,-71.25 c 12.36,-17.29 39.59,-19.04 60.73,-3.89 21.04,15.14 28.07,41.51 15.67,58.79\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path260\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1059.67,3010.82 c 40.48,22.51 55.08,73.53 32.58,114.01 -22.47,40.44 -73.49,55.03 -113.926,32.56 -40.511,-22.49 -55.121,-73.5 -32.617,-113.93 22.469,-40.53 73.483,-55.09 113.963,-32.64\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path262\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1235.04,2783.33 -135.37,188.45 c -7.74,10.78 -21.21,15.51 -35.36,13.89 -1.58,0.21 -3.19,0.33 -4.81,0.33 h -81.043 c -1.637,0 -3.242,-0.12 -4.82,-0.33 -14.16,1.62 -27.617,-3.11 -35.352,-13.89 L 802.906,2783.33 c -12.41,-17.28 -5.367,-43.63 15.742,-58.78 21.055,-15.16 48.329,-13.4 60.668,3.88 l 63.692,88.63 V 2781 l -50.61,-137.74 h 48.5 V 2473.5 c 0,-24.68 16.118,-44.65 36.008,-44.65 19.875,0 36.014,19.97 36.014,44.65 v 169.76 h 1.12 9.87 1.11 V 2473.5 c 0,-24.68 16.14,-44.65 36.03,-44.65 19.88,0 36.01,19.97 36.01,44.65 v 169.76 h 48.49 L 1094.94,2781 v 36.1 l 63.69,-88.67 c 12.37,-17.28 39.62,-19.04 60.74,-3.88 21.05,15.15 28.07,41.5 15.67,58.78\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path264\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4416.76,4650.29 c -41.58,23.13 -56.6,75.57 -33.48,117.16 23.11,41.57 75.53,56.57 117.07,33.48 41.66,-23.12 56.68,-75.55 33.54,-117.09 -23.09,-41.65 -75.53,-56.61 -117.13,-33.55\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path266\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4184.12,4446.26 109.08,54.56 63.79,102.33 c 9.68,15.52 27.1,23.25 44.12,21.33 1.92,0.19 3.87,0.29 5.84,0.29 h 103.27 c 0.79,0 1.58,-0.02 2.35,-0.04 16.93,0.66 32.23,-6.78 38.93,-20.34 1.13,-1.93 2.04,-3.93 2.68,-6.01 l 93.12,-214.18 c 8.73,-20.06 -4.06,-45 -28.58,-55.64 -24.43,-10.65 -51.43,-2.96 -60.08,17.08 l -3.24,7.43 v -24.85 l 48.42,-226.03 c 4.59,-21.42 -12.85,-43.32 -38.95,-48.91 -26.08,-5.6 -50.96,7.2 -55.56,28.61 l -40.86,190.66 h -19.71 l -40.85,-190.66 c -4.54,-21.41 -29.43,-34.21 -55.56,-28.61 -26.19,5.59 -43.57,27.49 -38.98,48.91 l 48.42,225.89 v 109.67 c -4.24,-5.54 -9.67,-10.08 -15.94,-13.21 l -120.66,-60.36 c -6.61,-3.3 -13.6,-4.86 -20.5,-4.86 -16.82,0 -33.05,9.29 -41.07,25.38 -11.36,22.66 -2.16,50.22 20.52,61.56\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path268\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3898.07,4229.23 c 0,0 0.39,-28.44 17.31,-47.4 0,0 18.14,-15.25 25.15,-37.92 0,0 17.3,-47.41 16.88,-54.82 0,0 1.67,-12.78 -4.95,-17.32 0,0 -13.17,-11.95 -3.29,-17.31 4.27,-2.3 16.89,-3.6 21.13,-1.28 5.75,3.14 7.21,14.5 9.06,20.29 2,6.28 5.31,15.24 2.79,21.8 0,0 -7,22.67 -7,34.62 0,0 2.06,13.2 -2.08,22.68 0,0 -2.87,8.24 -2.04,16.49 20.31,-1.99 44.31,-1.83 62.81,7.44 18.12,9.06 42.68,22.44 60.01,3.67 0,0 30.1,-32.56 37.92,-45.33 0,0 8.24,-7.83 12.37,-11.13 0,0 8.65,-14.43 8.24,-30.5 0,0 2.9,-12.37 0,-17.72 l -1.65,-9.07 c 0,0 -5.64,-14.02 2.96,-14.02 h 14.76 c 0,0 7.02,3.71 8.25,14.02 0,0 1.24,24.32 -2.07,37.1 0,0 -1.64,7.82 -0.81,13.18 0,0 0,7.83 -9.89,18.14 0,0 -18.15,25.14 -18.55,54.81 0,0 4.52,40.41 -9.07,58.12 l -1.64,3.72 c 0.32,-0.73 18.02,13.26 19.4,14.67 7.98,8.1 14.55,17.99 16.59,29.35 4.96,27.54 -13.24,64.72 -43.64,67.59 -11.49,1.08 -26.76,-3.57 -34.37,-12.47 -6.28,-7.36 -7.15,-18.05 -5.66,-27.27 0.64,-4.06 1.86,-8 3.27,-11.86 1.27,-3.4 5.73,-9.54 5.65,-13.02 0,0 0.83,39.57 25.14,31.33 0,0 34.22,-17.31 15.67,-45.75 0,0 -7.42,-13.2 -14,-18.97 0,0 -37.12,8.66 -61.43,-2.06 0,0 -55.65,-21.44 -91.91,0.81 -6.57,3.42 -12.92,7.45 -18.93,11.76 -8.48,6.08 -15.44,13.81 -22.37,21.54 -6.24,6.96 -13.85,13.86 -17.23,22.77 0,0 4.53,23.91 -9.89,48.23 0,0 -1.66,-22.68 -6.6,-30.92 0,0 -30.5,-7.41 -39.16,-19.37 l -24.33,-1.64 c 0,0 -16.9,0.82 -9.88,-12.38 0,0 8.24,-11.53 9.07,-16.06 0,0 2.05,-8.25 10.71,-9.49 0,0 32.98,0.42 39.97,-16.49 0,0 11.15,-9.9 14.85,-19.77 0,0 1.55,-3.51 2.48,-12.79\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path270\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3925.74,4303.51 228.5,83.95 -2.74,7.43 -228.49,-83.96 2.73,-7.42\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path272\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2349.43,3832.2 c 41.46,23.07 56.43,75.34 33.37,116.8 -23.02,41.44 -75.28,56.38 -116.7,33.36 -41.51,-23.04 -56.49,-75.31 -33.41,-116.72 23.01,-41.51 75.27,-56.43 116.74,-33.44\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path274\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2586.11,3622 -78.81,36.78 -110.19,131.6 c -9.68,11.55 -23.82,17.12 -37.8,16.29 -0.97,0.06 -1.98,0.09 -2.97,0.09 h -102.95 c -3.1,0 -6.12,-0.24 -9.05,-0.69 -21.67,3.8 -43.53,-8.54 -51.01,-30 l -79.61,-228.03 c -8.32,-23.85 4.26,-49.94 28.13,-58.26 4.99,-1.74 10.07,-2.57 15.07,-2.57 18.92,0 36.61,11.82 43.19,30.69 l 8.24,23.61 v -25.83 -25.84 -227.21 c 0,-14.85 20.47,-26.87 45.72,-26.87 25.24,0 45.73,12.02 45.73,26.87 v 193.02 h 10.13 v -193.02 c 0,-14.85 20.49,-26.87 45.72,-26.87 25.22,0 45.73,12.02 45.73,26.87 v 227.21 25.84 127.09 l 42.27,-50.5 c 4.33,-5.13 9.67,-9.26 15.76,-12.09 l 88.02,-41.08 c 6.27,-2.92 12.85,-4.3 19.3,-4.3 17.24,0 33.72,9.77 41.49,26.41 10.69,22.89 0.78,50.11 -22.11,60.79\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path276\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2604.89,3492.69 h -111.5 l 36.16,-256.93 h 133.03 l 36.19,256.93 h -93.88\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path278\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2545.05,3253.07 h 102.03 l 6.68,49.88 h -115.38 l 6.67,-49.88\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path280\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3035.96,1419.38 c 42.95,23.89 58.43,78.03 34.55,120.98 -23.83,42.93 -77.97,58.4 -120.88,34.56 -43.01,-23.87 -58.51,-78.01 -34.61,-120.9 23.84,-43 77.98,-58.45 120.94,-34.64\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path282\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3165.5,1126.36 -76.97,250.55 c -3.51,11.43 -18.79,17.4 -37.13,15.89 -1.76,0.14 -3.53,0.23 -5.32,0.23 h -106.64 c -2.88,0 -5.67,-0.21 -8.39,-0.59 -9.84,1.68 -18.39,-0.23 -23.35,-6.12 l -168.56,-200.74 c -9.89,-11.77 -1.64,-34.96 18.37,-51.76 20,-16.79 44.28,-20.93 54.18,-9.14 l 81.1,96.59 V 1091.5 1064.75 829.391 c 0,-15.379 21.21,-27.84 47.37,-27.84 26.13,0 47.36,12.461 47.36,27.84 v 199.939 h 10.5 V 829.391 c 0,-15.379 21.23,-27.84 47.35,-27.84 26.11,0 47.36,12.461 47.36,27.84 v 235.359 19.37 c 9.87,-2.66 22.62,-2.29 35.68,1.73 24.94,7.66 41.59,25.79 37.09,40.51\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path284\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2598.68,1163.96 c 25.21,14 34.29,45.77 20.28,70.96 -13.98,25.18 -45.74,34.25 -70.9,20.27 -25.23,-14 -34.32,-45.77 -20.31,-70.93 13.98,-25.21 45.74,-34.28 70.93,-20.3\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path286\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2755.7,1171.21 c -4.58,13.17 -14.57,21.71 -22.33,19.02 l -122.09,-42.37 c -2.13,0.41 -4.36,0.63 -6.64,0.63 h -62.56 c -2.01,0 -3.95,-0.16 -5.85,-0.47 -7.14,1.34 -13.32,-0.12 -16.07,-4.47 l -74.62,-118.34 c -4.37,-6.92 1.68,-18.61 13.47,-26.05 11.79,-7.43 24.93,-7.851 29.3,-0.93 l 26.41,41.9 v -19.59 0 l -24.89,-85.509 h 24.89 v -117.16 c 0,-9 12.44,-16.32 27.77,-16.32 15.32,0 27.78,7.32 27.78,16.32 v 117.16 h 6.17 v 0 -117.16 c 0,-9 12.45,-16.32 27.78,-16.32 15.31,0 27.78,7.32 27.78,16.32 v 117.16 h 24.88 L 2632,1020.54 v 0 80.99 l 117.94,40.93 c 7.77,2.71 10.33,15.59 5.76,28.75\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path288\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2625.32,1299.29 -41.23,-23.81 c -1.56,4.42 -5.78,7.6 -10.73,7.6 -4.96,0 -9.17,-3.18 -10.74,-7.6 l -41.21,23.81 v -55.2 l 41.21,23.81 c 1.57,-4.43 5.78,-7.61 10.74,-7.61 4.95,0 9.17,3.18 10.73,7.61 l 41.23,-23.81 v 55.2\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path296\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3156.11,3809.17 c 39.86,22.17 54.25,72.42 32.08,112.29 -22.13,39.83 -72.39,54.19 -112.2,32.08 -39.91,-22.16 -54.3,-72.41 -32.11,-112.22 22.13,-39.92 72.36,-54.25 112.23,-32.15\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path298\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3402.39,3760.4 c -14.71,16.46 -39.99,17.88 -56.44,3.17 l -63.21,-56.48 -85.5,68.25 c -6.77,5.41 -14.77,8.25 -22.82,8.67 -2.87,0.46 -5.86,0.71 -8.9,0.71 h -98.98 c -3.06,0 -6.05,-0.25 -8.92,-0.71 -8.04,-0.42 -16.04,-3.26 -22.82,-8.67 l -85.48,-68.25 -63.22,56.48 c -16.45,14.71 -41.72,13.29 -56.43,-3.17 -14.72,-16.46 -13.3,-41.74 3.15,-56.45 l 88.4,-78.99 c 7.58,-6.76 17.09,-10.17 26.64,-10.17 8.81,0 17.63,2.9 24.94,8.74 l 50.44,40.26 v -158.92 -24.85 -218.43 c 0,-14.27 19.69,-25.83 43.97,-25.83 24.25,0 43.95,11.56 43.95,25.83 v 185.57 h 9.74 v -185.57 c 0,-14.27 19.7,-25.83 43.94,-25.83 24.25,0 43.97,11.56 43.97,25.83 v 218.43 24.85 158.92 l 50.44,-40.26 c 7.31,-5.84 16.13,-8.74 24.94,-8.74 9.55,0 19.08,3.41 26.64,10.17 l 88.38,78.99 c 16.47,14.71 17.89,39.99 3.18,56.45\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path300\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3125.22,3749.64 8.23,17.46 -7.89,5.19 h -18.69 l -8.24,-5.19 8.22,-17.46 -8.72,-87.87 17.88,-35.2 v 0.23 l 0.05,-0.23 17.87,35.2 -8.71,87.87\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path302\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 717.844,459.141 h -84.168 c -8.449,0 -15.309,-6.86 -15.309,-15.321 v -1.851 c 0.051,-0.328 0.141,-0.598 0.172,-0.93 l 19.25,-137.07 c 2.367,-16.86 -5.687,-26.059 -19.422,-25.43 V 0.0117188 H 733.148 V 443.82 c 0,8.461 -6.855,15.321 -15.304,15.321\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path304\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 478.598,224.48 V 0.0117188 H 593.379 V 287.398 l -23.715,13 c -10.98,-16.039 -43.238,-57.937 -91.066,-75.918\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path306\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 342.559,248.539 c -2.317,-2.668 -3.719,-6.148 -3.719,-9.969 V 0.0117188 H 453.617 V 217.75 c -32.054,-5.281 -69.492,1.289 -111.058,30.789\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path308\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 623.168,318.879 605.309,446.18 c -3.184,22.66 -22.809,33.41 -43.61,23.902 L 444.762,416.691 c -20.801,-9.511 -18.196,-28.043 5.781,-41.179 l 19.84,-10.871 c -1.906,-91.09 -124.899,-94.77 -124.899,-94.77 114.594,-84.652 196.153,19.027 214.414,45.699 l 25.457,-13.968 c 23.969,-13.141 41.004,-5.364 37.813,17.277\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path310\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 215.969,584.852 c 40.664,22.609 55.34,73.878 32.719,114.527 -22.571,40.633 -73.817,55.293 -114.426,32.73 C 93.5547,709.512 78.8789,658.25 101.5,617.648 c 22.563,-40.699 73.809,-55.347 114.469,-32.796\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path312\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 505.051,619.738 c -9.469,22.883 -35.699,33.774 -58.59,24.293 L 239.234,558.262 c -4.3,1.078 -8.89,1.668 -13.668,1.668 H 124.617 c -4.058,0 -7.992,-0.438 -11.73,-1.219 C 94.9141,557.43 78.7305,545.332 73.1563,527.059 L 1.96875,293.898 c -7.23828,-23.699 6.10938,-48.757 29.80075,-56.007 4.3594,-1.34 8.7774,-1.95 13.1094,-1.95 13.9649,0 27.1328,6.579 35.582,17.598 V 249.148 26.3711 c 0,-14.5703 20.0701,-26.3593812 44.8321,-26.3593812 24.73,0 44.84,11.7890812 44.84,26.3593812 V 215.629 h 9.922 V 26.3711 c 0,-14.5703 20.101,-26.3593812 44.84,-26.3593812 24.714,0 44.832,11.7890812 44.832,26.3593812 V 249.148 274.48 473.801 l 211.039,87.328 c 22.886,9.48 33.761,35.723 24.285,58.609\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path314\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 184.457,534.219 8.406,17.812 -8.062,5.301 h -19.059 l -8.387,-5.301 8.372,-17.812 -8.887,-89.617 18.23,-35.903 v 0.242 l 0.051,-0.242 18.223,35.903 -8.887,89.617\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path316\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4762.58,1828.45 h -453.5 v -43.81 h 24.47 V 1755 c 0,-17.07 13.83,-30.92 30.93,-30.92 17.06,0 30.92,13.85 30.92,30.92 v 29.64 h 280.87 V 1755 c 0,-17.07 13.85,-30.92 30.92,-30.92 17.08,0 30.93,13.85 30.93,30.92 v 29.64 h 24.46 v 43.81\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path318\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4736.66,1942.44 -45.14,125.89 c 0,0 -57.01,19 -154.4,19 -97.42,0 -154.41,-19 -154.41,-19 l -45.13,-125.89 -28.5,-21.39 v -85.52 h 228.04 228.04 v 85.52 l -28.5,21.39\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path320\\\"],[10,\\\"style\\\",\\\"fill:#adadab;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4406.16,1884.82 c 0,-16.73 -13.54,-30.28 -30.28,-30.28 v 0 c -16.74,0 -30.29,13.55 -30.29,30.28 v 0 c 0,16.73 13.55,30.3 30.29,30.3 v 0 c 16.74,0 30.28,-13.57 30.28,-30.3 v 0\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path322\\\"],[10,\\\"style\\\",\\\"fill:#adadab;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4728.63,1884.82 c 0,-16.73 -13.56,-30.28 -30.27,-30.28 v 0 c -16.74,0 -30.3,13.55 -30.3,30.28 v 0 c 0,16.73 13.56,30.3 30.3,30.3 v 0 c 16.71,0 30.27,-13.57 30.27,-30.3 v 0\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path324\\\"],[10,\\\"style\\\",\\\"fill:#adadab;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4647.57,2061.22 c 0,0 -33.84,8.9 -110.45,8.9 -76.61,0 -110.47,-8.9 -110.47,-8.9 l -40.98,-99.78 c 69.5,12.48 151.45,14.24 151.45,14.24 0,0 81.95,-1.76 151.43,-14.24 l -40.98,99.78\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path326\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4777.7,1992.6 h -13.53 c -11.72,0 -21.25,-9.51 -21.25,-21.27 0,-0.64 0.13,-1.29 0.19,-1.94 l -22.37,-6.51 2.71,-9.29 22.7,6.62 c 3.74,-6.06 10.39,-10.12 18.02,-10.12 h 13.53 c 11.75,0 21.27,9.51 21.27,21.24 0,11.76 -9.52,21.27 -21.27,21.27\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path328\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4296.52,1992.6 h 13.55 c 11.72,0 21.24,-9.51 21.24,-21.27 0,-0.64 -0.13,-1.29 -0.19,-1.94 l 22.38,-6.51 -2.72,-9.29 -22.69,6.62 c -3.74,-6.06 -10.39,-10.12 -18.02,-10.12 h -13.55 c -11.73,0 -21.25,9.51 -21.25,21.24 0,11.76 9.52,21.27 21.25,21.27\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path330\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4128.27,2238.54 c 42.68,23.73 58.09,77.53 34.35,120.22 -23.68,42.65 -77.49,58.03 -120.12,34.34 -42.73,-23.73 -58.15,-77.52 -34.4,-120.15 23.7,-42.74 77.5,-58.09 120.17,-34.41\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path332\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4452.33,2222 c -12.63,22.75 -41.3,30.93 -64.03,18.28 l -106.56,-59.2 -125.33,28.49 c -5.56,1.79 -11.67,2.75 -18.09,2.75 h -105.95 c -1.4,0 -2.78,-0.03 -4.18,-0.12 -19.5,1.47 -38.67,-9.37 -46.82,-28.34 l -100.08,-232.54 c -10.26,-23.9 0.76,-51.6 24.64,-61.88 6.07,-2.58 12.39,-3.83 18.6,-3.83 18.24,0 35.61,10.66 43.27,28.47 l 18.23,42.35 v -43.71 -26.58 -233.87 c 0,-15.28 21.07,-27.66 47.06,-27.66 25.95,0 47.07,12.38 47.07,27.66 v 198.69 h 10.42 v -198.69 c 0,-15.28 21.1,-27.66 47.05,-27.66 25.94,0 47.07,12.38 47.07,27.66 v 233.87 26.58 193.85 l 93.72,-21.3 c 3.47,-0.79 6.95,-1.16 10.45,-1.16 7.94,0 15.83,1.99 22.85,5.93 l 122.32,67.93 c 22.72,12.64 30.91,41.3 18.29,64.03\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path334\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3878.03,1887.31 c 2.2,8.33 9.88,13.54 17.17,11.62 l 21.12,-5.55 c 7.28,-1.92 11.4,-10.25 9.2,-18.59 v 0 l 6.37,-1.67 v 0 c 3.02,11.42 -2.05,22.64 -11.27,25.06 l -26.77,7.05 c -9.25,2.46 -19.17,-4.83 -22.19,-16.25 0,0 0,0 0,-0.02 l 6.37,-1.66 c 0,0.01 0,0.01 0,0.01\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path336\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 3963.17,1861.66 -15.56,4.11 -12.72,3.35 -66.77,17.57 -12.71,3.37 -15.57,4.1 c -14.96,3.93 -30.24,-4.99 -34.18,-19.92 l -14.59,-55.44 -4.67,-17.69 c -3.92,-14.93 4.99,-30.24 19.94,-34.16 l 15.56,-4.1 12.73,-3.34 66.78,-17.59 12.7,-3.37 15.58,-4.07 c 0.36,-0.11 0.71,-0.18 1.05,-0.27 0.06,0 0.12,-0.02 0.18,-0.03 0.35,-0.08 0.69,-0.14 1.04,-0.22 0.04,0 0.06,0 0.1,0 14.15,-2.46 28.06,6.28 31.77,20.44 l 19.27,73.11 c 3.94,14.92 -4.99,30.21 -19.93,34.15\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path338\\\"],[10,\\\"style\\\",\\\"fill:#adadab;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2224.9,2474.09 c 30.75,0 59.77,-7.52 85.29,-20.79 l -85.29,-164.26 149.01,-109.74 c -33.7,-45.69 -87.91,-75.31 -149.01,-75.31 -102.2,0 -185.05,82.86 -185.05,185.05 0,102.2 82.85,185.05 185.05,185.05\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path340\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2412.04,2255.77 c -4.69,-26.24 -15.36,-50.4 -30.57,-71.01 l -137.42,101.2 167.99,-30.19\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path342\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2321.56,2459.47 c 59.27,-30.84 99.75,-92.82 99.75,-164.25 0,-11.17 -0.99,-22.11 -2.87,-32.73 l -182.18,32.73 85.3,164.25\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path344\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1774.17,2240.28 c -40.21,22.36 -54.74,73.07 -32.36,113.27 22.32,40.21 73.01,54.68 113.18,32.37 40.26,-22.36 54.78,-73.04 32.4,-113.21 -22.32,-40.27 -73,-54.72 -113.22,-32.43\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path346\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1601.67,2016.02 115.54,179.25 c 9.41,14.58 25.91,21.81 42.05,20.08 1.78,0.16 3.58,0.26 5.42,0.26 h 99.85 c 3.17,0 6.26,-0.27 9.24,-0.76 2.92,0.35 5.93,0.4 8.97,0.15 l 109.65,-9.32 104.23,72.65 c 20.11,14.01 47.76,9.07 61.77,-11.04 14.01,-20.09 9.08,-47.75 -11.03,-61.76 l -117.38,-81.82 c -7.47,-5.19 -16.33,-7.96 -25.37,-7.96 -1.25,0 -2.51,0.05 -3.76,0.16 l -92.64,7.87 v -204.73 l 25.2,-245.01 c 2.51,-24.38 -15.22,-46.17 -39.6,-48.68 -2.39,-0.25 -4.78,-0.29 -7.11,-0.15 -21.37,1.21 -39.3,17.77 -41.56,39.75 l -21.61,210.12 h -16.61 l -16.6,-209.6 c -1.94,-24.44 -23.31,-42.67 -47.74,-40.72 -2.41,0.18 -4.75,0.56 -7.02,1.11 -20.81,5.06 -35.45,24.6 -33.7,46.61 l 19.14,241.55 v 123.32 l -44.74,-69.41 c -8.5,-13.16 -22.77,-20.33 -37.34,-20.33 -8.24,0 -16.57,2.28 -23.99,7.08 -20.6,13.28 -26.53,40.73 -13.26,61.33\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path348\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1805.33,2185.88 -8.3,17.61 7.97,5.24 h 18.85 l 8.3,-5.24 -8.29,-17.61 8.8,-88.64 -18.04,-35.51 v 0.22 l -0.04,-0.22 -18.03,35.51 8.78,88.64\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path350\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4303.55,2514.65 -101.92,-29.67 -67.42,20.51 -62.34,-76.64 290.8,0.13 -67.44,24.66 85.26,24.82 c -39.36,6.31 -68.77,19.82 -76.94,36.19\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path352\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4789.49,2428.85 -62.32,76.64 -67.42,-20.51 -101.93,29.67 c -8.15,-16.37 -37.58,-29.88 -76.93,-36.19 l 85.25,-24.82 -67.43,-24.66 290.78,-0.13\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path354\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4350.94,2691.65 h -132.52 l -25.85,39.13 c 0,-0.16 -0.02,-0.34 -0.02,-0.5 v -87.63 c 0,-12.96 10.51,-23.48 23.47,-23.48 h 137.32 c 12.97,0 23.48,10.52 23.48,23.48 v 87.63 c 0,0.16 -0.02,0.34 -0.02,0.5 l -25.86,-39.13\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path356\\\"],[10,\\\"style\\\",\\\"fill:#c9c7c5;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4345.85,2700.96 h -122.32 l -27.48,41.58 c -2.12,-3.43 -3.4,-7.45 -3.48,-11.76 l 25.85,-39.13 h 66.27 66.25 l 25.86,39.13 c -0.09,4.31 -1.37,8.33 -3.47,11.76 l -27.48,-41.58\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path358\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4284.69,2700.96 h 61.16 l 27.48,41.58 c -4.13,6.72 -11.5,11.22 -19.99,11.22 h -137.32 c -8.47,0 -15.85,-4.5 -19.97,-11.22 l 27.48,-41.58 h 61.16\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path360\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4274.46,2775.5 h 20.46 c 9.33,0 16.86,-7.35 17.33,-16.56 h 9.7 v 5.16 c 0,12.97 -10.5,23.48 -23.47,23.48 h -27.59 c -12.96,0 -23.47,-10.51 -23.47,-23.48 v -5.16 h 9.7 c 0.45,9.21 8.01,16.56 17.34,16.56\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path362\\\"],[10,\\\"style\\\",\\\"fill:#c9c7c5;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4265.54,2673.56 c 0,-10.57 8.57,-19.14 19.15,-19.14 10.56,0 19.14,8.57 19.14,19.14 v 13.31 h -38.29 v -13.31\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path364\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4290.52,2666.11 h -11.68 v 16.2 h 11.68 v -16.2\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path366\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4468.33,3048.25 c 37.03,20.6 50.4,67.29 29.81,104.33 -20.57,37.01 -67.25,50.36 -104.23,29.8 -37.09,-20.58 -50.47,-67.26 -29.87,-104.26 20.56,-37.08 67.26,-50.4 104.29,-29.87\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path368\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 4607.03,2816.85 4531,3000.3 c -6.13,14.77 -19.92,24.05 -34.83,25.12 -3.46,0.25 -126.07,0.17 -129.03,0.09 -15.67,-0.38 -30.37,-9.81 -36.76,-25.21 l -76.03,-183.45 c -8.64,-20.86 1.26,-44.76 22.12,-53.4 5.1,-2.12 10.4,-3.12 15.6,-3.12 16.04,0 31.26,9.49 37.77,25.22 l 15.03,36.29 v -73.91 c 0,-0.22 -0.01,-0.43 -0.01,-0.66 v -210.98 c 0,-22.55 18.29,-40.85 40.86,-40.85 22.58,0 40.87,18.3 40.87,40.85 v 175.62 h 8.99 v -175.62 c 0,-22.55 18.3,-40.85 40.86,-40.85 22.56,0 40.86,18.3 40.86,40.85 v 206.15 4.83 72.63 l 14.23,-34.35 c 6.52,-15.73 21.74,-25.22 37.76,-25.22 5.22,0 10.51,1 15.64,3.12 20.83,8.64 30.73,32.54 22.1,53.4\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path370\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 4441.04,2997.05 8.89,18.89 -8.53,5.63 h -20.23 l -8.89,-5.63 8.89,-18.89 -9.45,-95.06 19.34,-38.08 v 0.24 l 0.05,-0.24 19.36,38.08 -9.43,95.06\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path372\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 991.543,3822.62 c 38.997,21.68 53.077,70.85 31.377,109.86 -21.65,38.98 -70.807,53.03 -109.764,31.39 -39.054,-21.68 -53.144,-70.85 -31.437,-109.8 21.644,-39.05 70.804,-53.09 109.824,-31.45\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path374\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1043.11,3500.56 c 0,-17.77 -18.97,-32.17 -42.37,-32.17 h -96.838 c -23.394,0 -42.359,14.4 -42.359,32.17 v 265.96 c 0,17.77 18.965,32.16 42.359,32.16 h 96.838 c 23.4,0 42.37,-14.39 42.37,-32.16 v -265.96\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path376\\\"],[10,\\\"style\\\",\\\"fill:#adadab;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 1006.03,3588.59 H 898.609 c -118.968,-54.67 -140.937,-274.23 -140.937,-274.23 -3.32,-69.87 194.652,-78.6 194.652,-78.6 0,0 197.966,8.73 194.646,78.6 0,0 -21.97,219.56 -140.94,274.23\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path378\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 962.797,3365.67 v 32.04 c 7,-4.54 10.051,-9.53 10.051,-16.23 0,-6.91 -3.489,-12.39 -10.051,-15.81 z m -28.828,98.64 c 0,6.85 4.816,13.23 14.648,16.03 v -33.73 c -10.121,5.05 -14.648,9.92 -14.648,17.7 z m 80.681,-79.88 c 0,25.64 -14.826,42.37 -46.947,54.25 -1.711,0.65 -3.328,1.26 -4.906,1.86 v 41.23 c 16.336,-0.45 28.719,-5.21 35.391,-8.55 l 9.202,32.93 c -10.476,4.96 -24.796,8.89 -44.593,9.11 v 19.18 h -14.18 v -19.89 c -35.25,-4.11 -56.472,-25.85 -56.472,-53.74 0,-26.44 19.964,-43.18 50.195,-53.96 2.238,-0.78 4.301,-1.54 6.277,-2.3 v -42.52 c -1.523,-0.12 -3.012,-0.25 -4.652,-0.25 -17.547,0 -34.813,5.65 -45.606,11.34 l -8.379,-33.74 c 10.274,-5.66 30.774,-11.34 51.551,-11.34 2.446,0 4.762,0.11 7.086,0.24 v -15.66 h 14.18 v 17.28 c 35.226,6.37 51.853,28.77 51.853,54.53\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path380\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 858.031,3488.48 c -12.093,0 -24.101,5.07 -32.609,14.94 l -87.281,101.24 c -14.918,17.32 -13.696,43.29 2.793,59.13 l 127.933,122.9 c 17.145,16.46 44.391,15.91 60.852,-1.24 16.457,-17.14 15.906,-44.38 -1.239,-60.84 l -98.531,-94.64 60.656,-70.37 c 15.512,-17.99 13.497,-45.16 -4.507,-60.68 -8.125,-7.02 -18.114,-10.43 -28.067,-10.44\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path382\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1046.6,3488.48 c 12.08,0 24.1,5.07 32.61,14.94 l 87.27,101.24 c 14.92,17.32 13.71,43.29 -2.78,59.13 l -127.94,122.9 c -17.15,16.46 -44.373,15.91 -60.854,-1.24 -16.461,-17.14 -15.906,-44.38 1.239,-60.84 l 98.525,-94.64 -60.64,-70.37 c -15.518,-17.99 -13.51,-45.16 4.5,-60.68 8.12,-7.02 18.13,-10.43 28.07,-10.44\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path384\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 961.313,3768.73 8.05,17.08 -7.73,5.09 h -18.281 l -8.047,-5.09 8.031,-17.08 -8.531,-85.98 17.492,-34.44 v 0.23 l 0.047,-0.23 17.484,34.44 -8.515,85.98\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path386\\\"],[10,\\\"style\\\",\\\"fill:#adadab;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 988.789,3595.57 h -81.594 l -65.675,105.47 h 73.636 l 33.828,-39.8 1.989,39.8 h 65.687 l -19.906,-52.73 47.756,52.73 39.81,-33.83 -95.531,-71.64\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path388\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 972.738,1396.48 c 41.372,23.02 56.292,75.15 33.292,116.52 -22.96,41.34 -75.092,56.23 -116.413,33.27 -41.402,-22.98 -56.336,-75.11 -33.324,-116.42 22.949,-41.41 75.094,-56.3 116.445,-33.37\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path390\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1228.28,1345.89 c -15.27,17.08 -41.5,18.55 -58.57,3.29 l -65.58,-58.59 -88.7,70.81 c -7.03,5.6 -15.33,8.55 -23.676,8.99 -2.981,0.48 -6.078,0.72 -9.25,0.72 H 879.809 c -3.164,0 -6.27,-0.24 -9.258,-0.72 -8.344,-0.44 -16.621,-3.39 -23.653,-8.99 l -88.71,-70.81 -65.571,58.59 c -17.082,15.26 -43.304,13.79 -58.578,-3.29 -15.262,-17.08 -13.797,-43.31 3.301,-58.58 l 91.703,-81.94 c 7.852,-7.02 17.738,-10.55 27.633,-10.55 9.144,0 18.289,3 25.879,9.07 l 52.332,41.76 v -164.9 -25.77 -226.609 c 0,-14.812 20.422,-26.82 45.609,-26.82 25.164,0 45.617,12.008 45.617,26.82 v 192.519 h 10.102 V 828.371 c 0,-14.812 20.441,-26.82 45.601,-26.82 25.154,0 45.614,12.008 45.614,26.82 v 226.609 25.77 164.9 l 52.34,-41.76 c 7.58,-6.07 16.72,-9.07 25.86,-9.07 9.91,0 19.8,3.53 27.65,10.55 l 91.7,81.94 c 17.09,15.27 18.56,41.5 3.3,58.58\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path392\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 940.695,1334.73 8.539,18.11 -8.199,5.39 h -19.383 l -8.539,-5.39 8.524,-18.11 -9.047,-91.17 18.558,-36.52 v 0.24 l 0.043,-0.24 18.536,36.52 -9.032,91.17\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path394\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2085.39,1442 c -57.27,16.64 -118.11,16.64 -175.38,0 13.1,-45.1 26.22,-90.19 39.32,-135.32 8.68,2.53 17.49,4.33 26.39,5.46 v -15.91 c 0,-7.54 3.81,-14.22 9.63,-18.17 V 801.559 h 24.72 v 476.501 c 5.8,3.95 9.62,10.63 9.62,18.17 v 15.91 c 8.89,-1.13 17.72,-2.93 26.39,-5.46 13.12,45.13 26.22,90.22 39.31,135.32\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path396\\\"],[10,\\\"style\\\",\\\"fill:#adabaa;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1957.95,1324.27 c 0.42,-1.49 0.01,-2.9 -0.9,-3.14 v 0 c -0.91,-0.26 -1.97,0.73 -2.39,2.21 l -30.75,109.32 c -0.42,1.48 -0.01,2.87 0.9,3.13 v 0 c 0.9,0.26 1.97,-0.72 2.39,-2.21 l 30.75,-109.31\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path398\\\"],[10,\\\"style\\\",\\\"fill:#adabaa;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1972.01,1327.68 c 0.25,-1.53 -0.32,-2.88 -1.25,-3.02 v 0 c -0.93,-0.16 -1.88,0.96 -2.13,2.48 l -17.91,112.14 c -0.24,1.52 0.33,2.87 1.27,3.01 v 0 c 0.93,0.15 1.88,-0.95 2.12,-2.47 l 17.9,-112.14\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path400\\\"],[10,\\\"style\\\",\\\"fill:#adabaa;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1986.62,1328.27 c 0.15,-1.53 -0.51,-2.84 -1.45,-2.93 v 0 c -0.93,-0.09 -1.83,1.08 -1.96,2.61 L 1972.46,1441 c -0.15,1.52 0.51,2.83 1.44,2.94 v 0 c 0.94,0.08 1.82,-1.1 1.97,-2.62 l 10.75,-113.05\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path402\\\"],[10,\\\"style\\\",\\\"fill:#adabaa;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2038.77,1325.22 c -0.43,-1.46 -0.03,-2.87 0.89,-3.13 v 0 c 0.91,-0.26 1.97,0.72 2.41,2.21 l 30.73,109.33 c 0.43,1.47 0.03,2.88 -0.89,3.15 v 0 c -0.91,0.23 -1.97,-0.75 -2.41,-2.24 l -30.73,-109.32\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path404\\\"],[10,\\\"style\\\",\\\"fill:#adabaa;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2024.7,1328.65 c -0.25,-1.52 0.31,-2.88 1.24,-3.02 v 0 c 0.94,-0.14 1.91,0.96 2.14,2.47 l 17.9,112.14 c 0.25,1.53 -0.32,2.87 -1.26,3.01 v 0 c -0.93,0.18 -1.89,-0.95 -2.12,-2.47 l -17.9,-112.13\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path406\\\"],[10,\\\"style\\\",\\\"fill:#adabaa;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2010.08,1329.23 c -0.12,-1.51 0.51,-2.83 1.45,-2.93 v 0 c 0.94,-0.09 1.83,1.08 1.97,2.61 l 10.75,113.06 c 0.14,1.52 -0.49,2.84 -1.44,2.93 v 0 c -0.94,0.09 -1.81,-1.07 -1.96,-2.61 l -10.77,-113.06\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path408\\\"],[10,\\\"style\\\",\\\"fill:#adabaa;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1999.94,1329.56 c 0,-1.53 -0.74,-2.79 -1.68,-2.79 v 0 c -0.95,0 -1.71,1.23 -1.74,2.76 l -1.03,113.56 c -0.03,1.52 0.74,2.79 1.68,2.8 v 0 c 0.93,0 1.71,-1.23 1.73,-2.76 l 1.04,-113.57\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path410\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2284.02,1397.6 c 41.41,23.04 56.37,75.28 33.34,116.72 -22.99,41.41 -75.23,56.32 -116.63,33.35 -41.5,-23.05 -56.43,-75.27 -33.4,-116.66 23,-41.49 75.23,-56.39 116.69,-33.41\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path412\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 2367.09,1126.14 47.9,71.34 c 10.31,15.39 10.31,35.52 0,50.93 l -69.4,103.49 c -10.1,15.08 -27.62,22.22 -44.46,19.82 -2.39,0.28 -4.84,0.46 -7.35,0.46 h -102.87 c -2.14,0 -4.24,-0.12 -6.29,-0.34 -11.44,1.38 -22.53,-1.64 -30.46,-9.46 l -169.31,-166.65 c -15.54,-15.29 -13,-43.05 5.66,-62.02 18.66,-18.97 46.39,-21.89 61.93,-6.6 l 93.46,91.97 v -137.8 l -49.21,-229.69 c -4.58,-21.34 12.8,-43.149 38.8,-48.719 26.01,-5.582 50.79,7.18 55.36,28.527 l 40.72,189.912 h 21.56 l 40.67,-189.912 c 4.54,-21.347 29.33,-34.109 55.37,-28.527 26.06,5.57 43.41,27.379 38.83,48.719 l -49.21,229.54 v 25.81 c 11.15,2.43 21.42,8.97 28.3,19.2\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path414\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 462.945,1968.02 -23.961,26.29 c 2.672,6.27 1.696,13.8 -3.203,19.16 -6.676,7.33 -18.051,7.85 -25.371,1.17 -7.336,-6.68 -7.855,-18.05 -1.176,-25.37 4.883,-5.37 12.27,-7.05 18.77,-4.96 l 29.637,-32.53 56.367,-194.17 h 259.176 l 50.011,175.05 -360.25,35.36\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path416\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 603.066,1666.67 42.797,41.44 42.789,-41.44 z m 155.332,37.51 c -21.207,0 -38.535,-16.59 -39.722,-37.51 h -13.871 l 1.347,1.39 -50.82,49.19 50.82,49.2 -9.156,9.45 -51.133,-49.49 -51.125,49.49 -9.156,-9.45 50.816,-49.2 -50.816,-49.19 1.344,-1.39 h -8.199 c -1.176,20.92 -18.508,37.51 -39.707,37.51 -21.973,0 -39.786,-17.81 -39.786,-39.79 0,-21.96 17.813,-39.78 39.786,-39.78 18.843,0 34.613,13.1 38.722,30.69 h 141.922 c 4.125,-17.59 19.891,-30.69 38.734,-30.69 21.973,0 39.786,17.82 39.786,39.78 0,21.98 -17.813,39.79 -39.786,39.79\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path418\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 643.949,2013.19 H 520.496 v -37.84 l 123.453,-12.13 v 49.97\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path420\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 776.918,2013.19 H 653.461 v -50.9 l 123.457,-12.11 v 63.01\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path422\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 764.324,2076.71 h -89.086 v -54.9 h 89.086 v 54.9\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path424\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 725.563,2085.44 -84.711,27.6 17.019,52.2 84.703,-27.61 -17.011,-52.19\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path426\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 656.383,2096.23 H 535.602 v -74.42 h 120.781 v 74.42\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path428\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 201.965,2208.25 c 40.57,22.58 55.219,73.72 32.652,114.3 -22.523,40.55 -73.672,55.17 -114.195,32.65 -40.6212,-22.55 -55.2697,-73.69 -32.7032,-114.21 22.5192,-40.64 73.6642,-55.23 114.2462,-32.74\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path430\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 413.594,2057.12 246.41,2171.7 c -1.746,1.2 -3.555,2.22 -5.402,3.09 -7.809,5.33 -18.141,8.58 -29.465,8.58 H 110.797 c -24.3361,0 -44.0626,-14.99 -44.0626,-33.46 v -276.67 c 0,-13.11 9.9375,-24.45 24.3945,-29.94 v -192.4 c 0,-14.53 20.0471,-26.29 44.7501,-26.29 9.379,0 18.086,1.71 25.297,4.61 7.199,-2.9 15.902,-4.61 25.285,-4.61 24.668,0 44.75,11.76 44.75,26.29 v 192.4 c 14.457,5.49 24.398,16.83 24.398,29.94 v 200.6 l 115.289,-79.02 c 7.317,-5.01 15.743,-7.1 23.95,-6.52 11.109,0.76 21.765,6.43 28.547,16.33 11.796,17.2 7.402,40.7 -9.801,52.49\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path470\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1130.48,726.512 c -23.94,35.109 -69.93,43.148 -102.76,17.976 -32.786,-25.156 -39.954,-74.008 -16,-109.129 23.93,-35.078 69.96,-43.109 102.75,-17.961 32.79,25.161 39.97,74.043 16.01,109.114\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path472\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1376.5,472.25 c -6.49,20.059 -28.03,31.07 -48.08,24.582 l -77.88,-25.23 -62.84,100.07 c -7.1,11.297 -19.15,17.598 -31.56,17.867 v 0 h -0.25 c -0.45,0 -0.91,0 -1.38,0 h -24.81 l -0.06,-0.027 c -0.05,0.019 -0.11,0.027 -0.16,0.027 l -38.55,-87.547 -6.86,69.258 8.51,18.039 h -36.05 l 8.5,-18.039 -6.86,-69.25 -38.42,87.289 c -0.48,-0.09 -1.09,0.082 -1.56,0 h -53.018 v -0.09 C 941.32,587.801 922.367,568.141 922.133,543.98 h -0.016 v -0.441 -31.707 -141.961 0 -65.652 c 0,-25.27 20.492,-45.731 45.77,-45.731 3.336,0 6.617,0.371 9.781,1.043 V 26.7617 c 0,-14.7812 20.547,-26.7499812 45.892,-26.7499812 25.35,0 45.9,11.9687812 45.9,26.7499812 V 229.398 l 10.2,-0.019 V 26.7617 c 0,-14.7812 20.55,-26.7499812 45.89,-26.7499812 25.35,0 45.9,11.9687812 45.9,26.7499812 V 278.57 c 0,0.121 -0.03,0.262 -0.03,0.379 l 0.01,175.039 30.27,-48.168 c 7.12,-11.351 19.46,-17.879 32.33,-17.879 3.9,0 7.88,0.61 11.77,1.848 l 106.14,34.371 c 20.07,6.488 31.06,28.031 24.56,48.09\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path474\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1357.78,678.488 c 0,-8.918 -7.23,-16.168 -16.17,-16.168 -8.93,0 -16.15,7.25 -16.15,16.168 0,8.922 7.22,16.172 16.15,16.172 8.94,0 16.17,-7.25 16.17,-16.172\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path476\\\"],[10,\\\"style\\\",\\\"fill:#9e393e;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1620.88,503.609 c -86.29,-65.168 -172.58,65.192 -258.89,0 0,51.731 0,103.481 0,155.211 86.31,65.168 172.6,-65.191 258.89,0 0,-51.73 0,-103.48 0,-155.211\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path478\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"M 1326.85,407.762 V 0.0117188 h 29.51 V 417.691 l -29.51,-9.929\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"path480\\\"],[10,\\\"style\\\",\\\"fill:#514f4b;fill-opacity:1;fill-rule:nonzero;stroke:none\\\"],[10,\\\"d\\\",\\\"m 1356.36,656.082 h -29.51 V 503.609 l 29.51,6.18 v 146.293\\\"],[8],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"      \\\"],[9],[0,\\\"\\\\n   \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/du-de/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    errorService: service('error'),\n    store: service(),\n\n    parsedError: computed('error', function () {\n        return get(this, 'errorService').toError(get(this, 'error'));\n    }),\n\n    message: computed('error', function () {\n        return get(this, 'errorService').toString(get(this, 'error'));\n    }),\n\n    hittingWorktimes: computed('error', function () {\n        if (get(this, 'parsedError.meta.hits') === 'worktime') {\n            return get(this, 'store').query('worktime', {\n                id: get(this, 'parsedError.meta.ids').join(','),\n                sideload: true,\n            });\n        }\n        return null;\n    }),\n\n    hittingAbsences: computed('error', function () {\n        if (get(this, 'parsedError.meta.hits') === 'absence') {\n            return get(this, 'store').query('abcense', {\n                id: get(this, 'parsedError.meta.ids').join(','),\n                sideload: true,\n            });\n        }\n        return null;\n    }),\n\n    hittingComps: computed('error', function () {\n        if (get(this, 'parsedError.meta.hits') === 'comp') {\n            return get(this, 'store').query('worktime', {\n                id: get(this, 'parsedError.meta.ids').join(','),\n                sideload: true,\n            });\n        }\n        return null;\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"397ZxQOn\",\"block\":\"{\\\"symbols\\\":[\\\"worktime\\\",\\\"absence\\\",\\\"worktime\\\",\\\"&default\\\"],\\\"statements\\\":[[14,4],[0,\\\"\\\\n\\\\n\\\"],[1,[22,\\\"message\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[24,[\\\"hittingWorktimes\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"hittingWorktimes\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\" - \\\"],[1,[23,3,[\\\"project\\\",\\\"name\\\"]],false],[0,\\\" \\\"],[1,[23,3,[\\\"starttime\\\"]],false],[0,\\\" - \\\"],[1,[23,3,[\\\"endtime\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[24,[\\\"hittingAbsences\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"hittingAbsences\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\" - \\\"],[1,[23,2,[\\\"abcensetype\\\",\\\"name\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"moment-format\\\",[[23,2,[\\\"startdate\\\"]],\\\"L\\\"],null],false],[0,\\\" - \\\"],[1,[28,\\\"moment-format\\\",[[23,2,[\\\"enddate\\\"]],\\\"L\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[24,[\\\"hittingComps\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"hittingComps\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\" - \\\"],[1,[23,1,[\\\"project\\\",\\\"name\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"date\\\"]],\\\"L\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/error-message/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/export-modal/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmailSendModalComponent;\n\nimport Ember from 'ember';\n\nimport pdfmixin from '../../../mixins/worksitediary_pdf';\n\nimport { inject as service } from '@ember/service';\n\nimport { computed } from '@ember/object';\n\nimport { pluralize } from 'ember-inflector';\n\nEmailSendModalComponent = Ember.Component.extend(pdfmixin, {\n    analytics: Ember.inject.service(),\n    Collector: service('collector-service'),\n    localStorageWrapper: service(),\n    intl: service(),\n    store: service(),\n    dialogs: service(),\n    showApprovalLinkSelection: false,\n    emailSent: false,\n    count: 0,\n    type: 'export_pdf',\n    imgLocation: 'thumbnails',\n    layoutOption: 'topHeaders',\n    orientation: 'landscape',\n    init: function () {\n        var form;\n        this._super();\n        form = this.get('form');\n        if (this.get('initType') === 'email') {\n            this.set('modalTitle', this.get('intl').t('general.send_as_email'));\n            this.set('includeEmail', true);\n        } else {\n            this.set('modalTitle', this.get('intl').t('export.modal.title'));\n            this.set('type', this.get('initType'));\n        }\n        this.set('initType', null);\n        this.set('includeApprovalLink', false);\n        if (this.get('showApprovalLinkSelection')) {\n            this.set('includeApprovalLink', true);\n        }\n        //@set 'emailReportModalText', false\n        if (this.get('showApprovalLinkSelection')) {\n            this.set(\n                'emailContent',\n                this.get('intl').t('general.email_content_start') +\n                    ' ' +\n                    this.get('intl').t('menu.' + form) +\n                    '-' +\n                    this.get('intl').t('general.email_content_end', {\n                        sender:\n                            this.get('session.currentUser.firstname') +\n                            ' ' +\n                            this.get('session.currentUser.lastname'),\n                    }),\n            );\n        } else {\n            this.set('emailContent', '');\n        }\n        // Add the form name to the email title with menu combined with the form name\n        let formNameTranslation = this.get('intl').t(\"menu.\"+pluralize(form)?.camelize());\n        try {\n            // If form name is custom, then menu prefix is not needed\n            if (form?.includes('measurement-custom')) {\n                form = this.Collector.forms()[form.underscore()];\n                formNameTranslation = form.name;\n            }\n        } catch(err) {\n            formNameTranslation = this.get('intl').t(\"menu.\"+pluralize(form)?.camelize());\n        }\n        this.set(\n            'emailTitle',\n            this.get('intl').t(formNameTranslation) +\n                '-' +\n                this.get('intl').t('general.report')?.toLowerCase(),\n        );\n        this.set('showEmailModal', true);\n        if (!this.get('pdf_exports')) {\n            this.set('pdf_exports', [\n                {\n                    id: 'export_pdf',\n                    name: this.get('intl').t('report.actions.export_pdf'),\n                },\n                {\n                    id: 'export_pdf_full',\n                    name: this.get('intl').t('report.actions.export_pdf_full'),\n                },\n                {\n                    id: 'export_excel',\n                    name: this.get('intl').t('report.actions.export_excel'),\n                },\n            ]);\n        }\n        if (this.get('pdf_exports.length') === 1) {\n            this.set('type', this.get('pdf_exports')[0]['id']);\n        }\n        this.set('imgLocations', [\n            {\n                id: 'showImages',\n                name: this.get('intl').t('report.actions.include_images'),\n            },\n            {\n                id: 'afterReport',\n                name: this.get('intl').t('report.actions.include_images_after_report'),\n            },\n            {\n                id: 'thumbnails',\n                name: this.get('intl').t('report.actions.include_thumbnails'),\n            },\n            {\n                id: 'hideImages',\n                name: this.get('intl').t('report.actions.exclude_images'),\n            },\n        ]);\n        return this.set('layoutOptions', [\n            {\n                id: 'topHeaders',\n                name: this.get('intl').t('report.actions.pdf.headers_on_top'),\n            },\n            {\n                id: 'sideHeaders',\n                name: this.get('intl').t('report.actions.pdf.headers_on_side'),\n            },\n        ]);\n    },\n    validateEmail: function (email) {\n        return !/^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i.test(\n            email,\n        );\n    },\n    hideTemplates: Ember.computed('form', 'type', function () {\n        return this.get('type') === 'export_pdf_full' && ['diary'].includes(this.get('form')) || this.get('type') === 'export_excel';\n    }),\n    refreshRoute: function () {\n        var controller, route;\n        controller = Ember.getOwner(this).lookup('controller:application');\n        route = Ember.getOwner(this).lookup('route:' + Ember.get(controller, 'currentRouteName'));\n        return route.refresh();\n    },\n    actions: {\n        export: function () {\n            return this.sendAction('exportActions', {\n                type: this.get('type'),\n                template: this.get('currentTemplate'),\n                signature: this.get('signature'),\n                dateAndPlace: this.get('datePlace'),\n                statusInfo: this.get('showStatusinfo'),\n                extraParams: this.get('extraData'),\n                imgLocation: this.get('imgLocation'),\n                layoutOption: this.get('type') === 'export_pdf' ? this.get('layoutOption') : null,\n                orientation: this.get('orientation'),\n                addSumRow: this.get('addSumRow'),\n            });\n        },\n        sendEmail: function (title, content) {\n            var recipients, useraddr, validRecipients;\n            recipients = this.get('recipients');\n            validRecipients = [];\n            useraddr = this.get('session.currentUser.email');\n            if (this.get('sendToMe')) {\n                if (this.validateEmail(useraddr)) {\n                    this.get('dialogs').alert(this.get('intl').t('email.sending.own_email_error'));\n                } else {\n                    if (recipients) {\n                        recipients.push({\n                            error: false,\n                            tag: useraddr,\n                        });\n                    } else {\n                        recipients = [\n                            {\n                                error: false,\n                                tag: useraddr,\n                            },\n                        ];\n                    }\n                }\n            }\n            if (recipients) {\n                // check that all emails are valid\n                recipients.forEach((recipient, index) => {\n                    if (!recipient.error) {\n                        return validRecipients.push(recipient.tag);\n                    }\n                });\n            } else {\n                this.set('email_error', null);\n                return;\n            }\n            Ember.get(this, 'analytics').trackEvent({\n                category: 'Export-modal',\n                action: 'Send email',\n            });\n            //Handle actual email sending from where the action was initiated (need to fetch pdf)\n            return this.sendAction('sendEmailAction', validRecipients, title, content, {\n                type: this.get('type'),\n                template: this.get('currentTemplate'),\n                signature: this.get('signature'),\n                dateAndPlace: this.get('datePlace'),\n                statusInfo: this.get('showStatusInfo'),\n                approvalLink: this.get('includeApprovalLink'),\n                orientation: this.get('orientation'),\n                imgLocation: this.get('imgLocation'),\n            });\n        },\n        recipientsChanged: function (recipients) {\n            return this.set('recipients', recipients);\n        },\n        removeModal: function () {\n            this.set('emailSent', false);\n            this.set('action', null);\n            this.set('showEmailModal', false);\n            this.sendAction('removeModal');\n            return this.refreshRoute();\n        },\n    },\n});\n\nexport default EmailSendModalComponent;\n","export default Ember.HTMLBars.template({\"id\":\"HytIAoYR\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showEmailModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"modalTitle\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"emailSent\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"report.email_sent\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"emailError\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"email.sending_error\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[24,[\\\"email_error\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"includeEmail\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"saved.modal.email_address\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"email_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[22,\\\"email_error\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/fields/tag-input-field\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"tagListChanged\\\"],[\\\"user\\\",\\\"email\\\",[28,\\\"action\\\",[[23,0,[]],\\\"recipientsChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"email_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"saved.modal.title\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"placeholder\\\"],[\\\"form-control add-fields\\\",[24,[\\\"emailTitle\\\"]],[28,\\\"t\\\",[\\\"saved.modal.title.placeholder\\\"],null]]]],false],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"saved.modal.text\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"class\\\",\\\"rows\\\",\\\"value\\\",\\\"placeholder\\\"],[\\\"form-control add-fields\\\",6,[24,[\\\"emailContent\\\"]],[28,\\\"t\\\",[\\\"saved.modal.content.placeholder\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showApprovalLinkSelection\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-12\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"checkbox\\\"],[10,\\\"data-anchor\\\",\\\"export-modal-include-approval-link\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"label\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\"],[\\\"checkbox\\\",[24,[\\\"includeApprovalLink\\\"]]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.email_include_approval_link_with_count\\\"],[[\\\"count\\\"],[[24,[\\\"count\\\"]]]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-12\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"checkbox\\\"],[10,\\\"data-anchor\\\",\\\"export-modal-send-to-me\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"label\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\"],[\\\"checkbox\\\",[24,[\\\"sendToMe\\\"]]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.email_send_to_me\\\"],null],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[24,[\\\"pdf_exports\\\",\\\"length\\\"]],1],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export.type\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"anchorName\\\"],[[24,[\\\"pdf_exports\\\"]],\\\"form-control add-fields\\\",[24,[\\\"type\\\"]],\\\"export-modal-type\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[24,[\\\"type\\\"]],\\\"export_pdf\\\"],null],[28,\\\"not\\\",[[23,0,[\\\"hideSpecialPdf\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export.pdf_layout_style\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"anchorName\\\"],[[23,0,[\\\"layoutOptions\\\"]],\\\"form-control add-fields\\\",[28,\\\"mut\\\",[[24,[\\\"layoutOption\\\"]]],null],\\\"export-modal-layout-style\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[24,[\\\"type\\\"]],\\\"export_pdf\\\"],null],[28,\\\"not-eq\\\",[[23,0,[\\\"layoutOption\\\"]],\\\"sideHeaders\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export.images_location\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"anchorName\\\"],[[24,[\\\"imgLocations\\\"]],\\\"form-control add-fields\\\",[28,\\\"mut\\\",[[24,[\\\"imgLocation\\\"]]],null],\\\"export-modal-images-location\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hideTemplates\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[10,\\\"data-anchor\\\",\\\"export-modal-saved-templates\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"report-template-selector\\\",null,[[\\\"form\\\",\\\"columns\\\",\\\"settings\\\",\\\"currentTemplate\\\",\\\"style\\\"],[[24,[\\\"form\\\"]],[24,[\\\"columns\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"currentTemplate\\\"]],\\\"listOnly\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[24,[\\\"type\\\"]],\\\"export_excel\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[10,\\\"data-anchor\\\",\\\"export-modal-additional-fields-list\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-unstyled\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"signature\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-signature\\\"],null]]]],false],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[11,\\\"for\\\",[29,[[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-signature\\\"],null]]]],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"t\\\",[\\\"report.worktask.signature\\\"],null],false],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"datePlace\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-dateplace\\\"],null]]]],false],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[11,\\\"for\\\",[29,[[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-dateplace\\\"],null]]]],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"t\\\",[\\\"thereport.date_and_place\\\"],null],false],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"statusFieldIsVisible\\\"]],[28,\\\"eq\\\",[[24,[\\\"type\\\"]],\\\"export_pdf\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"showStatusinfo\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-statusinfo\\\"],null]]]],false],[0,\\\"\\\\n                                        \\\"],[7,\\\"label\\\",true],[11,\\\"for\\\",[29,[[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-statusinfo\\\"],null]]]],[8],[0,\\\"\\\\n                                            \\\"],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf.show_status_info\\\"],null],false],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showExcelSumCheckbox\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-unstyled\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"addSumRow\\\"]],[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-sumrow\\\"],null]]]],false],[0,\\\"\\\\n                                        \\\"],[7,\\\"label\\\",true],[11,\\\"for\\\",[29,[[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-signature\\\"],null]]]],[8],[0,\\\"\\\\n                                            \\\"],[1,[28,\\\"t\\\",[\\\"report.actions.export_excel.use_sumrows\\\"],null],false],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[24,[\\\"type\\\"]],\\\"export_pdf\\\"],null],[28,\\\"not-eq\\\",[[23,0,[\\\"layoutOption\\\"]],\\\"sideHeaders\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[10,\\\"data-anchor\\\",\\\"export-modal-orientation\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"pdf_orientation\\\"],[8],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.actions.pdf_orientation\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\"],[\\\"landscape\\\",[24,[\\\"orientation\\\"]]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-landscape_file\\\"],[10,\\\"style\\\",\\\"font-size: 30px;\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\"],[\\\"portrait\\\",[24,[\\\"orientation\\\"]]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-file\\\"],[10,\\\"style\\\",\\\"font-size: 30px;\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"includeEmail\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendEmail\\\",[24,[\\\"emailTitle\\\"]],[24,[\\\"emailContent\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"saved.modal.send_email\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export\\\"]],[8],[1,[28,\\\"t\\\",[\\\"export.modal.export\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/export-modal/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/famoco-editor/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Component;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nimport $ from 'jquery';\n\nComponent = Ember.Component.extend({\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    commandsUrl: config.APP.COMMANDS_URL,\n    loading: true,\n    token: null,\n    translations: {\n        debug: 'debug',\n        reloadModules: 'reload modules',\n        clearBuffer: 'clear buffer',\n        reloadEmber: 'reload ember',\n        getDebug: 'get debug',\n        getLastToConsole: 'get last done to console',\n        clearDevice: 'clear device and make available',\n    },\n    values: Ember.Object.create({\n        current: Ember.Object.create(),\n        initial: Ember.Object.create(),\n    }),\n    setValue: function (name, value) {\n        return this.get('values').set('current.' + name, value);\n    },\n    getValue: function (name) {\n        return this.get('values').get('current.' + name);\n    },\n    persistValues: function () {\n        return Object.keys(this.get('values.current')).forEach((key) => {\n            return this.get('values').set('initial.' + key, this.get('values.current.' + key));\n        });\n    },\n    isChanged: function (name) {\n        return this.get('values.current.' + name) !== this.get('values.initial.' + name);\n    },\n    tasksfield: Ember.computed(function () {\n        var field;\n        field = this.get('Collector').field('worktime', 'task');\n        field.value = this.getValue('useTasks');\n        field.prompt = this.get('intl').t('general.all');\n        return field;\n    }),\n    didReceiveAttrs: function () {\n        var environment;\n        environment = config.environment;\n        if (environment === 'development') {\n            environment = 'localhost';\n        }\n        if (config.APP.COLLECTOR_API_URL.indexOf('/release-') !== -1) {\n            environment = 'next';\n        }\n        return $.ajax({\n            url: this.get('commandsUrl') + '/gettoken/' + environment,\n            headers: {\n                Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n            },\n        }).then((back) => {\n            this.set('token', back.token);\n            $.ajax({\n                url: this.get('commandsUrl') + '/pending/famoco_' + this.get('imei'),\n                headers: {\n                    Authorization: this.get('token'),\n                },\n            }).then((pending) => {\n                if (pending.length > 0) {\n                    this.set('pending', true);\n                    return this.set('loading', false);\n                }\n            });\n            return this.getState();\n        });\n    },\n    getState: function () {\n        return $.ajax({\n            url: this.get('commandsUrl') + '/state/famoco_' + this.get('imei'),\n            headers: {\n                Authorization: this.get('token'),\n            },\n        }).then((state) => {\n            if (state[0] != null) {\n                this.set('lastPingTime', moment(state[0].created).format('LLL'));\n                this.setField(state[0].state.project);\n                this.setValue('tasksOn', state[0].state.tasks ? true : false);\n                this.setValue('useTasks', state[0].state.useTasks);\n                this.setValue('logged', state[0].state.loggedin);\n                this.persistValues();\n            } else {\n                this.setField(null);\n            }\n            return this.set('loading', false);\n        });\n    },\n    setField: function (value) {\n        var field, useform;\n        this.setValue('project', value);\n        useform = this.get('Collector').testNeeds(['worktime']) ? 'worktime' : 'presence';\n        field = this.get('Collector').field(useform, 'project');\n        field.value = value;\n        return this.set('field', field);\n    },\n    getRefreshToken: function () {\n        return this.get('Collector').ajax({\n            url: 'createToken',\n            method: 'POST',\n            data: {\n                clientid: 'famoco',\n            },\n            headers: {\n                Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n            },\n        });\n    },\n    addCommand: function (action) {\n        this.set('loading', true);\n        return $.ajax({\n            url: this.get('commandsUrl') + '/add/famoco_' + this.get('imei'),\n            method: 'post',\n            headers: {\n                Authorization: this.get('token'),\n            },\n            data: JSON.stringify(action),\n        });\n    },\n    login: function () {\n        return new Ember.RSVP.Promise((resolve) => {\n            if (this.getValue('logged')) {\n                resolve();\n                return;\n            }\n            return this.getRefreshToken().then((ret) => {\n                return this.addCommand({\n                    action: 'login',\n                    refresh_token: ret['refresh_token'],\n                    access_token: ret['access_token'],\n                }).then(() => {\n                    this.setValue('logged', true);\n                    return resolve();\n                });\n            });\n        });\n    },\n    actions: {\n        tasksChanged: function (selectedtasks) {\n            return this.setValue('useTasks', selectedtasks);\n        },\n        changeProject: function (project) {\n            return this.setValue('project', project.get('id'));\n        },\n        clearStorage: function () {\n            this.addCommand({\n                action: 'clearStorage',\n            });\n            if (this.get('close')) {\n                return this.close();\n            }\n        },\n        toggleTasks: function (onoff) {\n            return this.setValue('tasksOn', onoff);\n        },\n        sendCommands: function () {\n            return this.login().then(() => {\n                if (this.getValue('project') && this.isChanged('project')) {\n                    this.addCommand({\n                        action: 'setProject',\n                        projectId: this.getValue('project'),\n                    });\n                }\n                if (this.isChanged('tasksOn')) {\n                    this.addCommand({\n                        action: 'taskonoff',\n                        turnOn: this.getValue('tasksOn'),\n                    });\n                }\n                if (this.isChanged('useTasks')) {\n                    this.addCommand({\n                        action: 'settasksinuse',\n                        tasks: this.getValue('useTasks'),\n                    });\n                }\n                this.persistValues();\n                if (this.get('close')) {\n                    return this.close();\n                }\n            });\n        },\n        debug: function (action) {\n            this.addCommand({\n                action: action,\n            });\n            return this.set('loading', false);\n        },\n        getlast: function () {\n            return $.ajax({\n                url: this.get('commandsUrl') + '/last/famoco_' + this.get('imei'),\n                headers: {\n                    Authorization: this.get('token'),\n                },\n            }).then((back) => {\n                return console.log('last command', back);\n            });\n        },\n    },\n});\n\nexport default Component;\n","export default Ember.HTMLBars.template({\"id\":\"EvLPzt00\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"famoco.last_time_online\\\"],null],false],[0,\\\" \\\"],[1,[22,\\\"lastPingTime\\\"],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"h3\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"values\\\",\\\"current\\\",\\\"logged\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"famoco.logged_in\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"famoco.not_logged\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"pending\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"famoco.pending\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",null,[[\\\"field\\\",\\\"change\\\"],[[24,[\\\"field\\\"]],\\\"changeProject\\\"]]],false],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.tasks\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[24,[\\\"values\\\",\\\"current\\\",\\\"tasksOn\\\"]],\\\"btn-primary\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"toggleTasks\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"general.on\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"unless\\\",[[24,[\\\"values\\\",\\\"current\\\",\\\"tasksOn\\\"]],\\\"btn-primary\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"toggleTasks\\\",false]],[8],[1,[28,\\\"t\\\",[\\\"general.off\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"values\\\",\\\"current\\\",\\\"tasksOn\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"famoco.useTasks\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"component\\\",[\\\"collector/fields/multiselect-field\\\"],[[\\\"field\\\",\\\"class\\\",\\\"bubbleChange\\\"],[[24,[\\\"tasksfield\\\"]],\\\"form-control add-fields\\\",\\\"tasksChanged\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendCommands\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clearStorage\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.logout\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"development\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[24,[\\\"translations\\\",\\\"debug\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"debug\\\",\\\"reloadmodules\\\"]],[8],[1,[24,[\\\"translations\\\",\\\"reloadModules\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"debug\\\",\\\"clearbuffer\\\"]],[8],[1,[24,[\\\"translations\\\",\\\"clearBuffer\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"debug\\\",\\\"reload\\\"]],[8],[1,[24,[\\\"translations\\\",\\\"reloadEmber\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"debug\\\",\\\"debug\\\"]],[8],[1,[24,[\\\"translations\\\",\\\"getDebug\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"getlast\\\"]],[8],[1,[24,[\\\"translations\\\",\\\"getLastToConsole\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"debug\\\",\\\"makeVirgin\\\"]],[8],[1,[24,[\\\"translations\\\",\\\"clearDevice\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/famoco-editor/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport config from 'tt4/config/environment';\nimport moment from 'moment';\n\nexport default Component.extend({\n    ttapi: service(),\n    session: service(),\n    store: service(),\n    error: service(),\n    notifications: service(),\n    intl: service(),\n    cc: service(),\n    Collector: service('collector-service'),\n\n    dates: computed('date', function () {\n        return { from: get(this, 'date').split('_')[0], to: get(this, 'date').split('_')[1] };\n    }),\n\n    actions: {\n        export() {\n            this.notifyStarted();\n            if (get(this, 'close')) get(this, 'close')();\n            const date = get(this, 'dates').from + '_' + get(this, 'dates').to;\n            this.createRecord(date).then(this.callCC.bind(this, date));\n        },\n\n        valueChanged(value, field) {\n            set(this, field, value);\n        },\n    },\n\n    createRecord(date) {\n        const name = 'vismanet-' + this.niceDate(date);\n\n        const record = get(this, 'store').createRecord('export_salary', {\n            date: date,\n            export_description: get(this, 'export_description'),\n            export_name: name,\n        });\n        return record.save();\n    },\n\n    niceDate(dates) {\n        return (\n            moment(dates.split('_')[0]).format('L') + '-' + moment(dates.split('_')[1]).format('L')\n        );\n    },\n\n    callCC(date, record) {\n        const data = {};\n        if (config.environment === 'development') {\n            data.capi_url = 'http://capi/';\n            data.ttapi_url = 'http://ttapi/';\n            data.cc_url = 'http://ccbackend/trigger/';\n        } else {\n            data.capi_url = config.APP.COLLECTOR_API_URL + '/';\n            data.ttapi_url = this.ttapi.host + '/';\n            data.cc_url = this.cc.host + '/';\n        }\n\n        data.token = this.session.data.authenticated.access_token;\n        data.exportName = 'export-salary';\n        data.exportid = get(record, 'id');\n        data.date = date;\n        data.throwErrors = true;\n\n        if (get(this, 'Collector').testNeedsOne('products.severa')) {\n            this.triggerIntegration(data, 'general-severa-hours');\n        } else if (get(this, 'Collector').testNeedsOne('products.vismanet')) {\n            this.triggerIntegration(data, 'vismanet');\n        } else {\n            throw new Error('Product vismanet or severa not found from service');\n        }\n    },\n\n    notifyStarted() {\n        get(this, 'notifications').info(get(this, 'intl').t('fastexport.exporting'));\n    },\n\n    notifyError(error) {\n        get(this, 'notifications').clearAll();\n        get(this, 'error').notify(error);\n    },\n\n    notifyDone() {\n        get(this, 'notifications').clearAll();\n        get(this, 'notifications').success(get(this, 'intl').t('fastexport.success'), {\n            autoClear: true,\n        });\n    },\n    triggerIntegration(data, key) {\n        get(this, 'ttapi')\n            .request('ccrequest/' + key, {\n                // headers: {Authorization: \"Bearer \" + data.token}, TTAPI service already does this, why would we want to set it manually?\n                method: 'POST',\n                data: JSON.stringify(data),\n            })\n            .then(this.notifyDone.bind(this))\n            .catch(this.notifyError.bind(this));\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"r9Gk+c+Z\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\\n\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"fastexport.help\\\"],null],false],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"collector/field-container\\\",null,[[\\\"field\\\",\\\"change\\\"],[\\\"export_salary.export_description\\\",\\\"valueChanged\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export\\\"]],[8],[1,[28,\\\"t\\\",[\\\"fastexport.button\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/fast-exporter/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\n\ninterface UserlevelHelpArgs {}\n\nexport default class UserlevelHelp extends Component<UserlevelHelpArgs> {\n    get styleNamespace() {\n        return podNames['field-info-bubble'];\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"JffTeiPd\",\"block\":\"{\\\"symbols\\\":[\\\"@side\\\",\\\"@text\\\"],\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",[29,[\\\"move move-Info \\\",[23,0,[\\\"styleNamespace\\\"]]]]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showTooltip\\\"]]],null],true],null]]],[8],[0,\\\"\\\\n    \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@tooltipClass\\\",\\\"@event\\\",\\\"@isShown\\\",\\\"@hideOn\\\",\\\"@side\\\"],[[29,[\\\"help-tooltip \\\",[23,0,[\\\"styleNamespace\\\"]]]],\\\"none\\\",[23,0,[\\\"showTooltip\\\"]],\\\"click\\\",[28,\\\"if\\\",[[23,1,[]],[23,1,[]],\\\"left\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[1,[23,2,[]],false],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/field-info-bubble/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/fields/time-minutes/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FieldsTimeMinutesComponent;\n\nimport Ember from 'ember';\n\nFieldsTimeMinutesComponent = Ember.Component.extend({\n    hours: Em.computed('value', function () {\n        var time;\n        time = parseInt(this.value);\n        if (isNaN(time)) {\n            return null;\n        }\n        return Math.floor(time / 60);\n    }),\n    minutes: Em.computed('value', function () {\n        var h, time;\n        time = parseInt(this.value);\n        if (isNaN(time)) {\n            return null;\n        }\n        h = time / 60;\n        return Math.round((h - Math.floor(h)) * 60);\n    }),\n    changeValue: function () {\n        var hours, minutes, value;\n        minutes = this.get('minutes');\n        hours = this.get('hours');\n        if (hours) {\n            hours = parseInt(hours) * 60;\n        }\n        if (minutes) {\n            minutes = parseInt(minutes);\n        }\n        value = hours + minutes;\n        return this.sendAction('valueChanged', value);\n    },\n    actions: {\n        setValue: function () {\n            return this.changeValue();\n        },\n    },\n});\n\nexport default FieldsTimeMinutesComponent;\n","export default Ember.HTMLBars.template({\"id\":\"J6VP9y80\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\",\\\"max\\\",\\\"key-up\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"hours\\\"]],[24,[\\\"disabled\\\"]],\\\"45\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\"],null]]]],false],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.hour_abbr\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\",\\\"max\\\",\\\"key-up\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"minutes\\\"]],[24,[\\\"disabled\\\"]],\\\"59\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\"],null]]]],false],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.min_abbr\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/fields/time-minutes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/file-picker/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FilePickerComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport { resizeImage } from 'tt4/utils/file-util';\n\nimport $ from 'jquery';\n\nFilePickerComponent = Ember.Component.extend({\n    change: function (e) {\n        return this.readFile(e.target.files[0]).then((data) => {\n            return this.sendAction('onChange', data);\n        });\n    },\n    readFile: function (file) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var acceptedTypes, file_data, reader, ref;\n            acceptedTypes = ['image/gif', 'image/png', 'image/jpg', 'image/jpeg'];\n            if (((ref = file.type), indexOf.call(acceptedTypes, ref) >= 0)) {\n                file_data = {};\n                file_data.name = file.name;\n                return resizeImage(file, 960, 960, 80).then((resize_data) => {\n                    file_data.file = resize_data;\n                    return resizeImage(file, 200, 200, 80).then((resize_data) => {\n                        file_data.preview = resize_data;\n                        return resolve([file_data]);\n                    });\n                });\n            } else {\n                reader = new FileReader();\n                reader.onloadend = function (e) {\n                    var api_format, dataURL, parse_file;\n                    dataURL = e.target.result;\n                    parse_file = dataURL.split(',');\n                    api_format = {\n                        data: parse_file[1],\n                        name: file.name,\n                    };\n                    return resolve(api_format);\n                };\n                return reader.readAsDataURL(file);\n            }\n        });\n    },\n    actions: {\n        addFile: function () {\n            return $('.file_input', this.element).click();\n        },\n    },\n});\n\nexport default FilePickerComponent;\n","export default Ember.HTMLBars.template({\"id\":\"bsNJms0A\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"input\\\",true],[10,\\\"class\\\",\\\"hide file_input\\\"],[11,\\\"value\\\",[22,\\\"value\\\"]],[10,\\\"type\\\",\\\"file\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"span\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"addFile\\\"]],[8],[0,\\\"\\\\n    \\\"],[14,1],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/file-picker/template.hbs\"}});","import { get } from '@ember/object';\nimport Component from '@ember/component';\n\nexport default Component.extend({\n    /*testQueue: {\n        files: [\n            {name: \"testlongsafaslfsdsdf sdfsdf.txt\", progress: 20},\n            {name: \"test2.txt\", progress: 70}\n        ]\n    },*/\n\n    actions: {\n        abort(queue) {\n            get(queue, 'files').forEach((file) => {\n                file.task.cancel();\n            });\n\n            // if there are failed files in queue .. remove those now\n            get(queue, 'queues').forEach((queueObj) => {\n                get(queueObj, 'files').forEach((file) => {\n                    if (get(file, 'state') === 'failed') queueObj.remove(file);\n                });\n            });\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"BJ+UCBaU\",\"block\":\"{\\\"symbols\\\":[\\\"queue\\\",\\\"&default\\\"],\\\"statements\\\":[[14,2],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"file-queue\\\",null,null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"files\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,1,[\\\"files\\\",\\\"firstObject\\\",\\\"queue\\\",\\\"name\\\"]],\\\"work-permit-queue\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notification-container notification-container--bottom-left\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notification notification--success notification--in\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notification-content\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3 queue-filename\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[23,1,[\\\"files\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"menu.project-files\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-7\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[11,\\\"aria-valuenow\\\",[29,[[23,1,[\\\"progress\\\"]]]]],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[11,\\\"style\\\",[28,\\\"concat\\\",[\\\"width: \\\",[23,1,[\\\"progress\\\"]],\\\"%;\\\"],null]],[8],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cancel\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"abort\\\",[23,1,[]]]],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/file-queue-notification/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/form-column-selector/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormColumnSelectorComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nFormColumnSelectorComponent = Ember.Component.extend({\n    localStorageWrapper: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    hiddenColumns: Em.A([]),\n    shownColumns: Em.A([]),\n    init: function () {\n        var column,\n            columns,\n            defaultColumns,\n            extraColumns,\n            field,\n            form,\n            form_objects,\n            globalHide,\n            i,\n            intl,\n            j,\n            k,\n            key,\n            len,\n            name,\n            obj,\n            objects,\n            ref,\n            showColumnsFromLS,\n            shownColumns,\n            static_fields,\n            summableFieldTypes,\n            summableFields,\n            supportForOldFormat,\n            translatedName;\n        this._super();\n        form = this.get('form');\n        globalHide = ['send_sms', 'linker', 'user_linker', 'device'];\n        objects = this.Collector.fields(form);\n        if (!objects) {\n            return;\n        }\n        if (this.get('localStorageKey')) {\n            key = this.get('localStorageKey');\n        } else {\n            key = form + '_defaultColumns';\n        }\n        supportForOldFormat = [];\n        if (localStorage.getItem(key)) {\n            supportForOldFormat = JSON.parse(localStorage.getItem(key));\n        }\n        showColumnsFromLS = this.get('localStorageWrapper').getUserSetting(\n            key,\n            supportForOldFormat,\n        );\n        shownColumns = [];\n        if (showColumnsFromLS && key) {\n            shownColumns = showColumnsFromLS;\n        } else if (this.get('shownColumns')) {\n            shownColumns = this.get('shownColumns');\n        }\n        if (shownColumns.length <= 0) {\n            shownColumns = [];\n            i = 0;\n            for (k in objects) {\n                obj = objects[k];\n                if (!(i <= 5)) {\n                    continue;\n                }\n                i++;\n                shownColumns.push(k);\n            }\n            this.set('shownColumns', shownColumns);\n        }\n        columns = Em.A([]);\n        defaultColumns = Em.A([]);\n        extraColumns = Em.A([]);\n        summableFieldTypes = this.get('summableFieldTypes');\n        summableFields = Em.A([]);\n        for (name in objects) {\n            obj = objects[name];\n            if (obj.features.hide_column) {\n                continue;\n            }\n            if (indexOf.call(globalHide, name) >= 0) {\n                continue;\n            }\n            if (this.get('settings.hideColumns')) {\n                if (indexOf.call(this.get('settings.hideColumns'), name) >= 0) {\n                    continue;\n                }\n            }\n            translatedName = obj.name || this.get('intl').t('report.' + form + '.' + name);\n            if (indexOf.call(shownColumns, name) >= 0) {\n            } else {\n                if (!(name.indexOf('_minus', name.length - 6) !== -1 || obj.features.hide_column)) {\n                    if (obj.type !== 'multiselect_tmp') {\n                        extraColumns.pushObject({\n                            name: translatedName,\n                            ext: name,\n                            obj: obj,\n                        });\n                    }\n                }\n            }\n            columns.pushObject({\n                name: translatedName,\n                ext: name,\n            });\n            if (\n                summableFieldTypes &&\n                ((ref = obj.type), indexOf.call(summableFieldTypes, ref) >= 0)\n            ) {\n                summableFields.pushObject({\n                    ext: name,\n                    type: obj.type,\n                });\n            }\n        }\n        // Add static columns here, like row_info stuff that is on every record\n        intl = this.get('intl');\n        static_fields = {\n            'row_info.created': {\n                name: intl.t('general.row_info.created'),\n                ext: 'row_info.created',\n                obj: {\n                    type: 'row_info',\n                    features: {},\n                },\n            },\n        };\n        for (key in static_fields) {\n            field = static_fields[key];\n            if (indexOf.call(shownColumns, key) >= 0) {\n                continue;\n            }\n            extraColumns.pushObject(field);\n            columns.pushObject(field);\n        }\n        // new way of showing columns\n        for (j = 0, len = shownColumns.length; j < len; j++) {\n            column = shownColumns[j];\n            if (static_fields[column] != null) {\n                defaultColumns.pushObject(static_fields[column]);\n                columns.pushObject(field);\n                continue;\n            }\n            if (indexOf.call(globalHide, column) >= 0) {\n                continue;\n            }\n            if (this.get('settings.hideColumns')) {\n                if (indexOf.call(this.get('settings.hideColumns'), column) >= 0) {\n                    continue;\n                }\n            }\n            // if form_objects are given as parameter, use them\n            if (this.get('form_objects')) {\n                form_objects = this.get('form_objects');\n                obj = form_objects[column];\n                translatedName = this.get('intl').t('report.' + form + '.' + column);\n                if (obj.translation) {\n                    translatedName = this.get('intl').t(obj.translation);\n                }\n            } else if (column.indexOf('.') !== -1 && this.Collector.fieldExists(form, column)) {\n                obj = this.Collector.field(form, column);\n                translatedName = this.get('intl').t('report.' + column);\n            } else if (this.Collector.fieldExists(form, column)) {\n                obj = this.Collector.field(form, column);\n                translatedName = obj.translated_name || this.getTranslation(form, column);\n            }\n            if (!obj) {\n                continue;\n            }\n            if (obj.features.hide_column) {\n                continue;\n            }\n            if (obj) {\n                defaultColumns.pushObject({\n                    name: translatedName,\n                    ext: column,\n                    obj: obj,\n                });\n                columns.pushObject({\n                    name: translatedName,\n                    ext: column,\n                });\n            }\n        }\n        this.set('shownColumns', defaultColumns);\n        this.set('hiddenColumns', extraColumns);\n        return this.sendAction('bubbleActions', 'fieldsUpdate', this.get('shownColumns'));\n    },\n    getTranslation: function (form, column) {\n        if (form.substring(0, 18) === 'measurement-custom') {\n            // little hack to support measurement-custom form headers\n            form = 'tr';\n        }\n        console.log(form, column);\n        return this.get('intl').t('report.' + form + '.' + column);\n    },\n    moveElementInArray: function (obj, col, offset) {\n        var index, newIndex;\n        index = obj.indexOf(col);\n        obj.removeObject(col);\n        newIndex = index + offset;\n        if (newIndex > obj.length) {\n            newIndex = 0;\n        } else if (newIndex < 0) {\n            newIndex = obj.length;\n        }\n        return obj.insertAt(newIndex, col);\n    },\n    setLocalStorageColumns: Em.observer('shownColumns.[]', function () {\n        var columns, key;\n        columns = [];\n        if (this.get('localStorageKey')) {\n            key = this.get('localStorageKey');\n        } else {\n            key = form + '_defaultColumns';\n        }\n        this.get('shownColumns').forEach(function (obj) {\n            return columns.push(obj.ext);\n        });\n        if (key) {\n            return this.get('localStorageWrapper').setUserSetting(key, columns);\n        }\n    }),\n    actions: {\n        showColumn: function (col) {\n            var current, extra;\n            current = this.get('shownColumns');\n            extra = this.get('hiddenColumns');\n            current.pushObject(col);\n            extra.removeObject(col);\n            this.set('shownColumns', current);\n            this.set('hiddenColumns', extra);\n            return this.sendAction('bubbleActions', 'fieldsUpdate', current);\n        },\n        hideColumn: function (col) {\n            var current, extra;\n            current = this.get('shownColumns');\n            extra = this.get('hiddenColumns');\n            current.removeObject(col);\n            extra.pushObject(col);\n            this.set('shownColumns', current);\n            this.set('hiddenColumns', extra);\n            return this.sendAction('bubbleActions', 'fieldsUpdate', current);\n        },\n        moveCol: function (col, dir) {\n            this.moveElementInArray(this.get('shownColumns'), col, dir);\n            return this.sendAction('bubbleActions', 'fieldsUpdate', this.get('shownColumns'));\n        },\n        columnDropped: function (target, dropped) {\n            var columns;\n            dropped = parseInt(dropped);\n            if (target === dropped) {\n                return;\n            }\n            columns = this.get('shownColumns');\n            this.moveElementInArray(this.get('shownColumns'), columns[dropped], target - dropped);\n            return this.sendAction('bubbleActions', 'fieldsUpdate', this.get('shownColumns'));\n        },\n        fullScreen: function () {\n            if (this.get('fullscreenmode') === 'custom') {\n                return this.get('gui').toggleCustomFullScreen();\n            } else {\n                return this.get('gui').togglefullScreen();\n            }\n        },\n    },\n});\n\nexport default FormColumnSelectorComponent;\n","export default Ember.HTMLBars.template({\"id\":\"YOc1JYOs\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"col\\\",\\\"index\\\",\\\"col\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-right\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more display-menu\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[5,\\\"basic-dropdown\\\",[],[[\\\"@verticalPosition\\\",\\\"@horizontalPosition\\\"],[\\\"below\\\",\\\"right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,1,[\\\"Trigger\\\"]],[[12,\\\"class\\\",\\\"btn btn-secondary\\\"]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-DragReorder\\\"],[8],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[6,[23,1,[\\\"Content\\\"]],[[12,\\\"class\\\",\\\"column-selector-box\\\"]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"column-selector-dropdown\\\"],[8],[0,\\\"\\\\n\\\\n                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.hidden\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"hiddenColumns\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[12,\\\"draggable\\\",\\\"false\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.columns.click_to_show\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"showColumn\\\",[23,4,[]]]],[8],[1,[23,4,[\\\"name\\\"]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                        \\\"],[7,\\\"li\\\",true],[10,\\\"role\\\",\\\"separator\\\"],[10,\\\"class\\\",\\\"divider\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.shown\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"shownColumns\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\",\\\"tagName\\\",\\\"data-field\\\",\\\"class\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"columnDropped\\\",[23,3,[]]],null],\\\"li\\\",[23,2,[]],\\\"column-selector-dropzone\\\"]],{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[28,\\\"concat\\\",[\\\"\\\",[23,3,[]]],null],\\\"column-selector-draggable-item\\\"]],{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"a\\\",false],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.columns.click_to_hide\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"hideColumn\\\",[23,2,[]]]],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"sort-link pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moveCol\\\",[23,2,[]],-1]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Up2Filled\\\"],[8],[9],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"sort-link pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moveCol\\\",[23,2,[]],1]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Down2Filled\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2,3]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"fullscreenmode\\\"]],\\\"custom\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"fullScreen\\\"]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"customFullScreen\\\"]],\\\"move move-Cross\\\",\\\"move move-FitWidth report-fullscreen\\\"],null]],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"fullScreen\\\"]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"fullScreen\\\"]],\\\"move move-Cross\\\",\\\"move move-FitWidth report-fullscreen\\\"],null]],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/form-column-selector/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { getOwner } from '@ember/application';\n\nexport default Component.extend({\n    router: service(),\n    store: service(),\n    flags: service(),\n\n    form: computed('modal', function () {\n        return get(this, 'modal').split(',')[0];\n    }),\n\n    record: computed('modal', function () {\n        const id = get(this, 'modal').split(',')[1];\n        // support for weird modal queryParam .. when queryParam caontains id it means someone has already made a new record for form-add\n        if (!id || id === 'new')\n            return get(this, 'store')\n                .peekAll(get(this, 'form'))\n                .find((record) => get(record, 'hasDirtyAttributes'));\n        return this.store.peekRecord(this.form, id);\n    }),\n    actions: {\n        closeAndRefresh() {\n            const controller = getOwner(this).lookup('controller:application');\n            const routeName = get(this.router, 'currentRouteName');\n            if (\n                routeName.includes(this.form) ||\n                (this.form == 'worktime' && routeName.includes('worktime-list'))\n            ) {\n                const route = getOwner(this).lookup('route:' + get(controller, 'currentRouteName'));\n                // we have to wait for model-refreshing is done before removing modal,\n                // otherwise it creates some weird issues with query-params getting cleared\n                route.refresh().then(this.clearModal.bind(this));\n            } else {\n                this.clearModal();\n            }\n        },\n    },\n\n    clearModal() {\n        set(this, 'modal', null);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"N0LN/omA\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"menu.add_\\\",[24,[\\\"form\\\"]]],null]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"modal\\\"]]],null],null],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"modal-add-form-worktime\\\"],null]],null,{\\\"statements\\\":[[1,[28,\\\"components/tab-component\\\",null,[[\\\"form\\\",\\\"closeModal\\\"],[[24,[\\\"form\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"modal\\\"]]],null],null],null]]]],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/form-add/forms/auto\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"close\\\",\\\"showSaved\\\"],[[24,[\\\"form\\\"]],[24,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeAndRefresh\\\"],null],[24,[\\\"showSaved\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/form-modal/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: '',\n    actions: {\n        removeSetting(setting) {\n            setting.deleteRecord();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"R33pLcVk\",\"block\":\"{\\\"symbols\\\":[\\\"setting\\\"],\\\"statements\\\":[[7,\\\"table\\\",true],[10,\\\"style\\\",\\\"display: inline-block\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Name\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Userlevel\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Conditions\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Value\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Editable\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"settings\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"isDeleted\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"style\\\",\\\"text-decoration: line-through\\\"],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"style\\\",\\\"text-decoration: line-through\\\"],[8],[1,[23,1,[\\\"userlevel\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"style\\\",\\\"text-decoration: line-through\\\"],[8],[1,[23,1,[\\\"condition\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"style\\\",\\\"text-decoration: line-through\\\"],[8],[1,[23,1,[\\\"value\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"style\\\",\\\"text-decoration: line-through\\\"],[8],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[\\\"editable\\\"]],\\\"1\\\"],null]],null,{\\\"statements\\\":[[0,\\\"No\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"Yes\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"size\\\",\\\"value\\\",\\\"disabled\\\"],[20,[23,1,[\\\"name\\\"]],[28,\\\"eq\\\",[[23,1,[\\\"editable\\\"]],\\\"1\\\"],null]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"size\\\",\\\"value\\\",\\\"disabled\\\"],[10,[23,1,[\\\"userlevel\\\"]],[28,\\\"eq\\\",[[23,1,[\\\"editable\\\"]],\\\"1\\\"],null]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"size\\\",\\\"value\\\",\\\"disabled\\\"],[10,[23,1,[\\\"condition\\\"]],[28,\\\"eq\\\",[[23,1,[\\\"editable\\\"]],\\\"1\\\"],null]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"size\\\",\\\"value\\\",\\\"disabled\\\"],[40,[23,1,[\\\"value\\\"]],[28,\\\"eq\\\",[[23,1,[\\\"editable\\\"]],\\\"1\\\"],null]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"size\\\",\\\"value\\\",\\\"disabled\\\"],[10,[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[\\\"editable\\\"]],\\\"1\\\"],null],\\\"No\\\",\\\"Yes\\\"],null],true]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[4,\\\"if\\\",[[28,\\\"not-eq\\\",[[23,1,[\\\"editable\\\"]],\\\"1\\\"],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"removeSetting\\\",[23,1,[]]],null]],[8],[1,[28,\\\"standard-icon\\\",[\\\"remove\\\"],null],false],[9]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/formeditor-rawsettings/template.hbs\"}});","import Component from '@ember/component';\nimport { get } from '@ember/object';\nimport { computed } from '@ember/object';\n\nexport default Component.extend({\n    fullValue: 198,\n    isNegative: computed('value', function () {\n        return get(this, 'value') <= 0;\n    }),\n\n    over100: computed('value', function () {\n        return Math.abs(this.value) > 100;\n    }),\n\n    percent: computed('value', function () {\n        if (get(this, 'value') > 0) {\n            let tick = get(this, 'fullValue') / get(this, 'max');\n            // if value is over max, use max\n            if (get(this, 'value') > get(this, 'max')) {\n                return get(this, 'fullValue') - tick * get(this, 'max');\n            }\n            return get(this, 'fullValue') - tick * get(this, 'value');\n        } else if (get(this, 'value') < 0) {\n            // if value is smaller than min, just use min as value\n            if (Math.abs(get(this, 'value')) > get(this, 'min')) {\n                return 0;\n            }\n            let tick = get(this, 'fullValue') / get(this, 'min');\n            return (get(this, 'fullValue') + tick * get(this, 'value')) * -1;\n        } else if (get(this, 'value') == 0) {\n            return get(this, 'fullValue') * -1;\n        }\n        return null;\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"U3Fiwgyd\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"svg\\\",true],[10,\\\"width\\\",\\\"110\\\"],[10,\\\"height\\\",\\\"110\\\"],[10,\\\"class\\\",\\\"gauge-chart\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"defs\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"clipPath\\\",true],[10,\\\"id\\\",\\\"cut-off-bottom\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"rect\\\",true],[10,\\\"x\\\",\\\"0\\\"],[10,\\\"y\\\",\\\"0\\\"],[10,\\\"width\\\",\\\"120\\\"],[10,\\\"height\\\",\\\"85\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"path\\\",true],[10,\\\"class\\\",\\\"background\\\"],[10,\\\"d\\\",\\\"M30,90 A40,40 0 1,1 80,90\\\"],[10,\\\"clip-path\\\",\\\"url(#cut-off-bottom)\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"path\\\",true],[11,\\\"class\\\",[29,[\\\"line \\\",[28,\\\"if\\\",[[24,[\\\"isNegative\\\"]],\\\"is-negative\\\",\\\"is-positive\\\"],null]]]],[11,\\\"style\\\",[29,[\\\"stroke-dashoffset: \\\",[22,\\\"percent\\\"],\\\";\\\"]]],[10,\\\"d\\\",\\\"M30,90 A40,40 0 1,1 80,90\\\"],[10,\\\"clip-path\\\",\\\"url(#cut-off-bottom)\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"text\\\",true],[11,\\\"class\\\",[29,[\\\"value \\\",[28,\\\"if\\\",[[24,[\\\"over100\\\"]],\\\"small\\\"],null]]]],[10,\\\"x\\\",\\\"50%\\\"],[10,\\\"y\\\",\\\"50%\\\"],[10,\\\"text-anchor\\\",\\\"middle\\\"],[10,\\\"dy\\\",\\\"11%\\\"],[8],[1,[28,\\\"format-hours\\\",[[24,[\\\"value\\\"]],false,true],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"gauge-labels\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"gauge-label\\\"],[8],[1,[22,\\\"label\\\"],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"gauge-sub-label\\\"],[8],[1,[22,\\\"subLabel\\\"],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/gauge-chart/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/general-report/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GeneralReportComponent,\n    indexOf1 = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nimport config from '../../../config/environment';\n\nimport pdfmixin from '../../../mixins/worksitediary_pdf';\n\nimport saveTheChildren from '../../../mixins/save-the-children';\n\nimport { htmlSafe } from '@ember/string';\n\nimport { sanitize } from 'dom-purify';\n\nimport $ from 'jquery';\n\nimport { pluralize } from 'ember-inflector';\n\nimport { getAssetFolder, getScriptsInOrder } from 'tt4/utils/getScript';\n\nGeneralReportComponent = Ember.Component.extend(pdfmixin, saveTheChildren, {\n    session: Ember.inject.service(),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    cordova: Ember.inject.service('own-cordova-service'),\n    dialogs: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    exportFile: Ember.inject.service(),\n    capi: Ember.inject.service(),\n    analytics: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    flags: Ember.inject.service(),\n    fileExports: Ember.inject.service('file-exports'),\n    surveys: Ember.inject.service(),\n    summableFieldTypes: [\n        'date',\n        'hours',\n        'number',\n        'checkbox',\n        'decimal',\n        'price',\n        'big_price',\n        'minutes',\n        'dropdown_values',\n    ],\n    imageTypes: ['image/jpeg'],\n    showEmailModal: false,\n    errors: Ember.A([]),\n    loading: false,\n    emailSent: false,\n    translations: {\n        twentyfive: 25,\n        fifty: 50,\n        hundred: 100,\n    },\n    isMobile: Em.computed(function () {\n        return typeof cordova !== 'undefined' && cordova !== null;\n    }),\n    statusName: Ember.computed('intl.locale', 'status', function () {\n        if (this.get('intl').exists('status.' + this.get('status'))) {\n            return this.get('intl').t('status.' + this.get('status'));\n        } else {\n            return this.get('status');\n        }\n    }),\n    selectStatus: Em.computed('form', function () {\n        var c, field, intl, option, options;\n        if (!this.get('form')) {\n            return [];\n        }\n        c = this.get('Collector');\n        intl = this.get('intl');\n        field = c.field(this.get('form'), 'status');\n        options = (function () {\n            var j, len, ref, results;\n            ref = field.options;\n            results = [];\n            for (j = 0, len = ref.length; j < len; j++) {\n                option = ref[j];\n                if (intl.exists('status.' + option)) {\n                    results.push({\n                        id: option,\n                        name: intl.t('status.' + option),\n                    });\n                } else {\n                    results.push({\n                        id: option,\n                        name: option,\n                    });\n                }\n            }\n            return results;\n        })();\n        return options;\n    }),\n    didInsertElement: function () {\n        //close display-menu only if clicked outside of it\n        //        $('.display-menu').on 'click', (event) ->\n        //            if !$(this).hasClass 'open'\n        //                $(this).addClass 'open'\n        //            return\n        //        $('body').on 'click touchend', (e) ->\n        //            if !$('.display-menu').is(e.target) and $('.display-menu').has(e.target).length == 0 and $('.open').has(e.target).length == 0\n        //                $('.display-menu').removeClass 'open'\n        //            return\n        $('.dropdown-toggler').on('click', function (event) {\n            $('input.checkbox-button').prop('checked', false);\n            return $(this).toggleClass('open');\n        });\n        $('input.checkbox-button').on('click', function (event) {\n            return $('.dropdown-toggler').parent().addClass('open');\n        });\n        return $('li.dropdown-submenu ul.dropdown-menu li input').on('click', function (event) {\n            return $('.dropdown-toggler').parent().addClass('open');\n        });\n    },\n    didReceiveAttrs: function () {\n        var isEmptyArray, key, valuefromLS;\n        if (\n            this.get('settings.filters') &&\n            this.get('settings.filters').find((filter) => {\n                return filter.name === 'groupBy' && Ember.isPresent(filter.value);\n            })\n        ) {\n            this.set('groupBy', true);\n        } else {\n            this.set('groupBy', false);\n        }\n        if (this.get('settings.localStorageKey')) {\n            this.set('localStorageKey', this.get('settings.localStorageKey'));\n        }\n        if (this.get('localStorageKey')) {\n            key = this.get('localStorageKey') + '_defaultLimit';\n        } else if (this.get('content.firstObject.constructor.modelName')) {\n            key = this.get('content.firstObject.constructor.modelName') + '_defaultLimit';\n        }\n        this.set('defaultLimitKey', key);\n        valuefromLS = this.get('localStorageWrapper').getUserSetting(key);\n        // support for stupid getUserSetting function .. it returns empty array if value is not found at all\n        isEmptyArray = Ember.typeOf(valuefromLS) === 'array' && valuefromLS.length === 0;\n        if (valuefromLS && !isEmptyArray) {\n            this.set('limit', valuefromLS);\n        } else {\n            if (!this.get('limit')) {\n                Ember.run.next(this, function () {\n                    return this.set('limit', '25');\n                });\n            }\n        }\n        if (this.get('defaultColumns')) {\n            return this.send('sendColumns', this.get('defaultColumns'));\n        }\n    },\n    moveElementInArray: function (obj, col, offset) {\n        var index, newIndex;\n        index = obj.indexOf(col);\n        obj.removeObject(col);\n        newIndex = index + offset;\n        if (newIndex > obj.length) {\n            newIndex = 0;\n        } else if (newIndex < 0) {\n            newIndex = obj.length;\n        }\n        return obj.insertAt(newIndex, col);\n    },\n    createExcel: function (exportParams, base64 = false) {\n        var tmp_rows;\n        Ember.get(this, 'analytics').trackEvent({\n            category: this.form + ' report actions',\n            action: 'Excel-export',\n            label: 'General-report',\n        });\n        tmp_rows = new Em.RSVP.Promise((resolve, reject) => {\n            var content, params;\n            if (this.get('checked').length > 0) {\n                content = this.get('checked');\n                return resolve(content);\n            } else {\n                params = {\n                    limit: 'all',\n                    sideload: true,\n                };\n                if (this.get('settings.filters')) {\n                    this.get('settings.filters').forEach((filter) => {\n                        var add;\n                        // haxx to set q-parameter correctly\n                        if (filter.get('bindto')) {\n                            return (params['q'] = filter.get('value'));\n                        } else if (\n                            this.get('customQueryparams') &&\n                            this.get('customQueryparamsKey') === filter.get('field')\n                        ) {\n                            return (params[this.get('customQueryparams')] = filter.get('value'));\n                        } else if (filter.get('value') && filter.get('subform')) {\n                            add = {};\n                            add[filter.get('field')] = filter.get('value');\n                            return (params[filter.get('form')] = add);\n                        } else if (filter.get('value') && filter.get('field') !== 'status') {\n                            return (params[filter.get('field')] = filter.get('value'));\n                        }\n                    });\n                }\n                if (this.get('settings.showStatus') === 'removed') {\n                    params.row_info_status = 'removed';\n                }\n                if (this.get('settings.sortByColumn')) {\n                    params.order = this.get('settings.sortByColumn');\n                }\n                if (this.get('status') !== 'all') {\n                    params.status = this.get('status');\n                }\n                return this.get('store')\n                    .query(this.get('form'), params)\n                    .then((rows) => {\n                        return resolve(rows);\n                    });\n            }\n        });\n        return tmp_rows.then((rows) => {\n            var columns, filteredColumns, sumRow;\n            filteredColumns = [];\n            columns = [];\n            if (exportParams.template) {\n                filteredColumns = exportParams.template.get('columns').split(',');\n            }\n            sumRow = false;\n            this.set('showLoader', true);\n            return this.possiblyCalculateSumRow(\n                rows,\n                false,\n                exportParams['addSumRow'],\n                this.get('settings.rowSettings.hideCheckbox'),\n            ).then((unformatted_sumrow) => {\n                var excelJSON, filters, form;\n                form = this.get('form');\n                this.get('defaultColumns')\n                    .concat(this.get('extraColumns'))\n                    .forEach((row) => {\n                        if (filteredColumns.length > 0 && filteredColumns.indexOf(row.ext) === -1) {\n                            return;\n                        }\n                        return columns.push(row);\n                    });\n                filters = this.getPdfFilters();\n                sumRow = unformatted_sumrow;\n                excelJSON = this.get('fileExports').createExcelJSONFromForm(\n                    form,\n                    rows,\n                    columns,\n                    filters,\n                    sumRow,\n                );\n                if (base64) {\n                    return this.get('fileExports').createBase64ExcelFromJSON(excelJSON);\n                } else {\n                    return this.get('fileExports')\n                        .createExcelFromJSON(excelJSON)\n                        .then(() => {\n                            this.set('showEmailModal', false);\n                            return this.set('showLoader', false);\n                        });\n                }\n            });\n        });\n    },\n    customQueryparams: Ember.computed(function () {\n        var formFeatures, forms;\n        forms = this.get('Collector').forms();\n        // some form have dash in their name so we need to change them to underscore\n        formFeatures = forms[this.get('form').underscore()].features;\n        if (formFeatures != null && formFeatures.custom_queryparams) {\n            return formFeatures.custom_queryparams;\n        }\n        return false;\n    }),\n    customQueryparamsKey: Ember.computed('customQueryparams', function () {\n        if (!this.get('customQueryparams')) {\n            return;\n        }\n        //Some forms have custom_queryparams divided by : for example pass_start:pass_end\n        if (this.get('customQueryparams').includes(':')) {\n            return this.get('customQueryparams').split(':')[0];\n        } else {\n            return this.get('customQueryparams').split('_')[0];\n        }\n    }),\n    showShareLink: Em.computed('session.currentUser', function () {\n        if (!this.get('session.currentUser')) {\n            return;\n        }\n        return this.get('form') === 'presence' && this.get('Collector').testNeeds(['userlevel=5']);\n    }),\n    layoutName: Ember.computed(function () {\n        if (this.get('templatename')) {\n            return this.get('templatename');\n        } else {\n            return 'components/general-report';\n        }\n    }),\n    showPdfExport: true,\n    showPdfExportFull: true,\n    filterMode: false,\n    //    date: moment().format('YYYY-MM-DD')\n    defaultChangeStatus: Em.computed(function () {\n        var obj;\n        obj = {};\n        obj.action = 'approved';\n        obj.btn_class = 'btn-primary';\n        obj.text = this.get('intl').t('report.approve_rows');\n        return obj;\n    }),\n    showDefaultChangeStatus: Ember.computed('canChangeStatus', 'statusTypes', function () {\n        var approvingIsAllowed;\n        if (!this.get('canChangeStatus')) {\n            return false;\n        }\n        approvingIsAllowed = this.get('statusTypes').mapBy('id').indexOf('approved') !== -1;\n        return approvingIsAllowed;\n    }),\n    defaultChangeStatusAction: 'approved',\n    canChangeStatus: Ember.computed(function () {\n        var field;\n        field = collector.getFormObject(this.get('form') + '.status');\n        if (this.get('status') && field) {\n            if (!field.features.readonly) {\n                return true;\n            }\n        }\n        return false;\n    }),\n    statusTypes: Em.computed('form', function () {\n        var c, field, fieldOptions, intl, option, options;\n        if (!this.get('form')) {\n            return [];\n        }\n        c = this.get('Collector');\n        intl = this.get('intl');\n        field = c.field(this.get('form'), 'status');\n        if (field.features.only_options) {\n            fieldOptions = field.features.only_options.split(',');\n        } else {\n            fieldOptions = field.options;\n        }\n        options = (function () {\n            var j, len, results;\n            results = [];\n            for (j = 0, len = fieldOptions.length; j < len; j++) {\n                option = fieldOptions[j];\n                if (intl.exists('status.' + option)) {\n                    results.push({\n                        id: option,\n                        name: intl.t('report.' + option + '_rows'),\n                    });\n                } else {\n                    results.push({\n                        id: option,\n                        name: intl.t('report.change_status') + option,\n                    });\n                }\n            }\n            return results;\n        })();\n        return options;\n    }),\n    offset: null,\n    didInsertElement: function () {\n        return this.set('offset', this.get('limit') * this.get('page'));\n    },\n    page: 1,\n    pageObserver: function () {\n        if (this.get('page') <= 0) {\n            //            @set 'currentController.page',1\n            return this.set('page', 1);\n        }\n    }.observes('page'),\n    pageCount: Ember.computed('content.meta.count', 'limit', 'count', function () {\n        var count;\n        count = Ember.isPresent(this.get('count'))\n            ? this.get('count')\n            : this.get('content.meta.count');\n        return Math.ceil(count / this.get('limit'));\n    }),\n    pages: Ember.computed('limit', 'content', function () {\n        var count, limit, pages;\n        count = Ember.isPresent(this.get('count'))\n            ? this.get('count')\n            : this.get('content.meta.count');\n        limit = this.get('limit');\n        pages = Math.ceil(count / limit);\n        if (pages > 0) {\n            return pages;\n        }\n        return false;\n    }),\n    columns: Ember.on(\n        'init',\n        Ember.observer(\n            'form',\n            'content.[]',\n            'intl.locale',\n            'groupBy',\n            'currentTemplate',\n            function () {\n                var _currentTemplate,\n                    column,\n                    columns,\n                    defaultColumns,\n                    extraColumns,\n                    field,\n                    form,\n                    form_objects,\n                    globalHide,\n                    i,\n                    intl,\n                    j,\n                    k,\n                    key,\n                    len,\n                    name,\n                    obj,\n                    objects,\n                    orderable,\n                    ref,\n                    showColumnsFromLS,\n                    shownColumns,\n                    static_fields,\n                    summableFieldTypes,\n                    summableFields,\n                    supportForOldFormat,\n                    tmpTemplate,\n                    translatedName,\n                    uses_mongo;\n                form = this.get('form');\n                shownColumns = [];\n                uses_mongo = this.get('Collector').uses_mongo(form);\n                // TODO: Hide some globally stupid fields that probably shouldn't even come from api\n                globalHide = ['send_sms', 'linker', 'user_linker', 'device'];\n                if (this.get('form_objects')) {\n                    objects = this.get('form_objects');\n                } else {\n                    objects = collector.getFormObjects(form);\n                }\n                if (this.get('type') === 'group') {\n                    objects = this.groupObjects(objects);\n                }\n                if (!objects) {\n                    return;\n                }\n                if (this.get('settings.localStorageKey')) {\n                    this.set('localStorageKey', this.get('settings.localStorageKey'));\n                }\n                if (this.get('localStorageKey')) {\n                    key = this.get('localStorageKey') + '_defaultColumns';\n                } else if (this.get('content.firstObject.constructor.modelName')) {\n                    key = this.get('content.firstObject.constructor.modelName') + '_defaultColumns';\n                }\n                supportForOldFormat = [];\n                if (localStorage.getItem(key)) {\n                    supportForOldFormat = JSON.parse(localStorage.getItem(key));\n                }\n                showColumnsFromLS = this.get('localStorageWrapper').getUserSetting(\n                    key,\n                    supportForOldFormat,\n                );\n                if (showColumnsFromLS && showColumnsFromLS.length > 0 && key) {\n                    shownColumns = showColumnsFromLS;\n                }\n                // skip default showColumns (and show all) if there are no columns defined in localstorage\n                //else if @get 'showColumns'\n                //    shownColumns = @get 'showColumns'\n\n                // save currentTemplate to localstorage so we can use it\n                _currentTemplate =\n                    this.get('content.firstObject.constructor.modelName') + '_currentTemplate';\n                if (this.get('currentTemplate')) {\n                    this.get('localStorageWrapper').setUserSetting(_currentTemplate, {\n                        columns: this.get('currentTemplate.columns'),\n                        name: this.get('currentTemplate.name'),\n                    });\n                    shownColumns = this.get('currentTemplate.columns').split(',');\n                }\n                // if currentTemplate is saved to localstorage, use it\n                if (this.get('localStorageWrapper').getUserSetting(_currentTemplate).columns) {\n                    tmpTemplate = this.get('localStorageWrapper').getUserSetting(_currentTemplate);\n                    shownColumns = tmpTemplate.columns.split(',');\n                }\n                if (shownColumns.length <= 0) {\n                    shownColumns = [];\n                    i = 0;\n                    for (k in objects) {\n                        obj = objects[k];\n                        i++;\n                        shownColumns.push(k);\n                    }\n                }\n                //@set('showColumns', shownColumns)\n                columns = Em.A([]);\n                defaultColumns = Em.A([]);\n                extraColumns = Em.A([]);\n                summableFieldTypes = this.get('summableFieldTypes');\n                summableFields = Em.A([]);\n                for (name in objects) {\n                    obj = objects[name];\n                    if (\n                        obj.features.hide_column ||\n                        obj.features.hide_tt4 ||\n                        name.slice(-6) === '_minus'\n                    ) {\n                        continue;\n                    }\n                    if (indexOf1.call(globalHide, name) >= 0) {\n                        continue;\n                    }\n                    if (this.get('settings.hideColumns')) {\n                        if (indexOf1.call(this.get('settings.hideColumns'), name) >= 0) {\n                            continue;\n                        }\n                    }\n                    translatedName = obj.name || this.get('intl').t('report.' + form + '.' + name);\n                    if (indexOf1.call(shownColumns, name) >= 0) {\n                    } else {\n                        //do not put defaultColumns here\n                        //defaultColumns.pushObject {name: translatedName, ext: name, obj: obj}\n                        if (\n                            !(\n                                name.indexOf('_minus', name.length - 6) !== -1 ||\n                                obj.features.hide_column\n                            )\n                        ) {\n                            if (obj.type !== 'multiselect_tmp') {\n                                if (!obj.ext) {\n                                    obj.ext = name;\n                                }\n                                extraColumns.pushObject({\n                                    name: translatedName,\n                                    ext: name,\n                                    obj: obj,\n                                });\n                            }\n                        }\n                    }\n                    columns.pushObject({\n                        name: translatedName,\n                        ext: name,\n                    });\n                    if (\n                        summableFieldTypes &&\n                        ((ref = obj.type), indexOf1.call(summableFieldTypes, ref) >= 0)\n                    ) {\n                        summableFields.pushObject({\n                            ext: name,\n                            type: obj.type,\n                        });\n                    }\n                }\n                // Add static columns here, like row_info stuff that is on every record\n                intl = this.get('intl');\n                static_fields = {\n                    'row_info.created': {\n                        name: intl.t('general.row_info.created'),\n                        ext: 'row_info.created',\n                        obj: {\n                            type: 'row_info',\n                            features: {},\n                            ext: 'row_info.created',\n                        },\n                        orderable: true,\n                    },\n                };\n                for (key in static_fields) {\n                    field = static_fields[key];\n                    if (indexOf1.call(shownColumns, key) >= 0) {\n                        continue;\n                    }\n                    extraColumns.pushObject(field);\n                    columns.pushObject(field);\n                }\n                // new way of showing columns\n                for (j = 0, len = shownColumns.length; j < len; j++) {\n                    column = shownColumns[j];\n                    if (static_fields[column] != null) {\n                        defaultColumns.pushObject(static_fields[column]);\n                        columns.pushObject(field);\n                        continue;\n                    }\n                    if (indexOf1.call(globalHide, column) >= 0) {\n                        continue;\n                    }\n                    if (this.get('settings.hideColumns')) {\n                        if (indexOf1.call(this.get('settings.hideColumns'), column) >= 0) {\n                            continue;\n                        }\n                    }\n                    // if form_objects are given as parameter, use them\n                    if (this.get('form_objects')) {\n                        form_objects = this.get('form_objects');\n                        obj = form_objects[column];\n                        translatedName = this.get('intl').t('report.' + form + '.' + column);\n                        if (obj.translation) {\n                            translatedName = this.get('intl').t(obj.translation);\n                        }\n                    } else if (column.indexOf('.') !== -1) {\n                        obj = collector.getFormObject(column);\n                        translatedName = this.get('intl').t('report.' + column);\n                    } else {\n                        obj = collector.getFormObject(form + '.' + column);\n                        translatedName = obj.name || this.getTranslation(form, column);\n                    }\n                    if (!obj) {\n                        continue;\n                    }\n                    if (\n                        obj.features.hide_column ||\n                        obj.features.hide_tt4 ||\n                        column.slice(-6) === '_minus'\n                    ) {\n                        continue;\n                    }\n                    if (uses_mongo && obj.type === 'database') {\n                        orderable = false;\n                    } else {\n                        orderable = true;\n                    }\n                    if (obj) {\n                        if (!obj.ext) {\n                            obj.ext = column;\n                        }\n                        defaultColumns.pushObject({\n                            name: htmlSafe(sanitize(translatedName)),\n                            ext: column,\n                            obj: obj,\n                            orderable: orderable,\n                        });\n                        columns.pushObject({\n                            name: htmlSafe(sanitize(translatedName)),\n                            ext: column,\n                        });\n                    }\n                }\n                if (this.get('groupBy')) {\n                    [defaultColumns, extraColumns] = this.getGroupColumns(\n                        defaultColumns,\n                        extraColumns,\n                    );\n                }\n                this.set('defaultColumns', defaultColumns);\n                this.set('extraColumns', extraColumns);\n                this.set('summableFields', summableFields);\n                return columns;\n            },\n        ),\n    ),\n    getGroupColumns: function (defaultColumns, extraColumns) {\n        var columnsToExtra, columnsToShow, defaultColumnsToShow;\n        if (!this.get('groupBy') || !this.get('content.firstObject')) {\n            return [defaultColumns, extraColumns];\n        }\n        defaultColumnsToShow = Object.keys(this.get('content.firstObject'));\n        columnsToShow = defaultColumnsToShow.map((ext) => {\n            return defaultColumns.find((column) => {\n                return ext === column.ext;\n            });\n        });\n        columnsToExtra = defaultColumnsToShow.map((ext) => {\n            return extraColumns.find((column) => {\n                return ext === column.ext;\n            });\n        });\n        columnsToShow = columnsToShow.compact().uniq();\n        columnsToExtra = columnsToExtra.compact().uniq();\n        return [columnsToShow, columnsToExtra];\n    },\n    getTranslation: function (form, column) {\n        if (form.substring(0, 18) === 'measurement-custom') {\n            // little hack to support measurement-custom form headers\n            form = 'tr';\n        }\n        //return @get('intl').t 'report.'+form+'.'+column\n        return this.get('Collector').getBestTranslation(form, column);\n    },\n    groupObjects: function (all_objects) {\n        var content, first_row, ret;\n        content = this.get('content');\n        if (content.length < 1) {\n            return null;\n        }\n        first_row = content[0];\n        ret = {};\n        $.each(all_objects, function (key, item) {\n            if (key in first_row) {\n                return (ret[key] = item);\n            }\n        });\n        return ret;\n    },\n    setLocalStorageColumns: function () {\n        var columns, key;\n        if (this.get('groupBy')) {\n            //If groupBy then dont set defaultColumns to local storage so they can be restored back when groupBy filter is removed\n            return;\n        }\n        //return if @get('currentTemplate') #Don't save template columns to LS so we can return to old state\n        columns = [];\n        if (this.get('localStorageKey')) {\n            key = this.get('localStorageKey') + '_defaultColumns';\n        } else if (this.get('content.firstObject.constructor.modelName')) {\n            key = this.get('content.firstObject.constructor.modelName') + '_defaultColumns';\n        }\n        this.get('defaultColumns').forEach(function (obj) {\n            return columns.push(obj.ext);\n        });\n        if (key) {\n            return this.get('localStorageWrapper').setUserSetting(key, columns);\n        }\n    }.observes('defaultColumns.[]'),\n    dates: Ember.computed('content', function () {\n        var dates, item, k, model, ret;\n        if (this.get('sortByDates')) {\n            model = this.get('content').sortBy('date');\n            dates = Em.A({});\n            model.forEach(function (item) {\n                var date;\n                date = item.get('date');\n                if (dates[date]) {\n                    return dates[date].rows.pushObject(item);\n                } else {\n                    return (dates[date] = {\n                        date: item.get('date'),\n                        rows: [item],\n                    });\n                }\n            });\n            ret = Em.A([]);\n            for (k in dates) {\n                item = dates[k];\n                ret.pushObject(item);\n            }\n            return ret;\n        }\n    }),\n    sumRow: Em.computed('content.[]', 'defaultColumns.[]', 'checked.[]', function () {\n        var columns, model, self, sortByDate, sumRow, summableFields, sums, unformatted_sumRow;\n        self = this;\n        sortByDate = null;\n        if (this.get('form') === 'abcense') {\n            sortByDate = this.get('content').sortBy('startdate');\n        } else {\n            sortByDate = this.get('content').sortBy('date');\n        }\n        if (this.get('checked.length') > 0) {\n            model = this.get('checked');\n        } else {\n            model = Ember.isPresent(this.get('content')) ? sortByDate : [];\n        }\n        columns = this.get('defaultColumns');\n        // TODO Should rewrite avi report to not use this general-report component\n        if (this.get('form') === 'avi') {\n            return;\n        }\n        if (!columns) {\n            return;\n        }\n        if (Ember.get(model, 'length') === 0) {\n            return;\n        }\n        summableFields = this.get('summableFields');\n        sumRow = Em.A([]);\n        unformatted_sumRow = Em.A([]);\n        if (!this.get('settings.rowSettings.hideCheckbox')) {\n            sumRow.pushObject('');\n            unformatted_sumRow.pushObject('');\n        }\n        sums = {};\n        model.forEach(function (item) {\n            return summableFields.forEach(function (field) {\n                var cell;\n                if (!(field.ext in sums)) {\n                    sums[field.ext] = 0;\n                }\n                if (item.get == null) {\n                    return;\n                }\n                cell = item.get(field.ext);\n                if (field.type === 'checkbox') {\n                    if (!sums[field.ext]) {\n                        sums[field.ext] = [0, 0];\n                    }\n                    if (item.get(field.ext)) {\n                        return sums[field.ext][0]++;\n                    } else {\n                        return sums[field.ext][1]++;\n                    }\n                } else if (field.type === 'dropdown_values') {\n                    if (!sums[field.ext]) {\n                        sums[field.ext] = [];\n                    }\n                    if (cell) {\n                        return sums[field.ext].push(cell);\n                    }\n                } else if (field.type === 'date') {\n                    if (Ember.typeOf(cell) === 'string' && cell.substring(0, 6) === 'count:') {\n                        return (sums[field.ext] += parseInt(cell.substring(6)));\n                    } else {\n                        sums[field.ext] = '';\n                    }\n                } else {\n                    return (sums[field.ext] += cell);\n                }\n            });\n        });\n        columns.forEach(function (column) {\n            var dropdownSums, field, sumToFixed;\n            field = column.ext;\n            dropdownSums = [];\n            if (column.obj.type === 'checkbox') {\n                sumRow.pushObject(\n                    self.Collector.format(true, column.obj, null, model) +\n                        ': ' +\n                        sums[field][0] +\n                        ' / ' +\n                        self.Collector.format(false, column.obj, null, model) +\n                        ': ' +\n                        sums[field][1],\n                );\n                return unformatted_sumRow.pushObject(\n                    self.Collector.format(true, column.obj, null, model) +\n                        ': ' +\n                        sums[field][0] +\n                        ' / ' +\n                        self.Collector.format(false, column.obj, null, model) +\n                        ': ' +\n                        sums[field][1],\n                );\n            } else if (field in sums) {\n                if (\n                    column.obj.type === 'number' &&\n                    !isNaN(sums[field]) &&\n                    !Number.isInteger(sums[field])\n                ) {\n                    sumToFixed = sums[field].toFixed(1);\n                    sumRow.pushObject(self.Collector.format(sumToFixed, column.obj, null, model));\n                    //unformatted_sumRow.pushObject self.Collector.format(sums[field], column.obj, null, model, 'sumrow').toFixed(1)\n                    //unformatted_sumRow.pushObject sums[field]\n                    return unformatted_sumRow.pushObject(\n                        self.Collector.format(sumToFixed, column.obj, null, model, 'sumrow'),\n                    );\n                } else if (column.obj.type === 'dropdown_values') {\n                    sums[field].forEach(function (opt) {\n                        return (dropdownSums[opt] = (dropdownSums[opt] || 0) + 1);\n                    });\n                    sumRow.pushObject(\n                        self.Collector.format(\n                            dropdownSums,\n                            column.obj,\n                            null,\n                            model,\n                            false,\n                            self.get('form'),\n                        ),\n                    );\n                    return unformatted_sumRow.pushObject(\n                        self.Collector.format(\n                            dropdownSums,\n                            column.obj,\n                            null,\n                            model,\n                            'sumrow',\n                            self.get('form'),\n                        ),\n                    );\n                } else {\n                    sumRow.pushObject(self.Collector.format(sums[field], column.obj, null, model));\n                    //unformatted_sumRow.pushObject self.Collector.format(sums[field], column.obj, null, model, 'sumrow')\n                    return unformatted_sumRow.pushObject(sums[field]);\n                }\n            } else {\n                sumRow.pushObject('');\n                return unformatted_sumRow.pushObject('');\n            }\n        });\n        this.set('unformatted_sumRow', unformatted_sumRow);\n        return sumRow;\n    }),\n    possiblyCalculateSumRow: function (\n        content,\n        format,\n        calculateSumRow = false,\n        hideFirstCheckbox = false,\n    ) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var columns, model, self, sortByDate, sumRow, summableFields, sums, unformatted_sumRow;\n            if (!calculateSumRow) {\n                resolve(false);\n            }\n            self = this;\n            sortByDate = null;\n            if (this.get('form') === 'abcense') {\n                sortByDate = content.sortBy('startdate');\n            } else {\n                sortByDate = content.sortBy('date');\n            }\n            if (this.get('checked.length') > 0) {\n                model = this.get('checked');\n            } else {\n                model = Ember.isPresent(content) ? sortByDate : [];\n            }\n            columns = this.get('defaultColumns');\n            // TODO Should rewrite avi report to not use this general-report component\n            if (this.get('form') === 'avi') {\n                return;\n            }\n            if (!columns) {\n                return;\n            }\n            if (Ember.get(model, 'length') === 0) {\n                return;\n            }\n            summableFields = this.get('summableFields');\n            sumRow = Em.A([]);\n            unformatted_sumRow = Em.A([]);\n            if (!hideFirstCheckbox) {\n                sumRow.pushObject('');\n                unformatted_sumRow.pushObject('');\n            }\n            sums = {};\n            model.forEach(function (item) {\n                return summableFields.forEach(function (field) {\n                    var cell;\n                    if (!(field.ext in sums)) {\n                        sums[field.ext] = 0;\n                    }\n                    if (item.get == null) {\n                        return;\n                    }\n                    cell = item.get(field.ext);\n                    if (field.type === 'checkbox') {\n                        if (!sums[field.ext]) {\n                            sums[field.ext] = [0, 0];\n                        }\n                        if (item.get(field.ext)) {\n                            return sums[field.ext][0]++;\n                        } else {\n                            return sums[field.ext][1]++;\n                        }\n                    } else if (field.type === 'dropdown_values') {\n                        if (!sums[field.ext]) {\n                            sums[field.ext] = [];\n                        }\n                        if (cell) {\n                            return sums[field.ext].push(cell);\n                        }\n                    } else if (field.type === 'date') {\n                        if (Ember.typeOf(cell) === 'string' && cell.substring(0, 6) === 'count:') {\n                            return (sums[field.ext] += parseInt(cell.substring(6)));\n                        } else {\n                            sums[field.ext] = '';\n                        }\n                    } else {\n                        return (sums[field.ext] += cell);\n                    }\n                });\n            });\n            columns.forEach(function (column) {\n                var dropdownSums, field;\n                field = column.ext;\n                dropdownSums = [];\n                if (column.obj.type === 'checkbox') {\n                    sumRow.pushObject(\n                        self.Collector.format(true, column.obj, null, model) +\n                            ': ' +\n                            sums[field][0] +\n                            ' / ' +\n                            self.Collector.format(false, column.obj, null, model) +\n                            ': ' +\n                            sums[field][1],\n                    );\n                    return unformatted_sumRow.pushObject(\n                        self.Collector.format(true, column.obj, null, model) +\n                            ': ' +\n                            sums[field][0] +\n                            ' / ' +\n                            self.Collector.format(false, column.obj, null, model) +\n                            ': ' +\n                            sums[field][1],\n                    );\n                } else if (field in sums) {\n                    if (\n                        column.obj.type === 'number' &&\n                        !isNaN(sums[field]) &&\n                        !Number.isInteger(sums[field])\n                    ) {\n                        sumRow.pushObject(\n                            parseFloat(\n                                self.Collector.format(sums[field], column.obj, null, model),\n                            ).toFixed(1),\n                        );\n                        //unformatted_sumRow.pushObject self.Collector.format(sums[field], column.obj, null, model, 'sumrow').toFixed(1)\n                        //unformatted_sumRow.pushObject sums[field]\n                        return unformatted_sumRow.pushObject(\n                            parseFloat(\n                                self.Collector.format(\n                                    sums[field],\n                                    column.obj,\n                                    null,\n                                    model,\n                                    'sumrow',\n                                ),\n                            ).toFixed(1),\n                        );\n                    } else if (column.obj.type === 'dropdown_values') {\n                        sums[field].forEach(function (opt) {\n                            return (dropdownSums[opt] = (dropdownSums[opt] || 0) + 1);\n                        });\n                        sumRow.pushObject(\n                            self.Collector.format(\n                                dropdownSums,\n                                column.obj,\n                                null,\n                                model,\n                                false,\n                                self.get('form'),\n                            ),\n                        );\n                        return unformatted_sumRow.pushObject(\n                            self.Collector.format(\n                                dropdownSums,\n                                column.obj,\n                                null,\n                                model,\n                                'sumrow',\n                                self.get('form'),\n                            ),\n                        );\n                    } else {\n                        sumRow.pushObject(\n                            self.Collector.format(sums[field], column.obj, null, model),\n                        );\n                        //unformatted_sumRow.pushObject self.Collector.format(sums[field], column.obj, null, model, 'sumrow')\n                        return unformatted_sumRow.pushObject(sums[field]);\n                    }\n                } else {\n                    sumRow.pushObject('');\n                    return unformatted_sumRow.pushObject('');\n                }\n            });\n            if (format) {\n                return resolve(sumRow);\n            } else {\n                console.log(unformatted_sumRow);\n                return resolve(unformatted_sumRow);\n            }\n        });\n    },\n    hasPreviousPage: Ember.computed('offset', 'page', 'content', 'limit', function () {\n        return this.get('offset') !== 0;\n    }),\n    hasNextPage: Ember.computed('offset', 'limit', 'page', 'content', function () {\n        return this.get('offset') + this.get('limit') < this.get('content.meta.count');\n    }),\n    checked: Em.on('init', function () {\n        return this.set('checked', Em.A([]));\n    }),\n    checkClass: Em.computed('checked.[]', function () {\n        if (this.get('checked.length') === 0) {\n            return 'unchecked';\n        } else if (this.get('checked.length') === this.get('content.length')) {\n            return 'checked';\n        } else {\n            return 'unchecked';\n        }\n    }),\n    typeObserver: function () {\n        if (this.get('type') === 'group') {\n            return this.set('showCheckbox', false);\n        }\n    }.observes('type'),\n    getExportCols: function (row, cols) {\n        var col, j, len, obj;\n        obj = Em.Object.create();\n        for (j = 0, len = cols.length; j < len; j++) {\n            col = cols[j];\n            obj.set(col, row[col]);\n        }\n        return obj;\n    },\n    showGpsButton: Ember.computed('_showGpsButton', 'defaultColumns.[]', function () {\n        var defaultfields, extrafields, gpsfound;\n        if (this.get('_showGpsButton')) {\n            return true;\n        }\n        gpsfound = false;\n        defaultfields = this.get('defaultColumns');\n        if (!defaultfields) {\n            return;\n        }\n        if (this.get('form') === !'worktime') {\n            return;\n        }\n        defaultfields.forEach(function (field) {\n            if (field.ext === 'location' || field.ext === 'end_location') {\n                return (gpsfound = true);\n            }\n        });\n        extrafields = this.get('extraColumns');\n        extrafields.forEach(function (field) {\n            if (field.ext === 'location' || field.ext === 'end_location') {\n                return (gpsfound = true);\n            }\n        });\n        return gpsfound;\n    }),\n    selectedRows: Ember.computed('checked.[]', function () {\n        return this.get('checked').mapBy('id').join(',');\n    }),\n    updateMarkers: Em.observer('checked.[]', function () {\n        if (this.get('showGpsMap')) {\n            return this.setMapMarkers();\n        }\n    }),\n    setProjectMarkers: function (projects) {\n        var d, locs;\n        d = new $.Deferred();\n        locs = [];\n        projects.forEach((project) => {\n            var id, loc, projLoc;\n            if (project.get('location_map')) {\n                id = project.get('id');\n                projLoc = project.get('location_map');\n                loc = {};\n                loc.project = JSON.parse(projLoc);\n                loc.project.label = project.get('name');\n                return locs.push(loc);\n            }\n        });\n        this.set('projectmarkers', locs);\n        d.resolve();\n        return d;\n    },\n    setWorktimeMarkers: function (rows) {\n        var d, i, locs, totalLength;\n        d = new $.Deferred();\n        locs = [];\n        i = 0;\n        totalLength = rows.get('length');\n        rows.forEach((row) => {\n            var creator, name, project, user;\n            if (!row.get('location') && !row.get('end_location') && !row.get('location_map')) {\n                totalLength--;\n                return;\n            }\n            project = row.get('project');\n            user = row.get('user');\n            if (user) {\n                name = user.get('lastname') + ' ' + user.get('firstname');\n            } else {\n                creator = row.get('creator');\n                name = creator.get('lastname') + ' ' + creator.get('firstname');\n            }\n            return this.get('store')\n                .query('project', {\n                    id: project.get('id'),\n                })\n                .then((projects) => {\n                    var loc, projLoc, record;\n                    record = projects.get('firstObject');\n                    projLoc = record.get('location_map');\n                    loc = {};\n                    if (row.get('location')) {\n                        loc.wStartLoc = JSON.parse(row.get('location'));\n                    }\n                    loc.wLabel = name;\n                    if (row.get('end_location')) {\n                        loc.wEndLoc = JSON.parse(row.get('end_location'));\n                    }\n                    if (projLoc) {\n                        loc.project = JSON.parse(projLoc);\n                        loc.project.label = project.get('name');\n                    }\n                    locs.push(loc);\n                    if (++i === totalLength) {\n                        this.set('wtmarkers', locs);\n                        return d.resolve();\n                    }\n                });\n        });\n        return d;\n    },\n    setMapMarkers: function () {\n        var rows;\n        //get data from checked (if there is checked)\n        if (this.get('checked').length > 0) {\n            rows = this.get('checked');\n        } else {\n            rows = this.get('content');\n        }\n        if (rows.get('firstObject.project')) {\n            //timetracker list route\n            return this.setWorktimeMarkers(rows); //projects route\n        } else {\n            return this.setProjectMarkers(rows);\n        }\n    },\n    moreLinksClass: Em.computed('checked.[]', function () {\n        if (this.get('checked.length') === 0) {\n            return 'disabled';\n        }\n    }),\n    canLock: Em.computed(function () {\n        return this.get('Collector').testNeeds(['userlevel=5']);\n    }),\n    getPdfFilters: function (rows) {\n        var c, filter, filterName, filterValue, j, len, pdf_filters_body, ref, value, values;\n        c = this.get('Collector');\n        if (Em.isEmpty(this.get('settings.filters'))) {\n            return [];\n        }\n        pdf_filters_body = [];\n        ref = this.get('settings.filters');\n        for (j = 0, len = ref.length; j < len; j++) {\n            filter = ref[j];\n            if (filter.get('value') && filter.get('name') !== 'groupBy') {\n                if (Ember.isArray(filter.get('value')) && filter.get('value.length') === 0) {\n                    continue;\n                }\n                if (filter.get('type') === 'database') {\n                    if (typeof filter.get('value') !== 'string') {\n                        value = [];\n                    } else {\n                        value = filter.get('value').split(',');\n                    }\n                } else {\n                    value = filter.get('value');\n                }\n                if (filter.get('bindto') && !filter.get('field')) {\n                    filterValue = value;\n                    filterName = this.get('intl').t('filters.free_search');\n                } else {\n                    if (Ember.isArray(value)) {\n                        values = '';\n                        value.forEach(function (id, index) {\n                            id = parseInt(id);\n                            values += c._format_(\n                                id,\n                                filter.get('form'),\n                                filter.get('field'),\n                                'pdf',\n                                rows,\n                            );\n                            if (index + 1 < value.length) {\n                                return (values += ', ');\n                            }\n                        });\n                        filterValue = values;\n                    } else {\n                        filterValue = c._format_(\n                            value,\n                            filter.get('form'),\n                            filter.get('field'),\n                            'pdf',\n                            rows,\n                        );\n                    }\n                    filterName = this.get('intl').t(filter.get('form') + '.' + filter.get('name'));\n                }\n                if (filterValue != null && filterValue) {\n                    filterValue = filterValue;\n                }\n                //if empty name (own fields), get name from collector service\n                if (Em.isEmpty(filterName)) {\n                    filterName = c.field(filter.get('form'), filter.get('field')).translated_name;\n                }\n                if (this.get('full_pdf_export')) {\n                    pdf_filters_body.push([\n                        {\n                            text: filterName + ': ' + filterValue,\n                            style: 'headertext',\n                        },\n                    ]);\n                } else {\n                    pdf_filters_body.push([filterName + ':', filterValue]);\n                }\n            }\n        }\n        if (pdf_filters_body.length && this.get('full_pdf_export')) {\n            //add some margin between filters and rest of the pdf\n            pdf_filters_body.push([\n                {\n                    text: '',\n                    style: 'marginTop',\n                },\n            ]);\n        }\n        return pdf_filters_body;\n    },\n    littleBitUglyPdfExportMethod: function (\n        format = null,\n        includeAllPages = false,\n        topHeader = false,\n        exportParams,\n    ) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var getImageUri, pdf_filters, self, store;\n            self = this;\n            store = this.get('store');\n            this.set('full_pdf_export', false);\n            pdf_filters = null;\n            getImageUri = function (value, index) {\n                var d, img;\n                d = new $.Deferred();\n                img = new Image();\n                img.onload = function () {\n                    var canvas, ctx, dataUrl;\n                    canvas = document.createElement('canvas');\n                    canvas.width = this.width;\n                    canvas.height = this.height;\n                    ctx = canvas.getContext('2d');\n                    ctx.drawImage(img, 0, 0);\n                    dataUrl = canvas.toDataURL();\n                    return d.resolve({\n                        data: dataUrl,\n                        index: index,\n                    });\n                };\n                img.setAttribute('crossOrigin', 'anonymous');\n                img.src = config.APP.COLLECTOR_API_URL + '/' + value.thumb;\n                return d;\n            };\n            return this.Collector.getLogo().then((logo) => {\n                var columns,\n                    company,\n                    d,\n                    filteredColumns,\n                    get_status_info,\n                    pdf_output,\n                    pdf_output_last,\n                    report_name_text,\n                    row_ids,\n                    templateColumnsNotInDefault,\n                    title_row,\n                    tmp_rows,\n                    widths;\n                company = self.get('session.currentUser.company');\n                if (company == null) {\n                    company = '';\n                }\n                report_name_text = company;\n                pdf_output = [];\n                pdf_output_last = [];\n                //title row\n                title_row = [];\n                columns = [];\n                widths = [];\n                row_ids = [];\n                filteredColumns = [];\n                get_status_info = false;\n                if (exportParams.template) {\n                    filteredColumns = exportParams.template.get('columns').split(',');\n                }\n                templateColumnsNotInDefault = this.get('extraColumns').filter((column) => {\n                    return filteredColumns.includes(Ember.get(column, 'ext'));\n                });\n                this.get('defaultColumns')\n                    .concat(templateColumnsNotInDefault)\n                    .forEach(function (row) {\n                        var ref, status_last_changed, title_text;\n                        if (filteredColumns.length > 0 && filteredColumns.indexOf(row.ext) === -1) {\n                            return;\n                        }\n                        columns.push(row.obj);\n                        if (\n                            (ref = Em.get(row, 'obj.type')) === 'textbox' ||\n                            ref === 'textarea' ||\n                            ref === 'textarea_varchar'\n                        ) {\n                            widths.push(80);\n                        } else {\n                            widths.push('auto');\n                        }\n                        if (row.name.string != null) {\n                            title_row.push(row.name.string);\n                        } else {\n                            title_row.push(row.name);\n                        }\n                        if (row.obj.type === 'status' && Ember.get(exportParams, 'statusInfo')) {\n                            get_status_info = true;\n                            status_last_changed = {\n                                type: 'textbox',\n                                ext: 'status_last_changed',\n                                clickable: false,\n                            };\n                            columns.push(status_last_changed);\n                            widths.push('auto');\n                            title_text = self.get('intl').t('export.pdf.status_last_change');\n                            return title_row.push(title_text.toString());\n                        }\n                    });\n                pdf_output.push(title_row);\n                d = $.Deferred();\n                tmp_rows = new Em.RSVP.Promise((resolve, reject) => {\n                    var key, param, params, ref;\n                    //d = $.Deferred();\n                    if (self.get('checked').length > 0 && !includeAllPages) {\n                        return resolve(self.get('checked'));\n                    } else {\n                        params = {\n                            limit: 'all',\n                            sideload: true,\n                        };\n                        // support for additional query-params\n                        if (exportParams.extraParams) {\n                            ref = exportParams.extraParams;\n                            for (key in ref) {\n                                param = ref[key];\n                                params[key] = param;\n                            }\n                        }\n                        if (self.get('settings.filters')) {\n                            self.get('settings.filters').forEach(function (filter) {\n                                if (filter.get('value') && filter.get('field') !== 'status') {\n                                    if (filter.get('bindto') && !filter.get('field')) {\n                                        return (params[filter.get('bindto')] = filter.get('value'));\n                                    } else if (\n                                        filter.get('form') !== self.get('form').underscore()\n                                    ) {\n                                        return (params[\n                                            filter.get('form').concat('[', filter.get('field'), ']')\n                                        ] = filter.get('value'));\n                                    } else if (\n                                        self.get('customQueryparams') &&\n                                        self.get('customQueryparamsKey') === filter.get('field')\n                                    ) {\n                                        return (params[self.get('customQueryparams')] =\n                                            filter.get('value'));\n                                    } else {\n                                        return (params[filter.get('field')] = filter.get('value'));\n                                    }\n                                }\n                            });\n                        }\n                        if (self.get('settings.sortByColumn')) {\n                            params.order = self.get('settings.sortByColumn');\n                        }\n                        // when data is grouped always use the grouping as order .. copied from app\\pods\\timetracker\\worktime-list\\route.coffee\n                        if (params.groupBy) {\n                            params.order = params.groupBy;\n                        }\n                        if (self.get('status') !== 'all') {\n                            params.status = self.get('status');\n                        }\n                        return self\n                            .get('store')\n                            .query(self.get('form'), params)\n                            .then((rows) => {\n                                return resolve(rows);\n                            });\n                    }\n                });\n                tmp_rows.then(\n                    (rows) => {\n                        var statuspromise;\n                        if (get_status_info) {\n                            row_ids = rows.mapBy('id');\n                            statuspromise = self.get('Collector').ttapi({\n                                url: 'get_status_info',\n                                method: 'post',\n                                data: {\n                                    ids: row_ids,\n                                    form: self.get('form'),\n                                },\n                            });\n                        } else {\n                            statuspromise = new Em.RSVP.Promise((resolve) => {\n                                return resolve();\n                            });\n                        }\n                        return statuspromise.then((statusrows) => {\n                            var pdf_filters_body;\n                            // add filters to pdf-page\n                            pdf_filters_body = self.getPdfFilters(rows);\n                            if (pdf_filters_body.length) {\n                                pdf_filters = {\n                                    table: {\n                                        body: pdf_filters_body,\n                                    },\n                                    layout: 'noBorders',\n                                };\n                            }\n                            rows.forEach(function (row) {\n                                var statusrow;\n                                if (typeof row.getProperties !== 'function') {\n                                    row = Em.Object.create(row);\n                                }\n                                if (get_status_info) {\n                                    statusrow = statusrows[row.id];\n                                    if (statusrow) {\n                                        row.set(\n                                            'status_last_changed',\n                                            moment(statusrow.datetime).format('L') +\n                                                ' ' +\n                                                moment(statusrow.datetime).format('LT') +\n                                                '\\n' +\n                                                statusrow.user,\n                                        );\n                                    } else {\n                                        row.set('status_last_changed', '');\n                                    }\n                                }\n                                if (\n                                    exportParams.imgLocation != null &&\n                                    exportParams.imgLocation === 'afterReport'\n                                ) {\n                                    pdf_output.push(\n                                        self.formatCollectorFieldsToPdfArray(\n                                            columns,\n                                            row,\n                                            'row',\n                                            false,\n                                            false,\n                                            false,\n                                            'thumbnails',\n                                        ),\n                                    );\n                                    return pdf_output_last.push(\n                                        self.formatImagesToPdf(columns, row, true),\n                                    );\n                                } else if (exportParams.imgLocation != null) {\n                                    return pdf_output.push(\n                                        self.formatCollectorFieldsToPdfArray(\n                                            columns,\n                                            row,\n                                            'row',\n                                            false,\n                                            false,\n                                            false,\n                                            exportParams.imgLocation,\n                                        ),\n                                    );\n                                } else {\n                                    return pdf_output.push(\n                                        self.formatCollectorFieldsToPdfArray(\n                                            columns,\n                                            row,\n                                            'row',\n                                            false,\n                                            false,\n                                            false,\n                                            'showImages',\n                                        ),\n                                    );\n                                }\n                            });\n                            return Em.RSVP.Promise.all(pdf_output).then(function (output) {\n                                if (pdf_output_last) {\n                                    return Em.RSVP.Promise.all(pdf_output_last).then(\n                                        function (output_last) {\n                                            var element, img, imgTable, j, l, len, len1;\n                                            imgTable = [];\n                                            for (j = 0, len = output_last.length; j < len; j++) {\n                                                element = output_last[j];\n                                                for (l = 0, len1 = element.length; l < len1; l++) {\n                                                    img = element[l];\n                                                    imgTable.push(img['value']);\n                                                }\n                                            }\n                                            //table: {\n                                            //    body: [\n                                            //        [img[\"name\"], img[\"value\"]]\n                                            //    ]\n                                            //}\n                                            //pageBreak: \"before\"\n                                            return d.resolve(\n                                                output,\n                                                rows,\n                                                includeAllPages,\n                                                imgTable,\n                                            );\n                                        },\n                                    );\n                                } else {\n                                    return d.resolve(output, rows, includeAllPages);\n                                }\n                            });\n                        });\n                    },\n                    function () {\n                        return d.reject();\n                    },\n                );\n                return d.then(function (\n                    pdf_output,\n                    allRowsForExport,\n                    includeAllPages = false,\n                    output_last = [],\n                ) {\n                    var assetsfolder,\n                        checkedRows,\n                        docDefinition,\n                        dropdownSums,\n                        first,\n                        hideCheckbox,\n                        orientation,\n                        pdf_content,\n                        rowidList,\n                        sumRow,\n                        sumTheseRows,\n                        sumrows,\n                        sums;\n                    //return\n                    // add sum row to pdf\n                    sumRow = [];\n                    first = false;\n                    hideCheckbox = self.get('settings.rowSettings.hideCheckbox');\n                    sums = {};\n                    checkedRows = self.get('checked');\n                    //console.log checkedRows\n                    sumTheseRows =\n                        checkedRows.length > 0 && !includeAllPages ? checkedRows : allRowsForExport;\n                    rowidList = [];\n                    sumTheseRows.forEach(function (item) {\n                        rowidList.push(item.get('id'));\n                        return self.get('summableFields').forEach(function (field) {\n                            var cell;\n                            if (!(field.ext in sums)) {\n                                sums[field.ext] = 0;\n                            }\n                            cell = item.get(field.ext);\n                            if (field.type === 'checkbox') {\n                                if (!sums[field.ext]) {\n                                    sums[field.ext] = [0, 0];\n                                }\n                                if (item.get(field.ext)) {\n                                    return sums[field.ext][0]++;\n                                } else {\n                                    return sums[field.ext][1]++;\n                                }\n                            } else if (field.type === 'dropdown_values') {\n                                if (!sums[field.ext]) {\n                                    sums[field.ext] = [];\n                                }\n                                if (cell) {\n                                    return sums[field.ext].push(cell);\n                                }\n                            } else if (field.type === 'date') {\n                                if (\n                                    Ember.typeOf(cell) === 'string' &&\n                                    cell.substring(0, 6) === 'count:'\n                                ) {\n                                    return (sums[field.ext] += parseInt(cell.substring(6)));\n                                } else {\n                                    sums[field.ext] = '';\n                                }\n                            } else {\n                                return (sums[field.ext] += cell);\n                            }\n                        });\n                    });\n                    sumrows = Em.A([]);\n                    dropdownSums = [];\n                    columns.forEach(function (column) {\n                        var field;\n                        field = column.ext;\n                        if (column.type === 'checkbox') {\n                            return sumrows.pushObject(\n                                self.Collector.format(true, column, null, checkedRows) +\n                                    ': ' +\n                                    sums[field][0] +\n                                    ' / ' +\n                                    self.Collector.format(false, column, null, checkedRows) +\n                                    ': ' +\n                                    sums[field][1],\n                            );\n                        } else if (column.type === 'dropdown_values') {\n                            sums[field].forEach(function (opt) {\n                                return (dropdownSums[opt] = (dropdownSums[opt] || 0) + 1);\n                            });\n                            return sumrows.pushObject(\n                                self.Collector.format(\n                                    dropdownSums,\n                                    column,\n                                    null,\n                                    checkedRows,\n                                    'sumrow',\n                                    self.get('form'),\n                                ),\n                            );\n                        } else if (field in sums) {\n                            return sumrows.pushObject(\n                                self.Collector.format(\n                                    sums[field],\n                                    column,\n                                    null,\n                                    checkedRows,\n                                    'sumrow',\n                                ),\n                            );\n                        } else {\n                            return sumrows.pushObject('');\n                        }\n                    });\n                    sumrows.forEach(function (str) {\n                        if (!first || self.get('type') === 'group') {\n                            return sumRow.push('' + str);\n                        }\n                    });\n                    pdf_output.push(sumRow);\n                    pdf_content = [];\n                    if (!logo) {\n                        logo = self.get('moveniumLogo');\n                    }\n                    pdf_content.push({\n                        columns: [\n                            {\n                                fit: [120, 40],\n                                image: logo,\n                                margin: [0, 0, 0, 20],\n                            },\n                            {\n                                width: '*',\n                                text: report_name_text,\n                                alignment: 'right',\n                                fontSize: 14,\n                                margin: [0, 0, 0, 10],\n                            },\n                        ],\n                    });\n                    if (topHeader) {\n                        pdf_content.push({\n                            text: topHeader,\n                            fontSize: 20,\n                        });\n                    }\n                    if (pdf_filters) {\n                        pdf_content.push(pdf_filters);\n                        pdf_content.push({\n                            text: ' ', // add one empty row\n                        });\n                    }\n                    //table\n                    pdf_content.push({\n                        table: {\n                            headerRows: 1,\n                            widths: widths,\n                            body: pdf_output,\n                        },\n                        layout: 'lightHorizontalLines',\n                        fontSize: 10,\n                    });\n                    if (Ember.get(exportParams, 'signature')) {\n                        pdf_content.push({\n                            style: 'marginTop',\n                            table: {\n                                widths: ['auto', 140, 30, 'auto', 140],\n                                body: [\n                                    [\n                                        {\n                                            border: [false, true, false, false],\n                                            text:\n                                                self.get('intl').t('report.worktask.signature') +\n                                                ':',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: '',\n                                        },\n                                        {\n                                            border: [false, false, false, false],\n                                            text: '',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: self.get('intl').t('thereport.print_name') + ':',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: '',\n                                        },\n                                    ],\n                                ],\n                            },\n                        });\n                    }\n                    if (Ember.get(exportParams, 'dateAndPlace')) {\n                        pdf_content.push({\n                            style: 'marginTop',\n                            table: {\n                                widths: ['auto', 140, 55, 'auto', 140],\n                                body: [\n                                    [\n                                        {\n                                            border: [false, true, false, false],\n                                            text: self.get('intl').t('thereport.date') + ':',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: '',\n                                        },\n                                        {\n                                            border: [false, false, false, false],\n                                            text: '',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: self.get('intl').t('thereport.place') + ':',\n                                        },\n                                        {\n                                            border: [false, true, false, false],\n                                            text: '',\n                                        },\n                                    ],\n                                ],\n                            },\n                        });\n                    }\n                    orientation = Ember.get(exportParams, 'orientation')\n                        ? Ember.get(exportParams, 'orientation')\n                        : 'landscape';\n                    pdf_content.push(output_last);\n                    docDefinition = {\n                        footer: (currentPage, pageCount) => {\n                            return self.getFooter(currentPage, pageCount);\n                        },\n                        content: pdf_content,\n                        pageSize: 'A4',\n                        pageOrientation: orientation,\n                        pageMargins: [15, 15, 15, 15],\n                        styles: {\n                            footer: {\n                                fontSize: 8,\n                                color: 'grey',\n                            },\n                            marginTop: {\n                                margin: [0, 40, 0, 0],\n                            },\n                        },\n                    };\n                    //console.log(JSON.stringify(docDefinition, null, 4))\n                    //return\n                    if (format === 'base64') {\n                        assetsfolder = getAssetFolder('assets');\n                        return getScriptsInOrder([\n                            assetsfolder + 'pdfmake_v0.1.68.min.js',\n                            assetsfolder + 'vfs_fonts_v0.1.68.min.js',\n                        ]).then(() => {\n                            return createPdf(docDefinition)._createDoc({}, () => {\n                                var item, j, len, pageSize, ref;\n                                ref = docDefinition.content;\n                                for (j = 0, len = ref.length; j < len; j++) {\n                                    item = ref[j];\n                                    if (item.table != null && item._maxWidth > 842) {\n                                        pageSize = {\n                                            height: item._maxWidth,\n                                            width: item._maxWidth / Math.sqrt(2),\n                                        };\n                                        continue;\n                                    }\n                                }\n                                docDefinition.pageSize = pageSize;\n                                return createPdf(docDefinition).getBase64(function (cb) {\n                                    if (includeAllPages) {\n                                        return resolve({\n                                            pdf: cb,\n                                            rowids: rowidList,\n                                        });\n                                    } else {\n                                        return resolve(cb);\n                                    }\n                                });\n                            });\n                        });\n                    } else {\n                        return resolve(docDefinition);\n                    }\n                });\n            });\n        });\n    },\n    getPdfAttachmentForEmail: function (includeAllPages, params) {\n        if (\n            this.get('form') === 'diary' &&\n            this.get('checked.length') > 0 &&\n            Ember.get(params, 'type') === 'export_pdf_full'\n        ) {\n            return this.export_special_pdf('diary', moment.locale(), params);\n        } else if (this.get('form') === 'diaryreport' && this.get('checked.length') > 0) {\n            return this.createWorksitediaryPdf(this.get('checked'), 'base64');\n        } else if (Ember.get(params, 'type') === 'export_pdf_full') {\n            return this.getTtapiPdf('base64', params);\n        } else if (Ember.get(params, 'type') === 'export_excel') {\n            return this.createExcel(params, true);\n        } else {\n            return this.littleBitUglyPdfExportMethod(\n                'base64',\n                includeAllPages,\n                this.get('emailTitle'),\n                params,\n            );\n        }\n    },\n    thereIsCheckedRows: Ember.computed.gt('checked.length', 0),\n    formContainsApprovedStatus: Ember.computed('form', function () {\n        var field, fields, found;\n        fields = this.get('Collector').fields(this.get('form'));\n        found = false;\n        for (field in fields) {\n            if (\n                fields[field].type === 'status' &&\n                !fields[field].features.readonly &&\n                indexOf1.call(fields[field].options, 'approved') >= 0\n            ) {\n                found = true;\n            }\n        }\n        return found;\n    }),\n    statusFieldIsVisible: Ember.computed('defaultColumns.[]', function () {\n        if (this.get('defaultColumns') && this.get('defaultColumns').findBy('ext', 'status')) {\n            return true;\n        }\n    }),\n    showApprovalLinkSelection: Ember.computed('thereIsCheckedRows', function () {\n        if (this.get('thereIsCheckedRows') && this.get('formContainsApprovedStatus')) {\n            return true;\n        } else if (this.get('customerSettings').checkSetting('email_approval_for_all')) {\n            return true;\n        }\n        return false;\n    }),\n    showMassedit: Ember.computed('settings.massedit', function () {\n        if (!this.get('Collector').testNeeds(['userlevel=3,4,5,6'])) {\n            return false;\n        }\n        return this.get('settings.massedit');\n    }),\n    _addHistoryForSentRows: function (email, form, rowids) {\n        var text;\n        text = this.get('intl').t('general.history_approval_link_sent', {\n            email: email,\n        });\n        return rowids.forEach((rowid) => {\n            return this.get('Collector').ajax({\n                method: 'put',\n                url: form + 's/' + rowid,\n                data: JSON.stringify({\n                    _history: text,\n                }),\n            });\n        });\n    },\n    _getParamsForFetchingRows: function (exclude = []) {\n        var params;\n        params = {\n            sideload: true,\n        };\n        if (!(indexOf1.call(exclude, 'limit') >= 0)) {\n            params.limit = 'all';\n        }\n        if (this.get('settings.filters')) {\n            this.get('settings.filters').forEach((filter) => {\n                var key;\n                if (filter.get('value') && filter.get('field') !== 'status') {\n                    if (filter.get('bindto') && !filter.get('field')) {\n                        return (params[filter.get('bindto')] = filter.get('value'));\n                    } else if (filter.get('form') !== this.get('form')) {\n                        key = filter.get('form') + '[' + filter.get('field') + ']';\n                        return (params[key] = filter.get('value'));\n                    } else {\n                        return (params[filter.get('field')] = filter.get('value'));\n                    }\n                }\n            });\n        }\n        if (this.get('settings.sortByColumn') && !(indexOf1.call(exclude, 'sort') >= 0)) {\n            params.order = this.get('settings.sortByColumn');\n        }\n        if (this.get('status') !== 'all') {\n            params.status = this.get('status');\n        }\n        return params;\n    },\n    allPagesSelected: Ember.computed(\n        'content.meta.count',\n        'checked.length',\n        'content.length',\n        function () {\n            return (\n                this.get('content.meta.count') > this.get('checked.length') &&\n                this.get('checked.length') === this.get('content.length')\n            );\n        },\n    ),\n    emailSendingCount: Ember.computed(\n        'allPagesSelected',\n        'content.meta.count',\n        'checked.length',\n        function () {\n            if (this.get('allPagesSelected')) {\n                return this.get('content.meta.count');\n            } else {\n                return this.get('checked.length');\n            }\n        },\n    ),\n    validateEmail: function (email) {\n        return !/^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i.test(\n            email,\n        );\n    },\n    export_special_pdf: function (name, lang = 'fi', params) {\n        var postParams, url;\n        url = 'pdf/' + name;\n        postParams = {\n            form: this.get('form'),\n            lang: lang,\n            filters: JSON.stringify(this.getRawFilters()),\n            type: 'base64',\n        };\n        if (this.get('checked').length > 0) {\n            postParams.id = this.get('checked').mapBy('id').join(',');\n        }\n        if (params.signature) {\n            postParams.signature = params.signature;\n        }\n        if (params.dateAndPlace) {\n            postParams.dateAndPlace = params.dateAndPlace;\n        }\n        return this.get('Collector').ttapi({\n            dataType: 'text',\n            url: url,\n            data: postParams,\n        });\n    },\n    getRawFilters: function () {\n        var params;\n        params = {};\n        if (this.get('settings.filters')) {\n            this.get('settings.filters').forEach((filter) => {\n                var add;\n                if (Ember.isArray(filter.get('value')) && filter.get('value').length === 0) {\n                } else if (filter.get('bindto')) {\n                    return (params['q'] = filter.get('value'));\n                } else if (filter.get('value') && filter.get('subform')) {\n                    add = {};\n                    add[filter.get('field')] = filter.get('value');\n                    return (params[filter.get('form')] = add);\n                } else if (filter.get('value') && filter.get('field') !== 'status') {\n                    return (params[filter.get('field')] = filter.get('value'));\n                }\n            });\n        }\n        return params;\n    },\n    getTtapiPdf: function (format = null, params = {}, type = 'row') {\n        var filters, postParams, rawFilters, ref, url;\n        url = 'pdf/' + type;\n        if (params.extraParams) {\n            rawFilters = this.getRawFilters();\n            if ((ref = params.extraParams.type) === 'tr' || ref === 'mvr') {\n                if (rawFilters.date) {\n                    delete rawFilters.date;\n                }\n            }\n            filters = Object.assign(rawFilters, params.extraParams);\n        } else {\n            filters = this.getRawFilters();\n        }\n        postParams = {\n            form: this.form.includes('measurement-custom') ? this.form.underscore() : this.form,\n            lang: moment.locale(),\n            filters: JSON.stringify(filters),\n        };\n        if (this.get('checked').length !== 0) {\n            postParams.id = this.get('checked').mapBy('id').join(',');\n        }\n        if (params.template) {\n            postParams.template = Ember.get(params, 'template.id');\n        }\n        if (params.signature) {\n            postParams.signature = params.signature;\n        }\n        if (params.dateAndPlace) {\n            postParams.dateAndPlace = params.dateAndPlace;\n        }\n        if (format) {\n            postParams.type = format;\n        }\n        return this.get('Collector').ttapi({\n            dataType: 'text',\n            url: url,\n            data: postParams,\n        });\n    },\n    statusChanged: function (toStatus) {\n        if (\n            toStatus === 'approved' &&\n            this.get('Collector').testNeeds(['products.vismanet||products.severa']) &&\n            this.form === 'worktime'\n        ) {\n            return this.set('showFastExporter', true);\n        }\n\n        let surveyTheseForms = ['worktime', 'abcense'];\n        if (toStatus === 'approved' && surveyTheseForms.includes(this.form))\n            this.surveys.initializeAndRun('row_approved'); // show wootric CES-survey after row approved\n    },\n    setDatesForFastExporter: function (date) {\n        if (date === 'clear') {\n            this.set('datesForFastExporter', {\n                from: null,\n                to: null,\n            });\n            return;\n        }\n        if (\n            !this.get('datesForFastExporter.from') ||\n            moment(date).isBefore(this.get('datesForFastExporter.from'))\n        ) {\n            this.set('datesForFastExporter.from', date);\n        }\n        if (\n            !this.get('datesForFastExporter.to') ||\n            moment(date).isAfter(this.get('datesForFastExporter.to'))\n        ) {\n            return this.set('datesForFastExporter.to', date);\n        }\n    },\n    actions: {\n        handleExportActions: function (params) {\n            switch (params.type) {\n                case 'export_pdf':\n                    return this.send('export_pdf', params);\n                case 'export_pdf_full':\n                    return this.send('export_pdf_full', params);\n                case 'export_excel':\n                    return this.send('export_excel', params);\n            }\n        },\n        closeShowChangeStatusForAllPages: function () {\n            return this.set('showChangeStatusForAllPages', false);\n        },\n        fullScreen: function () {\n            if (this.get('fullscreenmode') === 'custom') {\n                return this.get('gui').toggleCustomFullScreen();\n            } else {\n                this.get('gui').togglefullScreen();\n                return Ember.get(this, 'analytics').trackEvent({\n                    category: this.form + ' report actions',\n                    action: 'Fullscreen',\n                    label: 'General-report',\n                });\n            }\n        },\n        bubbleAction: function (action, row) {\n            return this.sendAction('bubbleAction', action, row);\n        },\n        action: function (func) {\n            if (this.get('checked.length') > 0) {\n                return func(this, this.get('checked'));\n            }\n        },\n        checkAll: function () {\n            var checked;\n            if (this.get('checked.length') === this.get('content.length')) {\n                return this.set('checked', Em.A([]));\n            } else {\n                this.set('checked', Em.A([]));\n                checked = this.get('checked');\n                return this.get('content').forEach(function (obj) {\n                    return checked.pushObject(obj);\n                });\n            }\n        },\n        refreshReport: function () {\n            var controller, route;\n            this.analytics.trackEvent({\n                category: this.form + ' report actions',\n                action: 'Refresh report',\n                label: 'General-report',\n            });\n            controller = Ember.getOwner(this).lookup('controller:application');\n            route = Ember.getOwner(this).lookup(\n                'route:' + Ember.get(controller, 'currentRouteName'),\n            );\n            return route.refresh();\n        },\n        changeStatus: function (status) {\n            var intl, promise_arr, self, visibleRowIds;\n            this.analytics.trackEvent({\n                category: this.form + ' report more actions',\n                action: 'Change status',\n                label: 'General-report',\n            });\n            self = this;\n            intl = this.get('intl');\n            if (this.get('allPagesSelected')) {\n                visibleRowIds = this.get('checked').map(function (row) {\n                    return row.get('id');\n                });\n                this.set('changeStatusForAllPagesParams', {\n                    visibleRowIds: visibleRowIds,\n                    requestParams: this._getParamsForFetchingRows(['order']),\n                    status: status,\n                    form: this.get('form'),\n                    rowCount: this.get('content.meta.count'),\n                });\n                this.set('showChangeStatusForAllPages', true);\n            }\n            promise_arr = [];\n            this.setDatesForFastExporter('clear');\n            this.get('checked').forEach((row) => {\n                var promise;\n                this.setDatesForFastExporter(row.get('date'));\n                row.set('status', status);\n                Ember.set(row, 'row_info.modified', moment().format('YYYY-MM-DD'));\n                promise = row.save();\n                promise_arr.push(promise);\n                return promise.catch(function (e) {\n                    var err, error_string;\n                    if (row.get('isError')) {\n                        if (Ember.isArray(e.errors)) {\n                            err = e.errors[0];\n                        } else {\n                            err = e.errors;\n                        }\n                        error_string = err.error_msg;\n                        if (\n                            intl.exists('validation_error.' + Ember.String.underscore(error_string))\n                        ) {\n                            error_string = intl.t(\n                                'validation_error.' + Ember.String.underscore(error_string),\n                            );\n                        } else if (intl.exists('validation_error.' + err.error)) {\n                            error_string = intl.t('validation_error.' + err.error);\n                        }\n                        self.get('notifications').error(error_string, {\n                            autoClear: true,\n                        });\n                        return row.rollbackAttributes();\n                    }\n                });\n            });\n            self.set('checked', Em.A([]));\n            return Ember.RSVP.Promise.all(promise_arr).then(() => {\n                return this.statusChanged(status, this.get('checked'));\n            });\n        },\n        massedit: function () {\n            if (this.get('checked.length') > 0) {\n                return this.sendAction('massedit', 'worktime', this.get('checked'));\n            }\n        },\n        ownExportAction: function (action) {\n            return this.sendAction('ownExportAction', action);\n        },\n        deleteChecked: function () {\n            if (this.get('checked.length') > 0) {\n                this.analytics.trackEvent({\n                    category: this.form + ' report more actions',\n                    action: 'Delete selected',\n                    label: 'General-report',\n                });\n                return this.get('dialogs')\n                    .confirm(this.get('intl').t('report.confirm_delete'))\n                    .then((con) => {\n                        var show_error;\n                        if (con) {\n                            show_error = false;\n                            this.get('checked').forEach((row) => {\n                                if (row.get('row_info.privilege_remove') === false) {\n                                    show_error = true;\n                                    return;\n                                }\n                                return row.destroyRecord().then((ret) => {\n                                    row.unloadRecord();\n                                    return this.sendAction('bubbleAction', 'delete', row);\n                                });\n                            });\n                            if (show_error) {\n                                this.get('dialogs').alert(\n                                    this.get('intl').t('general_report.mass_delete.not_allowed'),\n                                );\n                            }\n                            return this.set('checked', Em.A([]));\n                        }\n                    });\n            }\n        },\n        restoreChecked: function () {\n            if (this.get('checked.length') > 0) {\n                this.analytics.trackEvent({\n                    category: this.form + ' report more actions',\n                    action: 'Restore selected',\n                    label: 'General-report',\n                });\n                return this.get('dialogs')\n                    .confirm(this.get('intl').t('report.confirm_restore_rows'))\n                    .then((con) => {\n                        var form, form_plural;\n                        if (con) {\n                            form = this.get('form');\n                            form_plural = pluralize(form).camelize();\n                            this.get('checked').forEach((row) => {\n                                return this.get('capi')\n                                    .request('/' + form_plural + '/' + row.id + '?validation=off', {\n                                        dataType: 'json',\n                                        type: 'PUT',\n                                        data:\n                                            '{\"' +\n                                            form.camelize() +\n                                            '\":{\"row_info.status\":\"normal\"}}',\n                                    })\n                                    .then(() => {\n                                        return row.unloadRecord();\n                                    });\n                            });\n                            return this.set('checked', Em.A([]));\n                        }\n                    });\n            }\n        },\n        status: function (status) {\n            this.set('status', status);\n            return this.analytics.trackEvent({\n                category: this.form + ' report actions change status',\n                action: status,\n                label: 'General-report',\n            });\n        },\n        sendColumns: function (columns) {\n            return this.sendAction('showColumnsChanged', columns, this.get('form'));\n        },\n        showColumn: function (col) {\n            var _currentTemplate, current, extra;\n            this.analytics.trackEvent({\n                category: this.form + ' report show column',\n                action: col,\n                label: 'General-report',\n            });\n            current = this.get('defaultColumns');\n            extra = this.get('extraColumns');\n            current.pushObject(col);\n            extra.removeObject(col);\n            this.set('defaultColumns', current);\n            _currentTemplate =\n                this.get('content.firstObject.constructor.modelName') + '_currentTemplate';\n            if (this.get('localStorageWrapper').getUserSetting(_currentTemplate).columns) {\n                this.get('localStorageWrapper').removeUserSetting(_currentTemplate);\n            }\n            return this.send('sendColumns', current);\n        },\n        hideColumn: function (col) {\n            var _currentTemplate, current, extra;\n            this.analytics.trackEvent({\n                category: this.form + ' report hide column',\n                action: col,\n                label: 'General-report',\n            });\n            current = this.get('defaultColumns');\n            extra = this.get('extraColumns');\n            current.removeObject(col);\n            extra.pushObject(col);\n            _currentTemplate =\n                this.get('content.firstObject.constructor.modelName') + '_currentTemplate';\n            if (this.get('localStorageWrapper').getUserSetting(_currentTemplate).columns) {\n                this.get('localStorageWrapper').removeUserSetting(_currentTemplate);\n            }\n            return this.send('sendColumns', current);\n        },\n        moveCol: function (col, dir) {\n            return this.moveElementInArray(this.get('defaultColumns'), col, dir);\n        },\n        sortDown: function (col) {\n            return this.moveElementInArray(this.get('defaultColumns'), col, 1);\n        },\n        columnDropped: function (target, dropped) {\n            var columns;\n            dropped = parseInt(dropped);\n            if (target === dropped) {\n                return;\n            }\n            columns = this.get('defaultColumns');\n            return this.moveElementInArray(\n                this.get('defaultColumns'),\n                columns[dropped],\n                target - dropped,\n            );\n        },\n        sortByColumn: function (col, obj = false) {\n            var colArr, sortCol;\n            this.analytics.trackEvent({\n                category: this.form + ' report sort by column',\n                action: col,\n                label: 'General-report',\n            });\n            //return if obj? and obj.type == \"row_info\"\n            if (obj.ext === 'row_info.created') {\n                col = 'id';\n            }\n            sortCol = this.get('settings.sortByColumn');\n            if (sortCol === this.get('settings.defaultOrder') && !this.get('manuallyOrdered')) {\n                this.set('settings.sortByColumn', col);\n                this.set('manuallyOrdered', true);\n                return;\n            }\n            if (sortCol.includes(col + '-')) {\n                sortCol = sortCol.replace(col + '-', col);\n            } else if (sortCol.includes(col) && (sortCol = sortCol.replace(col, col + '-'))) {\n            } else if (Ember.isEmpty(sortCol)) {\n                sortCol = col;\n            } else {\n                sortCol += ',' + col;\n            }\n            colArr = sortCol.split(',');\n            if (colArr.length > 4) {\n                // Only use the 4 last options in the sortcol array\n                sortCol = colArr.splice(-4).join(',');\n            }\n            this.set('manuallyOrdered', true);\n            return this.set('settings.sortByColumn', sortCol);\n        },\n        removeFieldFromOrder: function (field) {\n            var cols;\n            cols = this.get('settings.sortByColumn').split(',');\n            if (cols.length === 1) {\n                this.set('settings.sortByColumn', this.get('settings.defaultOrder'));\n                this.set('manuallyOrdered', false);\n                return;\n            }\n            if (cols.includes(field + '-')) {\n                field = field + '-';\n            }\n            cols.splice(cols.indexOf(field), 1);\n            if (cols.length > 0) {\n                this.set('manuallyOrdered', true);\n                return this.set('settings.sortByColumn', cols.join(','));\n            }\n        },\n        setRowsPerPage: function (limit) {\n            var key;\n            this.analytics.trackEvent({\n                category: this.form + ' report rows per page',\n                action: limit,\n                label: 'General-report',\n            });\n            key = this.get('defaultLimitKey');\n            this.set('page', 1);\n            this.set('limit', limit);\n            this.get('localStorageWrapper').setUserSetting(key, limit);\n            return this.sendAction('bubbleSetRowsPerPage', limit);\n        },\n        export_excel: function (exportParams) {\n            return this.createExcel(exportParams);\n        },\n        //exports report data to the csv file including header row\n        export_csv: function () {\n            var columns, csv_output, d, obj_columns, self, title_row, tmp_rows;\n            this.set('showLoader', true);\n            self = this;\n            csv_output = [];\n            Ember.get(this, 'analytics').trackEvent({\n                category: this.form + ' report actions',\n                action: 'Csv-export',\n                label: 'General-report',\n            });\n            //title row\n            title_row = [];\n            columns = [];\n            obj_columns = [];\n            this.get('defaultColumns').forEach((row) => {\n                var minus_field, obj;\n                columns.push(row.ext);\n                obj_columns.push(row.obj);\n                title_row.push(row.name);\n                if (row.ext.includes('_plus')) {\n                    columns.push(row.ext.slice(0, -5) + '_minus');\n                    obj = Object.assign({}, row.obj);\n                    Ember.set(obj, 'ext', row.ext.slice(0, -5) + '_minus');\n                    obj_columns.push(obj);\n                    minus_field = this.get('Collector').field(\n                        this.get('form'),\n                        row.ext.slice(0, -5) + '_minus',\n                    );\n                    return title_row.push(minus_field.translated_name);\n                }\n            });\n            csv_output.push(title_row);\n            d = new $.Deferred();\n            tmp_rows = new Em.RSVP.Promise((resolve, reject) => {\n                var j, len, output_row, params, ref, row;\n                //get data from checked (if there is checked)\n                if (this.get('checked').length > 0) {\n                    ref = this.get('checked');\n                    for (j = 0, len = ref.length; j < len; j++) {\n                        row = ref[j];\n                        if (config.APP.KIOSK) {\n                            row = self.getExportCols(row, columns);\n                        } else {\n                            if (typeof row.getProperties !== 'function') {\n                                row = Em.Object.create(row);\n                            }\n                        }\n                        output_row = [];\n                        $.each(obj_columns, function (key, column) {\n                            var cell, formatted;\n                            column = Em.Object.create(column);\n                            cell = row.get(column.get('ext'));\n                            formatted = self.Collector.format(cell, column, self, row, 'csv');\n                            return output_row.push(self.Collector.format_export(formatted));\n                        });\n                        csv_output.push(output_row);\n                    }\n                    return d.resolve();\n                } else {\n                    params = {\n                        limit: 'all',\n                        sideload: true,\n                    };\n                    if (self.get('settings.filters')) {\n                        self.get('settings.filters').forEach(function (filter) {\n                            var add;\n                            // haxx to set q-parameter correctly\n                            if (filter.get('bindto')) {\n                                return (params['q'] = filter.get('value'));\n                            } else if (\n                                self.get('customQueryparams') &&\n                                self.get('customQueryparamsKey') === filter.get('field')\n                            ) {\n                                return (params[self.get('customQueryparams')] =\n                                    filter.get('value'));\n                            } else if (filter.get('value') && filter.get('subform')) {\n                                add = {};\n                                add[filter.get('field')] = filter.get('value');\n                                return (params[filter.get('form')] = add);\n                            } else if (filter.get('value') && filter.get('field') !== 'status') {\n                                return (params[filter.get('field')] = filter.get('value'));\n                            }\n                        });\n                    }\n                    if (self.get('settings.sortByColumn')) {\n                        params.order = self.get('settings.sortByColumn');\n                    }\n                    if (this.get('status') !== 'all') {\n                        params.status = this.get('status');\n                    }\n                    return self\n                        .get('store')\n                        .query(self.get('form'), params)\n                        .then((rows) => {\n                            return resolve(rows);\n                        });\n                }\n            });\n            tmp_rows.then(\n                (rows) => {\n                    rows.forEach(function (row) {\n                        var output_row;\n                        if (config.APP.KIOSK) {\n                            row = self.getExportCols(row, columns);\n                        } else if (typeof row.getProperties !== 'function') {\n                            row = Em.Object.create(row);\n                        }\n                        output_row = [];\n                        $.each(obj_columns, function (key, column) {\n                            var cell, formatted;\n                            column = Em.Object.create(column);\n                            cell = row.get(column.get('ext'));\n                            formatted = self.Collector.format(\n                                cell,\n                                column,\n                                self,\n                                row,\n                                'csv',\n                                self.get('form'),\n                            );\n                            /*\n            if key in columns && value?\n                index = columns.indexOf(key)\n                field = self.get('form')+'.'+key\n                if self.get('staticForm')\n                    field = self.get('Collector').getFormObject(field)\n                formatted = if config.APP.KIOSK then value else self.Collector.format(value,field, self, row, true)\n                #cell, column, null, model, true\n             */\n                            return output_row.push(self.Collector.format_export(formatted));\n                        });\n                        return csv_output.push(output_row);\n                    });\n                    return d.resolve();\n                },\n                function () {\n                    return d.reject();\n                },\n            );\n            return d.then(function () {\n                var a,\n                    blobObj,\n                    company,\n                    csvString,\n                    csv_str,\n                    indexOf,\n                    j,\n                    l,\n                    len,\n                    len1,\n                    name,\n                    row,\n                    str;\n                //generate csv string\n                csv_str = [];\n                for (j = 0, len = csv_output.length; j < len; j++) {\n                    row = csv_output[j];\n                    //remove linebreaks from csv string to avoid invalid format\n                    for (indexOf = l = 0, len1 = row.length; l < len1; indexOf = ++l) {\n                        str = row[indexOf];\n                        if (typeof str === 'string') {\n                            row[indexOf] = str.replace(/(\\r\\n\\t|\\n|\\r\\t)/gm, ' ');\n                        }\n                    }\n                    csv_str.push(row.join(';'));\n                }\n                //for column in row\n                //   if column is null || column is undefined\n                //       column = \"\"\n                //   csv_str.push(column.join(';'));\n                //csv_str += column + \";\"\n                //remove last char\n                //csv_str = csv_str.substring(0, csv_str.length - 1);\n                //put line break at the end\n                //csv_str += \"%0A\"\n                name = 'movenium_export';\n                company = self.get('session.currentUser.company');\n                if (company) {\n                    name = company;\n                }\n                //create download for android app\n                if (typeof LocalFileSystem !== 'undefined' && LocalFileSystem !== null) {\n                    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) {\n                        return fileSystem.root.getFile(\n                            name + '.csv',\n                            {\n                                create: true,\n                            },\n                            function (entry) {\n                                var fileEntry;\n                                fileEntry = entry;\n                                return entry.createWriter(function (writer) {\n                                    var csvString;\n                                    //write file and open\n                                    writer.onwrite = function (evt) {\n                                        return cordova.plugins.fileOpener2.open(\n                                            fileEntry.toURL(),\n                                            'text/csv',\n                                        );\n                                    };\n                                    csvString = csv_str.join('\\n');\n                                    return writer.write(encodeURIComponent(csvString));\n                                });\n                            },\n                        );\n                    });\n                } else {\n                    //download csv for desktop\n                    csvString = csv_str.join('\\n');\n                    if (window.Blob && window.navigator.msSaveOrOpenBlob) {\n                        blobObj = new Blob(['\\uFEFF' + csvString], {\n                            type: 'text/csv',\n                        });\n                        window.navigator.msSaveBlob(blobObj, name + '.csv');\n                    } else {\n                        a = document.createElement('a');\n                        a.setAttribute(\n                            'href',\n                            'data:text/csv;charset=utf-8,\\uFEFF' + encodeURIComponent(csvString),\n                        );\n                        a.setAttribute('download', name + '.csv');\n                        a.style.display = 'none';\n                        document.body.appendChild(a);\n                        a.click();\n                    }\n                }\n                return self.set('showLoader', false);\n            });\n        },\n        export_pdf_full: function (params) {\n            var promise;\n            this.set('showLoader', true);\n            Ember.get(this, 'analytics').trackEvent({\n                category: this.form + ' report actions',\n                action: 'Pdf-full export',\n                label: 'General-report',\n            });\n            if (this.get('form') === 'orientation') {\n                promise = this.export_special_pdf(this.get('form'), moment.locale(), params);\n                if (promise) {\n                    promise.then((content) => {\n                        this.set('showLoader', false);\n                        return this.get('exportFile').exportFile(content, 'export', 'pdf', true);\n                    });\n                    promise.catch((e) => {\n                        alert('pdf export failed: ' + JSON.stringify(e));\n                        this.set('showLoader', false);\n                        return this.set('showEmailModal', false);\n                    });\n                }\n            } else {\n                promise = this.getTtapiPdf(\n                    null,\n                    params,\n                    this.get('form') === 'diary' ? 'diary' : 'row',\n                );\n                if (promise) {\n                    promise.then((back) => {\n                        var data;\n                        data = JSON.parse(back);\n                        if (data.url) {\n                            if (typeof cordova !== 'undefined' && cordova !== null) {\n                                return window.open(\n                                    data.url,\n                                    '_system',\n                                    'location=yes,enableViewportScale=yes,hidden=no,usewkwebview=yes',\n                                );\n                            } else {\n                                return window.open(data.url);\n                            }\n                        }\n                    });\n                    promise.catch((e) => {\n                        return alert('pdf export failed: ' + JSON.stringify(e));\n                    });\n                    promise.finally(() => {\n                        this.set('showLoader', false);\n                        return this.set('showEmailModal', false);\n                    });\n                }\n            }\n        },\n        export_pdf: function (params = {}) {\n            this.set('showLoader', true);\n            Ember.get(this, 'analytics').trackEvent({\n                category: this.form + ' report actions',\n                action: 'Pdf-normal export',\n                label: 'General-report',\n            });\n            return this.littleBitUglyPdfExportMethod(null, false, false, params).then(\n                (docDefinition) => {\n                    var assetsfolder, company, pageSize;\n                    // if you want to see decoded pdf, uncomment these rows\n                    // you can also paste result to pdfmake.org playground (http://pdfmake.org/playground.html)\n                    //console.log(JSON.stringify(docDefinition, null, 4))\n                    //return\n                    company = this.get('session.currentUser.company' || '');\n                    //if self.get 'showEmailModal'\n                    pageSize = 'A4';\n                    assetsfolder = getAssetFolder('assets');\n                    return getScriptsInOrder([\n                        assetsfolder + 'pdfmake_v0.1.68.min.js',\n                        assetsfolder + 'vfs_fonts_v0.1.68.min.js',\n                    ]).then(() => {\n                        return createPdf(docDefinition)._createDoc({}, () => {\n                            var item, j, len, ref;\n                            ref = docDefinition.content;\n                            //console.log(JSON.stringify(docDefinition, null, 4))\n                            //return\n                            for (j = 0, len = ref.length; j < len; j++) {\n                                item = ref[j];\n                                if (item.table != null && item._maxWidth > 842) {\n                                    pageSize = {\n                                        height: item._maxWidth,\n                                        width: item._maxWidth / Math.sqrt(2),\n                                    };\n                                    continue;\n                                }\n                            }\n                            docDefinition.pageSize = pageSize;\n                            if (typeof cordova !== 'undefined' && cordova !== null) {\n                                createPdf(docDefinition).getBuffer((buffer) => {\n                                    var binaryArray, cordova, promise, utf8;\n                                    utf8 = new Uint8Array(buffer);\n                                    binaryArray = utf8.buffer;\n                                    cordova = this.get('cordova');\n                                    promise = cordova.saveFile(binaryArray, company, 'pdf');\n                                    return promise.then(function (url) {\n                                        return cordova.openFile(url, 'application/pdf');\n                                    });\n                                });\n                            } else {\n                                createPdf(docDefinition).download(company + '.pdf');\n                            }\n                            this.set('showLoader', false);\n                            return this.set('showEmailModal', false);\n                        });\n                    });\n                },\n            );\n        },\n        export: function (type) {\n            this.set('showEmailModal', true);\n            return this.set('exportInitType', type);\n        },\n        export_share: function () {\n            var params, promise;\n            params = {\n                limit: 'all',\n            };\n            if (this.get('settings.filters')) {\n                this.get('settings.filters').forEach(function (filter) {\n                    if (filter.get('value') && filter.get('field') !== 'status') {\n                        return (params[filter.get('field')] = filter.get('value'));\n                    }\n                });\n            }\n            if (this.get('settings.sortByColumn')) {\n                params.order = this.get('settings.sortByColumn');\n            }\n            this.set('showShareModal', true);\n            promise = this.get('Collector').ttapi({\n                url: 'share/link',\n                method: 'post',\n                data: {\n                    params: params,\n                    values: {\n                        form: this.get('form'),\n                        lang: this.get('intl.primaryLocale'),\n                    },\n                },\n            });\n            return promise.then((back) => {\n                return this.set(\n                    'shareUrl',\n                    this.get('Collector').ttapi_url() + '/share?k=' + back.link,\n                );\n            });\n        },\n        rowAction: function (row) {\n            return this.sendAction('rowAction', row);\n        },\n        getImageUri: function (value) {\n            var canvas, ctx, d, img;\n            d = new $.Deferred();\n            canvas = document.createElement('canvas');\n            ctx = canvas.getContext('2d');\n            img = new Image();\n            img.onload = function () {\n                var dataUrl, formattedData;\n                ctx.drawImage(img, 0, 0);\n                dataUrl = canvas.toDataUrl('image/png');\n                formattedData = dataURL.replace(/^data:image\\/(png|jpg);base64,/, '');\n                return d.resolve(formattedData);\n            };\n            img.src = value.thumb;\n            return d;\n        },\n        openGpsMap: function () {\n            var promise, self;\n            self = this;\n            if (!this.get('showGpsMap')) {\n                promise = self.setMapMarkers();\n                return promise.then(() => {\n                    return self.set('showGpsMap', true);\n                });\n            } else {\n                return self.set('showGpsMap', false);\n            }\n        },\n        showRemovedRows: function () {\n            this.set('page', 1);\n            if (this.get('settings.showStatus') === 'removed') {\n                return this.set('settings.showStatus', void 0);\n            } else {\n                return this.set('settings.showStatus', 'removed');\n            }\n        },\n        showLockedRows: function () {\n            this.set('page', 1);\n            if (this.get('settings.showStatus') === 'locked') {\n                return this.set('settings.showStatus', void 0);\n            } else {\n                return this.set('settings.showStatus', 'locked');\n            }\n        },\n        showNormalRows: function () {\n            this.set('page', 1);\n            return this.set('settings.showStatus', 'normal');\n        },\n        showEmailDialog: function () {\n            var form;\n            //@sendAction 'bubbleTransition', \"users.edit\", @get 'session.currentUser.id'\n            //return\n            form = 'general.' + this.get('form');\n            this.set('includeApprovalLink', false);\n            if (this.get('showApprovalLinkSelection')) {\n                this.set('includeApprovalLink', true);\n            }\n            this.set('emailReportModalText', false);\n            this.set('emailModalTitle', this.get('intl').t('general.send_as_email'));\n            if (this.get('showApprovalLinkSelection')) {\n                this.set(\n                    'emailContent',\n                    this.get('intl').t('general.email_content_start') +\n                        ' ' +\n                        this.get('intl').t(form) +\n                        ' ' +\n                        this.get('intl').t('general.email_content_end', {\n                            sender:\n                                this.get('session.currentUser.firstname') +\n                                ' ' +\n                                this.get('session.currentUser.lastname'),\n                        }),\n                );\n            } else {\n                this.set('emailContent', '');\n            }\n            this.set(\n                'emailTitle',\n                this.get('intl').t('menu.' + pluralize(this.get('form')).camelize()) +\n                    '-' +\n                    this.get('intl').t('general.report'),\n            );\n            // get last sent email-adress for this user\n            if (this.get('localStorageWrapper').getUserSetting('last_sent_email_address')) {\n                this.set(\n                    'address',\n                    this.get('localStorageWrapper').getUserSetting('last_sent_email_address')[0],\n                );\n            } else {\n                this.set('address', this.get('session.currentUser.email'));\n            }\n            this.set('showEmailModal', true);\n            return this.set('exportInitType', 'email');\n        },\n        sendEmail: function (to, title, content, params) {\n            var filters, filtersString;\n            Ember.get(this, 'analytics').trackEvent({\n                category: this.form + ' report actions',\n                action: 'Send email',\n                label: 'General-report',\n            });\n            filters = this.getPdfFilters();\n            filtersString = '';\n            filters.forEach(function (filter) {\n                return (filtersString += filter[0] + filter[1] + ' ');\n            });\n            this.set('showLoader', true);\n            return this.getPdfAttachmentForEmail(this.get('allPagesSelected'), params).then(\n                (pdf) => {\n                    var form, form_name, promise, rowids;\n                    if (Ember.typeOf(pdf) === 'object') {\n                        rowids = pdf.rowids;\n                        pdf = pdf.pdf;\n                    } else {\n                        rowids = this.get('checked').map((item) => {\n                            return item.get('id');\n                        });\n                    }\n                    if (Ember.get(params, 'approvalLink')) {\n                        this._addHistoryForSentRows(to, this.get('form'), rowids);\n                        form_name = this.get('intl')\n                            .t('form.' + this.get('form'))\n                            .toString();\n                    }\n                    form = pluralize(this.get('form')).camelize();\n                    //self.$('.modal').modal('hide')\n                    promise = this.Collector.ttapi({\n                        url: 'sendReportAsEmail',\n                        data: {\n                            to_address: to,\n                            email: pdf,\n                            filters: filtersString,\n                            content: content,\n                            form: this.get('form'),\n                            form_name: form_name,\n                            rowids: rowids,\n                            lang: this.get('intl.primaryLocale'),\n                            includeApproval: Ember.get(params, 'approvalLink'),\n                            header: title,\n                            type: Ember.get(params, 'type'),\n                            dontAttachImages: Ember.get(params, 'imgLocation') === 'hideImages',\n                        },\n                        method: 'post',\n                    });\n                    promise.then(() => {\n                        this.set('emailSent', true);\n                        this.set('showLoader', false);\n                        return this.get('localStorageWrapper').setUserSetting(\n                            'last_sent_email_address',\n                            to,\n                        );\n                    });\n                    return promise.catch(() => {\n                        this.set('showLoader', false);\n                        return this.set('emailError', true);\n                    });\n                },\n            );\n        },\n        removeModal: function () {\n            this.set('emailSent', false);\n            if ($('.modal', this.element)) {\n                this.set('showEmailModal', false);\n                return this.set('showShareModal', false);\n            }\n        },\n        bubbleTransition: function (to, params) {\n            return this.sendAction('bubbleTransition', to, params);\n        },\n        shareInputFocus: function () {\n            return $('.share-input', this.element).select();\n        },\n        copy_success: function () {\n            return this.get('notifications').success(this.get('intl').t('general.text_copied'), {\n                autoClear: true,\n            });\n        },\n        copy_error: function () {\n            return this.get('notifications').error(\n                this.get('intl').t('general.error_copying_text'),\n                {\n                    autoClear: false,\n                },\n            );\n        },\n        lockRows: function (act) {\n            var form, form_plural, visibleRowIds;\n            if (Em.isEmpty(this.get('checked'))) {\n                return;\n            }\n            if (!this.get('Collector').testNeeds(['userlevel=5'])) {\n                return;\n            }\n            form = this.get('form');\n            form_plural = pluralize(this.get('form')).camelize();\n            this.analytics.trackEvent({\n                category: form + ' report more actions',\n                action: act + ' rows',\n                label: 'General-report',\n            });\n            if (this.get('allPagesSelected')) {\n                visibleRowIds = this.get('checked').map(function (row) {\n                    return row.get('id');\n                });\n                this.set('changeStatusForAllPagesParams', {\n                    visibleRowIds: visibleRowIds,\n                    requestParams: this._getParamsForFetchingRows(['order']),\n                    form: form,\n                    action: act,\n                    rowCount: this.get('content.meta.count'),\n                });\n                this.set('showChangeStatusForAllPages', true);\n            }\n            this.get('checked').forEach((row) => {\n                var data;\n                data = {};\n                if (act === 'lock') {\n                    data[form] = {\n                        locked: true,\n                    };\n                }\n                if (act === 'unlock') {\n                    data[form] = {\n                        locked: false,\n                    };\n                }\n                return this.get('capi')\n                    .request('/' + form_plural + '/' + row.get('id') + '?validation=off', {\n                        dataType: 'json',\n                        type: 'PUT',\n                        data: JSON.stringify(data),\n                    })\n                    .then((data) => {\n                        // don't need to save row again, just reload it and it will be updated\n                        return row.reload();\n                    });\n            });\n            return this.set('checked', Em.A([]));\n        },\n        toggleInlineEdit: function () {\n            var promises, unsaved;\n            if (this.get('inlineEdit')) {\n                Ember.get(this, 'analytics').trackEvent({\n                    category: this.form + ' report inline edit',\n                    action: 'disable',\n                    label: 'General-report',\n                });\n                promises = [];\n                unsaved = [];\n                this.get('content').forEach(function (row) {\n                    if (\n                        !row.get('isValid') ||\n                        row.get('isError') ||\n                        row.get('hasDirtyAttributes')\n                    ) {\n                        return unsaved.push(row);\n                    }\n                });\n                if (unsaved.length > 0) {\n                    return this.get('dialogs')\n                        .confirm(this.get('intl').t('report.confirm_unsaved'))\n                        .then((con) => {\n                            if (!con) {\n                            } else {\n                                unsaved.forEach(function (row) {\n                                    if (\n                                        !row.get('isValid') ||\n                                        row.get('isError') ||\n                                        row.get('hasDirtyAttributes')\n                                    ) {\n                                        row.rollbackAttributes();\n                                        return promises.push(row.reload());\n                                    }\n                                });\n                                return Ember.RSVP.Promise.all(promises).then(() => {\n                                    this.set('errors', Ember.A([]));\n                                    this.toggleProperty('inlineEdit');\n                                    this.set('timeout', true);\n                                    return Em.run.later(\n                                        this,\n                                        function () {\n                                            return this.set('timeout', false);\n                                        },\n                                        2000,\n                                    );\n                                });\n                            }\n                        });\n                } else {\n                    return Ember.RSVP.Promise.all(promises).then(() => {\n                        // add new rows to content so that exiting of edit-mode doesn't hide those new rows\n                        if (this.get('addRows').length > 0) {\n                            this.set(\n                                'content',\n                                this.get('addRows').concat(this.get('content').toArray()),\n                            );\n                        }\n                        this.set('errors', Ember.A([]));\n                        this.toggleProperty('inlineEdit');\n                        this.set('timeout', true);\n                        return Em.run.later(\n                            this,\n                            function () {\n                                return this.set('timeout', false);\n                            },\n                            2000,\n                        );\n                    });\n                }\n            } else {\n                Ember.get(this, 'analytics').trackEvent({\n                    category: this.form + ' report inline edit',\n                    action: 'enable',\n                    label: 'General-report',\n                });\n                this.toggleProperty('inlineEdit');\n                this.set('addRows', Ember.A([]));\n                this.set('timeout', true);\n                return Em.run.later(\n                    this,\n                    function () {\n                        return this.set('timeout', false);\n                    },\n                    2000,\n                );\n            }\n        },\n        saveRows: function () {\n            var allRows, errors, last_promise, thereWereChangedRows;\n            Ember.get(this, 'analytics').trackEvent({\n                category: this.form + ' report inline edit',\n                action: 'save rows',\n                label: 'General-report',\n            });\n            errors = Ember.A([]);\n            thereWereChangedRows = false;\n            last_promise = new Ember.RSVP.Promise((resolve) => {\n                return resolve();\n            });\n            allRows = this.get('addRows').concat(this.get('content').toArray());\n            allRows.forEach((row, index) => {\n                if (!row.get('hasDirtyAttributes')) {\n                    return;\n                }\n                if (!thereWereChangedRows) {\n                    thereWereChangedRows = true;\n                }\n                ++index;\n                return (last_promise = new Ember.RSVP.Promise((resolve) => {\n                    return last_promise.then(() => {\n                        return row.validate().then(() => {\n                            return this.save_record_and_catch_errors(index, row, errors, resolve);\n                        });\n                    });\n                }));\n            });\n            last_promise.then(() => {\n                if (thereWereChangedRows && errors.length === 0) {\n                    this.notifyPropertyChange('sumRow');\n                    return this.get('notifications').success(this.get('intl').t('general.saved'), {\n                        autoClear: true,\n                    });\n                } else {\n                    return this.get('notifications').warning(\n                        this.get('intl').t('general.no_saved_rows'),\n                        {\n                            autoClear: true,\n                        },\n                    );\n                }\n            });\n            return this.set('errors', errors);\n        },\n        copyRow: function (row) {\n            var c, new_record;\n            c = this.get('Collector');\n            new_record = c.copyRecord(row);\n            Ember.set(new_record, 'row_info', {\n                privilege_edit: true,\n                privilege_remove: true, // fake some privileges to enable editing and removing of new row\n            });\n            return this.get('addRows').unshiftObject(new_record);\n        },\n        deactivateTemplate: function () {\n            var _currentTemplate, key;\n            _currentTemplate =\n                this.get('content.firstObject.constructor.modelName') + '_currentTemplate';\n            if (this.get('localStorageWrapper').getUserSetting(_currentTemplate).columns) {\n                this.get('localStorageWrapper').removeUserSetting(_currentTemplate);\n            }\n            if (this.get('localStorageKey')) {\n                key = this.get('localStorageKey') + '_defaultColumns';\n            } else if (this.get('content.firstObject.constructor.modelName')) {\n                key = this.get('content.firstObject.constructor.modelName') + '_defaultColumns';\n            }\n            if (key) {\n                this.get('localStorageWrapper').removeUserSetting(key);\n            }\n            return this.set('currentTemplate', null);\n        },\n    },\n    save_record_and_catch_errors: function (index, row, errors, resolve) {\n        var promise;\n        if (row.get('isValid')) {\n            promise = this.save_record(row);\n            promise.then(() => {\n                return resolve();\n            });\n            return promise.catch((e) => {\n                var error;\n                //                row.rollbackAttributes()\n                if (e.errors && e.errors[0]) {\n                    if (e.errors[0].error_msg) {\n                        error = e.errors[0].error_msg;\n                    } else if (e.errors[0].error) {\n                        error = e.errors[0].error;\n                    }\n                } else if (e.payload) {\n                    error = e.payload.error_msg;\n                } else {\n                    error = 'unknown';\n                }\n                errors.pushObject({\n                    index: index,\n                    row: row.get('id'),\n                    error: error,\n                });\n                return resolve();\n            });\n        } else {\n            return errors.pushObject({\n                index: index,\n                row: row.get('id'),\n                error: row.get('errors.messages.firstObject'),\n            });\n        }\n    },\n    showQrCodes: function (codes) {\n        this.set('qrCodes', codes);\n        return this.set('showQrModal', true);\n    },\n    //empty checked array every time component is used\n    emptyChecked: function () {\n        return this.set('checked', Em.A([]));\n    }.observes('content'),\n});\n\nexport default GeneralReportComponent;\n","export default Ember.HTMLBars.template({\"id\":\"AWo5mOYN\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\",\\\"sum\\\",\\\"date\\\",\\\"row\\\",\\\"row\\\",\\\"row\\\",\\\"column\\\",\\\"column\\\",\\\"error\\\",\\\"dd\\\",\\\"ddm\\\",\\\"ownExport\\\",\\\"dd\\\",\\\"col\\\",\\\"index\\\",\\\"col\\\",\\\"dd\\\",\\\"ddm\\\",\\\"type\\\",\\\"dd\\\",\\\"ddm\\\",\\\"rowAction\\\",\\\"type\\\"],\\\"statements\\\":[[5,\\\"dump-dev\\\",[],[[\\\"@text\\\"],[\\\"OLD general-report\\\"]]],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"fullScreen\\\"]],\\\"report-main-zoomed\\\"],null],\\\" row report-main-content\\\"]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-right report-button-row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"groupBy\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"settings\\\",\\\"rowSettings\\\",\\\"hideCheckbox\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-left report-more\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"form\\\"]],\\\"-more-report-action\\\"],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"checked\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"strong\\\",true],[8],[1,[24,[\\\"checked\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.items_checked\\\"],null],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showDefaultChangeStatus\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[24,[\\\"defaultChangeStatus\\\",\\\"btn_class\\\"]]]]],[3,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\",[24,[\\\"defaultChangeStatus\\\",\\\"action\\\"]]]],[8],[1,[24,[\\\"defaultChangeStatus\\\",\\\"text\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[5,\\\"bs-dropdown\\\",[[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"form\\\"]],\\\"-more-report-action\\\"],null]]],[[\\\"@class\\\"],[\\\"report-more pull-left\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[6,[23,20,[\\\"button\\\"]],[],[[\\\"@class\\\"],[\\\"btn-secondary\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"  \\\"],[1,[28,\\\"t\\\",[\\\"report.more_button\\\"],null],false],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                            \\\"],[6,[23,20,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"moreLinksClass\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,21,[\\\"item\\\"]],[[12,\\\"class\\\",\\\"report-notchecked\\\"]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                                        \\\"],[7,\\\"a\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.nothing_checked\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[9],[0,\\\"\\\\n                                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"canChangeStatus\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,0,[\\\"statusTypes\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[6,[23,21,[\\\"item\\\"]],[],[[\\\"@class\\\"],[[29,[[23,0,[\\\"moreLinksClass\\\"]]]]]],{\\\"statements\\\":[[0,\\\"\\\\n                                            \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\",[23,23,[\\\"id\\\"]]]],[8],[1,[23,23,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[23]},null],[0,\\\"                                    \\\"],[6,[23,21,[\\\"divider\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"canLock\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,21,[\\\"item\\\"]],[],[[\\\"@class\\\"],[[23,0,[\\\"moreLinksClass\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"lockRows\\\",\\\"unlock\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.unlock_selected_rows\\\"],null],false],[9],[0,\\\"\\\\n                                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                    \\\"],[6,[23,21,[\\\"item\\\"]],[],[[\\\"@class\\\"],[[23,0,[\\\"moreLinksClass\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"lockRows\\\",\\\"lock\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.lock_selected_rows\\\"],null],false],[9],[0,\\\"\\\\n                                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"settings\\\",\\\"rowActions\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,0,[\\\"settings\\\",\\\"rowActions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[6,[23,21,[\\\"item\\\"]],[[12,\\\"class\\\",[23,0,[\\\"moreLinksClass\\\"]]]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                                            \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"action\\\",[23,22,[\\\"action\\\"]]]],[8],[1,[28,\\\"t\\\",[[23,22,[\\\"text\\\"]]],null],false],[9],[0,\\\"\\\\n                                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[22]},null],[0,\\\"                                    \\\"],[6,[23,21,[\\\"divider\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showMassedit\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"checked\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[6,[23,21,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                                            \\\"],[6,[23,21,[\\\"linkTo\\\"]],[],[[\\\"@route\\\",\\\"@models\\\"],[\\\"massedit\\\",[28,\\\"array\\\",[[23,0,[\\\"form\\\"]],[23,0,[\\\"selectedRows\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                                                \\\"],[1,[28,\\\"t\\\",[\\\"report.massedit\\\"],null],false],[0,\\\"\\\\n                                            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        \\\"],[6,[23,21,[\\\"item\\\"]],[],[[\\\"@class\\\"],[\\\"disabled\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                                            \\\"],[7,\\\"a\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.massedit\\\"],null],false],[9],[0,\\\"\\\\n                                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"@remove\\\"],null]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"settings\\\",\\\"showStatus\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[6,[23,21,[\\\"item\\\"]],[],[[\\\"@class\\\"],[[23,0,[\\\"moreLinksClass\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                                            \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"restoreChecked\\\"]],[8],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.restore_rows\\\"],null],false],[9],[0,\\\"\\\\n                                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        \\\"],[6,[23,21,[\\\"item\\\"]],[],[[\\\"@class\\\"],[[23,0,[\\\"moreLinksClass\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                                            \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"deleteChecked\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.delete_rows\\\"],null],false],[9],[0,\\\"\\\\n                                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"settings\\\",\\\"rowSettings\\\",\\\"hideEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[5,\\\"qr-code-generator\\\",[],[[\\\"@style\\\",\\\"@rows\\\",\\\"@editRoute\\\"],[\\\"li\\\",[23,0,[\\\"checked\\\"]],[23,0,[\\\"settings\\\",\\\"rowSettings\\\",\\\"editRoute\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"]],\\\"parameters\\\":[21]}],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[20]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"inlineEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more pull-left\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"form\\\"]],\\\"-inline-edit-report-action\\\"],null]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveRows\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general_report.inline_edit.save\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"gui\\\",\\\"isBelowMd\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"report-order\\\",null,[[\\\"order\\\",\\\"defaultOrder\\\",\\\"showDefaultOrder\\\",\\\"onRemove\\\",\\\"form\\\"],[[24,[\\\"settings\\\",\\\"sortByColumn\\\"]],[24,[\\\"settings\\\",\\\"defaultOrder\\\"]],[24,[\\\"manuallyOrdered\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"removeFieldFromOrder\\\"],null],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more pull-left hidden-xs hidden-sm hidden-md\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\",\\\"position\\\",\\\"queryLimitFull\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]],\\\"top\\\",[24,[\\\"queryLimitFull\\\"]]]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"edit-mode-container hidden-xs hidden-sm\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"form\\\"]],\\\"-inline-edit-report-action\\\"],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"timeout\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"theme\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[[24,[\\\"inlineEdit\\\"]],\\\"light\\\",[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general_report.inline_edit.toggle\\\"],null],\\\"\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"theme\\\",\\\"onToggle\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[[24,[\\\"inlineEdit\\\"]],\\\"light\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggleInlineEdit\\\"],null],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general_report.inline_edit.toggle\\\"],null],\\\"\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"status\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"status-container\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"form\\\"]],\\\"-status-report-action\\\"],null]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"hidden-xs\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.status\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n\\\\n                                \\\"],[5,\\\"bs-dropdown\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                                    \\\"],[6,[23,17,[\\\"button\\\"]],[],[[\\\"@class\\\"],[\\\"status-toggle btn-secondary\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                                        \\\"],[1,[23,0,[\\\"statusName\\\"]],false],[0,\\\"\\\\n                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-down\\\"],[8],[9],[0,\\\"\\\\n                                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                    \\\"],[6,[23,17,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"status-menu\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                                        \\\"],[6,[23,18,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                                            \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"status\\\",\\\"all\\\",[24,[\\\"filter\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"status.all\\\"],null],false],[9],[0,\\\"\\\\n                                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"selectStatus\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[6,[23,18,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                                                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"status\\\",[23,19,[\\\"id\\\"]],[24,[\\\"filter\\\"]]]],[8],[1,[23,19,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                                            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[19]},null],[0,\\\"                                    \\\"]],\\\"parameters\\\":[18]}],[0,\\\"\\\\n                                \\\"]],\\\"parameters\\\":[17]}],[0,\\\"\\\\n\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"form\\\"]],\\\"-refresh-report-action\\\"],null]],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.refreshReport\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"refreshReport\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-refresh\\\"],[8],[9],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"settings\\\",\\\"hideExports\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showPdfExport\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"form\\\"]],\\\"-export-pdf-report-action\\\"],null]],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PDF-2Filled\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"settings\\\",\\\"hideColumnSorting\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more display-menu\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"form\\\"]],\\\"-column-selector-report-action\\\"],null]],[8],[0,\\\"\\\\n                                \\\"],[5,\\\"basic-dropdown\\\",[],[[\\\"@verticalPosition\\\",\\\"@horizontalPosition\\\"],[\\\"below\\\",\\\"right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                                    \\\"],[6,[23,13,[\\\"Trigger\\\"]],[[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.columnSort\\\"],null]],[12,\\\"class\\\",\\\"btn btn-secondary\\\"]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-DragReorder\\\"],[8],[9],[0,\\\"\\\\n                                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                    \\\"],[6,[23,13,[\\\"Content\\\"]],[[12,\\\"class\\\",\\\"column-selector-box\\\"]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                                            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"column-selector-dropdown\\\"],[8],[0,\\\"\\\\n                                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.limit\\\"],null],false],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-group\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"unless\\\",[[24,[\\\"limit\\\"]],\\\"selected-limit\\\"],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"is-almost-equal\\\",[[24,[\\\"limit\\\"]],\\\"25\\\",true],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",25]],[8],[1,[24,[\\\"translations\\\",\\\"twentyfive\\\"]],false],[9],[0,\\\" |\\\\n                                                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"if\\\",[[28,\\\"is-almost-equal\\\",[[24,[\\\"limit\\\"]],\\\"50\\\",true],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",50]],[8],[1,[24,[\\\"translations\\\",\\\"fifty\\\"]],false],[9],[0,\\\" |\\\\n                                                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"if\\\",[[28,\\\"is-almost-equal\\\",[[24,[\\\"limit\\\"]],\\\"100\\\",true],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",100]],[8],[1,[24,[\\\"translations\\\",\\\"hundred\\\"]],false],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"li\\\",true],[10,\\\"role\\\",\\\"separator\\\"],[10,\\\"class\\\",\\\"divider\\\"],[8],[9],[0,\\\"\\\\n                                                \\\"],[1,[28,\\\"report-template-selector\\\",null,[[\\\"form\\\",\\\"columns\\\",\\\"settings\\\",\\\"currentTemplate\\\",\\\"deactivateTemplate\\\"],[[24,[\\\"form\\\"]],[24,[\\\"defaultColumns\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"currentTemplate\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"deactivateTemplate\\\"],null]]]],false],[0,\\\"\\\\n                                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.hidden\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"extraColumns\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                                                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[12,\\\"draggable\\\",\\\"false\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.columns.click_to_show\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"showColumn\\\",[23,16,[]]]],[8],[1,[23,16,[\\\"name\\\"]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[16]},null],[0,\\\"                                                \\\"],[7,\\\"li\\\",true],[10,\\\"role\\\",\\\"separator\\\"],[10,\\\"class\\\",\\\"divider\\\"],[8],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.shown\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"defaultColumns\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\",\\\"tagName\\\",\\\"data-field\\\",\\\"class\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"columnDropped\\\",[23,15,[]]],null],\\\"li\\\",[23,14,[]],\\\"column-selector-dropzone\\\"]],{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[28,\\\"concat\\\",[\\\"\\\",[23,15,[]]],null],\\\"column-selector-draggable-item\\\"]],{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"a\\\",false],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.columns.click_to_hide\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"hideColumn\\\",[23,14,[]]]],[8],[1,[23,14,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                                                            \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"sort-link pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moveCol\\\",[23,14,[]],-1]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Up2Filled\\\"],[8],[9],[9],[0,\\\"\\\\n                                                            \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"sort-link pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moveCol\\\",[23,14,[]],1]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Down2Filled\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[14,15]},null],[0,\\\"                                            \\\"],[9],[0,\\\"\\\\n                                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"]],\\\"parameters\\\":[13]}],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"settings\\\",\\\"hideExports\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"export_file\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"t\\\",[\\\"file.exported.to\\\"],null],false],[0,\\\" \\\"],[1,[22,\\\"export_file\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[5,\\\"bs-dropdown\\\",[[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"form\\\"]],\\\"-export-more-report-action\\\"],null]]],[[\\\"@class\\\"],[\\\"report-more report-actions\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[6,[23,10,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                            \\\"],[6,[23,10,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showPdfExport\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,11,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export\\\",\\\"export_pdf\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showPdfExportFull\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,11,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export\\\",\\\"export_pdf_full\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf_full\\\"],null],false],[9]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"isMobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,11,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_csv\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_csv\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                    \\\"],[6,[23,11,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export\\\",\\\"export_excel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_excel\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showShareLink\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,11,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_share\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.share\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"ownExports\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,11,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"ownExportAction\\\",[23,12,[\\\"action\\\"]]]],[8],[1,[23,12,[\\\"text\\\"]],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[12]},null],[4,\\\"unless\\\",[[24,[\\\"hideRemoveControls\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"settings\\\",\\\"showStatus\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[6,[23,11,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showRemovedRows\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.show_normal\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        \\\"],[6,[23,11,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showRemovedRows\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.show_removed\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"settings\\\",\\\"showStatus\\\"]],\\\"locked\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,11,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"showLockedRows\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.hide_locked\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                    \\\"],[6,[23,11,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"showNormalRows\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.show_unlocked\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"settings\\\",\\\"showStatus\\\"]],\\\"normal\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,11,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"showLockedRows\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.hide_locked\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                    \\\"],[6,[23,11,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"showLockedRows\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.show_locked\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,11,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"showLockedRows\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.show_locked\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                    \\\"],[6,[23,11,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"showNormalRows\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.show_unlocked\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[4,\\\"unless\\\",[[24,[\\\"hideEmailSend\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,11,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showEmailDialog\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.send_email\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"]],\\\"parameters\\\":[11]}],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[10]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showGpsButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"form\\\"]],\\\"-gps-report-action\\\"],null]],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.gps\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"openGpsMap\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Globe\\\"],[8],[9],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"form\\\"]],\\\"-fullscreen-report-action\\\"],null]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"fullscreenmode\\\"]],\\\"custom\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.fullScreen\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"fullScreen\\\"]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"customFullScreen\\\"]],\\\"move move-Cross\\\",\\\"move move-FitWidth report-fullscreen\\\"],null]],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.fullScreen\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"fullScreen\\\"]],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"fullScreen\\\"]],\\\"move move-Cross\\\",\\\"move move-FitWidth report-fullscreen\\\"],null]],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"gui\\\",\\\"isBelowMd\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"report-order\\\",null,[[\\\"order\\\",\\\"defaultOrder\\\",\\\"showDefaultOrder\\\",\\\"onRemove\\\",\\\"form\\\"],[[24,[\\\"settings\\\",\\\"sortByColumn\\\"]],[24,[\\\"settings\\\",\\\"defaultOrder\\\"]],[24,[\\\"manuallyOrdered\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"removeFieldFromOrder\\\"],null],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showGpsMap\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"gps-location-map\\\",null,[[\\\"zoomLevel\\\",\\\"wtmarkers\\\",\\\"projectmarkers\\\"],[15,[24,[\\\"wtmarkers\\\"]],[24,[\\\"projectmarkers\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"settings\\\",\\\"showStatus\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.report.removed_view\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"settings\\\",\\\"showStatus\\\"]],\\\"locked\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.report.locked_view\\\"],null],false],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"outer \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"settings\\\",\\\"showStatus\\\"]],\\\"removed\\\"],null],\\\"general-row-removed\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[24,[\\\"errors\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger alert-dismissable\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"#\\\"],[10,\\\"class\\\",\\\"close\\\"],[10,\\\"data-dismiss\\\",\\\"alert\\\"],[11,\\\"aria-label\\\",[28,\\\"t\\\",[\\\"report.close_rows\\\"],null]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general_report.inline_edit.error.title\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,9,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general_report.inline_edit.error.row\\\"],[[\\\"row\\\",\\\"error\\\"],[[23,9,[\\\"index\\\"]],[23,9,[\\\"error\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[9]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"content\\\",\\\"meta\\\",\\\"count\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"report-placeholder\\\",null,[[\\\"customHeader\\\",\\\"searchIcon\\\",\\\"searchInfoText\\\"],[[28,\\\"t\\\",[\\\"report.no_rows\\\"],null],true,[28,\\\"t\\\",[\\\"report.add_filters\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive table-hover general-report\\\"],[8],[0,\\\"\\\\n\\\\n                            \\\"],[7,\\\"thead\\\",true],[10,\\\"style\\\",\\\"background-color: #fff\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n                            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"row-status-cell\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"settings\\\",\\\"rowSettings\\\",\\\"hideCheckbox\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"report-checkbox\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"report-row-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"checkAll\\\"]],[8],[1,[28,\\\"standard-icon\\\",[[24,[\\\"checkClass\\\"]]],null],false],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"inlineEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"report-checkbox\\\"],[8],[9],[0,\\\"\\\\n                                \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"defaultColumns\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,8,[\\\"orderable\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"th\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"sortByColumn\\\",[23,8,[\\\"ext\\\"]],[23,8,[\\\"obj\\\"]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"table-header-wrap\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"table-header-name\\\"],[8],[1,[23,8,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"groupBy\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                                \\\"],[1,[28,\\\"sort-icon\\\",[[24,[\\\"settings\\\",\\\"sortByColumn\\\"]],[23,8,[\\\"ext\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"table-header-wrap\\\"],[8],[0,\\\"\\\\n                                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"table-header-name\\\"],[8],[1,[23,8,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"inlineEdit\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"extraColumns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"table-header-wrap\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"table-header-name\\\"],[8],[1,[23,7,[\\\"name\\\"]],false],[9],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\\n                            \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"sortByDates\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"inlineEdit\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"addRows\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"inline-edit-row\\\",null,[[\\\"form\\\",\\\"columns\\\",\\\"extraColumns\\\",\\\"record\\\",\\\"copyRow\\\",\\\"rowSettings\\\"],[[24,[\\\"form\\\"]],[24,[\\\"defaultColumns\\\"]],[24,[\\\"extraColumns\\\"]],[23,6,[]],[28,\\\"action\\\",[[23,0,[]],\\\"copyRow\\\"],null],[24,[\\\"settings\\\",\\\"rowSettings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"content\\\"]]],[[\\\"key\\\"],[\\\"id\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[23,5,[\\\"isSaving\\\"]],[23,5,[\\\"isReloading\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"td\\\",true],[8],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"td\\\",true],[8],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"td\\\",true],[8],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"general.saving\\\"],null],false],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"inlineEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"inline-edit-row\\\",null,[[\\\"form\\\",\\\"columns\\\",\\\"extraColumns\\\",\\\"record\\\",\\\"saveRow\\\",\\\"copyRow\\\",\\\"rowSettings\\\"],[[24,[\\\"form\\\"]],[24,[\\\"defaultColumns\\\"]],[24,[\\\"extraColumns\\\"]],[23,5,[]],\\\"saveRow\\\",[28,\\\"action\\\",[[23,0,[]],\\\"copyRow\\\"],null],[24,[\\\"settings\\\",\\\"rowSettings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"general-report-row\\\",null,[[\\\"bubbleTransition\\\",\\\"bubbleAction\\\",\\\"model\\\",\\\"form\\\",\\\"columns\\\",\\\"allChecked\\\",\\\"settings\\\",\\\"rowStatus\\\",\\\"rowAction\\\",\\\"formatter\\\",\\\"groupBy\\\"],[\\\"bubbleTransition\\\",\\\"bubbleAction\\\",[23,5,[]],[24,[\\\"form\\\"]],[24,[\\\"defaultColumns\\\"]],[24,[\\\"checked\\\"]],[24,[\\\"settings\\\",\\\"rowSettings\\\"]],[24,[\\\"settings\\\",\\\"showStatus\\\"]],[24,[\\\"rowAction\\\"]],[24,[\\\"formatter\\\"]],[24,[\\\"groupBy\\\"]]]]],false],[0,\\\"\\\\n                                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[5]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"sortByDates\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"dates\\\"]]],[[\\\"key\\\"],[\\\"date\\\"]],{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"h5\\\",true],[10,\\\"class\\\",\\\"text-report-muted report-table-date\\\"],[8],[1,[28,\\\"moment-format\\\",[[23,3,[\\\"date\\\"]],\\\"DD MMMM\\\"],null],false],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[\\\"rows\\\"]]],[[\\\"key\\\"],[\\\"id\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,4,[\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                                \\\"],[7,\\\"td\\\",true],[8],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"td\\\",true],[8],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"td\\\",true],[8],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"general.saving\\\"],null],false],[9],[0,\\\"\\\\n                                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                            \\\"],[1,[28,\\\"general-report-row\\\",null,[[\\\"bubbleTransition\\\",\\\"bubbleAction\\\",\\\"form\\\",\\\"model\\\",\\\"columns\\\",\\\"allChecked\\\",\\\"settings\\\",\\\"rowStatus\\\",\\\"formatter\\\",\\\"groupBy\\\"],[\\\"bubbleTransition\\\",\\\"bubbleAction\\\",[24,[\\\"form\\\"]],[23,4,[]],[24,[\\\"defaultColumns\\\"]],[24,[\\\"checked\\\"]],[24,[\\\"settings\\\",\\\"rowSettings\\\"]],[24,[\\\"settings\\\",\\\"showStatus\\\"]],[24,[\\\"formatter\\\"]],[24,[\\\"groupBy\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"tfoot\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"row-status-cell\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sumRow\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"content\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"count\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"b\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.total_rows\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge\\\"],[8],[1,[28,\\\"if\\\",[[24,[\\\"content\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"content\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"count\\\"]]],null],false],[1,[28,\\\"if\\\",[[24,[\\\"queryLimitFull\\\"]],\\\"+\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\",\\\"queryLimitFull\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]],[24,[\\\"queryLimitFull\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showEmailModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"export-modal\\\",null,[[\\\"initType\\\",\\\"sendEmailAction\\\",\\\"exportActions\\\",\\\"showEmailModal\\\",\\\"includeApprovalLink\\\",\\\"statusFieldIsVisible\\\",\\\"form\\\",\\\"extraData\\\",\\\"showApprovalLinkSelection\\\",\\\"count\\\",\\\"emailSent\\\",\\\"loading\\\",\\\"emailError\\\",\\\"showExcelSumCheckbox\\\",\\\"hideSpecialPdf\\\"],[[24,[\\\"exportInitType\\\"]],\\\"sendEmail\\\",\\\"handleExportActions\\\",[24,[\\\"showEmailModal\\\"]],[24,[\\\"includeApprovalLink\\\"]],[24,[\\\"statusFieldIsVisible\\\"]],[24,[\\\"form\\\"]],[24,[\\\"extraData\\\"]],[24,[\\\"showApprovalLinkSelection\\\"]],[24,[\\\"emailSendingCount\\\"]],[24,[\\\"emailSent\\\"]],[24,[\\\"showLoader\\\"]],[24,[\\\"emailError\\\"]],true,true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHidden\\\"],[[23,0,[\\\"showShareModal\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showShareModal\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"modal-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.share_report\\\"],null],false],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"share.text\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"class\\\",\\\"focus-in\\\"],[[24,[\\\"shareUrl\\\"]],\\\"form-control share-input\\\",[28,\\\"action\\\",[[23,0,[]],\\\"shareInputFocus\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"copy-button\\\",null,[[\\\"clipboardText\\\",\\\"success\\\",\\\"error\\\"],[[24,[\\\"shareUrl\\\"]],\\\"copy_success\\\",\\\"copy_error\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"general.copy_to_clipboard\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showFastExporter\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"fastexport.header\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showFastExporter\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"fast-exporter\\\",null,[[\\\"form\\\",\\\"dates\\\",\\\"close\\\"],[[24,[\\\"form\\\"]],[24,[\\\"datesForFastExporter\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showFastExporter\\\"]]],null],false],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showChangeStatusForAllPages\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"change-status\\\",null,[[\\\"close\\\",\\\"params\\\"],[\\\"closeShowChangeStatusForAllPages\\\",[24,[\\\"changeStatusForAllPagesParams\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/general-report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/google-map/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Component;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    mapMarkers: Ember.A([]),\n    didInsertElement: function () {\n        var container, lat, latlng, lng, map, options;\n        container = $('.canvas', this.element)[0];\n        if (this.get('center')) {\n            latlng = this.get('center');\n        } else {\n            //@setMarker @get 'center'\n            lat = 61.084857;\n            lng = 26.087036;\n            latlng = new window.google.maps.LatLng(lat, lng);\n        }\n        options = {\n            center: latlng,\n            zoom: 15,\n        };\n        map = new window.google.maps.Map(container, options);\n        this.set('map', map);\n        this.setMarker(latlng);\n        if (this.get('markers.length') > 0) {\n            return this.setMarkers();\n        }\n    },\n    didUpdateAttrs: function () {\n        if (this.get('markers.length') > 0) {\n            return this.setMarkers();\n        }\n    },\n    setMarker: function (latlng) {\n        if (latlng.accuracy) {\n            this.setAccuracyCircle(latlng);\n        }\n        if (this.get('marker')) {\n            return this.get('marker').setPosition(latlng);\n        } else {\n            return this.set(\n                'marker',\n                new google.maps.Marker({\n                    position: latlng,\n                    map: this.get('map'),\n                    title: this.get('intl').t('gps.your_location'),\n                }),\n            );\n        }\n    },\n    setAccuracyCircle: function (latlng) {\n        if (this.get('accuracyCircle')) {\n            this.get('accuracyCircle').setCenter(latlng);\n            return this.get('accuracyCircle').setRadius(latlng.accuracy);\n        } else {\n            return this.set(\n                'accuracyCircle',\n                new google.maps.Circle({\n                    strokeColor: '#0000ff',\n                    strokeOpacity: 0.8,\n                    strokeWeight: 1,\n                    fillColor: '#0000ff',\n                    fillOpacity: 0.35,\n                    map: this.get('map'),\n                    center: latlng,\n                    radius: latlng.accuracy,\n                }),\n            );\n        }\n    },\n    setMarkers: function () {\n        this.get('mapMarkers').forEach(function (mrk) {\n            return mrk.setMap(null);\n        });\n        return this.get('markers').forEach((marker) => {\n            var circle, mrk;\n            marker.map = this.get('map');\n            mrk = new google.maps.Marker(marker);\n            if (marker.position.accuracy) {\n                circle = new google.maps.Circle({\n                    map: this.get('map'),\n                    radius: marker.position.accuracy,\n                    fillColor: '#AA0000',\n                    fillOpacity: 0.35,\n                    strokeColor: '#AA0000',\n                    strokeOpacity: 0.8,\n                });\n                circle.bindTo('center', mrk, 'position');\n            }\n            return this.get('mapMarkers').pushObject(mrk);\n        });\n    },\n    observeCenter: Ember.observer('center', function () {\n        this.get('map').setCenter(this.get('center'));\n        return this.setMarker(this.get('center'));\n    }),\n    actions: {\n        test: function () {\n            return this.get('map').setCenter({\n                lat: 60,\n                lng: 26,\n            });\n        },\n    },\n});\n\nexport default Component;\n","export default Ember.HTMLBars.template({\"id\":\"If25F988\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"canvas\\\"],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/google-map/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/gps-auto-km/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GpsAutoKmComponent;\n\nimport Ember from 'ember';\n\nGpsAutoKmComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    session: Ember.inject.service(),\n    Google: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    classes: 'form-control add-fields',\n    calcDist: Em.computed('model.project', 'model.user', function () {\n        var userid;\n        //first get user address\n        userid = this.get('session.currentUser.id');\n        if (this.get('model.user.id') && this.get('model.user.id') !== userid) {\n            userid = this.get('model.user.id');\n        }\n        this.get('store')\n            .findRecord('user', userid, {\n                reload: true,\n                include: true,\n            })\n            .then((user) => {\n                var user_address;\n                if (!user.get('address') || !user.get('city')) {\n                    return;\n                }\n                user_address = user.get('address') + ', ' + user.get('city');\n                if (user.get('fin_address')) {\n                    user_address = user.get('fin_address') + ', ' + user.get('fin_city');\n                }\n                return this.calculateProjectDist(user_address);\n            });\n    }),\n    calculateProjectDist: function (user_address) {\n        var projectid;\n        projectid = this.get('model.project.id');\n        if (projectid) {\n            return this.get('store')\n                .findRecord('project', projectid, {\n                    reload: true,\n                })\n                .then((project) => {\n                    var coords, office_dist, project_address, project_dist;\n                    if (!project.get('address') || !project.get('city')) {\n                        this.set('model.km', null);\n                        return;\n                    }\n                    project_address = project.get('address') + ', ' + project.get('city');\n                    coords = this.hasAddressSetting();\n                    office_dist = null;\n                    if (coords) {\n                        office_dist = this.calculateAddressSettingDist(\n                            JSON.parse(coords),\n                            project_address,\n                        );\n                    }\n                    project_dist = this.get('Google').routeDistanceAndTime(\n                        user_address,\n                        project_address,\n                    );\n                    Ember.RSVP.Promise.all([project_dist, office_dist]).then((data) => {\n                        var coordsJson, dist, finaldist, finaltime;\n                        if (Ember.isPresent(data[0]) || Ember.isPresent(data[1])) {\n                            dist = data[0]\n                                ? data[0]\n                                : {\n                                      dist: 2e308,\n                                  };\n                            if (\n                                data[1] &&\n                                data[1].dist &&\n                                parseInt(data[1].dist) < parseInt(dist.dist)\n                            ) {\n                                dist = data[1];\n                            }\n                            finaldist = dist.dist;\n                            finaltime = dist.time;\n                            if (coords) {\n                                coordsJson = JSON.parse(coords);\n                                if (!coordsJson.no_back_forth) {\n                                    finaldist = finaldist * 2;\n                                    finaltime = finaltime * 2;\n                                }\n                            }\n                            this.set('model.km', finaldist);\n                            return this.set('model.traveltime', finaltime);\n                        } else {\n                            this.set('model.km', null);\n                            return this.set('model.traveltime', null);\n                        }\n                    });\n                });\n        }\n    },\n    hasAddressSetting: function () {\n        var coordsString, worktimegroup;\n        worktimegroup =\n            this.get('model.user.worktimegroup.id') ||\n            this.get('session.currentUser.worktimegroup.id');\n        coordsString = this.get('customerSettings').checkSetting('autokm_address');\n        if (worktimegroup) {\n            coordsString = this.get('customerSettings').checkSetting(\n                'autokm_address_' + worktimegroup,\n            );\n        }\n        return coordsString;\n    },\n    calculateAddressSettingDist: function (coords, project_address) {\n        return this.get('Google').routeDistanceAndTime(\n            {\n                lat: coords.latitude,\n                lng: coords.longitude,\n            },\n            project_address,\n        );\n    },\n});\n\nexport default GpsAutoKmComponent;\n","export default Ember.HTMLBars.template({\"id\":\"a6serDS1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"field\\\"]],\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"],[1,[22,\\\"calcDist\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/gps-auto-km/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/gps-icon/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Component;\n\nimport Ember from 'ember';\n\nComponent = Ember.Component.extend({\n    gps: Ember.inject.service(),\n    classNameBindings: ['getClassNames'],\n    getClassNames: Ember.computed('position', function () {\n        if (this.get('position') === 'left') {\n            return 'left-side';\n        }\n    }),\n    toolTipPosition: Ember.computed('position', function () {\n        if (this.get('position') === 'left') {\n            return 'right';\n        } else {\n            return 'left';\n        }\n    }),\n});\n\nexport default Component;\n","export default Ember.HTMLBars.template({\"id\":\"8VDBQ3a8\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"gps\\\",\\\"inUse\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right visible-xs-block\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"tagName\\\",\\\"route\\\"],[\\\"gps-location link\\\",\\\"div\\\",\\\"gpslocation\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"absolute-position move move-GeoFence_2 \\\",[24,[\\\"gps\\\",\\\"iconClass\\\"]]]]],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"header.actions.userGps\\\"],null]],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"gps\\\",\\\"lastError\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"absolute-position move move-Cross display-inline\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/gps-icon/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/group-by-filter/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Component;\n\nimport Ember from 'ember';\n\nComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    fields: Em.computed(function () {\n        return this.get('Collector').fieldArray(this.get('form'));\n    }),\n    chosenFields: Em.A([]),\n    didReceiveAttrs: function () {\n        var chosenFields, unchosenFields, valueArr;\n        valueArr = this.get('value') ? this.get('value').split(',') : [];\n        chosenFields = valueArr.map((val) => {\n            return this.get('fields').findBy('name', val);\n        });\n        this.set('chosenFields', chosenFields);\n        unchosenFields = this.get('fields').filter((field) => {\n            if (field.type === 'databasearray') {\n                return;\n            }\n            return !this.chosenFields.find((f) => {\n                return f.name === field.name;\n            });\n        });\n        return this.set('unchosenFields', unchosenFields);\n    },\n    actions: {\n        toggleModal: function () {\n            return this.toggleProperty('showModal');\n        },\n        addField: function (field) {\n            this.get('unchosenFields').removeObject(field);\n            return this.get('chosenFields').pushObject(field);\n        },\n        removeField: function (field, applyFilters) {\n            this.get('chosenFields').removeObject(field);\n            this.get('unchosenFields').pushObject(field);\n            if (applyFilters) {\n                return this.send('applyFilters');\n            }\n        },\n        applyFilters: function () {\n            if (this.get('chosenFields').length) {\n                this.sendAction(\n                    'change',\n                    this.get('chosenFields').map((field) => {\n                        return field.name;\n                    }),\n                    'groupBy',\n                );\n            } else {\n                this.sendAction('change', null, 'groupBy');\n            }\n            return this.send('toggleModal');\n        },\n    },\n});\n\nexport default Component;\n","export default Ember.HTMLBars.template({\"id\":\"JMHERwW1\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"field\\\",\\\"field\\\"],\\\"statements\\\":[[2,\\\"button class=\\\\\\\"btn btn-block btn-default\\\\\\\" ><b>&Sigma;</b></button\\\"],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter-box\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"filter-box-input link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"chosenFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label-m label-m-info\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[23,3,[\\\"translated_name\\\"]],false],[0,\\\"  \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cancel link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeField\\\",[23,3,[]],true]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label-m label-m-default\\\"],[8],[1,[28,\\\"t\\\",[\\\"filters.group_fields\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"filters.group_fields\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"link-component-container\\\"],[10,\\\"style\\\",\\\"text-align: center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.choose_fields\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group link-component-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"unchosenFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"list-group-item link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addField\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"link-component-name\\\"],[8],[1,[23,2,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.chosen_fields\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group link-component-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"chosenFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"list-group-item link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeField\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge link-comp-badge\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"link-component-name\\\"],[8],[1,[23,1,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[10,\\\"style\\\",\\\"margin: 20px 15px;\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"applyFilters\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/group-by-filter/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\nimport podNames from 'ember-component-css/pod-names';\nimport { tracked } from '@glimmer/tracking';\nexport default class HamburgerMenuComponent extends Component {\n    @service menu;\n    @service intl;\n    @service router;\n    @tracked activeMenu;\n    @service skvReport;\n\n    constructor() {\n        super(...arguments);\n        this.mobileMenu = this.menu.getMenus();\n    }\n\n    get skvReportLink() {\n        return this.skvReport.skvReportLink;\n    }\n\n    get styleNamespace() {\n        return podNames['hamburger-menu'];\n    }\n\n    @action\n    closeMenu() {\n        this.args.closeHamburgerMenu();\n    }\n\n    @action\n    transitionAndClose(route) {\n        // transition to the new route and close the hamburger menu\n        if (route[1]) {\n            this.router.transitionTo(route[0], route[1]);\n        } else {\n            this.router.transitionTo(route[0]);\n        }\n        this.args.closeHamburgerMenu();\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"N+jjJNdt\",\"block\":\"{\\\"symbols\\\":[\\\"menuItem\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross add-modal-cross\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"closeMenu\\\"]]]],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"hamburger-menu-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"mobileMenu\\\",\\\"allItems\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"menu-item-container\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"closeMenu\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[5,\\\"link-to\\\",[],[[\\\"@params\\\",\\\"@class\\\",\\\"@data-anchor\\\"],[[23,1,[\\\"link\\\"]],[29,[\\\"menu-item \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"menu\\\",\\\"active_menu\\\"]],[23,1,[\\\"id\\\"]]],null],\\\"active\\\",\\\"\\\"],null]]],[29,[\\\"hamburger-menu-item-\\\",[23,1,[\\\"id\\\"]]]]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[23,1,[\\\"translated\\\"]],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"project.skv_number\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"menu-item-container\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"closeMenu\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[29,[[23,0,[\\\"skvReportLink\\\"]]]]],[10,\\\"class\\\",\\\"menu-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"menu.skv_web_report\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/hamburger-menu/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { action, set } from '@ember/object';\nimport { htmlSafe } from '@ember/string';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class HelpBubbleIconComponent extends Component {\n    @tracked showTooltip = false;\n    notfoundText = 'No info found';\n\n    get styleNamespace() {\n        return podNames['help-bubble-icon'];\n    }\n\n    get class() {\n        if (this.args.icon) {\n            return (\n                this.args.icon +\n                ' move move-' +\n                this.args.icon.charAt(0).toUpperCase() +\n                this.args.icon.slice(1)\n            );\n        } else if (this.args.vismaIcon) {\n            return this.args.vismaIcon;\n        }\n        return 'info move move-Info';\n    }\n\n    @action\n    async togglePopOver() {\n        if (!this.showTooltip) await this.getInfoText();\n        this.showTooltip = !this.showTooltip;\n    }\n\n    async getInfoText() {\n        const key = `${this.args.key.replace(/\\./g, '-')}-${moment.locale()}`;\n        const fileUrl = `https://cloud-writer-prod.s3.amazonaws.com/${key}.html`;\n        const response = await fetch(fileUrl);\n        if (response.status === 403) return null;\n\n        const html = await response.text();\n        set(this, 'infoText', htmlSafe(html));\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"guNR4QB6\",\"block\":\"{\\\"symbols\\\":[\\\"@side\\\"],\\\"statements\\\":[[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[[23,0,[\\\"class\\\"]]]]],[11,\\\"onclick\\\",[23,0,[\\\"togglePopOver\\\"]]],[8],[0,\\\"\\\\n    \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@popperContainer\\\",\\\"@tooltipClass\\\",\\\"@side\\\",\\\"@isShown\\\",\\\"@event\\\",\\\"@hideOn\\\"],[\\\"body\\\",\\\"help-tooltip\\\",[23,1,[]],[23,0,[\\\"showTooltip\\\"]],\\\"none\\\",\\\"click\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"infoText\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,0,[\\\"infoText\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,0,[\\\"notfoundText\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/help-bubble-icon/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class HorizontalFieldComponent extends Component {\n    get styleNamespace() {\n        return podNames['horizontal-field'];\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"b4or6cDs\",\"block\":\"{\\\"symbols\\\":[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"flex-column \\\",[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 horizontal-field-label\\\"],[8],[1,[23,1,[]],false],[0,\\\" \\\"],[4,\\\"if\\\",[[23,2,[]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"flex-item-50 horizontal-field-input-div form-group \\\",[28,\\\"if\\\",[[23,3,[]],\\\"has-error\\\"],null]]]],[8],[0,\\\"\\\\n        \\\"],[14,4],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/horizontal-field/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/inline-edit-row/cell/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Component;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nComponent = Ember.Component.extend({\n    collector: Ember.inject.service('collector-service'),\n    tagName: 'td',\n    classNameBindings: ['editable:editable-field:uneditable-field'],\n    active: false,\n    editing: Ember.computed.and('editable', 'active'),\n    _class: Ember.computed('field.type', function () {\n        if (Ember.get(this, 'field.type') === 'database' && Ember.get(this, 'usePowerDropdown')) {\n            return '';\n        }\n        if (Ember.get(this, 'field.type') === 'database') {\n            return 'form-control';\n        } else {\n            return 'form-control add-fields';\n        }\n    }),\n    findInput: function () {\n        var element, obj;\n        element = Ember.get(this, 'element');\n        obj = $(element).find('input, select').first();\n        return obj;\n    },\n    click: function (e) {\n        Ember.set(this, 'active', true);\n        return Ember.run.next(this, function () {\n            var input;\n            if (this.get('field.value')) {\n                const modelValue = this.get('model.' + this.get('field.external_type'));\n                if (\n                    (modelValue?.id && modelValue.id !== this.get('field.value')) ||\n                    modelValue !== this.get('field.value')\n                ) {\n                    // we set value also to model to make sure that this row will be saved to backend\n                    // because there is a feature (or a bug) that copies values from other rows and terrawise is using it and are very angry if we take this feature (bug) away\n                    this.set('model.' + this.get('field.external_type'), this.get('field.value'));\n                }\n            }\n            input = $(e);\n            if (input) {\n                return input.focus();\n            }\n        });\n    },\n    actions: {\n        setValue: function () {\n            return this.get('model').send('becomeDirty');\n        },\n    },\n});\n\n//            Ember.set(@, 'active', false)\nComponent.reopenClass({\n    positionalParams: ['model', 'field', 'editable', 'error'],\n});\n\nexport default Component;\n","export default Ember.HTMLBars.template({\"id\":\"CBragitQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"editing\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[23,0,[\\\"error\\\"]],\\\"has-error has-feedback\\\"],null]]]],[11,\\\"title\\\",[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"report.\\\",[24,[\\\"field\\\",\\\"form\\\"]],\\\".\\\",[24,[\\\"field\\\",\\\"name\\\"]]],null]],null]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"field\\\"]]],[[\\\"tagName\\\",\\\"change\\\",\\\"model\\\",\\\"class\\\",\\\"usePowerDropdown\\\",\\\"filter\\\"],[\\\"span\\\",\\\"setValue\\\",[24,[\\\"model\\\"]],[24,[\\\"_class\\\"]],[24,[\\\"usePowerDropdown\\\"]],[24,[\\\"filter\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[23,0,[\\\"error\\\"]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"editable\\\"]],\\\"editable-field\\\",\\\"uneditable-field\\\"],null]],[11,\\\"title\\\",[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"report.\\\",[24,[\\\"field\\\",\\\"form\\\"]],\\\".\\\",[24,[\\\"field\\\",\\\"name\\\"]]],null]],null]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"field\\\",\\\"form\\\"]],[28,\\\"get\\\",[[24,[\\\"model\\\"]],[24,[\\\"field\\\",\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n         \\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/inline-edit-row/cell/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/inline-edit-row/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Component;\n\nimport Ember from 'ember';\n\nimport recordComp from '../../collector/record-comp/component';\n\nComponent = recordComp.extend({\n    collector: Ember.inject.service('collector-service'),\n    tagName: 'tr',\n    classNameBindings: ['record.isNew:new-record', 'record.hasDirtyAttributes:edited-record'],\n    canEdit: Ember.computed('record', function () {\n        var collector, form;\n        collector = this.get('collector');\n        form = this.get('form');\n        return (\n            collector.testNeeds(['!' + form + '@errors', form + '@edit']) &&\n            (this.get('record.isNew') || this.get('record.isEditable'))\n        );\n    }),\n    canAdd: Ember.computed('record', function () {\n        var collector, form;\n        collector = this.get('collector');\n        form = this.get('form');\n        return collector.testNeeds(['!' + form + '@errors', form + '@add']);\n    }),\n    hasError: Ember.computed('record.errors.messages.[]', 'record.isValid', function () {\n        return this.get('record.errors.messages.length') > 0 && !this.get('record.isValid');\n    }),\n    recordSetter: null,\n    mouseEnter: function () {\n        return this.set('hoverActive', true);\n    },\n    mouseLeave: function () {\n        return this.set('hoverActive', false);\n    },\n    sortedFields: Ember.computed('showFields', 'columns', function () {\n        var c, cols, cols2, cols2_ext, cols_ext, form, length, ret, shown, stashed;\n        c = Ember.get(this, 'collector');\n        form = Ember.get(this, 'form');\n        shown = this.get('showFields');\n        stashed = this.get('stashed_fields');\n        shown = shown.concat(stashed);\n        if (!shown) {\n            return;\n        }\n        cols = this.get('columns');\n        cols_ext = cols.mapBy('ext');\n        length = Ember.get(cols, 'length');\n        cols2 = this.get('extraColumns');\n        cols2_ext = cols2.mapBy('ext');\n        ret = cols.concat(cols2).map(function (item) {\n            if (['row_info.created'].includes(Ember.get(item, 'ext'))) {\n                return;\n            }\n            return {\n                name: c.field(form, item.ext),\n                show: false,\n            };\n        });\n        shown.forEach(function (field) {\n            var index, index2;\n            if (['textarea', 'textarea_varchar'].includes(Ember.get(field, 'type'))) {\n                return;\n            }\n            index = cols_ext.indexOf(Ember.get(field, 'name'));\n            index2 = cols2_ext.indexOf(Ember.get(field, 'name'));\n            if (index > -1) {\n                return (ret[index] = {\n                    name: field,\n                    show: true,\n                });\n            } else if (index2 > -1) {\n                return (ret[length + index2] = {\n                    name: field,\n                    show: true,\n                });\n            }\n        });\n        return ret;\n    }),\n    actions: {\n        copyRow: function () {\n            return this.sendAction('copyRow', this.get('record'));\n        },\n    },\n});\n\nexport default Component;\n","export default Ember.HTMLBars.template({\"id\":\"8wrvc5Co\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"index\\\"],\\\"statements\\\":[[7,\\\"td\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"hasError\\\"]],\\\"invalid\\\"],null]],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"td\\\",true],[8],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"hoverActive\\\"]],[24,[\\\"canAdd\\\"]],[24,[\\\"record\\\",\\\"id\\\"]]],null]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-xs\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"copyRow\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CopyRow\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sortedFields\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"inline-edit-row/cell\\\",[[24,[\\\"record\\\"]],[23,1,[\\\"name\\\"]],[28,\\\"and\\\",[[23,1,[\\\"show\\\"]],[24,[\\\"canEdit\\\"]]],null],[28,\\\"get\\\",[[24,[\\\"record\\\",\\\"errors\\\"]],[28,\\\"concat\\\",[[23,1,[\\\"name\\\",\\\"name\\\"]],\\\".firstObject.message\\\"],null]],null]],[[\\\"number\\\"],[[23,2,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"td\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1,2]},null],[7,\\\"td\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/inline-edit-row/template.hbs\"}});","import reportComp from '../../collector/report-comp/component';\n\nexport default reportComp.extend({\n    actions: {\n        copyRow(row) {\n            this.copyRow(row);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"RFq1iy23\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"row\\\",\\\"column\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"outer\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive table-hover general-report report-forms\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"row-status-cell\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"report-checkbox copy-placeholder\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"translated_columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"table-header-wrap\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"table-header-name\\\"],[8],[1,[23,3,[]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"addRows\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"inline-edit-row\\\",null,[[\\\"form\\\",\\\"columns\\\",\\\"extraColumns\\\",\\\"record\\\",\\\"copyRow\\\",\\\"rowSettings\\\"],[[24,[\\\"form\\\"]],[24,[\\\"columnHash\\\",\\\"all\\\"]],[24,[\\\"columnHash\\\",\\\"hidden\\\"]],[23,2,[]],[28,\\\"action\\\",[[23,0,[]],\\\"copyRow\\\"],null],[24,[\\\"settings\\\",\\\"rowSettings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[4,\\\"each\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"inline-edit-row\\\",null,[[\\\"form\\\",\\\"columns\\\",\\\"extraColumns\\\",\\\"record\\\",\\\"copyRow\\\",\\\"rowSettings\\\"],[[24,[\\\"form\\\"]],[24,[\\\"columnHash\\\",\\\"all\\\"]],[24,[\\\"columnHash\\\",\\\"hidden\\\"]],[23,1,[]],[28,\\\"action\\\",[[23,0,[]],\\\"copyRow\\\"],null],[24,[\\\"settings\\\",\\\"rowSettings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/inline-edit/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport EmberObject from '@ember/object';\nimport config from 'tt4/config/environment';\n\nexport default Component.extend({\n    Collector: service('collector-service'),\n    session: service(),\n    intl: service(),\n\n    errors: EmberObject.create({\n        name: false,\n        phone: false,\n        email: false,\n    }),\n\n    showModal: computed('triggerShowModal', function () {\n        if (get(this, 'triggerShowModal')) {\n            this._setModalInfo();\n            return true;\n        }\n        return false;\n    }),\n\n    // This computed is used to send info link to crowdin as param so it can be used inside translation\n    // It has to be sent from code and not straight in crowdin, because of branding\n    infoLink: computed('product', function () {\n        const url =\n            config.brand === 'otta'\n                ? get(this, 'intl').t('click.help_links_for_products.otta')\n                : 'https://ohjeet.visma.fi/articles/#!visma-movenium';\n        // eslint-disable-next-line no-irregular-whitespace\n\n        const infoLinksForProducts = {\n            nova_web_service: url + '/nova-web-service',\n            nova_salary_csv: url + '/visma-nova',\n            netvisor_salary_rest: url + '/visma-netvisor',\n            fivaldi_salary_soap: url + '/visma-fivaldi',\n            custom_export: url + '/vientity-kalu',\n        };\n        return infoLinksForProducts[this.product];\n    }),\n\n    actions: {\n        infoButton() {\n            this.toggleProperty('triggerShowModal');\n        },\n        sendModalData() {\n            let hasError = false;\n            let fields = ['name', 'phone', 'email'];\n            fields.forEach((field) => {\n                if (!get(this, 'modal_info.' + field) || get(this, 'modal_info.' + field) == '') {\n                    set(this, 'errors.' + field, true);\n                    hasError = true;\n                } else {\n                    set(this, 'errors.' + field, false);\n                }\n            });\n            if (!hasError) {\n                set(this, 'triggerShowModal', false);\n                let intl = get(this, 'intl');\n\n                let emailContent = [];\n                emailContent.push([\n                    intl.t('settings.products.rfid_company_name'),\n                    get(this, 'session.currentUser.partnerid') +\n                        ' ' +\n                        get(this, 'modal_info.company_name'),\n                ]);\n                emailContent.push(['Integration type', get(this, 'product')]);\n                emailContent.push([\n                    intl.t('settings.products.rfid_name'),\n                    get(this, 'modal_info.name'),\n                ]);\n                emailContent.push([\n                    intl.t('settings.products.rfid_phone'),\n                    get(this, 'modal_info.phone'),\n                ]);\n                emailContent.push([\n                    intl.t('settings.products.rfid_email'),\n                    get(this, 'modal_info.email'),\n                ]);\n\n                let address =\n                    get(this, 'session.currentUser.company_info.country') == 'se'\n                        ? 'customerservice_se'\n                        : 'customerservice_fi';\n                let basicContent = '\\r\\n';\n\n                emailContent.forEach((contentRow) => {\n                    basicContent += contentRow[0] + ': ' + contentRow[1] + '\\r\\n';\n                });\n\n                let emailContentForCustomer =\n                    intl.t('settings.products.integration_order_received') + '\\r\\n' + basicContent;\n\n                get(this, 'Collector').ttapi({\n                    url: 'sendEmail',\n                    data: {\n                        email: address,\n                        title:\n                            get(this, 'session.currentUser.company') +\n                            ' - ' +\n                            intl.t('register.products.integration_info_order'),\n                        content: basicContent,\n                    },\n                    method: 'post',\n                });\n\n                get(this, 'Collector').ttapi({\n                    url: 'sendEmail',\n                    data: {\n                        email: get(this, 'modal_info.email'),\n                        title: intl\n                            .t('settings.products.integration_order_received_header')\n                            .toString(),\n                        content: emailContentForCustomer,\n                    },\n                    method: 'post',\n                });\n            }\n        },\n        change(field, value) {\n            if (get(this, 'rfid_info.' + field)) {\n                set(this, 'rfid_info.' + field, value);\n            }\n            set(this, 'errors.' + field, false);\n        },\n        closeModal() {\n            set(this, 'triggerShowModal', false);\n        },\n    },\n    _setModalInfo() {\n        set(this, 'modal_info', {\n            company_name: get(this, 'session.currentUser.company_info.company_name'),\n            name:\n                get(this, 'session.currentUser.firstname') +\n                ' ' +\n                get(this, 'session.currentUser.lastname'),\n            phone: get(this, 'session.currentUser.phone'),\n            email: get(this, 'session.currentUser.email'),\n        });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"NkuFLkPI\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"settings.products.integration_info_title\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"infoLink\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"settings.products.integration_info_text.\\\",[24,[\\\"product\\\"]]],null]],[[\\\"htmlSafe\\\",\\\"infoLink\\\"],[true,[24,[\\\"infoLink\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"settings.products.integration_info_text.\\\",[24,[\\\"product\\\"]]],null]],[[\\\"htmlSafe\\\"],[true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_name\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocapitalize\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"modal_info\\\",\\\"name\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"name\\\",[24,[\\\"modal_info\\\",\\\"name\\\"]]],null],\\\"off\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_phone\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"phone\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocapitalize\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"modal_info\\\",\\\"phone\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"phone\\\",[24,[\\\"modal_info\\\",\\\"phone\\\"]]],null],\\\"off\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_email\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"email\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocapitalize\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"modal_info\\\",\\\"email\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"email\\\",[24,[\\\"modal_info\\\",\\\"email\\\"]]],null],\\\"off\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendModalData\\\"]],[8],[1,[28,\\\"t\\\",[\\\"settings.products.order_integration_info\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/integration-info-popup/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/integration-settings/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Component;\n\nimport Ember from 'ember';\n\nComponent = Ember.Component.extend({\n    Collector: Em.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    didReceiveAttrs: function () {\n        if (this.get('Collector').productExists('products.netvisor_salary_rest')) {\n            return this.get('store')\n                .query('integrationsetting', {\n                    integration: 'general-netvisor-salary-rest',\n                })\n                .then((settings) => {\n                    if (settings.get('content').length > 1) {\n                        this.set('cid', settings.findBy('key', 'cid').get('value'));\n                        return this.set(\n                            'customerID',\n                            settings.findBy('key', 'customerID').get('value'),\n                        );\n                    }\n                });\n        } else if (this.get('Collector').productExists('products.fivaldi_salary_soap')) {\n            return this.get('store')\n                .query('integrationsetting', {\n                    integration: 'general-fivaldi-salary-soap',\n                })\n                .then((settings) => {\n                    if (settings.get('content').length > 1) {\n                        this.set('businessid', settings.findBy('key', 'businessid').get('value'));\n                        this.set('schema', settings.findBy('key', 'schema').get('value'));\n                        return this.set(\n                            'followupID',\n                            settings.findBy('key', 'followupID').get('value'),\n                        );\n                    }\n                });\n        }\n    },\n    followupIDs: ['1', '2', '3', '4'],\n    showSaveButton: Ember.computed('showModal', function () {\n        return ['netvisor', 'fivaldi'].includes(this.get('showModal'));\n    }),\n    fivaldiSaveSettings: function () {\n        var businessid,\n            followupID,\n            row,\n            row1,\n            row2,\n            schema,\n            setting_businessid,\n            setting_followupID,\n            setting_schema,\n            settings;\n        ({ businessid, schema, followupID } = this.getProperties(\n            'businessid',\n            'schema',\n            'followupID',\n        ));\n        if (Em.isEmpty(businessid) || Em.isEmpty(schema) || Em.isEmpty(followupID)) {\n            this.set('settingsError', 'fivaldi_soap');\n            Ember.run.later(\n                this,\n                function () {\n                    return this.set('settingsError', null);\n                },\n                4000,\n            );\n            return;\n        }\n        settings = this.get('store').peekAll('integrationsetting');\n        setting_businessid = settings.findBy('key', 'businessid');\n        if (setting_businessid) {\n            row = setting_businessid;\n            row.set('value', businessid);\n        } else {\n            row = this.get('store').createRecord('integrationsetting', {\n                integration: 'general-fivaldi-salary-soap',\n                key: 'businessid',\n                value: businessid,\n            });\n        }\n        setting_schema = settings.findBy('key', 'schema');\n        if (setting_schema) {\n            row1 = setting_schema;\n            row1.set('value', schema);\n        } else {\n            row1 = this.get('store').createRecord('integrationsetting', {\n                integration: 'general-fivaldi-salary-soap',\n                key: 'schema',\n                value: schema,\n            });\n        }\n        setting_followupID = settings.findBy('key', 'followupID');\n        if (setting_followupID) {\n            row2 = setting_followupID;\n            row2.set('value', followupID);\n        } else {\n            row2 = this.get('store').createRecord('integrationsetting', {\n                integration: 'general-fivaldi-salary-soap',\n                key: 'followupID',\n                value: followupID,\n            });\n        }\n        return Em.A([row, row1, row2]).invoke('save');\n    },\n    netvisorSaveSettings: function () {\n        var cid, customerID, row, row1, setting_cid, setting_customerID, settings;\n        ({ cid, customerID } = this.getProperties('cid', 'customerID'));\n        if (Em.isEmpty(cid) || Em.isEmpty(customerID)) {\n            this.set('settingsError', 'netvisor_rest');\n            Ember.run.later(\n                this,\n                function () {\n                    return this.set('settingsError', null);\n                },\n                4000,\n            );\n            return;\n        }\n        settings = this.get('store').peekAll('integrationsetting');\n        setting_cid = settings.findBy('key', 'cid');\n        if (setting_cid) {\n            row = setting_cid;\n            row.set('value', cid);\n        } else {\n            row = this.get('store').createRecord('integrationsetting', {\n                integration: 'general-netvisor-salary-rest',\n                key: 'cid',\n                value: cid,\n            });\n        }\n        setting_customerID = settings.findBy('key', 'customerID');\n        if (setting_customerID) {\n            row1 = setting_customerID;\n            row1.set('value', customerID);\n        } else {\n            row1 = this.get('store').createRecord('integrationsetting', {\n                integration: 'general-netvisor-salary-rest',\n                key: 'customerID',\n                value: customerID,\n            });\n        }\n        return Em.A([row, row1]).invoke('save');\n    },\n    actions: {\n        saveSettings: function (integration) {\n            return Ember.RSVP.Promise.all(this[integration + 'SaveSettings']()).then(() => {\n                if (this.get('save')) {\n                    return this.save();\n                }\n            });\n        },\n        close: function () {\n            if (this.get('close')) {\n                return this.close();\n            }\n        },\n    },\n});\n\nexport default Component;\n","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class FondionSettingsComponent extends Component {\n    @service store;\n    @service('collector-service') Collector;\n    @service ttapi;\n    @service intl;\n\n    @tracked fondion_client_id;\n    @tracked fondion_client_secret;\n    @tracked fondion_tenant_id;\n    @tracked isLoading;\n\n    constructor() {\n        super(...arguments);\n        this.getSettings();\n    }\n\n    @action\n    save() {\n        this.store.peekAll('integrationsetting').save();\n\n        const addThese = [\n            {\n                key: '8d9e9811-6ab3-4303-a0c8-57a3c5ba4465',\n                name: this.intl.t('ccbutton.fondion.projectsAndTasks'),\n                tag: 'fondionProjectsAndTasks',\n                nonblocking: true, // fondion integrations should be nonblocking\n            },\n            {\n                key: 'bb664c4f-f04d-4f16-a82d-096f64b2fcae',\n                name: this.intl.t('ccbutton.fondion.users'),\n                tag: 'fondionUsers',\n                nonblocking: true, // fondion integrations should be nonblocking\n            },\n        ];\n\n        addThese.forEach((item) => {\n            this.ttapi.request('/api/addCustomIntegrationsToCcbutton', {\n                method: 'POST',\n                data: item,\n            });\n        });\n\n        this.args.close();\n    }\n\n    async getSettings() {\n        this.isLoading = true;\n        let settings = await this.store.query('integrationsetting', { integration: 'fondion' });\n\n        this.fondion_client_id = this.setRecord(settings, 'fondion_client_id', null);\n        this.fondion_client_secret = this.setRecord(settings, 'fondion_client_secret', null);\n        this.fondion_tenant_id = this.setRecord(settings, 'fondion_tenant_id', null);\n        this.isLoading = false;\n    }\n\n    setRecord(settings, key, value) {\n        let record = settings.findBy('key', key);\n        return record\n            ? record\n            : this.store.createRecord('integrationsetting', {\n                  integration: 'fondion',\n                  key: key,\n                  value: value,\n              });\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"rehEFhii\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"   \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export-salary.fondion.client_id\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,0,[\\\"fondion_client_id\\\",\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export-salary.fondion.client_secret\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,0,[\\\"fondion_client_secret\\\",\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export-salary.fondion.tenant_id\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,0,[\\\"fondion_tenant_id\\\",\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"data-anchor\\\",\\\"save-button\\\"],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"save\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/integration-settings/fondion-settings/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class NovaSettingsComponent extends Component {\n    @service store;\n    @service('collector-service') Collector;\n    @service ttapi;\n\n    @tracked nova_url;\n    @tracked nova_hash;\n    @tracked customerIntegration;\n    @tracked materialIntegration;\n    @tracked taskIntegration;\n    @tracked projectIntegration;\n    @tracked costcenter;\n    @tracked isLoading;\n\n    constructor() {\n        super(...arguments);\n        this.getSettings();\n    }\n\n    @action\n    save() {\n        this.store.peekAll('integrationsetting').save();\n        // Add worktimes and absences nova integration to ccbutton separately\n        this.ttapi.request('/api/addCustomIntegrationsToCcbutton', {\n            method: 'POST',\n            data: {\n                key: '339783c5-df53-4fea-bfb4-e089d12775a6',\n                tag: 'worktimesAndAbsences',\n            },\n        });\n        this.args.close();\n    }\n\n    @action\n    checked(item) {\n        item.value = item.value == 'off' ? 'on' : 'off';\n\n        if (item.key == 'costcenter') {\n            item.value == 'on'\n                ? this.Collector.addProduct('nova_costcenter')\n                : this.Collector.removeProduct('nova_costcenter');\n        }\n    }\n\n    async getSettings() {\n        this.isLoading = true;\n        let settings = await this.store.query('integrationsetting', {\n            integration: 'nova_web_service',\n        });\n\n        this.nova_url = this.setRecord(settings, 'nova_url', null);\n        this.nova_hash = this.setRecord(settings, 'nova_hash', null);\n        this.customerIntegration = this.setRecord(settings, 'customerIntegration', 'off');\n        this.materialIntegration = this.setRecord(settings, 'materialIntegration', 'off');\n        this.taskIntegration = this.setRecord(settings, 'taskIntegration', 'off');\n        this.projectIntegration = this.setRecord(settings, 'projectIntegration', 'off');\n        this.costcenter = this.setRecord(settings, 'costcenter', 'off');\n        this.isLoading = false;\n    }\n\n    setRecord(settings, key, value) {\n        let record = settings.findBy('key', key);\n        return record\n            ? record\n            : this.store.createRecord('integrationsetting', {\n                  integration: 'nova_web_service',\n                  key: key,\n                  value: value,\n              });\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"7sT9AzM5\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"   \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export-salary.nova.settings.nova_url\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,0,[\\\"nova_url\\\",\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export-salary.nova.settings.nova_hash\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,0,[\\\"nova_hash\\\",\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"export-salary.nova.settings.use_integrations\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"btn btn-default\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"checked\\\",\\\"change\\\"],[\\\"checkbox\\\",\\\"customerIntegration\\\",[28,\\\"eq\\\",[[23,0,[\\\"customerIntegration\\\",\\\"value\\\"]],\\\"on\\\"],null],[28,\\\"fn\\\",[[23,0,[\\\"checked\\\"]],[23,0,[\\\"customerIntegration\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"export-salary.nova.settings.customer\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"btn btn-default\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"checked\\\",\\\"change\\\"],[\\\"checkbox\\\",\\\"materialIntegration\\\",[28,\\\"eq\\\",[[23,0,[\\\"materialIntegration\\\",\\\"value\\\"]],\\\"on\\\"],null],[28,\\\"fn\\\",[[23,0,[\\\"checked\\\"]],[23,0,[\\\"materialIntegration\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"export-salary.nova.settings.materials\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"btn btn-default\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"checked\\\",\\\"change\\\"],[\\\"checkbox\\\",\\\"taskIntegration\\\",[28,\\\"eq\\\",[[23,0,[\\\"taskIntegration\\\",\\\"value\\\"]],\\\"on\\\"],null],[28,\\\"fn\\\",[[23,0,[\\\"checked\\\"]],[23,0,[\\\"taskIntegration\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"export-salary.nova.settings.tasks\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"btn btn-default\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"checked\\\",\\\"change\\\"],[\\\"checkbox\\\",\\\"projectIntegration\\\",[28,\\\"eq\\\",[[23,0,[\\\"projectIntegration\\\",\\\"value\\\"]],\\\"on\\\"],null],[28,\\\"fn\\\",[[23,0,[\\\"checked\\\"]],[23,0,[\\\"projectIntegration\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"export-salary.nova.settings.projects\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"btn btn-default\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"checked\\\",\\\"change\\\"],[\\\"checkbox\\\",\\\"costcenter\\\",[28,\\\"eq\\\",[[23,0,[\\\"costcenter\\\",\\\"value\\\"]],\\\"on\\\"],null],[28,\\\"fn\\\",[[23,0,[\\\"checked\\\"]],[23,0,[\\\"costcenter\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"export-salary.nova.settings.costcenter\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"save\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/integration-settings/nova-settings/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class PayrollSettingsComponent extends Component {\n    @service store;\n    @service('collector-service') Collector;\n\n    @tracked dim1;\n    @tracked dim2;\n    @tracked dim3;\n    @tracked dim4;\n    @tracked dim5;\n    @tracked isLoading;\n\n    labeltext1 = 'DIM1';\n    labeltext2 = 'DIM2';\n    labeltext3 = 'DIM3';\n    labeltext4 = 'DIM4';\n    labeltext5 = 'DIM5';\n\n    constructor() {\n        super(...arguments);\n        this.getSettings();\n    }\n\n    @action\n    save() {\n        this.store.peekAll('integrationsetting').save();\n        this.args.close();\n    }\n\n    async getSettings() {\n        this.isLoading = true;\n        let settings = await this.store.query('integrationsetting', {\n            integration: 'payroll_worktime_rest',\n        });\n\n        this.dim1 = this.setRecord(settings, 'dim1', null);\n        this.dim2 = this.setRecord(settings, 'dim2', null);\n        this.dim3 = this.setRecord(settings, 'dim3', null);\n        this.dim4 = this.setRecord(settings, 'dim4', null);\n        this.dim5 = this.setRecord(settings, 'dim5', null);\n\n        this.isLoading = false;\n    }\n\n    setRecord(settings, key, value) {\n        let record = settings.findBy('key', key);\n        return record\n            ? record\n            : this.store.createRecord('integrationsetting', {\n                  integration: 'payroll_worktime_rest',\n                  key: key,\n                  value: value,\n              });\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"L6agn3Co\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"   \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"label\\\",true],[8],[1,[23,0,[\\\"labeltext1\\\"]],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,0,[\\\"dim1\\\",\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"label\\\",true],[8],[1,[23,0,[\\\"labeltext2\\\"]],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,0,[\\\"dim2\\\",\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"label\\\",true],[8],[1,[23,0,[\\\"labeltext3\\\"]],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,0,[\\\"dim3\\\",\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"label\\\",true],[8],[1,[23,0,[\\\"labeltext4\\\"]],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,0,[\\\"dim4\\\",\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"label\\\",true],[8],[1,[23,0,[\\\"labeltext5\\\"]],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,0,[\\\"dim5\\\",\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"save\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/integration-settings/payroll-settings/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"cxLWlhKn\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"export-salary.\\\",[24,[\\\"showModal\\\"]],\\\".settings.header\\\"],null]],null],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"export-salary.\\\",[24,[\\\"showModal\\\"]],\\\".settings.desc\\\"],null]],null],false],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"showModal\\\"]],\\\"fivaldi\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export-salary.fivaldi.settings.businessid\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"businessid\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export-salary.fivaldi.settings.schema\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"schema\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export-salary.fivaldi.settings.followupID\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"fast-select\\\",null,[[\\\"value\\\",\\\"content\\\",\\\"class\\\",\\\"name\\\"],[[24,[\\\"followupID\\\"]],[24,[\\\"followupIDs\\\"]],\\\"form-control add-fields\\\",\\\"followUpID\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"showModal\\\"]],\\\"payroll\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[5,\\\"integration-settings/payroll-settings\\\",[],[[\\\"@close\\\"],[[23,0,[\\\"close\\\"]]]]],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"        \\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"showModal\\\"]],\\\"netvisor\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export-salary.netvisor.settings.cid\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"cid\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export-salary.netvisor.settings.customerID\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"customerID\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"showModal\\\"]],\\\"fondion\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[5,\\\"integration-settings/fondion-settings\\\",[],[[\\\"@close\\\"],[[23,0,[\\\"close\\\"]]]]],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"showModal\\\"]],\\\"vismanet\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[1,[22,\\\"vismanet-signin\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"showModal\\\"]],\\\"nova_web_service\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[5,\\\"integration-settings/nova-settings\\\",[],[[\\\"@close\\\"],[[23,0,[\\\"close\\\"]]]]],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"settingsError\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"export-salary.settings.error.\\\",[24,[\\\"settingsError\\\"]]],null]],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showSaveButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSettings\\\",[24,[\\\"showModal\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/integration-settings/template.hbs\"}});","import Component from '@glimmer/component';\nimport { later } from '@ember/runloop';\nimport { inject as service } from '@ember/service';\n\nexport default class IntegrationsReportComponent extends Component {\n    @service evented;\n\n    refreshRate = 1000 * 60; // once every minute\n\n    constructor() {\n        super(...arguments);\n\n        later(this, this.refresh, this.refreshRate);\n    }\n\n    refresh() {\n        if (this.isDestroyed) return;\n        this.evented.storeEvent('insert', 'ccbuttonexecution', null);\n        later(this, this.refresh, this.refreshRate);\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"z4ZUodlh\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"field\\\",\\\"value\\\",\\\"Action\\\",\\\"ExportMore\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@jsonapi\\\",\\\"@showFilters\\\",\\\"@hideCreatedColumn\\\"],[\\\"ccbuttonexecution\\\",true,\\\"q\\\",true]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@formatCells\\\",\\\"@hideSumRow\\\",\\\"@selectable\\\"],[true,true,false]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"ExportPdf\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"ExportMore\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Pdf\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"PdfFull\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Excel\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Csv\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[]],\\\"state\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,4,[]],\\\"running\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-primary\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.ccbuttonexecution.state.running\\\"],null],false],[0,\\\" \\\"],[5,\\\"spinner\\\",[],[[\\\"@size\\\"],[14]]],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,4,[]],\\\"error\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.ccbuttonexecution.state.error\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,4,[]],\\\"done\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-success\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.ccbuttonexecution.state.done\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[]],\\\"extra\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"show-linefeeds\\\",[[23,4,[]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[]],\\\"started\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"moment-format\\\",[[23,4,[]],\\\"LLL\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[3,4]}],[0,\\\"\\\\n\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/integrations-report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/machine-map/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Component;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    mapMarkers: Ember.A([]),\n    didInsertElement: function () {\n        var container, lat, latlng, lng, map, options;\n        container = $('.canvas', this.element)[0];\n        if (moment.locale() === 'fi') {\n            lat = 64.8929581;\n            lng = 26.0218001;\n        } else {\n            lat = 63.6532593;\n            lng = 18.7268782;\n        }\n        latlng = new window.google.maps.LatLng(lat, lng);\n        options = {\n            center: latlng,\n            zoom: 5,\n        };\n        map = new window.google.maps.Map(container, options);\n        this.set('map', map);\n        return this.addMachines();\n    },\n    //map.addListener 'zoom_changed', =>\n    //    @addMachines()\n    getLatLng: function (machine) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var json, parsed;\n            json = machine.get('project.location_map');\n            if (typeof json === 'undefined') {\n                return this.get('store')\n                    .findRecord('project', machine.get('project.id'), {\n                        reload: true,\n                    })\n                    .then(function (project) {\n                        var parsed;\n                        json = project.get('location_map');\n                        if (!json) {\n                            reject();\n                            return;\n                        }\n                        parsed = JSON.parse(json);\n                        return resolve({\n                            lat: parsed.latitude,\n                            lng: parsed.longitude,\n                        });\n                    });\n            } else if (json) {\n                parsed = JSON.parse(json);\n                return resolve({\n                    lat: parsed.latitude,\n                    lng: parsed.longitude,\n                });\n            } else {\n                return reject();\n            }\n        });\n    },\n    observeModel: Ember.observer('machines.[]', function () {\n        this.get('markers').forEach((marker) => {\n            return marker.setMap(null);\n        });\n        this.set('markers', []);\n        return this.addMachines();\n    }),\n    markers: [],\n    addMachines: function () {\n        var biggest_amount, smallest_amount;\n        biggest_amount = 0;\n        smallest_amount = 100000;\n        this.get('machines').forEach((machine) => {\n            if (biggest_amount < machine.get('amount')) {\n                biggest_amount = machine.get('amount');\n            }\n            if (smallest_amount > machine.get('amount')) {\n                return (smallest_amount = machine.get('amount'));\n            }\n        });\n        return this.get('machines').forEach((machine) => {\n            var scaleMultiplier;\n            if (biggest_amount === smallest_amount) {\n                scaleMultiplier = 2;\n            } else {\n                scaleMultiplier =\n                    (3 / (biggest_amount - smallest_amount)) *\n                        (machine.get('amount') - smallest_amount) +\n                    1;\n            }\n            return this.getLatLng(machine).then((position) => {\n                return this.get('markers').push(\n                    new google.maps.Marker({\n                        position: position,\n                        map: this.get('map'),\n                        title: machine.get('project.name') + ' - ' + machine.get('amount'),\n                        //animation: google.maps.Animation.DROP\n                        label: {\n                            color: 'black',\n                            fontWeight: 'bold',\n                            fontSize: '14px',\n                            text: '' + machine.get('amount'),\n                        },\n                        icon: {\n                            strokeColor: '#0c9d58',\n                            strokeOpacity: 1.0,\n                            strokeWeight: 2,\n                            fillColor: '#D8FFFF',\n                            fillOpacity: 0.5,\n                            path: google.maps.SymbolPath.CIRCLE,\n                            scale: 10 * scaleMultiplier,\n                            anchor: new google.maps.Point(0, 0),\n                        },\n                    }),\n                );\n            });\n        });\n    },\n    actions: {\n        test: function () {\n            return this.get('map').setCenter({\n                lat: 60,\n                lng: 26,\n            });\n        },\n    },\n});\n\nexport default Component;\n","export default Ember.HTMLBars.template({\"id\":\"nyfsY3Ic\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"canvas\\\"],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/machine-map/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/mobile-welcome-tour/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MobileWelcomeTourComponent;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nMobileWelcomeTourComponent = Ember.Component.extend({\n    cdn: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    currentStep: 0,\n    currentStepText: Em.computed('currentStep', function () {\n        return this.get('currentStep') + 1;\n    }),\n    totalSteps: Em.computed(function () {\n        return this.get('stepTexts').length;\n    }),\n    first_step: true,\n    last_step: false,\n    current_step_text: Em.computed(function () {\n        return this.get('stepTexts')[this.get('currentStep')];\n    }),\n    current_step_image: Em.computed(function () {\n        return this.get('cdn').url(\n            'images/intro/' +\n                this.get('intl.primaryLocale') +\n                '/' +\n                this.get('stepImages')[this.get('currentStep')],\n        );\n    }),\n    stepTexts: Em.computed(function () {\n        return [this.get('intl').t('tour.steps.plus'), this.get('intl').t('tour.steps.hamburger')];\n    }),\n    stepImages: Em.computed(function () {\n        return ['mobile_tour_plus_icon.png', 'mobile_tour_hamburger.png'];\n    }),\n    actions: {\n        close: function () {\n            if (this.get('close')) {\n                return this.close();\n            }\n        },\n        go: function (dir) {\n            var current_step;\n            current_step = this.get('currentStep');\n            if (dir === 'forward') {\n                if (this.get('stepTexts')[current_step + 1] != null) {\n                    this.incrementProperty('currentStep');\n                }\n            } else {\n                if (this.get('stepTexts')[current_step - 1] != null) {\n                    this.decrementProperty('currentStep');\n                }\n            }\n            if (this.get('stepTexts').length === this.get('currentStep') + 1) {\n                this.set('last_step', true);\n                this.set('first_step', false);\n            }\n            if (this.get('currentStep') === 0) {\n                this.set('first_step', true);\n                this.set('last_step', false);\n            }\n            this.set('current_step_text', this.get('stepTexts')[this.get('currentStep')]);\n            return this.set(\n                'current_step_image',\n                this.get('cdn').url(\n                    'images/intro/' +\n                        this.get('intl.primaryLocale') +\n                        '/' +\n                        this.get('stepImages')[this.get('currentStep')],\n                ),\n            );\n        },\n    },\n});\n\nexport default MobileWelcomeTourComponent;\n","export default Ember.HTMLBars.template({\"id\":\"fdJ0U6KT\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\",\\\"contentSpan\\\"],[[28,\\\"t\\\",[\\\"tour.headers.first_time\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null],true]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"general-nice-popup nice-popup-flex-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"img-responsive\\\"],[10,\\\"style\\\",\\\"margin-left:auto; margin-right:auto;\\\"],[11,\\\"src\\\",[29,[[22,\\\"current_step_image\\\"]]]],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"style\\\",\\\"width:90%; position:fixed; bottom:0px;\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[22,\\\"current_step_text\\\"],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-5\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"last_step\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"go\\\",\\\"backward\\\"]],[8],[1,[28,\\\"t\\\",[\\\"tour.back\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[1,[28,\\\"t\\\",[\\\"tour.exit\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2 button-row-text\\\"],[8],[0,\\\"\\\\n                    (\\\"],[1,[22,\\\"currentStepText\\\"],false],[0,\\\"/\\\"],[1,[22,\\\"totalSteps\\\"],false],[0,\\\")\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-5\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"last_step\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[1,[28,\\\"t\\\",[\\\"tour.exit\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"first_step\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"go\\\",\\\"forward\\\"]],[8],[1,[28,\\\"t\\\",[\\\"tour.next\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"go\\\",\\\"backward\\\"]],[8],[1,[28,\\\"t\\\",[\\\"tour.back\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"go\\\",\\\"forward\\\"]],[8],[1,[28,\\\"t\\\",[\\\"tour.next\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/mobile-welcome-tour/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { bind } from '@ember/runloop';\nimport { set } from '@ember/object';\nlet initialMouseX = 0;\nlet initialMouseY = 0;\nlet initialElementX = 0;\nlet initialElementY = 0;\n\nexport default Component.extend({\n    gui: service(),\n    analytics: service(),\n    scrollable: true,\n    shouldShowHeaderOptions: false,\n    actions: {\n        toggleHeaderOptions() {\n            set(this, 'shouldShowHeaderOptions', !this.shouldShowHeaderOptions);\n        },\n\n        removeModal() {\n            if (this.close) this.close();\n        },\n\n        grabModal(event) {\n            initialMouseX = event.pageX;\n            initialMouseY = event.pageY;\n\n            initialMouseX = event.pageX;\n            initialMouseY = event.pageY;\n\n            this.draggedElement = this.element.querySelector('.modal-popup');\n            initialElementX = this.draggedElement.offsetLeft;\n            initialElementY = this.draggedElement.offsetTop;\n\n            this.bindedHandleMouseMove = bind(this, this.handleMouseMove);\n            window.addEventListener('mousemove', this.bindedHandleMouseMove);\n        },\n\n        releaseModal() {\n            window.removeEventListener('mousemove', this.bindedHandleMouseMove);\n        },\n    },\n\n    handleMouseMove(event) {\n        if (event.buttons === 0) {\n            this.send('releaseModal');\n            return;\n        }\n\n        this.draggedElement.style.position = 'absolute';\n        this.draggedElement.style.left = initialElementX + event.pageX - initialMouseX + 'px';\n        this.draggedElement.style.top = initialElementY + event.pageY - initialMouseY + 'px';\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"+uUoaRIW\",\"block\":\"{\\\"symbols\\\":[\\\"act\\\",\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"modal-container \\\",[22,\\\"more_classes\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"modal-popup \\\",[28,\\\"if\\\",[[24,[\\\"darkMode\\\"]],\\\"dark-background\\\"],null]]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup-header\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"header-text\\\"],[11,\\\"onmouseDown\\\",[28,\\\"action\\\",[[23,0,[]],\\\"grabModal\\\"],null]],[11,\\\"onmouseUp\\\",[28,\\\"action\\\",[[23,0,[]],\\\"releaseModal\\\"],null]],[8],[1,[22,\\\"header\\\"],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"actionList\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-MoreVertical\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggleHeaderOptions\\\"],null]],[10,\\\"data-toggle\\\",\\\"dropdown\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"shouldShowHeaderOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"vertical-more-dropdown dropdown-menu\\\"],[10,\\\"style\\\",\\\"display: block\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"actionList\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[3,\\\"action\\\",[[23,0,[]],[23,1,[\\\"action\\\"]]]],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[4,\\\"unless\\\",[[24,[\\\"hideClose\\\"]]],null,{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"move move-Cross add-modal-cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"modal-popup-content \\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"isSafari\\\"]],\\\"isMobileSafari\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"scrollable\\\"]],\\\"modal-scrollable-content\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"contentSpan\\\"]],\\\"modal-full-content\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[14,2],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[4,\\\"unless\\\",[[24,[\\\"narrowBottom\\\"]]],null,{\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-overlay\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/nice-modal/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/off-line/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Component;\n\nimport Ember from 'ember';\n\nComponent = Ember.Component.extend({\n    session: Ember.inject.service(),\n    seconds: 3,\n    tryAgain: 5,\n    reconnecting: false,\n    didReceiveAttrs: function () {\n        return this.setTimer();\n    },\n    setTimer: function () {\n        if (this.get('runLater')) {\n            Ember.run.cancel(this.get('runLater'));\n        }\n        return this.set(\n            'runLater',\n            Ember.run.later(\n                this,\n                () => {\n                    return this.reduceSeconds();\n                },\n                1000,\n            ),\n        );\n    },\n    reduceSeconds: function () {\n        var seconds;\n        if (this.get('isDestroyed')) {\n            return;\n        }\n        seconds = this.get('seconds');\n        this.set('seconds', seconds - 1);\n        if (seconds === 1) {\n            this.reconnect();\n            return;\n        }\n        return this.setTimer();\n    },\n    reconnect: function (increaseTryAgain = true) {\n        this.set('reconnecting', true);\n        return this.get('session.session')\n            .restore()\n            .then(() => {\n                if (this.get('isDestroyed')) {\n                    return;\n                }\n                this.set('reconnecting', false);\n                if (this.get('session.session.authenticated.offline')) {\n                    if (increaseTryAgain && this.get('tryAgain') < 1000) {\n                        this.set('tryAgain', this.get('tryAgain') * 3);\n                    }\n                    this.set('seconds', this.get('tryAgain'));\n                    return this.setTimer();\n                }\n            });\n    },\n    willDestroyElement: function () {\n        if (!this.get('session.currentUser') && this.get('reload')) {\n            return this.reload();\n        }\n    },\n    actions: {\n        reconnectNow: function () {\n            Ember.run.cancel(this.get('runLater'));\n            this.set('seconds', 0);\n            return this.reconnect(false);\n        },\n    },\n});\n\nexport default Component;\n","export default Ember.HTMLBars.template({\"id\":\"an2hHVPK\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"reconnecting\\\"]]],null,{\\\"statements\\\":[[0,\\\"        ...\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"general.offline\\\"],[[\\\"seconds\\\"],[[24,[\\\"seconds\\\"]]]]],false],[0,\\\" \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"reconnectNow\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.trynow\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/off-line/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\n\nexport default Component.extend({\n    store: service(),\n    selected_users: A(),\n\n    linkIds: computed.mapBy('selectedUsers', 'id'),\n\n    lockPermissionField: computed('selectedProject', function () {\n        return {\n            form: 'lockpermission',\n            name: 'lockgroupid',\n            type: 'database',\n            filterOptions: {\n                project: this.selectedProject.id,\n            },\n        };\n    }),\n\n    unselectedUsers: computed('selectedEmployer', 'search', 'preSelectedUsers', async function () {\n        let params = {};\n        params['rfid_tag_id'] = '!(empty)';\n        if (this.search) {\n            params['q'] = this.search;\n        }\n        if (this.selectedEmployer) {\n            params['employer'] = this.selectedEmployer.id;\n        }\n        if (this.preSelectedUsers) {\n            params['id'] = this.preSelectedUsers.join(',');\n        }\n        let model = await get(this, 'store').query('user', params);\n        return model;\n    }),\n\n    init() {\n        this._super();\n    },\n\n    async didInsertElement() {\n        set(this, 'showOnlyValid', false);\n        set(this, 'selectedUsers', A());\n    },\n    actions: {\n        searchChanged(value) {\n            if (typeof value == 'string') {\n                set(this, 'search', value);\n            } else {\n                set(this, 'search', null);\n            }\n        },\n        async selectUser(user) {\n            this.selectedUsers.pushObject(user);\n        },\n        deselectUser(user) {\n            this.selectedUsers.removeObject(user);\n        },\n        changeProject(value) {\n            set(this, 'selectedProject', value);\n        },\n        PermissionsAdderAction(lockgroup, project) {\n            if (lockgroup) {\n                set(this, 'lockgroupid', lockgroup);\n            }\n            if (project) {\n                set(this, 'selectedProject', project.id);\n            }\n            set(this, 'showAddPermissionDialog', true);\n        },\n        changeLockgroup(value) {\n            set(this, 'lockgroupid', value.id);\n        },\n        updateDateFields(value, field) {\n            set(this, field, value);\n            if (this.pass_start && this.pass_end) {\n                set(this, 'valid', true);\n            } else {\n                set(this, 'valid', false);\n            }\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"AMRN55nQ\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"row\\\"],\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.select.project\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"lockgroup.project\\\"],[[\\\"class\\\",\\\"value\\\",\\\"change\\\",\\\"usePowerDropdown\\\",\\\"useAsFilter\\\"],[\\\"add-fields form-control\\\",[24,[\\\"selectedProject\\\",\\\"id\\\"]],\\\"changeProject\\\",true,true]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selectedProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.worksite-areas.choose_lockgroup\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[[28,\\\"await\\\",[[24,[\\\"lockPermissionField\\\"]]],null]],[[\\\"class\\\",\\\"value\\\",\\\"change\\\",\\\"usePowerDropdown\\\",\\\"useAsFilter\\\"],[\\\"add-fields form-control\\\",[24,[\\\"lockgroupid\\\"]],\\\"changeLockgroup\\\",true,true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"lockgroupid\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.worksite-areas.choose_time_between\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dates\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"lockpermission.pass_start\\\"],[[\\\"class\\\",\\\"change\\\",\\\"value\\\"],[\\\"add-fields form-control\\\",\\\"updateDateFields\\\",[24,[\\\"pass_start\\\"]]]]],false],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"lockpermission.pass_end\\\"],[[\\\"class\\\",\\\"change\\\",\\\"value\\\"],[\\\"add-fields form-control\\\",\\\"updateDateFields\\\",[24,[\\\"pass_end\\\"]]]]],false],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"pass_start\\\"]],[24,[\\\"pass_end\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.worksite-areas.change_employer\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"user.employer\\\"],[[\\\"class\\\",\\\"value\\\",\\\"change\\\"],[\\\"add-fields form-control\\\",[24,[\\\"selectedEmployer\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"selectedEmployer\\\"]]],null]],null]]]],false],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"user-selector\\\"],[8],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"first-list\\\"],[8],[0,\\\"\\\\n                         \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"list-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.worksite-areas.all_users\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"search-box\\\",null,[[\\\"value\\\",\\\"change\\\",\\\"classes\\\"],[[24,[\\\"searchvalue\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"searchChanged\\\"],null],\\\"form-control add-field\\\"]]],false],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"unselectedUsers\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,2,[\\\"id\\\"]],[24,[\\\"linkIds\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"list-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"selectUser\\\",[23,2,[]]]],[8],[1,[23,2,[\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"second-list\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"list-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.worksite-areas.selected_users\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"selectedUsers\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"list-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"deselectUser\\\",[23,1,[]]]],[8],[1,[23,1,[\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/orientations/add-passes/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\nimport { later } from '@ember/runloop';\nimport { typeOf } from '@ember/utils';\n\nexport default Component.extend({\n    notifications: service(),\n    store: service(),\n    intl: service(),\n    gui: service(),\n    error: service(),\n    dialogs: service(),\n\n    didInsertElement() {\n        if (!this.users) set(this, 'users', A([]));\n        else this.updateUsers(this.users);\n    },\n\n    actions: {\n        async addUser(user) {\n            // if add user has dirty records, ask confirmation before changing\n            if (!(await this.confirmDiscardUnsavedChanges())) return;\n\n            if (this.users.includes(user))\n                return this.notifications.warning(this.intl.t('orientations.user_already_added'), {\n                    autoClear: true,\n                });\n\n            set(this, 'loading', true);\n            set(this, 'errorMessage', false);\n            // check if user is already orientated for this project\n            if (await this.alreadyOrientated(user, this.project)) {\n                set(this, 'loading', false);\n                set(this, 'userSelector', null);\n                return;\n            }\n\n            try {\n                await this.store.findRecord('user', get(user, 'id'), { reload: true });\n                set(this, 'selected', user);\n                user.validate();\n            } catch (err) {\n                const readableError = this.error.toError(err);\n                if (readableError.error == 'not_found') {\n                    set(this, 'errorMessage', get(this, 'intl').t('validation.not_found.user'));\n                } else {\n                    set(this, 'errorMessage', this.error.toString(err));\n                }\n                later(this, () => set(this, 'errorMessage', false), 10000);\n                set(this, 'selected', null);\n            }\n            this.users.pushObject(user);\n            if (this.usersChanged) this.usersChanged(this.users);\n            // clear user finder dropdown\n            set(this, 'userSelector', null);\n            set(this, 'loading', false);\n            set(this, 'userModel', null);\n        },\n\n        setupUserModel() {\n            set(this, 'selected', this.store.createRecord('user', {}));\n        },\n\n        async createUser() {\n            if (!this.selected.isNew) return this.send('addUser', this.selected);\n            set(this, 'loading', true);\n            this.users.pushObject(this.selected);\n            if (this.usersChanged) this.usersChanged(this.users);\n            set(this, 'loading', false);\n        },\n\n        async changeUser(user) {\n            // if selected user has dirty records, ask confirmation before changing\n            if (!(await this.confirmDiscardUnsavedChanges())) return;\n            set(this, 'loading', true);\n            set(this, 'selected', await user);\n            set(this, 'loading', false);\n        },\n\n        userEdited() {\n            if (this.usersChanged) this.usersChanged(this.users);\n            this.notifications.success('Tiedot tallennettu', { autoClear: true });\n        },\n\n        async userAdded(user) {\n            set(this, 'loading', true);\n            const newUser = await this.store.findRecord('user', user.id, { reload: true });\n            set(this, 'selected', newUser);\n            if (this.usersChanged) this.usersChanged(this.users);\n            this.notifications.success('Tiedot tallennettu', { autoClear: true });\n            set(this, 'loading', false);\n        },\n\n        removeUserFromList(user) {\n            if (this.selected && this.selected.id == user.id) {\n                set(this, 'selected', false);\n            }\n            this.users.removeObject(user);\n            this.usersChanged(this.users);\n        },\n        changeProject(project) {\n            if (typeOf(project) == 'object') return;\n            set(this, 'project', project);\n            this.projectChanged(project);\n            if (this.users) this.updateUserList(project);\n            if (!project) {\n                set(this, 'users', A());\n            }\n        },\n\n        activateCardregister() {\n            this.activateCardRegister();\n        },\n    },\n\n    async alreadyOrientated(user, project) {\n        const orientations = await this.store.query('orientation', {\n            ori_site: get(project, 'id'),\n            ori_user: get(user, 'id'),\n        });\n        if (orientations.length > 0) {\n            this.notifications.warning(this.intl.t('orientations.already_orientated'), {\n                autoClear: true,\n            });\n            return true;\n        }\n        return false;\n    },\n\n    updateUserList(project) {\n        this.users.forEach(async (user) => {\n            if (await this.alreadyOrientated(user, project)) {\n                this.users.removeObject(user);\n            }\n        });\n    },\n\n    async confirmDiscardUnsavedChanges() {\n        if (this.selected && this.selected.hasDirtyAttributes) {\n            return await this.dialogs.confirm(this.intl.t('orientations.dialog.discard_unsaved.user_changes'));\n        }\n        return true;\n    },\n\n});\n","export default Ember.HTMLBars.template({\"id\":\"32shsQT5\",\"block\":\"{\\\"symbols\\\":[\\\"cards\\\",\\\"cardComponent\\\",\\\"card\\\",\\\"user\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"column1 \\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"isMobileComputed\\\"]],\\\"full-width\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.choose_project_first\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"orientation.ori_site\\\"],[[\\\"class\\\",\\\"value\\\",\\\"change\\\",\\\"usePowerDropdown\\\"],[\\\"add-fields form-control\\\",[24,[\\\"project\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeProject\\\"],null],true]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.select-users.choose_persons\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"orientation.ori_user\\\"],[[\\\"class\\\",\\\"prompt\\\",\\\"value\\\",\\\"change\\\",\\\"usePowerDropdown\\\",\\\"showCreate\\\",\\\"createLabel\\\",\\\"createNew\\\"],[\\\"form-control add-fields\\\",[28,\\\"t\\\",[\\\"orientations.select-users.add_person\\\"],null],[24,[\\\"userSelector\\\"]],\\\"addUser\\\",true,true,[28,\\\"t\\\",[\\\"orientations.select-users.create_new\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setupUserModel\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group user-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"users\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",[29,[\\\"list-group-item user-\\\",[23,4,[\\\"id\\\"]],\\\" \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"selected\\\"]],[23,4,[]]],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"changeUser\\\",[23,4,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[23,4,[\\\"lastname\\\"]],[23,4,[\\\"firstname\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,4,[\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,4,[\\\"lastname\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                     \\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"pull-right move \\\",[28,\\\"if\\\",[[23,4,[\\\"isValid\\\"]],\\\"move-Checkmark\\\",\\\"move-Error\\\"],null]]]],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"pull-right move move-Delete remove-user\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeUserFromList\\\",[23,4,[]]]],[8],[9],[0,\\\"\\\\n                \\\"],[4,\\\"unless\\\",[[24,[\\\"gui\\\",\\\"isMobileComputed\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"selected\\\"]],[23,4,[]]],null]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"arrow-right\\\"],[8],[9]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"gui\\\",\\\"isMobileComputed\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"column2\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"user-column1\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"header\\\"],[8],[1,[28,\\\"t\\\",[\\\"orientations.select-users.person_info\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"rounded-content\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"content \\\",[28,\\\"unless\\\",[[28,\\\"or\\\",[[24,[\\\"userModel\\\"]],[24,[\\\"selected\\\"]]],null],\\\"center\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"selected\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"selected\\\",\\\"isEditable\\\"]],[24,[\\\"selected\\\",\\\"isNew\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"collector/form-add/forms/user\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"afterSave\\\",\\\"showSaved\\\",\\\"rowAdded\\\",\\\"rowEdited\\\",\\\"addUser\\\"],[\\\"user\\\",[24,[\\\"selected\\\"]],\\\"orientations.add.index\\\",false,[28,\\\"action\\\",[[23,0,[]],\\\"userAdded\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"userEdited\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"createUser\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"center-error\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.not_found.user\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[1,[22,\\\"errorMessage\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.select-users.choose_person\\\"],null],false],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"user-column2\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"header\\\"],[8],[1,[28,\\\"t\\\",[\\\"orientations.select-users.competences\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"rounded-content \\\",[28,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"card\\\"],null],\\\"card-background\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content center mb-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"savingCardRegister\\\"]],\\\"start\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"savingCardRegister\\\"]],\\\"done\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                 \\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"card\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"no-cardregister\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!userlevel=5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.select-users.cardregisternotinuse_contact_admin\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.select-users.cardregisternotinuse\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-large\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"activateCardregister\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.start_using_product\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"selected\\\"]]],null,{\\\"statements\\\":[[4,\\\"user-competences\\\",null,[[\\\"user\\\"],[[24,[\\\"selected\\\"]]]],{\\\"statements\\\":[[4,\\\"each\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[]],\\\"expected `cardComponent` to be a contextual component but found a string. Did you mean `(component cardComponent)`? ('tt4/pods/components/orientations/select-users/template.hbs' @ L88:C38) \\\"],null]],[[\\\"record\\\"],[[23,3,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"cardregister.nocompetences\\\"],null],false],[9],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"du-de\\\",null,[[\\\"number\\\"],[6]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1,2]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/orientations/select-users/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    session: service(),\n\n    numberCheckPattern:\n        /\\+(9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)\\W*\\d\\W*\\d\\W*\\d\\W*\\d\\W*\\d\\W*\\d\\W*\\d\\W*\\d\\W*(\\d{1,2})$/i,\n    isInvalid: false,\n    canBeEmpty: true,\n\n    init() {\n        this._super();\n        if (this.session.currentUser.company_info.country === 'fi') this.send('setValue', '+358');\n        if (this.session.currentUser.company_info.country === 'se') this.send('setValue', '+46');\n    },\n\n    actions: {\n        validate(number) {\n            let isValid = false;\n            if (!number && get(this, 'canBeEmpty')) {\n                set(this, 'validation_error', false);\n                set(this, 'isInvalid', false);\n                isValid = true;\n            } else if (number) {\n                if (this.numberCheckPattern.test(number)) {\n                    set(this, 'validation_error', false);\n                    set(this, 'isInvalid', false);\n                    isValid = true;\n                } else {\n                    set(this, 'validation_error', true);\n                    set(this, 'isInvalid', true);\n                }\n            }\n            if (this.onValidate) {\n                this.onValidate(isValid);\n            }\n        },\n        setCountryCode(code) {\n            set(this, 'value', code);\n        },\n\n        setValue(value) {\n            let newValue = value;\n\n            // If the number already has a country code, just change the country code\n            if (this.numberCheckPattern.test(this.value))\n                newValue = this.value.replace(\n                    '+' + this.value.match(this.numberCheckPattern)[1],\n                    value,\n                );\n\n            // if the number is set without a country code, add the country code to the beginning of the number\n            if (this.value && !this.value.includes('+')) newValue = value + ' ' + this.value;\n\n            set(this, 'value', newValue);\n            this.send('validate', newValue);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"ASra300I\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"flex-phone-field \\\",[28,\\\"if\\\",[[24,[\\\"validation_error\\\"]],\\\"has-error\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[5,\\\"bs-dropdown\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"button\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-toggle form-control add-fields phone-number-button\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[28,\\\"country-flag\\\",[[24,[\\\"value\\\"]],\\\"number\\\"],null],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu phone-number-dropdown\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"+358\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-fi\\\"],[8],[9],[0,\\\" +358\\\"],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"+46\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-se\\\"],[8],[9],[0,\\\" +46\\\"],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"+371\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-lv\\\"],[8],[9],[0,\\\" +371\\\"],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"+372\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-ee\\\"],[8],[9],[0,\\\" +372\\\"],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"+48\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-pl\\\"],[8],[9],[0,\\\" +48\\\"],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"+44\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-gb\\\"],[8],[9],[0,\\\" +44\\\"],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"+49\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-de\\\"],[8],[9],[0,\\\" +49\\\"],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"+33\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-fr\\\"],[8],[9],[0,\\\" +33\\\"],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"+36\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-hu\\\"],[8],[9],[0,\\\" +36\\\"],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"+34\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-es\\\"],[8],[9],[0,\\\" +34\\\"],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"+31\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-nl\\\"],[8],[9],[0,\\\" +31\\\"],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"+47\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-no\\\"],[8],[9],[0,\\\" +47\\\"],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"+370\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-lt\\\"],[8],[9],[0,\\\" +370\\\"],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"+1\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-us\\\"],[8],[9],[0,\\\" +1\\\"],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\",\\\"keyUp\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"name\\\"]],[24,[\\\"placeholder\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validate\\\",[24,[\\\"value\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"validation_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"has-error-icon glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/phone-number/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action, get, set } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport collector from 'tt4/classes/collector';\nimport moment from 'moment';\nimport podNames from 'ember-component-css/pod-names';\nimport { later } from '@ember/runloop';\n\nexport default class PresenceClockcardComponent extends Component {\n    @service store;\n    @service session;\n    @service intl;\n    @service dialogs;\n    @service('collector-service') collector;\n    @service evented;\n\n    @tracked model = null;\n    @tracked selectedProject = null;\n    @tracked inActive = false;\n    @tracked outActive = true;\n    @tracked inoutLoading = false;\n    @tracked timeout = false;\n    @tracked seconds = 0;\n    @tracked apiError = null;\n    @tracked loading = false;\n\n    constructor() {\n        super(...arguments);\n        this.initPresence();\n    }\n\n    get styleNamespace() {\n        return podNames['presence-clockcard'];\n    }\n\n    async initPresence() {\n        this.loading = true;\n        let dateRange = `${moment().subtract(1, 'weeks').format('YYYY-MM-DD')}_${moment().format(\n            'YYYY-MM-DD',\n        )}`;\n        let data = await this.store.query('presence', {\n            date: dateRange,\n            user: 'self',\n            sideload: true,\n            out: '(empty)',\n            status: 'open',\n        });\n\n        let firstObject = get(data, 'firstObject');\n        if (firstObject) {\n            this.model = firstObject;\n            this.inActive = true;\n            this.outActive = false;\n        } else {\n            this.model = this.store.createRecord('presence', {\n                date: moment().format('YYYY-MM-DD'),\n            });\n        }\n        this.selectedProject = this.model.project;\n        this.checkPresenceOver16h();\n        this.loading = false;\n    }\n\n    get location() {\n        return collector.getFormObject('presence.location');\n    }\n\n    get filter() {\n        return { presence_project: 'on' };\n    }\n\n    get projectField() {\n        let field = this.collector.fieldArray('presence', ['project'])[0];\n        field.value = this.model?.project;\n        field.filterOptions = { presence_project: 'on' };\n        return field;\n    }\n\n    get mySiteSelected() {\n        return this.session.currentUser.currentMySite && this.outActive;\n    }\n\n    get projectDisabled() {\n        return this.inActive ? 'disabled' : false;\n    }\n\n    get forceLocation() {\n        return (\n            collector.getFormObject('rojectroject.force_location') &&\n            this.session.currentUser.userlevel !== '5'\n        );\n    }\n\n    get showEndLocation() {\n        return collector.getFormObject('presence.end_location');\n    }\n\n    async getIn(row) {\n        if (!this.inActive) {\n            let project = await this.store.findRecord('project', this.selectedProject.id, {\n                reload: true,\n            });\n            if (!project.presence_project) {\n                this.dialogs.alert(this.intl.t('presence.not_an_pl_project'));\n                this.inActive = false;\n                this.outActive = true;\n                this.inoutLoading = false;\n            } else {\n                row.project = project;\n                await this.saveRow(row, 'in');\n                this.inActive = true;\n                this.outActive = false;\n            }\n        }\n    }\n    async getOut(row) {\n        if (!this.outActive) {\n            await this.saveRow(row, 'out');\n            this.inActive = false;\n            this.outActive = true;\n        }\n    }\n    async saveRow(row, status) {\n        try {\n            this.apiError = null;\n            if (status === 'out') {\n                set(row, 'in', undefined);\n                set(row, 'out', moment().format('HH:mm'));\n            } else if (status === 'in') {\n                set(row, 'in', moment().format('HH:mm'));\n                set(row, 'date', moment().format('YYYY-MM-DD'));\n            } else if (status === 'error') {\n                set(row, 'in', undefined);\n                set(row, 'status', 'error_out');\n            }\n\n            await row.save();\n            this.evented.storeEvent('insert', 'presence', null);\n\n            if (status === 'out' || status === 'error') {\n                let newrow = this.store.createRecord('presence', {\n                    date: moment().format('YYYY-MM-DD'),\n                    project: this.selectedProject,\n                    in: moment().format('HH:mm'),\n                });\n                this.model = newrow;\n            }\n        } catch (error) {\n            // Handle and log the error appropriately\n            this.apiError = `An error occurred: ${error.message || JSON.stringify(error)}`;\n        } finally {\n            this.inoutLoading = false;\n        }\n    }\n    checkPresenceOver16h() {\n        if (!this.outActive) {\n            // Only perform check if not already out\n            let now = moment();\n            let inDateTime = moment(`${this.model.date} ${this.model.in}`);\n            let diff = now.diff(inDateTime, 'hours');\n\n            if (diff >= 16) {\n                this.dialogs\n                    .alert(this.intl.t('presence.over16h_automatic_checkout'))\n                    .then(this.handleAutomaticCheckout.bind(this));\n            }\n        }\n    }\n\n    handleAutomaticCheckout() {\n        this.saveRow(this.model, 'error');\n        this.inActive = false;\n        this.outActive = true;\n    }\n\n    updateSecs() {\n        if (this.seconds > 0) {\n            later(() => {\n                this.seconds--;\n                this.updateSecs();\n            }, 1000);\n        }\n    }\n    @action\n    async worksitePresence(value) {\n        if (this.timeout) return;\n\n        this.inoutLoading = true;\n        this.timeout = true;\n        this.seconds = 5;\n        this.updateSecs();\n\n        later(() => (this.timeout = false), 5000);\n\n        if (value === 'in') {\n            await this.getIn(this.model);\n        } else if (value === 'out') {\n            await this.getOut(this.model);\n        }\n        this.inoutLoading = false;\n    }\n\n    @action\n    setProject(project) {\n        this.selectedProject = project;\n    }\n\n    @action\n    async closePresence() {\n        if(this.args.close) this.args.close();\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"IhqnCJN8\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.presence\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[7,\\\"p\\\",false],[12,\\\"class\\\",\\\"move move-Cross add-page-cross no-margin-row\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closePresence\\\"]],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"presence-clockcard \\\",[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"presence-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"presence.worksite\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"mySiteSelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"presence-text\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"b\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[24,[\\\"session\\\",\\\"currentUser\\\",\\\"company_info\\\",\\\"company_name\\\"]],false],[0,\\\"\\\\n                                -\\\\n                                \\\"],[1,[24,[\\\"selectedProject\\\",\\\"name\\\"]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"my-sites\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.change\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"projectDisabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"presence-text\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[24,[\\\"selectedProject\\\"]],\\\"project\\\",\\\"presence\\\"]]],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"change\\\",\\\"filter\\\",\\\"usePowerDropdown\\\"],[[24,[\\\"projectField\\\"]],\\\"form-control add-fields\\\",\\\"setProject\\\",[24,[\\\"filter\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selectedProject\\\",\\\"help\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-info-sign\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[24,[\\\"selectedProject\\\",\\\"help\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"selectedProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"presence-icons text-center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"outActive\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"in\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"selectedProject\\\"]],\\\"active\\\"],null],\\\"\\\\n                                        big-icon circle-background\\\\n                                        \\\",[28,\\\"if\\\",[[24,[\\\"timeout\\\"]],\\\"timeout\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"worksitePresence\\\",\\\"in\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"inoutLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"load-text\\\"],[8],[0,\\\"\\\\n                                            \\\"],[1,[28,\\\"t\\\",[\\\"presence.loading\\\"],null],false],[0,\\\"\\\\n                                            \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"presence.check\\\"],null],false],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"presence.in\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"timeout\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[1,[22,\\\"seconds\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"out\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"big-icon circle-background \\\",[28,\\\"if\\\",[[24,[\\\"timeout\\\"]],\\\"timeout\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"worksitePresence\\\",\\\"out\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"inoutLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"load-text\\\"],[8],[0,\\\"\\\\n                                            \\\"],[1,[28,\\\"t\\\",[\\\"presence.loading\\\"],null],false],[0,\\\"\\\\n                                            \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"presence.check\\\"],null],false],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"presence.out\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"timeout\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[1,[22,\\\"seconds\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"presence-text\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selectedProject\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"inActive\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"presence.currently_on_worksite\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"outActive\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"presence.currently_not_on_worksite\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"location\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6 col-lg-4 col-lg-offset-4 col-md-offset-3 col-sm-offset-2\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group text-center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"outActive\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showEndLocation\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"gps-location\\\",null,[[\\\"value\\\",\\\"model\\\"],[[24,[\\\"model\\\",\\\"end_location\\\"]],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"gps-location\\\",null,[[\\\"value\\\",\\\"model\\\"],[[24,[\\\"model\\\",\\\"location\\\"]],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"gps-location\\\",null,[[\\\"value\\\",\\\"model\\\"],[[24,[\\\"model\\\",\\\"location\\\"]],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"apiError\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.error_prefix\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[8],[1,[22,\\\"apiError\\\"],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/presence-clockcard/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/product-card/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProductCardComponent;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nProductCardComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    cdn: Ember.inject.service(),\n    image: Em.computed(function () {\n        if (this.get('product.image')) {\n            return this.get('cdn').url('images/products/' + this.get('product.image'));\n        }\n    }),\n    actions: {\n        click: function () {\n            if (\n                this.get('product.selected') ||\n                this.get('products').filterBy('selected').length === 0\n            ) {\n                if (this.get('click')) {\n                    return this.click(this.get('product'));\n                }\n            } else if (this.get('products').filterBy('selected').length > 0) {\n                this.get('products').map((product) => {\n                    return product.set('selected', false);\n                });\n                if (this.get('click')) {\n                    return this.click(this.get('product'));\n                }\n            }\n        },\n        infoButton: function () {\n            return this.infoButton();\n        },\n    },\n});\n\nexport default ProductCardComponent;\n","export default Ember.HTMLBars.template({\"id\":\"6OwTkJiz\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"col-xs-12 col-sm-6 col-md-4 \\\",[28,\\\"if\\\",[[24,[\\\"product\\\",\\\"disabled_and_selected\\\"]],\\\"product_card_holder_disabled\\\",\\\"product_card_holder\\\"],null],\\\" \\\"]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"product_card \\\",[28,\\\"if\\\",[[24,[\\\"product\\\",\\\"selected\\\"]],\\\"selected\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"product\\\",\\\"disabled_and_selected\\\"]],\\\"selected\\\"],null]]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-1\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"product\\\",\\\"icon\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move \\\",[24,[\\\"product\\\",\\\"icon\\\"]],\\\" right-menu menu-icon\\\"]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h3\\\",true],[8],[1,[24,[\\\"product\\\",\\\"header\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-7 col-md-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"texts\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"purify-dom\\\",[[24,[\\\"product\\\",\\\"text\\\"]]],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-sm-5 col-md-6 product_image\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"image\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"img\\\",true],[11,\\\"src\\\",[29,[[22,\\\"image\\\"]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"product\\\",\\\"disabled_and_selected\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"select_container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"checkbox \\\",[28,\\\"if\\\",[[24,[\\\"product\\\",\\\"selected\\\"]],\\\"checked\\\"],null]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"selected\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.product_selected\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"select_container\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"click\\\",[24,[\\\"product\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"checkbox \\\",[28,\\\"if\\\",[[24,[\\\"product\\\",\\\"selected\\\"]],\\\"checked\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"product\\\",\\\"selected\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"selected\\\"],[8],[1,[28,\\\"if\\\",[[24,[\\\"product\\\",\\\"selected\\\"]],[28,\\\"t\\\",[\\\"register.product_selected\\\"],null],[28,\\\"t\\\",[\\\"register.select_product\\\"],null]],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"product\\\",\\\"selected\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"select-container order-button pull-right\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"infoButton\\\",[24,[\\\"product\\\",\\\"name\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"settings.products.integration_info_button\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"integration-info-popup\\\",null,[[\\\"product\\\",\\\"triggerShowModal\\\"],[[24,[\\\"product\\\",\\\"name\\\"]],[24,[\\\"showIntegrationModal\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"product\\\",\\\"link\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"info-button\\\"],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Info\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moreInfo\\\",[24,[\\\"product\\\",\\\"link\\\"]]]],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/product-card/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action, set } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport podNames from 'ember-component-css/pod-names';\nimport { initializeVersionInfo } from 'tt4/utils/version-info';\nimport { inject as service } from '@ember/service';\nimport config from 'tt4/config/environment';\nimport Ember from 'ember';\n\nexport default class ProfileModalComponent extends Component {\n  @service intl;\n  @service gui;\n  @service loadTranslations;\n  @service ttapi;\n  @service('collector-service') Collector;\n  @service moment;\n  @service intl;\n  @service analytics;\n\n  @tracked devModeClicks = 0;\n  @tracked devModeOn = Ember.devModeOn === true;\n  @tracked profileImg = this.args.profileImg;\n  @tracked session = this.args.session;\n  @tracked communityLink = this.args.communityLink;\n  @tracked version = '';\n  @tracked currentLanguage = localStorage['lang'] || 'en';\n  @tracked copiedPartnerId = ''; // Added to track if partner id is copied in test\n\n  get styleNamespace() {\n    return podNames['profile-modal'];\n  }\n\n  constructor() {\n    super(...arguments);\n    initializeVersionInfo(this);\n  }\n\n  @action\n  handleCopyPartnerId() {\n    if (typeof this.args.copyPartnerId === 'function') {\n        this.args.copyPartnerId();\n    }\n    set(this,'copiedPartnerId', this.session.currentUser.partnerid); // For testing purposes\n  }\n\n  @action\n  handlerrChangeLanguage() {\n    this.args.changeLanguage();\n  }\n\n  @action\n  handleLogout() {\n    if(typeof this.args.logout === 'function') {\n        this.args.logout();\n    }\n    this.trackAnalyticsEvent('Logout clicked');\n  }\n\n  @action\n  devmode() {\n    this.devModeClicks += 1;\n    if (this.devModeClicks > 6) {\n      Ember.dev();\n      this.devModeClicks = 0;\n    }\n    this.devModeOn = Ember.devModeOn === true;\n  }\n\n  @action\n  handleChangeLanguage(lang) {\n    moment.locale(lang);\n    localStorage['lang'] = lang;\n\n    this.currentLanguage = lang;\n\n    // save selected lang to ttapi\n    this.Collector.ttapi({\n        url: 'api/setUserLang?lang=' + lang,\n        method: 'post',\n    });\n\n    this.trackAnalyticsEvent('Change language clicked, language: ' + lang);\n\n    // eslint-disable-next-line ember/named-functions-in-promises\n    this.loadTranslations.fetch().then(() => {\n        return (this.intl.locale = lang);\n    });\n }\n\n @action\n handleClose() {\n    if (this.args.dd && typeof this.args.dd.closeDropdown === 'function') {\n     this.args.dd.closeDropdown();\n   }\n }\n\n @action\n trackAnalyticsEvent(action) {\n    this.analytics.trackEvent({\n        category: 'ProfileModal',\n        action: action,\n        label: 'ProfileModal',\n    });\n }\n\n get dropdownItems() {\n    return this.args.items || [];\n  }\n\n  get profileImgUrl() {\n    // Convert SafeString to string if necessary\n    let profileImgString = this.profileImg.toString();\n    const match = profileImgString.match(/url\\((.*?)\\)/);\n    return match ? match[1] : '';\n  }\n\n  get productUpdatesUrl() {\n    const brand = config.brand;\n    const intl = this.intl;\n\n    if (brand === 'visma') {\n      return intl.t('general.product_updates_url_entry').toString();\n    } else if (brand === 'otta') {\n      return intl.t('general.product_updates_url_otta').toString();\n    } else {\n      return intl.t('general.product_updates_url').toString();\n    }\n  }\n\n  get impersonate() {\n    if (this.session.session.content.authenticated.scope) {\n      return true;\n    }\n    return false;\n  }\n}\n","export default Ember.HTMLBars.template({\"id\":\"l/vAoE+M\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"profile-modal \\\",[23,0,[\\\"styleNamespace\\\"]],\\\" p-4\\\"]]],[8],[0,\\\"\\\\n  \\\"],[2,\\\" Header Section with User Details \\\"],[0,\\\"\\\\n  \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"header-background\\\"],[8],[0,\\\"\\\\n    \\\"],[2,\\\" User Name and Company \\\"],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"header-user-details\\\"],[8],[0,\\\"\\\\n      \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"header-user-name\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[23,0,[\\\"session\\\",\\\"currentUser\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,0,[\\\"session\\\",\\\"currentUser\\\",\\\"lastname\\\"]],false],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"profile-modal-close-button\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"handleClose\\\"]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"vismaicon vismaicon-close\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n      \\\"],[9],[0,\\\"\\\\n      \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"header-user-company\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[23,0,[\\\"session\\\",\\\"currentUser\\\",\\\"company\\\"]],false],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"header-user-partnerid\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"header.actions.profile.copyPartnerId.title\\\"],null]],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"handleCopyPartnerId\\\"]]]],[8],[0,\\\"\\\\n          (\\\"],[1,[23,0,[\\\"session\\\",\\\"currentUser\\\",\\\"partnerid\\\"]],false],[0,\\\")\\\\n        \\\"],[9],[0,\\\"\\\\n      \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n  \\\"],[9],[0,\\\"\\\\n\\\\n  \\\"],[2,\\\" Profile Image \\\"],[0,\\\"\\\\n  \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"d-flex justify-content-center profile-img-container\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"trackAnalyticsEvent\\\"]],\\\"Edit profile-image clicked\\\"],null]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"query\\\",\\\"route\\\",\\\"model\\\"],[\\\"rounded-circle profile-img-link\\\",[28,\\\"hash\\\",null,[[\\\"anchor\\\",\\\"profileImgClicked\\\"],[\\\"image-field\\\",true]]],\\\"users.edit\\\",[23,0,[\\\"session\\\",\\\"currentUser\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[0,\\\"      \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"profile-img\\\"],[11,\\\"src\\\",[29,[[23,0,[\\\"profileImgUrl\\\"]]]]],[10,\\\"alt\\\",\\\"Profile image\\\"],[10,\\\"style\\\",\\\"width: 80px; height: 80px; object-fit: cover;\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"  \\\"],[9],[0,\\\"\\\\n\\\\n  \\\"],[2,\\\" Center Section with Language Buttons and Profile Links \\\"],[0,\\\"\\\\n  \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"header-center-section text-center mb-4\\\"],[8],[0,\\\"\\\\n    \\\"],[2,\\\" Language Buttons \\\"],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"language-buttons\\\"],[8],[0,\\\"\\\\n      \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn profile-lang-btn \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"currentLanguage\\\"]],\\\"fi\\\"],null],\\\"active\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"handleChangeLanguage\\\"]],\\\"fi\\\"],null]]],[8],[0,\\\"FI\\\"],[9],[0,\\\"\\\\n      \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn profile-lang-btn \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"currentLanguage\\\"]],\\\"en\\\"],null],\\\"active\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"handleChangeLanguage\\\"]],\\\"en\\\"],null]]],[8],[0,\\\"EN\\\"],[9],[0,\\\"\\\\n      \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn profile-lang-btn \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"currentLanguage\\\"]],\\\"sv\\\"],null],\\\"active\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"handleChangeLanguage\\\"]],\\\"sv\\\"],null]]],[8],[0,\\\"SV\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[23,0,[\\\"devModeOn\\\"]],[24,[\\\"impersonate\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn profile-lang-btn \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"currentLanguage\\\"]],\\\"xy\\\"],null],\\\"active\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"handleChangeLanguage\\\"]],\\\"xy\\\"],null]]],[8],[0,\\\"XY\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[2,\\\" Profile and other links \\\"],[0,\\\"\\\\n    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"profile-links list-unstyled\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",false],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"handleClose\\\"]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",\\\"mb-2 profile-link-item\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"trackAnalyticsEvent\\\"]],\\\"My profile clicked\\\"],null]]],[8],[0,\\\"\\\\n                    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"link-primary\\\",\\\"users.edit\\\",[23,0,[\\\"session\\\",\\\"currentUser\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.my_profile\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"passwordDisabled\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",\\\"mb-2 profile-link-item\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"trackAnalyticsEvent\\\"]],\\\"Change password clicked\\\"],null]]],[8],[0,\\\"\\\\n            \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"data-test-id\\\",\\\"route\\\"],[\\\"link-primary\\\",\\\"profile-modal-change-password\\\",\\\"changepassword\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.change_password\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,0,[\\\"communityLink\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",\\\"mb-2 profile-link-item\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"trackAnalyticsEvent\\\"]],\\\"Instructions link clicked\\\"],null]]],[8],[0,\\\"\\\\n          \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[29,[[23,0,[\\\"communityLink\\\"]]]]],[10,\\\"target\\\",\\\"_blank\\\"],[10,\\\"rel\\\",\\\"noopener noreferrer\\\"],[10,\\\"class\\\",\\\"link-primary\\\"],[8],[1,[28,\\\"t\\\",[\\\"profile.modal-instructions\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"vismaicon vismaicon-sm vismaicon-export profile-export-icon\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[2,\\\" Logout Button \\\"],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"logout-button\\\"],[8],[0,\\\"\\\\n      \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success btn-lg w-100 profile-logout-btn\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"handleLogout\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.logout\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n  \\\"],[9],[0,\\\"\\\\n\\\\n  \\\"],[2,\\\" Footer Section with Version and Legal Info \\\"],[0,\\\"\\\\n  \\\"],[7,\\\"footer\\\",true],[10,\\\"class\\\",\\\"mt-4 mb-4 profile-footer\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"footer-top-2-items\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"devModeOn\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"p\\\",false],[12,\\\"class\\\",\\\"application-version small devModeOn\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"devmode\\\"]]]],[8],[1,[23,0,[\\\"version\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"p\\\",false],[12,\\\"class\\\",\\\"application-version small\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"devmode\\\"]]]],[8],[1,[23,0,[\\\"version\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copyright small mb-0 profile-footer-copyright\\\"],[8],[1,[28,\\\"t\\\",[\\\"visma.copyright\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"profile-bottom-section-ruler\\\"],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"footer-center-1-item\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"trademark-notice small\\\"],[8],[1,[28,\\\"t\\\",[\\\"visma.trademark_notice\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"footer-bottom-1-item\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",[29,[[23,0,[\\\"productUpdatesUrl\\\"]]]]],[12,\\\"class\\\",\\\"\\\"],[12,\\\"target\\\",\\\"_blank\\\"],[12,\\\"rel\\\",\\\"noopener noreferrer\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"trackAnalyticsEvent\\\"]],\\\"Product updates link clicked\\\"],null]]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"general.product_updates\\\"],null],false],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"vismaicon vismaicon-sm vismaicon-export profile-export-icon\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n  \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/profile-modal/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/project-files/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectFilesComponent;\n\nimport Ember from 'ember';\n\nProjectFilesComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    data: Em.computed(function () {\n        var params;\n        params = {};\n        params['project'] = this.get('project');\n        return this.get('store').query('projectfile', params);\n    }),\n});\n\nexport default ProjectFilesComponent;\n","export default Ember.HTMLBars.template({\"id\":\"SdD3bkIz\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"my-sites.projectfiles.nothing_found\\\"],null],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-striped table-condensed\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.projectfile.description\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.projectfile.file\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[23,1,[\\\"description\\\"]],\\\"description\\\",\\\"projectfile\\\"]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[23,1,[\\\"file\\\"]],\\\"file\\\",\\\"projectfile\\\"]]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/project-files/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/project-icon/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectIconComponent;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nProjectIconComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    classNames: ['inline-block'],\n    setProject: Em.on('didReceiveAttrs', function () {\n        if (this.get('project')) {\n            this.set('project', this.get('project'));\n        }\n    }),\n    // old code that fetched project from backend everytime\n    //return if @get('store').peekRecord('project', @get('project.id')).get('image.firstObject.thumb')\n    //@get('store').findRecord('project', @get('project.id')).then (proj) =>\n    //    @set 'project', proj\n    image_url: Em.computed('project.image.[]', function () {\n        if (this.get('project.image.firstObject.thumb')) {\n            return Ember.String.htmlSafe(\n                config.APP.COLLECTOR_API_URL + '/' + this.get('project.image.firstObject.thumb'),\n            );\n        }\n        return false;\n    }),\n    text: Em.computed('project', function () {\n        return this.get('project.name') ? this.get('project.name') : this.intl.t(('validation.project_missing'));\n    }),\n    shortText: Em.computed('text', function () {\n        return this.get('text').substr(0, 1);\n    }),\n    noProject: Em.computed('project', function () {\n        return !this.get('project') || this.get('project.id') === null;\n    }),\n    color: Em.computed('text', function () {\n        return this.get('Collector').randomizeColor(this.get('text'));\n    }),\n});\n\nexport default ProjectIconComponent;\n","export default Ember.HTMLBars.template({\"id\":\"p3zQRkuy\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"image_url\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"img-circle \\\",[28,\\\"if\\\",[[24,[\\\"square\\\"]],\\\"project-icon-square\\\",\\\"project-icon\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"smallIcon\\\"]],\\\"project-icon-smaller\\\",\\\"project-icon\\\"],null]]]],[11,\\\"style\\\",[29,[\\\"background-image:url(\\\\\\\"\\\",[22,\\\"image_url\\\"],\\\"\\\\\\\")\\\"]]],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"noProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"project-icon-svg-container\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"default-project-icon move move-Timespan\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"img-circle \\\",[28,\\\"if\\\",[[24,[\\\"square\\\"]],\\\"project-icon-square\\\",\\\"project-icon\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"smallIcon\\\"]],\\\"project-icon-smaller\\\",\\\"project-icon\\\"],null]]]],[11,\\\"style\\\",[29,[\\\"background-color: \\\",[22,\\\"color\\\"]]]],[8],[1,[22,\\\"shortText\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"delay\\\",\\\"text\\\"],[800,[24,[\\\"text\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/project-icon/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport podNames from 'ember-component-css/pod-names';\nimport { htmlSafe } from '@ember/string';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class PromoAdComponent extends Component {\n    @service session;\n    @service intl;\n    @service ajax;\n    @service intl;\n    @service ttapi;\n    @service('collector-service') collector;\n\n    @tracked email_message_sent;\n    @tracked sending;\n    @tracked showModal;\n    @tracked more_info;\n    @tracked sender;\n    @tracked debug_email;\n\n    constructor() {\n        super(...arguments);\n        //this.getOut();\n        this.done = false;\n        //console.log(\"products.\"+this.args.product);\n        if (this.collector.testNeedsOne('products.' + this.args.product)) {\n            this.done = true;\n        }\n        this.promoText = this.getPromoText();\n    }\n    get styleNamespace() {\n        return podNames['promo-ad'];\n    }\n    async getPromoText() {\n        let fileUrl = '';\n        let text = '';\n        let key = 'promo-texts-' + this.args.product + '-' + moment.locale();\n        fileUrl = `https://cloud-writer-prod.s3.amazonaws.com/${key}.html`;\n        try {\n            text = htmlSafe(await this.ajax.request(fileUrl, { dataType: 'text' }));\n        } catch (e) {\n            text = `cannot find text for ${key}`;\n        }\n        return text;\n    }\n    @action\n    async sendEmail() {\n        this.sending = true;\n        let mail = this.debug_email\n            ? this.debug_email\n            : this.intl.t('upgrade_service.send-to-email');\n\n        await this.ttapi.request('/sendEmail', {\n            method: 'post',\n            data: {\n                email: mail,\n                title:\n                    this.intl.t('upgrade_service.email-title') +\n                    ' - ' +\n                    this.session.currentUser.company +\n                    ' (' +\n                    this.session.currentUser.partnerid +\n                    ')',\n                content:\n                    this.intl.t('upgrade_service.email_content') +\n                    '\\r\\n' +\n                    this.more_info +\n                    '\\r\\n' +\n                    this.sender,\n            },\n        });\n        this.sending = false;\n        this.email_message_sent = true;\n    }\n\n    @action\n    closeModal() {\n        this.showModal = false;\n        this.sending = false;\n        this.email_message_sent = false;\n        this.more_info = '';\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"JMVgXsce\",\"block\":\"{\\\"symbols\\\":[\\\"@promoClass\\\",\\\"@background\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"ad-background \\\",[23,2,[]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"transitionOut\\\"],null],[28,\\\"t\\\",[\\\"ads.product-added-header\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"ads.product-added\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"buttons\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"transitionOut\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"ads.transition-out\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"promo-card \\\",[23,1,[]]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[23,0,[\\\"promoText\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"await\\\",[[23,0,[\\\"promoText\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"buttons\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showModal\\\"]]],null]],null]]],[8],[1,[28,\\\"t\\\",[\\\"ads.show-modal\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],[23,0,[\\\"closeModal\\\"]]],null],[28,\\\"t\\\",[\\\"upgrade_service.dialog-title\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"email_message_sent\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"upgrade_service.message-sent\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"upgrade-info-text\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"upgrade_service.info-text\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"dev-helper\\\",null,null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"header\\\"],[8],[1,[28,\\\"t\\\",[\\\"saved.modal.email\\\"],null],false],[0,\\\" (\\\"],[1,[28,\\\"t\\\",[\\\"general.dev-only\\\"],null],false],[0,\\\")\\\"],[9],[0,\\\"\\\\n                \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control input-lg\\\"],[12,\\\"type\\\",\\\"text\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"debug_email\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"header\\\"],[8],[1,[28,\\\"t\\\",[\\\"feedback.modal.sender\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control input-lg\\\"],[12,\\\"type\\\",\\\"text\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"sender\\\"]]]]],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"header\\\"],[8],[1,[28,\\\"t\\\",[\\\"upgrade_service.more_info\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[5,\\\"textarea\\\",[[12,\\\"rows\\\",\\\"6\\\"],[12,\\\"class\\\",\\\"form-control input-lg\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"more_info\\\"]]]]],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[5,\\\"addon/loading-button\\\",[],[[\\\"@classes\\\",\\\"@disabled\\\",\\\"@loading\\\",\\\"@onClick\\\"],[\\\"btn btn-m-link btn-block\\\",[23,0,[\\\"isDisabled\\\"]],[23,0,[\\\"sending\\\"]],[23,0,[\\\"sendEmail\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"saved.modal.send_email\\\"],null],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/promo-ad/template.hbs\"}});","import { get, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport Component from '@ember/component';\nimport config from '../../../config/environment';\nimport menu from '../../../mixins/menu';\n\nexport default Component.extend(menu, {\n    ajax: service(),\n    ttapi: service(),\n    router: service(),\n    tagName: 'li',\n    classNameBindings: ['isDisabled:disabled:'],\n\n    isDisabled: computed('disabledClass', function () {\n        return this.disabledClass === 'disabled';\n    }),\n\n    actions: {\n        generate() {\n            let urls = [];\n            let own_url = '';\n            let editurls = [];\n            var fullUrl = '';\n            var urlParts = '';\n\n            // lets just get edit-urls from dom-elements, easiest this way\n            let domrows = document.querySelectorAll('.general-report span.move-CheckedCheckbox');\n            for (var domrow of domrows) {\n                if (\n                    domrow.closest('thead') === null &&\n                    domrow.closest('tr').querySelector('span.move-Pencil').closest('a') !== null\n                ) {\n                    fullUrl = domrow\n                        .closest('tr')\n                        .querySelector('span.move-Pencil')\n                        .closest('a').href;\n                    urlParts = fullUrl.split('#');\n                    urls.push(urlParts[1]);\n                }\n            }\n            // if report doesnt have links, try to use urlFor for generating edit-urls\n            if (urls.length === 0) {\n                for (var row of get(this, 'rows')) {\n                    if (get(this, 'editRoute'))\n                        urls.push(this.router.urlFor(get(this, 'editRoute'), get(row, 'id')));\n                    else urls.push('/forms/' + get(this, 'form') + '/edit/' + get(row, 'id'));\n                }\n            }\n\n            // use app.movenium url always if not development\n            if (config.environment !== 'development') {\n                own_url = 'https://app.movenium.com/';\n            } else {\n                if (config.APP.OWN_URL.slice(-1) == '/') {\n                    own_url = config.APP.OWN_URL;\n                } else {\n                    own_url = config.APP.OWN_URL + '/';\n                }\n            }\n\n            let editUrl = '';\n\n            for (var url of urls) {\n                editUrl = own_url + '#' + url;\n                let qrUrl =\n                    'https://chart.googleapis.com/chart?cht=qr&chl=' +\n                    encodeURIComponent(editUrl) +\n                    '&choe=UTF-8&chs=250x250';\n                editurls.pushObject({ url: qrUrl });\n            }\n            let return_url_promise = get(this, 'ttapi').request('qr_codes', {\n                method: 'POST',\n                dataType: 'text',\n                data: {\n                    urls: editurls,\n                },\n            });\n            return_url_promise.then(function (return_url) {\n                var w = window.open('about:blank');\n                w.document.open();\n                w.document.write(return_url);\n                w.document.close();\n            });\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"73NV/WSV\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"generate\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.generate_qr_code\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/qr-code-generator/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { later } from '@ember/runloop';\nimport jsQR from 'jsqr';\n\nexport default Component.extend({\n    router: service(),\n\n    video: null,\n    stream: null,\n\n    init() {\n        this._super(...arguments);\n\n        const video = document.createElement('video');\n        set(this, 'video', video);\n\n        navigator.mediaDevices\n            .getUserMedia({ video: { facingMode: 'environment' } })\n            .then((stream) => this._setStream(stream, video));\n    },\n\n    willDestroyElement() {\n        this.stopCamera();\n    },\n\n    drawLine(canvas, begin, end, color) {\n        canvas.beginPath();\n        canvas.moveTo(begin.x, begin.y);\n        canvas.lineTo(end.x, end.y);\n        canvas.lineWidth = 4;\n        canvas.strokeStyle = color;\n        canvas.stroke();\n    },\n\n    tick() {\n        if (this.isDestroyed || this.isDestroying) return;\n\n        const video = get(this, 'video');\n        var canvasElement = document.getElementById('canvas');\n        var canvas = canvasElement.getContext('2d');\n\n        if (video.readyState === video.HAVE_ENOUGH_DATA) {\n            canvasElement.hidden = false;\n\n            const imageBoxSize = canvasElement.width;\n\n            canvasElement.height = imageBoxSize;\n            const ratio = video.videoWidth / video.videoHeight;\n\n            if (ratio > 1) {\n                const crop = ratio * imageBoxSize - imageBoxSize;\n                canvas.drawImage(\n                    video,\n                    (-1 * crop) / 2,\n                    0,\n                    canvasElement.width + crop / 2,\n                    imageBoxSize,\n                );\n            } else {\n                const crop = (1 / ratio) * imageBoxSize - imageBoxSize;\n                canvas.drawImage(\n                    video,\n                    0,\n                    (-1 * crop) / 2,\n                    imageBoxSize,\n                    canvasElement.height + crop / 2,\n                );\n            }\n\n            var imageData = canvas.getImageData(0, 0, canvasElement.width, canvasElement.height);\n\n            const code = jsQR(imageData.data, imageData.width, imageData.height, {\n                inversionAttempts: 'dontInvert',\n            });\n\n            if (code) {\n                if (this.parseCode(code.data)) {\n                    this.drawARbox(canvas, code);\n\n                    set(this, 'url', code.data);\n                    later(this, this.codeFound, 1000);\n                } else {\n                    if ((new Date().getTime() % 800) / 800 > 0.5)\n                        this.drawARbox(canvas, code, '#cfc848');\n                    requestAnimationFrame(this.tick.bind(this));\n                }\n            } else {\n                this.drawScanner(canvas, canvasElement.width, canvasElement.height);\n                requestAnimationFrame(this.tick.bind(this));\n            }\n        } else {\n            requestAnimationFrame(this.tick.bind(this));\n        }\n    },\n\n    drawScanner(canvas, width, height) {\n        const color = '#FF3B58';\n        const speed = 10000;\n\n        const d = new Date();\n        const n = ((d.getTime() % speed) / speed) * 2;\n        const y = height * (n > 1 ? 2 - n : n);\n\n        this.drawLine(canvas, { x: 0, y: y }, { x: width, y: y }, color);\n    },\n\n    drawARbox(canvas, code, color = 'green') {\n        this.drawLine(canvas, code.location.topLeftCorner, code.location.topRightCorner, color);\n        this.drawLine(canvas, code.location.topRightCorner, code.location.bottomRightCorner, color);\n        this.drawLine(\n            canvas,\n            code.location.bottomRightCorner,\n            code.location.bottomLeftCorner,\n            color,\n        );\n        this.drawLine(canvas, code.location.bottomLeftCorner, code.location.topLeftCorner, color);\n\n        const middleTop = this.getMiddlePoint(\n            code.location.topLeftCorner,\n            code.location.topRightCorner,\n        );\n        const middleBottom = this.getMiddlePoint(\n            code.location.bottomLeftCorner,\n            code.location.bottomRightCorner,\n        );\n        const shortLineTop = this.changeLength(middleTop, middleBottom, -0.1);\n        this.drawLine(canvas, shortLineTop.p1, shortLineTop.p2, color);\n\n        const shortLineBottom = this.changeLength(middleBottom, middleTop, -0.1);\n        this.drawLine(canvas, shortLineBottom.p1, shortLineBottom.p2, color);\n\n        const middleLeft = this.getMiddlePoint(\n            code.location.topLeftCorner,\n            code.location.bottomLeftCorner,\n        );\n        const middleRight = this.getMiddlePoint(\n            code.location.topRightCorner,\n            code.location.bottomRightCorner,\n        );\n        const shortLineLeft = this.changeLength(middleLeft, middleRight, -0.1);\n        this.drawLine(canvas, shortLineLeft.p1, shortLineLeft.p2, color);\n\n        const shortLineRight = this.changeLength(middleRight, middleLeft, -0.1);\n        this.drawLine(canvas, shortLineRight.p1, shortLineRight.p2, color);\n    },\n\n    getMiddlePoint(p1, p2) {\n        return { x: (p1.x + p2.x) / 2, y: (p1.y + p2.y) / 2 };\n    },\n\n    changeLength(p1, p2, multiplier) {\n        return {\n            p1: p1,\n            p2: { x: p1.x + (p2.x - p1.x) * multiplier, y: p1.y + (p2.y - p1.y) * multiplier },\n        };\n    },\n\n    stopCamera() {\n        if (get(this, 'video')) {\n            get(this, 'video').pause();\n            get(this, 'video').srcObject = null;\n        }\n\n        if (get(this, 'stream')) get(this, 'stream').getTracks()[0].stop();\n    },\n\n    codeFound() {\n        this.stopCamera();\n\n        const code = get(this, 'url');\n        const parsed = this.parseCode(code);\n\n        if (parsed === null) {\n            set(this, 'unrecogniced', true);\n            return;\n        }\n\n        if (get(this, 'autotransition') && parsed.type === 'transition') {\n            get(this, 'router').transitionTo(parsed.path);\n        }\n\n        get(this, 'onSuccess')(code, parsed);\n    },\n\n    parseCode(code) {\n        let path = null;\n\n        if (code.startsWith('https://tt.movenium.com/')) {\n            path = code.substring(25);\n        } else if (code.startsWith('https://app.movenium.com/')) {\n            path = code.substring(26);\n        }\n\n        if (path) {\n            return { type: 'transition', path: path };\n        }\n\n        return null;\n    },\n\n    _setStream(stream, video) {\n        set(this, 'stream', stream);\n        video.srcObject = stream;\n        video.setAttribute('playsinline', true); // required to tell iOS safari we don't want fullscreen\n        video.play();\n        requestAnimationFrame(this.tick.bind(this));\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"GDE8AJ+W\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"qrcode.show\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"scanner\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"canvas\\\",true],[10,\\\"id\\\",\\\"canvas\\\"],[10,\\\"hidden\\\",\\\"\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"unrecognized\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"qrcode.error\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/qrcode-reader/template.hbs\"}});","import { get, set } from '@ember/object';\nimport Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { getScriptsInOrder } from 'tt4/utils/getScript';\nimport config from '../../../config/environment';\n\n/* global reactComponents */\n\nexport default Component.extend({\n    cdn: service(),\n\n    unmountMethod: null,\n\n    async didReceiveAttrs() {\n        let url;\n        switch (config.target) {\n            case 'development':\n                url = 'http://localhost:9010/reactComponents.development.js';\n                break;\n            case 'release-next':\n            case 'next':\n                url = this.cdn.url('react/reactComponents.next.js');\n                break;\n            default:\n                url = this.cdn.url('react/reactComponents.production.js');\n                break;\n        }\n\n        await getScriptsInOrder([url]);\n\n        const unmountMethod = reactComponents.render(this.comp, this.element);\n        set(this, 'unmountMethod', unmountMethod);\n    },\n\n    willDestroyElement() {\n        const unmountMethod = get(this, 'unmountMethod');\n        if (unmountMethod) {\n            unmountMethod();\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"B37y0uC1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/react/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/report-filters-v2/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ReportFiltersComponent;\n\nimport Ember from 'ember';\n\nReportFiltersComponent = Ember.Component.extend({\n    ollector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    filterMode: false,\n    statusName: Em.computed('intl.primaryLocale', 'status', function () {\n        if (this.get('intl').exists('status.' + this.get('status'))) {\n            return this.get('intl').t('status.' + this.get('status'));\n        } else {\n            return this.get('status');\n        }\n    }),\n    statusTypes: Em.computed('form', function () {\n        var c, field, intl, option, options;\n        if (!this.get('form')) {\n            return [];\n        }\n        c = this.get('Collector');\n        intl = this.get('intl');\n        field = c.field(this.get('form'), 'status');\n        options = (function () {\n            var i, len, ref, results;\n            ref = field.options;\n            results = [];\n            for (i = 0, len = ref.length; i < len; i++) {\n                option = ref[i];\n                if (intl.exists('status.' + option)) {\n                    results.push({\n                        id: option,\n                        name: intl.t('status.' + option),\n                    });\n                } else {\n                    results.push({\n                        id: option,\n                        name: option,\n                    });\n                }\n            }\n            return results;\n        })();\n        return options;\n    }),\n    _mainDateFilter: Ember.computed('filters', function () {\n        return this.get('filters').find((filter) => {\n            return filter.type === 'date';\n        });\n    }),\n    _filters: Ember.computed('filters', function () {\n        var c, filters, hiddenFilters, showfilters;\n        c = this.get('Collector');\n        filters = this.get('filters');\n        if (!filters) {\n            return;\n        }\n        filters.forEach(function (item, key) {\n            if (item.type === 'date' && !Ember.isPresent(item.defaultValue)) {\n                item.defaultValue = item.value;\n            }\n            Em.set(item, 'name', item.field);\n            if (item.type != null) {\n                return;\n            }\n            return (item.type = 'database');\n        });\n        hiddenFilters = [];\n        showfilters = filters.filter(function (item) {\n            if (item.type === 'date') {\n                //if item.extra && c.fieldExists(item.form, item.field)\n                //    hiddenFilters.push item\n                //    return false\n                return false;\n            }\n            return item.type === 'searchbox' || c.fieldExists(item.form, item.field);\n        });\n        //@set 'hiddenFilters', hiddenFilters\n        return showfilters;\n    }),\n    groupByBox: Ember.computed('filters', function () {\n        return this.get('filters').find((filter) => {\n            return filter.type === 'groupByFilter';\n        });\n    }),\n    showClickHere: Ember.computed('_filters.@each.value', function () {\n        var novalues;\n        novalues = true;\n        this.get('_filters').forEach((filter) => {\n            if (!Ember.isEmpty(filter.value)) {\n                return (novalues = false);\n            }\n        });\n        if (this.get('groupByBox.value')) {\n            novalues = false;\n        }\n        return novalues;\n    }),\n    setDropdownFilterings: function (changeInField, value) {\n        var filtering, i, len, options, ref, results, setFilter;\n        ref = this.get('Collector').getDropdownDepency(changeInField);\n        results = [];\n        for (i = 0, len = ref.length; i < len; i++) {\n            filtering = ref[i];\n            setFilter = this.get('filters').findBy('name', filtering.field);\n            if (!setFilter) {\n                continue;\n            }\n            options = {};\n            if (typeof value === 'object') {\n                options[filtering.filter] = value ? value.get('id') : null;\n            } else {\n                options[filtering.filter] = value ? value : null;\n            }\n            results.push(setFilter.set('filterOptions', options));\n        }\n        return results;\n    },\n    actions: {\n        toggleFilter: function () {\n            return this.toggleProperty('filterMode');\n        },\n        status: function (status, filter) {\n            //            filter.set 'value', status\n            return this.set('status', status);\n        },\n        mainDateChanged: function (value) {\n            return this.send('filterChanged', value, this.get('_mainDateFilter.name'));\n        },\n        filterChanged: function (value, fieldName) {\n            var filter, id;\n            this.setDropdownFilterings(fieldName, value);\n            filter = this.get('filters').findBy('name', fieldName);\n            if (fieldName && Ember.isPresent(filter) && Ember.isPresent(filter.subform)) {\n                fieldName = filter.form + '-' + fieldName;\n            }\n            this.sendAction('filterValueChanged', value, fieldName);\n            if (value) {\n                if (typeof value.get === 'function') {\n                    if (Array.isArray(value)) {\n                        id = value.join();\n                    } else {\n                        id = value.get('id');\n                    }\n                } else {\n                    id = value;\n                }\n            } else {\n                id = null;\n            }\n            return filter.set('value', id);\n        },\n        searchChanged: function (value) {\n            return this.sendAction('filterValueChanged', value);\n        },\n        dateChanged: function (field, value) {\n            if (typeof value !== 'string') {\n                return;\n            }\n            return this.sendAction('filterValueChanged', value, field);\n        },\n        resetFilter: function (filter) {\n            return this.send('filterChanged', null, filter.field);\n        },\n        clearFilter: function (filter) {\n            if (!Em.isBlank(filter.value)) {\n                if (filter.extra || filter.type === 'groupByFilter') {\n                    this.send('filterChanged', null, filter.field);\n                    //                        @sendAction('filterValueChanged', null , item.field)\n                    return Ember.set(filter, 'value', null);\n                } else {\n                    if (filter.type === 'date') {\n                        this.sendAction('filterChanged', filter.defaultValue, filter.field);\n                        Ember.set(filter, 'value', filter.defaultValue);\n                    } else {\n                        Ember.set(filter, 'value', null);\n                    }\n                    if (filter.type === 'searchbox') {\n                        return Ember.set(filter, 'tmpvalue', '');\n                    }\n                }\n            }\n        },\n        clearFilters: function () {\n            var filters, i, item, len, results;\n            filters = this.get('filters');\n            results = [];\n            for (i = 0, len = filters.length; i < len; i++) {\n                item = filters[i];\n                results.push(this.send('clearFilter', item));\n            }\n            return results;\n        },\n    },\n});\n\nexport default ReportFiltersComponent;\n","export default Ember.HTMLBars.template({\"id\":\"CRaBvAs5\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"filter\\\",\\\"filter\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row reports-header-row\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6 col-lg-4 report-filter-component\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"date-range-picker\\\",null,[[\\\"start\\\",\\\"end\\\",\\\"value\\\",\\\"ranges\\\",\\\"wagePeriods\\\",\\\"dateChange\\\"],[[24,[\\\"_mainDateFilter\\\",\\\"start\\\"]],[24,[\\\"_mainDateFilter\\\",\\\"end\\\"]],[24,[\\\"_mainDateFilter\\\",\\\"value\\\"]],[24,[\\\"_mainDateFilter\\\",\\\"ranges\\\"]],[24,[\\\"_mainDateFilter\\\",\\\"wagePeriods\\\"]],\\\"mainDateChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"_filters\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6 col-lg-8\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter-box\\\"],[8],[0,\\\"\\\\n                \\\"],[5,\\\"basic-dropdown\\\",[],[[\\\"@verticalPosition\\\",\\\"@horizontalPosition\\\"],[\\\"below\\\",\\\"left\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,1,[\\\"Trigger\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter-box-input link\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"filters.search_params\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_filters\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"value\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label-m label-m-info label-filter\\\"],[8],[0,\\\"\\\\n                                            \\\"],[1,[28,\\\"translate-column\\\",null,[[\\\"form\\\",\\\"field\\\"],[[23,3,[\\\"form\\\"]],[23,3,[\\\"name\\\"]]]]],false],[0,\\\": \\\\n                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"filter-value\\\"],[8],[0,\\\"\\\\n                                                \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[23,3,[\\\"form\\\"]],[23,3,[\\\"name\\\"]],[23,3,[\\\"value\\\"]]]]],false],[0,\\\"\\\\n                                            \\\"],[9],[0,\\\"  \\\\n                                            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cancel link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clearFilter\\\",[23,3,[]]]],[8],[9],[0,\\\"\\\\n\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"groupByBox\\\",\\\"value\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label-m label-m-info label-filter\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"filters.group_fields\\\"],null],false],[0,\\\": \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"filter-value\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[24,[\\\"groupByBox\\\",\\\"value\\\"]],false],[9],[0,\\\"  \\\\n                                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cancel link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clearFilter\\\",[24,[\\\"groupByBox\\\"]]]],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showClickHere\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label-m label-m-info label-filter\\\"],[8],[1,[28,\\\"t\\\",[\\\"filters.click_to_add\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\">\\\\n                    \\\"],[6,[23,1,[\\\"Content\\\"]],[[12,\\\"class\\\",\\\"filter-selector\\\"],[12,\\\"overlay\\\",true]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_filters\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter-box row\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2 filter-name\\\"],[8],[1,[28,\\\"translate-column\\\",null,[[\\\"form\\\",\\\"field\\\"],[[23,2,[\\\"form\\\"]],[23,2,[\\\"name\\\"]]]]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-10\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"searchbox\\\",[23,2,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"search-box\\\",null,[[\\\"tmpvalue\\\",\\\"value\\\",\\\"change\\\"],[[23,2,[\\\"tmpvalue\\\"]],[23,2,[\\\"value\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"searchChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"database\\\",[23,2,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"singleselect\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,2,[]]],[[\\\"change\\\",\\\"useAsFilter\\\"],[\\\"filterChanged\\\",true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[\\\"extra\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,2,[]]],[[\\\"change\\\",\\\"useAsFilter\\\"],[\\\"filterChanged\\\",true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                            \\\"],[1,[28,\\\"database-multiple-filter\\\",null,[[\\\"filter\\\",\\\"value\\\",\\\"change\\\",\\\"allFilters\\\"],[[23,2,[]],[24,[\\\"value\\\"]],\\\"filterChanged\\\",[24,[\\\"_filters\\\"]]]]],false],[0,\\\"\\\\n                                        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,2,[]]],[[\\\"change\\\",\\\"useAsFilter\\\"],[\\\"filterChanged\\\",true]]],false],[0,\\\"\\\\n                                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"groupByBox\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"filter-box row\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2 filter-name\\\"],[8],[1,[28,\\\"t\\\",[\\\"filters.group_fields\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-10\\\"],[8],[1,[28,\\\"group-by-filter\\\",null,[[\\\"value\\\",\\\"form\\\",\\\"change\\\"],[[24,[\\\"groupByBox\\\",\\\"value\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/report-filters-v2/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/report-filters/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ReportFiltersComponent;\n\nimport Ember from 'ember';\n\nReportFiltersComponent = Ember.Component.extend({\n    layoutName: 'components/report-filters',\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    analytics: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    filterMode: false,\n    statusName: Ember.computed('intl.primaryLocale', 'status', function () {\n        if (this.get('intl').exists('status.' + this.get('status'))) {\n            return this.get('intl').t('status.' + this.get('status'));\n        } else {\n            return this.get('status');\n        }\n    }),\n    statusTypes: Em.computed('form', function () {\n        var c, field, intl, option, options;\n        if (!this.get('form')) {\n            return [];\n        }\n        c = this.get('Collector');\n        intl = this.get('intl');\n        field = c.field(this.get('form'), 'status');\n        options = (function () {\n            var i, len, ref, results;\n            ref = field.options;\n            results = [];\n            for (i = 0, len = ref.length; i < len; i++) {\n                option = ref[i];\n                if (intl.exists('status.' + option)) {\n                    results.push({\n                        id: option,\n                        name: intl.t('status.' + option),\n                    });\n                } else {\n                    results.push({\n                        id: option,\n                        name: option,\n                    });\n                }\n            }\n            return results;\n        })();\n        return options;\n    }),\n    dateObs: function () {\n        var dates;\n        if (this.get('startDate') && this.get('endDate')) {\n            return this.set('date', this.get('startDate') + '_' + this.get('endDate'));\n        } else if (this.get('date')) {\n            dates = this.get('date').split('_');\n            this.set('startDate', dates[0]);\n            return this.set('endDate', dates[1]);\n        } else {\n            return this.set('date', null);\n        }\n    }.observes('startDate', 'endDate', 'date'),\n    _filters: Ember.computed('filters', function () {\n        var c, filters, hiddenFilters;\n        c = this.get('Collector');\n        filters = this.get('filters');\n        if (!filters) {\n            return;\n        }\n        filters.forEach(function (item, key) {\n            if (item.type === 'date' && !item.hasOwnProperty('defaultValue')) {\n                item.defaultValue = item.value;\n            }\n            Em.set(item, 'name', item.field);\n            if (item.type != null) {\n                return;\n            }\n            return (item.type = 'database');\n        });\n        hiddenFilters = [];\n        filters = filters.filter(function (item) {\n            var ref;\n            if (item.hide_filter) {\n                return false;\n            }\n            if (item.extra && c.fieldExists(item.form, item.field)) {\n                hiddenFilters.push(item);\n                return false;\n            }\n            return (\n                (ref = item.type) === 'searchbox' ||\n                ref === 'groupByFilter' ||\n                c.fieldExists(item.form, item.field)\n            );\n        });\n        this.set('hiddenFilters', hiddenFilters);\n        return filters;\n    }),\n    setDropdownFilterings: function (changeInField, value) {\n        var dependencies, filtering, i, len, options, results, setFilter;\n        dependencies = this.get('Collector').getDropdownDepency(changeInField);\n        this.get('filters').forEach((field) => {\n            if (\n                Ember.isPresent(Ember.get(field, 'reload')) &&\n                Ember.get(field, 'reload') === changeInField\n            ) {\n                return dependencies.push({\n                    field: Ember.get(field, 'field'),\n                    filter: Ember.get(field, 'reload'),\n                });\n            }\n        });\n        results = [];\n        for (i = 0, len = dependencies.length; i < len; i++) {\n            filtering = dependencies[i];\n            setFilter = this.get('filters').findBy('name', filtering.field);\n            if (!setFilter) {\n                continue;\n            }\n            if (Ember.typeOf(filtering.filter) !== 'string') {\n                // This does not support array reloads currently\n                continue;\n            }\n            options = {};\n            if (typeof value === 'object') {\n                options[filtering.filter] = value ? value.get('id') : null;\n            } else {\n                options[filtering.filter] = value ? value : null;\n            }\n            results.push(setFilter.set('filterOptions', options));\n        }\n        return results;\n    },\n    isIE: Ember.computed(function () {\n        return this.get('gui.isIE');\n    }),\n    actions: {\n        toggleFilter: function () {\n            return this.toggleProperty('filterMode');\n        },\n        status: function (status, filter) {\n            //            filter.set 'value', status\n            return this.set('status', status);\n        },\n        filterChanged: function (value, fieldName) {\n            var filter, id;\n            this.setDropdownFilterings(fieldName, value);\n            filter = this.get('filters').findBy('name', fieldName);\n            if (fieldName && Ember.isPresent(filter) && Ember.isPresent(filter.subform)) {\n                fieldName = filter.form + '-' + fieldName;\n            }\n            this.sendAction('filterValueChanged', value, fieldName);\n            if (value) {\n                this.analytics.trackEvent({\n                    category: this.form + ' report filters',\n                    action: fieldName,\n                    label: 'General-report',\n                });\n            }\n            if (value) {\n                if (typeof value.get === 'function') {\n                    if (Array.isArray(value)) {\n                        id = value.join();\n                    } else {\n                        id = value.get('id');\n                    }\n                } else {\n                    id = value;\n                }\n            } else {\n                id = null;\n            }\n            return filter.set('value', id);\n        },\n        searchChanged: function (value) {\n            value = value.target ? value.target.value : value;\n            this.sendAction('filterValueChanged', value, 'q');\n            if (value) {\n                return this.analytics.trackEvent({\n                    category: this.form + ' report filters',\n                    action: 'search',\n                    label: 'General-report',\n                });\n            }\n        },\n        dateChanged: function (field, value) {\n            if (typeof value !== 'string') {\n                return;\n            }\n            this.sendAction('filterValueChanged', value, field);\n            if (value) {\n                return this.analytics.trackEvent({\n                    category: this.form + ' report filters',\n                    action: field,\n                    label: 'General-report',\n                });\n            }\n        },\n        resetFilter: function (filter) {\n            return this.send('filterChanged', null, filter.field);\n        },\n        clearFilters: function () {\n            var filters, i, item, len, results;\n            filters = this.get('filters');\n            Ember.get(this, 'analytics').trackEvent({\n                category: this.form + ' report filters',\n                action: 'clear filters',\n                label: 'General-report',\n            });\n            results = [];\n            for (i = 0, len = filters.length; i < len; i++) {\n                item = filters[i];\n                if (!Em.isBlank(item.value)) {\n                    if (item.extra || item.type === 'groupByFilter') {\n                        this.send('filterChanged', null, item.field);\n                        //                        @sendAction('filterValueChanged', null , item.field)\n                        results.push(Ember.set(item, 'value', null));\n                    } else {\n                        if (item.type === 'date') {\n                            this.sendAction('filterChanged', item.defaultValue, item.field);\n                            Ember.set(item, 'value', item.defaultValue);\n                            if (item.defaultValue === null) {\n                                Ember.set(item, 'end', null);\n                                Ember.set(item, 'start', null);\n                            }\n                        } else {\n                            Ember.set(item, 'value', null);\n                        }\n                        if (item.type === 'searchbox') {\n                            results.push(Ember.set(item, 'tmpvalue', ''));\n                        } else {\n                            results.push(void 0);\n                        }\n                    }\n                } else {\n                    results.push(void 0);\n                }\n                // Bubble up the clear filter event\n                if (typeof this.onClearFilters === 'function') {\n                    this.onClearFilters();\n                }\n            }\n            return results;\n        },\n    },\n});\n\nexport default ReportFiltersComponent;\n","export default Ember.HTMLBars.template({\"id\":\"wZN1r3Pk\",\"block\":\"{\\\"symbols\\\":[\\\"filter\\\",\\\"filter\\\",\\\"filter\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"userSelector2\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter-field\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"user-select\\\",null,[[\\\"users\\\",\\\"filterEmployer\\\",\\\"user\\\"],[[24,[\\\"users\\\"]],[24,[\\\"employer\\\"]],[24,[\\\"user\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row reports-header-row flex-filters\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_filters\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"date\\\",[23,3,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter-field report-filter-component\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,3,[\\\"form\\\"]],\\\"-\\\",[23,3,[\\\"name\\\"]],\\\"-filter\\\"],null]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"date-range-picker\\\",null,[[\\\"start\\\",\\\"end\\\",\\\"value\\\",\\\"ranges\\\",\\\"wagePeriods\\\",\\\"dateChange\\\"],[[23,3,[\\\"start\\\"]],[23,3,[\\\"end\\\"]],[23,3,[\\\"value\\\"]],[23,3,[\\\"ranges\\\"]],[23,3,[\\\"wagePeriods\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"dateChanged\\\",[23,3,[\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"searchbox\\\",[23,3,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter-field report-more report-filter-component\\\"],[10,\\\"data-anchor\\\",\\\"search-filter\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"search-box\\\",null,[[\\\"tmpvalue\\\",\\\"value\\\",\\\"change\\\"],[[23,3,[\\\"tmpvalue\\\"]],[23,3,[\\\"value\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"searchChanged\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"groupByFilter\\\",[23,3,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter-field report-filter-component\\\"],[10,\\\"data-anchor\\\",\\\"groupby-filter\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"group-by-filter\\\",null,[[\\\"value\\\",\\\"form\\\",\\\"change\\\"],[[23,3,[\\\"value\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"database\\\",[23,3,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter-field report-filter-component\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,3,[\\\"form\\\"]],\\\"-\\\",[23,3,[\\\"name\\\"]],\\\"-filter\\\"],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"singleselect\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,3,[]]],[[\\\"change\\\",\\\"useAsFilter\\\"],[\\\"filterChanged\\\",true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"database-multiple-filter\\\",null,[[\\\"filter\\\",\\\"value\\\",\\\"isIE\\\",\\\"change\\\",\\\"allFilters\\\"],[[23,3,[]],[24,[\\\"value\\\"]],[24,[\\\"isIE\\\"]],\\\"filterChanged\\\",[24,[\\\"_filters\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter-field report-filter-component\\\"],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,3,[\\\"form\\\"]],\\\"-\\\",[23,3,[\\\"name\\\"]],\\\"-filter\\\"],null]],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,3,[]]],[[\\\"change\\\",\\\"useAsFilter\\\"],[\\\"filterChanged\\\",true]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[3]},null],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"hiddenFilters\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter-field\\\"],[10,\\\"data-anchor\\\",\\\"more-filters\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"filter-box \\\",[28,\\\"unless\\\",[[24,[\\\"showOptions\\\"]],[24,[\\\"then\\\"]],\\\"active\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"filter-box-input link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleFilter\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"hiddenFilters\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[\\\"value\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"value\\\"]],\\\"null\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label-m label-m-info\\\"],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[23,2,[\\\"field\\\"]],[23,2,[\\\"form\\\"]]]]],false],[0,\\\": \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,2,[\\\"field\\\"]],\\\"involved\\\"],null],\\\"user\\\",[23,2,[\\\"field\\\"]]],null],[23,2,[\\\"form\\\"]],[23,2,[\\\"value\\\"]]]]],false],[0,\\\"  \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cancel link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"resetFilter\\\",[23,2,[]]]],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label-m label-m-default\\\"],[8],[1,[28,\\\"t\\\",[\\\"filters.add_more\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"filterMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"options\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"hiddenFilters\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"li\\\",true],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,1,[\\\"form\\\"]],\\\"-\\\",[23,1,[\\\"name\\\"]],\\\"-filter\\\"],null]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[23,1,[\\\"field\\\"]],[23,1,[\\\"form\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"date\\\",[23,1,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"date-range-picker\\\",null,[[\\\"autoApply\\\",\\\"ranges\\\",\\\"opens\\\",\\\"start\\\",\\\"end\\\",\\\"value\\\",\\\"dateChange\\\"],[true,false,\\\"right\\\",[23,1,[\\\"start\\\"]],[23,1,[\\\"end\\\"]],[23,1,[\\\"value\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"dateChanged\\\",[23,1,[\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"checkbox\\\",[23,1,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,1,[]]],[[\\\"change\\\",\\\"_class\\\",\\\"useAsFilter\\\"],[\\\"filterChanged\\\",\\\"form-control add-fields\\\",true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"multiselect\\\",[23,1,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,1,[]]],[[\\\"change\\\",\\\"_class\\\",\\\"useAsFilter\\\"],[\\\"filterChanged\\\",\\\"form-control add-fields\\\",true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"databasearray\\\",[23,1,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,1,[]]],[[\\\"change\\\",\\\"_class\\\",\\\"useAsFilter\\\"],[\\\"filterChanged\\\",\\\"form-control add-fields\\\",true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"database\\\",[23,1,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,1,[]]],[[\\\"change\\\",\\\"_class\\\",\\\"useAsFilter\\\"],[\\\"filterChanged\\\",\\\"form-control add-fields\\\",true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,1,[]]],[[\\\"change\\\",\\\"_class\\\"],[\\\"filterChanged\\\",\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"hideClearFilters\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter-field report-filter-component\\\"],[10,\\\"data-anchor\\\",\\\"clear-filters\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clearFilters\\\"]],[8],[1,[28,\\\"t\\\",[\\\"filters.clear\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/report-filters/template.hbs\"}});","import Component from '@ember/component';\nimport { get, computed } from '@ember/object';\nimport { isEmpty } from '@ember/utils';\n\nexport default Component.extend({\n    classNames: 'report-order',\n    isDefaultOrder: computed('showDefaultOrder', 'defaultOrder', 'order', function () {\n        return !get(this, 'showDefaultOrder') && get(this, 'defaultOrder') == get(this, 'order');\n    }),\n    orderFields: computed('order', 'showDefaultOrder', function () {\n        const order = get(this, 'order');\n        if (isEmpty(order)) return [];\n        if (!get(this, 'showDefaultOrder') && order == get(this, 'defaultOrder')) return [];\n        const fieldArr = order.split(',');\n        const normalizedFields = fieldArr.map((item) => {\n            return item.endsWith('-') ? item.slice(0, -1) : item;\n        });\n\n        return normalizedFields;\n    }),\n    actions: {\n        remove(field) {\n            get(this, 'onRemove')(field);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"qDDL4l1w\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"isDefaultOrder\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"strong\\\",true],[10,\\\"class\\\",\\\"inline-block\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.ordered_by\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"orderFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"label-m label-m-info\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,1,[]]]],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"form\\\",\\\"field\\\"],[[24,[\\\"form\\\"]],[23,1,[]]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cancel\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/report-order/template.hbs\"}});","import Component from '@ember/component';\nimport { get, computed } from '@ember/object';\n\nexport default Component.extend({\n    placeholderIcon: computed('icon', function () {\n        if (get(this, 'icon')) {\n            return get(this, 'icon');\n        }\n        return null;\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"JAuZ8UBA\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"placeholder-icon \\\",[28,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"placeholderIcon\\\"]],[24,[\\\"searchIcon\\\"]]],null],\\\"default-icon\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"searchIcon\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Search\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"placeholderIcon\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move move-\\\",[22,\\\"placeholderIcon\\\"]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"164.001\\\"],[10,\\\"height\\\",\\\"133.634\\\"],[10,\\\"viewBox\\\",\\\"0 0 164.001 133.634\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"g\\\",true],[10,\\\"id\\\",\\\"Group_360\\\"],[10,\\\"data-name\\\",\\\"Group 360\\\"],[10,\\\"transform\\\",\\\"translate(-996.866 -160.345)\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"g\\\",true],[10,\\\"id\\\",\\\"Group_357\\\"],[10,\\\"data-name\\\",\\\"Group 357\\\"],[10,\\\"transform\\\",\\\"translate(127.513 -237.469) rotate(13)\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_164\\\"],[10,\\\"data-name\\\",\\\"Path 164\\\"],[10,\\\"d\\\",\\\"M0,0H42.674L67,25.383V85H0Z\\\"],[10,\\\"transform\\\",\\\"translate(1030 181)\\\"],[10,\\\"fill\\\",\\\"#ffffff\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"class\\\",\\\"document1\\\"],[10,\\\"id\\\",\\\"Shape\\\"],[10,\\\"d\\\",\\\"M0,9.467A9.53,9.53,0,0,1,9.467,0H47.333l28.4,28.4V85.2a9.53,9.53,0,0,1-9.467,9.467H9.467A9.53,9.53,0,0,1,0,85.2Zm42.6,0H9.467V85.2h56.8V33.133H42.6Z\\\"],[10,\\\"transform\\\",\\\"translate(1025.456 176.094)\\\"],[10,\\\"fill-rule\\\",\\\"evenodd\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"g\\\",true],[10,\\\"id\\\",\\\"Group_358\\\"],[10,\\\"data-name\\\",\\\"Group 358\\\"],[10,\\\"transform\\\",\\\"translate(4.19 352.357) rotate(-19)\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_164-2\\\"],[10,\\\"data-name\\\",\\\"Path 164\\\"],[10,\\\"d\\\",\\\"M0,0H42.674L67,25.383V85H0Z\\\"],[10,\\\"transform\\\",\\\"translate(1030 181)\\\"],[10,\\\"fill\\\",\\\"#ffffff\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"class\\\",\\\"document2\\\"],[10,\\\"id\\\",\\\"Shape-2\\\"],[10,\\\"data-name\\\",\\\"Shape\\\"],[10,\\\"d\\\",\\\"M0,9.467A9.53,9.53,0,0,1,9.467,0H47.333l28.4,28.4V85.2a9.53,9.53,0,0,1-9.467,9.467H9.467A9.53,9.53,0,0,1,0,85.2Zm42.6,0H9.467V85.2h56.8V33.133H42.6Z\\\"],[10,\\\"transform\\\",\\\"translate(1025.456 176.094)\\\"],[10,\\\"fill-rule\\\",\\\"evenodd\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"g\\\",true],[10,\\\"id\\\",\\\"Group_359\\\"],[10,\\\"data-name\\\",\\\"Group 359\\\"],[10,\\\"transform\\\",\\\"translate(63.749 677.676) rotate(-36)\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_164-3\\\"],[10,\\\"data-name\\\",\\\"Path 164\\\"],[10,\\\"d\\\",\\\"M0,0H42.674L67,25.383V85H0Z\\\"],[10,\\\"transform\\\",\\\"translate(1030 181)\\\"],[10,\\\"fill\\\",\\\"#ffffff\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"path\\\",true],[10,\\\"class\\\",\\\"document3\\\"],[10,\\\"id\\\",\\\"Shape-3\\\"],[10,\\\"data-name\\\",\\\"Shape\\\"],[10,\\\"d\\\",\\\"M0,9.467A9.53,9.53,0,0,1,9.467,0H47.333l28.4,28.4V85.2a9.53,9.53,0,0,1-9.467,9.467H9.467A9.53,9.53,0,0,1,0,85.2Zm42.6,0H9.467V85.2h56.8V33.133H42.6Z\\\"],[10,\\\"transform\\\",\\\"translate(1025.456 176.094)\\\"],[10,\\\"fill-rule\\\",\\\"evenodd\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"placeholder-text\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"customHeader\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"customHeader\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"report.placeholder.general\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"searchInfoText\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"search-info-text\\\"],[8],[1,[22,\\\"searchInfoText\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/report-placeholder/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    dialogs: service(),\n    intl: service(),\n    flags: service(),\n    router: service(),\n\n    formTemplates: computed('reportTemplates.[]', function () {\n        return get(this, 'reportTemplates').filterBy('form', get(this, 'form'));\n    }),\n\n    templateAddingIsDisabled: computed('form', function () {\n        if (this.router.currentRouteName === 'timetracker.comp-report') return false; // a small haxx to get old template saving to work on comp-report\n        if (this.form === 'worktime' && this.flags.test('form-report-worktimes')) return true;\n        if (this.form === 'abcense' && this.flags.test('ember-movenium-form-report-absence-views'))\n            return true;\n        return false;\n    }),\n\n    init() {\n        this._super(...arguments);\n        const templates = get(this, 'store').peekAll('reportTemplate');\n        if (get(templates, 'length') == 0) {\n            get(this, 'store').query('reportTemplate', {\n                user: get(this, 'session.currentUser.id'),\n            });\n        }\n        set(this, 'reportTemplates', templates);\n    },\n\n    actions: {\n        saveTemplate() {\n            set(this, 'error', false);\n            if (!get(this, 'templateName')) set(this, 'error', true);\n            let ext = this.columns.firstObject.hasOwnProperty('ext') ? 'ext' : 'external_type';\n            get(this, 'store')\n                .createRecord('reportTemplate', {\n                    name: get(this, 'templateName'),\n                    form: get(this, 'form'),\n                    columns: get(this, 'columns').mapBy(ext).join(','),\n                    order: get(this, 'settings.sortByColumn') || get(this, 'settings.order'),\n                    rows: get(this, 'settings.limit'),\n                })\n                .save()\n                .then((template) => this._setTemplate(template));\n        },\n        openTemplateModal() {\n            set(this, 'templateModal', true);\n        },\n        closeTemplateModal() {\n            set(this, 'templateModal', false);\n        },\n\n        activateTemplate(template) {\n            set(this, 'currentTemplate', template);\n            if (this.activateTemplate) this.activateTemplate(template);\n        },\n        deactivateTemplate() {\n            this.deactivateTemplate();\n            //set(this, 'currentTemplate', null)\n        },\n        removeTemplate(template) {\n            get(this, 'dialogs')\n                .confirm(get(this, 'intl').t('report.template.confirm_remove'))\n                .then((con) => this._removeTemplate(con, template));\n        },\n        selectTemplate(id) {\n            const templates = get(this, 'reportTemplates').filterBy('id', id);\n            if (get(templates, 'length') == 0) {\n                set(this, 'currentTemplate', null);\n            } else {\n                set(this, 'currentTemplate', get(templates, 'firstObject'));\n            }\n        },\n    },\n\n    _setTemplate(template) {\n        set(this, 'templateName', false);\n        set(this, 'templateModal', false);\n        this.send('activateTemplate', template);\n    },\n    _removeTemplate(con, template) {\n        if (con) {\n            template.destroyRecord();\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"wLiNfwdL\",\"block\":\"{\\\"symbols\\\":[\\\"template\\\",\\\"template\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"style\\\"]],\\\"listOnly\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.templates.header\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control add-fields\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"selectTemplate\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.templates.default\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"formTemplates\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[29,[[23,2,[\\\"id\\\"]]]]],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.templates.header\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentTemplate\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"li\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"deactivateTemplate\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.templates.restore\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"formTemplates\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",[29,[\\\"template-row \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"currentTemplate\\\",\\\"id\\\"]]],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"activateTemplate\\\",[23,1,[]]]],[8],[1,[23,1,[\\\"name\\\"]],false],[0,\\\" \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Delete pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeTemplate\\\",[23,1,[]]]],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"templateAddingIsDisabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"new_template_info hidden-xs hidden-sm\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"report.templates.new_template_info\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"li\\\",true],[8],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default btn-xs\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openTemplateModal\\\"]],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.report.template.save_current\\\"],null],false],[9],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"li\\\",true],[10,\\\"role\\\",\\\"separator\\\"],[10,\\\"class\\\",\\\"divider\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"templateModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"close\\\",\\\"header\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeTemplateModal\\\"],null],[28,\\\"t\\\",[\\\"general.report.template.modal.header\\\"],null]]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.report.template.modal.name\\\"],null],false],[9],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"templateName\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[22,\\\"error\\\"],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"mb-3 btn btn-primary pull-right \\\",[28,\\\"unless\\\",[[24,[\\\"templateName\\\"]],\\\"disabled\\\"],null]]]],[12,\\\"disabled\\\",[29,[[28,\\\"unless\\\",[[24,[\\\"templateName\\\"]],true],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveTemplate\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.report.template.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/report-template-selector/template.hbs\"}});","/* eslint-disable ember/named-functions-in-promises */\nimport Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport statusUtil from 'tt4/utils/status';\n\nexport default Component.extend({\n    ttapi: service(),\n    error: service(),\n    store: service(),\n    capi: service(),\n    notifications: service(),\n    intl: service(),\n    Collector: service('collector-service'),\n    evented: service(),\n    localStorageWrapper: service(),\n    surveys: service(),\n\n    date: null,\n    user: null,\n    localStorageKey: 'salary-category',\n\n    noSalarytypes: computed('salarytypes', async function () {\n        let stypes = await this.salarytypes;\n        return stypes.length < 1;\n    }),\n\n    approveBtnDisabled: computed('weeks.@each.isChecked', function () {\n        return get(this, 'weeks').filterBy('isChecked', true).length < 1;\n    }),\n\n    filterValues: computed('date', 'user', function () {\n        return { user: get(this, 'user'), date: get(this, 'date') };\n    }),\n\n    weeks: computed('date', function () {\n        const splitted = get(this, 'date').split('_');\n\n        let start = moment(splitted[0]).startOf('isoWeek');\n        const end = moment(splitted[1]).endOf('isoWeek');\n\n        const weeks = [];\n\n        while (moment(start).isBefore(end)) {\n            weeks.push({\n                isOpen: false,\n                week: moment(start).format('YYYY-MM-DD'),\n                isChecked: false,\n            });\n\n            start = start.add(1, 'week');\n        }\n\n        return weeks.reverse();\n    }),\n\n    hiddenSalarytypes: computed('defaultSalarytypes.[]', async function () {\n        if (!this.defaultSalarytypes) return [];\n        let types = this.defaultSalarytypes.map((item) => item.name);\n        let stypes = await this.getSalaryTypes();\n        return stypes.filter((stype) => !types.includes(stype.name));\n    }),\n\n    init() {\n        this._super();\n        //set the first user for the user-selector if this the first load\n        this.useSalarytypeV2 = this.Collector.testNeeds(['products.salarytype_v2']);\n        if (!get(this, 'user')) {\n            let params = {\n                form: 'worktime',\n                field: 'user',\n                order: 'lastname,firstname',\n                limit: 1,\n            };\n\n            get(this, 'store')\n                .query('user', params)\n                .then((user) => {\n                    set(this, 'user', get(user, 'firstObject.id'));\n                });\n        }\n        set(this, 'salarytypes', this.getSalarytypes());\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n    },\n\n    didReceiveAttrs() {\n        this.getSalaryData();\n    },\n\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n    },\n\n    actions: {\n        expandAll(value) {\n            get(this, 'weeks').forEach((week) => {\n                set(week, 'isOpen', value);\n            });\n        },\n        checkAll(value) {\n            get(this, 'weeks').forEach((week) => {\n                set(week, 'isChecked', value);\n            });\n        },\n\n        filterChange(value, field) {\n            if (field) set(this, field, typeof value === 'object' ? get(value, 'id') : value);\n        },\n\n        changeStatus(status) {\n            set(this, 'statusUtil', statusUtil.create());\n            let acceptedRows = [];\n            let rejectedRows = [];\n            let promises = [];\n\n            get(this, 'weeks')\n                .filterBy('isChecked', true)\n                .forEach((week) => {\n                    let date = week.week;\n                    promises.push(\n                        get(this, 'store')\n                            .query('worktime', {\n                                date: date + '_' + moment(date).add(7, 'days').format('YYYY-MM-DD'),\n                                user: get(this, 'user'),\n                            })\n                            .then((data) => {\n                                const field = get(this, 'Collector').field(\n                                    get(data, 'modelName'),\n                                    'status',\n                                );\n                                let res = get(this, 'statusUtil').canChangeStatus(\n                                    data,\n                                    status,\n                                    field,\n                                );\n                                res.accepted.forEach((row) => {\n                                    acceptedRows.pushObject(row.id);\n                                });\n                                res.rejected.forEach((row) => {\n                                    rejectedRows.pushObject(row.id);\n                                });\n                            }),\n                    );\n                });\n            Promise.all(promises).then(() => {\n                if (acceptedRows.length > 0) {\n                    let data = {\n                        worktime: {\n                            id: acceptedRows,\n                            status: status,\n                            meta: { insert_history: 'true' },\n                        },\n                    };\n                    get(this, 'capi')\n                        .request('/worktimes', {\n                            dataType: 'json',\n                            type: 'PUT',\n                            data: JSON.stringify(data),\n                        })\n                        .then(\n                            get(this, 'notifications').success(\n                                get(this, 'intl').t('salary_category.approve_success', {\n                                    amount: acceptedRows.length,\n                                }),\n                                {\n                                    autoClear: true,\n                                },\n                            ),\n                        );\n                }\n                if (rejectedRows.length > 0) {\n                    get(this, 'notifications').error(\n                        get(this, 'intl').t('salary_category.approve_error', {\n                            amount: rejectedRows.length,\n                        }),\n                        {\n                            autoClear: true,\n                        },\n                    );\n                }\n\n                if (status === 'approved') {\n                    this.surveys.initializeAndRun('row_approved'); // show wootric CES-survey after row approved\n                }\n            });\n        },\n\n        userChanged(userid) {\n            set(this, 'user', userid);\n        },\n\n        hideSalarytype(type) {\n            this.defaultSalarytypes.removeObject(type);\n            this.setLSsalarytypes(this.defaultSalarytypes);\n        },\n        showSalarytype(type) {\n            this.defaultSalarytypes.pushObject(type);\n            this.setLSsalarytypes(this.defaultSalarytypes);\n        },\n        salarytypeDropped(target, dropped) {\n            parseInt(dropped);\n            if (target == dropped) return;\n            let obj = this.defaultSalarytypes;\n            this.moveElementInArray(obj, obj[dropped], target - dropped);\n        },\n        moveSalarytype(type, dir) {\n            this.moveElementInArray(this.defaultSalarytypes, type, dir);\n        },\n    },\n\n    moveElementInArray(obj, col, offset) {\n        let index = obj.indexOf(col);\n        obj.removeObject(col);\n        let newIndex = index + offset;\n        newIndex = newIndex > obj.length ? 0 : newIndex < 0 ? obj.length : newIndex;\n        obj.insertAt(newIndex, col);\n        this.setLSsalarytypes(this.defaultSalarytypes);\n    },\n\n    getSalarytypesFromLS() {\n        let key = this.localStorageKey + '_defaultSalarytypes';\n        let typesFromLS = this.localStorageWrapper.getUserSetting(key);\n        if (typesFromLS && typesFromLS.length > 0 && key) return typesFromLS;\n        return false;\n    },\n\n    setLSsalarytypes(newTypes) {\n        let key = this.localStorageKey + '_defaultSalarytypes';\n        let types = newTypes.map((type) => type.name).filter((item) => item);\n        if (key) this.localStorageWrapper.setUserSetting(key, types);\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'worktime' || params.type === 'abcense') {\n            this.getSalaryData();\n        }\n    },\n\n    notifyError(reason) {\n        get(this, 'error').notify(reason);\n    },\n\n    async getSalarytypes() {\n        return get(this, 'store').query(this.useSalarytypeV2 ? 'salarytypev2' : 'salarytype', {\n            sideload: true,\n            limit: 'all',\n        });\n    },\n\n    async getFormFields() {\n        return get(this, 'Collector').fieldArray('worktime');\n    },\n\n    getFieldType(type, salary, fields) {\n        let typeName = type.split(/\\((.*)\\)/);\n        let stype = salary.find((item) => item.name == typeName[0].trim());\n        if (!stype || stype.control == 'work_hours;salarytype=$this') return 'work_hours';\n        let fieldExt = this.useSalarytypeV2 ? stype.type : stype.option;\n        if (!stype.option && stype.control) {\n            let control = stype.control.split(/;|=/);\n            fieldExt = control[1];\n        }\n\n        // compensations and other dropdowns have : have in them (ie meal:full) but the field external type is only\n        // the first part.. ie meal:full -> meal\n        if (fieldExt.includes(':')) fieldExt = fieldExt.split(':')[0];\n\n        let field = fields.find((item) => item.name == fieldExt);\n        if (!field) return 'work_hours';\n        return field.name;\n    },\n\n    async setDefaultSalarytypes() {\n        let stypes = await this.getSalaryTypes();\n        if (this.getSalarytypesFromLS()) {\n            stypes = this.getSalarytypesFromLS()\n                .map((item) => stypes.filter((stype) => stype.name.trim() == item.trim())[0])\n                .filter(Boolean);\n        }\n        set(this, 'defaultSalarytypes', stypes);\n    },\n\n    async getSalaryData() {\n        set(this, 'loading', true);\n        if (!get(this, 'user') || !get(this, 'date')) return;\n        let data = await this.getData();\n        await set(this, 'salaryData', data);\n        await this.setDefaultSalarytypes();\n        set(this, 'loading', false);\n    },\n\n    async getData() {\n        let data = {\n            date: this.date,\n            user: this.user,\n            allowEmptySalaryCodes: true,\n            useSalarytypeV2: this.useSalarytypeV2,\n        };\n\n        return this.ttapi\n            .request('api/salary-categories', {\n                method: 'GET',\n                data: data,\n            })\n            .catch(this.notifyError.bind(this));\n    },\n\n    async getSalaryTypes() {\n        if (!get(this, 'salaryData')) return [];\n        let types = [];\n        get(this, 'salaryData').forEach((row) => {\n            types = types.concat(\n                Object.keys(row).reject((item) => ['date', 'hours'].includes(item)),\n            );\n        });\n        // only unique ones sorted\n        types = types.filter((v, i, a) => a.indexOf(v) === i).sort();\n\n        let stypes = await this.salarytypes;\n        let formFields = await this.getFormFields();\n        let selectorTypes = await this.getSalaryTypesForSelector();\n        let reportTypes = types.reduce((typesList, row) => {\n            let fieldType = this.getFieldType(row, stypes, formFields);\n            if (['pause', 'saldo', 'comp'].includes(row)) {\n                let translatedName = this.intl.t('salarycategory.' + row);\n                typesList.push({ name: row, fieldType, translatedName });\n            } else {\n                typesList.push({ name: row, fieldType });\n            }\n            let obj = selectorTypes.findBy('name', row.trim());\n            if (obj) selectorTypes.removeObject(obj);\n            return typesList;\n        }, []);\n\n        return [...reportTypes, ...selectorTypes];\n    },\n\n    async getSalaryTypesForSelector() {\n        let stypes = await this.salarytypes;\n        let selectorTypes = stypes.reduce((newList, type) => {\n            newList.push({ name: type.name });\n            return newList;\n        }, []);\n        if (this.Collector.testNeedsOne('products.saldo'))\n            selectorTypes.push({\n                name: 'saldo',\n                translatedName: this.intl.t('salarycategory.saldo'),\n            });\n        if (this.Collector.testNeedsOne('products.pause'))\n            selectorTypes.push({\n                name: 'pause',\n                translatedName: this.intl.t('salarycategory.pause'),\n            });\n        if (\n            this.Collector.testNeeds([\n                'products.timetracker_perdiem||products.timetracker_perdiem_meal',\n            ])\n        )\n            selectorTypes.push({\n                name: 'comp',\n                translatedName: this.intl.t('salarycategory.comp'),\n            });\n        return selectorTypes;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"fOE6sxHG\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"weekIndex\\\",\\\"week\\\",\\\"salaryType\\\",\\\"header\\\"],\\\"statements\\\":[[1,[28,\\\"collector/form-report/filters\\\",null,[[\\\"form\\\",\\\"showColumns\\\",\\\"values\\\",\\\"change\\\",\\\"useMultiFilter\\\"],[\\\"worktime\\\",\\\"date,user\\\",[28,\\\"hash\\\",null,[[\\\"user\\\",\\\"date\\\"],[[24,[\\\"user\\\"]],[24,[\\\"date\\\"]]]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChange\\\"],null],false]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"user-selector-container\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"user-selector\\\",null,[[\\\"userid\\\",\\\"userChanged\\\",\\\"classes\\\"],[[24,[\\\"user\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"userChanged\\\"],null],\\\"pull-left ml\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"await\\\",[[24,[\\\"noSalarytypes\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"salary-category\\\",null,null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/components/route-worktime-salary-category/template.hbs' @ L11:C15) \\\"],null]],[[\\\"approveBtnDisabled\\\",\\\"checkAll\\\",\\\"changeStatus\\\",\\\"expandAll\\\"],[[24,[\\\"approveBtnDisabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"checkAll\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"expandAll\\\"],null]]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"salarytype-selector\\\"]],\\\"expected `table.salarytype-selector` to be a contextual component but found a string. Did you mean `(component table.salarytype-selector)`? ('tt4/pods/components/route-worktime-salary-category/template.hbs' @ L12:C18) \\\"],null]],[[\\\"salarytypes\\\",\\\"hiddenSalarytypes\\\",\\\"hideSalarytype\\\",\\\"showSalarytype\\\",\\\"salarytypeDropped\\\",\\\"moveSalarytype\\\"],[[24,[\\\"defaultSalarytypes\\\"]],[24,[\\\"hiddenSalarytypes\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"hideSalarytype\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showSalarytype\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"salarytypeDropped\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"moveSalarytype\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"weeks\\\"]]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"week-table\\\"]],\\\"expected `table.week-table` to be a contextual component but found a string. Did you mean `(component table.week-table)`? ('tt4/pods/components/route-worktime-salary-category/template.hbs' @ L14:C23) \\\"],null]],[[\\\"isOpen\\\",\\\"isChecked\\\",\\\"week\\\"],[[23,3,[\\\"isOpen\\\"]],[23,3,[\\\"isChecked\\\"]],[23,3,[\\\"week\\\"]]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"header\\\"]],\\\"expected `week.header` to be a contextual component but found a string. Did you mean `(component week.header)`? ('tt4/pods/components/route-worktime-salary-category/template.hbs' @ L15:C27) \\\"],null]],[[\\\"data\\\"],[[24,[\\\"salaryData\\\"]]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[23,6,[\\\"anomaly\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"edit\\\"]],\\\"expected `week.edit` to be a contextual component but found a string. Did you mean `(component week.edit)`? ('tt4/pods/components/route-worktime-salary-category/template.hbs' @ L18:C30) \\\"],null]],[[\\\"user\\\",\\\"date\\\"],[[24,[\\\"user\\\"]],[24,[\\\"date\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"defaultSalarytypes\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,5,[\\\"fieldType\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"row\\\"]],\\\"expected `week.row` to be a contextual component but found a string. Did you mean `(component week.row)`? ('tt4/pods/components/route-worktime-salary-category/template.hbs' @ L22:C34) \\\"],null]],[[\\\"salaryType\\\",\\\"data\\\"],[[23,5,[]],[24,[\\\"salaryData\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[5]},null]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"summary\\\"]],\\\"expected `report.summary` to be a contextual component but found a string. Did you mean `(component report.summary)`? ('tt4/pods/components/route-worktime-salary-category/template.hbs' @ L30:C14) \\\"],null]],[[\\\"salarytypes\\\",\\\"data\\\"],[[24,[\\\"defaultSalarytypes\\\"]],[24,[\\\"salaryData\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well well-lg text-center no-salarytypes\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"du-de\\\",null,[[\\\"number\\\"],[36]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"salarycategory.no_salaryTypes_title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=2,5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"salarycategory.add_salaryTypes_here\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[0,\\\" \\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"salary.salarytypes\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.here\\\"],[[\\\"htmlSafe\\\"],[true]]],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"salarycategory.add_salaryTypes_admin\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/route-worktime-salary-category/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"nJaXGwJA\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"type\\\",\\\"index\\\",\\\"type\\\",\\\"@hideSalarytype\\\",\\\"@moveSalarytype\\\",\\\"@salarytypeDropped\\\",\\\"@showSalarytype\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more display-menu stype-selector-dropdown\\\"],[8],[0,\\\"\\\\n    \\\"],[5,\\\"basic-dropdown\\\",[],[[\\\"@verticalPosition\\\",\\\"@horizontalPosition\\\"],[\\\"below\\\",\\\"right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Trigger\\\"]],[[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.SalarytypeSort\\\"],null]]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-DragReorder\\\"],[8],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Content\\\"]],[[12,\\\"class\\\",\\\"column-selector-box\\\"]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"column-selector-dropdown side-by-side\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.hidden\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"hiddenSalarytypes\\\"]]],null]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[12,\\\"draggable\\\",\\\"false\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.columns.click_to_show\\\"],null]],[3,\\\"action\\\",[[23,0,[]],[23,8,[]],[23,4,[]]]],[8],[1,[28,\\\"if\\\",[[23,4,[\\\"translatedName\\\"]],[23,4,[\\\"translatedName\\\"]],[23,4,[\\\"name\\\"]]],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"column-selector-dropdown side-by-side\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.shown\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"salarytypes\\\"]]],null]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[\\\"name\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\",\\\"tagName\\\",\\\"data-field\\\",\\\"class\\\"],[[28,\\\"action\\\",[[23,0,[]],[23,7,[]],[23,3,[]]],null],\\\"li\\\",[23,2,[]],\\\"column-selector-dropzone\\\"]],{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[28,\\\"concat\\\",[\\\"\\\",[23,3,[]]],null],\\\"column-selector-draggable-item\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"a\\\",false],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.columns.click_to_hide\\\"],null]],[3,\\\"action\\\",[[23,0,[]],[23,5,[]],[23,2,[]]]],[8],[1,[28,\\\"if\\\",[[23,2,[\\\"translatedName\\\"]],[23,2,[\\\"translatedName\\\"]],[23,2,[\\\"name\\\"]]],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"sort-link pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],[23,6,[]],[23,2,[]],-1]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Up2Filled\\\"],[8],[9],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"sort-link pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],[23,6,[]],[23,2,[]],1]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Down2Filled\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2,3]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/salary-category/salarytype-selector/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"Eg8MICCx\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-outline-secondary setting-button\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Settings\\\"],[8],[9],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/salary-category/settings/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    Collector: service('collector-service'),\n    intl: service(),\n    tagName: 'table',\n    sums: computed('data', 'salarytypes.[]', async function () {\n        let types = [{ name: 'hours', fieldType: 'work_hours' }].concat(\n            await get(this, 'salarytypes'),\n        );\n\n        const sums = [];\n        for (const type of types) {\n            if (type.name === 'comp') continue;\n            if (!type.fieldType) continue;\n            let typeValue = get(this, 'data')\n                ? get(this, 'data').reduce(\n                      (total, row) => total + (row[type.name] ? Number(row[type.name]) : 0),\n                      0,\n                  )\n                : 0;\n\n            if (type.fieldType) {\n                typeValue = get(this, 'Collector')._format_(\n                    typeValue,\n                    'worktime',\n                    type.fieldType,\n                    'salarycategory',\n                );\n            }\n            let name = type.translatedName ? type.translatedName : type.name;\n            sums.push({ name, value: typeValue });\n        }\n\n        return sums;\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"4RPvB2kE\",\"block\":\"{\\\"symbols\\\":[\\\"sum\\\"],\\\"statements\\\":[[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"adjustment-cell\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"summary-table\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"sums\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"salary-category\\\"],[8],[1,[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[\\\"name\\\"]],\\\"hours\\\"],null],[28,\\\"t\\\",[\\\"report.worktime.work_hours\\\"],null],[23,1,[\\\"name\\\"]]],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"salary-category\\\"],[8],[1,[23,1,[\\\"value\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/salary-category/summary/template.hbs\"}});","import Component from '@ember/component';\nimport { get } from '@ember/object';\n\nexport default Component.extend({\n    showAll: false,\n\n    actions: {\n        expandAll() {\n            this.expandAll(true);\n        },\n        minimizeAll() {\n            this.expandAll(false);\n        },\n        check() {\n            this.toggleProperty('checked');\n            this.checkAll(get(this, 'checked'));\n        },\n        changeStatus() {\n            this.changeStatus('approved');\n        },\n    },\n});\n","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\n\nexport default Component.extend({\n    tagName: 'tr',\n\n    weekdays: computed(function () {\n        const days = [];\n        for (let i = 0; i < 7; i++) {\n            days.push(moment(get(this, 'week')).add(i, 'days').format('YYYY-MM-DD'));\n        }\n        return days;\n    }),\n\n    init() {\n        this._super();\n        this.forms = ['worktime', 'abcense'];\n    },\n\n    actions: {\n        openEditModal(day) {\n            let formattedDay = moment(day).format('dd D[.]MM');\n            set(this, 'formattedDay', formattedDay);\n            set(this, 'day', day);\n            set(this, 'showEdit', true);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"MjEU9m0h\",\"block\":\"{\\\"symbols\\\":[\\\"table\\\",\\\"day\\\"],\\\"statements\\\":[[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"no-decoration\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"salary-category-empty-editrow\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"weekdays\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"edit-table-cell\\\"],[8],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"salary-category-edit-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openEditModal\\\",[23,2,[]]]],[8],[1,[28,\\\"t\\\",[\\\"general.edit\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"salary-category-empty-editrow\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showEdit\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"formattedDay\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showEdit\\\"]]],null]],null]]],{\\\"statements\\\":[[4,\\\"workday-summary\\\",null,[[\\\"user\\\",\\\"day\\\",\\\"date\\\",\\\"addForms\\\"],[[24,[\\\"user\\\"]],[24,[\\\"day\\\"]],[24,[\\\"date\\\"]],[24,[\\\"forms\\\"]]]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,1,[\\\"edit\\\"]],false],[0,\\\"\\\\n            \\\"],[1,[23,1,[\\\"add\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/salary-category/table/edit/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"4wOSacKj\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"a\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-exclamation-sign anomaly\\\"],[8],[9],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/salary-category/table/header/anomaly/template.hbs\"}});","import Component from '@ember/component';\nimport { get, computed } from '@ember/object';\n\nexport default Component.extend({\n    tagName: 'tr',\n    classNames: ['table-header-row'],\n    anomaly: true,\n\n    weekNumber: computed(function () {\n        return moment(get(this, 'week')).format('W');\n    }),\n\n    weekdays: computed(function () {\n        const days = [];\n        for (let i = 0; i < 7; i++) {\n            const date = moment(get(this, 'week')).add(i, 'days').format('YYYY-MM-DD');\n            days.push({\n                date: date,\n                hours: this.sumHours(date),\n            });\n        }\n\n        return days;\n    }),\n\n    sumHoursAlldays: computed('weekdays', function () {\n        return get(this, 'weekdays').reduce((total, day) => total + day.hours, 0);\n    }),\n\n    actions: {\n        toggle() {\n            this.toggleOpen(get(this, 'isOpen') ? false : true);\n        },\n        check() {\n            this.toggleChecked(get(this, 'isChecked') ? false : true);\n        },\n    },\n\n    sumHours(date) {\n        if (!get(this, 'data')) return 0;\n        return get(this, 'data')\n            .filterBy('date', date)\n            .reduce((total, day) => total + (day.hours ? day.hours : 0), 0);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"SnFEby1B\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"no-decoration\\\"],[8],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"report-row-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"check\\\"]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"isChecked\\\"]],\\\"move move-CheckedCheckbox\\\",\\\"move move-UncheckedCheckbox\\\"],null]],[8],[9],[9],[9],[0,\\\"\\\\n\\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"salary-category-header-cell\\\"],[8],[0,\\\"Viikko \\\"],[1,[22,\\\"weekNumber\\\"],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"weekdays\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"salary-category-header-cell\\\"],[8],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"date\\\"]],\\\"dd D.M.\\\"],null],false],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sum\\\"],[8],[1,[28,\\\"format-hours\\\",[[23,1,[\\\"hours\\\"]]],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"salary-category-header-cell\\\"],[8],[1,[28,\\\"t\\\",[\\\"salarycategory.total\\\"],null],false],[0,\\\" \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sum\\\"],[8],[1,[28,\\\"format-hours\\\",[[24,[\\\"sumHoursAlldays\\\"]]],null],false],[9],[9],[0,\\\"\\\\n\\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"no-decoration\\\"],[8],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"sort\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggle\\\"]],[8],[1,[28,\\\"if\\\",[[24,[\\\"isOpen\\\"]],\\\"▲\\\",\\\"▼\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/salary-category/table/header/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    Collector: service('collector-service'),\n    intl: service(),\n    tagName: 'tr',\n\n    shouldShow: computed('weekdays', function () {\n        // Show show row if at least one column has a value\n        return get(this, 'weekdays').some((el) => el.values !== undefined && el.values !== null);\n    }),\n\n    weekdays: computed(function () {\n        const days = [];\n        for (let i = 0; i < 7; i++) {\n            const date = moment(get(this, 'week')).add(i, 'days').format('YYYY-MM-DD');\n            let sumValues = this.sumValues(date, get(this, 'salaryType.name'));\n            let formattedValues = sumValues;\n\n            if (get(this, 'salaryType.fieldType')) {\n                formattedValues = get(this, 'Collector')._format_(\n                    sumValues,\n                    'worktime',\n                    get(this, 'salaryType.fieldType'),\n                    'salarycategory',\n                );\n            }\n\n            days.push({\n                date: date,\n                values: sumValues,\n                formatted: formattedValues,\n            });\n        }\n        return days;\n    }),\n\n    sumValuesAlldays: computed('weekdays', function () {\n        let sum = get(this, 'weekdays').reduce((total, day) => total + day.values, 0);\n        if (get(this, 'salaryType.fieldType')) {\n            sum = get(this, 'Collector')._format_(\n                sum,\n                'worktime',\n                get(this, 'salaryType.fieldType'),\n                'salarycategory',\n            );\n        }\n        return sum;\n    }),\n\n    sumValues(date, field) {\n        if (!get(this, 'data')) return 0;\n        return get(this, 'data')\n            .filterBy('date', date)\n            .reduce((total, day) => total + (day[field] ? Number(day[field]) : 0), 0);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"/RekzX11\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"shouldShow\\\"]]],null,{\\\"statements\\\":[[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"no-decoration\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"salary-category-row-title\\\"],[8],[1,[28,\\\"if\\\",[[24,[\\\"salaryType\\\",\\\"translatedName\\\"]],[24,[\\\"salaryType\\\",\\\"translatedName\\\"]],[24,[\\\"salaryType\\\",\\\"name\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"weekdays\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"salary-category\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"if\\\",[[23,1,[\\\"values\\\"]],[23,1,[\\\"formatted\\\"]]],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"salary-category-sumrow\\\"],[8],[1,[22,\\\"sumValuesAlldays\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/salary-category/table/row/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"MCSBq8dW\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"report-table\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"no-decoration\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"report-row-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"check\\\"]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"checked\\\"]],\\\"move move-CheckedCheckbox\\\",\\\"move move-UncheckedCheckbox\\\"],null]],[8],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-sm approve-button\\\"],[12,\\\"disabled\\\",[22,\\\"approveBtnDisabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.approve_rows\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[10,\\\"colspan\\\",\\\"5\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n            \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"salarytype-selector\\\"],[[28,\\\"component\\\",[\\\"salary-category/salarytype-selector\\\"],null]]]]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-sm expand-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"expandAll\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.expand_all\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-sm minimize-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"minimizeAll\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.minimize_all\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n            \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"settings\\\"],[[28,\\\"component\\\",[\\\"salary-category/settings\\\"],null]]]]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"week-table\\\"],[[28,\\\"component\\\",[\\\"salary-category/table/week-table\\\"],null]]]]]],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/salary-category/table/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'tbody',\n});\n","export default Ember.HTMLBars.template({\"id\":\"ZOyQrF/S\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1,[[28,\\\"hash\\\",null,[[\\\"header\\\"],[[28,\\\"component\\\",[\\\"salary-category/table/header\\\"],[[\\\"isChecked\\\",\\\"week\\\",\\\"isOpen\\\",\\\"toggleOpen\\\",\\\"toggleChecked\\\"],[[24,[\\\"isChecked\\\"]],[24,[\\\"week\\\"]],[24,[\\\"isOpen\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"isOpen\\\"]]],null]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"isChecked\\\"]]],null]],null]]]]]]]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isOpen\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"edit\\\"],[[28,\\\"component\\\",[\\\"salary-category/table/edit\\\"],[[\\\"week\\\"],[[24,[\\\"week\\\"]]]]]]]]]],[0,\\\"\\\\n    \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"row\\\"],[[28,\\\"component\\\",[\\\"salary-category/table/row\\\"],[[\\\"week\\\"],[[24,[\\\"week\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/salary-category/table/week-table/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"R0OPgWlY\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1,[[28,\\\"hash\\\",null,[[\\\"table\\\"],[[28,\\\"component\\\",[\\\"salary-category/table\\\"],null]]]]]],[0,\\\"\\\\n\\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"summary\\\"],[[28,\\\"component\\\",[\\\"salary-category/summary\\\"],null]]]]]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/salary-category/template.hbs\"}});","import Component from '@ember/component';\nimport { set } from '@ember/object';\n\nexport default Component.extend({\n    type: 'single',\n\n    actions: {\n        showAdd(value) {\n            this.showAdd(value);\n        },\n        changeType(value) {\n            set(this, 'type', value);\n        },\n        saved() {\n            this.saved();\n        },\n    },\n});\n","import Component from '@ember/component';\nimport EmberObject, { get, computed, set } from '@ember/object';\nimport { A } from '@ember/array';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    intl: service(),\n    store: service(),\n\n    amount: 2,\n    period: 'month',\n    from: moment().startOf('month').format('YYYY-MM-DD'),\n\n    amount_options: computed(function () {\n        return A([\n            EmberObject.create({\n                id: 2,\n                name: get(this, 'intl').t('salary_period.adder.amount.2'),\n            }),\n            EmberObject.create({\n                id: 4,\n                name: get(this, 'intl').t('salary_period.adder.amount.4'),\n            }),\n            EmberObject.create({\n                id: 6,\n                name: get(this, 'intl').t('salary_period.adder.amount.6'),\n            }),\n            EmberObject.create({\n                id: 8,\n                name: get(this, 'intl').t('salary_period.adder.amount.8'),\n            }),\n            EmberObject.create({\n                id: 12,\n                name: get(this, 'intl').t('salary_period.adder.amount.12'),\n            }),\n        ]);\n    }),\n\n    period_options: computed(function () {\n        return A([\n            EmberObject.create({\n                id: 'month',\n                name: get(this, 'intl').t('salary_period.adder.period.month'),\n            }),\n            EmberObject.create({\n                id: 'week2',\n                name: get(this, 'intl').t('salary_period.adder.period.week2'),\n            }),\n            EmberObject.create({\n                id: 'week4',\n                name: get(this, 'intl').t('salary_period.adder.period.week4'),\n            }),\n        ]);\n    }),\n\n    actions: {\n        create() {\n            set(this, 'saving', true);\n            set(this, 'disabled', true);\n            let store = get(this, 'store');\n            let amount = get(this, 'amount');\n            let period = get(this, 'period');\n            let from = get(this, 'from');\n            let records = [];\n            for (let i = 0; i < amount; i++) {\n                let end = '';\n                switch (period) {\n                    case 'month':\n                        end = moment(from).add(1, 'month').subtract(1, 'day').format('YYYY-MM-DD');\n                        break;\n                    case 'week2':\n                        end = moment(from).add(2, 'week').subtract(1, 'day').format('YYYY-MM-DD');\n                        break;\n                    case 'week4':\n                        end = moment(from).add(4, 'week').subtract(1, 'day').format('YYYY-MM-DD');\n                }\n                records.push(\n                    store.createRecord('wage_period', {\n                        period_name: moment(from).format('L') + ' - ' + moment(end).format('L'),\n                        period_start_date: from,\n                        period_end_date: end,\n                    }),\n                );\n                switch (period) {\n                    case 'month':\n                        from = moment(from).add(1, 'month').format('YYYY-MM-DD');\n                        break;\n                    case 'week2':\n                        from = moment(from).add(2, 'week').format('YYYY-MM-DD');\n                        break;\n                    case 'week4':\n                        from = moment(from).add(4, 'week').format('YYYY-MM-DD');\n                }\n            }\n            let promises = records.invoke('save');\n            Promise.all(promises).then(() => this._PeriodsSaved());\n        },\n    },\n\n    _PeriodsSaved() {\n        set(this, 'saving', true);\n        set(this, 'disabled', true);\n        this.saved();\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"l0AMHRyK\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"hasErrors\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"salary_period.adder.amount\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"field\\\",\\\"features\\\",\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"firstError\\\",\\\"message\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"name\\\"],[[24,[\\\"amount_options\\\"]],\\\"form-control add-fields\\\",[24,[\\\"amount\\\"]],\\\"periods_amount\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"hasErrors\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"salary_period.adder.from\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"field\\\",\\\"features\\\",\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"firstError\\\",\\\"message\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"value\\\",\\\"class\\\",\\\"name\\\"],[[24,[\\\"from\\\"]],\\\"form-control add-fields\\\",\\\"periods_start\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"hasErrors\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"salary_period.adder.period\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"field\\\",\\\"features\\\",\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"firstError\\\",\\\"message\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"name\\\"],[[24,[\\\"period_options\\\"]],\\\"form-control add-fields\\\",[24,[\\\"period\\\"]],\\\"periods_length\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"create\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[28,\\\"t\\\",[\\\"salary_period.adder.create\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"close\\\"]],false]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/salary-periods-add/many-periods/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n\n    getRecord: computed(function () {\n        if (!get(this, 'editRow')) {\n            return get(this, 'store').createRecord('wage_period', {});\n        } else {\n            return get(this, 'editRow');\n        }\n    }),\n\n    actions: {\n        close() {\n            this.close();\n        },\n        saved() {\n            this.saved();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"6oZSCCEL\",\"block\":\"{\\\"symbols\\\":[\\\"form\\\"],\\\"statements\\\":[[4,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"showSaved\\\",\\\"record\\\",\\\"close\\\",\\\"rowAdded\\\",\\\"rowEdited\\\"],[\\\"wage_period\\\",false,[24,[\\\"getRecord\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"saved\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"saved\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[1,[23,1,[\\\"fields\\\"]],false],[0,\\\"\\\\n    \\\"],[1,[23,1,[\\\"buttons\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/salary-periods-add/single-periods/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"Nn9XlAKc\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"type\\\"]],\\\"single\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"changeType\\\"]],\\\"single\\\"]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"salary_period.adder.single\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"type\\\"]],\\\"multi\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"changeType\\\"]],\\\"multi\\\"]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"salary_period.adder.multi\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/salary-periods-add/submenu/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"BqY2JhBG\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"record\\\",\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"submenu\\\"],[[28,\\\"component\\\",[\\\"salary-periods-add/submenu\\\"],[[\\\"changeType\\\",\\\"type\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"changeType\\\"],null],[24,[\\\"type\\\"]]]]]]]]]],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"type\\\"]],\\\"single\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"single\\\"],[[28,\\\"component\\\",[\\\"salary-periods-add/single-periods\\\"],[[\\\"close\\\",\\\"saved\\\",\\\"editRow\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"showAdd\\\",false],null],[28,\\\"action\\\",[[23,0,[]],\\\"saved\\\"],null],[24,[\\\"record\\\"]]]]]]]]]],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"many\\\"],[[28,\\\"component\\\",[\\\"salary-periods-add/many-periods\\\"],[[\\\"close\\\",\\\"saved\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"showAdd\\\",false],null],[28,\\\"action\\\",[[23,0,[]],\\\"saved\\\"],null]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/salary-periods-add/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport podNames from 'ember-component-css/pod-names';\nimport { A } from '@ember/array';\n\nexport default class saldoInsightsComponent extends Component {\n    @service store;\n    @service('collector-service') Collector;\n    @service flags;\n\n    @tracked showAllRows;\n    @tracked dataLoaded;\n    @tracked shownDetailsArr;\n    @tracked showAllRows;\n\n    constructor() {\n        super(...arguments);\n        this.shownDetailsArr = A();\n        this.showAllRows = false;\n        this.insightsData = this.getInsightsData();\n        this.dataStructure = {\n            worktime: ['field', 'minutes', 'saldo'],\n            abcense: ['description', 'absence_hours', 'dayamount', 'saldo'],\n            saldodeducter: ['description', 'saldo'],\n        };\n\n        this.dataStructure.worktime.splice(2, 0, 'multiplier');\n    }\n\n    /**\n     * get all worktimes and absences and sort them together\n     */\n    async getAllDataRows() {\n        let joined = A();\n        let worktimes = await this.store.query('worktime', {\n            user: this.args.user,\n            date: this.args.date + '_' + this.args.date,\n            sideload: true,\n        });\n        if (this.Collector.testNeedsOne('products.absences')) {\n            let absences = await this.store.query('abcense', {\n                user: this.args.user,\n                startdate_enddate: this.args.date + '_' + this.args.date,\n                sideload: true,\n            });\n            joined = worktimes.toArray().concat(absences.toArray());\n        } else {\n            joined = worktimes.toArray();\n        }\n        let deducters = await this.store.query('saldodeducter', {\n            user: this.args.user,\n            date: this.args.date + '_' + this.args.date,\n        });\n        joined.pushObjects(deducters.toArray());\n\n        return joined;\n    }\n\n    getRowType(row) {\n        if (row.absence_hours) return 'abcense';\n        else if (row.work_hours) return 'worktime';\n        else return 'saldodeducter';\n    }\n\n    // need to sort details by custom order\n    sortDetailsForWorktimes(item_order, details) {\n        let order_arr = [];\n        for (var order of item_order) {\n            order_arr.pushObject(order.name);\n        }\n        details.sort((a, b) => {\n            return order_arr.indexOf(a.field) - order_arr.indexOf(b.field);\n        });\n        return details;\n    }\n\n    /**\n     * This is a bit ugly method, but it iterates saldo-insights and adds datarows and groups manual-edits so they can be nicely looped through\n     * ..also adds sums to data\n     */\n    async getInsightsData() {\n        this.dataLoaded = false;\n        let dataRows = await this.getAllDataRows();\n        let data = await this.args.data;\n        if (!data.rows || !data.rows.length || !dataRows.length) {\n            this.dataLoaded = true;\n            return 'no_data';\n        }\n        let manualEdits = { type: 'saldodeducter', saldo: 0, details: [] };\n        let sums = { minutes: 0, saldo: 0 };\n        let removeThese = [];\n\n        // iterate all datarows and attach them to correct rows\n        for (const datarow of dataRows) {\n            let row = data.rows.findBy('id', parseInt(datarow.id));\n            if (row) {\n                row.datarow = datarow;\n                row.id = datarow.id;\n                if (this.getRowType(datarow) == 'abcense') {\n                    set(datarow, 'saldo', row.saldo * -1);\n                    row.details = [datarow];\n                    sums.minutes += row.minutes;\n                    sums.saldo += datarow.saldo;\n                    row.saldo = row.saldo * -1;\n                } else if (this.getRowType(datarow) == 'saldodeducter') {\n                    set(\n                        datarow,\n                        'saldo',\n                        (datarow.addhours ? datarow.hours : datarow.hours * -1) * 60,\n                    );\n                    set(datarow, 'minutes', datarow.saldo);\n                    manualEdits.details.pushObject(datarow);\n                    manualEdits.datarow = row;\n                    removeThese.pushObject(row);\n                    manualEdits.saldo += datarow.saldo;\n                    sums.saldo += datarow.saldo;\n                    manualEdits.id = 'deducters';\n                } else if (this.getRowType(datarow) == 'worktime') {\n                    if (row.details)\n                        row.details = this.sortDetailsForWorktimes(data.rules, row.details);\n                    sums.minutes += datarow.work_hours * 60;\n                    sums.saldo += row.saldo;\n                }\n                row.starttime = datarow.starttime; // we have to give starttime to every row so we can sort by it\n                row.hasSaldo = true; // only rows from insights has saldos\n            } else {\n                data.rows.pushObject({\n                    type: this.getRowType(datarow),\n                    id: parseInt(datarow.id),\n                    datarow: datarow,\n                    saldo: 0,\n                    minutes: (datarow.work_hours ? datarow.work_hours : datarow.absence_hours) * 60,\n                    details: [datarow],\n                    starttime: datarow.starttime,\n                });\n                sums.minutes +=\n                    (datarow.work_hours ? datarow.work_hours : datarow.absence_hours) * 60;\n            }\n        }\n\n        // sort by starttime\n        data.rows.sort((a, b) => (a.starttime > b.starttime ? 1 : -1));\n\n        // find shortage\n        let shortage = data.rows.findBy('type', 'shortage');\n        if (shortage) {\n            shortage.saldo = shortage.minutes;\n            shortage.datarow = {\n                saldo: shortage.minutes,\n            };\n            data.rows.removeObject(shortage);\n            sums.saldo += shortage.minutes;\n            //sums.minutes += shortage.minutes;\n            shortage.hasSaldo = true;\n            data.rows.pushObject(shortage);\n        }\n\n        if (manualEdits['details'].length > 0) {\n            data.rows.removeObjects(removeThese);\n            data.rows.pushObject(manualEdits);\n        }\n\n        // handle daily max cut if found\n        let dailymaxCut = data.rows.findBy('type', 'dailymaximum');\n        if (dailymaxCut) {\n            sums.saldo += dailymaxCut.saldo;\n            dailymaxCut.hasSaldo = true;\n            // dailymaxCut item needs to be last in array\n            data.rows.push(data.rows.splice(data.rows.indexOf(dailymaxCut), 1)[0]);\n        }\n\n        // add cumulative max cut if needed\n        if (this.args.saldo.cut) {\n            let cumulativeMaxCut = {\n                type: 'cumulativemaximum',\n                saldo: -this.args.saldo.cut,\n                hasSaldo: true,\n            };\n            sums.saldo -= this.args.saldo.cut;\n            data.rows.pushObject(cumulativeMaxCut);\n        }\n\n        data.sums = sums;\n        this.dataLoaded = true;\n        return data;\n    }\n\n    findCorrectDataRow(rows, rowid) {\n        return rows.findBy('id', rowid.toString());\n    }\n\n    get styleNamespace() {\n        return podNames['saldo-insights'];\n    }\n\n    get dayLength() {\n        return this.args.workday_list[this.args.date].workday_length;\n    }\n\n    @action\n    async toggleAllRows() {\n        let data = await this.args.data;\n        if (!this.showAllRows) {\n            this.showAllRows = true;\n            for (const row of data.rows) {\n                this.shownDetailsArr.pushObject(row.id);\n            }\n        } else {\n            this.showAllRows = false;\n            for (const row of data.rows) {\n                this.shownDetailsArr.removeObject(row.id);\n            }\n        }\n    }\n\n    @action\n    toggleRowDetails(row) {\n        if (this.shownDetailsArr.includes(row)) this.shownDetailsArr.removeObject(row);\n        else this.shownDetailsArr.pushObject(row);\n        this.shownDetailsArr = this.shownDetailsArr;\n    }\n}\n","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class saldoInsightsRowComponent extends Component {\n    @service store;\n    @service('collector-service') Collector;\n\n    @tracked row;\n    @tracked showDetails;\n\n    constructor() {\n        super(...arguments);\n        this.showDetails = false;\n        this.saldoTotal = this.calsSaldoSum();\n        this.hourFields = ['minutes', 'saldo'];\n        this.rows = this.args.rows.details;\n    }\n\n    async calsSaldoSum() {\n        let total = 0;\n        await this.args.rows.details.forEach((row) => {\n            if (row.saldo) total += row.saldo;\n        });\n        return total;\n    }\n\n    @action\n    showRowDetails() {\n        if (this.showDetails) this.showDetails = false;\n        else this.showDetails = true;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"6C3hmIJq\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"key\\\",\\\"key\\\",\\\"@type\\\",\\\"@dataStructure\\\",\\\"@rows\\\"],\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"sub-table-td\\\"],[10,\\\"colspan\\\",\\\"7\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[]],\\\"worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"details\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"sub-info-table\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.project\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"datarow\\\",\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.worktime.pause\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,6,[\\\"datarow\\\",\\\"pause\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[23,6,[\\\"datarow\\\",\\\"pause\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                -\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.worktime.worktype\\\"],null],false],[0,\\\":  \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[23,6,[\\\"datarow\\\",\\\"worktype\\\",\\\"name\\\"]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"                    \\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[23,4,[]],\\\"abcense\\\"],null],[23,6,[\\\"datarow\\\",\\\"project\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"details\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"table\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.project\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[23,6,[\\\"datarow\\\",\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"            \\\\n            \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table general-report sub-table\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,5,[]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"saldo_insights.\\\",[23,3,[]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,6,[\\\"details\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,5,[]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"in-array\\\",[[23,2,[]],[24,[\\\"hourFields\\\"]]],null],[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"format-minutes\\\",[[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null]],[[\\\"hideIcon\\\",\\\"showLeadingZeros\\\"],[true,true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[]],\\\"field\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"saldo-field-name\\\",[\\\"worktime\\\",[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        -\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"tfoot\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"defaults.field.sum\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[]],\\\"saldodeducter\\\"],null]],null,{\\\"statements\\\":[],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[]],\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"td\\\",true],[8],[9],[7,\\\"td\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"td\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"format-minutes\\\",[[28,\\\"await\\\",[[23,0,[\\\"saldoTotal\\\"]]],null]],[[\\\"hideIcon\\\",\\\"showLeadingZeros\\\"],[true,true]]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/saldo-insights/saldo-insights-details/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class saldoInsightsDetailsComponent extends Component {\n    @service store;\n    @service('collector-service') Collector;\n\n    @tracked row;\n    @tracked showDetails;\n\n    constructor() {\n        super(...arguments);\n        this.showDetails = false;\n        this.data = this.getData();\n    }\n\n    async getData() {\n        return await this.args.row.datarow;\n    }\n\n    @action\n    toggleThisRowDetails(row) {\n        this.args.toggleRowDetails(row);\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"0r+MeWLN\",\"block\":\"{\\\"symbols\\\":[\\\"@row\\\",\\\"@dataStructure\\\",\\\"@shownDetailsArr\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[23,0,[\\\"data\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.timetracker_hours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"get\\\",[[28,\\\"await\\\",[[23,0,[\\\"data\\\"]]],null],\\\"starttime\\\"],null],false],[0,\\\" - \\\"],[1,[28,\\\"get\\\",[[28,\\\"await\\\",[[23,0,[\\\"data\\\"]]],null],\\\"endtime\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"shortage\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"saldo_insights.shortage_hours\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[23,1,[\\\"datarow\\\",\\\"abcensetype\\\",\\\"name\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"saldo_insights.\\\",[23,1,[\\\"type\\\"]]],null]],null],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"            \\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[23,0,[\\\"data\\\"]]],null],\\\"pause\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"get\\\",[[28,\\\"await\\\",[[23,0,[\\\"data\\\"]]],null],\\\"pause\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                -\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"format-hours\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[23,0,[\\\"data\\\"]]],null],\\\"work_hours\\\"],null],0,false,true],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"format-hours\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[23,0,[\\\"data\\\"]]],null],\\\"absence_hours\\\"],null],0,false,true],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                - \\\\n            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"            \\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"hasSaldo\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.yes\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.no\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"format-minutes\\\",[[23,1,[\\\"saldo\\\"]]],[[\\\"hideIcon\\\",\\\"showLeadingZeros\\\"],[true,true]]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"details\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",[29,[\\\"move  \\\",[28,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"in-array\\\",[[23,1,[\\\"id\\\"]],[23,3,[]]],null],[23,1,[\\\"details\\\"]]],null],\\\"move-SortUp\\\",\\\"move-SortDown\\\"],null]]]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"toggleThisRowDetails\\\"]],[23,1,[\\\"id\\\"]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"in-array\\\",[[23,1,[\\\"id\\\"]],[23,3,[]]],null],[23,1,[\\\"details\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"saldo-insights/saldo-insights-details\\\",[],[[\\\"@dataStructure\\\",\\\"@data\\\",\\\"@rows\\\",\\\"@type\\\"],[[28,\\\"get\\\",[[23,2,[]],[23,1,[\\\"type\\\"]]],null],[28,\\\"get\\\",[[28,\\\"await\\\",[[23,0,[\\\"data\\\"]]],null],\\\"rows\\\"],null],[23,1,[]],[23,1,[\\\"type\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/saldo-insights/saldo-insights-row/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"34O6Y9P+\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[23,0,[\\\"dataLoaded\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"await\\\",[[23,0,[\\\"insightsData\\\"]]],null],\\\"no_data\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"no-data\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Search\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"saldo_insights.no_data\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table general-report collapse-table\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.timetracker_hours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo_insights.time\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"defaults.field.type\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.worktime.pause\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"defaults.field.hours\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo_insights.saldo_calculation\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo_insights.saldo\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",[29,[\\\"move \\\",[28,\\\"if\\\",[[23,0,[\\\"showAllRows\\\"]],\\\"move-SortUp\\\",\\\"move-SortDown\\\"],null]]]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"toggleAllRows\\\"]]],null]]],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[23,0,[\\\"insightsData\\\"]]],null],\\\"rows\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[5,\\\"saldo-insights/saldo-insights-row\\\",[],[[\\\"@row\\\",\\\"@shownDetailsArr\\\",\\\"@toggleRowDetails\\\",\\\"@dataStructure\\\"],[[23,1,[]],[23,0,[\\\"shownDetailsArr\\\"]],[23,0,[\\\"toggleRowDetails\\\"]],[23,0,[\\\"dataStructure\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tfoot\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"defaults.field.sum\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.timetracker_hours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"td\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"td\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"format-minutes\\\",[[28,\\\"get\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[23,0,[\\\"insightsData\\\"]]],null],\\\"sums\\\"],null],\\\"minutes\\\"],null]],[[\\\"hideIcon\\\",\\\"showLeadingZeros\\\"],[true,true]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"format-minutes\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[23,0,[\\\"insightsData\\\"]]],null],\\\"saldo\\\"],null]],[[\\\"hideIcon\\\",\\\"showLeadingZeros\\\"],[true,true]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[4,\\\"if\\\",[[23,0,[\\\"dataLoaded\\\"]]],null,{\\\"statements\\\":[[0,\\\" \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workday-length\\\"],[8],[1,[28,\\\"t\\\",[\\\"saldo_insights.day_length\\\"],null],false],[0,\\\": \\\"],[1,[28,\\\"format-minutes\\\",[[23,0,[\\\"dayLength\\\"]]],[[\\\"hideIcon\\\",\\\"showLeadingZeros\\\"],[true,true]]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/saldo-insights/template.hbs\"}});","import { isEmpty } from '@ember/utils';\nimport { htmlSafe } from '@ember/string';\nimport { computed, get, set } from '@ember/object';\nimport { next, later, debounce } from '@ember/runloop';\nimport Component from '@ember/component';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    intl: service(),\n    classes: 'form-control',\n\n    searchBarWidth: 0,\n\n    placeholder: computed(function () {\n        return get(this, 'intl').t('general.search');\n    }),\n\n    progressStyles: computed('searchBarWidth', function () {\n        return htmlSafe(`width: ${get(this, 'searchBarWidth')}%`);\n    }),\n\n    init() {\n        this._super(...arguments);\n        if (get(this, 'tmpvalue')) {\n            next(this, function () {\n                set(this, 'value', get(this, 'tmpvalue'));\n            });\n        }\n    },\n\n    actions: {\n        removeSearch: function () {\n            set(this, 'value', '');\n            this.doSearch();\n        },\n        triggerSearchAction: function () {\n            if (isEmpty(get(this, 'value'))) {\n                this.doSearch();\n            } else {\n                if (get(this, 'searchBarWidth') > 0) {\n                    set(this, 'searchBarWidth', 0.1);\n                } else {\n                    this.incrementLoader();\n                }\n                debounce(this, this.doSearch, 1500);\n            }\n        },\n    },\n\n    incrementLoader() {\n        if (get(this, 'isDestroyed')) return;\n        let currentValue = get(this, 'searchBarWidth');\n        set(this, 'searchBarWidth', currentValue + 3.5);\n        if (currentValue < 100) {\n            later(this, 'incrementLoader', 50);\n        }\n    },\n\n    doSearch() {\n        if (get(this, 'isDestroyed')) return;\n        set(this, 'searchBarWidth', 0);\n        set(this, 'tmpvalue', get(this, 'value'));\n        this.change(get(this, 'value'), 'q');\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"DAdjT8ta\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"placeholder\\\",\\\"key-up\\\"],[\\\"text\\\",[24,[\\\"value\\\"]],[24,[\\\"classes\\\"]],[24,[\\\"placeholder\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"triggerSearchAction\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"searchBarWidth\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"style\\\",[22,\\\"progressStyles\\\"]],[10,\\\"class\\\",\\\"progress-bar-loader\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"input-group-addon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeSearch\\\"]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"i\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"value\\\"]],\\\"move move-Cross\\\",\\\"move move-Search\\\"],null]]]],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/search-box/template.hbs\"}});","import Component from '@glimmer/component';\nimport SignaturePad from 'signature_pad';\nimport { action } from '@ember/object';\n\nexport default class SignatureModalComponent extends Component {\n    signaturePad = null;\n\n    constructor() {\n        super(...arguments);\n        const canvas = document.createElement('canvas');\n        canvas.width = 500;\n        this.signaturePad = new SignaturePad(canvas);\n        this.canvas = canvas;\n    }\n\n    @action\n    signaturePadFromSrc(src) {\n        this.signaturePad.clear();\n        if (!src) return;\n        this.signaturePad.fromDataURL(src);\n    }\n\n    @action\n    save() {\n        if (this.signaturePad.isEmpty()) this.args.onChange(null);\n        else this.args.onChange(this.signaturePad.toDataURL());\n        this.showModal = false;\n    }\n\n    @action\n    clear() {\n        this.signaturePad.clear();\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"/UWvS33G\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\",\\\"@open\\\",\\\"@onHide\\\",\\\"@signatureSrc\\\"],\\\"statements\\\":[[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHide\\\",\\\"@onShow\\\"],[[23,2,[]],[23,3,[]],[28,\\\"fn\\\",[[23,0,[\\\"signaturePadFromSrc\\\"]],[23,4,[]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"modal.signature.title\\\"],null],false],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[1,[23,0,[\\\"canvas\\\"]],false],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"default\\\",[28,\\\"action\\\",[[23,0,[]],\\\"clear\\\"],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"modal.clear\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"primary\\\",[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/signature-modal/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\nimport { A } from '@ember/array';\n\nexport default Component.extend({\n    didInsertElement() {\n        let rowOrder = ['extralong', 'extralong', 'long', 'short', 'empty'];\n        let arr = A();\n\n        let i = 0;\n\n        if (!get(this, 'rows')) {\n            set(this, 'rows', 4);\n        }\n\n        let currentRow = 0;\n\n        while (i < get(this, 'rows')) {\n            if (currentRow >= rowOrder.length) {\n                currentRow = 0;\n            }\n            arr.pushObject(rowOrder[currentRow]);\n            currentRow++;\n            i++;\n        }\n        set(this, 'skeletonRows', arr);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"hYtKtuIs\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"skeleton\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"skeletonRows\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"skeleton-row \\\",[23,1,[]],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"loader\\\"]],\\\"loading\\\"],null]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/skeleton-component/template.hbs\"}});","import Component from '@ember/component';\nimport { set } from '@ember/object';\n\nexport default Component.extend({\n    popperOptions: null,\n    tagName: '',\n    init() {\n        this._super(...arguments);\n        set(this, 'popperOptions', {\n            modifiers: {\n                preventOverflow: {\n                    escapeWithReference: false,\n                },\n            },\n        });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"mkBre/Q3\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"info-popup\\\"],[8],[1,[28,\\\"standard-icon\\\",[[24,[\\\"icon\\\"]]],null],false],[0,\\\" \\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\",\\\"popperContainer\\\",\\\"popperOptions\\\"],[[24,[\\\"text\\\"]],\\\"body\\\",[24,[\\\"popperOptions\\\"]]]]],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/standard-icon-popover/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\nimport Ember from 'ember';\nimport { inject as service } from '@ember/service';\nimport { run } from '@ember/runloop';\n\nexport default Component.extend({\n    localStorageWrapper: service(),\n    session: service(),\n    store: service(),\n    preventDropdownClose: false,\n    showNotificationBadge: true,\n    displayNotification: null,\n\n    init() {\n        this._super(...arguments);\n        //check promo messages from ls immediately and again after 8s\n        this.checkPromoMessages();\n        if (!Ember.testing) {\n            run.later(\n                this,\n                function () {\n                    this.checkPromoMessages();\n                },\n                10000,\n            );\n        }\n        window.onclick = (event) => {\n            if (this.preventDropdownClose || !this.dropdownOpen) return;\n            const parentClassList = event.target.parentElement.classList;\n            if (\n                parentClassList.contains('dropdown') ||\n                parentClassList.contains('dropdown-menu') ||\n                parentClassList.contains('nav-button')\n            )\n                return;\n            if (event.target.classList.contains('subtle-message-title')) return;\n            this.toggleProperty('dropdownOpen');\n        };\n    },\n\n    actions: {\n        toggleDropdown() {\n            this.toggleProperty('dropdownOpen');\n            // Do not show notification badge when messages list is viewed.\n            set(this, 'displayNotification', null);\n        },\n\n        openMessage(item) {\n            this.preventDropdownClosing();\n            if (get(item, 'message.string')) {\n                set(item, 'message', get(item, 'message.string'));\n            }\n            set(this, 'content', item);\n            set(this, 'showMessageModal', true);\n        },\n\n        closeMessage() {\n            set(this, 'content', null);\n            set(this, 'showMessageModal', false);\n        },\n\n        closeNotificationCard(item) {\n            this.preventDropdownClosing();\n            this.markAsRead(item);\n            //this.allowDropdownClosing();\n        },\n\n        clearAllMessages() {\n            this.preventDropdownClosing();\n            let notificationsCopy = get(this, 'notifications').slice();\n\n            notificationsCopy.forEach((item) => {\n                this.markAsRead(item);\n            });\n\n            set(this, 'notifications', []);\n            set(this, 'messagesAmount', 0);\n\n            let ls_subtle_key = get(this, 'session.currentUser.id') + '_promomessages_subtle';\n            get(this, 'localStorageWrapper').setItem(ls_subtle_key, []);\n            this.allowDropdownClosing();\n        },\n    },\n\n    markAsRead(item) {\n        let ls_key = get(this, 'session.currentUser.id') + '_promomessages';\n        let ls_subtle_key = get(this, 'session.currentUser.id') + '_promomessages_subtle';\n\n        let readMessages = get(this, 'localStorageWrapper').getItem(ls_key);\n\n        get(this, 'notifications').removeObject(item);\n        get(this, 'localStorageWrapper').setItems(ls_subtle_key, get(this, 'notifications'));\n\n        readMessages.push(get(item, 'id'));\n        get(this, 'localStorageWrapper').setItems(ls_key, readMessages);\n\n        set(this, 'messagesAmount', get(this, 'messagesAmount') - 1);\n    },\n\n    checkPromoMessages() {\n        let ls = get(this, 'localStorageWrapper');\n        let key = get(this, 'session.currentUser.id') + '_promomessages_subtle';\n\n        let msgs = ls.getItem(key);\n        let amount = msgs.length;\n\n        if (amount <= 0) {\n            amount = null;\n        }\n\n        set(this, 'notifications', msgs);\n        set(this, 'messagesAmount', amount);\n        set(this, 'displayNotification', amount);\n    },\n\n    preventDropdownClosing() {\n        set(this, 'preventDropdownClose', true);\n    },\n\n    allowDropdownClosing() {\n        set(this, 'preventDropdownClose', false);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"NeTvKX2I\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"dropdown \\\",[28,\\\"if\\\",[[24,[\\\"dropdownOpen\\\"]],\\\"open\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"button nav-button \\\",[28,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],\\\"5\\\"],null],\\\"more-right\\\"],null]]]],[12,\\\"id\\\",\\\"subtle-messages-button\\\"],[12,\\\"aria-expanded\\\",\\\"true\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleDropdown\\\"]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"vismaicon vismaicon-dynamic-24 vismaicon-alert\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"header.actions.subtleNotifyBell\\\"],null]],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"messagesAmount\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge badge-notify\\\"],[8],[1,[22,\\\"displayNotification\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"dropdown-menu dropdown-menu-right subtle-messages-dropdown\\\"],[10,\\\"role\\\",\\\"menu\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"notification-main-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"service-notifications.title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"notifications\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"openMessage\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"messageItem\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"subtle-message-title\\\"],[8],[1,[23,1,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"short_description\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[23,1,[\\\"short_description\\\",\\\"string\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"close\\\"],[12,\\\"aria-label\\\",[28,\\\"t\\\",[\\\"report.close_rows\\\"],null]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeNotificationCard\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"no-notifications-container\\\"],[8],[0,\\\"\\\\n                \\\"],[5,\\\"all-clear-icon\\\",[[12,\\\"class\\\",\\\"no-notifications-icon\\\"]],[[],[]]],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"service-notifications.none\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notifications-action-buttons\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"gt\\\",[[24,[\\\"messagesAmount\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-info btn-sm link clear-noti-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clearAllMessages\\\"]],[8],[1,[28,\\\"t\\\",[\\\"modal.clear\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-info btn-sm link close-modal-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleDropdown\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showMessageModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"mess-ages/types/promo\\\",null,[[\\\"close\\\",\\\"store\\\",\\\"content\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeMessage\\\"],null],[24,[\\\"store\\\"]],[24,[\\\"content\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/subtle-notifications/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Q0kIDsio\",\"block\":\"{\\\"symbols\\\":[\\\"@label\\\"],\\\"statements\\\":[[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary btn-large my-4\\\"],[8],[1,[23,1,[]],false],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/suggested-option/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/sum-report/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SumReportComponent;\n\nimport Ember from 'ember';\n\nimport { pluralize } from 'ember-inflector';\n\nSumReportComponent = Ember.Component.extend({\n    checkProps: function () {\n        Em.assert('model prop of type object is required', this.get('model'));\n        Em.assert('columns prop is required', this.get('columns'));\n        Em.assert('mainForm prop is required', this.get('mainForm'));\n        Em.assert('idField prop is required', this.get('idField'));\n        Em.assert('summableFields prop is required', this.get('summableFields'));\n        return Object.keys(this.get('summableFields')).forEach((form) => {\n            return Em.assert(\n                'Form ' + pluralize(form) + 'not found in model',\n                this.get('model.' + pluralize(form)),\n            );\n        });\n    },\n    didReceiveAttrs: function () {\n        this.checkProps();\n        return this.notifyPropertyChange('recalculateSums');\n    },\n    summedRows: Ember.computed('recalculateSums', function () {\n        var field, form, ref, rows;\n        if (this.get('hasRequiredFilters') === false) {\n            return [];\n        }\n        rows = Em.A([]);\n        ref = this.get('summableFields');\n        for (form in ref) {\n            field = ref[form];\n            this.get('model.' + pluralize(form)).forEach((item) => {\n                var row, rowObj;\n                row = rows.find((_row) => {\n                    return _row.get(this.get('idField')) === item.get(this.get('idField'));\n                });\n                if (row) {\n                    return (row[field] += item.get(field));\n                } else if (form === this.get('mainForm')) {\n                    rowObj = {};\n                    this.get('columns').forEach((column) => {\n                        return (rowObj[column.field] =\n                            column.form === form ? item.get(column.field) : 0);\n                    });\n                    return rows.pushObject(Em.Object.create(rowObj));\n                }\n            });\n        }\n        return rows;\n    }),\n    summedRowsTotals: Ember.computed('recalculateSums', function () {\n        var field, form, index, ref, ref1, row, totals;\n        if (!this.get('summedRows')) {\n            return {};\n        }\n        totals = {};\n        ref = this.get('summedRows');\n        for (index in ref) {\n            row = ref[index];\n            ref1 = this.get('summableFields');\n            for (form in ref1) {\n                field = ref1[form];\n                if (!totals[field]) {\n                    totals[field] = 0;\n                }\n                totals[field] += row[field] ? row[field] : 0;\n            }\n        }\n        return totals;\n    }),\n    actions: {\n        sortByColumn: function (columnField) {\n            if (this.get('sortByColumn') === columnField) {\n                this.set('sortByColumn', columnField + '-');\n                return this.set('summedRows', this.get('summedRows').sortBy(columnField).reverse());\n            } else {\n                this.set('sortByColumn', columnField);\n                return this.set('summedRows', this.get('summedRows').sortBy(columnField));\n            }\n        },\n    },\n});\n\nexport default SumReportComponent;\n","export default Ember.HTMLBars.template({\"id\":\"3HpMEA7L\",\"block\":\"{\\\"symbols\\\":[\\\"column\\\",\\\"total\\\",\\\"field\\\",\\\"row\\\",\\\"column\\\",\\\"column\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row report-main-content content\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive table-hover general-report\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"th\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"sortByColumn\\\",[23,6,[\\\"field\\\"]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"table-header-wrap\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"table-header-name\\\"],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"report.\\\",[23,6,[\\\"form\\\"]],\\\".\\\",[23,6,[\\\"field\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"sortByColumn\\\"]],[23,6,[\\\"field\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-SortUp\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"sortByColumn\\\"]],[28,\\\"concat\\\",[[23,6,[\\\"field\\\"]],\\\"-\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-SortDown\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Sort text-report-muted\\\"],[8],[9],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"summedRows\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[[23,5,[\\\"field\\\"]],[23,5,[\\\"form\\\"]],[28,\\\"get\\\",[[23,4,[]],[23,5,[\\\"field\\\"]]],null]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"report.no_rows\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"summedRows\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[24,[\\\"summedRowsTotals\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[]],[23,1,[\\\"field\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"b\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"format-hours\\\",[[23,2,[]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2,3]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"tfoot\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"style\\\",\\\"margin: 10px 2px;\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"summedRows\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"b\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.total_rows\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge\\\"],[8],[1,[24,[\\\"summedRows\\\",\\\"length\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/sum-report/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed } from '@ember/object';\nimport menu from '../../../mixins/menu';\n\nexport default Component.extend(menu, {\n    router: service(),\n    subMenus: computed('form', function () {\n        let form = this.form;\n        // lets use this only for worktime-modal (and also presences) for now\n        if (form == 'presence' || form == 'worktime') {\n            if (form == 'worktime') form = 'timetracker';\n            else form = 'presences';\n            return this.getSubMenus([form, 'add']);\n        } else return [];\n    }),\n    actions: {\n        transitionAndClose(route) {\n            this.closeModal();\n            this.router.transitionTo(route[0]);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"da8RmxwS\",\"block\":\"{\\\"symbols\\\":[\\\"sublink\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"subMenus\\\",\\\"length\\\"]],1],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons tab-submenu\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subMenus\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"modal\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"title\\\",\\\"tagName\\\",\\\"query\\\"],[\\\"submenu-item\\\",[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],\\\"div\\\",[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[23,1,[\\\"modal\\\"]]]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"submenu-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionAndClose\\\",[23,1,[\\\"link\\\"]]]],[8],[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/tab-component/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { htmlSafe } from '@ember/string';\nimport { computed, get, set } from '@ember/object';\n\nexport default Component.extend({\n    ttapi: service(),\n    collector: service('collector-service'),\n    intl: service(),\n\n    givenPassword: '',\n    givenFullname: '',\n    errorMessage: null,\n\n    forms: computed(function () {\n        const forms = get(this, 'whiteListForms').filter((form) => {\n            return get(this, 'collector').testNeeds([form]);\n        });\n\n        const ret = forms.map((form) => {\n            return { name: form, date: moment().subtract(5, 'years').format('YYYY-MM-DD') };\n        });\n\n        return ret;\n    }),\n\n    boldFullname: computed(function () {\n        return htmlSafe(\n            '<b>' + get(this, 'user.firstname') + ' ' + get(this, 'user.lastname') + '</b>',\n        );\n    }),\n\n    init() {\n        this._super(...arguments);\n        this.whiteListForms = ['worktime', 'abcense', 'presence', 'trnotice'];\n    },\n\n    actions: {\n        removeData() {\n            set(this, 'errorMessage', null);\n            const userid = get(this, 'user.id');\n\n            set(this, 'loading', true);\n\n            get(this, 'ttapi')\n                .request('terminate/' + userid, {\n                    method: 'post',\n                    data: {\n                        password: get(this, 'givenPassword'),\n                        nametest: get(this, 'givenFullname'),\n                        terminate: get(this, 'forms'),\n                    },\n                })\n                .then(() => this._setHistory(userid))\n                .catch((error) => this._setErrorMessage(error));\n        },\n\n        close() {\n            this.close();\n        },\n    },\n\n    addHistory: function (forms, userid) {\n        const intl = get(this, 'intl');\n        let formsAndDates = [];\n\n        forms.forEach(function (form) {\n            formsAndDates.push(\n                intl.t('forms.' + form.name) +\n                    intl.t('users.teminate_older_than') +\n                    ': ' +\n                    form.date,\n            );\n        });\n\n        let text = intl.t('users.terminated_data_history', {\n            formsAndDates: formsAndDates.join(', '),\n        });\n\n        get(this, 'Collector').ajax({\n            method: 'put',\n            url: 'users/' + userid,\n            data: JSON.stringify({\n                _history: text,\n            }),\n        });\n    },\n    _setHistory(userid) {\n        this.addHistory(get(this, 'forms'), userid);\n        set(this, 'loading', false);\n        set(this, 'done', true);\n    },\n\n    _setErrorMessage(error) {\n        set(this, 'loading', false);\n        set(this, 'errorMessage', error.payload.message);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"j1u+w/q6\",\"block\":\"{\\\"symbols\\\":[\\\"form\\\"],\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"users.terminate_data\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"general.done\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"users.terminate_this_data\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"forms\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"users.teminate_older_than\\\"],[[\\\"form\\\"],[[28,\\\"collector-form-name\\\",[[23,1,[\\\"name\\\"]]],null]]]],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"date\\\",[23,1,[\\\"date\\\"]],\\\"pull-right\\\"]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"users.terminate_give_fullname\\\"],[[\\\"name\\\"],[[24,[\\\"boldFullname\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control\\\",[24,[\\\"givenFullname\\\"]]]]],false],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"general.grant_with_password\\\"],null],false],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"password\\\",\\\"form-control\\\",[24,[\\\"givenPassword\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[22,\\\"errorMessage\\\"],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeData\\\"]],[8],[1,[28,\\\"t\\\",[\\\"users.terminate_data_now\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/term-inator/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\n\ninterface ITestTypescript {\n    text: string;\n    number: number;\n}\n\nexport default class TestTypescriptComponent extends Component<ITestTypescript> {\n    @tracked protected message: string;\n\n    constructor(owner: unknown, args: ITestTypescript) {\n        super(owner, args);\n        this.message = 'Your text is: ' + this.args.text;\n    }\n\n    get anotherMessage() {\n        return 'A number: ' + this.args.number;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"kWcYLFvs\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[23,0,[\\\"message\\\"]],false],[0,\\\" \\\"],[1,[23,0,[\\\"anotherMessage\\\"]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/test-typescript/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\nimport podNames from 'ember-component-css/pod-names';\nimport { debounce, scheduleOnce } from '@ember/runloop';\nimport { tracked } from '@glimmer/tracking';\nimport config from 'tt4/config/environment';\n\nexport default class TopMenuComponent extends Component {\n    @service skvReport;\n    @service menu;\n    @service intl;\n    @tracked topMenu = [];\n    @tracked visibleItems = [];\n    @tracked hiddenItems = [];\n    @tracked currentLocale = this.intl.locale || 'fi'; // Track current locale\n    padding = 150; // we have to manually set padding because we don't know the width of the final menu\n\n    constructor() {\n        super(...arguments);\n        // kind of a hack, but we need to know the padding and margin of the items so we can use it in the menu service for width calculations\n        // could be done better, but it works for now\n        this.menu.paddingPlusMarginForItem = config.brand === 'otta' ? 40 : 20;\n        // we add a resize event listener to the window to recalculate the menu when the screen size changes\n        window.addEventListener('resize', this.debouncedResize);\n        // Listen for locale change\n        this.intl.on('localeChanged', this.handleLocaleChange.bind(this));\n        // we need to wait for the component to be rendered before we can calculate the width of the menu container\n        // because we use the width of the window and the width of other elements to calculate it\n        scheduleOnce('afterRender', this, 'refreshMenu');\n    }\n\n    get skvReportLink() {\n        return this.skvReport.skvReportLink;\n    }\n\n    // Called when the locale changes\n    handleLocaleChange() {\n        this.currentLocale = this.intl.locale; // Update tracked property\n        this.refreshMenu(); // Refresh menu to update translations\n    }\n    // sets the width of the menu container and the padding for each item and uses the menu service to get the menus\n    @action\n    refreshMenu() {\n        this.menu.containerWidth =\n            window.innerWidth -\n            document.querySelector('.icons-right').offsetWidth -\n            document.querySelector('.topmenu-branding-logo').offsetWidth -\n            this.padding;\n        this.topMenu = this.menu.getMenus();\n    }\n\n    //make sure to remove the event listener when the component is destroyed\n    willDestroy() {\n        super.willDestroy(...arguments);\n        window.removeEventListener('resize', this.debouncedResize);\n    }\n\n    // when screen size is changed, debounce the resize event to prevent multiple calls\n    @action\n    debouncedResize() {\n        debounce(this, this.refreshMenu, 150);\n    }\n\n    get styleNamespace() {\n        return podNames['top-menu'];\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"p8OJUn9M\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\",\\\"menuItem\\\",\\\"menuItem\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]],\\\" top-menu-container\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"topMenu\\\",\\\"visibleItems\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"link-to\\\",[[12,\\\"class\\\",\\\"visible-menu-item\\\"],[12,\\\"data-anchor\\\",[29,[\\\"top-menu-item-\\\",[23,4,[\\\"id\\\"]]]]]],[[\\\"@params\\\"],[[23,4,[\\\"link\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[23,4,[\\\"translated\\\"]],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[4]},null],[4,\\\"if\\\",[[23,0,[\\\"topMenu\\\",\\\"hiddenItems\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"top-menu-more-container\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"button\\\"]],[],[[\\\"@class\\\"],[[29,[\\\"top-menu-more-button \\\",[28,\\\"if\\\",[[23,0,[\\\"menu\\\",\\\"moreIsActive\\\"]],\\\"more-active\\\",\\\"\\\"],null]]]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"report.more_button\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"caret\\\"],[8],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[4,\\\"each\\\",[[23,0,[\\\"topMenu\\\",\\\"hiddenItems\\\"]]],null,{\\\"statements\\\":[[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[5,\\\"link-to\\\",[[12,\\\"class\\\",\\\"hidden-menu-item\\\"],[12,\\\"data-anchor\\\",[29,[\\\"top-menu-item-\\\",[23,3,[\\\"id\\\"]]]]]],[[\\\"@params\\\"],[[23,3,[\\\"link\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[23,3,[\\\"translated\\\"]],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"project.skv_number\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[23,0,[\\\"skvReportLink\\\"]]],[10,\\\"target\\\",\\\"_blank\\\"],[10,\\\"class\\\",\\\"hidden-menu-item\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"menu.skv_web_report\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"project.skv_number\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[23,0,[\\\"skvReportLink\\\"]]],[10,\\\"target\\\",\\\"_blank\\\"],[10,\\\"class\\\",\\\"visible-menu-item\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"menu.skv_web_report\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/top-menu/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { tracked } from '@glimmer/tracking';\nimport { action, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport config from 'tt4/config/environment';\nimport { htmlSafe } from '@ember/string';\n\nexport default class TrialPeriodIconComponent extends Component {\n    @tracked modalValues;\n    @tracked shouldShowModal;\n    @tracked isCanceling;\n    @service router;\n    @service session;\n    @service dialogs;\n    @service intl;\n\n    constructor() {\n        super(...arguments);\n        this.router.on('routeWillChange', () => {\n            if (this.args.trialMode == 'locked') {\n                this.shouldShowModal = true;\n                this.modalValues = this.getModalValues(this.args.trialMode, this.args.daysLeft);\n            }\n        });\n    }\n\n    get showModal() {\n        // this is because we need to show forced modal if mode is \"locked\"\n        if (this.args.trialMode == 'locked' && this.shouldShowModal !== false) {\n            this.modalValues = this.getModalValues(this.args.trialMode, this.args.daysLeft);\n            return true;\n        } else if (this.shouldShowModal) {\n            return true;\n        }\n        return false;\n    }\n\n    get styleNamespace() {\n        return podNames['trial-period-icon'];\n    }\n\n    get alertText() {\n        if (this.args.trialMode == 'locked') return 'billing.trial_alert_service_locked';\n        else if (this.args.trialMode == 'payment_failed' && this.args.daysLeft < 0)\n            return 'billing.trial_alert_add_billing';\n        return 'billing.trial_ok_title';\n    }\n\n    get showNumber() {\n        // 30 - 34 + 30\n        // -4 + 30 = 26\n        if (this.args.daysLeft < 0) {\n            let number = this.args.daysUntilLock + this.args.daysLeft;\n            return number > 0 ? number : 0;\n        }\n        return this.args.daysLeft;\n    }\n\n    get trialEndText() {\n        return htmlSafe(\n            this.intl.t('billing.trial_subscription_canceled', {\n                date: '<b>' + moment().add(this.showNumber, 'days').format('L') + '</b>',\n            }),\n        );\n    }\n\n    get showAlert() {\n        return (\n            this.args.trialMode == 'locked' ||\n            (this.args.trialMode == 'payment_failed' && this.args.daysLeft < 0)\n        );\n    }\n\n    getModalValues(type, days) {\n        let values = [];\n        values['mode'] = type;\n        if (type == 'locked') {\n            values['mode'] = 'locked';\n            values['trialText'] = 'billing.service_locked_text';\n            values['modalTitle'] = 'billing.service_locked_title';\n        } else if (type == 'payment_failed' && days < 0) {\n            values['mode'] = 'payment_failed';\n            values['trialText1'] = 'billing.trial_end_text_title';\n            values['trialText2'] = 'billing.trial_end_text';\n            values['modalTitle'] = 'billing.trial_end_title';\n        } else if (type == 'normal_trial' || days >= 0) {\n            values['mode'] = 'normal_trial';\n            values['trialText'] = 'billing.trial_ok_text';\n            values['modalTitle'] = 'billing.trial_ok_title';\n        }\n        return values;\n    }\n\n    @action\n    showModalAction() {\n        this.modalValues = this.getModalValues(this.args.trialMode, this.args.daysLeft);\n        this.shouldShowModal = true;\n    }\n    @action\n    async cancelSubscription() {\n        this.isCanceling = false;\n        let con = await this.dialogs.confirm(this.intl.t('billing.subscription_cancel_question'));\n        if (con) {\n            this.isCanceling = true;\n            await fetch(config.APP.BILLING_URL + '/cancel_subscription', {\n                headers: {\n                    Authorization:\n                        'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n                },\n                method: 'POST',\n            });\n            this.isCanceling = false;\n            this.shouldShowModal = false;\n            //this.canTrialBeCanceled = false;\n            this.args.setTrialStatus('disabled');\n        }\n    }\n\n    @action\n    gotoProfile() {\n        this.shouldShowModal = false;\n        this.router.transitionTo('settings.general-v2', {\n            queryParams: {\n                main: 'companyProfile',\n                sub: 'info',\n            },\n        });\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"of0tZPJO\",\"block\":\"{\\\"symbols\\\":[\\\"@canSubscriptionBeCanceled\\\",\\\"@trialMode\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"flex-column no-wrap-column\\\"],[12,\\\"role\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"showModalAction\\\"]]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"trial-text pr-1\\\"],[8],[1,[28,\\\"t\\\",[[23,0,[\\\"alertText\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"not-eq\\\",[[23,2,[]],\\\"locked\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"trial-days-number\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[23,0,[\\\"showNumber\\\"]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"trial-text-days pl-3\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.days\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Lock small-lock\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showAlert\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"trial-alert blink\\\"],[8],[1,\\\"!\\\",false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,0,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"shouldShowModal\\\"]]],null],false],null],[28,\\\"t\\\",[[23,0,[\\\"modalValues\\\",\\\"modalTitle\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,0,[\\\"modalValues\\\",\\\"mode\\\"]],\\\"normal_trial\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"trial-big-number ok-number\\\"],[8],[1,[23,0,[\\\"showNumber\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[[23,0,[\\\"modalValues\\\",\\\"trialText\\\"]]],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[23,1,[]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"billing.trial_cancel_text\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column trial-center-button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[23,1,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\",\\\"@saveButtonText\\\"],[[23,0,[\\\"isCanceling\\\"]],[23,0,[\\\"cancelSubscription\\\"]],\\\"btn btn-m-link btn-block btn-lg\\\",[28,\\\"t\\\",[\\\"billing.cancel_subscription\\\"],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"canceled-text\\\"],[8],[1,[22,\\\"trialEndText\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,0,[\\\"modalValues\\\",\\\"mode\\\"]],\\\"payment_failed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"trial-big-number not-ok-number\\\"],[8],[1,[23,0,[\\\"showNumber\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[[23,0,[\\\"modalValues\\\",\\\"trialText1\\\"]]],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[[23,0,[\\\"modalValues\\\",\\\"trialText2\\\"]]],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-block btn-primary flex-item-40\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"gotoProfile\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"billing.goto_profile\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-20\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel flex-item-40\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"shouldShowModal\\\"]]],null],false],null]]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,0,[\\\"modalValues\\\",\\\"mode\\\"]],\\\"locked\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Lock not-ok-number trial-big-number padded-icon\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[[23,0,[\\\"modalValues\\\",\\\"trialText\\\"]]],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column trial-center-button\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-block btn-primary flex-item-40\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"gotoProfile\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"billing.goto_profile\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"billing.billing.service_locked_text_not_admin\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"            \\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/trial-period-icon/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { action, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class UpgradeIconComponent extends Component {\n    @service session;\n    @service intl;\n    @service ttapi;\n    @service('collector-service') Collector;\n    @tracked email_message_sent;\n    @tracked sending;\n    @tracked showModal;\n    @tracked more_info;\n    @tracked sender;\n    @tracked debug_email;\n\n    constructor() {\n        super(...arguments);\n        this.email_message_sent = false;\n        this.sending = false;\n        this.sender = this.session.currentUser.email;\n    }\n\n    get styleNamespace() {\n        return podNames['upgrade-icon'];\n    }\n\n    get isDisabled() {\n        if (this.Collector.testNeedsOne('devMode') && !this.debug_email) return true;\n        else if (!this.sender) return true;\n        return false;\n    }\n\n    @action\n    async sendEmail() {\n        this.sending = true;\n        let mail = this.debug_email\n            ? this.debug_email\n            : this.intl.t('upgrade_service.send-to-email');\n\n        await this.ttapi.request('/sendEmail', {\n            method: 'post',\n            data: {\n                email: mail,\n                title:\n                    this.intl.t('upgrade_service.email-title') +\n                    ' - ' +\n                    get(this, 'session.currentUser.company') +\n                    ' (' +\n                    get(this, 'session.currentUser.partnerid') +\n                    ')',\n                content:\n                    this.intl.t('upgrade_service.email_content') +\n                    '\\r\\n' +\n                    this.more_info +\n                    '\\r\\n' +\n                    this.sender,\n            },\n        });\n        this.sending = false;\n        this.email_message_sent = true;\n    }\n\n    @action\n    closeModal() {\n        this.showModal = false;\n        this.sending = false;\n        this.email_message_sent = false;\n        this.more_info = '';\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"h/jc4Jtb\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]],\\\" flex-column\\\"]]],[12,\\\"role\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showModal\\\"]]],null]],null]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"upgrade-text\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"upgrade_service.icon-title\\\"],null],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"lightbulb-div\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Lightbulb\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,0,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],[23,0,[\\\"closeModal\\\"]]],null],[28,\\\"t\\\",[\\\"upgrade_service.dialog-title\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"email_message_sent\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"upgrade_service.message-sent\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"upgrade-info-text\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"upgrade_service.info-text\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"dev-helper\\\",null,null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"header\\\"],[8],[1,[28,\\\"t\\\",[\\\"saved.modal.email\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control input-lg\\\"],[12,\\\"type\\\",\\\"text\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"debug_email\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"header\\\"],[8],[1,[28,\\\"t\\\",[\\\"feedback.modal.sender\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control input-lg\\\"],[12,\\\"type\\\",\\\"text\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"sender\\\"]]]]],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"header\\\"],[8],[1,[28,\\\"t\\\",[\\\"upgrade_service.more_info\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[5,\\\"textarea\\\",[[12,\\\"rows\\\",\\\"6\\\"],[12,\\\"class\\\",\\\"form-control input-lg\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"more_info\\\"]]]]],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[5,\\\"addon/loading-button\\\",[],[[\\\"@classes\\\",\\\"@disabled\\\",\\\"@loading\\\",\\\"@onClick\\\"],[\\\"btn btn-m-link btn-block\\\",[23,0,[\\\"isDisabled\\\"]],[23,0,[\\\"sending\\\"]],[23,0,[\\\"sendEmail\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"saved.modal.send_email\\\"],null],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/upgrade-icon/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    valid: computed('record.date', function () {\n        return get(this, 'record.date') ? moment(get(this, 'record.date')).format('MM/YYYY') : null;\n    }),\n\n    cardType: computed('record.type', function () {\n        let type = 'work';\n        let color = '#4AC94A';\n\n        for (var item1 of this.firstAid) {\n            if (this.record && this.record.type.toLowerCase().indexOf(item1) > -1) {\n                type = 'firstaid';\n                color = '#E64444';\n            }\n        }\n        for (var item2 of this.safety) {\n            if (this.record && this.record.type.toLowerCase().indexOf(item2) > -1) {\n                type = 'safety';\n                color = '#3B9C8B';\n            }\n        }\n        for (var item3 of this.vehicle) {\n            if (this.record && this.record.type.toLowerCase().indexOf(item3) > -1) {\n                type = 'vehicle';\n                color = '#4353B2';\n            }\n        }\n        return {\n            type: type,\n            color: color,\n        };\n    }),\n    didReceiveAttrs() {\n        this.firstAid = ['Ensiavun', 'Ensiapu', 'ea1', 'ea2'];\n        this.safety = ['turva', 'pelastus', 'road', 'fire', 'safety'];\n        this.vehicle = ['ajo-oikeus', 'ajolupa', 'liikenteen', 'driver'];\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"KNowdPfh\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"xmlns:xlink\\\",\\\"http://www.w3.org/1999/xlink\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"viewBox\\\",\\\"0 0 757 394\\\"],[11,\\\"width\\\",[28,\\\"if\\\",[[24,[\\\"width\\\"]],[24,[\\\"width\\\"]]],null]],[8],[0,\\\"\\\\n  \\\"],[7,\\\"defs\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"radialGradient\\\",true],[10,\\\"id\\\",\\\"radial-gradient\\\"],[10,\\\"cx\\\",\\\"0.5\\\"],[10,\\\"cy\\\",\\\"0.5\\\"],[10,\\\"r\\\",\\\"0.5\\\"],[10,\\\"gradientUnits\\\",\\\"objectBoundingBox\\\"],[8],[0,\\\"\\\\n      \\\"],[7,\\\"stop\\\",true],[10,\\\"offset\\\",\\\"0\\\"],[10,\\\"stop-color\\\",\\\"#464646\\\"],[8],[9],[0,\\\"\\\\n      \\\"],[7,\\\"stop\\\",true],[10,\\\"offset\\\",\\\"0.423\\\"],[10,\\\"stop-color\\\",\\\"#5b5b5b\\\"],[10,\\\"stop-opacity\\\",\\\"0.278\\\"],[8],[9],[0,\\\"\\\\n      \\\"],[7,\\\"stop\\\",true],[10,\\\"offset\\\",\\\"1\\\"],[10,\\\"stop-color\\\",\\\"#5b5b5b\\\"],[10,\\\"stop-opacity\\\",\\\"0\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"linearGradient\\\",true],[10,\\\"id\\\",\\\"linear-gradient\\\"],[10,\\\"x1\\\",\\\"0.964\\\"],[10,\\\"y1\\\",\\\"0.061\\\"],[10,\\\"x2\\\",\\\"0.046\\\"],[10,\\\"y2\\\",\\\"0.925\\\"],[10,\\\"gradientUnits\\\",\\\"objectBoundingBox\\\"],[8],[0,\\\"\\\\n      \\\"],[7,\\\"stop\\\",true],[10,\\\"offset\\\",\\\"0\\\"],[10,\\\"stop-color\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n      \\\"],[7,\\\"stop\\\",true],[10,\\\"offset\\\",\\\"1\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n  \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"rect\\\",true],[10,\\\"id\\\",\\\"Rectangle_599\\\"],[10,\\\"data-name\\\",\\\"Rectangle 599\\\"],[10,\\\"width\\\",\\\"757\\\"],[10,\\\"height\\\",\\\"70\\\"],[10,\\\"transform\\\",\\\"translate(0 324)\\\"],[10,\\\"opacity\\\",\\\"0.88\\\"],[10,\\\"fill\\\",\\\"url(#radial-gradient)\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"rect\\\",true],[10,\\\"id\\\",\\\"Rectangle_622\\\"],[10,\\\"data-name\\\",\\\"Rectangle 622\\\"],[10,\\\"width\\\",\\\"578\\\"],[10,\\\"height\\\",\\\"362\\\"],[10,\\\"rx\\\",\\\"30\\\"],[10,\\\"transform\\\",\\\"translate(677 362) rotate(180)\\\"],[11,\\\"fill\\\",[24,[\\\"cardType\\\",\\\"color\\\"]]],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"rect\\\",true],[10,\\\"id\\\",\\\"Rectangle_706\\\"],[10,\\\"data-name\\\",\\\"Rectangle 706\\\"],[10,\\\"width\\\",\\\"578\\\"],[10,\\\"height\\\",\\\"362\\\"],[10,\\\"rx\\\",\\\"30\\\"],[10,\\\"transform\\\",\\\"translate(677 362) rotate(180)\\\"],[10,\\\"opacity\\\",\\\"0.2\\\"],[10,\\\"fill\\\",\\\"url(#linear-gradient)\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_2292\\\"],[10,\\\"data-name\\\",\\\"Path 2292\\\"],[10,\\\"d\\\",\\\"M11795.367,2079H12077a30,30,0,0,1,30,30v155.08Z\\\"],[10,\\\"transform\\\",\\\"translate(12206.367 2441.079) rotate(180)\\\"],[10,\\\"opacity\\\",\\\"0.27\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"text\\\",true],[10,\\\"data-name\\\",\\\"competence\\\"],[10,\\\"transform\\\",\\\"translate(262 20)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"font-size\\\",\\\"26\\\"],[10,\\\"font-family\\\",\\\"Lato-Regular, Lato\\\"],[10,\\\"class\\\",\\\"inlineSVG\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"tspan\\\",true],[10,\\\"x\\\",\\\"0\\\"],[10,\\\"y\\\",\\\"26\\\"],[10,\\\"class\\\",\\\"inline\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tspan\\\",true],[10,\\\"x\\\",\\\"0\\\"],[10,\\\"dy\\\",\\\"0em\\\"],[8],[1,[28,\\\"inline-text\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\",\\\"owner\\\"],[\\\"card\\\",\\\"type\\\",[24,[\\\"record\\\",\\\"type\\\"]],[24,[\\\"record\\\",\\\"owner\\\"]]]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"tspan\\\",true],[10,\\\"x\\\",\\\"0\\\"],[10,\\\"dy\\\",\\\"1em\\\"],[8],[1,[28,\\\"inline-text-2\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\",\\\"owner\\\"],[\\\"card\\\",\\\"type\\\",[24,[\\\"record\\\",\\\"type\\\"]],[24,[\\\"record\\\",\\\"owner\\\"]]]]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\" \\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"text\\\",true],[10,\\\"data-name\\\",\\\"name\\\"],[10,\\\"transform\\\",\\\"translate(147 249)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"font-size\\\",\\\"35\\\"],[10,\\\"font-family\\\",\\\"Lato-Italic, Lato\\\"],[10,\\\"font-style\\\",\\\"italic\\\"],[8],[7,\\\"tspan\\\",true],[10,\\\"x\\\",\\\"0\\\"],[10,\\\"y\\\",\\\"0\\\"],[8],[1,[24,[\\\"record\\\",\\\"name\\\"]],false],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"text\\\",true],[10,\\\"data-name\\\",\\\"Validity\\\"],[10,\\\"transform\\\",\\\"translate(431 338)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"font-size\\\",\\\"24\\\"],[10,\\\"font-family\\\",\\\"Lato-Regular, Lato\\\"],[8],[7,\\\"tspan\\\",true],[10,\\\"x\\\",\\\"0\\\"],[10,\\\"y\\\",\\\"0\\\"],[8],[4,\\\"if\\\",[[24,[\\\"valid\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"cardregister.valid\\\"],null],false],[0,\\\": \\\"],[1,[22,\\\"valid\\\"],false]],\\\"parameters\\\":[]},null],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"cardType\\\",\\\"type\\\"]],\\\"firstaid\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Plus\\\"],[10,\\\"d\\\",\\\"M58.708,3.188a55.522,55.522,0,1,0,55.525,55.52A55.521,55.521,0,0,0,58.708,3.188Zm29.612,63.6H66.784V88.319H50.632V66.784H29.1V50.632H50.632V29.1H66.784V50.632H88.319Z\\\"],[10,\\\"transform\\\",\\\"translate(119.823 16.812)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"cardType\\\",\\\"type\\\"]],\\\"safety\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"g\\\",true],[10,\\\"id\\\",\\\"Handshake\\\"],[10,\\\"transform\\\",\\\"translate(131.12 35.9)\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_10\\\"],[10,\\\"data-name\\\",\\\"Path 10\\\"],[10,\\\"d\\\",\\\"M72.436,13.72V43.46s-6.4,1.129-7.529,1.506-5.27,1.506-8.282-1.506L35.919,22.755s-2.635-2.635-7.153-.376c-4.141,2.259-10.541,5.647-13.176,6.776-2.259,1.129-9.035-7.529-5.27-9.788C15.967,15.979,28.767,8.826,34.037,6.191c3.012-1.506,5.27-1.882,9.788,1.882,5.27,4.518,9.788,8.282,9.788,8.282a7.668,7.668,0,0,0,4.141.753Z\\\"],[10,\\\"transform\\\",\\\"translate(25.444 0.039)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_11\\\"],[10,\\\"data-name\\\",\\\"Path 11\\\"],[10,\\\"d\\\",\\\"M32.613,36.864a5.259,5.259,0,0,0-5.647-1.129,5.156,5.156,0,0,0-.753-5.647,5.591,5.591,0,0,0-5.27-1.506c.376-1.882.376-3.765-1.129-5.27a4.662,4.662,0,0,0-5.27-1.129c.376-1.882.376-3.765-1.129-5.27-2.259-2.259-5.647-2.259-8.282.376-2.259,2.259-4.141,6.4-1.882,9.035s4.518,1.129,6.4.376c-.376,1.882-2.259,3.765,0,6.023,1.882,2.635,4.518,1.129,6.4.376-.376,1.882-1.882,3.765,0,6.023s4.894,1.129,7.153.376c-.753,1.882-2.635,4.141-.376,6.776,2.259,2.259,7.153,1.129,9.412-1.129S34.872,39.123,32.613,36.864Z\\\"],[10,\\\"transform\\\",\\\"translate(6.163 28.093)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_12\\\"],[10,\\\"data-name\\\",\\\"Path 12\\\"],[10,\\\"d\\\",\\\"M21.653,21.174a4.58,4.58,0,0,1,0,6.023,4.58,4.58,0,0,1-6.023,0c-1.506-1.506-1.506-4.518,0-6.4A4.2,4.2,0,0,1,21.653,21.174Z\\\"],[10,\\\"transform\\\",\\\"translate(40.087 40.395)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_13\\\"],[10,\\\"data-name\\\",\\\"Path 13\\\"],[10,\\\"d\\\",\\\"M23.953,19.48a4.58,4.58,0,0,1,0,6.023,4.58,4.58,0,0,1-6.023,0c-1.506-1.506-1.506-4.518,0-6.4C19.435,17.6,22.07,17.975,23.953,19.48Z\\\"],[10,\\\"transform\\\",\\\"translate(46.445 36.065)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_14\\\"],[10,\\\"data-name\\\",\\\"Path 14\\\"],[10,\\\"d\\\",\\\"M25.853,17.58a4.58,4.58,0,0,1,0,6.023,4.58,4.58,0,0,1-6.023,0c-1.506-1.506-1.506-4.518,0-6.4A4.574,4.574,0,0,1,25.853,17.58Z\\\"],[10,\\\"transform\\\",\\\"translate(51.698 30.813)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_15\\\"],[10,\\\"data-name\\\",\\\"Path 15\\\"],[10,\\\"d\\\",\\\"M20.182,22.537a4.58,4.58,0,0,1,0,6.023,4.58,4.58,0,0,1-6.023,0L11.9,26.3c1.129-1.506,1.129-2.259,2.259-3.765A3.918,3.918,0,0,1,20.182,22.537Z\\\"],[10,\\\"transform\\\",\\\"translate(32.899 44.303)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"id\\\",\\\"Ellipse_1\\\"],[10,\\\"data-name\\\",\\\"Ellipse 1\\\"],[10,\\\"cx\\\",\\\"5.647\\\"],[10,\\\"cy\\\",\\\"5.647\\\"],[10,\\\"r\\\",\\\"5.647\\\"],[10,\\\"transform\\\",\\\"translate(31.999 18.653)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_16\\\"],[10,\\\"data-name\\\",\\\"Path 16\\\"],[10,\\\"d\\\",\\\"M77.551,48.393,58.728,29.57s-3.012-3.012-6.4-1.129c-2.635,1.129-6.023,2.635-8.659,3.765a14.9,14.9,0,0,1-5.647,1.882A9.967,9.967,0,0,1,28.235,24.3a10.345,10.345,0,0,1,4.518-8.282c3.765-2.635,12.8-7.529,12.8-7.529S42.917,5.1,36.893,5.1s-18.447,8.282-18.447,8.282a10.441,10.441,0,0,1-8.659.376L0,10.37V44.252a50.28,50.28,0,0,1,5.27,1.882,15.545,15.545,0,0,1,2.635-4.141c4.141-4.141,10.917-4.141,14.682,0a8.974,8.974,0,0,1,2.259,4.141,8.974,8.974,0,0,1,4.141,2.259,8.974,8.974,0,0,1,2.259,4.141,8.974,8.974,0,0,1,4.141,2.259,11.01,11.01,0,0,1,2.635,4.518,9.747,9.747,0,0,1,4.141,2.635A10.478,10.478,0,0,1,44.8,70.6c1.129,1.882,7.906-1.882,8.282-3.765-5.647-5.647-6.023-6.023-5.27-6.776s1.506.753,7.529,7.153c.753.753,10.164-1.882,6.023-6.023-5.647-5.647-6.4-6.776-6.023-7.153s3.012,2.259,9.035,8.282c3.012,0,7.153-5.27,6.023-6.023-7.153-7.153-6.776-7.529-6.4-7.906s.376-.376,7.529,6.776C72.657,55.922,79.057,49.9,77.551,48.393Z\\\"],[10,\\\"transform\\\",\\\"translate(0 0)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"cardType\\\",\\\"type\\\"]],\\\"vehicle\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Path_10\\\"],[10,\\\"data-name\\\",\\\"Path 10\\\"],[10,\\\"d\\\",\\\"M253.132,16.523c-.405-.405-.81-.2-1.216.2L243,25.641a1.013,1.013,0,0,0-.2,1.418c.405.2.608,0,1.013-.405l9.118-8.915C253.335,17.334,253.538,16.929,253.132,16.523Zm5.876-2.634L248.067,24.831c-.405.405-.608.608-.2,1.013s.81.2,1.216-.2L259.819,14.9c.405-.405.608-.81.2-1.216S259.414,13.687,259.008,13.889ZM306.22,23.21h-6.079a3.242,3.242,0,0,0-2.229,1.013l-4.863-11.144A10.334,10.334,0,0,0,283.728,7h-46.2a10.334,10.334,0,0,0-9.321,6.079l-4.863,11.144a3.242,3.242,0,0,0-2.229-1.013h-6.079A3.039,3.039,0,0,0,212,26.249v1.824a3.242,3.242,0,0,0,3.039,3.242h5.268l-2.634,6.079a31.812,31.812,0,0,0-1.621,10.131V61.708h0v16.21A5.876,5.876,0,0,0,222.131,84h6.079a5.876,5.876,0,0,0,6.079-6.079V73.866H286.97v4.052A5.876,5.876,0,0,0,293.049,84h6.079a5.876,5.876,0,0,0,6.079-6.079V61.708h0V47.525a31.811,31.811,0,0,0-1.621-10.131l-2.634-6.079h5.268a3.242,3.242,0,0,0,3.039-3.242V26.249A3.039,3.039,0,0,0,306.22,23.21ZM232.06,14.7a5.674,5.674,0,0,1,5.471-3.647h46.2A5.673,5.673,0,0,1,289.2,14.7l6.484,14.589H225.576Zm48.832,42.956H240.367V47.525h40.525Zm-40.93-14.184L234.9,33.341h51.466L281.3,43.472Zm-18.641-4.458,2.431-5.673h9.118l5.066,10.131a2.229,2.229,0,0,0-1.621,2.026H220.1a24.719,24.719,0,0,1,1.216-6.484ZM220.1,49.551h16.21v8.1H220.1Zm81.049,28.367a1.824,1.824,0,0,1-2.026,2.026h-6.079a1.824,1.824,0,0,1-2.026-2.026V73.866h2.026a13.778,13.778,0,0,0,6.079-2.837V66.976a7.5,7.5,0,0,1-6.079,2.837H228.21a7.5,7.5,0,0,1-6.079-2.837v4.458a13.171,13.171,0,0,0,6.079,2.431h2.026v4.052a1.824,1.824,0,0,1-2.026,2.026h-6.079a1.824,1.824,0,0,1-2.026-2.026v-8.1h0v-8.1h0V59.682h18.033a1.013,1.013,0,1,0,0,2.026h45.185a1.013,1.013,0,1,0,0-2.026h17.831Zm0-20.262h-16.21v-8.1h16.21Zm0-12.157h-16.21a2.229,2.229,0,0,0-1.621-2.026l5.066-10.131h9.118l2.431,5.673a24.724,24.724,0,0,1,1.216,6.484Z\\\"],[10,\\\"transform\\\",\\\"translate(-81.259 25)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[10,\\\"fill-rule\\\",\\\"evenodd\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"path\\\",true],[10,\\\"id\\\",\\\"Worker\\\"],[10,\\\"d\\\",\\\"M89.028,94.716v3.174c0,11.54-22.1,14.168-42.841,14.168-20.711,0-43.1-2.624-43.1-14.168V94.716c0-8.474,15.278-17.056,28.292-21.765.941-.343,5.438-2.793,2.923-9.384-5.824-5.954-9.792-11.722-9.792-24.731H67.745c0,12.875-4.068,18.7-9.857,24.662h.035c-2.459,7.481,1.474,9.254,2.1,9.458C73.681,77.474,89.028,85.987,89.028,94.716ZM70.706,25.136c0-9.28-6.349-17.4-15.768-20.269-1.466-.447-4.54,16.691-4.54,16.691V2.712A2.6,2.6,0,0,0,47.922.058H44.206a2.6,2.6,0,0,0-2.48,2.654V21.559S38.633,4.429,37.159,4.88c-9.4,2.871-15.742,10.984-15.742,20.256,0,2.372-5.711-.989-5.711,9.363H76.418C76.418,24.052,70.706,27.508,70.706,25.136Z\\\"],[10,\\\"transform\\\",\\\"translate(133.972 12.942)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[8],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"record\\\",\\\"owner\\\"]],\\\"partner\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"edit\\\"]],[23,0,[\\\"record\\\"]]]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[4,\\\"if\\\",[[24,[\\\"delete\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Delete\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"delete\\\"]],[23,0,[\\\"record\\\"]]]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/user-competences/card/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\n\nexport default Component.extend({\n    store: service(),\n    dialogs: service(),\n    intl: service(),\n    ttapi2: service(),\n    error: service(),\n\n    tagName: '',\n\n    show_request_error: false,\n\n    async didReceiveAttrs() {\n        set(this, 'cardsPromise', this.loadCompetences());\n        await this.setLastupdated();\n    },\n\n    actions: {\n        add() {\n            const competence = this.store.createRecord('card', {\n                taxnumber: get(this, 'user.taxnumber'),\n                name: get(this, 'user.firstname') + ' ' + get(this, 'user.lastname'),\n                owner: 'partner',\n            });\n            set(this, 'editCompetence', competence);\n        },\n\n        addSame() {\n            // Cannot call collector copyRecord because of JSONAPI data\n            set(\n                this,\n                'editCompetence',\n                this.store.createRecord('card', this.editCompetence.toJSON()),\n            );\n        },\n\n        async reload() {\n            set(this, 'cardsPromise', this.loadCompetences());\n        },\n\n        async delete(record) {\n            if (await this.dialogs.confirm(this.intl.t('general.remove_row')))\n                record.destroyRecord();\n        },\n\n        async update() {\n            set(this, 'updating', true);\n            try {\n                const userCountry = get(this, 'user.homecountry') || 'FI';\n                const empCountry = get(this, 'user.employer.emp_country') || 'FI';\n\n                await this.ttapi2.request(\n                    'cardregister/updateOnePerson?' +\n                    'taxnumber=' + get(this, 'user.taxnumber') +\n                    '&userCountry=' + userCountry +\n                    '&vatin=' + get(this, 'user.employer.emp_id') +\n                    '&empCountry=' + empCountry,\n\n                    {\n                        dataType: 'json',\n                        contentType: 'application/json',\n                        method: 'POST',\n                    },\n                );\n                this.send('reload');\n                await this.setLastupdated();\n            } catch (e) {\n                // we only need payload from error to get the error message\n                // eslint-disable-next-line no-unused-vars\n                const { response, jqXHR, payload } = e;\n                this.error.notify({\n                    payload: {\n                        message: this.intl.t(\n                            `cardregister.errors.${payload ? payload : 'unknown'}`,\n                        ),\n                    },\n                });\n            } finally {\n                set(this, 'updating', false);\n            }\n        },\n    },\n\n    async loadCompetences() {\n        let start = moment();\n\n        // sometimes employer is not fully loaded so fetch emp_id if missing\n        if (!get(this, 'user.employer.emp_id') && get(this, 'user.id'))\n            await this.store.query('user', {\n                id: get(this, 'user.id'),\n                sideload: ['employer.emp_id', 'employer.emp_country'],\n            });\n        if (get(this, 'user.taxnumber')) {\n            const userCountry = get(this, 'user.homecountry') || 'FI';\n            const empCountry = get(this, 'user.employer.emp_country') || 'FI';\n\n            let resp = await this.store.query('card', {\n                taxnumber: get(this, 'user.taxnumber'),\n                userCountry,\n                vatin: get(this, 'user.employer.emp_id'),\n                empCountry,\n            });\n            var stop = moment();\n            if (stop.diff(start) / 1000 > 8) {\n                this.show_request_error = true;\n            }\n            return resp;\n        }\n    },\n\n    async setLastupdated() {\n        if (!get(this, 'user.taxnumber')) return set(this, 'lastupdated', '-');\n        const res = await this.ttapi2.request(\n            'cardregister/getCardUpdaters?taxnumber=' + get(this, 'user.taxnumber'),\n            {\n                dataType: 'json',\n                contentType: 'application/json',\n            },\n        );\n        const updater = res.data?.firstObject;\n        if (!updater) set(this, 'lastupdated', '-');\n        else\n            set(\n                this,\n                'lastupdated',\n                moment(updater.attributes.updated).format('DD.MM.YYYY HH:mm:ss'),\n            );\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"r9ebs1lf\",\"block\":\"{\\\"symbols\\\":[\\\"card\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[23,0,[\\\"cardsPromise\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"show_request_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"cardregister.request-timeout1\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"cardregister.request-timeout2\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[25,2]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,2,[[28,\\\"await\\\",[[23,0,[\\\"cardsPromise\\\"]]],null],[28,\\\"component\\\",[\\\"user-competences/card\\\"],[[\\\"class\\\",\\\"delete\\\",\\\"edit\\\"],[\\\"card\\\",[28,\\\"action\\\",[[23,0,[]],\\\"delete\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editCompetence\\\"]]],null]],null]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[28,\\\"await\\\",[[23,0,[\\\"cardsPromise\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"user-competences/card\\\",null,[[\\\"record\\\",\\\"class\\\",\\\"delete\\\",\\\"edit\\\"],[[23,1,[]],\\\"card\\\",[28,\\\"action\\\",[[23,0,[]],\\\"delete\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editCompetence\\\"]]],null]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"cardregister-buttons\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add\\\"]],[8],[1,[28,\\\"t\\\",[\\\"cardregister.add\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[5,\\\"addon/loading-button\\\",[],[[\\\"@classes\\\",\\\"@loading\\\",\\\"@onClick\\\"],[\\\"cardregister-update-button\\\",[23,0,[\\\"updating\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"update\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"cardregister.update\\\"],null],false],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"cardregister.lastupdated\\\"],null],\\\":\\\"],null],false],[0,\\\" \\\"],[7,\\\"i\\\",true],[8],[1,[23,0,[\\\"lastupdated\\\"]],false],[9],[9],[0,\\\"\\\\n    \\\\n    \\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"editCompetence\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"close\\\",\\\"header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editCompetence\\\"]]],null],null],null],[28,\\\"t\\\",[\\\"cardregister.competence\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"close\\\",\\\"rowAdded\\\",\\\"rowEdited\\\",\\\"addNew\\\",\\\"addSame\\\"],[\\\"card\\\",[24,[\\\"editCompetence\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editCompetence\\\"]]],null],null],null],[28,\\\"action\\\",[[23,0,[]],\\\"reload\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"reload\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"add\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"addSame\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/user-competences/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { htmlSafe } from '@ember/template';\nimport { tracked } from '@glimmer/tracking';\nimport { computed } from '@ember/object';\nimport environment from 'tt4/config/environment';\n\nexport default class UserDeletionComponent extends Component {\n  @service store;\n  @service collectorService;\n  @service collector;\n  @service capi;\n  @service ttapi;\n  @service intl;\n  @service ajax;\n\n  @tracked givenPassword = '';\n  @tracked givenFullname = '';\n  @tracked isDeleting = false;\n  @tracked errorMessage = null;\n  @tracked successMessage = null;\n  @tracked isLoading = false;\n  @tracked redirectTimeout = 10;\n  whiteListForms = ['worktime', 'abcense', 'presence', 'trnotice'];\n  shouldRedirect = false;\n  @computed('whiteListForms')\n  get forms() {\n    const forms = this.whiteListForms.filter((form) => {\n      return this.collectorService.testNeeds([form]);\n    });\n    const ret = forms.map((form) => {\n        return { name: form, date: moment().format('YYYY-MM-DD')};\n    });\n    return ret;\n  }\n  @computed('args.user.{firstname,lastname}')\n  get boldFullname() {\n      return htmlSafe(\n          `[<b>${this.args.user.firstname} ${this.args.user.lastname}</b>]`\n      );\n  }\n  @action\n    close() {\n        this.args.close();\n    }\n    @action\n    async deleteUser() {\n      this.isDeleting = true;\n      this.errorMessage = null;\n      this.successMessage = null;\n      this.isLoading = true;\n      try {\n        let user = this.args.user;\n        let userId = user.id;\n        let password = this.givenPassword;\n        let nametest = this.givenFullname;\n        let terminate = this.forms;\n        await this.ttapi.request(`terminate-user/${userId}`, {\n          method: 'post',\n          data: {\n            password,\n            nametest,\n            terminate\n          }\n        });\n        this.successMessage = 'User and all related data successfully deleted.';\n        this.shouldRedirect = true;\n      } catch (error) {\n        this.shouldRedirect = false;\n        this.errorMessage = `Error deleting user: ${error.payload.message}`;\n      } finally {\n        this.isLoading = false;\n        this.isDeleting = false;\n        if (this.shouldRedirect) {\n          this.startCountDownAndRedirect();\n        }\n      }\n    }\n    @action\n    startCountDownAndRedirect() {\n        // Start the countdown\n        // Disable redirect when executing tests\n        if (environment.environment === 'test') {\n            return;\n        }\n        const countdown = setInterval(() => {\n        if (this.redirectTimeout > 0) {\n            this.redirectTimeout--;\n        } else {\n            clearInterval(countdown);\n            // Redirect user back to users route.\n            window.location.href = '/';\n        }\n        }, 1000);\n    }\n\n\n}\n","export default Ember.HTMLBars.template({\"id\":\"FIXzw4I6\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"nice-modal\\\",[[12,\\\"data-anchor\\\",\\\"user-deletion-modal\\\"]],[[\\\"@header\\\",\\\"@close\\\"],[[28,\\\"t\\\",[\\\"user.hard_delete_user\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"successMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"general.done\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"data-anchor\\\",\\\"success-message-box\\\"],[10,\\\"class\\\",\\\"alert alert-success\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"user.hard_delete_user_success\\\"],null],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"general.redirect_in_seconds\\\"],[[\\\"seconds\\\"],[[24,[\\\"redirectTimeout\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.hard_delete_user_information\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"full-name\\\"],[8],[1,[28,\\\"t\\\",[\\\"users.hard_delete_fullname\\\"],[[\\\"name\\\",\\\"htmlSafe\\\"],[[24,[\\\"boldFullname\\\"]],true]]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control given-fullname\\\",[24,[\\\"givenFullname\\\"]]]]],false],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"general.grant_with_password\\\"],null],false],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"password\\\",\\\"form-control\\\",[24,[\\\"givenPassword\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[22,\\\"errorMessage\\\"],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"data-anchor\\\",\\\"delete-user-button\\\"],[12,\\\"class\\\",\\\"btn btn-danger btn-block btn-lg\\\"],[12,\\\"disabled\\\",[23,0,[\\\"isDeleting\\\"]]],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"deleteUser\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"users.hard_delete_button\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"data-anchor\\\",\\\"delete-user-cancel-button\\\"],[12,\\\"class\\\",\\\"btn btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/user-deletion/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/user-icon2/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserIcon2Component;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nUserIcon2Component = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    classNames: ['inline-block'],\n    image_url: Em.computed('user', function () {\n        return config.APP.COLLECTOR_API_URL + '/' + this.get('user.image.firstObject.thumb');\n    }),\n    text: Em.computed('user', function () {\n        return this.get('user.firstname') + ' ' + this.get('user.lastname');\n    }),\n    shortText: Em.computed('text', function () {\n        return this.get('Collector').shortFormat(this.get('text'), 2);\n    }),\n    color: Em.computed('text', function () {\n        return this.get('Collector').randomizeColor(this.get('text'));\n    }),\n});\n\nexport default UserIcon2Component;\n","export default Ember.HTMLBars.template({\"id\":\"aDdKhy6X\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"route\\\",\\\"model\\\"],[\\\"users.edit\\\",[24,[\\\"user\\\"]]]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"image\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"user-icon img-circle\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url(\\\\\\\"\\\",[22,\\\"image_url\\\"],\\\"\\\\\\\")\\\"]]],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"user-icon img-circle\\\"],[11,\\\"style\\\",[29,[\\\"background-color: \\\",[22,\\\"color\\\"]]]],[8],[1,[22,\\\"shortText\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"delay\\\",\\\"text\\\"],[800,[24,[\\\"text\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/user-icon2/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/user-selector/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Component;\n\nimport Ember from 'ember';\n\nimport { inject as service } from '@ember/service';\n\nComponent = Ember.Component.extend({\n    analytics: Ember.inject.service(),\n    Collector: service('collector-service'),\n    store: service(),\n    offset: 0,\n    count: null,\n    usersFromBackend: null,\n    loading: true, // should be in load-mode until we have fetched all users\n    offsetPlusOne: Ember.computed('offset', function () {\n        return this.get('offset') + 1;\n    }),\n    fetchUsers: async function () {\n        const params = {\n            form: 'worktime',\n            field: 'user',\n            order: 'lastname,firstname',\n            employer: this.get('employerid'),\n            limit: 'all',\n        };\n        if (!this.get('Collector').testNeedsOne('employer')) {\n            delete params.employer;\n        }\n        this.set('loading', true);\n        let ret = await this.get('store').query('user', params);\n        this.set('usersFromBackend', ret.toArray());\n        if (this.get('userid')) {\n            const offset = this.tryToGetOffsetFor(this.get('userid'));\n            this.set('offset', offset);\n            this.updateUser();\n        } else {\n            this.set('user', ret.objectAt(this.offset));\n        }\n        this.set('count', Ember.get(ret, 'meta.count'));\n        this.set('loading', false);\n    },\n    didReceiveAttrs: function () {\n        // employer has been changed from outside of this component so we need to fetch new users and reset offset\n        if (\n            this.get('employerid') !== null &&\n            this.get('employerid') !== this.get('employer') &&\n            this.get('Collector').testNeedsOne('employer')\n        ) {\n            this.set('employer', this.get('employerid'));\n            // run fetchUsers on the next runloop because we don't want race conditions\n            Ember.run.next(this, function () {\n                this.fetchUsers();\n            });\n        } else if (this.get('userid') !== null && this.get('userid') !== this.get('user.id')) {\n            // if user has been changed from outside of this component we need to update the offset and user\n            if (this.get('usersFromBackend') === null) {\n                Ember.run.next(this, function () {\n                    this.fetchUsers();\n                });\n            } else {\n                const offset = this.tryToGetOffsetFor(this.get('userid'));\n                this.set('offset', offset);\n                this.updateUser();\n            }\n        }\n    },\n    // get the correct offset for the user\n    tryToGetOffsetFor: function (userid) {\n        var users = this.get('usersFromBackend');\n        if (!users || !userid) {\n            return 0;\n        }\n        return users.indexOf(users.findBy('id', userid) || users.get('firstObject'));\n    },\n    updateUser: function (userid = null) {\n        const user = this.get('usersFromBackend').objectAt(this.get('offset'));\n        this.set('user', user);\n        this.userChanged(user.get('id'));\n    },\n    showSelector: Ember.computed('count', 'limit', 'maxLimit', function () {\n        const { count, limit } = this.getProperties('count', 'limit');\n        const MAX_USER_LIMIT_FOR_SHOWING_SELECTOR = 1000;\n        // Do not show selector if there are more users than maxLimit, to avoid performance issues and usability problems.\n        if (count >= MAX_USER_LIMIT_FOR_SHOWING_SELECTOR) {\n            return false;\n        }\n        // If there are fewer users than maxLimit, show selector based on 'limit' attribute.\n\n        // The 'limit' attribute is a UI limitation for showing the selector, not a query parameter.\n        // Show the selector only if limit is not set and the number of users is within this limit.\n        if (!limit || count <= limit) {\n            return true;\n        }\n        return false;\n    }),\n    thereIsNextOne: Ember.computed('offset', 'count', function () {\n        return this.get('offset') + 1 < this.get('count');\n    }),\n    thereIsPreviousOne: Ember.computed('offset', 'count', function () {\n        return this.get('offset') > 0;\n    }),\n    actions: {\n        previous: function () {\n            Ember.get(this, 'analytics').trackEvent({\n                category: 'User-selector',\n                action: 'Previous user',\n            });\n            this.set('offset', this.get('offset') - 1);\n            return this.updateUser();\n        },\n        next: function () {\n            Ember.get(this, 'analytics').trackEvent({\n                category: 'User-selector',\n                action: 'Next user',\n            });\n            this.set('offset', this.get('offset') + 1);\n            return this.updateUser();\n        },\n    },\n});\n\nexport default Component;\n","export default Ember.HTMLBars.template({\"id\":\"VvA2q3DZ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showSelector\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"btn-group \\\",[22,\\\"classes\\\"]]]],[10,\\\"role\\\",\\\"group\\\"],[10,\\\"aria-label\\\",\\\"...\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"disabled\\\",[29,[[28,\\\"unless\\\",[[24,[\\\"thereIsPreviousOne\\\"]],\\\"disabled\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"previous\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CircledLeft2\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-default user-button\\\"],[10,\\\"type\\\",\\\"button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[5,\\\"loader-icon\\\",[],[[\\\"@slim\\\",\\\"@class\\\"],[true,\\\"loader\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"user\\\",[[24,[\\\"user\\\",\\\"id\\\"]],\\\"icon\\\"],null],false],[0,\\\" \\\"],[7,\\\"h2\\\",true],[8],[1,[24,[\\\"user\\\",\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"user\\\",\\\"firstname\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"selected-page\\\"],[8],[1,[22,\\\"offsetPlusOne\\\"],false],[9],[0,\\\" / \\\"],[1,[22,\\\"count\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"disabled\\\",[29,[[28,\\\"unless\\\",[[24,[\\\"thereIsNextOne\\\"]],\\\"disabled\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"next\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CircledRight2\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/user-selector/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Component.extend({\n    router: service(),\n\n    actions: {\n        signin() {\n            get(this, 'router').transitionTo({ queryParams: { wizard: 'vismanet-wizard' } });\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"CVKrMovx\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"signin\\\"]],[8],[1,[28,\\\"t\\\",[\\\"export-salary.vismanet.settings.signin\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"sync\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"vismanet-sync\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"sync\\\"]]],null],true]],[8],[1,[28,\\\"t\\\",[\\\"export-salary.vismanet.settings.sync\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/vismanet-signin/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get, computed } from '@ember/object';\nimport config from 'tt4/config/environment';\nimport { inject as service } from '@ember/service';\nimport Ember from 'ember';\n\nexport default Component.extend({\n    cc: service(),\n    session: service(),\n    error: service(),\n\n    syncstate: null,\n\n    capi_url: computed(function () {\n        return config.environment === 'development'\n            ? 'http://capi/'\n            : config.APP.COLLECTOR_API_URL + '/';\n    }),\n\n    init() {\n        this._super();\n        if (!Ember.testing)\n            this.syncFromVismanet().then(this.syncok.bind(this), this.syncfailed.bind(this));\n    },\n\n    syncok() {\n        set(this, 'syncstate', 'success');\n        set(this, 'done', true);\n    },\n\n    syncfailed(reason) {\n        set(this, 'syncstate', 'danger');\n        set(this, 'errorMessage', get(this, 'error').toString(reason));\n    },\n\n    syncFromVismanet() {\n        return this.cc.request('general_vismanet', {\n            headers: {\n                Authorization: 'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n            },\n            data: {\n                capi_url: get(this, 'capi_url'),\n            },\n        });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"Tw5TevlD\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\\n    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export-salary.vismanet.settings.synced\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[22,\\\"errorMessage\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/vismanet-sync/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/weather-component/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldsWeatherComponent;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nCollectorFieldsWeatherComponent = Ember.Component.extend({\n    weather: Ember.inject.service(),\n    gps: Ember.inject.service(),\n    init: function () {\n        this._super(...arguments);\n        return Ember.set(this, 'ownWeather', {});\n    },\n    fetchingWeather: false,\n    store: Ember.inject.service(),\n    translations: {\n        temp: '°C',\n        wspeed: 'm/s',\n        percent: '%',\n    },\n    getWeather: Em.computed('project', 'date', function () {\n        if (this.get('isNew') && this.get('project')) {\n            return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n                promise: new Ember.RSVP.Promise((resolve) => {\n                    var date, proj;\n                    proj = this.get('project');\n                    date = this.get('date');\n                    if (proj.get('location_map')) {\n                        return this.get('weather')\n                            .fetchWeatherByProject(proj, date)\n                            .then((weather) => {\n                                Ember.run.next(this, () => {\n                                    return this.set('value', weather);\n                                });\n                                return resolve(true);\n                            });\n                    } else {\n                        return this.get('store')\n                            .findRecord('project', proj.id, {\n                                reload: true,\n                            })\n                            .then((project) => {\n                                var projectLocation;\n                                projectLocation = project.get('location_map');\n                                if (projectLocation) {\n                                    return this.get('weather')\n                                        .fetchWeatherByProject(project, date)\n                                        .then((weather) => {\n                                            Ember.run.next(this, () => {\n                                                return this.set('value', weather);\n                                            });\n                                            return resolve(this.get('gpsWeather'));\n                                        });\n                                } else {\n                                    return resolve(this.get('gpsWeather'));\n                                }\n                            });\n                    }\n                }),\n            });\n        } else {\n            return this.get('value');\n        }\n    }),\n    gpsWeather: Ember.computed(\n        'gps.lockedPosition',\n        'gps.lockedLatitude',\n        'gps.lockedLongitude',\n        'gps.lockedAccuracy',\n        'date',\n        function () {\n            var position;\n            if (!this.get('gps.lockedPosition')) {\n                Ember.run.next(this, () => {\n                    return this.set('value', null);\n                });\n                return null;\n            } else {\n                position = {\n                    latitude: this.get('gps.lockedLatitude'),\n                    longitude: this.get('gps.lockedLongitude'),\n                    accuracy: this.get('gps.lockedAccuracy'),\n                };\n                return this.get('weather')\n                    .fetchByGPS(position, this.get('date'))\n                    .then((weather) => {\n                        Ember.run.next(this, () => {\n                            return this.set('value', weather);\n                        });\n                        return true;\n                    });\n            }\n        },\n    ),\n    /*\n  i left these here if code above doesn't work for some reason and observers are needed..\n   * I hate myself :'(\n  dateObserver: Em.observer 'date', ->\n      if @get('project')\n          @set 'weatherNow', null\n          console.log \"date changed\"\n          @get('weather').fetchWeatherPosition(@get('project'),@get('date')).then (weather) =>\n              @set 'value', weather\n              @set 'weatherNow', weather\n\n  projectObserver: Em.observer 'project', ->\n      if @get('project')\n          @set 'weatherNow', null\n          console.log \"project changed\"\n          @get('weather').fetchWeatherPosition(@get('project')).then (weather) =>\n              @set 'value', weather\n              @set 'weatherNow', weather\n          #console.log @get 'project'\n   */\n    actions: {\n        updateWeather: function () {\n            var json;\n            // if weather-datatype changes, change this also\n            json = {};\n            json.temperature = this.get('ownWeather.temperature');\n            json.humidity = this.get('ownWeather.humidity');\n            json.windspeed = this.get('ownWeather.windspeed');\n            json.weather = this.get('ownWeather.weather');\n            if (this.get('ownWeather.temperature') && this.get('ownWeather.humidity')) {\n                json.dew_point = this.get('weather').calcDewPoint(json.temperature, json.humidity);\n                this.set('ownWeather.dew_point', json.dew_point);\n            }\n            return this.set('value', json);\n        },\n        toggleOverrideWeather: function () {\n            if (this.get('overrideWeather')) {\n                this.get('weather').fetchWeatherPosition();\n            } else if (this.get('weather.temperature')) {\n                this.set('ownWeather', this.get('weather'));\n            }\n            this.toggleProperty('overrideWeather');\n            return false;\n        },\n        changeWeatherType: function (type) {\n            this.set('ownWeather.weather', type);\n            return this.send('updateWeather');\n        },\n    },\n});\n\nexport default CollectorFieldsWeatherComponent;\n","export default Ember.HTMLBars.template({\"id\":\"dQ+tj/7R\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"weather-info\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"overrideWeather\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"getWeather\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move move-\\\",[24,[\\\"value\\\",\\\"weather\\\"]],\\\" weather-icon\\\"]]],[8],[9],[0,\\\"\\\\n                    \\\"],[1,[24,[\\\"value\\\",\\\"temperature\\\"]],false],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[0,\\\", \\\"],[1,[24,[\\\"value\\\",\\\"windspeed\\\"]],false],[1,[24,[\\\"translations\\\",\\\"wspeed\\\"]],false],[0,\\\", \\\"],[1,[24,[\\\"value\\\",\\\"humidity\\\"]],false],[1,[24,[\\\"translations\\\",\\\"percent\\\"]],false],[0,\\\", \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.abbr_dew_point\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"value\\\",\\\"dew_point\\\"]],false],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.fetching_weather\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"weather-brand\\\"],[8],[0,\\\"—\\\"],[1,[28,\\\"t\\\",[\\\"general.weather_provider\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[4,\\\"if\\\",[[24,[\\\"isNew\\\"]]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleOverrideWeather\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"general.edit\\\"],null]],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-inline\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-default dropdown-toggle\\\"],[10,\\\"data-toggle\\\",\\\"dropdown\\\"],[10,\\\"aria-haspopup\\\",\\\"true\\\"],[10,\\\"aria-expanded\\\",\\\"false\\\"],[10,\\\"type\\\",\\\"button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"ownWeather\\\",\\\"weather\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move move-\\\",[24,[\\\"ownWeather\\\",\\\"weather\\\"]],\\\" dropdown-weather-icon\\\"]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.weather_type\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"caret\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"dropdown-menu\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"Clouds\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Clouds dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.clouds\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"FogDay\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-FogDay dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.fog\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"LightRain\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-LightRain dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.light_rain\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"LightSnow\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-LightSnow dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.light_snow\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"PartlyCloudyDay\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PartlyCloudyDay dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.part_cloud\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"Rain\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Rain dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.rain\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"Snow\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Snow dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.snow\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"Sun\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Sun dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.sun\\\"],null],false],[9],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[\\\"text\\\",\\\"form-control short-weather-input\\\",[24,[\\\"ownWeather\\\",\\\"temperature\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateWeather\\\",[24,[\\\"ownWeather\\\"]]],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[\\\"text\\\",\\\"form-control short-weather-input\\\",[24,[\\\"ownWeather\\\",\\\"windspeed\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateWeather\\\",[24,[\\\"ownWeather\\\"]]],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[1,[24,[\\\"translations\\\",\\\"wspeed\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[\\\"text\\\",\\\"form-control short-weather-input\\\",[24,[\\\"ownWeather\\\",\\\"humidity\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateWeather\\\",[24,[\\\"ownWeather\\\"]]],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[1,[24,[\\\"translations\\\",\\\"percent\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.abbr_dew_point\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"ownWeather\\\",\\\"dew_point\\\"]],false],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleOverrideWeather\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-NoEdit\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/weather-component/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    collector: service('collector-service'),\n\n    actionList: null,\n    selectedActions: null,\n\n    jsonstr: '',\n\n    hook: computed(\n        'url',\n        'long',\n        'delay',\n        'randomdelay',\n        'delayTime',\n        'selectedActions.[]',\n        'sideloads',\n        'sideloadstr',\n        function () {\n            const settings = [];\n            if (get(this, 'delay'))\n                settings.push(\n                    (get(this, 'randomdelay') ? 'randomdelay:' : 'delay:') + get(this, 'delayTime'),\n                );\n            if (get(this, 'long')) settings.push('long');\n\n            const hook = {\n                url: get(this, 'url'),\n                actions: get(this, 'selectedActions'),\n                settings: settings,\n            };\n\n            if (get(this, 'sideloads'))\n                hook.sideloads = get(this, 'sideloadstr')\n                    ? get(this, 'sideloadstr').split(',')\n                    : [];\n\n            hook.v = 2;\n\n            return hook;\n        },\n    ),\n\n    json: computed('hook', function () {\n        return JSON.stringify(get(this, 'hook'));\n    }),\n\n    init() {\n        this._super();\n\n        set(this, 'texts', {\n            url: 'URL',\n            actions: 'Actions',\n            long: 'Long',\n            long_help: 'If webhook execution can take over 6s this should be on.',\n            delay: 'Delay',\n            delay_help: 'Wait some amount of time before executing webhook.',\n            delay_seconds: 'Give delay time in seconds:',\n            delay_randomize: 'Randomize:',\n            sideloads: 'Sideloads',\n        });\n\n        if (get(this, 'jsonstr')) this.load_hook(JSON.parse(get(this, 'jsonstr')));\n    },\n\n    didReceiveAttrs() {\n        const actionList = ['insert', 'delete', 'edit'];\n        const fields = get(this, 'collector').fieldArray(get(this, 'form'));\n        fields.forEach((item) => actionList.push('edit.' + item.name));\n\n        fields.forEach((item) => actionList.push('insert.' + item.name));\n\n        set(this, 'actionList', actionList);\n    },\n\n    actions: {\n        save() {\n            this.save(get(this, 'json'));\n        },\n\n        createOnEnter(select, e) {\n            if (e.keyCode === 13 && select.isOpen && !select.highlighted && select.searchText) {\n                if (!get(this, 'selectedActions').includes(select.searchText)) {\n                    get(this, 'actionList').pushObject(select.searchText);\n                    select.actions.choose(select.searchText);\n                }\n            }\n        },\n    },\n\n    load_hook(hook) {\n        set(this, 'selectedActions', hook.actions);\n        set(this, 'url', hook.url);\n\n        if (hook.settings.includes('long')) set(this, 'long', true);\n\n        if (hook.sideloads) {\n            set(this, 'sideloads', true);\n            set(this, 'sideloadstr', hook.sideloads.join(','));\n        }\n\n        const delay = hook.settings.find((item) => item.startsWith('delay:'));\n        const randomdelay = hook.settings.find((item) => item.startsWith('randomdelay:'));\n\n        if (randomdelay) {\n            set(this, 'delay', true);\n            set(this, 'randomdelay', true);\n            set(this, 'delayTime', randomdelay.substring(12));\n        } else if (delay) {\n            set(this, 'delay', true);\n            set(this, 'delayTime', delay.substring(6));\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"TW0vK+1x\",\"block\":\"{\\\"symbols\\\":[\\\"opt\\\",\\\"&default\\\"],\\\"statements\\\":[[14,2],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[24,[\\\"texts\\\",\\\"url\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control add-fields\\\",[28,\\\"mut\\\",[[24,[\\\"url\\\"]]],null]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[24,[\\\"texts\\\",\\\"actions\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@selected\\\",\\\"@options\\\",\\\"@onkeydown\\\",\\\"@onChange\\\"],[[23,0,[\\\"selectedActions\\\"]],[23,0,[\\\"actionList\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"createOnEnter\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"selectedActions\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[1,[23,1,[]],false],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"settings\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row setting\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9 setting-name\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[8],[1,[24,[\\\"texts\\\",\\\"long\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"hint\\\"],[8],[1,[24,[\\\"texts\\\",\\\"long_help\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3 pull-right\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"class\\\",\\\"onToggle\\\",\\\"theme\\\",\\\"size\\\"],[[24,[\\\"long\\\"]],\\\"pull-right\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"long\\\"]]],null]],null],\\\"material\\\",\\\"large\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row setting\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9 setting-name\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[8],[1,[24,[\\\"texts\\\",\\\"delay\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"hint\\\"],[8],[1,[24,[\\\"texts\\\",\\\"delay_help\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"class\\\",\\\"onToggle\\\",\\\"theme\\\",\\\"size\\\"],[[24,[\\\"delay\\\"]],\\\"pull-right\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"delay\\\"]]],null]],null],\\\"material\\\",\\\"large\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"delay\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row subsetting\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[24,[\\\"texts\\\",\\\"delay_seconds\\\"]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"pull-right\\\",[28,\\\"mut\\\",[[24,[\\\"delayTime\\\"]]],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row subsetting\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[24,[\\\"texts\\\",\\\"delay_randomize\\\"]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"class\\\",\\\"onToggle\\\",\\\"theme\\\"],[[24,[\\\"randomdelay\\\"]],\\\"pull-right\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"randomdelay\\\"]]],null]],null],\\\"material\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row setting\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9 setting-name\\\"],[8],[1,[24,[\\\"texts\\\",\\\"sideloads\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"class\\\",\\\"onToggle\\\",\\\"theme\\\",\\\"size\\\"],[[24,[\\\"sideloads\\\"]],\\\"pull-right\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"sideloads\\\"]]],null]],null],\\\"material\\\",\\\"large\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"sideloads\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row subsetting\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"value\\\"],[[28,\\\"mut\\\",[[24,[\\\"sideloadstr\\\"]]],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"preview\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"json\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"delete\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"delete\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.remove\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/webhook-editor/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    collector: service('collector-service'),\n    store: service(),\n\n    hooks: computed(function () {\n        return get(this, 'store')\n            .peekAll('form-setting')\n            .filter((item) => {\n                const correct_form = get(item, 'form.external_type') === get(this, 'form');\n                const is_webhook = get(item, 'name') === 'webhook';\n                return correct_form && is_webhook;\n            });\n    }),\n\n    formRecord: computed('form', function () {\n        return get(this, 'store')\n            .peekAll('form')\n            .find((item) => get(item, 'external_type') === get(this, 'form'));\n    }),\n\n    init() {\n        this._super();\n        set(this, 'texts', {\n            webhooks: 'Webhooks',\n            add: 'Add',\n        });\n    },\n\n    actions: {\n        async add(hook) {\n            await get(this, 'store')\n                .createRecord('form-setting', {\n                    form: get(this, 'formRecord'),\n                    name: 'webhook',\n                    value: hook,\n                })\n                .save();\n            this.notifyPropertyChange('hooks');\n            set(this, 'showAdd', false);\n        },\n\n        edit(hook) {\n            set(this, 'edit', hook);\n        },\n\n        async save(hook, json) {\n            set(hook, 'value', json);\n            await hook.save();\n            this.notifyPropertyChange('hooks');\n            set(this, 'edit', false);\n        },\n\n        async delete(hook) {\n            await hook.destroyRecord();\n            this.notifyPropertyChange('hooks');\n            set(this, 'edit', false);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"oDSVYkFR\",\"block\":\"{\\\"symbols\\\":[\\\"hook\\\",\\\"&default\\\"],\\\"statements\\\":[[14,2],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[24,[\\\"texts\\\",\\\"webhooks\\\"]],false],[0,\\\" \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAdd\\\"]]],null],true]],[8],[1,[24,[\\\"texts\\\",\\\"add\\\"]],false],[9],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"hooks\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",\\\"list-group-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"edit\\\",[23,1,[]]]],[8],[1,[28,\\\"component\\\",[\\\"webhook-list/webhook\\\"],[[\\\"hook\\\"],[[23,1,[\\\"value\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAdd\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"close\\\",\\\"header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAdd\\\"]]],null],false],null],\\\"Add webhook\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"webhook-editor\\\",null,[[\\\"form\\\",\\\"save\\\"],[[24,[\\\"form\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"add\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"close\\\",\\\"header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"edit\\\"]]],null],null],null],\\\"Edit webhook\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"webhook-editor\\\",null,[[\\\"form\\\",\\\"jsonstr\\\",\\\"save\\\",\\\"delete\\\"],[[24,[\\\"form\\\"]],[24,[\\\"edit\\\",\\\"value\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"edit\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"delete\\\",[24,[\\\"edit\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/webhook-list/template.hbs\"}});","import Component from '@ember/component';\nimport { get, computed } from '@ember/object';\n\nexport default Component.extend({\n    parsed: computed('hook', function () {\n        return JSON.parse(get(this, 'hook'));\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"m0edhF7Z\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"url\\\"],[8],[1,[24,[\\\"parsed\\\",\\\"url\\\"]],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"value\\\"],[8],[1,[22,\\\"hook\\\"],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/webhook-list/webhook/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    ttapi2: service(),\n\n    logrows: computed('rowid', function () {\n        return get(this, 'ttapi2').request('webhooklog?rowid=' + get(this, 'rowid'));\n    }),\n});\n","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    shortUrl: computed('row.hook.url', function () {\n        return get(this, 'row.hook.url').replace('cc.movenium.com/backend/trigger', '@cc');\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"bi8A74XF\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label label-default\\\"],[11,\\\"title\\\",[28,\\\"moment-format\\\",[[24,[\\\"row\\\",\\\"timestamp\\\"]],\\\"LLL\\\"],null]],[8],[0,\\\" \\\"],[1,[28,\\\"moment-from-now\\\",[[24,[\\\"row\\\",\\\"timestamp\\\"]]],null],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n    \\\"],[1,[22,\\\"shortUrl\\\"],false],[0,\\\"\\\\n   \\\\n    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"glyphicon glyphicon-chevron-down pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"show\\\"]]],null],[28,\\\"not\\\",[[24,[\\\"show\\\"]]],null]]],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"label \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"row\\\",\\\"response\\\",\\\"statusCode\\\"]],200],null],\\\"label-success\\\",\\\"label-danger\\\"],null],\\\" pull-right\\\"]]],[8],[1,[24,[\\\"row\\\",\\\"response\\\",\\\"statusCode\\\"]],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row info\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"pre\\\",true],[8],[1,[28,\\\"show-json\\\",[[24,[\\\"row\\\"]],4],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/webhook-log/row/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"YQJzEIVA\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"&default\\\"],\\\"statements\\\":[[14,2],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[24,[\\\"logrows\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.webhook\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"logrows\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"webhook-log/row\\\",null,[[\\\"row\\\"],[[23,1,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/webhook-log/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/components/week-report2/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WeekReport2Component;\n\nimport Ember from 'ember';\n\nWeekReport2Component = Ember.Component.extend({\n    intl: Em.inject.service(),\n    gui: Em.inject.service(),\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    sum: Em.computed('model', function () {\n        var arr, totalAbsenceDays, totalAbsenceHours, totalWorkHours;\n        totalWorkHours = 0;\n        totalAbsenceDays = 0;\n        totalAbsenceHours = 0;\n        this.get('model').forEach((row) => {\n            if (Ember.typeOf(row) === 'object') {\n                if (row['dayamount']) {\n                    return totalAbsenceDays++;\n                } else {\n                    return (totalAbsenceHours += row['hours']);\n                }\n            } else {\n                return (totalWorkHours += row.get('work_hours'));\n            }\n        });\n        arr = [];\n        arr['totalWorkHours'] = totalWorkHours;\n        arr['totalAbsenceDays'] = totalAbsenceDays;\n        arr['totalAbsenceHours'] = totalAbsenceHours;\n        return arr;\n    }),\n    saldosInUse: Ember.computed(function () {\n        return this.get('Collector').testNeeds(['products.saldo']);\n    }),\n    currentSaldo: Ember.computed('model', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                return this.get('Collector')\n                    .ttapi({\n                        url: 'saldo/get_saldo?userid=' + this.session.currentUser.id,\n                    })\n                    .then((back) => {\n                        return resolve({\n                            value: back['saldo'] / 60,\n                        });\n                    });\n            }),\n        });\n    }),\n    actions: {\n        click: function (row) {\n            // worktime is instance\n            if (Ember.typeOf(row) === 'instance') {\n                if (\n                    this.get('Collector').canAddWorktime(row.get('date')) &&\n                    this.get('rowClicked')\n                ) {\n                    return this.rowClicked(row);\n                } else {\n                }\n            } else {\n                if (this.get('rowClicked')) {\n                    return this.rowClicked(row);\n                }\n            }\n        },\n    },\n});\n\nexport default WeekReport2Component;\n","export default Ember.HTMLBars.template({\"id\":\"g+mWHkFE\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 totals\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"weekreport.total_work_hours\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"worktime\\\",\\\"work_hours\\\",[24,[\\\"sum\\\",\\\"totalWorkHours\\\"]]]]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 totals\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saldosInUse\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"saldo.usersaldo\\\"],null],false],[0,\\\":\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentSaldo\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"currentSaldo\\\",\\\"value\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 totals right\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"weekreport.total_absence_days\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",\\\"dayamount\\\",[24,[\\\"sum\\\",\\\"totalAbsenceDays\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense.absence_hours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"weekreport.total_absence_hours\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",\\\"absence_hours\\\",[24,[\\\"sum\\\",\\\"totalAbsenceHours\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"report.no_rows\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 week-report-row\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"click\\\",[23,1,[]]],null]],[8],[0,\\\"\\\\n\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"project-image\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"abcensetype\\\",\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"project-icon img-circle absence-circle\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cup\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"project-icon\\\",null,[[\\\"project\\\"],[[23,1,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worktime-info\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"worktime-info-row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[[28,\\\"if\\\",[[23,1,[\\\"project\\\"]],\\\"date\\\",\\\"startdate\\\"],null],[28,\\\"if\\\",[[23,1,[\\\"project\\\"]],\\\"worktime\\\",\\\"abcense\\\"],null],[23,1,[\\\"date\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[\\\"date\\\",\\\"worktime\\\",[23,1,[\\\"date\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"worktime-info-row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"work_hours\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[\\\"work_hours\\\",\\\"worktime\\\",[23,1,[\\\"work_hours\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"starttime\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[\\\"starttime\\\",\\\"worktime\\\",[23,1,[\\\"starttime\\\"]]]]],false],[0,\\\" - \\\"],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[\\\"endtime\\\",\\\"worktime\\\",[23,1,[\\\"endtime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[\\\"starttime\\\",\\\"abcense\\\",[23,1,[\\\"starttime\\\"]]]]],false],[0,\\\" - \\\"],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[\\\"endtime\\\",\\\"abcense\\\",[23,1,[\\\"endtime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"task\\\",\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                ,\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"task-container\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checklist\\\"],[8],[9],[0,\\\"  \\\"],[1,[23,1,[\\\"task\\\",\\\"name\\\"]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"worktime-info-row\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move move-\\\",[28,\\\"if\\\",[[23,1,[\\\"project\\\"]],\\\"MySites\\\",\\\"Cup\\\"],null]]]],[8],[9],[0,\\\" \\\"],[1,[28,\\\"if\\\",[[23,1,[\\\"project\\\"]],[23,1,[\\\"project\\\",\\\"name\\\"]],[23,1,[\\\"abcensetype\\\",\\\"name\\\"]]],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"row-separator\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/week-report2/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { A } from '@ember/array';\nimport { next } from '@ember/runloop';\nimport config from 'tt4/config/environment';\nexport default class WizardBuilderBillingComponent extends Component {\n    @service session;\n    @service admintool;\n    @service intl;\n\n    @tracked header;\n    @tracked savedErrors;\n    @tracked validFields;\n    @tracked billingtype;\n    @tracked currentPage;\n    @tracked result;\n    @tracked isSaving;\n    @tracked isCanceling;\n\n    texts = { subscribe: 'subscribe' };\n\n    operators = [\n        { id: 'apix', name: 'Apix Messaging Oy (003723327487)' },\n        { id: 'basware', name: 'BasWare Einvoices Oy (BAWCFI22)' },\n        { id: 'basware_oyj', name: 'BasWare Oyj (003705925424)' },\n        { id: 'cgi', name: 'CGI - Logica (003703575029)' },\n        { id: 'danske_bank', name: 'Danske Bank Oyj (DABAFIHH)' },\n        { id: 'enfo', name: 'Enfo Oy (003718062728)' },\n        { id: 'enfo_oyj', name: 'Enfo Oyj (003714377140)' },\n        { id: 'inex', name: 'InExchange Factorum AB (INEXCHANGE)' },\n        { id: 'liaison', name: 'LIAISON Technologies Oy (003708599126)' },\n        { id: 'maventa', name: 'Maventa Services (003721291126)' },\n        { id: 'nordea', name: 'Nordea (NDEAFIHH)' },\n        { id: 'notebeat', name: 'Notebeat Oy (003717203971)' },\n        { id: 'op', name: 'OP-Pohjola-ryhmä (OKOYFIHH)' },\n        { id: 'opus', name: 'OpusCapita Group Oy - Itella (003710948874)' },\n        { id: 'pagero', name: 'Pagero (003723609900)' },\n        { id: 'pop', name: 'POP Pankit (POPFFI22)' },\n        { id: 's_pankki', name: 'S-Pankki Oy (SBANFIHH)' },\n        { id: 'sampo', name: 'Sampo Pankki Oyj (PSPBFIHH)' },\n        { id: 'handelsbank', name: 'Svenska HAndelsbanken AB (HANDFIHH)' },\n        { id: 'saasto', name: 'Säästöpankit (ITELFIHH)' },\n        { id: 'tapiola', name: 'Tapiola Pankki (TAPIFI22)' },\n        { id: 'teliasonera', name: 'TeliaSonera Finland Oyj (003714756079)' },\n        { id: 'tieto', name: 'Tieto Oyj (003701011385)' },\n        { id: 'aland', name: 'Ålandsbanken Abp (AABAFI22)' },\n        { id: 'opus_solutions', name: 'OpusCapita Solutions Oy (E204503)' },\n    ];\n\n    get currentPageComponent() {\n        return 'wizard-builder/billing/page' + this.currentPage;\n    }\n\n    constructor() {\n        super(...arguments);\n        this.currentPage = 1;\n        this.billingtype = 'card';\n        this.productName = this.intl.t('products.mini_entry');\n        this.savedErrors = A();\n        this.validFields = A();\n        this.isSaving = false;\n        this.header = 'billing_info.set_billing_info';\n    }\n\n    get productSums() {\n        return get(this, 'admintool').ajax({\n            url: 'get_prices_for_mini_entry',\n            headers: {\n                Authorization: 'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n            },\n            type: 'GET',\n            data: {\n                country: get(this, 'session.currentUser.company_info.country'),\n            },\n        });\n    }\n\n    @action\n    validateName(name_on_card) {\n        if (!name_on_card) {\n            if (this.validFields.indexOf('name') > -1) this.validFields.removeObject('name');\n            this.savedErrors.pushObject({\n                id: 'name',\n                text: this.intl.t('validation.error.mandatory'),\n            });\n        } else if (name_on_card) {\n            if (this.validFields.indexOf('name') == -1) this.validFields.pushObject('name');\n            var foundError = this.savedErrors.findBy('id', 'name');\n            if (foundError) this.savedErrors.removeObject(foundError);\n        }\n    }\n\n    get isValid() {\n        if (this.billingtype == 'card') {\n            return this.validFields.length == 4;\n        }\n        return true;\n    }\n\n    @action\n    validateErrors(event) {\n        if (event.error) {\n            if (this.validFields.indexOf(event.elementType) > -1) {\n                this.validFields.removeObject(event.elementType);\n            }\n            this.savedErrors.pushObject({ id: event.elementType, text: event.error.message });\n        } else if (event.complete) {\n            if (this.validFields.indexOf(event.elementType) == -1) {\n                this.validFields.pushObject(event.elementType);\n            }\n            var foundError = this.savedErrors.findBy('id', event.elementType);\n            if (foundError) this.savedErrors.removeObject(foundError);\n        }\n    }\n\n    @action\n    async save(billingData) {\n        await get(this, 'admintool').ajax({\n            url: 'billinginfo',\n            headers: {\n                Authorization: 'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n            },\n            data: billingData,\n            type: 'PUT',\n        });\n        this.isSaving = false;\n    }\n\n    @action\n    transitionToNextPage() {\n        this.header = 'billing_info.billing_ok';\n        this.result = 'billing_ok';\n        this.currentPage = 2;\n    }\n\n    @action\n    closeAndShowNotice() {\n        if (this.currentPage != 1) {\n            this.close();\n            return;\n        }\n        this.currentPage = 2;\n        this.result = 'billing_not_ok';\n        this.header = 'billing_info.not_ok_header';\n    }\n    @action\n    close() {\n        this.args.close();\n        // need to do reloading 1ms after closing modal because then \"wizard=billing\" has been removed from url (otherwise reloading would just open billing-modal again)\n        next(this, () => window.location.reload());\n    }\n\n    @action\n    changeBillingType(type) {\n        this.billingtype = type;\n    }\n    @action\n    async closeAndSaveCustomer() {\n        this.isCanceling = true;\n        const data = {\n            email: get(this, 'session.currentUser.email'),\n            company_name: get(this, 'session.currentUser.company_info.company_name'),\n        };\n        await fetch(config.APP.BILLING_URL + '/subscribe', {\n            headers: {\n                Authorization: 'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n            },\n            method: 'POST',\n            body: JSON.stringify(data),\n        });\n        this.isCanceling = false;\n        this.closeAndShowNotice();\n    }\n}\n","import Component from '@glimmer/component';\nimport { action, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport fetch from 'fetch';\nimport $ from 'jquery';\nimport config from 'tt4/config/environment';\nimport podNames from 'ember-component-css/pod-names';\nimport { tracked } from '@glimmer/tracking';\nimport { captureException } from '@sentry/browser';\nimport { scheduleOnce } from '@ember/runloop';\n\nexport default class WizardBuilderBillingPage1Component extends Component {\n    @service session;\n    @service admintool;\n    @service intl;\n\n    @tracked type;\n    @tracked header;\n    @tracked savedErrors;\n    @tracked disabled;\n    @tracked validFields;\n    @tracked billingtype;\n    @tracked isSaving;\n    @tracked card_error;\n\n    texts = { subscribe: 'subscribe' };\n\n    constructor() {\n        super(...arguments);\n        this.load();\n    }\n\n    get styleNamespace() {\n        return podNames['wizard-builder/billing'];\n    }\n\n    get isValid() {\n        if (this.billingtype == 'card') {\n            return this.validFields.length == 4;\n        }\n        return true;\n    }\n\n    async load() {\n        // we have to load and save all stripe-stuff here, not in the parent-component\n        // because we cannot send card-data from this component to any other component\n        // this is a bit against DDAU, but what you gonna do?\n        this.loaded = false;\n        if (typeof Stripe === 'undefined') {\n            await $.getScript('https://js.stripe.com/v3/'); // eslint-disable-line\n        }\n\n        this.stripe = Stripe(config.APP.STRIPE_KEY);\n        let elements = this.stripe.elements();\n\n        var elementStyles = {\n            base: {\n                color: '#212121',\n                fontSize: '16px',\n                fontSmoothing: 'antialiased',\n                '::placeholder': {\n                    color: '#737373',\n                },\n                ':-webkit-autofill': {\n                    color: '#737373',\n                },\n            },\n            invalid: {\n                color: '#FF0000',\n\n                '::placeholder': {\n                    color: '#FFCCA5',\n                },\n            },\n        };\n\n        this.cardElement = elements.create('cardNumber', { style: elementStyles });\n        this.cardExpiryElement = elements.create('cardExpiry', { style: elementStyles });\n        this.cardCVCElement = elements.create('cardCvc', { style: elementStyles });\n\n        // we mount card elements only after rendering is done\n        scheduleOnce('afterRender', this, 'mountCardElements');\n    }\n\n    mountCardElements() {\n        this.cardElement.mount('#card-number');\n        this.cardExpiryElement.mount('#card-expiry');\n        this.cardCVCElement.mount('#card-cvc');\n\n        let self = this;\n\n        [this.cardElement, this.cardExpiryElement, this.cardCVCElement].forEach(function (element) {\n            element.on('change', function (event) {\n                self.args.validateErrors(event);\n            });\n        });\n    }\n\n    @action\n    async save() {\n        let billingData = {};\n        billingData['billingtype'] = this.args.billingtype;\n        if (this.args.billingtype == 'einvoice') {\n            billingData['e_invoice_operator'] = this.e_invoice_operator;\n            billingData['e_invoice_address'] = this.e_invoice_address;\n            billingData['invoice_ref'] = this.invoice_ref;\n            await this.args.save(billingData);\n        } else if (this.args.billingtype == 'card') {\n            await this.args.save(billingData);\n            await this.saveToStripeSecure(); // we have to do this here because we cannot send card values to parent-component because of stripe\n        }\n        if (!this.card_error) this.args.transitionToNextPage();\n    }\n\n    /**\n     * Handles creating new and updating old subscriptions\n     */\n    async createOrUpdateSubscription(paymentMethodId = false) {\n        const data = {\n            email: get(this, 'session.currentUser.email'),\n            company_name: get(this, 'session.currentUser.company_info.company_name'),\n            name_on_card: this.name_on_card,\n            paymentMethodId: paymentMethodId ? paymentMethodId : null,\n        };\n        const response = await fetch(config.APP.BILLING_URL + '/subscribe', {\n            headers: {\n                Authorization: 'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n            },\n            method: 'POST',\n            body: JSON.stringify(data),\n        });\n        const subscription = await response.json();\n        //console.log(subscription);\n        return subscription;\n    }\n\n    async updatePaymentMethod(clientSecret) {\n        const result = await this.stripe.confirmCardSetup(clientSecret, {\n            payment_method: {\n                card: this.cardElement,\n                billing_details: {\n                    name: this.name_on_card,\n                },\n            },\n        });\n        try {\n            let subscription = await this.createOrUpdateSubscription(\n                result.setupIntent.payment_method,\n            );\n\n            // we have to confirm card payment also if invoice is in \"requires_confirmation\" state\n            if (\n                typeof subscription.attributes.subscription.latest_invoice != 'string' &&\n                subscription.attributes.subscription.latest_invoice.payment_intent.status ==\n                    'requires_confirmation'\n            ) {\n                await this.stripe.confirmCardPayment(\n                    subscription.attributes.subscription.latest_invoice.payment_intent\n                        .client_secret,\n                    {\n                        payment_method:\n                            subscription.attributes.subscription.latest_invoice.payment_intent\n                                .payment_method,\n                    },\n                );\n            }\n            this.card_error = false;\n        } catch (error) {\n            captureException(error); // try to catch possible errors in sentry\n            if (error.error)\n                this.card_error = this.intl.exists('billing_info.' + error.error)\n                    ? this.intl.t('billing_info.' + error.error)\n                    : this.intl.t('billing_info.card_error');\n            else this.card_error = this.intl.t('billing_info.card_error');\n        }\n        return result;\n    }\n\n    async saveToStripeSecure() {\n        this.isSaving = true;\n        try {\n            let subscription = await this.createOrUpdateSubscription();\n            let result;\n\n            if (subscription.clientSecret && subscription.clientSecret.indexOf('seti_') > -1) {\n                result = await this.updatePaymentMethod(subscription.clientSecret);\n                if (result.error) {\n                    this.card_error = this.intl.t('billing_info.card_error');\n                } else {\n                    this.card_error = false;\n                }\n            }\n        } catch (error) {\n            captureException(error); // try to catch possible errors in sentry\n            if (error.error)\n                this.card_error = this.intl.exists('billing_info.' + error.error)\n                    ? this.intl.t('billing_info.' + error.error)\n                    : this.intl.t('billing_info.card_error');\n            else this.card_error = this.intl.t('billing_info.card_error');\n        }\n        this.isSaving = false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"GPX3OaQg\",\"block\":\"{\\\"symbols\\\":[\\\"error\\\",\\\"error\\\",\\\"error\\\",\\\"error\\\",\\\"@productName\\\",\\\"@productSums\\\",\\\"@savedErrors\\\",\\\"@validateName\\\",\\\"@isValid\\\",\\\"@isCanceling\\\",\\\"@closeAndSaveCustomer\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-box-billing\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.input_card_info\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"rounded-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"form\\\",true],[10,\\\"id\\\",\\\"card-form\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"card-number\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.card_number\\\"],null],false],[0,\\\"*\\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"id\\\",\\\"card-number\\\"],[10,\\\"class\\\",\\\"form-control\\\"],[8],[0,\\\"\\\\n                        \\\"],[2,\\\" A Stripe Element will be inserted here. \\\"],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"find-by\\\",[\\\"id\\\",\\\"cardNumber\\\",[23,7,[]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,4,[]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[10,\\\"id\\\",\\\"card-number-error\\\"],[8],[1,[23,4,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-40\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"card-expiry\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.card_expiry\\\"],null],false],[0,\\\"*\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"id\\\",\\\"card-expiry\\\"],[10,\\\"class\\\",\\\"form-control\\\"],[8],[0,\\\"\\\\n                                \\\"],[2,\\\" A Stripe Element will be inserted here. \\\"],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"find-by\\\",[\\\"id\\\",\\\"cardExpiry\\\",[23,7,[]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[10,\\\"id\\\",\\\"card-number-error\\\"],[8],[1,[23,3,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-10\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-40\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"card-cvc\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.card_cvc\\\"],null],false],[0,\\\"*\\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"id\\\",\\\"card-cvc\\\"],[10,\\\"class\\\",\\\"form-control\\\"],[8],[0,\\\"\\\\n                                \\\"],[2,\\\" A Stripe Element will be inserted here. \\\"],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"find-by\\\",[\\\"id\\\",\\\"cardCvc\\\",[23,7,[]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[10,\\\"id\\\",\\\"card-number-error\\\"],[8],[1,[23,2,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"name-on-card\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.name_on_card\\\"],null],false],[0,\\\"*\\\"],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"placeholder\\\",\\\"class\\\",\\\"key-up\\\",\\\"value\\\"],[\\\"text\\\",[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"user.lastname\\\"],null],\\\" \\\",[28,\\\"t\\\",[\\\"user.firstname\\\"],null]],null],\\\"form-control\\\",[28,\\\"action\\\",[[23,0,[]],[23,8,[]]],null],[23,0,[\\\"name_on_card\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"find-by\\\",[\\\"id\\\",\\\"name\\\",[23,7,[]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[10,\\\"id\\\",\\\"card-number-error\\\"],[8],[1,[23,1,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"card_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[10,\\\"id\\\",\\\"card-errors\\\"],[8],[1,[22,\\\"card_error\\\"],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-box-billing\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.subscription_info\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"rounded-box\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[23,6,[]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[23,6,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"table\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[23,5,[]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"number big-number\\\"],[8],[1,[28,\\\"currency_by_country\\\",[[23,6,[\\\"mini_entry\\\"]],[24,[\\\"session\\\",\\\"currentUser\\\",\\\"company_info\\\",\\\"country\\\"]]],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.per_month\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"number medium-number\\\"],[8],[0,\\\"+\\\"],[1,[28,\\\"currency_by_country\\\",[[23,6,[\\\"per_user\\\"]],[24,[\\\"session\\\",\\\"currentUser\\\",\\\"company_info\\\",\\\"country\\\"]]],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.user_per_month\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"additional-info\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"billing_info.additional_info\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.price_error\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\",\\\"@disabled\\\",\\\"@saveButtonText\\\"],[[23,0,[\\\"isSaving\\\"]],[23,0,[\\\"save\\\"]],\\\"btn btn-m-link btn-block btn-lg\\\",[28,\\\"not\\\",[[23,9,[]]],null],[28,\\\"t\\\",[\\\"general.save\\\"],null]]]],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\",\\\"@saveButtonText\\\"],[[23,10,[]],[23,11,[]],\\\"btn btn-m-cancel btn-block btn-lg\\\",[28,\\\"t\\\",[\\\"billing_info.skip_billing\\\"],null]]]],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/billing/page1/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class WizardBuilderBillingPage2Component extends Component {\n    get styleNamespace() {\n        return podNames['wizard-builder/billing'];\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"0X/lT/uq\",\"block\":\"{\\\"symbols\\\":[\\\"@close\\\",\\\"@result\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[]],\\\"billing_ok\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notice\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.saved_ok\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,1,[]]]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[]],\\\"billing_not_ok\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notice\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.not_ok\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,1,[]]]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/billing/page2/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"fOJ4iKyS\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"wizard-builder/wizard\\\",[],[[\\\"@darkMode\\\",\\\"@pages\\\",\\\"@close\\\",\\\"@currentPage\\\",\\\"@header\\\"],[true,2,[28,\\\"fn\\\",[[24,[\\\"closeAndSaveCustomer\\\"]]],null],[22,\\\"currentPage\\\"],[28,\\\"t\\\",[[24,[\\\"header\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[[23,0,[\\\"currentPageComponent\\\"]]],[[\\\"validateName\\\",\\\"validateErrors\\\",\\\"cardElements\\\",\\\"validFields\\\",\\\"savedErrors\\\",\\\"billingtype\\\",\\\"result\\\",\\\"productName\\\",\\\"productSum\\\",\\\"additionalSum\\\",\\\"changeBillingType\\\",\\\"close\\\",\\\"save\\\",\\\"elements\\\",\\\"isValid\\\",\\\"operators\\\",\\\"productSums\\\",\\\"closeAndSaveCustomer\\\",\\\"transitionToNextPage\\\",\\\"isCanceling\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateName\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"validateErrors\\\"],null],[24,[\\\"cardElements\\\"]],[23,0,[\\\"validFields\\\"]],[23,0,[\\\"savedErrors\\\"]],[23,0,[\\\"billingtype\\\"]],[23,0,[\\\"result\\\"]],[23,0,[\\\"productName\\\"]],[23,0,[\\\"productSum\\\"]],[23,0,[\\\"additionalSum\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeBillingType\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[23,0,[\\\"elements\\\"]],[23,0,[\\\"isValid\\\"]],[23,0,[\\\"operators\\\"]],[28,\\\"await\\\",[[23,0,[\\\"productSums\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeAndSaveCustomer\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"transitionToNextPage\\\"],null],[23,0,[\\\"isCanceling\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/billing/template.hbs\"}});","import Component from '@ember/component';\nimport { get, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    router: service(),\n    collector: service('collector-service'),\n    componentName: computed('name', function () {\n        if (get(this, 'name').substring(0, 5) === 'help-') return 'wizard-builder/help-wizard';\n        return 'wizard-builder/' + get(this, 'name');\n    }),\n    actions: {\n        transitionToOnboarding() {\n            if (this.collector.testNeeds(['modules.timetracker', 'modules.absences'])) {\n                get(this, 'router').transitionTo({ queryParams: { wizard: 'onboarding-wizard' } });\n            } else {\n                this.close();\n            }\n        },\n        closeAndTransitionToRoute(route) {\n            get(this, 'router').transitionTo(route);\n        },\n    },\n});\n","import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    gui: service(),\n    store: service(),\n    intl: service(),\n    cdn: service(),\n\n    currentPage: 1,\n\n    currentPageImage: computed('currentPage', function () {\n        return this.cdn.url(\n            'images/dashboard/help/' + this.intl.primaryLocale + '/' + this.currentPage + '.png',\n        );\n    }),\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"7W4H/f7/\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"widget.dashboard-info.page\\\",[24,[\\\"page\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dashboard-wizard-one-image\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"responsive\\\"],[11,\\\"src\\\",[22,\\\"image\\\"]],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/dashboard-info-wizard/page/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"8cDcdCXt\",\"block\":\"{\\\"symbols\\\":[\\\"wizard\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/wizard\\\",null,[[\\\"pages\\\",\\\"header\\\",\\\"close\\\",\\\"currentPage\\\",\\\"pageChange\\\"],[6,[28,\\\"t\\\",[\\\"wizard.dashboard-info.header\\\"],null],[24,[\\\"close\\\"]],[24,[\\\"currentPage\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"currentPage\\\"]]],null]],null]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content-header\\\"]],\\\"expected `wizard.content-header` to be a contextual component but found a string. Did you mean `(component wizard.content-header)`? ('tt4/pods/components/wizard-builder/dashboard-info-wizard/template.hbs' @ L2:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"pl-5\\\"],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"wizard.dashboard-info.header.\\\",[24,[\\\"currentPage\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dashboard-content pl-5 pr-5\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"wrapped-content\\\"],[8],[1,[28,\\\"component\\\",[\\\"wizard-builder/dashboard-info-wizard/page\\\"],[[\\\"image\\\",\\\"page\\\"],[[24,[\\\"currentPageImage\\\"]],[24,[\\\"currentPage\\\"]]]]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[1,[23,1,[\\\"buttons\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/dashboard-info-wizard/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { set } from '@ember/object';\nimport fetch from 'fetch';\nimport { htmlSafe } from '@ember/string';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class ExportInfoWizardComponent extends Component {\n    @tracked currentPage = 1;\n    @tracked isLoading = true;\n    @tracked pageCount = 0;\n\n    texts = { notfound: 'no pages found for ' };\n\n    constructor() {\n        super(...arguments);\n        this.load();\n    }\n\n    get currentPageIndex() {\n        return this.currentPage - 1;\n    }\n\n    get styleNamespace() {\n        return podNames['wizard-builder/help-wizard'];\n    }\n\n    async load() {\n        const pages = [];\n\n        for (let i = 1; i <= 15; i++) {\n            const key = `${this.args.name}-${i}-${moment.locale()}`;\n            const fileUrl = `https://cloud-writer-prod.s3.amazonaws.com/${key}.html`;\n\n            const response = await fetch(fileUrl);\n            const html = await response.text();\n            if (response.status === 403) break;\n            pages.push(htmlSafe(html));\n        }\n\n        set(this, 'pages', pages);\n        set(this, 'pageCount', pages.length);\n        this.isLoading = false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"+hxqQtIR\",\"block\":\"{\\\"symbols\\\":[\\\"wizard\\\",\\\"@name\\\",\\\"@close\\\"],\\\"statements\\\":[[5,\\\"wizard-builder/wizard\\\",[],[[\\\"@pages\\\",\\\"@header\\\",\\\"@close\\\",\\\"@currentPage\\\",\\\"@pageChange\\\"],[[23,0,[\\\"pageCount\\\"]],[28,\\\"t\\\",[\\\"dashboard.show_info\\\"],null],[23,3,[]],[23,0,[\\\"currentPage\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"currentPage\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"pageCount\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,0,[\\\"texts\\\",\\\"notfound\\\"]],false],[0,\\\" \\\"],[1,[23,2,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"get\\\",[[23,0,[\\\"pages\\\"]],[23,0,[\\\"currentPageIndex\\\"]]],null],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[1,[23,1,[\\\"buttons\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/help-wizard/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\nimport config from 'tt4/config/environment';\n\n/*\n\n    How to construct an onboarding wizard page:\n    ember g component wizard-builder/onboarding-wizard/pages/<pageName> --pod\n\n    template.hbs:\n    {{#wizard-builder/onboarding-wizard/components/onboarding-wizard-page as |page|}}\n\n        {{#page.header as |header|}}\n            {{#header.icon}}\n                {{party-parrot}}\n            {{/header.icon}}\n            {{#header.title}} {{!-- big blue text --}}\n                {{t \"wizard.onboarding.<pageName>.header_title\"}}\n            {{/header.title}}\n            {{#header.text}} {{!-- smaller gray text --}}\n                {{t \"wizard.onboarding.<pageName>.header_text\"}}\n            {{/header.text}}\n        {{/page.header}}\n\n        {{#page.content-container as |container| }}\n            {{!-- Content can basically be anything you want, just write it here --}}\n\n            {{!-- Add as many setting cards as you need --}}\n            {{#container.setting-card as |card|}}\n\n                {{#card.title as |cardTitle|}}\n                    {{cardTitle.text text=(t \"wizard.onboarding.somethingTitle\")}}\n                    {{cardTitle.toggle toggled=somethingOnThisPageToggled}}\n                    {{cardTitle.info-button}}\n                {{/card.title}}\n\n                {{!-- disabled will gray out the content, this should be used only if you add toggle to title --}}\n                {{#card.content disabled=(not somethingOnThisPageToggled) as |content|}}\n\n                    {{!-- basic list of things --}}\n                    {{#content.setting-list}}\n\n                        <li> items here </li>\n                        <li>\n                        {{!-- custom input field}}\n                        {{content.input\n                            disabled=(not somethingOnThisPageToggled)\n                            value=valueForThisField\n                            type=\"text\"\n                        }}\n                        </li>\n                    {{/content.setting-list}}\n\n                    {{!-- nicely :) styled radio buttons --}}\n                    {{#content.radio-group}}\n                        {{#radio-button value=\"someValue\" groupValue=radioGroupvalue changed=(action \"groupValueChanged\")}}\n                            <div class=\"label pull-left\"></div><div class=\"inline pull-right\">{{t \"wizard.onboarding.somePage.setting.someSetting\"}}</div>\n                        {{/radio-button}}\n                        {{!-- add as many radio buttons as you need}}\n                    {{/content.radio-group}}\n\n                    {{!-- table for showing form rows}}\n                    {{#content.table form=form columns=columns rows=rows as |table|}}\n                        {{table.header}}\n                        {{table.rows}}\n                    {{/content.table}}\n\n                    {{!-- modal for adding new records --}}\n                    <button class=\"btn btn-primary add-saldo-absence-type-button\" {{action 'openModal'}}>{{t \"wizard.onboarding.somePage.addSomething\"}}</button>\n                    {{#page.mini-modal header=(t \"wizard.onboarding.somePage.add_new\") showModal=openModal save=(action (mut openModal))}}\n                        {{#collector/form-add only=\"name,otherfield\" form=\"form\" showSaved=false record=thisRecord close=(action (mut openModal)) as |form|}}\n                            {{#form.fields as |field|}}\n                                {{field.container}}\n                            {{/form.fields}}\n                            {{form.buttons}}\n                        {{/collector/form-add}}\n                    {{/page.mini-modal}}\n\n                {{/card.content}}\n\n            {{/container.setting-card}}\n\n        {{/page.content-container}}\n\n    {{/wizard-builder/onboarding-wizard/components/onboarding-wizard-page }}\n\n\n\n\n*/\n\nexport default Component.extend({\n    Collector: service('collector-service'),\n    store: service(),\n    capi: service(),\n    ttapi: service(),\n    dialogs: service(),\n    intl: service(),\n    initapp: service(),\n    analytics: service(),\n    welcomeTour: service(),\n    localStorageWrapper: service(),\n    currentPage: 1,\n\n    somethingHasBeenChanged: false,\n    loading: false,\n\n    currentPageComponent: computed('currentPage', function () {\n        let currentPage = get(this, 'currentPage');\n        return 'wizard-builder/onboarding-wizard/pages/' + get(this, 'pages')[currentPage - 1];\n    }),\n\n    TranslatedCurrentPageHeader: computed('currentPage', function () {\n        if (get(this, 'pageNames')) {\n            let pages = get(this, 'pageNames').map((name) => {\n                return 'wizard.page.' + name;\n            });\n            return pages[get(this, 'currentPage') - 1];\n        }\n        return null;\n    }),\n\n    hideNext: computed('currentPage', function () {\n        return get(this, 'currentPage') <= 1;\n    }),\n    showStartButton: computed('currentPage', function () {\n        return get(this, 'currentPage') <= 1;\n    }),\n\n    pageNames: computed('pages', function () {\n        let pages = get(this, 'pages');\n        return pages.map((page) => 'onboarding.' + page);\n    }),\n\n    init() {\n        this._super();\n        let pages = [\n            'welcome',\n            'timetracker-settings',\n            'salary-settings',\n            'overtime-settings',\n            'saldo-settings',\n            'project-settings',\n            'summary',\n        ];\n        if (this.Collector.testNeeds(['serviceCountry@se'])) {\n            // Remove overtime settings page from Swedish services\n            pages = pages.filter((item) => item !== 'overtime-settings');\n        }\n\n        this.pages = pages;\n        this.settings = {\n            calculateIfOvertimeEvening: false,\n            calculateIfOvertimeNight: false,\n            daily50: '8',\n            daily100: '10',\n            dailyOvertime: false,\n            editTime: 0,\n            eveningEnd: '21:00',\n            eveningStart: '16:00',\n            kilokm_typemeterProduct: false,\n            nightEnd: '06:00',\n            nightStart: '21:00',\n            overtimeCalculateAlways: false,\n            overtimeTimebased: false,\n            overtimehours: false,\n            pause: null,\n            perdiem: null,\n            saldoAutocutter: false,\n            saldoMaximum: '40',\n            saldoMinimum: '20',\n            saldoDailymaximum: '4',\n            saldoProduct: false,\n            splitOvertimehours: false,\n            timeAddingType: 'hybrid',\n            weeklyMaximum: '8',\n            weeklyOvertime: false,\n            saldoStart: moment().format('YYYY-MM-DD'),\n            product: config.brand == 'otta' ? 'Otta' : 'Visma Movenium',\n        };\n    },\n\n    actions: {\n        startWizard() {\n            this.incrementProperty('currentPage');\n        },\n        collectSettingsToObject(setting, value) {\n            set(this, 'somethingHasBeenChanged', true);\n            set(this, 'settings.' + setting, value);\n        },\n        async executeSettings() {\n            get(this, 'analytics').trackEvent({\n                category: 'Onboarding-wizard',\n                action: 'executeSettings',\n            });\n            set(this, 'loading', true);\n            await get(this, 'store').findAll('form', { reload: true });\n            await this.executeTimetrackingPage();\n            await this.exucuteSalarySettingsPage();\n            await this.exucuteOvertimeSettingsPage();\n            await this.executeSaldoSettingsPage();\n\n            await get(this, 'capi').request('forms'); // make /forms request to make all the settings on\n\n            get(this, 'initapp').clearInit();\n            // We wan't to launch the wootric survay after the reload so need to put this into localstorage\n            localStorage.setItem('survey', 'wizard');\n            this.startTourIfNeeded(true);\n            await this.close();\n            location.reload();\n        },\n        async closingWizard() {\n            let currentPageName = get(this, 'currentPageComponent').split('/')[3];\n            get(this, 'analytics').trackEvent({\n                category: 'Wizard-closing-page',\n                action: currentPageName,\n            });\n\n            if (get(this, 'somethingHasBeenChanged')) {\n                const executeChanges = await get(this, 'dialogs').confirm(\n                    get(this, 'intl').t('wizard.onboarding.close'),\n                );\n                if (executeChanges) this.send('executeSettings');\n            } else {\n                this.close();\n                this.startTourIfNeeded();\n            }\n        },\n    },\n\n    async executeTimetrackingPage() {\n        //time adding types\n        const addingTypes = {\n            startandend: [\n                '!products.timetracker_hybrid',\n                '!products.timetracker_hours',\n                '!products.timetracker_clockcard',\n            ],\n            hours: [\n                '!products.timetracker_hybrid',\n                'products.timetracker_hours',\n                '!products.timetracker_clockcard',\n            ],\n            hybrid: [\n                'products.timetracker_hybrid',\n                '!products.timetracker_hours',\n                '!products.timetracker_clockcard',\n            ],\n            clockcard: [\n                '!products.timetracker_hybrid',\n                '!products.timetracker_hours',\n                'products.timetracker_clockcard',\n            ],\n        };\n        await get(this, 'Collector').setProducts(addingTypes[get(this, 'settings.timeAddingType')]);\n\n        //date interval setting\n        await this.setFormFieldSetting(\n            'worktime',\n            'date',\n            'date_interval',\n            get(this, 'settings.editTime'),\n        );\n\n        //pause setting\n        if (get(this, 'settings.pause')) {\n            await Promise.all(get(this, 'Collector').setProducts(['products.pause']));\n            await get(this, 'capi').request('forms'); // make /forms request to make module_handler to update forms\n            await get(this, 'store').findAll('form', { reload: true });\n            await this.setFormFieldSetting(\n                'worktime',\n                'pause',\n                'default_value',\n                get(this, 'settings.pause'),\n            );\n        } else {\n            await get(this, 'Collector').setProducts(['!products.pause']);\n        }\n    },\n\n    async exucuteSalarySettingsPage() {\n        // salary-perdiem\n        const perdiemProducts = {\n            none: ['!products.timetracker_perdiem', '!products.timetracker_perdiem_meal'],\n            def: ['products.timetracker_perdiem', '!products.timetracker_perdiem_meal'],\n            meal: ['!products.timetracker_perdiem', 'products.timetracker_perdiem_meal'],\n        };\n        const perdiem = get(this, 'settings.perdiem') ? get(this, 'settings.perdiem') : 'none';\n        await get(this, 'Collector').setProducts(perdiemProducts[perdiem]);\n\n        // km_type\n        const km_typeProducts = {\n            none: ['!products.timetracker_km', '!products.timetracker_kmsade'],\n            km: ['products.timetracker_km', '!products.timetracker_kmsade'],\n            kmsade: ['!products.timetracker_km', 'products.timetracker_kmsade'],\n            kmandsade: ['products.timetracker_km', 'products.timetracker_kmsade'],\n        };\n        const km_type = get(this, 'settings.km_type') ? get(this, 'settings.km_type') : 'none';\n        await get(this, 'Collector').setProducts(km_typeProducts[km_type]);\n    },\n\n    async exucuteOvertimeSettingsPage() {\n        const rules = [];\n        const products = [];\n\n        // dailyOvertime\n        if (get(this, 'settings.dailyOvertime')) {\n            products.push('products.overtime_daily');\n\n            const daily50 = '' + get(this, 'settings.daily50');\n            const daily100 = '' + get(this, 'settings.daily100');\n            rules.push({ name: '_50', values: { from: daily50, to: daily100, salarytypes: '' } });\n            rules.push({ name: '_100', values: { from: daily100, salarytypes: '' } });\n        }\n\n        // weeklyOvertime\n        if (get(this, 'settings.weeklyOvertime')) {\n            products.push('products.overtime_weekly');\n            const weeklyOvertime = get(this, 'settings.weeklyMaximum');\n\n            rules.push({\n                name: '_week50',\n                values: { from: 0, to: weeklyOvertime, salarytypes: '' },\n            });\n            rules.push({ name: '_week100', values: { from: weeklyOvertime, salarytypes: '' } });\n        }\n\n        // overtime_time_based\n        if (get(this, 'settings.overtimeTimebased')) {\n            products.push('products.overtime_weekly');\n\n            const evening = {\n                name: '_evening',\n                values: {\n                    from: get(this, 'settings.eveningStart'),\n                    to: get(this, 'settings.eveningEnd'),\n                    salarytypes: '',\n                },\n            };\n            if (!get(this, 'settings.calculateIfOvertimeEvening'))\n                evening.values.do_not_calculate_if_overtime = true;\n            const night = {\n                name: '_night',\n                values: {\n                    from: get(this, 'settings.nightStart'),\n                    to: get(this, 'settings.nightEnd'),\n                    salarytypes: '',\n                },\n            };\n            if (!get(this, 'settings.calculateIfOvertimeNight'))\n                night.values.do_not_calculate_if_overtime = true;\n            if (get(this, 'settings.overtimeCalculateAlways')) {\n                evening.values.calculate_compensations_always = true;\n                night.values.calculate_compensations_always = true;\n            }\n\n            rules.push(evening, night);\n        }\n\n        //overtime_splitted\n        if (get(this, 'settings.splitOvertimehours')) {\n            products.push('products.overtime_splitted');\n            rules.push({ name: '_overtimehours', values: { salarytypes: '' } });\n            rules.push({ name: '_basichours', values: { salarytypes: '' } });\n        }\n\n        // save overtime rules\n        if (rules.length > 0) {\n            await get(this, 'ttapi').request('overtime/settings', {\n                method: 'post',\n                data: { rules: JSON.stringify(rules) },\n            });\n        }\n\n        // set products on\n        if (products.length > 0) {\n            products.push('products.overtime');\n            await get(this, 'Collector').setProducts(products);\n        }\n    },\n\n    async executeSaldoSettingsPage() {\n        if (get(this, 'settings.saldoProduct')) {\n            let saldoAbsence = await this.createSaldoAbsence();\n\n            const saldoSetOn = get(this, 'Collector').setProducts(['products.saldo']);\n\n            const saldoSettingOK = get(this, 'ttapi').request('saldo/saldoSettings', {\n                method: 'post',\n                data: {\n                    startdate: get(this, 'settings.saldoStart'),\n                    minimum: parseInt(get(this, 'settings.saldoMinimum'), 10) * 60,\n                    maximum: parseInt(get(this, 'settings.saldoMaximum'), 10) * 60,\n                    dailymaximum: parseFloat(get(this, 'settings.saldoDailymaximum'), 10) * 60,\n                    saldo_absence_id: get(saldoAbsence, 'id'),\n                    auto_cut: get(this, 'settings.saldoAutocutter'),\n                },\n            });\n\n            // wait for both to resolve\n            await saldoSetOn;\n            await saldoSettingOK;\n        }\n    },\n    async createSaldoAbsence() {\n        let saldoAbsences = await get(this, 'store')\n            .peekAll('abcensetype')\n            .filterBy('name', get(this, 'intl').t('saldo.saldo_absence'));\n\n        if (isEmpty(saldoAbsences)) {\n            return await get(this, 'store')\n                .createRecord('abcensetype', { name: get(this, 'intl').t('saldo.saldo_absence') })\n                .save();\n        } else {\n            return get(saldoAbsences, 'firstObject');\n        }\n    },\n\n    async setCapiProduct(products) {\n        await get(this, 'Collector').setProducts(products);\n    },\n\n    async setFormFieldSetting(formName, fieldName, settingName, value) {\n        let form = get(this, 'store').peekAll('form').filterBy('external_type', formName);\n        let fields = get(form, 'firstObject.fields').filterBy('external_type', fieldName);\n        let settings = get(fields, 'firstObject.settings').filterBy('name', settingName);\n\n        if (isEmpty(settings)) {\n            await get(this, 'store')\n                .createRecord('form-field-setting', {\n                    field: get(fields, 'firstObject'),\n                    name: settingName,\n                    value: value,\n                })\n                .save();\n        } else {\n            let setting = get(settings, 'firstObject');\n            set(setting, 'value', value);\n            await setting.save();\n        }\n    },\n\n    startTourIfNeeded(executeSettings) {\n        if (!isEmpty(this.localStorageWrapper.getUserSetting('tourShown'))) return;\n        executeSettings\n            ? localStorage.setItem('welcome-tour', 'startTour')\n            : this.welcomeTour.start();\n    },\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'div',\n    classNames: ['content-container-flex'],\n});\n","import Component from '@ember/component';\nimport { get } from '@ember/object';\n\nexport default Component.extend({\n    classNames: ['setting-card'],\n\n    init() {\n        this._super();\n        if (get(this, 'size')) {\n            get(this, 'classNames').push('fixed-height-' + get(this, 'size'));\n        }\n    },\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({\n    classNameBindings: ['disabled:faded'],\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({\n    classNames: ['radio-group'],\n});\n","export default Ember.HTMLBars.template({\"id\":\"w0/q1bp0\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/radio-group/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'ul',\n    classNames: ['setting-list'],\n\n    classNameBindings: ['disabled:faded'],\n});\n","export default Ember.HTMLBars.template({\"id\":\"8BF01lrN\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/setting-list/template.hbs\"}});","import Component from '@ember/component';\nimport { set } from '@ember/object';\n\nexport default Component.extend({\n    tagName: 'span',\n    classNames: ['setting-value-input'],\n    type: 'text',\n\n    actions: {\n        changeDate(event) {\n            //format date to locale DD MM YYYY\n            let date = event.target.value;\n            set(this, 'value', date);\n            this.changeValue(date);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"IBPzuUuq\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"type\\\"]],\\\"date\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"change\\\",\\\"value\\\",\\\"disabled\\\",\\\"showNativeControl\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"changeDate\\\"],null],[28,\\\"moment-format\\\",[[24,[\\\"value\\\"]],\\\"L\\\"],null],[24,[\\\"disabled\\\"]],false]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"type\\\",\\\"disabled\\\",\\\"change\\\"],[[24,[\\\"value\\\"]],[24,[\\\"type\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"changeValue\\\"]],[24,[\\\"value\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/setting-value-input/template.hbs\"}});","import Component from '@ember/component';\nimport { get, computed } from '@ember/object';\n\nexport default Component.extend({\n    classNames: ['settings-table-div'],\n    classNameBindings: ['showScroll:div-overflow'],\n\n    showScroll: computed('rows', function () {\n        let rows = get(this, 'rows');\n        return rows.length >= 20;\n    }),\n});\n","import Component from '@ember/component';\nimport { get, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { assert } from '@ember/debug';\n\nexport default Component.extend({\n    intl: service(),\n\n    tagName: 'thead',\n    classNames: ['settings-table-header'],\n\n    translatedColumns: computed('columns', function () {\n        let columns = get(this, 'columns');\n        let form = get(this, 'form');\n        assert(\n            'You must give columns as an array to the table component like {{#table columns=[\"name\", \"address\", \"zip\"]}}',\n            Array.isArray(columns),\n        );\n        assert(\n            'You must give a form to the table component like {{#table form=\"form\"}}',\n            typeof form === 'string' && form != '',\n        );\n        let translated = columns.map((column) => {\n            return get(this, 'intl').t('report.' + get(this, 'form') + '.' + column);\n        });\n        return translated;\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"NlIIr1Ev\",\"block\":\"{\\\"symbols\\\":[\\\"column\\\"],\\\"statements\\\":[[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"translatedColumns\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"th\\\",true],[8],[1,[23,1,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/header/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'tr',\n    classNames: ['settings-table-row'],\n\n    actions: {\n        rowAction(action, row) {\n            this.action(action, row);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"YddEyFkB\",\"block\":\"{\\\"symbols\\\":[\\\"button\\\",\\\"column\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[24,[\\\"form\\\"]],[23,2,[]],[28,\\\"get\\\",[[24,[\\\"row\\\"]],[23,2,[]]],null]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[4,\\\"each\\\",[[24,[\\\"rowActions\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[[23,1,[\\\"icon\\\"]]]]],[3,\\\"action\\\",[[23,0,[]],\\\"rowAction\\\",[23,1,[\\\"action\\\"]],[24,[\\\"row\\\"]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/row/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"KPcV5Im/\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"&default\\\"],\\\"statements\\\":[[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"settings-table\\\"],[8],[0,\\\"\\\\n    \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"header\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/header\\\"],[[\\\"form\\\",\\\"columns\\\"],[[24,[\\\"form\\\"]],[24,[\\\"columns\\\"]]]]]]]]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"rows\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,2,[[28,\\\"hash\\\",null,[[\\\"rows\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/row\\\"],[[\\\"row\\\",\\\"columns\\\",\\\"form\\\"],[[23,1,[]],[24,[\\\"columns\\\"]],[24,[\\\"form\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"839udNQC\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1,[[28,\\\"hash\\\",null,[[\\\"radio-group\\\",\\\"setting-list\\\",\\\"toggle\\\",\\\"input\\\",\\\"table\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/content/radio-group\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/content/setting-list\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/title/toggle\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/content/setting-value-input\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/content/table\\\"],null]]]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/content/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"2MNdQQgp\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1,[[28,\\\"hash\\\",null,[[\\\"title\\\",\\\"content\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/title\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/content\\\"],null]]]]]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    classNames: ['card-title-flex'],\n\n    toggleable: true,\n    toggled: false,\n});\n","import Component from '@ember/component';\nimport { get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    analytics: service(),\n\n    tooltipDirection: 'right',\n    classNames: ['wizard-info-button'],\n\n    init() {\n        this._super(...arguments);\n        this.popperOptions = {\n            modifiers: {\n                preventOverflow: {\n                    escapeWithReference: false,\n                },\n            },\n        };\n    },\n\n    actions: {\n        trackAnalyticsEvent() {\n            get(this, 'analytics').trackEvent({\n                category: 'Onboarding-wizard',\n                action: 'info-button',\n            });\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"b5trazul\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"trackAnalyticsEvent\\\"],null]],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\",\\\"event\\\",\\\"side\\\",\\\"popperOptions\\\"],[[24,[\\\"text\\\"]],\\\"click\\\",[24,[\\\"tooltipDirection\\\"]],[23,0,[\\\"popperOptions\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/info-button/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"buR4shPM\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"text\\\",\\\"toggle\\\",\\\"info-button\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/title/text\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/title/toggle\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card/title/info-button\\\"],null]]]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    classNames: ['setting-card-title'],\n});\n","export default Ember.HTMLBars.template({\"id\":\"MX4opDdH\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"text\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/text/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\nexport default Component.extend({\n    toggled: false,\n    showLabels: true,\n    didRender() {\n        this._super();\n        if (!get(this, 'toggleSize')) set(this, 'toggleSize', 'medium');\n    },\n    actions: {\n        sendChange(value) {\n            value = !value;\n            set(this, 'toggled', value);\n            this.changeValue(value);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"9kyOl9MG\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"x-toggle\\\",null,[[\\\"theme\\\",\\\"size\\\",\\\"onLabel\\\",\\\"offLabel\\\",\\\"showLabels\\\",\\\"value\\\",\\\"onToggle\\\",\\\"disabled\\\"],[\\\"material\\\",[24,[\\\"toggleSize\\\"]],[28,\\\"t\\\",[\\\"settings.on\\\"],null],[28,\\\"t\\\",[\\\"settings.off\\\"],null],[24,[\\\"showLabels\\\"]],[24,[\\\"toggled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"sendChange\\\",[24,[\\\"toggled\\\"]]],null],[24,[\\\"disabled\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/setting-card/title/toggle/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"gEr6XYdw\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1,[[28,\\\"hash\\\",null,[[\\\"setting-card\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container/setting-card\\\"],null]]]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-container/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    classNames: ['header-flex-container'],\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"cG8w+SNk\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"header-content-icon\\\"],[8],[14,1],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/header-icon/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"L11cCWwM\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/header-text/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"PIIb4kPQ\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/header-title/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"yy3z01dd\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"icon\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-header/header-icon\\\"],null]]]]]],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n    \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"title\\\",\\\"text\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-header/header-title\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-header/header-text\\\"],null]]]]]],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/content-header/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"eGGpYKuf\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flexbox\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"side\\\"],[8],[1,[28,\\\"du-de\\\",null,[[\\\"number\\\"],[[24,[\\\"dude\\\"]]]]],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"center\\\"],[8],[1,[22,\\\"text\\\"],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"side\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/flex-header/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    showModal: false,\n\n    actions: {\n        save() {\n            this.save();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"eItzDIIW\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"header\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showModal\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[14,1],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/mini-modal/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\n\nexport default Component.extend({\n    currentPage: 1,\n\n    actions: {\n        pageChange(page) {\n            set(this, 'currentPage', page);\n            if (get(this, 'pageChange')) get(this, 'pageChange')(page);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"c4z5zoQ7\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1,[[28,\\\"hash\\\",null,[[\\\"header\\\",\\\"flex-header\\\",\\\"content-container\\\",\\\"mini-modal\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-header\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/flex-header\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/content-container\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/onboarding-wizard/components/mini-modal\\\"],null]]]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/components/onboarding-wizard-page/template.hbs\"}});","import Component from '@ember/component';\nimport { get } from '@ember/object';\n\nexport default Component.extend({\n    init() {\n        this._super();\n        let settings = get(this, 'settings');\n\n        this.splittedToggled = settings.overtimehours;\n        this.dailyToggled = settings.dailyOvertime;\n        this.weeklyToggled = settings.weeklyOvertime;\n\n        //right\n        this.timeBasedToggled = settings.overtimeTimebased;\n\n        //left\n        this.splitOvertimeHours = settings.splitOvertimehours;\n        this.daily50 = settings.daily50;\n        this.daily100 = settings.daily100;\n        this.weeklyMaximum = settings.weeklyMaximum;\n\n        //right\n        this.eveningStart = settings.eveningStart;\n        this.eveningEnd = settings.eveningEnd;\n        this.calculateIfOvertimeEvening = settings.calculateIfOvertimeEvening;\n        this.nightStart = settings.nightStart;\n        this.nightEnd = settings.nightEnd;\n        this.calculateIfOvertimeNight = settings.calculateIfOvertimeNight;\n        this.calculateAlways = settings.overtimeCalculateAlways;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"b7zoDJTg\",\"block\":\"{\\\"symbols\\\":[\\\"page\\\",\\\"container\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\",\\\"header\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/onboarding-wizard/components/onboarding-wizard-page\\\",null,null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"header\\\"]],\\\"expected `page.header` to be a contextual component but found a string. Did you mean `(component page.header)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L2:C7) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,15,[\\\"text\\\"]],\\\"expected `header.text` to be a contextual component but found a string. Did you mean `(component header.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L3:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.header_text\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[15]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content-container\\\"]],\\\"expected `page.content-container` to be a contextual component but found a string. Did you mean `(component page.content-container)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L8:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"left-overtime-flex\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L11:C15) \\\"],null]],[[\\\"column\\\"],[true]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,12,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L12:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,14,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L13:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.overtimehours\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,14,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L14:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.overtimehours.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[14]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,12,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L17:C19) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,13,[\\\"setting-list\\\"]],\\\"expected `content.setting-list` to be a contextual component but found a string. Did you mean `(component content.setting-list)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L18:C23) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[8],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,13,[\\\"toggle\\\"]],\\\"expected `content.toggle` to be a contextual component but found a string. Did you mean `(component content.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L21:C52) \\\"],null]],[[\\\"toggled\\\",\\\"toggleSize\\\",\\\"showLabels\\\",\\\"changeValue\\\"],[[24,[\\\"splitOvertimeHours\\\"]],\\\"medium\\\",false,[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"splitOvertimehours\\\"],null]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.split_overtimehours\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[13]},null]],\\\"parameters\\\":[12]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L28:C15) \\\"],null]],[[\\\"column\\\"],[true]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L29:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,11,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L30:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.daily_overtime\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,11,[\\\"toggle\\\"]],\\\"expected `cardTitle.toggle` to be a contextual component but found a string. Did you mean `(component cardTitle.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L31:C22) \\\"],null]],[[\\\"toggled\\\",\\\"changeValue\\\"],[[24,[\\\"dailyToggled\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"dailyOvertime\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,11,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L32:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.daily_overtime.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[11]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L35:C19) \\\"],null]],[[\\\"disabled\\\"],[[28,\\\"not\\\",[[24,[\\\"dailyToggled\\\"]]],null]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"setting-list\\\"]],\\\"expected `content.setting-list` to be a contextual component but found a string. Did you mean `(component content.setting-list)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L36:C23) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L38:C30) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"dailyToggled\\\"]]],null],[24,[\\\"daily50\\\"]],\\\"number\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"daily50\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.daily_50\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L42:C30) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"dailyToggled\\\"]]],null],[24,[\\\"daily100\\\"]],\\\"number\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"daily100\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.daily_100\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[10]},null]],\\\"parameters\\\":[9]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L49:C15) \\\"],null]],[[\\\"column\\\"],[true]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L50:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L51:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.weekly_overtime\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"toggle\\\"]],\\\"expected `cardTitle.toggle` to be a contextual component but found a string. Did you mean `(component cardTitle.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L52:C22) \\\"],null]],[[\\\"toggled\\\",\\\"changeValue\\\"],[[24,[\\\"weeklyToggled\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"weeklyOvertime\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L53:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.weekly_overtime.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L56:C19) \\\"],null]],[[\\\"disabled\\\"],[[28,\\\"not\\\",[[24,[\\\"weeklyToggled\\\"]]],null]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"setting-list\\\"]],\\\"expected `content.setting-list` to be a contextual component but found a string. Did you mean `(component content.setting-list)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L57:C23) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L59:C30) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"weeklyToggled\\\"]]],null],[24,[\\\"weeklyMaximum\\\"]],\\\"number\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"weeklyMaximum\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.weekly_maximum\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[7]},null]],\\\"parameters\\\":[6]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"right-overtime-flex\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L68:C15) \\\"],null]],[[\\\"column\\\"],[true]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L69:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L70:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.time_based\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"toggle\\\"]],\\\"expected `cardTitle.toggle` to be a contextual component but found a string. Did you mean `(component cardTitle.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L71:C22) \\\"],null]],[[\\\"toggled\\\",\\\"changeValue\\\"],[[24,[\\\"timeBasedToggled\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"overtimeTimebased\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L72:C22) \\\"],null]],[[\\\"tooltipDirection\\\",\\\"text\\\"],[\\\"left\\\",[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.time_based.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L75:C19) \\\"],null]],[[\\\"disabled\\\"],[[28,\\\"not\\\",[[24,[\\\"timeBasedToggled\\\"]]],null]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"setting-list\\\"]],\\\"expected `content.setting-list` to be a contextual component but found a string. Did you mean `(component content.setting-list)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L76:C23) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[2,\\\" For input fields:\\\\n                            the type is dynamic: input is type=\\\\\\\"time\\\\\\\" if the main setting is toggled=true, else text if toggled=false\\\\n                            because we don't want to show --:-- when they are disabled \\\"],[0,\\\"\\\\n                        \\\"],[2,\\\" Evening overtime \\\"],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L82:C30) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"timeBasedToggled\\\"]]],null],[24,[\\\"eveningStart\\\"]],\\\"time\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"eveningStart\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.time_based.evening_start\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L93:C30) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"timeBasedToggled\\\"]]],null],[24,[\\\"eveningEnd\\\"]],\\\"time\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"eveningEnd\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.time_based.evening_end\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"toggle\\\"]],\\\"expected `content.toggle` to be a contextual component but found a string. Did you mean `(component content.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L105:C34) \\\"],null]],[[\\\"disabled\\\",\\\"toggled\\\",\\\"toggleSize\\\",\\\"showLabels\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"timeBasedToggled\\\"]]],null],[24,[\\\"calculateIfOvertimeEvening\\\"]],\\\"medium\\\",false,[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"calculateIfOvertimeEvening\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.calculate_overtime_if_evening\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[2,\\\" Night overtime \\\"],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L119:C30) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"timeBasedToggled\\\"]]],null],[24,[\\\"nightStart\\\"]],\\\"time\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"nightStart\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.time_based.night_start\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L130:C30) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"timeBasedToggled\\\"]]],null],[24,[\\\"nightEnd\\\"]],\\\"time\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"nightEnd\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.time_based.night_end\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"toggle\\\"]],\\\"expected `content.toggle` to be a contextual component but found a string. Did you mean `(component content.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L142:C34) \\\"],null]],[[\\\"disabled\\\",\\\"toggled\\\",\\\"toggleSize\\\",\\\"showLabels\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"timeBasedToggled\\\"]]],null],[24,[\\\"calculateIfOvertimeNight\\\"]],\\\"medium\\\",false,[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"calculateIfOvertimeNight\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.calculate_if_overtime_evening\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"toggle\\\"]],\\\"expected `content.toggle` to be a contextual component but found a string. Did you mean `(component content.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs' @ L155:C34) \\\"],null]],[[\\\"disabled\\\",\\\"toggled\\\",\\\"toggleSize\\\",\\\"showLabels\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"timeBasedToggled\\\"]]],null],[24,[\\\"calculateAlways\\\"]],\\\"medium\\\",false,[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"overtimeCalculateAlways\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.overtime.calculate_always\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-dude\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"du-de\\\",null,[[\\\"number\\\"],[35]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[3]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/pages/overtime-settings/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\nimport { max } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n    collector: service('collector-service'),\n\n    columns: null,\n    // projects: [{\n    //     \"number\": \"1234\",\n    //     \"name\": \"Eka Projekti\",\n    //     \"address\": \"Puupolku 4F\",\n    //     \"zip\": \"67575\",\n    //     \"city\": \"Puukylä\"\n    // }],\n    projects: null,\n    projectRecord: null,\n    contactPerson: null,\n\n    init() {\n        this._super();\n        //if we're re-running the wizard we want to get all projects that may have been created\n        let projects = get(this, 'store').findAll('project').then(this._getProjects.bind(this));\n        this.projects = projects;\n        this.only = 'number,name,address,zip,city,proj_type';\n        this.columns = ['number', 'name', 'address', 'zip', 'city'];\n        if (this.collector.testNeedsOne('products.rakentajanpaketti')) {\n            this.contactPerson = get(this.store.peekAll('export_contact_person'), 'firstObject');\n        }\n    },\n\n    actions: {\n        openAddProjectModal() {\n            //get biggest project number+1 to autofill number field\n            let newProjectNumber = get(this, 'maxProjectNumber') + 1;\n            set(\n                this,\n                'projectRecord',\n                get(this, 'store').createRecord('project', { number: newProjectNumber }),\n            );\n            set(this, 'showProjectAddModal', true);\n        },\n\n        saveProject() {\n            set(this, 'showProjectAddModal', false);\n        },\n    },\n    async _getProjects(data) {\n        this.projectNumbers = await data.mapBy('number');\n        let projectsLength = await data.length;\n        this.maxProjectNumber = projectsLength !== 0 ? max('projectNumbers') : 0;\n        return data;\n    },\n\n    willDestroy() {\n        this._super(...arguments);\n        if (this.contactPerson) {\n            set(this.contactPerson, 'validation', 'off');\n            this.contactPerson.save();\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"gJ29XdZg\",\"block\":\"{\\\"symbols\\\":[\\\"page\\\",\\\"container\\\",\\\"card\\\",\\\"form\\\",\\\"cardTitle\\\",\\\"card\\\",\\\"content\\\",\\\"form\\\",\\\"table\\\",\\\"cardTitle\\\",\\\"header\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/onboarding-wizard/components/onboarding-wizard-page\\\",null,null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"header\\\"]],\\\"expected `page.header` to be a contextual component but found a string. Did you mean `(component page.header)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L2:C7) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,11,[\\\"text\\\"]],\\\"expected `header.text` to be a contextual component but found a string. Did you mean `(component header.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L3:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"           \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.projects.header_text\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[11]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content-container\\\"]],\\\"expected `page.content-container` to be a contextual component but found a string. Did you mean `(component page.content-container)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L8:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L10:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L11:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L12:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.projects\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L13:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.projects.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[10]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L16:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"table\\\"]],\\\"expected `content.table` to be a contextual component but found a string. Did you mean `(component content.table)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L18:C19) \\\"],null]],[[\\\"form\\\",\\\"columns\\\",\\\"rows\\\"],[\\\"project\\\",[24,[\\\"columns\\\"]],[24,[\\\"projects\\\"]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,9,[\\\"header\\\"]],false],[0,\\\"\\\\n                    \\\"],[1,[23,9,[\\\"rows\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[9]},null],[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary add-project-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openAddProjectModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.projects.add_new_project\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"mini-modal\\\"]],\\\"expected `page.mini-modal` to be a contextual component but found a string. Did you mean `(component page.mini-modal)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L24:C19) \\\"],null]],[[\\\"header\\\",\\\"showModal\\\",\\\"save\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.projects.add_new\\\"],null],[24,[\\\"showProjectAddModal\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveProject\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"collector/form-add\\\",null,[[\\\"only\\\",\\\"form\\\",\\\"showSaved\\\",\\\"record\\\",\\\"close\\\"],[[24,[\\\"only\\\"]],\\\"project\\\",false,[24,[\\\"projectRecord\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showProjectAddModal\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,8,[\\\"fields\\\"]],false],[0,\\\"\\\\n                        \\\"],[1,[23,8,[\\\"buttons\\\"]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.rakentajanpaketti\\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L40:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L41:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L42:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.taxman_contact_person\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L43:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.taxman_contact_person.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs' @ L46:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"preserveRecordOnDestroy\\\"],[\\\"export_contact_person\\\",[24,[\\\"contactPerson\\\"]],true]],{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,4,[\\\"fields\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[1,[28,\\\"du-de\\\",null,[[\\\"number\\\"],[2]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/pages/project-settings/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n    dialogs: service(),\n    intl: service(),\n\n    init() {\n        this._super();\n        this.columns = ['period_name', 'period_start_date', 'period_end_date'];\n        this.rowActions = [{ action: 'removeRow', icon: 'move move-Delete' }];\n        this.wagePeriods = get(this, 'store').findAll('wage_period');\n        this.perdiemToggled = get(this, 'settings.perdiem');\n        this.kmToggled = get(this, 'settings.km_type');\n    },\n    actions: {\n        perdiemToggled(value) {\n            set(this, 'settings.perdiem', value === true ? 'def' : null);\n            this.settingChanged('perdiem', get(this, 'settings.perdiem'));\n        },\n\n        km_typeToggled(value) {\n            set(this, 'settings.km_type', value === true ? 'km' : null);\n            this.settingChanged('km_type', get(this, 'settings.km_type'));\n        },\n\n        rowActions(action, row) {\n            if (action == 'removeRow') {\n                get(this, 'dialogs')\n                    .confirm(get(this, 'intl').t('general.remove_row'))\n                    .then(this._removeRowIfcon.bind(this, row));\n            }\n        },\n    },\n    _removeRowIfcon(row, con) {\n        if (con) {\n            row.destroyRecord();\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"BfqeCS26\",\"block\":\"{\\\"symbols\\\":[\\\"page\\\",\\\"container\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\",\\\"card\\\",\\\"content\\\",\\\"periods\\\",\\\"table\\\",\\\"cardTitle\\\",\\\"header\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/onboarding-wizard/components/onboarding-wizard-page\\\",null,null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"header\\\"]],\\\"expected `page.header` to be a contextual component but found a string. Did you mean `(component page.header)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L2:C7) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,14,[\\\"text\\\"]],\\\"expected `header.text` to be a contextual component but found a string. Did you mean `(component header.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L3:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.salary.header_text\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[14]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content-container\\\"]],\\\"expected `page.content-container` to be a contextual component but found a string. Did you mean `(component page.content-container)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L8:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L10:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L11:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,13,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L12:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.salary.salary_periods\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,13,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L13:C18) \\\"],null]],[[\\\"tooltipDirection\\\",\\\"text\\\"],[\\\"right\\\",[28,\\\"t\\\",[\\\"wizard.onboarding.salary.salary_periods.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[13]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L15:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"table\\\"]],\\\"expected `content.table` to be a contextual component but found a string. Did you mean `(component content.table)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L16:C19) \\\"],null]],[[\\\"form\\\",\\\"columns\\\",\\\"rows\\\"],[\\\"wage_period\\\",[24,[\\\"columns\\\"]],[24,[\\\"wagePeriods\\\"]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,12,[\\\"header\\\"]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,12,[\\\"rows\\\"]],\\\"expected `table.rows` to be a contextual component but found a string. Did you mean `(component table.rows)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L18:C22) \\\"],null]],[[\\\"rowActions\\\",\\\"action\\\"],[[24,[\\\"rowActions\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"rowActions\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[12]},null],[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary add-wagePeriod-button\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAddWagePeriods\\\"]]],null],true]],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.salary.add_new_wage_period\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"mini-modal\\\"]],\\\"expected `page.mini-modal` to be a contextual component but found a string. Did you mean `(component page.mini-modal)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L22:C19) \\\"],null]],[[\\\"header\\\",\\\"showModal\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.wage_periods.add_new\\\"],null],[24,[\\\"showAddWagePeriods\\\"]]]],{\\\"statements\\\":[[4,\\\"salary-periods-add\\\",null,[[\\\"showAdd\\\",\\\"saved\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAddWagePeriods\\\"]]],null]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAddWagePeriods\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,11,[\\\"submenu\\\"]],false],[0,\\\"\\\\n                        \\\"],[1,[23,11,[\\\"single\\\"]],false],[0,\\\"\\\\n                        \\\"],[1,[23,11,[\\\"many\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[11]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[10]},null]],\\\"parameters\\\":[9]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!serviceCountry@se\\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L33:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L34:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L35:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.salary.perdiem\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"toggle\\\"]],\\\"expected `cardTitle.toggle` to be a contextual component but found a string. Did you mean `(component cardTitle.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L36:C22) \\\"],null]],[[\\\"toggled\\\",\\\"changeValue\\\"],[[24,[\\\"perdiemToggled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"perdiemToggled\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L37:C22) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.salary.perdiem.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L40:C19) \\\"],null]],[[\\\"disabled\\\"],[[28,\\\"not\\\",[[24,[\\\"perdiemToggled\\\"]]],null]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"radio-group\\\"]],\\\"expected `content.radio-group` to be a contextual component but found a string. Did you mean `(component content.radio-group)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L41:C23) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"def\\\",[24,[\\\"settings\\\",\\\"perdiem\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"perdiem\\\"],null]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.salary.perdiem_def\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"meal\\\",[24,[\\\"settings\\\",\\\"perdiem\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"perdiem\\\"],null]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.salary.perdiem_meal\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"img-bottom\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"du-de\\\",null,[[\\\"number\\\"],[26]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L58:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L59:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L60:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.salary.km_type\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"toggle\\\"]],\\\"expected `cardTitle.toggle` to be a contextual component but found a string. Did you mean `(component cardTitle.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L61:C18) \\\"],null]],[[\\\"toggled\\\",\\\"changeValue\\\"],[[24,[\\\"kmToggled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"km_typeToggled\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L62:C18) \\\"],null]],[[\\\"tooltipDirection\\\",\\\"text\\\"],[\\\"left\\\",[28,\\\"t\\\",[\\\"wizard.onboarding.salary.km.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L65:C15) \\\"],null]],[[\\\"size\\\",\\\"disabled\\\"],[\\\"normal\\\",[28,\\\"not\\\",[[24,[\\\"kmToggled\\\"]]],null]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"radio-group\\\"]],\\\"expected `content.radio-group` to be a contextual component but found a string. Did you mean `(component content.radio-group)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs' @ L66:C19) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"disabled\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"km\\\",[28,\\\"not\\\",[[24,[\\\"kmToggled\\\"]]],null],[24,[\\\"settings\\\",\\\"km_type\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"kilometers\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.salary.km\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"disabled\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"kmsade\\\",[28,\\\"not\\\",[[24,[\\\"kmToggled\\\"]]],null],[24,[\\\"settings\\\",\\\"km_type\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"kilometers\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.salary.kmsade\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"disabled\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"kmandsade\\\",[28,\\\"not\\\",[[24,[\\\"kmToggled\\\"]]],null],[24,[\\\"settings\\\",\\\"km_type\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"kilometers\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.salary.kmandsade\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/pages/salary-settings/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { get, set, computed } from '@ember/object';\n\nexport default Component.extend({\n    store: service(),\n    collector: service('collector-service'),\n    customerSettings: service(),\n    dialogs: service(),\n    intl: service(),\n\n    saldoAbsenceId: null,\n\n    absenceTypes: computed('saldoToggled', async function () {\n        let toggled = get(this, 'saldoToggled');\n\n        let absenceTypes = get(this, 'store').peekAll('abcensetype');\n\n        let saldoAbsenceId = get(this, 'saldoAbsenceId');\n        let saldoAbsence = null;\n\n        //we check if saldo absence already exists in absencetypes\n        if (saldoAbsenceId) {\n            saldoAbsence = absenceTypes.filter((type) => type.id == saldoAbsenceId);\n        }\n\n        //we just turned saldos on and we don't have an existing saldo absence, we need to create one\n        if (toggled) {\n            //if we have a saldo absence id but we do not have a saldo absence in absence types\n            if (saldoAbsenceId && !saldoAbsence) {\n                let record = get(this, 'store').createRecord('abcensetype', {\n                    name: get(this, 'intl').t('saldo.saldo_absence'),\n                });\n                await record.save();\n            }\n        }\n\n        return absenceTypes;\n    }),\n\n    init() {\n        this._super();\n        let columns = ['name', 'usesholiday'];\n        this.columns = columns;\n        this.rowActions = [\n            { action: 'removeRow', icon: 'move move-Delete' },\n            { action: 'editRow', icon: 'move move-Pencil' },\n        ];\n\n        //fetch all possible absencetypes to store\n        get(this, 'store').findAll('abcensetype');\n\n        //check if we already have saldos on (if rerunning wizard)\n        /*if(get(this,'collector').testNeedsOne('products.saldo')){\n            get(this, 'collector').ttapi({\n                \"url\": \"saldo/saldoSettings\"\n            }).then(this.setSaldoSettings.bind(this))\n        }*/\n    },\n\n    actions: {\n        openAbsenceModal() {\n            set(this, 'absenceRecord', get(this, 'store').createRecord('abcensetype', {}));\n            set(this, 'showAbsenceAddModal', true);\n        },\n\n        rowActions(action, row) {\n            if (action == 'removeRow') {\n                get(this, 'dialogs')\n                    .confirm(get(this, 'intl').t('general.remove_row'))\n                    .then(this._removeRowIfcon.bind(this, row));\n            }\n\n            if (action == 'editRow') {\n                set(this, 'absenceRecord', row);\n                set(this, 'showAbsenceAddModal', true);\n            }\n        },\n    },\n\n    setSaldoSettings(saldo) {\n        if (saldo.length === 0) return;\n\n        set(this, 'settings.saldoStart', saldo.startDate);\n        set(this, 'settings.saldoMinimum', saldo.minimum / 60);\n        set(this, 'settings.saldoMaximum', saldo.maximum / 60);\n        set(this, 'settings.saldoDailymaximum ', saldo.dailymaximum / 60);\n        set(this, 'settings.autoCutter', saldo.auto_cut);\n\n        set(this, 'settings.saldoAbsenceId', saldo.saldo_absence_id);\n\n        //toggle saldos on\n        this.toggleProperty('saldoToggled');\n    },\n\n    checkIfSaldoAbsenceExists() {\n        let saldoAbsenceId = get(this, 'saldoAbsenceId');\n\n        if (!get(this, 'absenceTypes')) return;\n        let saldoAbsence = get(this, 'absenceTypes').filter((type) => type.id == saldoAbsenceId);\n\n        if (saldoAbsence) return true;\n        return false;\n    },\n\n    _removeRowIfcon(row, con) {\n        if (con) {\n            row.destroyRecord();\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"IaIcsJT7\",\"block\":\"{\\\"symbols\\\":[\\\"page\\\",\\\"container\\\",\\\"card\\\",\\\"content\\\",\\\"form\\\",\\\"table\\\",\\\"cardTitle\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/onboarding-wizard/components/onboarding-wizard-page\\\",null,null,{\\\"statements\\\":[[0,\\\"    \\\\n    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"flex-header\\\"]],\\\"expected `page.flex-header` to be a contextual component but found a string. Did you mean `(component page.flex-header)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L3:C6) \\\"],null]],[[\\\"dude\\\",\\\"text\\\"],[15,[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.header_text\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content-container\\\"]],\\\"expected `page.content-container` to be a contextual component but found a string. Did you mean `(component page.content-container)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L5:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L7:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L8:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L9:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.saldo\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"toggle\\\"]],\\\"expected `cardTitle.toggle` to be a contextual component but found a string. Did you mean `(component cardTitle.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L10:C18) \\\"],null]],[[\\\"toggled\\\",\\\"changeValue\\\"],[[24,[\\\"settings\\\",\\\"saldoProduct\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"saldoProduct\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L11:C18) \\\"],null]],[[\\\"tooltipDirection\\\",\\\"text\\\"],[\\\"right\\\",[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.saldo.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[10]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L14:C15) \\\"],null]],[[\\\"disabled\\\"],[[28,\\\"not\\\",[[24,[\\\"settings\\\",\\\"saldoProduct\\\"]]],null]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"setting-list\\\"]],\\\"expected `content.setting-list` to be a contextual component but found a string. Did you mean `(component content.setting-list)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L15:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L17:C26) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"settings\\\",\\\"saldoProduct\\\"]]],null],[24,[\\\"settings\\\",\\\"saldoStart\\\"]],\\\"date\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"saldoStart\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.start\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L28:C26) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"settings\\\",\\\"saldoProduct\\\"]]],null],[24,[\\\"settings\\\",\\\"saldoMinimum\\\"]],\\\"number\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"saldoMinimum\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.minimum\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L39:C26) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"settings\\\",\\\"saldoProduct\\\"]]],null],[24,[\\\"settings\\\",\\\"saldoMaximum\\\"]],\\\"number\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"saldoMaximum\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.maximum\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L50:C26) \\\"],null]],[[\\\"disabled\\\",\\\"value\\\",\\\"type\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"settings\\\",\\\"saldoProduct\\\"]]],null],[24,[\\\"settings\\\",\\\"saldoDailymaximum\\\"]],\\\"number\\\",[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"saldoDailymaximum\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.dailymaximum\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"toggle\\\"]],\\\"expected `content.toggle` to be a contextual component but found a string. Did you mean `(component content.toggle)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L62:C30) \\\"],null]],[[\\\"disabled\\\",\\\"toggled\\\",\\\"toggleSize\\\",\\\"showLabels\\\",\\\"changeValue\\\"],[[28,\\\"not\\\",[[24,[\\\"settings\\\",\\\"saldoProduct\\\"]]],null],[24,[\\\"settings\\\",\\\"autocutter\\\"]],\\\"medium\\\",false,[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"saldoAutocutter\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.autocut\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[9]},null]],\\\"parameters\\\":[8]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L80:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L81:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L82:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.absence\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L83:C18) \\\"],null]],[[\\\"tooltipDirection\\\",\\\"text\\\"],[\\\"left\\\",[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.absences.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L86:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"table\\\"]],\\\"expected `content.table` to be a contextual component but found a string. Did you mean `(component content.table)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L87:C19) \\\"],null]],[[\\\"form\\\",\\\"columns\\\",\\\"rows\\\"],[\\\"abcensetype\\\",[24,[\\\"columns\\\"]],[24,[\\\"absenceTypes\\\"]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,6,[\\\"header\\\"]],false],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"rows\\\"]],\\\"expected `table.rows` to be a contextual component but found a string. Did you mean `(component table.rows)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L89:C22) \\\"],null]],[[\\\"rowActions\\\",\\\"action\\\"],[[24,[\\\"rowActions\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"rowActions\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary add-saldo-absence-type-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openAbsenceModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.add_absencetype\\\"],null],false],[9],[0,\\\"\\\\n                \\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"mini-modal\\\"]],\\\"expected `page.mini-modal` to be a contextual component but found a string. Did you mean `(component page.mini-modal)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs' @ L94:C19) \\\"],null]],[[\\\"header\\\",\\\"showModal\\\",\\\"save\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.saldo.add_new_absencetype\\\"],null],[24,[\\\"showAbsenceAddModal\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAbsenceAddModal\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"                \\\\n\\\"],[4,\\\"collector/form-add\\\",null,[[\\\"only\\\",\\\"form\\\",\\\"showSaved\\\",\\\"record\\\",\\\"close\\\"],[\\\"name,usesholiday\\\",\\\"abcensetype\\\",false,[24,[\\\"absenceRecord\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAbsenceAddModal\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,5,[\\\"fields\\\"]],false],[0,\\\"\\\\n                        \\\"],[1,[23,5,[\\\"buttons\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\\n\\\\n\\\"]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/pages/saldo-settings/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"3R6l8P1z\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"wizard-builder/onboarding-wizard/components/onboarding-wizard-page\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"summary-flex\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"du-de\\\",null,[[\\\"number\\\",\\\"size\\\"],[1,300]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.summary.onboarding_complete\\\"],[[\\\"product\\\",\\\"htmlSafe\\\"],[[24,[\\\"settings\\\",\\\"product\\\"]],true]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary complete-button\\\"],[3,\\\"action\\\",[[23,0,[]],[24,[\\\"executeSettings\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.summary.confirm_onboarding_completion\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"box\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/pages/summary/template.hbs\"}});","import Component from '@ember/component';\nimport { get } from '@ember/object';\nimport { typeOf } from '@ember/utils';\n\nexport default Component.extend({\n    //radio-groups will set these automatically when you change them so you can just get these directly\n    init() {\n        this._super();\n\n        let settings = get(this, 'settings');\n\n        if (typeOf(settings.pause) == 'string') {\n            this.pause = 'custom';\n            this.customPause = parseInt(settings.pause);\n        } else {\n            this.pause = settings.pause;\n        }\n\n        if (typeOf(settings.editTime) == 'string') {\n            this.editTime = 'custom';\n            this.customEditTime = parseInt(settings.editTime);\n        } else {\n            this.editTime = settings.editTime;\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"L+wiXvfu\",\"block\":\"{\\\"symbols\\\":[\\\"page\\\",\\\"container\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\",\\\"card\\\",\\\"content\\\",\\\"cardTitle\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/onboarding-wizard/components/onboarding-wizard-page\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"flex-header\\\"]],\\\"expected `page.flex-header` to be a contextual component but found a string. Did you mean `(component page.flex-header)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L3:C6) \\\"],null]],[[\\\"dude\\\",\\\"text\\\"],[3,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.header_text\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content-container\\\"]],\\\"expected `page.content-container` to be a contextual component but found a string. Did you mean `(component page.content-container)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L5:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L7:C11) \\\"],null]],[[\\\"size\\\"],[\\\"normal\\\"]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L8:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,11,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L9:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.time_adding_type\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,11,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L10:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.adding_type.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[11]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L12:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,10,[\\\"radio-group\\\"]],\\\"expected `content.radio-group` to be a contextual component but found a string. Did you mean `(component content.radio-group)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L13:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\\n\\\"],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"hybrid\\\",[24,[\\\"settings\\\",\\\"timeAddingType\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"timeAddingType\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.setting.hybrid\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"clockcard\\\",[24,[\\\"settings\\\",\\\"timeAddingType\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"timeAddingType\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.setting.clockcard\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"startandend\\\",[24,[\\\"settings\\\",\\\"timeAddingType\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"timeAddingType\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.setting.startandend\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[\\\"hours\\\",[24,[\\\"settings\\\",\\\"timeAddingType\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"timeAddingType\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.setting.hours\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[10]},null]],\\\"parameters\\\":[9]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L33:C11) \\\"],null]],[[\\\"size\\\"],[\\\"normal\\\"]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L34:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L35:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.edit_time\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L36:C18) \\\"],null]],[[\\\"tooltipDirection\\\",\\\"text\\\"],[\\\"right\\\",[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.edit_time.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L39:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"radio-group\\\"]],\\\"expected `content.radio-group` to be a contextual component but found a string. Did you mean `(component content.radio-group)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L40:C19) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[0,[24,[\\\"editTime\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"editTime\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.edit_time.same_day\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[2,[24,[\\\"editTime\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"editTime\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.edit_time.tomorrow\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[3,[24,[\\\"editTime\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"editTime\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.edit_time.two_days\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\"],[\\\"custom\\\",[24,[\\\"editTime\\\"]]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.edit_time.custom.text_start\\\"],null],false],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L54:C30) \\\"],null]],[[\\\"value\\\",\\\"type\\\",\\\"disabled\\\",\\\"changeValue\\\"],[[24,[\\\"customEditTime\\\"]],\\\"number\\\",[28,\\\"not\\\",[[28,\\\"is-equal\\\",[[24,[\\\"editTime\\\"]],\\\"custom\\\"],null]],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"editTime\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.edit_time.custom.text_end\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[7]},null],[0,\\\"            \\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L69:C11) \\\"],null]],[[\\\"size\\\"],[\\\"normal\\\"]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L70:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"text\\\"]],\\\"expected `cardTitle.text` to be a contextual component but found a string. Did you mean `(component cardTitle.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L71:C18) \\\"],null]],[[\\\"text\\\"],[[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"info-button\\\"]],\\\"expected `cardTitle.info-button` to be a contextual component but found a string. Did you mean `(component cardTitle.info-button)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L72:C18) \\\"],null]],[[\\\"tooltipDirection\\\",\\\"text\\\"],[\\\"left\\\",[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L74:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"radio-group\\\"]],\\\"expected `content.radio-group` to be a contextual component but found a string. Did you mean `(component content.radio-group)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L75:C19) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[null,[24,[\\\"pause\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"pause\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.none\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[15,[24,[\\\"pause\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"pause\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.15\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[30,[24,[\\\"pause\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"pause\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.30\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[45,[24,[\\\"pause\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"pause\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.45\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\",\\\"changed\\\"],[60,[24,[\\\"pause\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"pause\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.60\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"radio-button\\\",null,[[\\\"value\\\",\\\"groupValue\\\"],[\\\"custom\\\",[24,[\\\"pause\\\"]]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"label pull-left\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline pull-right\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.custom.text_start\\\"],null],false],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"input\\\"]],\\\"expected `content.input` to be a contextual component but found a string. Did you mean `(component content.input)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs' @ L95:C30) \\\"],null]],[[\\\"value\\\",\\\"type\\\",\\\"disabled\\\",\\\"changeValue\\\"],[[24,[\\\"customPause\\\"]],\\\"number\\\",[28,\\\"not\\\",[[28,\\\"is-equal\\\",[[24,[\\\"pause\\\"]],\\\"custom\\\"],null]],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"settingChanged\\\"]],\\\"pause\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.custom.text_end\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/pages/timetracker-settings/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    actions: {\n        startOnboardingWizard() {\n            this.startWizard();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"h4/FqvzE\",\"block\":\"{\\\"symbols\\\":[\\\"page\\\",\\\"container\\\",\\\"card\\\",\\\"card\\\",\\\"card\\\",\\\"card\\\",\\\"header\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/onboarding-wizard/components/onboarding-wizard-page\\\",null,null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"header\\\"]],\\\"expected `page.header` to be a contextual component but found a string. Did you mean `(component page.header)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L3:C7) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"icon\\\"]],\\\"expected `header.icon` to be a contextual component but found a string. Did you mean `(component header.icon)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L4:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"du-de\\\",null,[[\\\"number\\\"],[36]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"title\\\"]],\\\"expected `header.title` to be a contextual component but found a string. Did you mean `(component header.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L7:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.welcome.header_title\\\"],[[\\\"product\\\"],[[24,[\\\"settings\\\",\\\"product\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,7,[\\\"text\\\"]],\\\"expected `header.text` to be a contextual component but found a string. Did you mean `(component header.text)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L10:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.welcome.header_text\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[7]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content-container\\\"]],\\\"expected `page.content-container` to be a contextual component but found a string. Did you mean `(component page.content-container)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L15:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"start-button-div\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xl btn-primary start-wizard-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"startOnboardingWizard\\\"]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.start\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L23:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L24:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-lg btn-primary disabled text-center\\\"],[10,\\\"disabled\\\",\\\"\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"general.next\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,6,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L29:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.welcome.next_button_info\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L37:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L38:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-lg btn-primary disabled\\\"],[10,\\\"disabled\\\",\\\"\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"general.previous\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L44:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.welcome.previous_button_info\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L51:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L52:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info welcome-page-info-button-example\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L56:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.welcome.info_button_info\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"setting-card\\\"]],\\\"expected `container.setting-card` to be a contextual component but found a string. Did you mean `(component container.setting-card)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L62:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"title\\\"]],\\\"expected `card.title` to be a contextual component but found a string. Did you mean `(component card.title)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L64:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-lg btn-danger disabled\\\"],[10,\\\"disabled\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.exit\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"content\\\"]],\\\"expected `card.content` to be a contextual component but found a string. Did you mean `(component card.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs' @ L68:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.welcome.exit_button_info\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/pages/welcome/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Am/Xj8Zu\",\"block\":\"{\\\"symbols\\\":[\\\"wizard\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/wizard\\\",null,[[\\\"pages\\\",\\\"header\\\",\\\"close\\\",\\\"currentPage\\\",\\\"pageChange\\\"],[7,[28,\\\"t\\\",[[24,[\\\"TranslatedCurrentPageHeader\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"closingWizard\\\"],null],[24,[\\\"currentPage\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"currentPage\\\"]]],null]],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"steps\\\"]],\\\"expected `wizard.steps` to be a contextual component but found a string. Did you mean `(component wizard.steps)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/template.hbs' @ L5:C10) \\\"],null]],[[\\\"pageNames\\\"],[[24,[\\\"pageNames\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content\\\"]],\\\"expected `wizard.content` to be a contextual component but found a string. Did you mean `(component wizard.content)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/template.hbs' @ L6:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"component\\\",[[24,[\\\"currentPageComponent\\\"]]],[[\\\"settingChanged\\\",\\\"startWizard\\\",\\\"executeSettings\\\",\\\"settings\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"collectSettingsToObject\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"startWizard\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"executeSettings\\\"],null],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"buttons\\\"]],\\\"expected `wizard.buttons` to be a contextual component but found a string. Did you mean `(component wizard.buttons)`? ('tt4/pods/components/wizard-builder/onboarding-wizard/template.hbs' @ L15:C10) \\\"],null]],[[\\\"showStartButton\\\",\\\"hideNext\\\",\\\"hideDone\\\"],[[24,[\\\"showStartButton\\\"]],[24,[\\\"hideNext\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/onboarding-wizard/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"eL7jSx74\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"component\\\",[[24,[\\\"componentName\\\"]]],[[\\\"close\\\",\\\"name\\\",\\\"transitionToOnboarding\\\",\\\"closeAndTransitionToRoute\\\"],[[24,[\\\"close\\\"]],[24,[\\\"name\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"transitionToOnboarding\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeAndTransitionToRoute\\\"],null]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/template.hbs\"}});","import Component from '@ember/component';\nimport { get, computed } from '@ember/object';\n\nexport default Component.extend({\n    currentPage: 1,\n\n    currentPageComponent: computed('currentPage', function () {\n        return 'wizard-builder/test-wizard/page' + get(this, 'currentPage');\n    }),\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({\n    placeholder: 'this is page number 1',\n});\n","export default Ember.HTMLBars.template({\"id\":\"bUFd9A9Q\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"placeholder\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/test-wizard/page1/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    placeholder: 'this is page number 2',\n});\n","export default Ember.HTMLBars.template({\"id\":\"zal8X6Oj\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"placeholder\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/test-wizard/page2/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"nYn30o0l\",\"block\":\"{\\\"symbols\\\":[\\\"wizard\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/wizard\\\",null,[[\\\"pages\\\",\\\"header\\\",\\\"close\\\",\\\"pageChange\\\"],[2,\\\"test wizard\\\",[24,[\\\"close\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"currentPage\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[1,[23,1,[\\\"steps\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content\\\"]],\\\"expected `wizard.content` to be a contextual component but found a string. Did you mean `(component wizard.content)`? ('tt4/pods/components/wizard-builder/test-wizard/template.hbs' @ L3:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[[24,[\\\"currentPageComponent\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[1,[23,1,[\\\"buttons\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/test-wizard/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    gui: service(),\n    store: service(),\n\n    currentPage: 1,\n\n    currentPageComponent: computed('currentPage', function () {\n        return 'wizard-builder/vismanet-wizard/page' + get(this, 'currentPage');\n    }),\n\n    init() {\n        this._super();\n        if (get(this, 'gui.saveVismanetCode')) set(this, 'currentPage', 2);\n\n        this.checkNormalHoursSalarytypeIsOn();\n    },\n\n    checkNormalHoursSalarytypeIsOn() {\n        get(this, 'store')\n            .query('salarytype', { shortcut: 'hours_hourly' })\n            .then(this.turnOnNormalHoursSalaryTypeIfNotOn.bind(this));\n    },\n\n    turnOnNormalHoursSalaryTypeIfNotOn(rows) {\n        if (!get(rows, 'firstObject')) this.turnOnNormalHoursSalaryType();\n    },\n\n    turnOnNormalHoursSalaryType() {\n        get(this, 'store')\n            .createRecord('salarytype', {\n                control: 'work_hours;salarytype=$this',\n                inuse: true,\n                key: 'VT',\n                name: 'Tuntityö',\n                shortcut: 'hours_hourly',\n            })\n            .save();\n    },\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"ri5Z3KJY\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/Visma.net-Financials.svg\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.vismanet.welcome\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/vismanet-wizard/page1/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\nimport config from 'tt4/config/environment';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    gui: service(),\n    error: service(),\n    session: service(),\n    ajax: service(),\n\n    placeholder: 'this is ge number 2',\n\n    init() {\n        this._super();\n        this.partnerId = this.session.currentUser.partnerid\n        if (get(this, 'gui.saveVismanetCode')) {\n            this.signin(get(this, 'gui.saveVismanetCode'));\n            set(this, 'gui.saveVismanetCode', null);\n        } else this.gotoSignIn();\n    },\n\n    gotoSignIn() {\n        set(this, 'transtionToVismanet', true);\n\n        let params = ['scope=vismanet', 'redirectRoute=vismanet', 'partnerid=' + this.partnerId];\n\n        window.open(config.APP.VISMASSOURL + '?' + params.join('&'), '_system');\n    },\n\n    signin(credentials) {\n        const token = this.session.data.authenticated.access_token;\n\n        const data = {\n            credentials: credentials,\n            key: 'vismanet',\n        };\n\n        this.ajax\n            .request(config.APP.ONLY_CC_URL + '/saveCredentials', {\n                method: 'post',\n                headers: {\n                    Authorization: 'Bearer ' + token,\n                },\n                data: JSON.stringify(data),\n            })\n            .then(this.signedIn.bind(this), this.signinFailed.bind(this));\n    },\n\n    signedIn(resp) {\n        if (resp.error) {\n            set(this, 'errorMessage', get(this, 'error').toString(resp));\n            return;\n        }\n\n        set(this, 'done', true);\n    },\n\n    signinFailed(reason) {\n        set(this, 'errorMessage', get(this, 'error').toString(reason));\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"PxSMprOM\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.vismanet.loginDone\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[22,\\\"errorMessage\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"transtionToVismanet\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.vismanet.moveToVismanet\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.vismanet.signingIn\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/vismanet-wizard/page2/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nimport config from 'tt4/config/environment';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    gui: service(),\n    error: service(),\n    cc: service(),\n    session: service(),\n\n    capi_url: computed(function () {\n        return config.environment === 'development'\n            ? 'http://capi/'\n            : config.APP.COLLECTOR_API_URL + '/';\n    }),\n\n    init() {\n        this._super();\n        this.syncFromVismanet().then(this.syncReady.bind(this), this.syncFailed.bind(this));\n    },\n\n    syncFromVismanet() {\n        return get(this, 'cc').request('general_vismanet', {\n            headers: {\n                Authorization: 'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n            },\n            data: {\n                capi_url: get(this, 'capi_url'),\n            },\n        });\n    },\n\n    syncReady() {\n        set(this, 'done', true);\n    },\n\n    syncFailed(reason) {\n        set(this, 'errorMessage', get(this, 'error').toString(reason));\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"7up9PqSE\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\\n    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export-salary.vismanet.settings.signedin\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[22,\\\"errorMessage\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"wizard.vismanet.sync\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/vismanet-wizard/page3/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"lAAc4nCp\",\"block\":\"{\\\"symbols\\\":[\\\"wizard\\\"],\\\"statements\\\":[[4,\\\"wizard-builder/wizard\\\",null,[[\\\"pages\\\",\\\"header\\\",\\\"close\\\",\\\"currentPage\\\",\\\"pageChange\\\"],[3,\\\"Login to Visma.net\\\",[24,[\\\"close\\\"]],[24,[\\\"currentPage\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"currentPage\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[1,[23,1,[\\\"steps\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"centered-content\\\"]],\\\"expected `wizard.centered-content` to be a contextual component but found a string. Did you mean `(component wizard.centered-content)`? ('tt4/pods/components/wizard-builder/vismanet-wizard/template.hbs' @ L3:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[[24,[\\\"currentPageComponent\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[1,[23,1,[\\\"buttons\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/vismanet-wizard/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, setProperties, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { Promise } from 'rsvp';\nimport { A } from '@ember/array';\nimport config from '../../../../config/environment';\n\nexport default Component.extend({\n    ajax: service(),\n    admintool: service(),\n    error: service(),\n    session: service(),\n    store: service(),\n    cdn: service(),\n    router: service(),\n    collector: service('collector-service'),\n    ttapi: service(),\n\n    loading: false,\n    show: false,\n\n    errors: A(),\n\n    mandatoryFields: A(['password', 'company_name', 'phone']),\n\n    termsAndConditionsLink: computed(function () {\n        if (moment.locale() == 'fi') return config.termsAndConditions.fi;\n        if (moment.locale() == 'se' || moment.locale() == 'sv')\n            return config.termsAndConditions.se;\n        return config.termsAndConditions.en;\n    }),\n\n    init() {\n        this._super();\n        this.show = false;\n        this.validation_error = false;\n        //prefill inputs with whatever data we already have\n        const userPromise = this.store.query('user', {\n            id: get(this, 'session.currentUser.id'),\n            sideload: true,\n        });\n        const companyPromise = this.store.findAll('company_info');\n\n        Promise.all([companyPromise, userPromise]).then(this.prefillData.bind(this));\n    },\n\n    actions: {\n        handlePhoneValidation(isValid) {\n            if (isValid) {\n                set(this, 'phone_error', false);\n            } else {\n                set(this, 'phone_error', true);\n            }\n        },\n        saveData() {\n            if (get(this, 'phone_error') == true) {\n                return;\n            }\n            set(this, 'saving', true);\n\n            get(this, 'store')\n                .findAll('company_info')\n                .then(this.saveCompanyInfo.bind(this))\n                .catch(this._handleError.bind(this));\n\n            get(this, 'store')\n                .query('user', { id: get(this, 'session.currentUser.id'), sideload: true })\n                .then(this.saveUserInfo.bind(this))\n                .catch(this._handleError.bind(this));\n\n            set(this, 'saving', false);\n\n            // if mini-entry we need to ask for billing-information also\n            if (this.collector.testNeeds(['products.mini_entry'])) {\n                get(this, 'router').transitionTo({ queryParams: { wizard: 'billing' } });\n                this.close();\n            }\n            // Send some data to pub/sub (service-created-2)\n            this.sendToSns();\n\n            //Had to make it like this, so it works in mess-ages too\n            this.transitionToOnboarding();\n        },\n        valueUpdated(field, value) {\n            set(this, field, value);\n            this.validate(field);\n            set(this, 'phone_error', false); // reset phone error\n        },\n        checkPasswords() {\n            if (\n                (!get(this, 'password') || get(this, 'password').length < 8) &&\n                get(this, 'errors').indexOf('password_length') == -1\n            ) {\n                get(this, 'errors').pushObject('password_length');\n            } else if (\n                get(this, 'password') &&\n                get(this, 'password').length >= 8 &&\n                get(this, 'errors').indexOf('password_length') != -1\n            ) {\n                get(this, 'errors').removeObject('password_length');\n            }\n            this.notifyPropertyChange('errors');\n        },\n        validatePhone() {\n            if (get(this, 'phone_error') || get(this, 'phone_error') == undefined) {\n                set(this, 'phone_error', true);\n                get(this, 'errors').pushObject('phone');\n            } else {\n                get(this, 'errors').removeObject('phone');\n            }\n\n        },\n        validateAllAndSave() {\n            for (var field of get(this, 'mandatoryFields')) {\n                this.validate(field);\n            }\n            this.send('checkPasswords');\n            if (!get(this, 'phone') || get(this, 'phone') == '' || get(this, 'phone') == undefined) {\n                return\n            }\n            this.send('validatePhone');\n            if (get(this, 'errors').length == 0) {\n                this.send('saveData');\n            }\n        },\n    },\n\n    validate(field) {\n        if (get(this, 'mandatoryFields').indexOf(field) != -1) {\n            this.toggleError(field);\n        }\n        this.notifyPropertyChange('errors');\n    },\n    toggleError(field) {\n        if (\n            (!get(this, field) || get(this, field) == '') &&\n            get(this, 'errors').indexOf(field) == -1\n        ) {\n            get(this, 'errors').pushObject(field);\n        } else if (get(this, field) && get(this, 'errors').indexOf(field) != -1) {\n            get(this, 'errors').removeObject(field);\n        }\n    },\n\n    prefillData(data) {\n        const company = data[0];\n        const user = data[1];\n\n        if (get(company, 'firstObject.company_name') === 'empty')\n            set(company, 'firstObject.company_name', null);\n        if (get(user, 'firstObject.phone') === 'empty') set(user, 'firstObject.phone', null);\n\n        set(this, 'companyName', get(company, 'firstObject.company_name'));\n        set(this, 'company_name', get(company, 'firstObject.company_name'));\n\n        set(this, 'firstname', get(user, 'firstObject.firstname'));\n        set(this, 'lastname', get(user, 'firstObject.lastname'));\n        set(this, 'phone', get(user, 'firstObject.phone'));\n\n        set(this, 'show', true);\n    },\n\n    saveCompanyInfo(cinfoObj) {\n        let cinfo = get(cinfoObj, 'firstObject');\n        set(cinfo, 'company_name', get(this, 'company_name'));\n        set(cinfo, 'validation', 'off');\n\n        if (get(this, 'Collector').testNeedsOne('employer')) {\n            get(this, 'store')\n                .findAll('employer')\n                .then(this._makeFirstEmployer.bind(this))\n                .catch(this._handleError.bind(this));\n        }\n        cinfo.save().then(this.saveToAt2());\n    },\n    saveUserInfo(userInfoObj) {\n        if (get(this, 'password') != get(this, 'password_again')) {\n            set(this, 'password_error', true);\n        }\n        let userInfo = get(userInfoObj, 'firstObject');\n        set(userInfo, 'firstname', get(this, 'firstname'));\n        set(userInfo, 'lastname', get(this, 'lastname'));\n        set(userInfo, 'phone', get(this, 'phone'));\n        set(userInfo, 'password', get(this, 'password'));\n        set(userInfo, 'validation', 'off');\n        userInfo.save();\n    },\n    _returnFirstEmployer(data) {\n        if (data.firstObject && data.firstObject.company) {\n            set(this, 'companyName', data.firstObject.company);\n        } else {\n            set(this, 'companyName', null);\n        }\n        set(this, 'loading', false);\n    },\n    _rejectEmployerData(reason) {\n        get(this, 'error').notify(reason);\n        set(this, 'loading', false);\n    },\n    _makeFirstEmployer(emp) {\n        let first_emp = get(emp, 'firstObject');\n        setProperties(first_emp, {\n            name: get(this, 'companyName'),\n            validation: 'off',\n        });\n        if (this.ytj_info) {\n            setProperties(first_emp, {\n                emp_address: this.ytj_info.company_address,\n                emp_zip: this.ytj_info.company_zip,\n                emp_city: this.ytj_info.company_city,\n            });\n        }\n        first_emp.save();\n    },\n    _handleError(error) {\n        get(this, 'error').notify(error);\n    },\n    saveToAt2() {\n        new Promise((resolve, reject) => {\n            get(this, 'admintool')\n                .ajax({\n                    url: 'set_own_info',\n                    headers: {\n                        Authorization:\n                            'Bearer ' + get(this, 'session.session.authenticated.access_token'),\n                    },\n                    data: {\n                        name: get(this, 'companyName'),\n                    },\n                    type: 'POST',\n                })\n                .then(this._resolveData.bind(this, resolve))\n                .catch(this._rejectData.bind(this, reject));\n        });\n    },\n    _resolveData(resolve, data) {\n        resolve(data);\n    },\n    _rejectData(reject, reason) {\n        reject(reason);\n    },\n    sendToSns() {\n        const data = {\n            company_name: this.company_name,\n            firstname: this.firstname,\n            lastname: this.lastname,\n            phone: this.phone,\n            email: this.session.currentUser.email,\n            partnerid: this.session.currentUser.partnerid,\n        };\n        this.ttapi.request('/sendSnsServiceCreated2Data', {\n            method: 'post',\n            data,\n        });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"OEnzMAMg\",\"block\":\"{\\\"symbols\\\":[\\\"wizard\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"show\\\"]]],null,{\\\"statements\\\":[[4,\\\"wizard-builder/wizard\\\",null,[[\\\"header\\\",\\\"close\\\",\\\"hideClose\\\"],[[28,\\\"t\\\",[\\\"general.welcome-wizard\\\"],null],[24,[\\\"close\\\"]],true]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"content-header\\\"]],\\\"expected `wizard.content-header` to be a contextual component but found a string. Did you mean `(component wizard.content-header)`? ('tt4/pods/components/wizard-builder/welcome-wizard/template.hbs' @ L3:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.welcome-wizard.header\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"centered-content\\\"]],\\\"expected `wizard.centered-content` to be a contextual component but found a string. Did you mean `(component wizard.centered-content)`? ('tt4/pods/components/wizard-builder/welcome-wizard/template.hbs' @ L7:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"left-col\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"rounded-box\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.company_info\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"input-fields\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"welcome-wizard-label\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"company_info.company_name\\\"],null],false],[0,\\\"*\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"welcome-wizard-field \\\",[28,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"company_name\\\",[24,[\\\"errors\\\"]]],null],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"company_name\\\",[24,[\\\"errors\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"has-error-icon glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"company_name\\\",[24,[\\\"errors\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"welcome_wizard.validation_error.company_name\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"type\\\",\\\"keyUp\\\"],[\\\"form-control add-fields\\\",[24,[\\\"companyName\\\"]],\\\"text\\\",[28,\\\"action\\\",[[23,0,[]],\\\"valueUpdated\\\",\\\"company_name\\\",[24,[\\\"companyName\\\"]]],null]]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"rounded-box\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.own_account\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"input-fields\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"welcome-wizard-label\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"user.firstname\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"welcome-wizard-field\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\",\\\"keyUp\\\"],[\\\"form-control add-fields\\\",\\\"text\\\",[24,[\\\"firstname\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"valueUpdated\\\",\\\"firstname\\\",[24,[\\\"firstname\\\"]]],null]]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"welcome-wizard-label\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"user.lastname\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"welcome-wizard-field\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\",\\\"keyUp\\\"],[\\\"form-control add-fields\\\",\\\"text\\\",[24,[\\\"lastname\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"valueUpdated\\\",\\\"lastname\\\",[24,[\\\"lastname\\\"]]],null]]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"relative-position\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"welcome-wizard-label\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"register.phone\\\"],null],false],[0,\\\"*\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"welcome-wizard-field\\\"],[8],[0,\\\"\\\\n                                \\\"],[5,\\\"components/phone-number\\\",[],[[\\\"@name\\\",\\\"@value\\\",\\\"@onValidate\\\",\\\"@onKeyUp\\\",\\\"@canBeEmpty\\\"],[[22,\\\"phone\\\"],[23,0,[\\\"phone\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"handlePhoneValidation\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"validatePhone\\\"],null],false]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"phone_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"welcome_wizard.validation_error.phone\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"welcome-wizard-label\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"report.user.password\\\"],null],false],[0,\\\"*\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"welcome-wizard-field \\\",[28,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"password_length\\\",[24,[\\\"errors\\\"]]],null],\\\"has-error\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"password_length\\\",[24,[\\\"errors\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"password_length\\\",[24,[\\\"errors\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"t\\\",[\\\"welcome_wizard.validation_error.password_length\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"type\\\",\\\"keyUp\\\",\\\"autocomplete\\\"],[\\\"form-control add-fields\\\",[24,[\\\"password\\\"]],\\\"password\\\",[28,\\\"action\\\",[[23,0,[]],\\\"checkPasswords\\\"],null],\\\"new-password\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"password_length\\\",[24,[\\\"errors\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"has-error-icon glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"right-col\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"du-de\\\",null,[[\\\"number\\\",\\\"custom_size\\\",\\\"noTransforming\\\",\\\"noScaling\\\"],[19,200,true,true]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"tos-item\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.tos_text\\\"],null],false],[0,\\\" \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[22,\\\"termsAndConditionsLink\\\"]],[10,\\\"target\\\",\\\"_blank\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.tos_link\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"bottom\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"buttons\\\"]],\\\"expected `wizard.buttons` to be a contextual component but found a string. Did you mean `(component wizard.buttons)`? ('tt4/pods/components/wizard-builder/welcome-wizard/template.hbs' @ L113:C18) \\\"],null]],[[\\\"onlySave\\\",\\\"save\\\"],[true,[28,\\\"action\\\",[[23,0,[]],\\\"validateAllAndSave\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/welcome-wizard/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    analytics: service(),\n\n    arrowRight: '⮞',\n    arrowLeft: '⮜',\n\n    hidePrevious: computed('currentPage', function () {\n        return get(this, 'currentPage') <= 1;\n    }),\n\n    lastPage: computed('currentPage', 'pages', function () {\n        return get(this, 'currentPage') === get(this, 'pages');\n    }),\n\n    actions: {\n        next() {\n            get(this, 'analytics').trackEvent({ category: 'Wizard', action: 'next' });\n            get(this, 'pageChange')(get(this, 'currentPage') + 1);\n        },\n\n        previous() {\n            get(this, 'analytics').trackEvent({ category: 'Wizard', action: 'previous' });\n            get(this, 'pageChange')(get(this, 'currentPage') - 1);\n        },\n\n        done() {\n            if (get(this, 'done')) get(this, 'done')();\n            get(this, 'close')();\n        },\n        save() {\n            this.save();\n        },\n        close() {\n            get(this, 'close')();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"dBYHvg1S\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"onlySave\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg done-button\\\"],[12,\\\"disabled\\\",[22,\\\"disabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-lg btn-danger close-wizard-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.exit\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"lastPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-primary btn-lg done-button pull-right \\\",[28,\\\"if\\\",[[24,[\\\"hideDone\\\"]],\\\"invisible\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"done\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.done\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"hideNext\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg next-button pull-right\\\"],[12,\\\"disabled\\\",[22,\\\"isDisabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"next\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.next\\\"],null],false],[0,\\\" \\\"],[1,[22,\\\"arrowRight\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[4,\\\"unless\\\",[[24,[\\\"hidePrevious\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg previous-button pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"previous\\\"]],[8],[1,[22,\\\"arrowLeft\\\"],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"general.previous\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/wizard/buttons/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"SE/ONmSG\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n    \\\"],[14,1],[0,\\\"    \\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/wizard/centered-content/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    analytics: service(),\n    currentPage: 1,\n\n    actions: {\n        pageChange(page) {\n            get(this, 'analytics').trackEvent({ category: 'Wizard', action: 'pageChange' });\n\n            set(this, 'currentPage', page);\n            if (get(this, 'pageChange')) get(this, 'pageChange')(page);\n        },\n    },\n});\n","import Component from '@ember/component';\n\nexport default Component.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"PHsYBaya\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content-header\\\"],[8],[0,\\\"\\\\n    \\\"],[14,1],[0,\\\"    \\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/wizard/content-header/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({\n    tagName: 'div',\n    classNames: ['content'],\n});\n","export default Ember.HTMLBars.template({\"id\":\"RhrMhZkW\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"    \\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/wizard/content/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\nimport { assert } from '@ember/debug';\n\nexport default Component.extend({\n    current: 0,\n\n    steps: computed(function () {\n        var list = [];\n        let pages = Array.isArray(get(this, 'pageNames'))\n            ? get(this, 'pageNames').length\n            : get(this, 'pages');\n        assert('Wizard must have either pages(number) or pageNames(array)', pages != null);\n        for (var i = 1; i <= pages; i++) {\n            list.push(i);\n        }\n        return list;\n    }),\n\n    translatedPageNames: computed('pageNames', function () {\n        if (get(this, 'pageNames')) {\n            let pages = get(this, 'pageNames').map((name) => {\n                return 'wizard.page.' + name;\n            });\n            return pages;\n        } else {\n            return get(this, 'steps');\n        }\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"/2RmzLtF\",\"block\":\"{\\\"symbols\\\":[\\\"name\\\",\\\"step\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"stepwizard\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"stepwizard-row setup-panel\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"steps\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"stepwizard-step\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"useSubmenus\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons submenu-steps\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"currentPage\\\"]],[28,\\\"add\\\",[[23,2,[]],1],null]],null],\\\"active\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"isDisabled\\\"]],\\\"disabled\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"pageChange\\\"]],[28,\\\"add\\\",[[23,2,[]],1],null]],null]]],[8],[1,[28,\\\"t\\\",[[28,\\\"get\\\",[[24,[\\\"translatedPageNames\\\"]],[23,2,[]]],null]],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-circle \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"currentPage\\\"]],[28,\\\"add\\\",[[23,2,[]],1],null]],null],\\\"btn-primary\\\",\\\"btn-default\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"pageChange\\\"]],[28,\\\"add\\\",[[23,2,[]],1],null]],null]]],[8],[1,[28,\\\"add\\\",[[23,2,[]],1],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"nonames\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"translatedPageNames\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"t\\\",[[28,\\\"get\\\",[[24,[\\\"translatedPageNames\\\"]],[23,2,[]]],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"t\\\",[\\\"general.page\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"add\\\",[[23,2,[]],1],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[4,\\\"if\\\",[[23,0,[\\\"infoText\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info step-wizard-info-button\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\",\\\"event\\\",\\\"side\\\"],[[23,0,[\\\"infoText\\\"]],\\\"click\\\",\\\"left\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/wizard/steps/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"sbFyHloR\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"nice-modal\\\",null,[[\\\"narrowBottom\\\",\\\"header\\\",\\\"hideClose\\\",\\\"close\\\",\\\"darkMode\\\"],[true,[24,[\\\"header\\\"]],[24,[\\\"hideClose\\\"]],[24,[\\\"close\\\"]],[24,[\\\"darkMode\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[14,1,[[28,\\\"hash\\\",null,[[\\\"steps\\\",\\\"content-header\\\",\\\"content\\\",\\\"centered-content\\\",\\\"buttons\\\"],[[28,\\\"component\\\",[\\\"wizard-builder/wizard/steps\\\"],[[\\\"pages\\\",\\\"currentPage\\\",\\\"pageChange\\\"],[[24,[\\\"pages\\\"]],[24,[\\\"currentPage\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"pageChange\\\"],null]]]],[28,\\\"component\\\",[\\\"wizard-builder/wizard/content-header\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/wizard/content\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/wizard/centered-content\\\"],null],[28,\\\"component\\\",[\\\"wizard-builder/wizard/buttons\\\"],[[\\\"pages\\\",\\\"close\\\",\\\"currentPage\\\",\\\"pageChange\\\"],[[24,[\\\"pages\\\"]],[24,[\\\"close\\\"]],[24,[\\\"currentPage\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"pageChange\\\"],null]]]]]]]]],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wizard-builder/wizard/template.hbs\"}});","import Component from '@ember/component';\nimport config from 'tt4/config/environment';\nimport { inject as service } from '@ember/service';\nimport { get, computed } from '@ember/object';\nimport moment from 'moment';\nimport collector from 'tt4/classes/collector';\nimport getScript from 'tt4/utils/getScript';\n\nexport default Component.extend({\n    session: service(),\n    intl: service(),\n    initapp: service(),\n    flags: service(),\n\n    testMode: false,\n\n    enabled: computed(function () {\n        return (\n            this.flags.test('show-survey') &&\n            get(this, 'initapp.appReady') &&\n            !get(this, 'session.session.content.authenticated.scope')\n        );\n    }),\n    init() {\n        this._super(...arguments);\n        if (this.flags.test('show-survey')) {\n            const initapp = get(this, 'initapp');\n            if (get(initapp, 'appReady')) {\n                this.initWootric();\n            } else {\n                initapp.on('appReady', () => {\n                    this.initWootric();\n                });\n            }\n        }\n    },\n\n    async initWootric() {\n        if (!get(this, 'session.session.content.authenticated.scope')) {\n            if (config.environment === 'development' || get(this, 'testMode') === true) {\n                window.wootric_survey_immediately = true;\n                window.wootric_no_surveyed_cookie = true;\n            }\n            const user = get(this, 'session.currentUser');\n            const intl = get(this, 'intl');\n\n            // browser info\n            const { UAParser } = window;\n            const parser = new UAParser();\n            const bo = parser.setUA(navigator.userAgent).getResult();\n\n            // eg. 'Firefox 68.0 / Gecko 68.0 / Windows 10'\n            const browserString = `${bo.browser.name} ${bo.browser.version} / ${bo.engine.name} ${bo.engine.version} / ${bo.os.name} ${bo.os.version}`;\n\n            window.wootricSettings = {\n                email: get(user, 'email'),\n                created_at: moment(get(user, 'row_info.created')).format('X'),\n                language: get(intl, 'primaryLocale'),\n                dashboard_language: get(intl, 'primaryLocale'),\n                modal_footprint: 'compact',\n                disclaimer: {\n                    text: intl.t('wootric.disclamer.text').toString(),\n                    link: 'https://www.visma.com/privacy/customer-feedback/',\n                    link_word: intl.t('wootric.disclamer.link_word').toString(),\n                },\n                properties: {\n                    role: get(user, 'userlevel'),\n                    product: config.brand == 'otta' ? 'Otta' : 'Movenium',\n                    country: get(user, 'company_info.country')\n                        ? get(user, 'company_info.country').toUpperCase()\n                        : 'N/A',\n                    customer: get(user, 'company'),\n                    vatin: get(user, 'company_info.company_vatin'),\n                    partnerid: get(user, 'partnerid'),\n                    modules: JSON.stringify(collector.products),\n                    platform: typeof cordova !== 'undefined' ? device.platform : browserString, // eslint-disable-line\n                },\n            };\n\n            if (localStorage.getItem('survey') !== null) {\n                this.surveyType = localStorage.getItem('survey');\n                localStorage.removeItem('survey');\n            }\n\n            if (this.WootricSurvey) {\n                this.run(this.surveyType);\n            } else {\n                await getScript('https://cdn.wootric.com/wootric-sdk.js');\n                this.WootricSurvey = WootricSurvey;\n                this.run(this.surveyType);\n            }\n        }\n    },\n\n    run(type = 'NPS') {\n        const intl = this.intl;\n        const brand = config.brand;\n        WootricSurvey.stop();\n        if (type === 'NPS') {\n            window.wootricSettings.account_token = 'NPS-EU-bca074ee';\n            window.wootricSettings.wootric_recommend_target = intl\n                .t('wootric.question.target')\n                .toString();\n            (window.wootricSettings.product_name =\n                brand == 'otta'\n                    ? intl.t('wootric.otta.product_name').toString()\n                    : intl.t('wootric.default.product_name').toString()),\n                (window.customMessages = {\n                    followup_questions_list: {\n                        detractor_question: intl\n                            .t(`wootric.${brand}.followup.detractor`)\n                            .toString(),\n                        passive_question: intl.t(`wootric.${brand}.followup.passive`).toString(),\n                        promoter_question: intl.t(`wootric.${brand}.followup.promoter`).toString(),\n                    },\n                    placeholder_texts_list: {\n                        detractor_text: intl\n                            .t(`wootric.${brand}.question.placeholder.detractor`)\n                            .toString(),\n                        passive_text: intl\n                            .t(`wootric.${brand}.question.placeholder.passive`)\n                            .toString(),\n                        promoter_text: intl\n                            .t(`wootric.${brand}.question.placeholder.promoter`)\n                            .toString(),\n                    },\n                });\n        } else if (type === 'wizard') {\n            window.wootricSettings.account_token = 'NPS-EU-b52c0bfb';\n            window.wootricSettings.event_name = 'wizard';\n            window.wootricSettings.product_name = null;\n        }\n        WootricSurvey.run(window.wootricSettings);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"+R/s7eCa\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/wootric-survey/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed, get } from '@ember/object';\nimport { assert } from '@ember/debug';\nimport { typeOf } from '@ember/utils';\n\nexport default Component.extend({\n    intl: service(),\n    store: service(),\n    gui: service(),\n\n    year: computed('date', function () {\n        const date = this.date.split('_')[0];\n        return moment(date).year();\n    }),\n\n    months: computed('workdayDays', function () {\n        if (!this.workdayDays) return;\n        let months = [];\n        const midweekHolidayPayOn = this.Collector.testNeedsOne('products.midweek_holiday_pay');\n        for (let i = 1; i < 13; i++) {\n            const number = i;\n\n            const month = moment(i, 'MM').year(this.year).startOf('month');\n            const minDate = month.toDate();\n            // \"center of the month\" date is formed by adding at least 1 day to start of month\n            // to make sure we're inside the correct month regardless of timezones\n            const center = month.add(1, 'day').toDate();\n            const maxDate = month.endOf('month').toDate();\n\n            const filteredDays = this.workdayDays.filter(\n                (day) => moment(day.date).month() + 1 === i,\n            );\n            let days = {};\n            let specialDays = [];\n\n            filteredDays.forEach((day) => {\n                let dayObj = {\n                    minutes: get(day, 'minutes'),\n                    own: get(day, 'own'),\n                    absence_minutes:\n                        day.absence_minutes == null ? day.minutes : day.absence_minutes,\n                };\n                if (midweekHolidayPayOn)\n                    dayObj['midweek_holiday_pay'] = get(day, 'midweek_holiday_pay');\n                days[get(day, 'date')] = dayObj;\n                if (day.minutes == 0) specialDays.push(day.date);\n            });\n            months.push({ number, center, days, minDate, maxDate, specialDays });\n        }\n\n        return months;\n    }),\n\n    init() {\n        this._super();\n        assert(\n            'Workday-days component needs workdays (array or instance)! Give me @workdayDays={{this.workdayDays}}',\n            typeOf(this.workdayDays) === 'array' || typeOf(this.workdayDays) === 'instance',\n        );\n    },\n\n    actions: {\n        selectDay(date) {\n            const formattedDate = moment(date).format('YYYY-MM-DD');\n\n            const dayRule = this.workdayDays.find((rule) => {\n                return rule.date === formattedDate;\n            });\n\n            this.showDayRule(formattedDate, dayRule);\n        },\n\n        changeYear(amount) {\n            this.changeYear(this.year + amount);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"p+1/IylK\",\"block\":\"{\\\"symbols\\\":[\\\"month\\\",\\\"calendar\\\",\\\"day\\\",\\\"day\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workdayDays-nav\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"workday_calendar.day_rules\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xl workdaynav-control\\\"],[12,\\\"name\\\",\\\"workdayDays-nav-last-year\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeYear\\\",-1]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"if\\\",[[23,0,[\\\"gui\\\",\\\"isBelowMd\\\"]],\\\"<<\\\",[28,\\\"t\\\",[\\\"workday_calendar.nav.previous\\\"],null]],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[8],[1,[23,0,[\\\"year\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xl workdaynav-control\\\"],[12,\\\"name\\\",\\\"workdayDays-nav-next-year\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeYear\\\",1]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"if\\\",[[23,0,[\\\"gui\\\",\\\"isBelowMd\\\"]],\\\">>\\\",[28,\\\"t\\\",[\\\"workday_calendar.nav.next\\\"],null]],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-container\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"months\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[5,\\\"power-calendar\\\",[],[[\\\"@locale\\\",\\\"@center\\\",\\\"@selected\\\",\\\"@onSelect\\\"],[[23,0,[\\\"intl\\\",\\\"primaryLocale\\\"]],[23,1,[\\\"center\\\"]],[22,\\\"selected\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"selectDay\\\"],[[\\\"value\\\"],[\\\"date\\\"]]]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"calendar-month text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"moment-format\\\",[[23,2,[\\\"center\\\"]],\\\"MMMM\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"days\\\"]],[],[[\\\"@startOfWeek\\\",\\\"@minDate\\\",\\\"@maxDate\\\"],[1,[23,1,[\\\"minDate\\\"]],[23,1,[\\\"maxDate\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"isCurrentMonth\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"day-wrapper\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"day-number-row\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"strong\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"is-sunday\\\",[[23,3,[\\\"date\\\"]]],null],[28,\\\"includes\\\",[[23,3,[\\\"id\\\"]],[23,1,[\\\"specialDays\\\"]]],null]],null],\\\"special-day\\\"],null],\\\" \\\"]]],[8],[1,[23,3,[\\\"number\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.midweek_holiday_pay\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"get\\\",[[28,\\\"get\\\",[[23,1,[\\\"days\\\"]],[23,3,[\\\"id\\\"]]],null],\\\"midweek_holiday_pay\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"day_shorthand\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday_calendar.midweek_holiday_shorthand\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"let\\\",[[28,\\\"get\\\",[[23,1,[\\\"days\\\"]],[23,3,[\\\"id\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,4,[\\\"own\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"day-minutes\\\"],[8],[1,[28,\\\"format-minutes\\\",[[23,4,[\\\"minutes\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.absences\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"day-minutes\\\"],[8],[1,[28,\\\"format-minutes\\\",[[23,4,[\\\"absence_minutes\\\"]],\\\"Vacation\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/workday-days/template.hbs\"}});","import Component from '@ember/component';\nimport { set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    router: service(),\n    store: service(),\n    notifications: service(),\n    intl: service(),\n    analytics: service(),\n    tagName: '',\n    disableAdding: false,\n\n    defaults: computed('form', 'day', function () {\n        let params = {};\n        if (this.form == 'abcense') {\n            params.startdate = this.day;\n            params.enddate = this.day;\n            params.dayamount = 1;\n        } else {\n            params.date = this.day;\n        }\n        if (this.user) {\n            params.user = this.store.peekRecord('user', this.user);\n        }\n\n        return params;\n    }),\n\n    init() {\n        this._super(...arguments);\n        if (\n            this.form === 'worktime' &&\n            (!this.Collector.canAddWorktime(this.day) ||\n                this.Collector.testNeeds(['products.timetracker_clockcard', 'userlevel=1?']))\n        ) {\n            set(this, 'disableAdding', true);\n        }\n    },\n\n    actions: {\n        notifySaved() {\n            this.updateData();\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n            if (this.rowAdded) this.rowAdded();\n        },\n        addClicked() {\n            // set worktimeAddingMethod of analytics service to 'workday-summary'\n            this.analytics.customData = { category: 'workday-summary' };\n            set(this, 'showAdd', true);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"7k1roCAD\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"tr\\\",false],[12,\\\"class\\\",[28,\\\"if\\\",[[23,0,[\\\"disableAdding\\\"]],\\\"disabled\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"addClicked\\\"]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"popup-td\\\"],[8],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"add-button\\\"],[11,\\\"disabled\\\",[28,\\\"if\\\",[[23,0,[\\\"disableAdding\\\"]],true,false],null]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath row-add\\\"],[8],[9],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"disableAdding\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"td\\\",true],[10,\\\"colspan\\\",\\\"2\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"calendar.add.error.\\\",[23,0,[\\\"form\\\"]]],null]],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"popup-td\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"header.path.add.\\\",[23,0,[\\\"form\\\"]]],null]],null],false],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"popup-td\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAdd\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/form-modal\\\",null,[[\\\"form\\\",\\\"defaults\\\",\\\"showSaved\\\",\\\"rowAdded\\\",\\\"close\\\"],[[24,[\\\"form\\\"]],[24,[\\\"defaults\\\"]],false,[28,\\\"action\\\",[[23,0,[]],\\\"notifySaved\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAdd\\\"]]],null],false],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/workday-summary/add-component/template.hbs\"}});","import Component from '@ember/component';\nimport EmberObject, { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { Promise as EmberPromise } from 'rsvp';\nimport { isPresent } from '@ember/utils';\nimport { assert } from '@ember/debug';\n\n/*\n{{#workday-summary user=user day=day date=date addForms=forms as |table|}}\n    {{table.edit}}\n    {{table.add}}\n{{/workday-summary}}\n*/\n\nexport default Component.extend({\n    store: service(),\n    error: service(),\n    Collector: service('collector-service'),\n    ttapi: service(),\n    session: service(),\n\n    needsForForms: EmberObject.create({\n        worktime: [\n            'worktime',\n            'worktime@add',\n            '!products.timetracker_clockcard||!userlevel=1?',\n            'modulecontrol.worktimes',\n        ],\n        abcense: ['abcense', 'abcense@add', 'worktime', 'modulecontrol.worktimes'],\n    }),\n\n    permittedAddForms: computed('addForms', function () {\n        if (!this.addForms) return [];\n        return this.addForms.filter((form) => this.Collector.testNeeds(this.needsForForms[form]));\n    }),\n\n    selectedDayIsAllowedForCopy: computed('day', 'popupData', async function () {\n        const data = await this.popupData;\n        let selectedDayIsRestrictedForCopy = false;\n        if (\n            !this.Collector.canAddWorktime(this.day) ||\n            this.Collector.testNeeds(['products.timetracker_clockcard', 'userlevel=1?'])\n        ) {\n            selectedDayIsRestrictedForCopy = true;\n        }\n        return data.length === 0 && !selectedDayIsRestrictedForCopy;\n    }),\n\n    popupData: computed(function () {\n        let wtparams = {\n            date: get(this, 'day'),\n            user: get(this, 'user'),\n            order: 'starttime,endtime',\n            sideload: true,\n        };\n\n        let startdate = get(this, 'date').split('_')[0];\n        let enddate = get(this, 'date').split('_')[1];\n\n        let abparams = {\n            startdate: startdate,\n            enddate: enddate,\n            order: 'starttime,endtime',\n            user: get(this, 'user'),\n            sideload: ['abcensetype.name'],\n        };\n\n        let promises = [];\n\n        if (get(this, 'Collector').testNeedsOne('worktime')) {\n            promises.push(\n                new EmberPromise((resolve, reject) => {\n                    get(this, 'store')\n                        .query('worktime', wtparams)\n                        .then(this._resolveData.bind(this, resolve))\n                        .catch(this._rejectData.bind(this, reject));\n                }),\n            );\n        }\n        if (get(this, 'Collector').testNeedsOne('abcense')) {\n            promises.push(\n                new EmberPromise((resolve, reject) => {\n                    get(this, 'ttapi')\n                        ._get('/absence/split', abparams)\n                        .then(this._resolveData.bind(this, resolve))\n                        .catch(this._rejectData.bind(this, reject));\n                }),\n            );\n        }\n        return EmberPromise.all(promises)\n            .then(this._returnData.bind(this))\n            .catch(this._notifyError.bind(this));\n    }),\n\n    didReceiveAttrs: function () {\n        assert(\"'day' must be given to workday-summary-comp\", get(this, 'day'));\n    },\n\n    actions: {\n        updateData() {\n            this.notifyPropertyChange('popupData');\n        },\n\n        rowAdded() {\n            if (this.close && this.autoclose) this.close();\n        },\n    },\n\n    _resolveData(resolve, data) {\n        resolve(data);\n    },\n    _rejectData(reject, reason) {\n        reject(reason);\n    },\n    _returnData(data) {\n        let arr = [];\n        let worktimes = data[0];\n        let absences = data[1];\n\n        if (isPresent(worktimes)) {\n            worktimes.forEach((item) => {\n                arr.push(item);\n            });\n        }\n        if (isPresent(absences)) {\n            absences.filterBy('date', get(this, 'day')).forEach((item) => {\n                arr.push(item);\n            });\n        }\n        return arr;\n    },\n    _notifyError(reason) {\n        get(this, 'error').notify(reason);\n    },\n});\n","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\nimport moment from 'moment';\n\nexport default class CopyComponent extends Component {\n    @tracked showAdd;\n    @tracked record;\n    @tracked canCopy;\n    @tracked showCopy;\n\n    @service router;\n    @service store;\n    @service notifications;\n    @service('collector-service') collector;\n    @service intl;\n\n    newestWorktime = null;\n\n    constructor() {\n        super(...arguments);\n        this.findPreviousWorktime();\n    }\n\n    /**\n     * first we check user has rights to add worktime to this day\n     * then we try to find last worktime with peekAll so we could so the copying button sychronically\n     * and the last resort is to fetch the previous worktime from capi\n     */\n    async findPreviousWorktime() {\n        if (!this.collector.testNeeds(['worktime'])) return; // disable if no worktime form found\n        if (!this.collector.canAddWorktime(this.args.day)) return; // disable if user cannot add worktime for this day\n        if (this.collector.testNeeds(['products.timetracker_clockcard', 'userlevel=1?'])) return; // disable if user has clockcard in use\n\n        this.showCopy = true;\n\n        const worktimes = this.store.peekAll('worktime');\n        const ownSavedWorktimes = worktimes.filter(\n            (worktime) => worktime.user.id === this.args.user && !worktime.isNew,\n        );\n\n        ownSavedWorktimes.forEach((worktime) => {\n            if (worktime.date > this.args.day) return; // skip newer worktimes than current day\n            if (\n                this.newestWorktime &&\n                (this.newestWorktime.date > worktime.date ||\n                    this.newestWorktime.starttime > worktime.starttime)\n            )\n                return; // newestWorktime already is newer\n            this.newestWorktime = worktime;\n        });\n\n        // if newestWorktime hasn't been found with peekAll we try to fetch it from capi\n        if (!this.newestWorktime) {\n            const worktimesArray = await this.store.query('worktime', {\n                user: this.user,\n                date:\n                    moment(this.args.day).subtract(14, 'days').format('YYYY-MM-DD') +\n                    '_' +\n                    moment(this.args.day).format('YYYY-MM-DD'),\n                order: 'date-,starttime-',\n                limit: 1,\n            });\n            if (worktimesArray.length > 0) this.newestWorktime = worktimesArray.firstObject;\n        }\n\n        if (this.newestWorktime) this.canCopy = true;\n    }\n\n    @action\n    notifySaved() {\n        this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n        this.args.rowAdded();\n    }\n\n    @action\n    copy() {\n        this.record = this.collector.copyRecord(this.newestWorktime);\n        this.record.date = this.args.day;\n        this.showAdd = true;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"yPsWGn87\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"showCopy\\\"]]],null,{\\\"statements\\\":[[7,\\\"tr\\\",false],[12,\\\"class\\\",[28,\\\"if\\\",[[23,0,[\\\"canCopy\\\"]],\\\"\\\",\\\"disabled\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"copy\\\"]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"popup-td\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"40\\\"],[10,\\\"height\\\",\\\"40\\\"],[10,\\\"viewBox\\\",\\\"0 0 50 50\\\"],[11,\\\"class\\\",[28,\\\"if\\\",[[23,0,[\\\"canCopy\\\"]],\\\"copy-button\\\",\\\"copy-button-disabled\\\"],null]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"25\\\"],[10,\\\"cy\\\",\\\"25\\\"],[10,\\\"r\\\",\\\"25\\\"],[10,\\\"opacity\\\",\\\"0.996\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M3.771,0A3.776,3.776,0,0,0,0,3.771V16.027A3.776,3.776,0,0,0,3.771,19.8H8.485V17.913H3.771a1.886,1.886,0,0,1-1.886-1.886V3.771A1.886,1.886,0,0,1,3.771,1.886H7.807c.68.173.678.99.678,1.827V5.657a.955.955,0,0,0,.236.619,3.776,3.776,0,0,1,3.535-2.5h.059c-.167-.164-.334-.334-.5-.5-.234-.232-.481-.448-.707-.678C9.493.946,8.544,0,7.542,0ZM13.2,4.714A3.776,3.776,0,0,0,9.428,8.485V20.741A3.776,3.776,0,0,0,13.2,24.512h7.542a3.776,3.776,0,0,0,3.771-3.771V12.256c0-1-.917-1.952-2.563-3.565-.23-.226-.475-.473-.707-.707s-.481-.448-.707-.678c-1.614-1.647-2.563-2.593-3.565-2.593Zm0,1.886h4.036c.68.173.678.99.678,1.827v1.944a.944.944,0,0,0,.943.943h1.886c.941,0,1.886,0,1.886.943v8.485a1.886,1.886,0,0,1-1.886,1.886H13.2a1.886,1.886,0,0,1-1.886-1.886V8.485A1.886,1.886,0,0,1,13.2,6.6Zm-9.428.943V9.428H8.485V7.542Zm0,2.828v1.886H8.485V10.371ZM13.2,12.256v1.886h7.542V12.256ZM3.771,13.2v1.886H8.485V13.2ZM13.2,15.084V16.97h5.657V15.084Zm0,2.828V19.8h7.542V17.913Z\\\"],[10,\\\"transform\\\",\\\"translate(12.287 12.208)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"opacity\\\",\\\"0.996\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"td\\\",true],[11,\\\"class\\\",[29,[\\\"popup-td \\\",[28,\\\"if\\\",[[23,0,[\\\"canCopy\\\"]],\\\"\\\",\\\"disabled\\\"],null]]]],[8],[1,[28,\\\"t\\\",[\\\"dashboard.calendar.copypreviousworktime\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"popup-td\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAdd\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/form-modal\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"showSaved\\\",\\\"rowAdded\\\",\\\"close\\\"],[\\\"worktime\\\",[24,[\\\"record\\\"]],false,[28,\\\"action\\\",[[23,0,[]],\\\"notifySaved\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAdd\\\"]]],null],false],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/workday-summary/copy-component/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class CopyPreviousDayComponent extends Component {\n    @tracked showCopyPreviousDayModal;\n    @tracked showCopyPreviousDayFinalModal;\n    @tracked record;\n    @tracked canCopy;\n    @tracked showCopy;\n\n    @tracked date;\n    @tracked worktimes;\n\n    @tracked selectedDay = null;\n    @tracked isActive = false;\n\n    @service router;\n    @service store;\n    @service notifications;\n    @service intl;\n    @service analytics;\n\n    constructor() {\n        super(...arguments);\n        this.selectedDay = this.args.date;\n    }\n\n    @action\n    notifySaved() {\n        this.args.updateData();\n        this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n        this.args.rowAdded();\n    }\n\n    @action\n    datePicked(date, worktimes) {\n        this.showCopyPreviousDayModal = false;\n        this.day = date;\n        this.worktimes = worktimes;\n        this.showCopyPreviousDayFinalModal = true;\n    }\n\n    @action\n    closeShowCopyPreviousDayModal() {\n        this.showCopyPreviousDayModal = false;\n    }\n\n    @action\n    closeShowCopyPreviousDayFinalModal() {\n        this.showCopyPreviousDayFinalModal = false;\n    }\n\n    @action\n    startCopyingPreviousDay() {\n        this.analytics.trackEvent({\n            category: 'Dashboard',\n            action: 'Start copying previous day',\n            label: 'worktime-calendar widget',\n        });\n        this.showCopyPreviousDayModal = true;\n    }\n}\n","import podNames from 'ember-component-css/pod-names';\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action, set } from '@ember/object';\nimport moment from 'moment';\nimport { save_record } from 'tt4/ember-movenium/utils/save-the-children';\n\nexport default class CopyPreviousDayFinalComponent extends Component {\n    @tracked record;\n    @tracked headerTitle = \"\";\n    @tracked editableWorktimes = [];\n\n    @tracked validationMessageWorktimes = '';\n    @tracked validationMessageAbsences = '';\n\n    @service router;\n    @service store;\n    @service notifications;\n    @service('collector-service') collector;\n    @service intl;\n    @service session;\n    @service ttapi;\n    @service evented;\n\n    @tracked isLoading = false;\n\n    constructor() {\n        super(...arguments);\n        let headerTitleFormatted = moment(this.args.day, 'YYYY-MM-DD').format('DD.MM.YYYY');\n        const date = moment(headerTitleFormatted, 'DD.MM.YYYY').toDate();\n        const options = { weekday: 'long', locale: this.intl.locale };\n        const weekdayName = date.toLocaleDateString(this.intl.locale, options);\n        this.headerTitle =\n            weekdayName.charAt(0).toUpperCase() + weekdayName.slice(1) + ' ' + headerTitleFormatted;\n        \n        this.args.worktimes.forEach((worktime) => {\n            const copiedWorktime = this.collector.copyRecord(worktime);\n            copiedWorktime.date = this.args.day;\n            this.editableWorktimes.push(copiedWorktime);\n        });\n    }\n\n    get styleNamespace() {\n        return podNames['workday-summary/copy-previous-day-component/copy-previous-day-final-component'];\n    }\n\n    @action \n    closeClicked() {\n        this.args.close();\n    }\n\n    @action\n    async fieldChanged(field, value, record) {\n        set(await record, field, value);\n    }\n\n    @action async save() {\n        this.isLoading = true;\n        const failed = [];\n        this.form = \"worktime\";\n\n        for (let i = 0; i < this.editableWorktimes.length; i++) {\n            await this.editableWorktimes[i].validate();\n            if (!this.editableWorktimes[i].isValid) {\n                this.isLoading = false;\n                return;\n            }\n        }\n\n        for (let i = 0; i < this.editableWorktimes.length; i++) {\n            try {\n                await save_record(this.editableWorktimes[i], this);\n            } catch (e) {\n                failed.push(this.editableWorktimes[i]);\n            }\n        }\n\n        if (failed.length > 0) {\n            this.notifications.error(this.intl.t('previousdaycopy.unable_to_copy_worktimes'), { autoClear: true });\n            this.isLoading = false;\n            this.args.close();\n            return;\n        }\n\n        this.evented.storeEvent('insert', 'worktime', null);\n        \n        this.args.close();\n        this.args.notifySaved();\n        this.isLoading = false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"s0370Qvc\",\"block\":\"{\\\"symbols\\\":[\\\"worktime\\\",\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[22,\\\"styleNamespace\\\"]],[8],[0,\\\"\\\\n\\\"],[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeClicked\\\"],null],[22,\\\"headerTitle\\\"]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"editableWorktimes\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-final-component-worktime-container\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-final-component-worktime-header-container\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-final-component-worktime-header-worktime\\\"],[8],[1,[28,\\\"capitalize-translation\\\",[[28,\\\"t\\\",[\\\"general.worktime\\\"],null]],null],false],[0,\\\": \\\"],[1,[28,\\\"format-hours\\\",[[23,1,[\\\"work_hours\\\"]]],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-final-component-worktime-header-pause\\\"],[8],[1,[28,\\\"capitalize-translation\\\",[[28,\\\"t\\\",[\\\"report.worktime.pause\\\"],null]],null],false],[0,\\\": \\\"],[1,[28,\\\"format-minutes\\\",[[23,1,[\\\"pause\\\"]]],[[\\\"hideIcon\\\"],[true]]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@purpose\\\",\\\"@record\\\",\\\"@onFieldChange\\\"],[\\\"worktime\\\",\\\"copyPreviousDay\\\",[23,1,[]],[28,\\\"fn\\\",[[23,0,[\\\"fieldChanged\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"date\\\"],null]],null,{\\\"statements\\\":[],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"name\\\"]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[6,[23,4,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\",\\\"@forceType\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"record\\\"]],[23,5,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,0,[\\\"record\\\"]]],null],[28,\\\"fn\\\",[[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null],[23,5,[\\\"mandatory\\\"]],[23,5,[\\\"features\\\",\\\"disabled\\\"]],\\\"Textarea\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[6,[23,4,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\",\\\"@forceType\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[28,\\\"get\\\",[[23,1,[]],[23,5,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,1,[]]],null],[28,\\\"fn\\\",[[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null],[23,5,[\\\"mandatory\\\"]],[23,5,[\\\"features\\\",\\\"disabled\\\"]],[23,5,[\\\"forceType\\\"]]]]],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[5]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[3,4]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"style\\\",\\\"display: flex; flex-direction: row; margin-top: 50px;\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"addon/loading-button\\\",[],[[\\\"@disabled\\\",\\\"@loading\\\",\\\"@onClick\\\",\\\"@name\\\",\\\"@form\\\"],[[28,\\\"if\\\",[[24,[\\\"isLoading\\\"]],[24,[\\\"isLoading\\\"]]],null],[22,\\\"isLoading\\\"],[22,\\\"save\\\"],\\\"save-button\\\",\\\"worktime\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-block btn-secondary copy-previous-day-final-component-cancel-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeClicked\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/workday-summary/copy-previous-day-component/copy-previous-day-final-component/template.hbs\"}});","import podNames from 'ember-component-css/pod-names';\nimport Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action, computed } from '@ember/object';\nimport moment from 'moment';\n\nexport default class CopyPreviousDayIntermediateComponent extends Component {\n    @tracked record;\n    @tracked form = this.args.form;\n\n    @service router;\n    @service store;\n    @service notifications;\n    @service('collector-service') collector;\n    @service intl;\n    @service session;\n    @service ttapi;\n\n    @tracked selectedWorktimes = [];\n    @tracked selectedDate = null;\n    @tracked selectedDateJS = null;\n    @tracked isLoading = false;\n\n    @tracked dayLabel = \"\";\n\n    constructor() {\n        super(...arguments);\n\n        if (this.selectedDate === null) {\n            this.selectedDate = this.getPreviousWorkingDay();\n            this.daySelected(this.selectedDate);\n        }\n        this.dayLabel = moment(this.selectedDate).format('DD.MM.YYYY');\n\n        const date = moment(this.dayLabel, 'DD.MM.YYYY').toDate();\n        const options = { weekday: 'long', locale: this.intl.locale };\n        const weekdayName = date.toLocaleDateString(this.intl.locale, options);\n        this.dayLabel =\n            weekdayName.charAt(0).toUpperCase() + weekdayName.slice(1) + ' ' + this.dayLabel;\n    }\n\n    getPreviousWorkingDay() {\n        let previousWorkingDay = moment().subtract(1, 'day');\n        while (previousWorkingDay.day() === 0 || previousWorkingDay.day() === 6) {\n            previousWorkingDay.subtract(1, 'day');\n        }\n        return previousWorkingDay.toDate();\n    }\n\n    selectedDayChanged () {\n        if(this.selectedDate === null) this.dayLabel = moment().format('DD.MM.YYYY');\n        else this.dayLabel = moment(this.selectedDate).format('DD.MM.YYYY');\n\n        const date = moment(this.dayLabel, 'DD.MM.YYYY').toDate();\n        const options = { weekday: 'long', locale: this.intl.locale };\n        const weekdayName = date.toLocaleDateString(this.intl.locale, options);\n        this.dayLabel =\n            weekdayName.charAt(0).toUpperCase() + weekdayName.slice(1) + ' ' + this.dayLabel;\n    }\n\n    @computed('selectedWorktimes')\n    get showSaving() {\n        if((Array.isArray(this.selectedWorktimes) && this.selectedWorktimes.length > 0)) {\n            return true;\n        } else return false;\n    }\n\n    async getWorktimes() {\n        const params = {\n            date: this.selectedDate + '_' + this.selectedDate,\n            user: this?.session?.currentUser?.id,\n            sideload: true,\n            limit: 500,\n        };\n        let query = await this.store.query('worktime', params);\n        this.selectedWorktimesTemp = [];\n        query.forEach((worktime) => {\n            this.selectedWorktimesTemp.push(worktime);\n        });\n        this.selectedWorktimes = this.selectedWorktimesTemp;\n    }\n\n    get styleNamespace() {\n        return podNames['workday-summary/copy-previous-day-component/copy-previous-day-intermediate-component'];\n    }\n\n    @action closeClicked() {\n        this.args.close();\n    }\n\n    @action async daySelected(date) {\n        this.selectedDate = moment(date).format('YYYY-MM-DD');\n        this.selectedDateJS = date;\n        this.selectedDayChanged();\n        this.isLoading = true;\n        await this.getWorktimes();\n        this.isLoading = false;\n    }\n\n    @action select() {\n        this.args.datePicked(this.selectedDate, this.selectedWorktimes);\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"mNg6tar8\",\"block\":\"{\\\"symbols\\\":[\\\"worktime\\\",\\\"index\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[22,\\\"styleNamespace\\\"]],[8],[0,\\\"\\\\n\\\"],[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeClicked\\\"],null],[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"menu.add_\\\",[24,[\\\"form\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-calendar-container\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"components/dash-board/widgets/worktime-calendar\\\",null,[[\\\"selected\\\",\\\"hideStatictics\\\",\\\"isPreviousDayCopyComponent\\\",\\\"dayToBeCopied\\\"],[[24,[\\\"selectedDateJS\\\"]],true,true,[24,[\\\"daySelected\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-day-label\\\"],[10,\\\"style\\\",\\\"\\\"],[8],[1,[22,\\\"dayLabel\\\"],false],[9],[0,\\\"\\\\n    \\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"dash-board/widget-spinner\\\",null,[[\\\"skeletonRows\\\"],[5]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"showSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-nothing-to-copy-container\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-nothing-to-copy-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"previousdaycopy.nothing_to_copy\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selectedWorktimes\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"selectedWorktimes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-last-element\\\",[[24,[\\\"selectedWorktimes\\\"]],[23,2,[]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-container copy-previous-day-intermediate-component-worktime-container-border-none\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-startendtime\\\"],[8],[1,[23,1,[\\\"starttime\\\"]],false],[0,\\\" - \\\"],[1,[23,1,[\\\"endtime\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-project-name\\\"],[8],[1,[23,1,[\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-details-container\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-details-work-hours\\\"],[8],[1,[28,\\\"capitalize-translation\\\",[[28,\\\"t\\\",[\\\"general.worktime\\\"],null]],null],false],[0,\\\": \\\"],[1,[28,\\\"format-hours\\\",[[23,1,[\\\"work_hours\\\"]]],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-details-pause-hours\\\"],[8],[1,[28,\\\"capitalize-translation\\\",[[28,\\\"t\\\",[\\\"report.worktime.pause\\\"],null]],null],false],[0,\\\": \\\"],[1,[28,\\\"format-minutes\\\",[[23,1,[\\\"pause\\\"]]],[[\\\"hideIcon\\\"],[true]]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-details-normal-worktime\\\"],[8],[1,[28,\\\"capitalize-translation\\\",[[28,\\\"t\\\",[\\\"previousdaycopy.normal_worktime\\\"],null]],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-container\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-startendtime\\\"],[8],[1,[23,1,[\\\"starttime\\\"]],false],[0,\\\" - \\\"],[1,[23,1,[\\\"endtime\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-project-name\\\"],[8],[1,[23,1,[\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-details-container\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-details-work-hours\\\"],[8],[1,[28,\\\"capitalize-translation\\\",[[28,\\\"t\\\",[\\\"general.worktime\\\"],null]],null],false],[0,\\\": \\\"],[1,[28,\\\"format-hours\\\",[[23,1,[\\\"work_hours\\\"]]],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-details-pause-hours\\\"],[8],[1,[28,\\\"capitalize-translation\\\",[[28,\\\"t\\\",[\\\"report.worktime.pause\\\"],null]],null],false],[0,\\\": \\\"],[1,[28,\\\"format-minutes\\\",[[23,1,[\\\"pause\\\"]]],[[\\\"hideIcon\\\"],[true]]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-worktime-details-normal-worktime\\\"],[8],[1,[28,\\\"capitalize-translation\\\",[[28,\\\"t\\\",[\\\"previousdaycopy.normal_worktime\\\"],null]],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\\n\\\"]],\\\"parameters\\\":[1,2]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"copy-previous-day-intermediate-component-button-container\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-block btn-primary copy-previous-day-intermediate-component-select-button\\\"],[12,\\\"disabled\\\",[28,\\\"not\\\",[[24,[\\\"showSaving\\\"]]],null]],[3,\\\"action\\\",[[23,0,[]],\\\"select\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.choose\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-block btn-secondary copy-previous-day-intermediate-component-cancel-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeClicked\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/workday-summary/copy-previous-day-component/copy-previous-day-intermediate-component/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"8P2Bo1aA\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"tr\\\",false],[12,\\\"class\\\",\\\"copy-previous-day-component-open-modal\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"startCopyingPreviousDay\\\"]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"popup-td\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"40\\\"],[10,\\\"height\\\",\\\"40\\\"],[10,\\\"viewBox\\\",\\\"0 0 50 50\\\"],[11,\\\"class\\\",\\\"copy-button\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"25\\\"],[10,\\\"cy\\\",\\\"25\\\"],[10,\\\"r\\\",\\\"25\\\"],[10,\\\"opacity\\\",\\\"0.996\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"path\\\",true],[10,\\\"d\\\",\\\"M3.771,0A3.776,3.776,0,0,0,0,3.771V16.027A3.776,3.776,0,0,0,3.771,19.8H8.485V17.913H3.771a1.886,1.886,0,0,1-1.886-1.886V3.771A1.886,1.886,0,0,1,3.771,1.886H7.807c.68.173.678.99.678,1.827V5.657a.955.955,0,0,0,.236.619,3.776,3.776,0,0,1,3.535-2.5h.059c-.167-.164-.334-.334-.5-.5-.234-.232-.481-.448-.707-.678C9.493.946,8.544,0,7.542,0ZM13.2,4.714A3.776,3.776,0,0,0,9.428,8.485V20.741A3.776,3.776,0,0,0,13.2,24.512h7.542a3.776,3.776,0,0,0,3.771-3.771V12.256c0-1-.917-1.952-2.563-3.565-.23-.226-.475-.473-.707-.707s-.481-.448-.707-.678c-1.614-1.647-2.563-2.593-3.565-2.593Zm0,1.886h4.036c.68.173.678.99.678,1.827v1.944a.944.944,0,0,0,.943.943h1.886c.941,0,1.886,0,1.886.943v8.485a1.886,1.886,0,0,1-1.886,1.886H13.2a1.886,1.886,0,0,1-1.886-1.886V8.485A1.886,1.886,0,0,1,13.2,6.6Zm-9.428.943V9.428H8.485V7.542Zm0,2.828v1.886H8.485V10.371ZM13.2,12.256v1.886h7.542V12.256ZM3.771,13.2v1.886H8.485V13.2ZM13.2,15.084V16.97h5.657V15.084Zm0,2.828V19.8h7.542V17.913Z\\\"],[10,\\\"transform\\\",\\\"translate(12.287 12.208)\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"opacity\\\",\\\"0.996\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"popup-td\\\"],[8],[1,[28,\\\"t\\\",[\\\"dashboard.calendar.copypreviousday\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"popup-td\\\"],[8],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showCopyPreviousDayModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"workday-summary/copy-previous-day-component/copy-previous-day-intermediate-component\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@datePicked\\\",\\\"@close\\\"],[\\\"copyPreviousDayIntermediate\\\",[23,0,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"datePicked\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeShowCopyPreviousDayModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showCopyPreviousDayFinalModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"workday-summary/copy-previous-day-component/copy-previous-day-final-component\\\",[],[[\\\"@day\\\",\\\"@notifySaved\\\",\\\"@worktimes\\\",\\\"@record\\\",\\\"@close\\\"],[[23,0,[\\\"selectedDay\\\"]],[23,0,[\\\"notifySaved\\\"]],[23,0,[\\\"worktimes\\\"]],[23,0,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeShowCopyPreviousDayFinalModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/workday-summary/copy-previous-day-component/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { set, get } from '@ember/object';\n\nexport default Component.extend({\n    session: service(),\n    store: service(),\n    dialogs: service(),\n    intl: service(),\n    evented: service(),\n    notifications: service(),\n    tagName: 'tr',\n    disableEditing: false,\n\n    async didReceiveAttrs() {\n        this._super();\n        let model = get(this, 'model');\n        if (\n            model.constructor.modelName === 'worktime' &&\n            (!this.Collector.canAddWorktime(model.date) ||\n                this.Collector.testNeeds(['products.timetracker_clockcard', 'userlevel=1?']))\n        ) {\n            set(this, 'disableEditing', true);\n        }\n\n        // if model has no modelName we assume that it is absence fetched from /absence/split route\n        if (!get(this, 'model.constructor.modelName')) {\n            set(\n                this,\n                'record',\n                get(\n                    await this.store.query('abcense', {\n                        sideload: true,\n                        id: get(this, 'model.id'),\n                    }),\n                    'firstObject',\n                ),\n            );\n        } else {\n            set(this, 'record', get(this, 'model'));\n        }\n\n        set(this, 'data', {\n            project: model.project ? model.project : null,\n            starttime: model.starttime ? model.starttime : null,\n            endtime: model.endtime ? model.endtime : null,\n            hours: model.work_hours ? model.work_hours : model.hours,\n            pause: model.pause ? model.pause : null,\n            absencetype: model.abcensetype ? model.abcensetype : null,\n            form: model.abcensetype ? 'abcense' : 'worktime',\n            km: model.km ? model.km : null,\n            comp: model.comp ? model.comp : null,\n            worktype: model.worktype ? model.worktype : null,\n        });\n    },\n\n    actions: {\n        saveRow() {\n            this.updateData();\n            this.toggleProperty('showEditModal');\n        },\n        notifySaved() {\n            this.updateData();\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n        },\n        async openEditModal() {\n            if (this.disableEditing) return;\n            set(this, 'showEditModal', true);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"zb5dfp2O\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[7,\\\"td\\\",false],[12,\\\"class\\\",\\\"popup-td\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openEditModal\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data\\\",\\\"absencetype\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"project-icon img-circle ab-circle\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cup\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"project-icon\\\",null,[[\\\"project\\\"],[[24,[\\\"data\\\",\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"],[7,\\\"td\\\",false],[12,\\\"class\\\",\\\"popup-td wider-table-cell\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openEditModal\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data\\\",\\\"starttime\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"times\\\"],[8],[1,[28,\\\"concat\\\",[[24,[\\\"data\\\",\\\"starttime\\\"]],\\\" - \\\",[24,[\\\"data\\\",\\\"endtime\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data\\\",\\\"absencetype\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[24,[\\\"data\\\",\\\"absencetype\\\",\\\"name\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[24,[\\\"data\\\",\\\"project\\\",\\\"name\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-items\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item work-hours\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"data\\\",\\\"hours\\\"]]],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data\\\",\\\"pause\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Dining\\\"],[8],[9],[0,\\\"  \\\"],[1,[28,\\\"format-minutes\\\",[[24,[\\\"data\\\",\\\"pause\\\"]]],[[\\\"hideIcon\\\"],[true]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"data\\\",\\\"km\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Mileage\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"worktime\\\",\\\"km\\\",[24,[\\\"data\\\",\\\"km\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"data\\\",\\\"comp\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Travel\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"worktime\\\",\\\"comp\\\",[24,[\\\"data\\\",\\\"comp\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"data\\\",\\\"worktype\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-HistoryEdit\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"worktime\\\",\\\"worktype\\\",[24,[\\\"data\\\",\\\"worktype\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"disableEditing\\\"]]],null,{\\\"statements\\\":[[7,\\\"td\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"openEditModal\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[[28,\\\"concat\\\",[[24,[\\\"data\\\",\\\"form\\\"]],\\\"@edit\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-arrow-right pull-right rowarrow\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showEditModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/form-modal\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"showSaved\\\",\\\"rowEdited\\\",\\\"close\\\"],[[24,[\\\"data\\\",\\\"form\\\"]],[24,[\\\"record\\\"]],false,[28,\\\"action\\\",[[23,0,[]],\\\"notifySaved\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showEditModal\\\"]]],null],false],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/workday-summary/edit-component/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"hrgvoyci\",\"block\":\"{\\\"symbols\\\":[\\\"form\\\",\\\"row\\\",\\\"&default\\\"],\\\"statements\\\":[[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"workday-summary-table\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"popupData\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"popupData\\\",\\\"_result\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[14,3,[[28,\\\"hash\\\",null,[[\\\"edit\\\"],[[28,\\\"component\\\",[\\\"workday-summary/edit-component\\\"],[[\\\"model\\\",\\\"updateData\\\"],[[23,2,[]],[28,\\\"action\\\",[[23,0,[]],\\\"updateData\\\"],null]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]}],[4,\\\"each\\\",[[24,[\\\"permittedAddForms\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[14,3,[[28,\\\"hash\\\",null,[[\\\"add\\\"],[[28,\\\"component\\\",[\\\"workday-summary/add-component\\\"],[[\\\"form\\\",\\\"rowAdded\\\",\\\"updateData\\\",\\\"day\\\",\\\"user\\\"],[[23,1,[]],[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"updateData\\\"],null],[24,[\\\"day\\\"]],[24,[\\\"user\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n    \\\"],[14,3,[[28,\\\"hash\\\",null,[[\\\"add\\\"],[[28,\\\"component\\\",[\\\"workday-summary/copy-component\\\"],[[\\\"form\\\",\\\"rowAdded\\\",\\\"day\\\",\\\"user\\\"],[\\\"worktime\\\",[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null],[24,[\\\"day\\\"]],[24,[\\\"user\\\"]]]]]]]]]],[0,\\\"\\\\n    \\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"popupData\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"await\\\",[[24,[\\\"selectedDayIsAllowedForCopy\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[14,3,[[28,\\\"hash\\\",null,[[\\\"add\\\"],[[28,\\\"component\\\",[\\\"workday-summary/copy-previous-day-component\\\"],[[\\\"date\\\",\\\"form\\\",\\\"updateData\\\",\\\"rowAdded\\\",\\\"day\\\",\\\"user\\\"],[[24,[\\\"day\\\"]],\\\"worktime\\\",[28,\\\"action\\\",[[23,0,[]],\\\"updateData\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null],[24,[\\\"day\\\"]],[24,[\\\"user\\\"]]]]]]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/workday-summary/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class WorkpermitModalComponent extends Component {\n    @service store;\n\n    @tracked record = null;\n    @tracked loading = false;\n    @tracked showConfirmModal = true;\n    @tracked showAttachmentModal = false;\n    @tracked reason = '';\n    @tracked filePreviewCache = [];\n\n    constructor() {\n        super(...arguments);\n        this.loadRecord();\n    }\n\n    get styleNamespace() {\n        return podNames['workpermit-modal'];\n    }\n\n    async loadRecord() {\n        this.loading = true;\n        // load the workpermit record\n        if (this.recordId) {\n            this.record = await this.store.findRecord('workpermit', this.recordId);\n        }\n        // Load the record that the work permit belongs to.\n        if (this.parentRecordId) {\n            this.parentRecord = await this.store.findRecord(this.parentForm, this.parentRecordId);\n        }\n        this.loading = false;\n    }\n\n    get recordId() {\n        return this.args.modal.split(',')[2];\n    }\n\n    get parentForm() {\n        return this.args.modal.split(',')[1];\n    }\n\n    get parentRecordId() {\n        return this.args.modal.split(',')[3];\n    }\n\n    get permitOwner() {\n        return this.parentForm === 'orientation' ? this.parentRecord.ori_user.id : this.parentRecord.id;\n    }\n\n    @action\n    confirm(reason) {\n        this.reason = reason;\n        this.showConfirmModal = false;\n        this.showAttachmentModal = true;\n    }\n\n    @action\n    addFilePreviewToCache(file, preview) {\n        this.filePreviewCache[file] = preview;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"YNKmV1uS\",\"block\":\"{\\\"symbols\\\":[\\\"@closeModal\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[23,0,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showAttachmentModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"collector/fields/work-permit-attachment/attachment-modal\\\",[],[[\\\"@record\\\",\\\"@reason\\\",\\\"@onClose\\\",\\\"@addFilePreviewToCache\\\",\\\"@filePreviewCache\\\",\\\"@userId\\\",\\\"@viewOnly\\\"],[[23,0,[\\\"record\\\"]],[23,0,[\\\"reason\\\"]],[23,1,[]],[28,\\\"fn\\\",[[23,0,[\\\"addFilePreviewToCache\\\"]]],null],[23,0,[\\\"filePreviewCache\\\"]],[23,0,[\\\"permitOwner\\\"]],true]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showConfirmModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"collector/fields/work-permit-attachment/confirm-modal\\\",[],[[\\\"@onClose\\\",\\\"@onConfirm\\\",\\\"@recordID\\\"],[[23,1,[]],[28,\\\"fn\\\",[[23,0,[\\\"confirm\\\"]]],null],[23,0,[\\\"record\\\",\\\"id\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/workpermit-modal/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n    dialogs: service(),\n    intl: service(),\n    evented: service(),\n\n    didInsertElement() {\n        this.store.findAll('rollocklog');\n    },\n    actions: {\n        showOnlyErrorRows() {\n            //set(this,'filters', {\n            //    eventCode: \"250,230,210\"\n            //})\n        },\n    },\n\n    /*\n    ROLLOCK EVENTCODES\n\n    100 NFC key rejected\n    101 NFC key accepted\n\n    204 open authorized\n    205 key not found\n    210 key expired\n\n    522 Remote open command accepted\n    523 Remote open command failed\n\n    1403 BLE open accepted with e-key\n    1404 BLE open rejected\n\n    1500 door locked\n    1512 unlocked door not opened\n    1515 door closed\n    */\n});\n","export default Ember.HTMLBars.template({\"id\":\"NBssZCPO\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"tableAction\\\"],\\\"statements\\\":[[4,\\\"collector/form-report\\\",null,[[\\\"rowActions\\\",\\\"filter\\\",\\\"inlineEdit\\\",\\\"form\\\",\\\"jsonapi\\\"],[\\\"\\\",[24,[\\\"filters\\\"]],false,\\\"rollocklog\\\",true]],{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"filters\\\"]],\\\"expected `report.filters` to be a contextual component but found a string. Did you mean `(component report.filters)`? ('tt4/pods/components/worksite-areas-report/logs/template.hbs' @ L2:C6) \\\"],null]],[[\\\"showColumns\\\"],[\\\"project,user,lockgroup,date\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/components/worksite-areas-report/logs/template.hbs' @ L3:C7) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"actions\\\"]],\\\"expected `table.actions` to be a contextual component but found a string. Did you mean `(component table.actions)`? ('tt4/pods/components/worksite-areas-report/logs/template.hbs' @ L4:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"row\\\"]],\\\"expected `tableAction.row` to be a contextual component but found a string. Did you mean `(component tableAction.row)`? ('tt4/pods/components/worksite-areas-report/logs/template.hbs' @ L5:C15) \\\"],null]],[[\\\"action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"showOnlyErrorRows\\\"],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.worksite-areas-log.show_only_error_rows\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/worksite-areas-report/logs/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\n\nexport default Component.extend({\n    store: service(),\n    dialogs: service(),\n    intl: service(),\n    evented: service(),\n\n    localStorageKey: 'worksite_area_passes',\n\n    filteredPermissions: computed('currentLockGroup', 'employer', 'showOnlyValid', function () {\n        let ret = {};\n        if (this.showOnlyValid) {\n            ret['pass_start:pass_end'] =\n                moment().format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD');\n        }\n        ret['lockgroupid'] = this.currentLockGroup;\n        ret['employer'] = this.employer;\n        return ret;\n    }),\n\n    lockgroups: computed('project', async function () {\n        let params = {};\n        params['sideload'] = true;\n        if (this.project) {\n            let project = this.project;\n            if (this.project.indexOf(',') > -1) {\n                project = this.project.split(',');\n            }\n            return get(this, 'store')\n                .peekAll('lockgroup')\n                .filter((row) => {\n                    if (\n                        (Array.isArray(project) && project.includes(row.project.id)) ||\n                        row.project.id == project\n                    ) {\n                        return true;\n                    }\n                });\n        }\n        await get(this, 'store').query('lockgroup', params);\n        return get(this, 'store').peekAll('lockgroup');\n    }),\n\n    filteredLocksPermission: computed('selectedProject', async function () {\n        let locks = await get(this, 'store').query('lockgroup', {\n            project: this.selectedProject.id,\n        });\n        let ret = [];\n        locks.forEach((lock) => {\n            ret.pushObject({ id: lock.id, name: lock.name });\n        });\n        return ret;\n    }),\n\n    init() {\n        this._super();\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n    },\n\n    async didInsertElement() {\n        set(this, 'showOnlyValid', true);\n        set(this, 'selectedUsers', A());\n        set(this, 'show_fields', ['firstname', 'lastname']);\n    },\n    didDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n    },\n    actions: {\n        async endPass(record) {\n            const executeChanges = await get(this, 'dialogs').confirm(\n                get(this, 'intl').t('report.worksite-areas.end_pass_question'),\n            );\n            if (executeChanges) {\n                set(record, 'pass_end', moment().subtract(1, 'day').format('YYYY-MM-DD'));\n                await record.save();\n            }\n        },\n\n        toggleValidPasses() {\n            this.toggleProperty('showOnlyValid');\n            this.evented.storeEvent('update', 'lockgroupid', '');\n        },\n        async deleteLockGroup(lockgroup) {\n            const executeChanges = await get(this, 'dialogs').confirm(\n                get(this, 'intl').t('report.worksite-areas.delete_group_question'),\n            );\n            if (executeChanges) {\n                let passesToEnd = await this.store.query('lockpermission', {\n                    lockgroupid: lockgroup.id,\n                });\n                passesToEnd.forEach((record) => {\n                    set(record, 'pass_end', moment().subtract(1, 'day').format('YYYY-MM-DD'));\n                    record.save();\n                });\n                //set(lockgroup,'status', 'passive');\n                await lockgroup.destroyRecord();\n                lockgroup.unloadRecord();\n            }\n            return false;\n        },\n        async save() {\n            let lock = await get(this, 'store').findRecord('lockgroup', this.lockgroupid);\n\n            set(this, 'saving', true);\n\n            for (var item of this.selectedUsers) {\n                var record = get(this, 'store').createRecord('lockpermission', {\n                    user: item,\n                    lockgroupid: lock,\n                    pass_start: this.pass_start,\n                    pass_end: this.pass_end,\n                });\n                await record.save();\n            }\n            set(this, 'saving', false);\n            this.evented.storeEvent('update', 'lockgroupid', '');\n            set(this, 'showAddPermissionDialog', false);\n        },\n        filterChange(value, field) {\n            //set(this,'employer', value);\n            if (field) set(this, field, value);\n        },\n        PermissionsEditAction(users) {\n            this.clearValues();\n            set(this, 'selected_users', users);\n            set(this, 'pass_end', null);\n            set(this, 'pass_start', null);\n            set(this, 'showEditPermissionDialog', true);\n        },\n        endPermissions() {\n            set(this, 'pass_end', moment().format('YYYY-MM-DD'));\n        },\n        async editPermissions() {\n            set(this, 'saving', true);\n            for (var user of this.selected_users) {\n                if (this.pass_start) set(user, 'pass_start', this.pass_start);\n                if (this.pass_end) set(user, 'pass_end', this.pass_end);\n                await user.save();\n            }\n            set(this, 'saving', false);\n            set(this, 'showEditPermissionDialog', false);\n            this.clearValues();\n        },\n        PermissionsAdderAction(lockgroup, project) {\n            this.clearValues();\n            if (lockgroup) {\n                set(this, 'lockgroupid', lockgroup);\n            }\n            if (project) {\n                set(this, 'selectedProject', project.id);\n            }\n            set(this, 'showAddPermissionDialog', true);\n        },\n        changeCurrentLockGroup(id) {\n            if (this.currentLockGroup == id) {\n                set(this, 'currentLockGroup', null);\n            } else {\n                set(this, 'currentLockGroup', id);\n            }\n        },\n    },\n\n    onStoreEvent(params) {\n        if (params.type === 'lockgroupid') {\n            this.notifyPropertyChange('lockgroups');\n        }\n    },\n\n    clearValues() {\n        set(this, 'selected_users', A());\n        set(this, 'selectedUsers', A());\n        set(this, 'selectedProject', null);\n        set(this, 'selectedEmployer', null);\n        set(this, 'pass_start', null);\n        set(this, 'pass_end', null);\n        set(this, 'lockgroupid', null);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"jTyb3ID+\",\"block\":\"{\\\"symbols\\\":[\\\"lock\\\",\\\"report\\\",\\\"table\\\",\\\"row\\\",\\\"tableAction\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filters\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/form-report/filters\\\",null,[[\\\"form\\\",\\\"showColumns\\\",\\\"change\\\"],[\\\"user\\\",\\\"employer\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChange\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/form-report/filters\\\",null,[[\\\"form\\\",\\\"showColumns\\\",\\\"change\\\"],[\\\"lockgroup\\\",\\\"project\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChange\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"theme\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[[24,[\\\"showOnlyValid\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleValidPasses\\\"],null],\\\"light\\\",[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"report.worksite-areas.invalid_passes\\\"],null],\\\"\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-buttons\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"PermissionsAdderAction\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.worksite-areas.add_permissions\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"query\\\"],[\\\"btn btn-primary\\\",[28,\\\"hash\\\",null,[[\\\"modal\\\"],[\\\"lockgroup\\\"]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.worksite-areas.add_lockgroup\\\"],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"locks\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"lockgroups\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"lock-row \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"currentLockGroup\\\"]],[23,1,[\\\"id\\\"]]],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"changeCurrentLockGroup\\\",[23,1,[\\\"id\\\"]]]],[8],[0,\\\"\\\\n        \\\"],[1,[23,1,[\\\"project\\\",\\\"name\\\"]],false],[0,\\\" - \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Delete pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"deleteLockGroup\\\",[23,1,[]]],[[\\\"preventDefault\\\"],[false]]],[8],[9],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"query\\\"],[\\\"move move-Pencil pull-right\\\",[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[28,\\\"concat\\\",[\\\"lockgroup,\\\",[23,1,[\\\"id\\\"]]],null]]]]]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"currentLockGroup\\\"]],[23,1,[\\\"id\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"collector/form-report\\\",null,[[\\\"form\\\",\\\"filter\\\",\\\"localStorageKey\\\",\\\"showColumns\\\"],[\\\"lockpermission\\\",[24,[\\\"filteredPermissions\\\"]],[24,[\\\"localStorageKey\\\"]],\\\"lockgroupid,employer,user,pass_start,pass_end\\\"]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/components/worksite-areas-report/passes/template.hbs' @ L37:C15) \\\"],null]],[[\\\"selectable\\\"],[true]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"actions\\\"]],\\\"expected `table.actions` to be a contextual component but found a string. Did you mean `(component table.actions)`? ('tt4/pods/components/worksite-areas-report/passes/template.hbs' @ L38:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"row\\\"]],\\\"expected `tableAction.row` to be a contextual component but found a string. Did you mean `(component tableAction.row)`? ('tt4/pods/components/worksite-areas-report/passes/template.hbs' @ L39:C19) \\\"],null]],[[\\\"action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"PermissionsAdderAction\\\",[23,1,[\\\"id\\\"]],[23,1,[\\\"project\\\"]]],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.worksite-areas.add_permissions\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"selected\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"row\\\"]],\\\"expected `tableAction.row` to be a contextual component but found a string. Did you mean `(component tableAction.row)`? ('tt4/pods/components/worksite-areas-report/passes/template.hbs' @ L41:C23) \\\"],null]],[[\\\"action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"PermissionsEditAction\\\",[23,3,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.worksite-areas.edit_permissions\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[5]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"rowActions\\\"]],\\\"expected `table.rowActions` to be a contextual component but found a string. Did you mean `(component table.rowActions)`? ('tt4/pods/components/worksite-areas-report/passes/template.hbs' @ L44:C11) \\\"],null]],[[\\\"showActions\\\"],[\\\"edit\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-DoNotDisturb\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.worksite-areas.end_pass\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"endPass\\\",[23,4,[]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"        \\\"],[1,[23,3,[\\\"no-content\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"no-results\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.worksite-areas.no-results\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showEditPermissionDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"report.worksite-areas.edit_permissions_dialog\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showEditPermissionDialog\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.worksite-areas.choose_time_between\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dates\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"lockpermission.pass_start\\\"],[[\\\"class\\\",\\\"change\\\",\\\"value\\\"],[\\\"add-fields form-control\\\",\\\"update\\\",[24,[\\\"pass_start\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"lockpermission.pass_end\\\"],[[\\\"class\\\",\\\"change\\\",\\\"value\\\"],[\\\"add-fields form-control\\\",\\\"update\\\",[24,[\\\"pass_end\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"pass_start\\\"]],[24,[\\\"pass_end\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"editPermissions\\\"],null],\\\"btn btn-m-link btn-block btn-lg save\\\",[24,[\\\"disabled\\\"]],[28,\\\"t\\\",[\\\"general.save\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg save\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showEditPermissionDialog\\\"]]],null]]],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddPermissionDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"report.worksite-areas.add_permissions\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAddPermissionDialog\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"lock-permissions-main\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"orientations/add-passes\\\",null,[[\\\"selectedUsers\\\",\\\"valid\\\",\\\"lockgroupid\\\",\\\"pass_start\\\",\\\"pass_end\\\"],[[28,\\\"mut\\\",[[24,[\\\"selectedUsers\\\"]]],null],[28,\\\"mut\\\",[[24,[\\\"valid\\\"]]],null],[28,\\\"mut\\\",[[24,[\\\"lockgroupid\\\"]]],null],[28,\\\"mut\\\",[[24,[\\\"pass_start\\\"]]],null],[28,\\\"mut\\\",[[24,[\\\"pass_end\\\"]]],null]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"valid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-m-link btn-block btn-lg save\\\",[24,[\\\"disabled\\\"]],[28,\\\"t\\\",[\\\"general.save\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg save\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAddPermissionDialog\\\"]]],null]]],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/components/worksite-areas-report/passes/template.hbs\"}});","/* eslint-disable ember/alias-model-in-controller */\nimport Controller from '@ember/controller';\n\nexport default Controller.extend({});\n","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nexport default Route.extend(AuthenticatedRouteMixin, {\n    activate: function () {\n        document.body.classList.add('dashboard-body');\n    },\n    deactivate: function () {\n        document.body.classList.remove('dashboard-body');\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"26E4AYn5\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"dash-board\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/dashboard/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\n\nconst DevelopmentCronController = Controller.extend({\n    ttapi: service(),\n\n    init() {\n        this._super(...arguments);\n        this.scripts = ['alarms', 'unapprovedWorktimes', 'postpopulateWorktimes', 'vismanet'];\n    },\n\n    content: alias('model'),\n    actions: {\n        async execute(script) {\n            console.log('execute', script); // eslint-disable-line\n            set(this, 'loading', true);\n            try {\n                const back = await this.ttapi.request('artisan/' + script, {\n                    dataType: 'html',\n                    method: 'POST',\n                });\n                set(this, 'loading', false);\n                return set(this, 'response', back);\n            } catch (error) {\n                set(this, 'loading', false);\n                return set(this, 'response', error);\n            }\n        },\n    },\n});\n\nexport default DevelopmentCronController;\n","import Route from '@ember/routing/route';\n\nconst DevelopmentCronRoute = Route.extend();\n\nexport default DevelopmentCronRoute;\n","export default Ember.HTMLBars.template({\"id\":\"2qLNs7+B\",\"block\":\"{\\\"symbols\\\":[\\\"script\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"h2\\\",true],[8],[0,\\\"Execute artisan commands (for dev)\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"selectedScript\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"option\\\",true],[8],[0,\\\"Select script to execute...\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"scripts\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,1,[]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[]],[24,[\\\"selectedScript\\\"]]],null]],[8],[1,[23,1,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selectedScript\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"execute\\\",[24,[\\\"selectedScript\\\"]]]],[8],[0,\\\"Execute\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"textarea\\\",true],[10,\\\"style\\\",\\\"background-color: #000;border: 1px solid #000;color: #00ff00;padding: 8px;font-family: courier new;\\\"],[10,\\\"cols\\\",\\\"200\\\"],[10,\\\"rows\\\",\\\"30\\\"],[8],[1,[22,\\\"response\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/cron/template.hbs\"}});","import Route from '@ember/routing/route';\n\nconst DevelopmentDatacreatorRoute = Route.extend({\n    init() {\n        this._super(...arguments);\n        this.dateMemory = {};\n    },\n\n    actions: {\n        createProjects() {\n            return (() => {\n                const result = [];\n                for (let i = 1; i < 120; i++) {\n                    const record = this.store.createRecord('project', {\n                        number: i,\n                        name: 'generated_' + i,\n                    });\n\n                    result.push(record.save());\n                }\n                return result;\n            })();\n        },\n\n        createPLProjects() {\n            return (() => {\n                const result = [];\n                for (let i = 1; i < 120; i++) {\n                    const record = this.store.createRecord('project', {\n                        number: i,\n                        name: 'gen_pl_' + i,\n                        presence_project: true,\n                        skv_number: 'PL12345678' + i,\n                    });\n\n                    result.push(record.save());\n                }\n                return result;\n            })();\n        },\n\n        createTasks() {\n            return (() => {\n                const result = [];\n                for (let i = 1; i < 120; i++) {\n                    const record = this.store.createRecord('task', { name: 'generated_' + i });\n\n                    result.push(record.save());\n                }\n                return result;\n            })();\n        },\n\n        createWorktimes() {\n            const users = this.store.peekAll('user');\n            const projects = this.store.peekAll('project');\n\n            const starttimes = ['7:00', '7:30', '8:00'];\n            const endtimes = ['12:00', '15:30', '16:00'];\n\n            if (users.length < 1) {\n                alert('go visit users route to get users to store');\n                return;\n            }\n\n            if (projects.length < 1) {\n                alert('go visit projects route to get projects to store');\n                return;\n            }\n\n            return (() => {\n                const result = [];\n                for (let i = 1; i < 120; i++) {\n                    var date;\n                    const user = this.getRandom(users.content);\n                    const project = this.getRandom(projects.content);\n\n                    const userid = user.id;\n\n                    const lastdate = this.dateMemory[userid];\n\n                    if (!lastdate) {\n                        date = this.dateMemory[userid] = moment().format('YYYY-MM-DD');\n                    } else {\n                        date = this.dateMemory[userid] = moment(lastdate)\n                            .subtract(1, 'day')\n                            .format('YYYY-MM-DD');\n                    }\n\n                    const record = this.store.createRecord('worktime', {\n                        date,\n                        project: this.store.peekRecord('project', project.id),\n                        user: this.store.peekRecord('user', user.id),\n                        starttime: this.getRandom(starttimes),\n                        endtime: this.getRandom(endtimes),\n                    });\n\n                    result.push(record.save());\n                }\n                return result;\n            })();\n        },\n        createUsers() {\n            return (() => {\n                const result = [];\n                for (let i = 1; i < 120; i++) {\n                    const record = this.store.createRecord('user', {\n                        firstname: 'generated',\n                        lastname: (Math.random() + 1).toString(36).substring(1, 11),\n                        password: (Math.random() + 1).toString(36).substring(1, 7),\n                    });\n\n                    result.push(record.save());\n                }\n                return result;\n            })();\n        },\n    },\n\n    getRandom(arr) {\n        return arr[this.getRandomArbitrary(0, arr.length - 1)];\n    },\n\n    getRandomArbitrary(min, max) {\n        return Math.floor(Math.random() * (max - min + 1)) + min;\n    },\n});\n\nexport default DevelopmentDatacreatorRoute;\n","export default Ember.HTMLBars.template({\"id\":\"a+B1Xu6a\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"createProjects\\\"]],[8],[0,\\\"Create 120 projects\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"createPLProjects\\\"]],[8],[0,\\\"Create 120 PL projects\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"createTasks\\\"]],[8],[0,\\\"Create 120 tasks\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"createWorktimes\\\"]],[8],[0,\\\"Create 120 worktimes\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"createUsers\\\"]],[8],[0,\\\"Create 120 users\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/datacreator/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\n\nconst DevelopmentFunctionsController = Controller.extend({\n    Collector: service('collector-service'),\n    ttapi: service(),\n    store: service(),\n    dialogs: service(),\n\n    saving: false,\n\n    content: alias('model'),\n\n    actions: {\n        save(func) {\n            return this.ttapi.request('ccfunctions/functions', {\n                method: 'post',\n                data: {\n                    function: func,\n                },\n            });\n        },\n\n        turnon() {\n            const promise = this.Collector.addProduct('ttfunctions');\n\n            return promise.then(() => window.location.reload());\n        },\n    },\n});\n\nexport default DevelopmentFunctionsController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { hash } from 'rsvp';\n\nconst DevelopmentFunctionsRoute = Route.extend({\n    collectorService: service(),\n\n    model() {\n        return hash({\n            turnedon: this.collectorService.testNeeds(['modules.ttfunctions']),\n            functions: this.collectorService.ttapi({\n                url: 'ccfunctions/functions',\n            }),\n        });\n    },\n});\n\nexport default DevelopmentFunctionsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"9ZSgAy3L\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"turnedon\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"h2\\\",true],[8],[0,\\\"Worktime\\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"value\\\",\\\"class\\\",\\\"rows\\\"],[[24,[\\\"model\\\",\\\"functions\\\"]],\\\"form-control\\\",\\\"5\\\"]]],false],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"model\\\",\\\"functions\\\"]]]],[8],[0,\\\"Save\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"turnon\\\"]],[8],[0,\\\"Turn on timetracker functions\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/functions/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { A } from '@ember/array';\n\nconst ImportController = Controller.extend({\n    //{from: 0, to: \"firstname\", pk: true},{from: 1, to: \"lastname\", pk: false},{from: 2, to: \"employer\", pk: false}\n    file: null,\n    //    file: [[\"Ali\",\"Lastnametus\",\"Test Company Ltd\",\"Number\"]]\n    form: null,\n    content: alias('model'),\n    mappers: A([]),\n});\n\nexport default ImportController;\n","import Controller, { inject as controller } from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { computed, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\nimport { isEmpty } from '@ember/utils';\nimport { Promise as EmberPromise } from 'rsvp';\nimport { htmlSafe } from '@ember/template';\nimport { copy } from '@ember/object/internals';\n\nconst ImportCreateController = Controller.extend({\n    mainController: controller('development.import'),\n    Collector: service('collector-service'),\n\n    dontValidate: false,\n\n    content: alias('model'),\n    file: alias('mainController.file'),\n    mappers: alias('mainController.mappers'),\n    form: alias('mainController.form'),\n    hasHeaderRow: alias('mainController.hasHeaderRow'),\n\n    fields: computed('form', function () {\n        return this.Collector.fieldArray(this.form);\n    }),\n    records: computed('file', function () {\n        const c = this.Collector;\n        const store = this.store;\n        const form = this.form;\n        const records = A([]);\n        const mappers = this.mappers;\n\n        const pkMapper = mappers.filterBy('pk')?.firstObject;\n        if (this.hasHeaderRow) {\n            this.file.shiftObject();\n        }\n        console.log(this.get('file')); //eslint-disable-line\n        if (!this.file) {\n            return;\n        }\n        this.file.forEach((file) => {\n            let q, record;\n            const arr = {};\n            if (pkMapper) {\n                q = { sideload: true };\n                q[pkMapper.to] = file[pkMapper.from];\n                record = store.query(form, q);\n            }\n            const promises = [];\n            mappers.forEach(async function (mapper) {\n                console.log(mapper); // eslint-disable-line\n                if (isEmpty(mapper.to) || isEmpty(mapper.from)) {\n                    return;\n                }\n                const field = c.field(form, mapper.to);\n                if (field.type === 'database') {\n                    if (file[mapper.from]) {\n                        const rq = { sideload: true, q: file[mapper.from], limit: 1 };\n                        //\n                        //                    split = file[mapper.from].split(' ')\n                        //                    console.log field.options.fields\n                        //                    console.log split\n                        //                    for ofield,k in field.options.fields\n                        //                        console.log ofield\n                        //                        console.log k\n                        //                        rq[ofield] = split[k]\n                        promises.push(\n                            store\n                                .query(field.options.form, rq)\n                                .then(this.returnPromise.bind(this, arr, mapper)),\n                        );\n                    } else {\n                        return (arr[mapper.to] = null);\n                    }\n                } else if (\n                    [\n                        'dropdown_values',\n                        'dropdown_userlevel',\n                        'status',\n                        'dropdown_options',\n                    ].includes(field.type) &&\n                    mapper.maps\n                ) {\n                    const value = file[mapper.from];\n                    return mapper.maps.forEach(function (item) {\n                        if (mapper.options.from[item.from] === value) {\n                            return (arr[mapper.to] = item.to);\n                        }\n                    });\n                } else {\n                    return (arr[mapper.to] = file[mapper.from]);\n                }\n            });\n\n            return EmberPromise.all(promises).then(\n                this.returnRecords.bind(this, record, form, arr, records),\n            );\n        });\n        return records;\n    }),\n    progress: computed('numericalProgress', function () {\n        return this.numericalProgress + ' %';\n    }),\n    progressStyle: computed('progress', function () {\n        return htmlSafe('width: ' + this.numericalProgress + '%');\n    }),\n\n    actions: {\n        saveRecords() {\n            set(this, 'executing', true);\n            set(this, 'numericalProgress', 0);\n            const records = this.records;\n            return this.execute_one(copy(records), records.length);\n        },\n\n        validateRecords() {\n            return this.records.invoke('validate');\n        },\n    },\n    returnPromise(arr, mapper, data) {\n        if (data.length > 0) {\n            return (arr[mapper.to] = data.firstObject);\n        }\n    },\n\n    async returnRecords(record, form, arr, records) {\n        if (record) {\n            const data = await record;\n            let model;\n            if (data.length > 0) {\n                model = this.setRecordValues(data.firstObject, arr);\n            } else {\n                model = this.store.createRecord(form, arr);\n            }\n            if (!this.dontValidate && model.hasDirtyAttributes) {\n                await model.validate();\n                if (!model.errors.isEmpty) {\n                    let errorstr = '';\n                    model.errors.forEach(function (error) {\n                        errorstr +=\n                            '<b>' + this.Collector.field(form, error.attribute).translated_name;\n                        return (errorstr += ':</b> ' + error.message + '<br>');\n                    });\n                    return set(model, 'errorString', errorstr);\n                }\n            }\n            return records.pushObject(model);\n        } else {\n            const model = this.store.createRecord(form, arr);\n            if (!this.dontValidate) {\n                model.validate();\n            }\n            return records.pushObject(model);\n        }\n    },\n\n    setRecordValues(record, arr) {\n        for (let key in arr) {\n            const item = arr[key];\n            set(record, key, item);\n        }\n        return record;\n    },\n\n    execute_one(heap, count) {\n        const record = heap.shiftObject();\n        if (!record) {\n            return;\n        }\n        if (this.dontValidate) {\n            set(record, 'validation', 'off');\n        }\n        const promise = record.save();\n\n        return promise.then(\n            () => {\n                return this.goNext(heap, count);\n            },\n            () => {\n                return this.goNext(heap, count);\n            },\n        );\n    },\n\n    goNext(heap, count) {\n        set(this, 'numericalProgress', Math.floor(((count - heap.length) / count) * 1000) / 10);\n\n        if (heap.length === 0) {\n            set(this, 'executing', false);\n        }\n\n        return this.execute_one(heap, count);\n    },\n});\n\nexport default ImportCreateController;\n","import Route from '@ember/routing/route';\n\nconst ImportCreateRoute = Route.extend();\n\nexport default ImportCreateRoute;\n","export default Ember.HTMLBars.template({\"id\":\"BGQxITxV\",\"block\":\"{\\\"symbols\\\":[\\\"record\\\",\\\"field\\\",\\\"field\\\"],\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveRecords\\\"]],[8],[0,\\\"Save\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"Don't validate\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"class\\\"],[\\\"checkbox\\\",[24,[\\\"dontValidate\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"executing\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"massedit.executing\\\"],[[\\\"rowCount\\\"],[[24,[\\\"rowCount\\\"]]]]],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[10,\\\"aria-valuenow\\\",\\\"20\\\"],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[11,\\\"style\\\",[22,\\\"progressStyle\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[22,\\\"progress\\\"],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Valid\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Record state\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"th\\\",true],[8],[1,[23,3,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"records\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"isError\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label-m label-m-open\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cancel\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,1,[\\\"errorString\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"label-m \\\",[28,\\\"if\\\",[[23,1,[\\\"isValid\\\"]],\\\"label-m-approved\\\",\\\"label-m-open\\\"],null]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move \\\",[28,\\\"if\\\",[[23,1,[\\\"isValid\\\"]],\\\"move-Checkmark\\\",\\\"move-Cancel\\\"],null]]]],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,1,[\\\"errorString\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"isNew\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label-m label-m-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"import.record.new\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"hasDirtyAttributes\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label-m label-m-warning\\\"],[8],[1,[28,\\\"t\\\",[\\\"import.record.merged\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label-m label-m-approved\\\"],[8],[1,[28,\\\"t\\\",[\\\"import.record.unchanged\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[[23,2,[]],[24,[\\\"form\\\"]],[23,1,[]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/import/create/template.hbs\"}});","/* eslint-disable ember/no-observers */\nimport Component from '@ember/component';\nimport { computed, observer, set } from '@ember/object';\n\nconst ImportFieldMapperComponent = Component.extend({\n    useAsPK: false,\n\n    _schemaFields: computed('schemaFields', 'schemaFields.[]', function () {\n        const fields = [];\n        if (!this.schemaFields) {\n            return;\n        }\n        this.schemaFields.forEach((field, key) =>\n            fields.push({\n                id: key,\n                name: field,\n            }),\n        );\n        return fields;\n    }),\n\n    _targetFields: computed('targetFields', 'targetFields.[]', 'usedFields.[]', function () {\n        if (!this.targetFields) {\n            return;\n        }\n        const fields = this.targetFields.filter((field) => {\n            let needle;\n            if (\n                ((needle = field.id), Array.from(this.usedFields).includes(needle)) &&\n                field.id !== this.to\n            ) {\n                return false;\n            } else {\n                return true;\n            }\n        });\n        return fields;\n    }),\n\n    pkObserver: observer('useAsPK', function () {\n        if (this.valueChanged) {\n            return this.valueChanged(\n                this.useAsPK,\n                this.useAsPK !== this.useAsPK,\n                'pk',\n                this.number,\n            );\n        }\n    }),\n    init() {\n        this._super(...arguments);\n        this.usedFields = [];\n        this.schemaFields = [];\n        this.targetFields = [];\n    },\n\n    actions: {\n        valueChangedTo(field) {\n            const old = this.to;\n            if (this.valueChanged) {\n                this.valueChanged(field, old, 'to', this.number);\n            }\n            return set(this, 'to', field);\n        },\n        valueChangedFrom(field) {\n            const old = this.from;\n            if (this.valueChanged) {\n                this.valueChanged(field, old, 'from', this.number);\n            }\n            return set(this, 'from', field);\n        },\n\n        valueChangedPk() {\n            return console.log(this.get('useAsPK')); // eslint-disable-line\n        },\n    },\n});\n\nexport default ImportFieldMapperComponent;\n","export default Ember.HTMLBars.template({\"id\":\"/DnVCRZz\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"From field\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\",\\\"classes\\\"],[[24,[\\\"_schemaFields\\\"]],[24,[\\\"schema\\\"]],\\\"valueChangedFrom\\\",[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"To field\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\",\\\"classes\\\"],[[24,[\\\"_targetFields\\\"]],[24,[\\\"target\\\"]],\\\"valueChangedTo\\\",[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"Use as PK\\\"],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"class\\\"],[\\\"checkbox\\\",[24,[\\\"useAsPK\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/import/field-mapper/template.hbs\"}});","/* eslint-disable ember/no-observers */\nimport Component from '@ember/component';\nimport { observer, set } from '@ember/object';\nimport { A } from '@ember/array';\n\nconst ImportFileReaderComponent = Component.extend({\n    data: A([]),\n\n    obsSplitter: observer('splitter', function () {\n        if (this.rawFile) {\n            return this.readFile(this.rawFile);\n        }\n    }),\n    actions: {\n        addFile() {\n            return this.element.querySelector('.file_input').click();\n        },\n    },\n    change(e) {\n        const self = this;\n        return Array.from(e.target.files).map((file) => self.readFile(file));\n    },\n    readFile(file) {\n        set(this, 'rawFile', file);\n        set(this, 'error', null);\n        const reader = new FileReader();\n        set(this, 'filename', file.name);\n        const splitname = file.name.split('.');\n        const filetype = splitname[splitname.length - 1];\n        if (filetype) {\n            set(this, 'filetype', filetype);\n        }\n        reader.onload = (event) => {\n            return this.processFile(event.target.result);\n        };\n\n        return reader.readAsText(file);\n    },\n\n    processFile(file) {\n        if (this.filetype === 'csv') {\n            const allTextLines = file.split(/\\r\\n|\\n/);\n            const lines = [];\n            for (let line of Array.from(allTextLines)) {\n                if (!line) {\n                    continue;\n                }\n                const data = line.split(this.splitter);\n                const tarr = [];\n                for (let d of Array.from(data)) {\n                    if (d) {\n                        tarr.push(d.replace(/(^\\s*,)|(,\\s*$)/g, ''));\n                    } else {\n                        tarr.push(d);\n                    }\n                }\n                lines.push(tarr);\n            }\n\n            return set(this, 'file', lines);\n        }\n    },\n});\n\nexport default ImportFileReaderComponent;\n","export default Ember.HTMLBars.template({\"id\":\"izKPSYxo\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"hide\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"input\\\",true],[10,\\\"class\\\",\\\"hide file_input\\\"],[11,\\\"multiple\\\",[22,\\\"multiple\\\"]],[11,\\\"value\\\",[22,\\\"value\\\"]],[10,\\\"type\\\",\\\"file\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-4 col-sm-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[22,\\\"error\\\"],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[1,[22,\\\"filename\\\"],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addFile\\\"],[[\\\"target\\\"],[[23,0,[]]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-camera\\\"],[8],[9],[0,\\\" Choose file\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/import/file-reader/template.hbs\"}});","import Controller, { inject as controller } from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport { computed } from '@ember/object';\n\nconst ImportIndexController = Controller.extend({\n    mainController: controller('development.import'),\n    intl: service(),\n    Collector: service('collector-service'),\n    splitter: ',',\n    file: alias('mainController.file'),\n    form: alias('mainController.form'),\n    hasHeaderRow: alias('mainController.hasHeaderRow'),\n    content: alias('model'),\n    showFile: computed('form', 'delimiter', function () {\n        if (this.form && this.splitter) {\n            return true;\n        }\n        return false;\n    }),\n    forms: computed(function () {\n        const forms = this.Collector.forms();\n        const t = this.intl;\n        const formOptions = [];\n        for (let key in forms) {\n            const form = forms[key];\n            formOptions.push({\n                id: key,\n                name: form.name || t.t('general.form.' + key),\n            });\n        }\n        return formOptions;\n    }),\n});\n\nexport default ImportIndexController;\n","import Route from '@ember/routing/route';\n\nconst ImportIndexRoute = Route.extend();\n\nexport default ImportIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"5dIhWnkH\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"Target form\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"prompt\\\",\\\"classes\\\"],[[24,[\\\"forms\\\"]],[24,[\\\"form\\\"]],[28,\\\"t\\\",[\\\"import.select.form\\\"],null],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"Delimiter\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"textbox\\\",[24,[\\\"splitter\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"File has header row\\\"],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"class\\\"],[\\\"checkbox\\\",[24,[\\\"hasHeaderRow\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showFile\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"Import file\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"development/import/file-reader\\\",null,[[\\\"file\\\",\\\"splitter\\\"],[[24,[\\\"file\\\"]],[24,[\\\"splitter\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"file\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"tagName\\\",\\\"route\\\"],[\\\"btn btn-m-link btn-block\\\",\\\"button\\\",\\\"development.import.map\\\"]],{\\\"statements\\\":[[0,\\\"Next\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/import/index/template.hbs\"}});","/* eslint-disable ember/no-observers */\nimport Controller, { inject as controller } from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { computed, observer, set } from '@ember/object';\nimport { A } from '@ember/array';\nimport { isEmpty, typeOf } from '@ember/utils';\n\nconst ImportMapController = Controller.extend({\n    mainController: controller('development.import'),\n    intl: service(),\n    Collector: service('collector-service'),\n    headerRow: alias('mainController.hasHeaderRow'),\n    usedFields: A([]),\n    content: alias('model'),\n    mappers: alias('mainController.mappers'),\n    form: alias('mainController.form'),\n    formFields: computed('mainController.form', function () {\n        const c = this.Collector;\n        const fields = c.fieldArray(this.mainController.form);\n        const fieldOptions = A([]);\n        fields.forEach((field) => {\n            return fieldOptions.pushObject({\n                id: field.name,\n                name: field.translated_name,\n                mandatory: field.features.mandatory,\n            });\n        });\n        //        return [\n        //            id: \"firstname\"\n        //            name: \"First name\"\n        //        ,\n        //            id: \"lastname\"\n        //            name: \"Last name\"\n        //        ,\n        //            id: \"desc\"\n        //            name: \"Description\"\n        //        ]\n        return fieldOptions;\n    }),\n    mandatoryFields: computed('formFields', function () {\n        return this.formFields.filterBy('mandatory');\n    }),\n    schemaFields: computed('mainController.file', function () {\n        const file = this.mainController.file;\n        if (isEmpty(file) || isEmpty(file[0])) {\n            this.transitionToRoute('development.import.index');\n        }\n        //        return [\"First name\",\"Last name\",\"Employer\",\"Number\"]\n        return file[0];\n    }),\n\n    cfields: observer('mappers.@each.to', function () {\n        const c = this.Collector;\n        const form = this.form;\n        const file = this.mainController.file;\n        const intl = this.intl;\n        return this.mappers.forEach((mapper) => {\n            let from;\n            if (!mapper.to || !mapper.from) {\n                return;\n            }\n            if (mapper.maps.length > 0) {\n                return;\n            }\n            const cf = c.field(form, mapper.to);\n            if (\n                !['dropdown_values', 'dropdown_userlevel', 'status', 'dropdown_options'].includes(\n                    cf.type,\n                )\n            ) {\n                return;\n            }\n            const froms = file.mapBy(mapper.from).uniq();\n            if (this.headerRow) {\n                froms.shiftObject();\n            }\n            for (let index = 0; index < froms.length; index++) {\n                from = froms[index];\n                if (!from || from === '') {\n                    continue;\n                }\n                mapper.options.from.pushObject(from);\n                mapper.maps.pushObject({ from: null, to: null, pk: false });\n            }\n            return (() => {\n                const result = [];\n                for (let option of Array.from(cf.options)) {\n                    if (typeOf(option) === 'object') {\n                        option.name = intl.t(form + '.' + cf.name + '.' + option.value);\n                    } else {\n                        const new_option = {\n                            id: option,\n                            name: intl.t(form + '.' + cf.name + '.' + option),\n                        };\n                        option = new_option;\n                    }\n                    result.push(mapper.options.to.pushObject(option));\n                }\n                return result;\n            })();\n        });\n    }),\n\n    actions: {\n        addMapper() {\n            return this.mappers.pushObject({\n                from: null,\n                to: null,\n                pk: false,\n                maps: A([]),\n                options: { from: A([]), to: A([]) },\n            });\n        },\n\n        valueChanged(field, old, type, number) {\n            if (type === 'to') {\n                let needle, needle1;\n                if (((needle = old), Array.from(this.usedFields).includes(needle))) {\n                    this.usedFields.removeObject(old);\n                }\n                if (field && ((needle1 = field), !Array.from(this.usedFields).includes(needle1))) {\n                    this.usedFields.pushObject(field);\n                }\n            }\n            set(this, 'mappers.' + number + '.' + type, field);\n            return false;\n        },\n\n        valueChangedMaps(field, old, type, map) {\n            map[type] = field;\n            return false;\n        },\n\n        removeMapper(mapper) {\n            return this.mappers.removeObject(mapper);\n        },\n    },\n});\n\nexport default ImportMapController;\n","import Route from '@ember/routing/route';\n\nconst ImportMapRoute = Route.extend();\n\nexport default ImportMapRoute;\n","export default Ember.HTMLBars.template({\"id\":\"xOeRBsMg\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"mapper\\\",\\\"index\\\",\\\"map\\\",\\\"mindex\\\",\\\"mapper\\\",\\\"index\\\"],\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addMapper\\\"]],[8],[0,\\\"Add mapper\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"h2\\\",true],[8],[0,\\\"Field mappers\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"mappers\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-2\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"development/import/field-mapper\\\",null,[[\\\"number\\\",\\\"schemaFields\\\",\\\"targetFields\\\",\\\"usedFields\\\",\\\"valueChanged\\\"],[[23,7,[]],[24,[\\\"schemaFields\\\"]],[24,[\\\"formFields\\\"]],[24,[\\\"usedFields\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"valueChanged\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default text-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeMapper\\\",[23,6,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cancel\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6,7]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"h2\\\",true],[8],[0,\\\"Value mappers\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"mappers\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[23,2,[\\\"to\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"maps\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,2,[\\\"maps\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-2\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"development/import/value-mapper\\\",null,[[\\\"maps\\\",\\\"schemaFields\\\",\\\"targetFields\\\",\\\"valueChanged\\\"],[[23,4,[]],[23,2,[\\\"options\\\",\\\"from\\\"]],[23,2,[\\\"options\\\",\\\"to\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"valueChangedMaps\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4,5]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2,3]},null],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"h2\\\",true],[8],[0,\\\"Fields that are mandatory\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"mandatoryFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"p\\\",true],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"tagName\\\",\\\"route\\\"],[\\\"btn btn-m-link btn-block\\\",\\\"button\\\",\\\"development.import.create\\\"]],{\\\"statements\\\":[[0,\\\"Next\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/import/map/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst ImportRoute = Route.extend(AuthenticatedRouteMixin);\n\nexport default ImportRoute;\n","import Route from '@ember/routing/route';\n\nconst ImportSaveRoute = Route.extend();\n\nexport default ImportSaveRoute;\n","export default Ember.HTMLBars.template({\"id\":\"VWmE8WIO\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/import/save/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"J06ujsPb\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/import/template.hbs\"}});","import { set } from '@ember/object';\nimport mapper from '../field-mapper/component';\n\nconst ImportValueMapperComponent = mapper.extend({\n    actions: {\n        valueChangedTo(field) {\n            const old = this.to;\n            if (this.valueChanged) {\n                this.valueChanged(field, old, 'to', this.maps);\n            }\n            return set(this, 'to', field);\n        },\n        valueChangedFrom(field) {\n            const old = this.from;\n            if (this.valueChanged) {\n                this.valueChanged(field, old, 'from', this.maps);\n            }\n            return set(this, 'to', field);\n        },\n    },\n});\n\nexport default ImportValueMapperComponent;\n","export default Ember.HTMLBars.template({\"id\":\"ymWj5CMo\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"From value\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\",\\\"classes\\\"],[[24,[\\\"_schemaFields\\\"]],[24,[\\\"schema\\\"]],\\\"valueChangedFrom\\\",[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"To value\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\",\\\"classes\\\"],[[24,[\\\"_targetFields\\\"]],[24,[\\\"target\\\"]],\\\"valueChangedTo\\\",[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/import/value-mapper/template.hbs\"}});","import Controller from '@ember/controller';\nimport EmberObject, { set, get, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\n// eslint-disable-next-line ember/alias-model-in-controller\nexport default Controller.extend({\n    session: service(),\n    flags: service(),\n    notifications: service(),\n    overrideFlags: null,\n    clearConsole: true,\n    flagFilter: '',\n\n    init() {\n        this._super(...arguments);\n        if (localStorage.APP) {\n            set(this, 'app_override', localStorage.APP);\n        }\n\n        if (sessionStorage.overrideFlags) {\n            set(\n                this,\n                'overrideFlags',\n                EmberObject.create(JSON.parse(sessionStorage.overrideFlags)),\n            );\n        } else {\n            set(this, 'overrideFlags', EmberObject.create());\n        }\n    },\n\n    href: computed(function () {\n        console.log(this.get('session.session')); //eslint-disable-line\n        return (\n            'localhost:4200/#/token/' +\n            get(this, 'session.session.content.authenticated.refresh_token')\n        );\n    }),\n\n    currentFlags: computed('flagFilter', 'overrideFlags.version', function () {\n        const overrides = get(this, 'overrideFlags') || {};\n        let isDirty = false;\n        let allFlags = Object.entries(get(this, 'flags').allFlags())\n            .map((...args) => {\n                let [key, value] = Array.from(args[0]);\n                let isOverriden = false;\n                if (overrides[key] !== undefined) {\n                    let oldval = value;\n                    value = overrides[key];\n                    if (oldval !== value) {\n                        isOverriden = true;\n                        isDirty = true;\n                    }\n                }\n\n                return {\n                    key,\n                    value,\n                    isOverriden,\n                };\n            })\n            .filter((item) => typeof item.value === 'boolean')\n            .filter((item) => {\n                if (this.flagFilter === '') {\n                    return true;\n                }\n                return new RegExp(this.flagFilter).test(item.key);\n            });\n\n        return {\n            allFlags,\n            isDirty,\n        };\n    }),\n\n    actions: {\n        copyAccessToken() {\n            navigator.clipboard.writeText(\n                get(this, 'session.session.content.authenticated.access_token'),\n            );\n            this.notifications.success('access token copied to clipboard', { autoClear: true });\n        },\n\n        copyRefreshToken() {\n            navigator.clipboard.writeText(\n                get(this, 'session.session.content.authenticated.refresh_token'),\n            );\n            this.notifications.success('refresh token copied to clipboard', { autoClear: true });\n        },\n\n        overrideFlag(flag) {\n            let overrideFlags = get(this, 'overrideFlags');\n\n            // overrides[flag.key] = !flag.value;\n            set(overrideFlags, flag.key, !flag.value);\n            set(overrideFlags, 'version', Math.random());\n            window.overrideFlags = overrideFlags;\n            sessionStorage.setItem('overrideFlags', JSON.stringify(overrideFlags));\n        },\n\n        setAppOverride() {\n            sessionStorage.setItem('APP', get(this, 'app_override'));\n            return location.reload();\n        },\n\n        clearAppOverride() {\n            sessionStorage.removeItem('APP');\n            return location.reload();\n        },\n\n        sendToken() {\n            return this.transitionToRoute('token', get(this, 'refreshToken'), {\n                queryParams: { url: window.location.href },\n            });\n        },\n        resetFlags() {\n            set(this, 'overrideFlags', {});\n            sessionStorage.removeItem('overrideFlags');\n            delete window.overrideFlags;\n        },\n        showToasts() {\n            this.notifications.success('This is a success toast', { autoClear: false });\n            this.notifications.info('This is an info toast', { autoClear: false });\n            this.notifications.warning('This is a warning toast', { autoClear: false });\n            this.notifications.error('This is an error toast', { autoClear: false });\n        },\n    },\n});\n","/* eslint-disable no-console */\nimport Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nconst DevelopmentIndexRoute = Route.extend({\n    Collector: service('collector-service'),\n    ttapi: service('ttapi'),\n    session: service(),\n    moment: service(),\n    store: service(),\n    sessionhelper: service(),\n\n    actions: {\n        getForms() {\n            return this.consoleLog('forms', \"Service's /forms\", 'GET');\n        },\n\n        getMe() {\n            return this.consoleLog('me', 'me', 'GET');\n        },\n\n        capiFlags() {\n            return this.consoleLog('service/flags', 'Capi flags', 'GET');\n        },\n\n        getNeededSchema() {\n            return this.consoleLog('update?show=needed', \"Service's needed schema\");\n        },\n\n        getCurrentSchema() {\n            return this.consoleLog('update?show=current', \"Service's current schema\");\n        },\n\n        getCurrentUser() {\n            const currentUser = this.session.currentUser;\n            window.$E = currentUser;\n            return console.info('currentUser ($E)', currentUser);\n        },\n\n        storeToConsole() {\n            const store = this.store;\n            window.$E = store;\n            return console.info('store saved to $E');\n        },\n\n        sessionToConsole() {\n            const session = this.moment;\n            window.$E = session;\n            return console.info('session saved to $E');\n        },\n\n        sessionhelperToConsole() {\n            window.$E = this.sessionhelper;\n            return console.info('sessionhelper saved to $E');\n        },\n\n        collectorFormsObject() {\n            const forms = this.Collector.forms();\n            window.$E = forms;\n            return console.info('collectorFormsObject ($E)', forms);\n        },\n\n        async clearMemcache() {\n            const c = this.Collector;\n            const back = await c.ajax({ url: 'system/clear_memcache' });\n            return console.log('cache cleared', back.message);\n        },\n\n        async clearPartnerMemcache() {\n            const c = this.Collector;\n            const back = await c.ajax({\n                url: 'system/clear_memcache?partnerid=' + this.session.currentUser.partnerid,\n            });\n            return console.log('partner cache cleared', back.message);\n        },\n\n        async clearUserMemcache() {\n            const c = this.Collector;\n            const back = await c.ajax({\n                url:\n                    'system/clear_memcache?partnerid=' +\n                    this.session.currentUser.partnerid +\n                    '&username=' +\n                    this.session.currentUser.username,\n            });\n            return console.log('user cache cleared', back.message);\n        },\n\n        async redisInfo() {\n            if (this.controller.clearConsole) {\n                console.clear();\n            }\n\n            const c = this.Collector;\n            const back = await c.ajax({ url: 'system/redisInfo' });\n            return console.log('redis', back.message);\n        },\n\n        async redisDumpUser() {\n            if (this.controller.clearConsole) {\n                console.clear();\n            }\n\n            const c = this.Collector;\n            const back = await c.ajax({ url: 'system/redisInfo?dump_user' });\n            return console.log('dump', back.message);\n        },\n\n        async redisDump() {\n            if (this.controller.clearConsole) {\n                console.clear();\n            }\n\n            const c = this.Collector;\n            const back = await c.ajax({ url: 'system/redisInfo?dump' });\n\n            return console.log('dump', back.message);\n        },\n\n        testAlarms() {\n            this.ttapi._get('alarms/test');\n            return console.info('testAlarms called');\n        },\n\n        async getFcmid() {\n            if (this.controller.clearConsole) {\n                console.clear();\n            }\n            const back = await this.ttapi._post('user_fcmid', null);\n            return console.log(back.fcmid);\n        },\n    },\n    consoleLog(url, text, method) {\n        if (text == null) {\n            text = '';\n        }\n        if (method == null) {\n            method = 'POST';\n        }\n        if (this.controller.clearConsole) {\n            console.clear();\n        }\n\n        const c = this.Collector;\n        const promise = c.ajax({\n            method,\n            url,\n            headers: {\n                Authorization: 'Bearer ' + get(this.session, 'session.authenticated.access_token'),\n            },\n        });\n        return promise.then((back) => console.info(text, back));\n    },\n});\n\nexport default DevelopmentIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"CyQQFRmR\",\"block\":\"{\\\"symbols\\\":[\\\"flag\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"getForms\\\"]],[8],[0,\\\"Forms to console\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"getMe\\\"]],[8],[0,\\\"Me to console\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"getNeededSchema\\\"]],[8],[0,\\\"Needed module schema to console\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"getCurrentSchema\\\"]],[8],[0,\\\"Current module schema to console\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"getCurrentUser\\\"]],[8],[0,\\\"Current user to console\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"storeToConsole\\\"]],[8],[0,\\\"Store to console\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"sessionToConsole\\\"]],[8],[0,\\\"Session to console\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"sessionhelperToConsole\\\"]],[8],[0,\\\"Sessionhelper to console\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"collectorFormsObject\\\"]],[8],[0,\\\"Collector forms object\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"clearPartnerMemcache\\\"]],[8],[0,\\\"Clear partner memcache\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"redisInfo\\\"]],[8],[0,\\\"Redis INFO\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"redisDump\\\"]],[8],[0,\\\"Redis dump\\\"],[9],[0,\\\"\\\\n         | \\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"clearUserMemcache\\\"]],[8],[0,\\\"Clear user memcache\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"redisDumpUser\\\"]],[8],[0,\\\"Redis dump userProfile\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"capiFlags\\\"]],[8],[0,\\\"Capi flags to console\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"testAlarms\\\"]],[8],[0,\\\"Test alarms\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"getFcmid\\\"]],[8],[0,\\\"User FCMID to console\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\"],[\\\"checkbox\\\",[24,[\\\"clearConsole\\\"]]]]],false],[0,\\\" Clear console\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"showToasts\\\"]],[8],[0,\\\"Show all toasts\\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[29,[[22,\\\"href\\\"]]]],[10,\\\"target\\\",\\\"_blank\\\"],[8],[0,\\\"Copy access to localhost\\\"],[9],[0,\\\" (remember: ember s -e=prodcopy)\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        Current access token \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-CopyRow pl-2 pr-2\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"copyAccessToken\\\"]],[8],[9],[0,\\\" (expires in \\\"],[1,[28,\\\"moment-from-now\\\",[[24,[\\\"session\\\",\\\"session\\\",\\\"content\\\",\\\"authenticated\\\",\\\"expires_at\\\"]]],null],false],[0,\\\")\\\\n        \\\"],[7,\\\"pre\\\",true],[8],[7,\\\"code\\\",true],[8],[1,[24,[\\\"session\\\",\\\"session\\\",\\\"content\\\",\\\"authenticated\\\",\\\"access_token\\\"]],false],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        Current refresh token \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-CopyRow pl-2\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"copyRefreshToken\\\"]],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"pre\\\",true],[8],[7,\\\"code\\\",true],[8],[1,[24,[\\\"session\\\",\\\"session\\\",\\\"content\\\",\\\"authenticated\\\",\\\"refresh_token\\\"]],false],[9],[9],[0,\\\"\\\\n        \\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        Copypaste refresh token here to login as any user\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\"],[\\\"text\\\",[24,[\\\"refreshToken\\\"]]]]],false],[0,\\\" \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"sendToken\\\"]],[8],[0,\\\"Send\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"b\\\",true],[8],[0,\\\"Override APP global\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[0,\\\"This sets an 'APP' localstorage object that overrides config.APP. Reload page after\\\"],[9],[0,\\\"\\\\n           \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[10,\\\"style\\\",\\\"width: 80%\\\"],[8],[0,\\\"\\\\n               \\\"],[7,\\\"b\\\",true],[8],[0,\\\"Example:\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"pre\\\",true],[8],[7,\\\"code\\\",true],[8],[0,\\\"{\\\\n    \\\\\\\"COLLECTOR_API_URL\\\\\\\": \\\\\\\"https://capi.moveniumprod.com\\\\\\\",\\\\n    \\\\\\\"CAPI3\\\\\\\": \\\\\\\"https://capi-3.moveniumprod.com\\\\\\\",\\\\n    \\\\\\\"TTAPI_FOLDER\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"TTAPI\\\\\\\": \\\\\\\"https://ttapi.moveniumprod.com\\\\\\\",\\\\n    \\\\\\\"TTAPI2\\\\\\\": \\\\\\\"https://ttapi2.moveniumprod.com\\\\\\\",\\\\n    \\\\\\\"ADMINTOOLURL\\\\\\\": \\\\\\\"https://at2new.movenium.com/at2/\\\\\\\"\\\\n}\\\\n\\\"],[9],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"pre\\\",true],[8],[7,\\\"code\\\",true],[8],[0,\\\"{\\\\n    \\\\\\\"COLLECTOR_API_URL\\\\\\\": \\\\\\\"https://api.moveniumtest.com\\\\\\\",\\\\n    \\\\\\\"CAPI3\\\\\\\": \\\\\\\"https://capi-3.moveniumtest.com\\\\\\\",\\\\n    \\\\\\\"TTAPI_FOLDER\\\\\\\": \\\\\\\"\\\\\\\",\\\\n    \\\\\\\"TTAPI\\\\\\\": \\\\\\\"https://api.moveniumtest.com/ttapi\\\\\\\",\\\\n    \\\\\\\"TTAPI2\\\\\\\": \\\\\\\"https://ttapi2.moveniumtest.com\\\\\\\",\\\\n    \\\\\\\"ADMINTOOLURL\\\\\\\": \\\\\\\"https://at2-lambda.moveniumtest.com/\\\\\\\"\\\\n}\\\\n\\\"],[9],[9],[0,\\\"\\\\n\\\\n\\\\n           \\\"],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control\\\",[24,[\\\"app_override\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"setAppOverride\\\"]],[8],[0,\\\"Set APP\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"clearAppOverride\\\"]],[8],[0,\\\"Clear Override\\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pt-5\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Alerts\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Danger!\\\"],[9],[0,\\\"\\\\n            This is a danger-message! Something went wrong!\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Info!\\\"],[9],[0,\\\"\\\\n            This is a info-message! Just for your information!\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Warning!\\\"],[9],[0,\\\"\\\\n            This is a warning-message! Not so fatal as danger-message, but still\\\\n            important!\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Success!\\\"],[9],[0,\\\"\\\\n            This is a success-message! Everything is fine!\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 pl-4\\\"],[8],[0,\\\"\\\\n\\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Flags\\\"],[9],[0,\\\"\\\\n       \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flexbox-column\\\"],[8],[0,\\\"\\\\n           \\\"],[7,\\\"p\\\",true],[8],[0,\\\"You don't have to refresh the page or block LaunchDarkly. These overrides only affect YOUR browser, and will not\\\\n               affect the customer's settings. These overrides are saved on the global scope as window.overrideFlags and\\\\n               in sessionStorage.overrideFlags\\\"],[9],[0,\\\"\\\\n           \\\"],[7,\\\"p\\\",true],[8],[0,\\\"Filter flags: \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\"],[[24,[\\\"text\\\"]],[24,[\\\"flagFilter\\\"]]]]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentFlags\\\",\\\"isDirty\\\"]]],null,{\\\"statements\\\":[[0,\\\"             \\\"],[7,\\\"div\\\",true],[10,\\\"style\\\",\\\"background-color: #b8e369; padding: 10px\\\"],[8],[0,\\\" \\\"],[7,\\\"p\\\",true],[10,\\\"style\\\",\\\"color:purple;font-family: 'Comic Sans MS'\\\"],[8],[0,\\\"Dude, you've like totally overriden some flags.\\\"],[9],[0,\\\"\\\\n                 \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"action\\\",[[23,0,[]],\\\"resetFlags\\\"],null]]],[8],[0,\\\"Reset flags to default\\\"],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n           \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-striped\\\"],[8],[0,\\\"\\\\n               \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n               \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                   \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Flag\\\"],[9],[0,\\\"\\\\n                   \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Value\\\"],[9],[0,\\\"\\\\n               \\\"],[9],[0,\\\"\\\\n               \\\"],[9],[0,\\\"\\\\n               \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"currentFlags\\\",\\\"allFlags\\\"]]],null,{\\\"statements\\\":[[0,\\\"                   \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                       \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"key\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"if\\\",[[23,1,[\\\"isOverriden\\\"]],\\\" - OVERRIDEN\\\"],null],false],[9],[0,\\\"\\\\n                       \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                           \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@class\\\",\\\"@value\\\",\\\"@size\\\",\\\"@theme\\\",\\\"@onToggle\\\"],[\\\"hideEmptyOnesButton\\\",[23,1,[\\\"value\\\"]],\\\"large\\\",\\\"light\\\",[28,\\\"action\\\",[[23,0,[]],\\\"overrideFlag\\\",[23,1,[]]],null]]]],[0,\\\"\\\\n                       \\\"],[9],[0,\\\"\\\\n\\\\n                   \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"               \\\"],[9],[0,\\\"\\\\n           \\\"],[9],[0,\\\"\\\\n       \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/index/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { computed, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { Promise as EmberPromise } from 'rsvp';\n\nconst DevelopmentIntegrationsController = Controller.extend({\n    Collector: service('collector-service'),\n    store: service(),\n    dialogs: service(),\n    intl: service(),\n\n    saving: false,\n    content: alias('model'),\n    export_salary_on: computed('session.currentUser', function () {\n        return this.Collector.testNeeds(['products.export_salary']);\n    }),\n\n    export_absence_on: computed('session.currentUser', function () {\n        return this.Collector.testNeeds(['products.export_absence']);\n    }),\n\n    export_salary_integrations: computed('model.[]', function () {\n        return this.model.filter((item) => item.type === 'export_salary');\n    }),\n\n    export_absence_integrations: computed('model.[]', function () {\n        return this.model.filter((item) => item.type === 'export_absence');\n    }),\n\n    actions: {\n        turn_export_salary(onoff) {\n            return this.turn('export_salary', onoff);\n        },\n\n        turn_export_absence(onoff) {\n            return this.turn('export_absence', onoff);\n        },\n\n        add_new_integration(type) {\n            return this.store.createRecord('integration', { type });\n        },\n\n        async save_integrations() {\n            set(this, 'saving', true);\n            const promises = [];\n            this.model\n                .filter((record) => record.hasDirtyAttributes)\n                .forEach((record) => promises.push(record.save()));\n\n            await EmberPromise.all(promises);\n\n            return set(this, 'saving', false);\n        },\n\n        async delete(row) {\n            const con = await this.dialogs.confirm(this.intl.t('report.confirm_delete'));\n            if (con) {\n                return row.destroyRecord();\n            }\n        },\n    },\n\n    turn(product, onoff) {\n        let promise;\n        console.log('turning ' + product, onoff); // eslint-disable-line\n\n        if (onoff === 'on') {\n            promise = this.Collector.addProduct(product);\n        } else {\n            promise = this.Collector.removeProduct(product);\n        }\n\n        return promise.then(() => window.location.reload());\n    },\n});\n\nexport default DevelopmentIntegrationsController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\n\nconst DevelopmentIntegrationsRoute = Route.extend({\n    collectorService: service(),\n\n    model() {\n        if (this.collectorService.testNeeds(['integration'])) {\n            return this.store.findAll('integration');\n        }\n    },\n});\n\nexport default DevelopmentIntegrationsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"d7SsX1Zg\",\"block\":\"{\\\"symbols\\\":[\\\"integration\\\",\\\"integration\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[0,\\\"Export salary\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"export_salary_on\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"turn_export_salary\\\",\\\"off\\\"]],[8],[0,\\\"Turn off\\\"],[9],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n            Integrations:\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"export_salary_integrations\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-inline\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[0,\\\"Name\\\"],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control\\\",[23,2,[\\\"name\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[0,\\\"Key\\\"],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"email\\\",\\\"form-control\\\",[23,2,[\\\"key\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-action\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"delete\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add_new_integration\\\",\\\"export_salary\\\"]],[8],[0,\\\"Add another\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"turn_export_salary\\\",\\\"on\\\"]],[8],[0,\\\"Turn on\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[0,\\\"Export absence\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"export_absence_on\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"turn_export_absence\\\",\\\"off\\\"]],[8],[0,\\\"Turn off\\\"],[9],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n            Integrations:\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"export_absence_integrations\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-inline\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[0,\\\"Name\\\"],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control\\\",[23,1,[\\\"name\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[0,\\\"Key\\\"],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"email\\\",\\\"form-control\\\",[23,1,[\\\"key\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-action\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"delete\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add_new_integration\\\",\\\"export_absence\\\"]],[8],[0,\\\"Add another\\\"],[9],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"turn_export_absence\\\",\\\"on\\\"]],[8],[0,\\\"Turn on\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save_integrations\\\"]],[8],[0,\\\"Save\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/integrations/template.hbs\"}});","import Component from '@ember/component';\n\nexport default Component.extend({});\n","import Component from '@ember/component';\nimport { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    ttapi: service(),\n    store: service(),\n    intl: service(),\n    tagName: 'table',\n\n    cleanLogs: computed(async function () {\n        let logs = await this.getLogsFromTtapi();\n        if (!logs) return [];\n        let arr = [];\n        logs.forEach(async (log) => {\n            let user = await this.store.findRecord('user', log.userid);\n            arr.pushObject({\n                datetime: moment(log.datetime).format('DD.MM.YYYY HH:mm:ss'),\n                user: user.lastname + ' ' + user.firstname,\n                message: log.message,\n                channel: log.channel\n                    .split(',')\n                    .map((ch) => this.intl.t('general.log_channel.' + ch))\n                    .join(','),\n            });\n        });\n        return arr;\n    }),\n\n    async getLogsFromTtapi() {\n        return await this.ttapi.request('/notification/logs');\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"gtmc4yKv\",\"block\":\"{\\\"symbols\\\":[\\\"notificationLogs\\\",\\\"notificationLog\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.datetime\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.user\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.message\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.channel\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"await\\\",[[24,[\\\"cleanLogs\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"datetime\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"user\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"message\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"channel\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"     \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"no-rows-cell\\\"],[10,\\\"colspan\\\",\\\"4\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.no_logrows_found\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/notifications/log-table/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"5XkdzzOz\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"development/notifications/log-table\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/notifications/template.hbs\"}});","import Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nconst DevelopmentOwnreportsController = Controller.extend({\n    Collector: service('collector-service'),\n    content: alias('model'),\n\n    actions: {\n        saveReport(report) {\n            return this.Collector.ttapi({\n                url: report.id ? 'defaultReports/' + report.id : 'defaultReports',\n                method: report.id ? 'PUT' : 'POST',\n                data: report,\n                success(data) {\n                    return (report.id = data.id);\n                },\n            });\n        },\n        removeReport(report) {\n            return this.Collector.ttapi({\n                url: 'defaultReports/' + report.id,\n                method: 'DELETE',\n            });\n        },\n\n        addNewReport() {\n            return this.model.pushObject({ name: '', settings: { key: '', type: 'cc' } });\n        },\n    },\n});\n\nexport default DevelopmentOwnreportsController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\n\nconst DevelopmentOwnreportsRoute = Route.extend({\n    Collector: service('collector-service'),\n    model() {\n        const c = this.Collector;\n        return c.ttapi({\n            url: 'defaultReports',\n        });\n    },\n});\n\nexport default DevelopmentOwnreportsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"aQG4XCI7\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\"],\\\"statements\\\":[[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Name\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Key\\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,1,[\\\"name\\\"]],\\\"form-control\\\"]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,1,[\\\"settings\\\",\\\"key\\\"]],\\\"form-control\\\"]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveReport\\\",[23,1,[]]]],[8],[0,\\\"Save\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeReport\\\",[23,1,[]]]],[8],[0,\\\"Remove\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addNewReport\\\"]],[8],[0,\\\"Add report\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/ownreports/template.hbs\"}});","/* eslint-disable ember/no-observers */\nimport Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport { computed, observer, set, get } from '@ember/object';\n\nconst DevelopmentOwnrolesController = Controller.extend({\n    dialogs: service(),\n    _refreshNeeded: false,\n    content: alias('model'),\n    userlevel_record: computed('model', function () {\n        const form = this.model.findBy('external_type', 'user');\n        return this.store\n            .peekAll('form-field')\n            .find((item) => item.external_type === 'userlevel' && get(item, 'form.id') === form.id);\n    }),\n\n    dropdown_options: computed('field', function () {\n        const own_roles = this.userlevel_record.options.split('\\n').filter(function (item) {\n            const splitted = item.split(';');\n            return parseInt(splitted[0], 10) >= 10;\n        });\n        return own_roles.map(function (item) {\n            const splitted = item.split(';');\n            return { id: splitted[0], name: splitted[1] };\n        });\n    }),\n\n    selected_role: computed('role', function () {\n        const role = this.role;\n\n        if (!role) {\n            return;\n        }\n\n        const role_obj = this.dropdown_options.findBy('id', role);\n\n        return role + ' - ' + role_obj.name;\n    }),\n\n    form: observer('role', function () {\n        if (this.role === undefined) {\n            return;\n        }\n        if (this.role === 'null') {\n            return this.transitionToRoute('development.ownroles');\n        }\n        return this.transitionToRoute('development.ownroles.role', this.role);\n    }),\n\n    actions: {\n        async addOwnRole() {\n            const name = await this.dialogs.prompt('Name for new role');\n            if (!name) {\n                return;\n            }\n            const record = this.userlevel_record;\n            set(record, 'options', record.options + '\\n' + this.nextUserLevel() + ';' + name);\n            this.notifyPropertyChange('dropdown_options');\n            record.save();\n            return set(this, '_refreshNeeded', true);\n        },\n\n        async renameRole() {\n            const role = this.role;\n            const name = await this.dialogs.prompt('New name for role');\n            if (!name) {\n                return;\n            }\n            const record = this.userlevel_record;\n            let options = record.options.split('\\n');\n            options = options.map(function (item) {\n                const splitted = item.split(';');\n                if (splitted[0] !== role) {\n                    return item;\n                }\n                return splitted[0] + ';' + name;\n            });\n\n            set(record, 'options', options.join('\\n'));\n\n            this.notifyPropertyChange('dropdown_options');\n            this.notifyPropertyChange('selected_role');\n            record.save();\n            return set(this, '_refreshNeeded', true);\n        },\n\n        async removeRole() {\n            const role = this.role;\n            const val = await this.dialogs.confirm(\"Do you really wan't to remove this user role?\");\n            if (!val) {\n                return;\n            }\n            const record = this.userlevel_record;\n            let options = record.options.split('\\n');\n            options = options.filter(function (item) {\n                const splitted = item.split(';');\n                if (splitted[0] !== role) {\n                    return true;\n                }\n            });\n\n            set(record, 'options', options.join('\\n'));\n\n            set(this, 'role', null);\n            this.notifyPropertyChange('dropdown_options');\n            this.notifyPropertyChange('selected_role');\n            this.transitionToRoute('development.ownroles');\n            record.save();\n            return set(this, '_refreshNeeded', true);\n        },\n    },\n    nextUserLevel() {\n        let max = 9;\n        this.userlevel_record.options.split('\\n').forEach(function (item) {\n            const num = parseInt(item.split(';')[0], 10);\n            if (num > max) {\n                return (max = num);\n            }\n        });\n        return max + 1;\n    },\n});\n\nexport default DevelopmentOwnrolesController;\n","import Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport { isArray } from '@ember/array';\nimport { isPresent } from '@ember/utils';\nimport { computed, get } from '@ember/object';\n\nconst DevelopmentOwnrolesRoleController = Controller.extend({\n    Collector: service('collector-service'),\n    init() {\n        this._super(...arguments);\n        this.hideDenyAccess = [\n            'wage_period',\n            'salarytype',\n            'holidaypay',\n            'bank',\n            'bankdeducter',\n            'holiday',\n            'saldodeducter',\n            'rounding_rule_v2',\n        ];\n        this.privilegeTypes = {\n            deny_access: {\n                type: 'form-setting',\n                setting: 'access_denied',\n            },\n            deny_add: {\n                type: 'form-setting',\n                setting: 'hide_addrow',\n            },\n            deny_edit: {\n                type: 'form-setting',\n                setting: 'hide_edit',\n            },\n            deny_remove: {\n                type: 'form-setting',\n                setting: 'hide_remove',\n            },\n            deny_approving: {\n                type: 'form-field-setting',\n                field: 'status',\n                settings: [{ name: 'readonly', value: 'true' }],\n            },\n            ownrows: {\n                type: 'form-field-setting',\n                link_to: 'user',\n                settings: [\n                    { name: 'filter', value: '$userProfile->primary_key' },\n                    { name: 'set', value: '$userProfile->primary_key' },\n                ],\n            },\n            ownrows_user: {\n                type: 'form-field-setting',\n                field: 'username',\n                settings: [{ name: 'filter', value: '$userProfile->username' }],\n            },\n            load_profile: {\n                type: 'form-setting',\n                setting: 'load_profile',\n                value: '1',\n            },\n        };\n    },\n\n    content: alias('model'),\n    forms: computed(function () {\n        return this.store.peekAll('form').filter((form) => {\n            return this.Collector.formExists(form.external_type);\n        });\n    }),\n\n    formSettingsForRole: computed('model.{formSettings.[],role}', function () {\n        const id = this.model.role;\n        return this.model.formSettings.filter((item) => item.userlevel === id);\n    }),\n\n    formFieldSettingsForRole: computed('model.{formFieldSettings.[],role}', function () {\n        const id = this.model.role;\n        return this.model.formFieldSettings.filter((item) => item.userlevel === id);\n    }),\n\n    privilegeArray: computed('forms', 'model', function () {\n        const forms = this.forms;\n\n        const arr = {};\n\n        forms.forEach((item) => {\n            const form = item.external_type;\n            return (arr[form] = {\n                deny_access: this.isPrivilegeOn(form, 'deny_access'),\n                load_profile: this.isPrivilegeOn(form, 'load_profile'),\n                ownrows:\n                    form === 'user'\n                        ? this.isPrivilegeOn(form, 'ownrows_user')\n                        : this.isPrivilegeOn(form, 'ownrows'),\n                deny_add: this.isPrivilegeOn(form, 'deny_add'),\n                deny_edit: this.isPrivilegeOn(form, 'deny_edit'),\n                deny_remove: this.isPrivilegeOn(form, 'deny_remove'),\n                deny_approving: this.isPrivilegeOn(form, 'deny_approving'),\n            });\n        });\n        return arr;\n    }),\n\n    actions: {\n        toggle(form, type) {\n            if (this.isPrivilegeOn(form, type)) {\n                return this.setPrivilege(form, type, false);\n            } else {\n                return this.setPrivilege(form, type, true);\n            }\n        },\n    },\n    isPrivilegeOn(form, type) {\n        let privilege = this.privilegeTypes[type];\n\n        if (isArray(privilege)) {\n            privilege = privilege[0];\n        }\n\n        if (privilege && privilege.type === 'form-setting') {\n            return this.isFormPrivilegeOn(form, privilege.setting);\n        } else if (privilege && privilege.type === 'form-field-setting') {\n            if (isPresent(privilege.link_to)) {\n                const possible_fields = this.Collector.fieldArray(form).filterBy(\n                    'options.form',\n                    privilege.link_to,\n                );\n                if (possible_fields.length > 0) {\n                    return this.isFormFieldSettingOn(\n                        form,\n                        possible_fields[0].name,\n                        privilege.settings,\n                    );\n                }\n            } else {\n                return this.isFormFieldSettingOn(form, privilege.field, privilege.settings);\n            }\n        } else {\n            return console.error('unknown privilege type ' + type); // eslint-disable-line\n        }\n    },\n\n    isFormFieldSettingOn(form, field, settings) {\n        const field_settings = this.formFieldSettingsForRole.filter(\n            (record) =>\n                get(record, 'field.form.external_type') === form &&\n                get(record, 'field.external_type') === field,\n        );\n\n        let count = 0;\n        settings.forEach((setting) => {\n            if (field_settings.findBy('name', setting.name)) {\n                return count++;\n            }\n        });\n\n        if (count === 0) {\n            return false;\n        } else if (count === settings.length) {\n            return true;\n        } else {\n            console.error(JSON.stringify(settings) + ' has different states'); // eslint-disable-line\n            return true;\n        }\n    },\n\n    isFormPrivilegeOn(form, settingName) {\n        const form_settings = this.formSettingsForRole.filter(\n            (record) => get(record, 'form.external_type') === form,\n        );\n\n        if (form_settings.findBy('name', settingName)) {\n            return true;\n        } else {\n            return false;\n        }\n    },\n\n    // support for arrays\n    setPrivilege(form, type, onoff) {\n        const privilege = this.privilegeTypes[type];\n\n        if (isArray(privilege)) {\n            return privilege.forEach((item) => {\n                return this._setPrivilege(form, type, onoff, item);\n            });\n        } else {\n            return this._setPrivilege(form, type, onoff, privilege);\n        }\n    },\n\n    _setPrivilege(form, type, onoff, privilege) {\n        if (privilege && privilege.type === 'form-setting') {\n            const value = privilege.value ? privilege.value : 'true';\n            return this.setFormPrivilege(form, privilege.setting, value, onoff);\n        } else if (privilege && privilege.type === 'form-field-setting') {\n            if (isPresent(privilege.link_to)) {\n                const possible_fields = this.Collector.fieldArray(form).filterBy(\n                    'options.form',\n                    privilege.link_to,\n                );\n                if (possible_fields.length > 1 || possible_fields.length === 0) {\n                    alert(\n                        'Could not find suitable field for setting, found ' +\n                            possible_fields.length +\n                            ' fields',\n                    );\n                    return;\n                }\n\n                return this.setFormFieldSettings(\n                    form,\n                    possible_fields[0].name,\n                    privilege.settings,\n                    onoff,\n                );\n            } else {\n                return this.setFormFieldSettings(form, privilege.field, privilege.settings, onoff);\n            }\n        } else {\n            return console.error('unknown privilege type ' + type); // eslint-disable-line\n        }\n    },\n\n    setFormFieldSettings(form, field, settings, onoff) {\n        const field_record = this.store\n            .peekAll('form-field')\n            .find(\n                (item) => item.external_type === field && get(item, 'form.external_type') === form,\n            );\n\n        if (!field_record) {\n            alert('this privilege cannot be used with form ' + form);\n            return;\n        }\n\n        const field_settings = this.formFieldSettingsForRole.filter(\n            (record) =>\n                get(record, 'field.form.external_type') === form &&\n                get(record, 'field.external_type') === field,\n        );\n\n        if (onoff) {\n            return settings.forEach((setting) => {\n                return this.store\n                    .createRecord('form-field-setting', {\n                        name: setting.name,\n                        value: setting.value,\n                        userlevel: this.model.role,\n                        field: field_record,\n                    })\n                    .save();\n            });\n        } else {\n            return settings.forEach((setting) => {\n                return field_settings.findBy('name', setting.name).destroyRecord();\n            });\n        }\n    },\n\n    setFormPrivilege(form, settingName, value, onoff) {\n        const form_record = this.store.peekAll('form').findBy('external_type', form);\n\n        const form_settings = this.formSettingsForRole.filter(\n            (record) => get(record, 'form.external_type') === form,\n        );\n\n        if (onoff) {\n            return this.store\n                .createRecord('form-setting', {\n                    name: settingName,\n                    value,\n                    userlevel: this.model.role,\n                    form: form_record,\n                })\n                .save();\n        } else {\n            return form_settings.findBy('name', settingName).destroyRecord();\n        }\n    },\n});\n\nexport default DevelopmentOwnrolesRoleController;\n","import Route from '@ember/routing/route';\nimport { hash } from 'rsvp';\n\nconst DevelopmentOwnrolesRoleRoute = Route.extend({\n    model(params) {\n        return hash({\n            formSettings: this.store.peekAll('form-setting'),\n            formFieldSettings: this.store.peekAll('form-field-setting'),\n            role: params.id,\n        });\n    },\n});\n\nexport default DevelopmentOwnrolesRoleRoute;\n","export default Ember.HTMLBars.template({\"id\":\"mqwV+Ha1\",\"block\":\"{\\\"symbols\\\":[\\\"form\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"forms\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"th\\\",true],[8],[1,[23,1,[\\\"external_type\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"and\\\",[[28,\\\"not\\\",[[28,\\\"get\\\",[[28,\\\"get\\\",[[24,[\\\"privilegeArray\\\"]],[23,1,[\\\"external_type\\\"]]],null],\\\"deny_access\\\"],null]],null],[28,\\\"or\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"external_type\\\"]],\\\"user\\\"],null],[28,\\\"is-equal\\\",[[23,1,[\\\"external_type\\\"]],\\\"project\\\"],null]],null]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,1,[\\\"external_type\\\"]],[23,0,[\\\"hideDenyAccess\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"input\\\",true],[11,\\\"checked\\\",[28,\\\"get\\\",[[28,\\\"get\\\",[[24,[\\\"privilegeArray\\\"]],[23,1,[\\\"external_type\\\"]]],null],\\\"deny_access\\\"],null]],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,1,[\\\"external_type\\\"]],\\\"deny_access\\\"],null]],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\"Deny access\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[8],[7,\\\"input\\\",true],[11,\\\"checked\\\",[28,\\\"get\\\",[[28,\\\"get\\\",[[24,[\\\"privilegeArray\\\"]],[23,1,[\\\"external_type\\\"]]],null],\\\"load_profile\\\"],null]],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,1,[\\\"external_type\\\"]],\\\"load_profile\\\"],null]],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\"Use same settings as for userlevel 1\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[8],[7,\\\"input\\\",true],[11,\\\"checked\\\",[28,\\\"get\\\",[[28,\\\"get\\\",[[24,[\\\"privilegeArray\\\"]],[23,1,[\\\"external_type\\\"]]],null],\\\"ownrows\\\"],null]],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,1,[\\\"external_type\\\"]],[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"external_type\\\"]],\\\"user\\\"],null],\\\"ownrows_user\\\",\\\"ownrows\\\"],null]],null]],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\"Show only own rows\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[8],[7,\\\"input\\\",true],[11,\\\"checked\\\",[28,\\\"get\\\",[[28,\\\"get\\\",[[24,[\\\"privilegeArray\\\"]],[23,1,[\\\"external_type\\\"]]],null],\\\"deny_approving\\\"],null]],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,1,[\\\"external_type\\\"]],\\\"deny_approving\\\"],null]],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\"Deny approving\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[8],[7,\\\"input\\\",true],[11,\\\"checked\\\",[28,\\\"get\\\",[[28,\\\"get\\\",[[24,[\\\"privilegeArray\\\"]],[23,1,[\\\"external_type\\\"]]],null],\\\"deny_add\\\"],null]],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,1,[\\\"external_type\\\"]],\\\"deny_add\\\"],null]],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\"Deny add\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[8],[7,\\\"input\\\",true],[11,\\\"checked\\\",[28,\\\"get\\\",[[28,\\\"get\\\",[[24,[\\\"privilegeArray\\\"]],[23,1,[\\\"external_type\\\"]]],null],\\\"deny_edit\\\"],null]],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,1,[\\\"external_type\\\"]],\\\"deny_edit\\\"],null]],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\"Deny edit\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[8],[7,\\\"input\\\",true],[11,\\\"checked\\\",[28,\\\"get\\\",[[28,\\\"get\\\",[[24,[\\\"privilegeArray\\\"]],[23,1,[\\\"external_type\\\"]]],null],\\\"deny_remove\\\"],null]],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,1,[\\\"external_type\\\"]],\\\"deny_remove\\\"],null]],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\"Deny remove\\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/ownroles/role/template.hbs\"}});","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\n\nconst DevelopmentOwnrolesRoute = Route.extend({\n    dialogs: service(),\n    intl: service(),\n\n    beforeModel() {\n        return this.transitionTo('development.ownroles');\n    },\n\n    model() {\n        return this.store.findAll('form');\n    },\n\n    actions: {\n        willTransition(transition) {\n            if (transition.targetName.substring(0, 11) !== 'development') {\n                return transition.then(() => {\n                    if (this.controller._refreshNeeded) {\n                        return this.dialogs\n                            .alert(this.intl.t('general.settings_refresh_needed'))\n                            .then(() => location.reload());\n                    }\n                });\n            }\n        },\n    },\n});\n\nexport default DevelopmentOwnrolesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"0TLwNf3n\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[24,[\\\"dropdown_options\\\"]],[24,[\\\"role\\\"]],\\\"Select role...\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addOwnRole\\\"]],[8],[0,\\\"Add own role\\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selected_role\\\"]]],null,{\\\"statements\\\":[[0,\\\"Selected role: \\\"],[7,\\\"h2\\\",true],[8],[1,[22,\\\"selected_role\\\"],false],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeRole\\\"]],[8],[0,\\\"Remove\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"renameRole\\\"]],[8],[0,\\\"Rename\\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/ownroles/template.hbs\"}});","import Controller from '@ember/controller';\nimport { computed, set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nconst DevelopmentIndexController = Controller.extend({\n    content: alias('model'),\n    products: computed('model', function () {\n        return this.model.forms.updater.products;\n    }),\n\n    error: computed('model', function () {\n        return this.model.forms.updater.error;\n    }),\n\n    actions: {\n        async addproduct() {\n            set(this, 'loading', true);\n            const productname = this.addproductname;\n\n            if (!productname || productname === 'Choose') {\n                alert('Product must have some name');\n                return;\n            }\n\n            set(this, 'addproductname', '');\n            await this.Collector.addProduct(productname);\n\n            return this.send('reloadModel');\n        },\n\n        async removeproduct(productname) {\n            await this.Collector.removeProduct(productname);\n            return this.send('reloadModel');\n        },\n\n        selectProduct(product) {\n            return set(this, 'addproductname', product);\n        },\n    },\n});\nexport default DevelopmentIndexController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { hash } from 'rsvp';\nimport { get } from '@ember/object';\n\nexport default Route.extend({\n    Collector: service('collector-service'),\n    session: service(),\n    store: service(),\n    initapp: service(),\n    model() {\n        return hash({\n            forms: get(this, 'Collector').ajax({\n                url: 'forms',\n                headers: {\n                    Authorization: `Bearer ${get(this, 'session.session.authenticated.access_token')}`,\n                },\n            }),\n            products: get(this, 'Collector').ajax({\n                url: 'service/productList',\n                headers: {\n                    Authorization: `Bearer ${get(this, 'session.session.authenticated.access_token')}`,\n                },\n            }),\n        });\n    },\n\n    actions: {\n        reloadModel() {\n            get(this, 'initapp').clearInit();\n            return this.refresh();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"tKmImzjh\",\"block\":\"{\\\"symbols\\\":[\\\"product\\\",\\\"product\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[1,[22,\\\"error\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Name\\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"products\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger btn-small\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeproduct\\\",[23,2,[]]]],[8],[0,\\\"remove\\\"],[9],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[7,\\\"p\\\",true],[8],[0,\\\"Add new Product:\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"selectProduct\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[10,\\\"class\\\",\\\"form-control add-fields\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"option\\\",true],[8],[0,\\\"Choose\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"products\\\",\\\"products\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"option\\\",true],[11,\\\"id\\\",[23,1,[]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[]],[24,[\\\"addproductname\\\"]]],null]],[8],[1,[23,1,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addproduct\\\"]],[8],[0,\\\"Add\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/products/template.hbs\"}});","import Route from '@ember/routing/route';\n\nconst DevelopmentCronRoute = Route.extend();\n\nexport default DevelopmentCronRoute;\n","export default Ember.HTMLBars.template({\"id\":\"xPV50evp\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"react\\\",[],[[\\\"@comp\\\"],[\\\"ResourceView\\\"]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/react/template.hbs\"}});","import Controller from '@ember/controller';\n// import { Promise as EmberPromise } from 'rsvp';\n// import PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\n// import ObjectProxy from '@ember/object/proxy';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport { isPresent } from '@ember/utils';\n\nexport default Controller.extend({\n    ttapi: service(),\n    store: service(),\n    // eslint-disable-next-line ember/avoid-leaking-state-in-ember-objects\n    eventCodesValue: [\n        { key: 100, name: 'NFC key denied' },\n        { key: 111, name: 'NFC key has expired' },\n        { key: 205, name: 'Key not found' },\n        { key: 204, name: 'Open authorized' },\n    ],\n    // eslint-disable-next-line ember/avoid-leaking-state-in-ember-objects\n    eventCodeOptions: [\n        { key: 100, name: 'NFC key denied' },\n        { key: 101, name: 'NFC key accepted' },\n        { key: 102, name: 'Programming started with programming NFC key' },\n        { key: 103, name: 'Programming ended with programming NFC key' },\n        {\n            key: 104,\n            name: 'Removal of all accepted keys from lock started with programming NFC key',\n        },\n        { key: 105, name: 'All accepted keys removed from lock with programming NFC key' },\n        { key: 106, name: \"NFC key added to lock's accepted keys\" },\n        { key: 107, name: \"NFC key removed from lock's accepted keys\" },\n        { key: 108, name: 'Removal of all accepted keys pending' },\n        { key: 109, name: 'NFC key error' },\n        { key: 111, name: 'NFC key has expired' },\n        { key: 200, name: 'Broken key' },\n        { key: 201, name: 'Duplicate key' },\n        { key: 202, name: 'Revoked key removed' },\n        { key: 203, name: 'One-time key used' },\n        { key: 204, name: 'Open authorized' },\n        { key: 205, name: 'Key not found' },\n        { key: 206, name: 'Master key authorized' },\n        { key: 207, name: 'No capability' },\n        { key: 208, name: 'Key mass erase started' },\n        { key: 209, name: 'Key mass erase completed' },\n        { key: 210, name: 'Key expired' },\n        { key: 211, name: 'Key not yet valid' },\n        { key: 212, name: 'Open denied' },\n        { key: 213, name: 'Out of memory' },\n        { key: 300, name: 'Wireless power enabled' },\n        { key: 301, name: 'Wireless power disabled' },\n        { key: 302, name: 'Door opened' },\n        { key: 303, name: 'Door closed' },\n        { key: 500, name: 'Network connected' },\n        { key: 501, name: 'Telemetry enabled' },\n        { key: 502, name: 'Topic subscribed' },\n        { key: 503, name: 'Topic subscription failed' },\n        { key: 504, name: 'Network error' },\n        { key: 505, name: 'Telemetry disabled' },\n        { key: 506, name: 'Unknown message received' },\n        { key: 507, name: 'Message received' },\n        { key: 508, name: 'Message sent' },\n        { key: 509, name: 'Invalid message received' },\n        { key: 510, name: 'Secure communication link established' },\n        { key: 511, name: 'Secure communication link failed' },\n        { key: 512, name: 'Time updated' },\n        { key: 513, name: 'Telemetry message failed' },\n        { key: 514, name: 'Firmware update available' },\n        { key: 515, name: 'Firmware update in progress' },\n        { key: 516, name: 'Firmware update completed' },\n        { key: 517, name: 'Firmware update failed' },\n        { key: 518, name: 'Remote open accepted' },\n        { key: 519, name: 'Key handled' },\n        { key: 520, name: 'Remote command received' },\n        { key: 521, name: 'Remote command replied' },\n        { key: 522, name: 'Remote open confirmed' },\n        { key: 523, name: 'Remote open failed' },\n        { key: 600, name: 'Message sent to cloud' },\n        { key: 601, name: 'Message received from cloud' },\n        { key: 602, name: 'Message sent to cloud' },\n        { key: 603, name: 'Message received from cloud' },\n        { key: 604, name: 'Message sent to cloud' },\n        { key: 605, name: 'Message received from cloud' },\n        { key: 606, name: 'Message sent to cloud' },\n        { key: 607, name: 'Message received from cloud' },\n        { key: 608, name: 'Message sent to cloud' },\n        { key: 609, name: 'Message received from cloud' },\n        { key: 610, name: 'Message sent to cloud' },\n        { key: 611, name: 'Message received from cloud' },\n        { key: 612, name: 'Message sent to cloud' },\n        { key: 613, name: 'Message received from cloud' },\n        { key: 614, name: 'Message sent to cloud' },\n        { key: 615, name: 'Message received from cloud' },\n        { key: 616, name: 'Message sent to cloud' },\n        { key: 617, name: 'Message received from cloud' },\n        { key: 618, name: 'Message sent to cloud' },\n        { key: 619, name: 'Message received from cloud' },\n        { key: 620, name: 'Message received from cloud' },\n        { key: 621, name: 'Message received from cloud' },\n        { key: 800, name: 'Firmware update requested' },\n        { key: 900, name: 'Locked idle mode enabled' },\n        { key: 901, name: 'Master mode enabled' },\n        { key: 902, name: 'Idle day mode enabled' },\n        { key: 903, name: 'Unlocked mode enabled' },\n        { key: 904, name: 'Master mode disabled' },\n        { key: 1100, name: 'Firmware update forced manually' },\n        { key: 1200, name: 'Device reboot' },\n        { key: 1201, name: 'Device ready' },\n        { key: 1202, name: 'Forced device reboot' },\n        { key: 1300, name: 'Door firmware update started' },\n        { key: 1301, name: 'Door firmware update completed' },\n        { key: 1302, name: 'Door open sequence sent' },\n        { key: 1303, name: 'Door communication fault' },\n        { key: 1304, name: 'Door communication fault' },\n        { key: 1305, name: 'Door communication fault' },\n        { key: 1306, name: 'Door communication fault' },\n        { key: 1307, name: 'Door communication fault' },\n        { key: 1308, name: 'Door communication fault' },\n        { key: 1309, name: 'Door communication fault' },\n        { key: 1310, name: 'Bolt idle' },\n        { key: 1311, name: 'Bolt micro switch fault' },\n        { key: 1312, name: 'Door open sequence completed' },\n        { key: 1313, name: 'Waiting door open retry' },\n        { key: 1314, name: 'Door open failed' },\n        { key: 1400, name: 'Bluetooth boot completed' },\n        { key: 1401, name: 'Bluetooth connected' },\n        { key: 1402, name: 'Bluetooth disconnected' },\n        { key: 1403, name: 'eKey accepted' },\n        { key: 1404, name: 'eKey denied' },\n        { key: 1405, name: 'eKey not yet valid' },\n        { key: 1406, name: 'eKey has expired' },\n        { key: 1407, name: 'One-time eKey used' },\n        { key: 1408, name: 'Bluetooth data received' },\n        { key: 1409, name: 'Bluetooth data requested' },\n        { key: 1410, name: 'Bluetooth response sent' },\n        { key: 1411, name: 'Bluetooth boot failed' },\n        { key: 1500, name: 'Door locked' },\n        { key: 1501, name: 'Door closed in day mode' },\n        { key: 1502, name: 'Handle turned in day mode' },\n        { key: 1503, name: 'Handle released in day mode' },\n        { key: 1504, name: 'Door opened in day mode' },\n        { key: 1505, name: 'Inside handle turned while door locked' },\n        { key: 1506, name: 'Inside handle released while door locked' },\n        { key: 1507, name: 'Locked door opened from inside' },\n        { key: 1508, name: 'Unlocking door' },\n        { key: 1509, name: 'Door unlocked' },\n        { key: 1510, name: 'Door unlocking failed' },\n        { key: 1511, name: 'Unlocked door opened' },\n        { key: 1512, name: 'Unlocked door not opened' },\n        { key: 1513, name: 'Locked door opened' },\n        { key: 1514, name: 'Door left open' },\n        { key: 1515, name: 'Door closed' },\n        { key: 1516, name: 'Operational state response sent' },\n        { key: 1517, name: 'Door locking failed' },\n        { key: 50002, name: 'Remote open request sent' },\n        { key: 50003, name: 'Remote open request attempt without permission' },\n        { key: 50004, name: 'Remote command sent' },\n        { key: 50005, name: 'Remote boot request sent' },\n        { key: 50006, name: 'Remote boot request attempt without permission' },\n        { key: 50007, name: 'Operational state request sent' },\n        { key: 50008, name: 'Operational state request attempt without permission' },\n    ],\n    // eslint-disable-next-line ember/avoid-leaking-state-in-ember-objects\n    columns: [\n        { name: 'Timestamp', valuePath: 'eventTimestamp', width: 200 },\n        { name: 'Lock serial', valuePath: 'lockSerial', width: 200 },\n        { name: 'Tag UUID', valuePath: 'reference', width: 200 },\n        { name: 'Event Code', valuePath: 'eventCode', width: 200 },\n        { name: 'message', valuePath: 'message', width: 200 },\n        { name: 'Log timestamp', valuePath: 'logTimestamp', width: 200 },\n    ],\n    notinuse: alias('model'),\n\n    filters: computed('startFilter', 'endFilter', 'serials', 'eventCodesValue.[]', function () {\n        let filters = new Object();\n        filters.send = false;\n        if (get(this, 'eventCodesValue'))\n            filters.eventCodes = get(this, 'eventCodesValue').mapBy('key');\n        if (get(this, 'serials')) {\n            filters.serials = get(this, 'serials');\n        }\n        if (get(this, 'startFilter')) {\n            filters.from = get(this, 'startFilter.target.value') + ':00';\n        }\n        if (get(this, 'endFilter')) {\n            filters.to = get(this, 'endFilter.target.value') + ':00';\n        }\n\n        return filters;\n    }),\n\n    logs: computed('filters', async function () {\n        let url = 'api/rollockEvents';\n        let filters = get(this, 'filters');\n        if (!filters.from || !filters.to || !filters.serials) return;\n        if (filters) {\n            for (const key in filters) {\n                if (key == Object.keys(filters)[0]) {\n                    url += '?' + key + '=' + filters[key];\n                } else {\n                    url += '&' + key + '=' + filters[key];\n                }\n            }\n        }\n\n        return await get(this, 'ttapi')._get(url);\n    }),\n    filteredLogs: computed('tagFilter', 'logs', async function () {\n        if (isPresent(get(this, 'tagFilter.target.value'))) {\n            return (await get(this, 'logs'))\n                .filterBy('reference', get(this, 'tagFilter.target.value'))\n                .reverse();\n        }\n        return (await get(this, 'logs')).reverse();\n    }),\n    actions: {\n        async selectProject(value) {\n            const rollocks = await get(this, 'store').query('rollock', {\n                project: get(value, 'id'),\n            });\n            set(this, 'serials', rollocks.mapBy('serialnumber').join(','));\n        },\n    },\n});\n","import Component from '@ember/component';\nimport { computed, get } from '@ember/object';\n\nexport default Component.extend({\n    tagName: '',\n    name: computed('eventCodeOptions', 'eventCode', function () {\n        return get(this, 'eventCodeOptions').findBy('key', get(this, 'eventCode')).name;\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"yM1/7nGi\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"name\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/rollock/event-name/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"kYcXLzHR\",\"block\":\"{\\\"symbols\\\":[\\\"table\\\",\\\"b\\\",\\\"r\\\",\\\"value\\\",\\\"cell\\\",\\\"head\\\",\\\"r\\\",\\\"columnValue\\\",\\\"option\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[0,\\\"From\\\"],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"change\\\"],[\\\"form-control\\\",\\\"datetime-local\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"startFilter\\\"]]],null]],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[0,\\\"To\\\"],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"change\\\"],[\\\"form-control\\\",\\\"datetime-local\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"endFilter\\\"]]],null]],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[0,\\\"Project\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"presence\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"presence.project\\\"],[[\\\"_class\\\",\\\"change\\\"],[\\\"form-control\\\",\\\"selectProject\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"worktime.project\\\"],[[\\\"_class\\\",\\\"change\\\"],[\\\"form-control\\\",\\\"selectProject\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[0,\\\"NFC tag\\\"],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"placeholder\\\",\\\"keyUp\\\"],[\\\"form-control\\\",\\\"NFC-tag\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"tagFilter\\\"]]],null]],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[0,\\\"Events\\\"],[9],[0,\\\"\\\\n        \\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@dropdownClass\\\",\\\"@tagName\\\",\\\"@searchEnabled\\\",\\\"@selected\\\",\\\"@options\\\",\\\"@searchField\\\",\\\"@onChange\\\"],[\\\"power-select-add-field\\\",\\\"div\\\",true,[23,0,[\\\"eventCodesValue\\\"]],[23,0,[\\\"eventCodeOptions\\\"]],\\\"name\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"eventCodesValue\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[23,9,[\\\"name\\\"]],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[9]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"logs\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"ember-table\\\",[[12,\\\"class\\\",\\\"movenium-table\\\"]],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"head\\\"]],[],[[\\\"@columns\\\"],[[23,0,[\\\"columns\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"row\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"et-cell-container\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"th-text-wrapper\\\"],[8],[1,[23,8,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-pending\\\",[[24,[\\\"logs\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,1,[\\\"body\\\"]],[],[[\\\"@staticHeight\\\",\\\"@estimateRowHeight\\\",\\\"@rows\\\"],[true,18,[28,\\\"to-array\\\",[[28,\\\"await\\\",[[24,[\\\"filteredLogs\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,2,[\\\"row\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[6,[23,3,[\\\"cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"valuePath\\\"]],\\\"eventTimestamp\\\"],null],[28,\\\"is-equal\\\",[[23,5,[\\\"valuePath\\\"]],\\\"logTimestamp\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[11,\\\"title\\\",[28,\\\"moment-format\\\",[[23,4,[]],\\\"YYYY-MM-DD hh:mm:ss\\\"],null]],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"moment-format\\\",[[23,4,[]],\\\"LLL\\\"],null],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"valuePath\\\"]],\\\"eventCode\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"code\\\",true],[8],[1,[28,\\\"development/rollock/event-name\\\",null,[[\\\"eventCodeOptions\\\",\\\"eventCode\\\"],[[24,[\\\"eventCodeOptions\\\"]],[23,4,[]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"]],\\\"parameters\\\":[4,5]}],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/rollock/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst DevelopmentRoute = Route.extend(AuthenticatedRouteMixin);\n\nexport default DevelopmentRoute;\n","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\n\nconst DevelopmentServiceValidatorController = Controller.extend({\n    ttapi: service(),\n\n    loading: false,\n    errors: null,\n    success: null,\n\n    init() {\n        this._super(...arguments);\n    },\n\n    content: alias('model'),\n    actions: {\n        async execute() {\n            set(this, 'loading', true);\n            set(this, 'errors', null);\n            set(this, 'success', null);\n\n            try {\n                const response = await this.ttapi.request('api/validateService');\n                set(this, 'loading', false);\n\n                if (response?.errors) {\n                    set(this, 'errors', response.errors);\n                }\n\n                if (response?.success) {\n                    set(this, 'success', response.success);\n                }\n            } catch (error) {\n                set(this, 'loading', false);\n                set(this, 'errors', [error.message]);\n            }\n        },\n    },\n});\n\nexport default DevelopmentServiceValidatorController;\n","import Route from '@ember/routing/route';\n\nconst DevelopmentServiceValidatorRoute = Route.extend();\n\nexport default DevelopmentServiceValidatorRoute;\n","export default Ember.HTMLBars.template({\"id\":\"oDvziNdA\",\"block\":\"{\\\"symbols\\\":[\\\"error\\\"],\\\"statements\\\":[[7,\\\"h2\\\",true],[8],[0,\\\"Service validator\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Notice\\\"],[9],[0,\\\"\\\\n    Service validator only reports issues that have a specific check in TTAPI serviceValidator.\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    Success does not mean that service is necessarily properly configured, it just means that the\\\\n    current checks did not find any issues.\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary my-2\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"execute\\\",[24,[\\\"selectedScript\\\"]]]],[8],[0,\\\"Execute\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"success\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[8],[1,[22,\\\"success\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"Found errors\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Error\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/servicevalidator/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class smslogsTableComponent extends Component {\n    @service ttapi;\n\n    get styleNamespace() {\n        return podNames['development/notifications/log-table'];\n    }\n\n    get logs() {\n        let startdate = this.args.date ? this.args.date.split('_')[0] + ':00:00' : null;\n        let enddate = this.args.date ? this.args.date.split('_')[1] + ':24:00' : null;\n\n        return this.getLogs(startdate, enddate);\n    }\n\n    async getLogs(startdate, enddate) {\n        return this.ttapi.request('/messages/smslogs', {\n            method: 'GET',\n            data: { startdate, enddate },\n        });\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"kk3OKxpg\",\"block\":\"{\\\"symbols\\\":[\\\"logs\\\",\\\"log\\\",\\\"@date\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[23,3,[]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.select_dates_first\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[23,0,[\\\"logs\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"table\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.datetime\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.content\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.partnerid\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.sms_count\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.message_count\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.type\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.userid\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.log.msisdn\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"await\\\",[[23,0,[\\\"logs\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"datetime\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"content\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"partnerid\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"sms_count\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"message_count\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"type\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"userid\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"msisdn\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"no-rows-cell\\\"],[10,\\\"colspan\\\",\\\"4\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.no_logrows_found\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/smslogs/smslogs-table/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"VO73VDRW\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"date-range-picker\\\",[[12,\\\"class\\\",\\\"pb-4 pt-4\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"date\\\"]]]]],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"development/smslogs/smslogs-table\\\",[],[[\\\"@date\\\"],[[23,0,[\\\"date\\\"]]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/smslogs/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"qsjYe3Bl\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/development/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/calendar/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryCalendarController, service;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport filterModel from '../../../mixins/filter-model';\n\n({\n    inject: { service },\n} = Ember);\n\nWorksitediaryCalendarController = GeneralReportController.extend(filterModel, {\n    dialogs: service(),\n    intl: service(),\n    Collector: service('collector-service'),\n    queryParams: ['date', 'project', 'user', 'event'],\n    skip_params: ['page', 'order'],\n    project: null,\n    form: 'diary',\n    user: null,\n    event: false,\n    date:\n        moment().startOf('month').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('month').format('YYYY-MM-DD'),\n    localStorageKey: 'diarycalendar_defaultColumns',\n    // do not use limiting with calender\n    limit: null,\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'user',\n            }),\n        ]);\n    }),\n    filteredEvents: Ember.computed('model.[]', 'filters.@each.value', function () {\n        return this._filterThese(this.get('model'), ['page', 'order', 'event']);\n    }),\n    eventFields: Ember.computed(function () {\n        var c, col_arr, fields;\n        c = this.get('Collector');\n        col_arr = ['user', 'project', 'status', 'description', 'weather'];\n        fields = c.fieldArray('worksitediary', col_arr);\n        return fields;\n    }),\n    actions: {\n        catchActions: function (action, params) {\n            var c, cols, fields;\n            if (action === 'fieldsUpdate') {\n                c = this.get('Collector');\n                cols = [];\n                params.forEach((col) => {\n                    return cols.push(col.ext);\n                });\n                fields = c.fieldArray(this.get('form'), cols);\n                return this.set('calFields', fields);\n            }\n        },\n        openEditor: function (row) {\n            return this.transitionToRoute(\n                'diary.report.date.project',\n                row.get('date'),\n                row.get('project.id'),\n            );\n        },\n        addDiary: function (day) {\n            return this.transitionToRoute('diary.report.date', {\n                date: day,\n            });\n        },\n        remove: function (row) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('general.remove_row'))\n                .then(function (con) {\n                    if (con) {\n                        return row.destroyRecord();\n                    }\n                });\n        },\n        eventDropped: function (day, event) {\n            var c, dropped_record, duplicates, id, model, record;\n            c = this.get('Collector');\n            [id, model] = event.split(':');\n            dropped_record = this.get('store').peekRecord(model, id);\n            if (dropped_record.get('date') === day) {\n                return;\n            }\n            record = c.copyRecord(dropped_record);\n            record.set('date', day);\n            record.set('attachments', null); // don't copy photos\n            duplicates = this.get('filteredModel').filter((item) => {\n                return (\n                    day === item.get('date') && record.get('project.id') === item.get('project.id')\n                );\n            });\n            if (duplicates.length > 0) {\n                record.unloadRecord();\n                return this.get('dialogs').alert(\n                    this.get('intl').t('diary.calendar.duplicate_error'),\n                );\n            } else {\n                return record.save().catch((row) => {\n                    var msg;\n                    msg = '<h4>' + this.get('intl').t('worktime.calendar.error') + '</h4><br>';\n                    if (\n                        this.get('intl').exists('worktime.calendar.error_type.' + row.errors.error)\n                    ) {\n                        msg += this.get('intl').t(\n                            'worktime.calendar.error_type.' + row.errors.error,\n                        );\n                    } else if (this.get('intl').exists('errors.' + row.errors.error)) {\n                        msg += this.get('intl').t('errors.' + row.errors.error);\n                    } else {\n                        msg += row.errors.error_msg;\n                    }\n                    record.destroyRecord();\n                    return this.get('dialogs').alert(msg);\n                });\n            }\n        },\n    },\n});\n\nexport default WorksitediaryCalendarController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/calendar/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport initRoute from '../../../mixins/init-route';\n\nWorksitediaryIndexRoute = Ember.Route.extend(AuthenticatedRouteMixin, initRoute, {\n    tools: Ember.inject.service(),\n    queryParams: {\n        project: {\n            refreshModel: true,\n        },\n        diary_date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        event: {\n            refreshModel: true,\n        },\n        more: {\n            refreshModel: true,\n        },\n    },\n    more: null,\n    model: function (params) {\n        params.sideload = ['user.image', 'user.firstname', 'user.lastname', 'project.name'];\n        delete params.page;\n        // check if more-param is present, parse it correctly and finally remove it from params\n        if (params.more != null) {\n            params.more.split('|').forEach(function (param) {\n                var split, splitted;\n                splitted = param.split(':');\n                if (splitted[0].includes('-')) {\n                    if (Ember.isPresent(splitted[1])) {\n                        split = splitted[0].split('-');\n                        if (Ember.isEmpty(params[split[0]])) {\n                            return (params[split[0]] = {\n                                [`${split[1]}`]: splitted[1],\n                            });\n                        }\n                    }\n                } else {\n                    return (params[splitted[0]] = splitted[1]);\n                }\n            });\n            this.set('more', params.more);\n        } else {\n            this.set('more', null);\n        }\n        if (params != null && params['more']) {\n            delete params['more'];\n        }\n        if (params.event) {\n            delete params.event;\n            this.store.query('worksitediary', params);\n            return this.store.peekAll('worksitediary');\n        } else {\n            delete params.event;\n            this.store.query('diary', params);\n            return this.store.peekAll('diary');\n        }\n    },\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        if (this.get('more')) {\n            return this.get('more')\n                .split('|')\n                .forEach(function (param) {\n                    var splitted;\n                    splitted = param.split(':');\n                    return controller.set(splitted[0], splitted[1]);\n                });\n        }\n    },\n});\n\nexport default WorksitediaryIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"8mePZPP8\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\",\\\"row\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right event-toggle\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"theme\\\",\\\"onToggle\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[[24,[\\\"event\\\"]],\\\"light\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"event\\\"]]],null]],null],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"diary.calendar.events.toggle\\\"],null],\\\"\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"        \\\\n\\\"],[9],[0,\\\" \\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"event\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"form-column-selector\\\",null,[[\\\"form\\\",\\\"shownColumns\\\",\\\"localStorageKey\\\",\\\"bubbleActions\\\"],[[24,[\\\"form\\\"]],[24,[\\\"shownColumns\\\"]],[24,[\\\"localStorageKey\\\"]],\\\"catchActions\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"calendar-report\\\",null,[[\\\"date\\\",\\\"hideDateRangePicker\\\"],[[24,[\\\"date\\\"]],true]],{\\\"statements\\\":[[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\",\\\"class\\\",\\\"tagName\\\",\\\"data-field\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"eventDropped\\\",[23,1,[]]],null],\\\"draggable-calendar-day\\\",\\\"div\\\",[23,1,[\\\"date\\\"]]]],{\\\"statements\\\":[[4,\\\"calendar-report-day\\\",null,[[\\\"day\\\"],[[23,1,[]]]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"calendar-report-add\\\",null,[[\\\"click\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"addDiary\\\",[23,1,[]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"event\\\"]]],null,{\\\"statements\\\":[[4,\\\"calendar-card-v2\\\",null,[[\\\"data\\\",\\\"day\\\",\\\"fields\\\",\\\"date_field\\\",\\\"classNames\\\",\\\"topImage\\\",\\\"onclick\\\",\\\"remove\\\"],[[24,[\\\"filteredModel\\\"]],[23,1,[]],[24,[\\\"calFields\\\"]],\\\"date\\\",\\\"worktask-calendar-card\\\",\\\"user-image\\\",[28,\\\"action\\\",[[23,0,[]],\\\"openEditor\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"remove\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[28,\\\"concat\\\",[[23,2,[\\\"id\\\"]],\\\":\\\",[23,2,[\\\"_internalModel\\\",\\\"modelName\\\"]]],null],\\\"draggable-calendar-day-item\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"calendar-card-v2\\\",null,[[\\\"data\\\",\\\"day\\\",\\\"fields\\\",\\\"date_field\\\",\\\"classNames\\\",\\\"topImage\\\",\\\"remove\\\"],[[24,[\\\"filteredEvents\\\"]],[23,1,[]],[24,[\\\"eventFields\\\"]],\\\"date\\\",\\\"worktask-calendar-card\\\",\\\"user-image\\\",[28,\\\"action\\\",[[23,0,[]],\\\"remove\\\"],null]]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/calendar/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/combo/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryComboController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport pdfmixin from '../../../mixins/worksitediary_pdf';\n\nDiaryComboController = GeneralReportController.extend(pdfmixin, {\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    cordova: Ember.inject.service('own-cordova-service'),\n    store: Ember.inject.service(),\n    form: 'diary',\n    settings: Em.Object.create({\n        hideExports: true,\n        rowSettings: Em.Object.create({\n            hideActions: true,\n        }),\n    }),\n    //            editRoute: {\n    //                dynamic: true\n    //                route: 'diary.report.date.project'\n    //                fields: ['date','project']\n    //            }\n    limit: 100,\n    showColumns: ['project', 'date', 'works', 'deviations', 'weather', 'status'],\n    showColumnsWorktime: ['project', 'date', 'user', 'work_hours'],\n    showColumnsPresence: ['project', 'date', 'user', 'in', 'out'],\n    linkedReports: Em.computed('model', function () {\n        var c;\n        c = this.get('Collector');\n        return c.fieldArray('diary').filterBy('type', 'databasearray');\n    }),\n    status: 'all',\n    queryParams: ['project', 'date', 'wtPage', 'prPage'],\n    date: moment().format('YYYY-MM-DD'),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'date',\n        }),\n        Em.Object.create({\n            field: 'project',\n        }),\n    ]),\n    //        Em.Object.create({field: \"user\"})\n    //        Em.Object.create({type: \"searchbox\", bindto: \"q\"})\n    mappedFilters: Em.computed('filters.@each.value', function () {\n        return this.get('filters').map(function (filter) {\n            return {\n                name: filter.get('field'),\n                value: filter.get('value'),\n            };\n        });\n    }),\n    projectField: Em.computed('project', function () {\n        var c, field;\n        c = this.get('Collector');\n        field = c.field('diary', 'project');\n        field.value = this.get('project');\n        return field;\n    }),\n    dateField: Em.computed('date', function () {\n        var c, field;\n        c = this.get('Collector');\n        field = c.field('diary', 'date');\n        field.value = this.get('date');\n        return field;\n    }),\n    project: null,\n    diaryFields: Em.computed(function () {\n        return Object.entries(this.Collector.fields('diary')).map((field) => {\n            Em.set(field[1], 'ext', field[0]);\n            if (!field[1]['name']) {\n                Em.set(field[1], 'name', this.get('intl').t('report.diary.' + field[0]));\n            }\n            return field[1];\n        });\n    }),\n    actions: {\n        print: function () {\n            return print();\n        },\n        filterChanged: function (value, field) {\n            return this.get('filters').forEach(function (filter) {\n                if (filter.get('field') === field) {\n                    if (field === 'project' && value) {\n                        return filter.set('value', value.get('id'));\n                    } else {\n                        return filter.set('value', value);\n                    }\n                }\n            });\n        },\n    },\n});\n\nexport default DiaryComboController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/combo/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryComboRoute, service;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\n({\n    inject: { service },\n} = Ember);\n\nDiaryComboRoute = GeneralReportRoute.extend({\n    store: service(),\n    Collector: service('collector-service'),\n    flags: service(),\n    evented: Ember.inject.service(),\n    form: 'diary',\n    queryParams: {\n        wtPage: {\n            refreshModel: true,\n        },\n        prPage: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n    },\n    limit: 100,\n    model: function (params) {\n        var c, dorder, dpar, f, i, len, o, obj, param, porder, ppar, ref, value, worder, wpar;\n        params = this._super(params);\n        c = this.get('Collector');\n        wpar = {\n            sideload: true,\n            limit: params.limit,\n        };\n        dpar = {\n            sideload: true,\n            limit: params.limit,\n        };\n        ppar = {\n            sideload: true,\n            limit: params.limit,\n        };\n        for (param in params) {\n            value = params[param];\n            if (param === 'wtPage' && value) {\n                wpar.offset = (value - 1) * params.limit;\n            }\n            if (param === 'prPage' && value) {\n                ppar.offset = (value - 1) * params.limit;\n            }\n            if (c.fieldExists('diary', param)) {\n                dpar[param] = value;\n            }\n            if (c.fieldExists('worktime', param)) {\n                wpar[param] = value;\n            }\n            if (c.fieldExists('presence', param)) {\n                ppar[param] = value;\n            }\n            if (param === 'order' && value) {\n                worder = [];\n                dorder = [];\n                porder = [];\n                ref = value.split(',');\n                for (i = 0, len = ref.length; i < len; i++) {\n                    o = ref[i];\n                    f = o;\n                    if (f.slice(-1) === '-') {\n                        f = f.slice(0, -1);\n                    }\n                    if (c.fieldExists('diary', f)) {\n                        dorder.push(o);\n                    }\n                    if (c.fieldExists('worktime', f)) {\n                        worder.push(o);\n                    }\n                    if (c.fieldExists('presence', f)) {\n                        porder.push(o);\n                    }\n                }\n                if (dorder.length > 0) {\n                    dpar.order = dorder.join(',');\n                }\n                if (worder.length > 0) {\n                    wpar.order = worder.join(',');\n                }\n                if (porder.length > 0) {\n                    ppar.order = porder.join(',');\n                }\n            }\n        }\n        if (Em.isPresent(params.project) && Em.isPresent(params.date)) {\n            if (!this.get('flags').test('ember-movenium-form-report-diary')) {\n                obj = {\n                    diary: this.get('store').query('diary', dpar),\n                    worktime: this.get('store').query('worktime', wpar),\n                };\n                if (c.testNeedsOne('presence')) {\n                    obj.presence = this.get('store').query('presence', ppar);\n                }\n                return Ember.RSVP.hash(obj);\n            } else {\n                this.controllerFor('diary.combo').set(\n                    'diary',\n                    this.get('store').query('diary', dpar),\n                );\n                this.controllerFor('diary.combo').set('qParamsW', wpar);\n                if (c.testNeedsOne('presence')) {\n                    this.controllerFor('diary.combo').set('qParamsP', ppar);\n                }\n                this.evented.storeEvent('update', null, null);\n                return true;\n            }\n        }\n        return null;\n    },\n});\n\nexport default DiaryComboRoute;\n","export default Ember.HTMLBars.template({\"id\":\"YF31hExI\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"report\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row no-print\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-4 col-md-2\\\"],[8],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"dateField\\\"]]],[[\\\"change\\\"],[\\\"filterChanged\\\"]]],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-4 col-md-3\\\"],[8],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"projectField\\\"]]],[[\\\"change\\\"],[\\\"filterChanged\\\"]]],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-4 col-md-3\\\"],[8],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link print-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"print\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.print\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"model\\\"]],[28,\\\"flag\\\",[\\\"ember-movenium-form-report-diary\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.diary\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[24,[\\\"diary\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"record-list\\\",null,[[\\\"fields\\\",\\\"model\\\"],[[24,[\\\"diaryFields\\\"]],[24,[\\\"diary\\\",\\\"firstObject\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"diary.combo.no_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.worktimes\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filter\\\",\\\"@showFilters\\\",\\\"@localStorageKey\\\"],[\\\"worktime\\\",[23,0,[\\\"qParamsW\\\"]],\\\" \\\",\\\"diarycomp.worktime\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,7,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,8,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,9,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,10,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,10,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,10,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[10]}],[0,\\\"\\\\n                \\\"],[6,[23,9,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,9,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,9,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,9,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,9,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,9,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[9]}],[0,\\\"\\\\n            \\\"],[6,[23,8,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,8,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"qParamsP\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.presences\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@localStorageKey\\\"],[\\\"presence\\\",[23,0,[\\\"qParamsP\\\"]],\\\" \\\",\\\"diarycomp.presences\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[6,[23,6,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                        \\\"],[6,[23,6,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                        \\\"],[6,[23,6,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"linkedReports\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h2\\\",true],[8],[1,[23,2,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"form\\\",\\\"query\\\"],[[23,2,[\\\"options\\\",\\\"form\\\"]],[24,[\\\"mappedFilters\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.diary\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[24,[\\\"model\\\",\\\"diary\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"record-list\\\",null,[[\\\"fields\\\",\\\"model\\\"],[[24,[\\\"diaryFields\\\"]],[24,[\\\"model\\\",\\\"diary\\\",\\\"firstObject\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"diary.combo.no_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.worktimes\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"page\\\",\\\"settings\\\",\\\"localStorageKey\\\",\\\"limit\\\"],[\\\"bubbleTransition\\\",\\\"worktime\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\",\\\"worktime\\\"]],[24,[\\\"showColumnsWorktime\\\"]],[24,[\\\"wtPage\\\"]],[24,[\\\"settings\\\"]],\\\"diarycomp.worktime\\\",[24,[\\\"limit\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"presence\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.presences\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"page\\\",\\\"settings\\\",\\\"localStorageKey\\\",\\\"limit\\\"],[\\\"bubbleTransition\\\",\\\"presence\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\",\\\"presence\\\"]],[24,[\\\"showColumnsPresence\\\"]],[24,[\\\"prPage\\\"]],[24,[\\\"settings\\\"]],\\\"diarycomp.presences\\\",[24,[\\\"limit\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"linkedReports\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h2\\\",true],[8],[1,[23,1,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"form\\\",\\\"query\\\"],[[23,1,[\\\"options\\\",\\\"form\\\"]],[24,[\\\"mappedFilters\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"diary.combo.select_filters\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/combo/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/database-array/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryDatabasearrayComponent,\n    get,\n    oneWay,\n    service,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\n({\n    //import baseField from '../base-field/component'\n    inject: { service },\n    computed: { oneWay },\n    get,\n} = Ember);\n\nDiaryDatabasearrayComponent = Ember.Component.extend({\n    store: service(),\n    Collector: service('collector-service'),\n    didReceiveAttrs: function () {\n        return this._super();\n    },\n    //        @set 'value', oneWay(@get('model.'+@get('field.name')))\n    specialFormat: ['user', 'images'],\n    value: Ember.computed.oneWay('field.value'),\n    values: Ember.computed('value', function () {\n        var field, model;\n        field = this.get('field');\n        model = this.get('model');\n        return model.get(get(field, 'name'));\n    }),\n    dateField: Ember.computed(function () {\n        return this.get('Collector')\n            .fieldArray(this.get('field.options.form'))\n            .filterBy('type', 'date')\n            .get('firstObject');\n    }),\n    projectField: Ember.computed(function () {\n        var fields;\n        fields = this.get('Collector')\n            .fieldArray(this.get('field.options.form'))\n            .filter(function (item) {\n                return get(item, 'options.form') === 'project';\n            });\n        return fields.get('firstObject');\n    }),\n    userField: Ember.computed(function () {\n        var fields;\n        fields = this.get('Collector')\n            .fieldArray(this.get('field.options.form'))\n            .filter(function (item) {\n                return get(item, 'options.form') === 'user';\n            });\n        return fields.get('firstObject');\n    }),\n    items: Ember.computed('model.date', 'model.project', function () {\n        var params;\n        params = {};\n        params[this.get('dateField.name')] = this.get('model.date');\n        params[this.get('projectField.name')] = this.get('model.project.id');\n        return this.get('store').query(this.get('field.options.form'), params);\n    }),\n    filteredItems: Ember.computed('items.isFulfilled', 'values.[]', function () {\n        var items, selectedItems;\n        selectedItems = this.get('values').mapBy('id');\n        items = Ember.A(this.get('items')).filter(function (item) {\n            var ref;\n            return (ref = item.get('id')), indexOf.call(selectedItems, ref) < 0;\n        });\n        return items;\n    }),\n    actions: {\n        toggleModal: function () {\n            this.toggleProperty('showModal');\n            return false;\n        },\n        addItem: function (item) {\n            return this.get('values').pushObject(item);\n        },\n        removeItem: function (item) {\n            return this.get('values').removeObject(item);\n        },\n    },\n});\n\nexport default DiaryDatabasearrayComponent;\n","export default Ember.HTMLBars.template({\"id\":\"cNG1DMzO\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\",\\\"_field\\\",\\\"index\\\",\\\"item\\\",\\\"_field\\\",\\\"index\\\",\\\"item\\\",\\\"_field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"cards\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"values\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"item\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,7,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"userField\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"get\\\",[[23,7,[]],[28,\\\"concat\\\",[[24,[\\\"userField\\\",\\\"name\\\"]],\\\".isLoaded\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"user-icon\\\",[[28,\\\"get\\\",[[23,7,[]],[28,\\\"concat\\\",[[24,[\\\"userField\\\",\\\"name\\\"]],\\\".image.firstObject.thumb\\\"],null]],null]],[[\\\"size\\\"],[\\\"sm\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"description\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"field\\\",\\\"options\\\",\\\"fields\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,8,[]],[24,[\\\"specialFormat\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,8,[]],[24,[\\\"field\\\",\\\"options\\\",\\\"form\\\"]],[28,\\\"get\\\",[[23,7,[]],[23,8,[]]],null]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[8]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"images\\\",[24,[\\\"field\\\",\\\"options\\\",\\\"fields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"images\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"images\\\",[24,[\\\"field\\\",\\\"options\\\",\\\"form\\\"]],[23,7,[\\\"images\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link add-card-btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"close\\\",\\\"header\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"],null],[28,\\\"t\\\",[\\\"diary.databasearray.select_items\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"diary.databasearray.included\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"list-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"values\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"list-row\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeItem\\\",[23,4,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"field\\\",\\\"options\\\",\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,6,[]],0],null]],null,{\\\"statements\\\":[[0,\\\" - \\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,5,[]],[24,[\\\"field\\\",\\\"options\\\",\\\"form\\\"]],[28,\\\"get\\\",[[23,4,[]],[23,5,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5,6]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"diary.databasearray.excluded\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"list-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"filteredItems\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[23,1,[\\\"clicked\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"list-row\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addItem\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"field\\\",\\\"options\\\",\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,3,[]],0],null]],null,{\\\"statements\\\":[[0,\\\" - \\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,2,[]],[24,[\\\"field\\\",\\\"options\\\",\\\"form\\\"]],[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2,3]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/database-array/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/events/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport localization from '../../../classes/localization';\n\nWorksitediaryIndexController = GeneralReportController.extend({\n    form: 'worksitediary',\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: 'worksitediary.edit',\n            historyRoute: 'worksitediary.history',\n        }),\n        sortByColumn: 'date-',\n        fullPdfSettings: {\n            insertPageBreak: true,\n            rotateImages: true,\n        },\n    }),\n    showColumns: ['date', 'project', 'title', 'description', 'images', 'rating', 'weather'],\n    queryParams: ['project', 'date', 'page', 'status'],\n    status: 'all',\n    date: moment().subtract(1, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'date',\n        }),\n        Em.Object.create({\n            field: 'project',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n    },\n});\n\nexport default WorksitediaryIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/events/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nWorksitediaryIndexRoute = GeneralReportRoute.extend({\n    flags: service(),\n    form: 'worksitediary',\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-diary')) {\n            params.sideload = true;\n            return this.store.query('worksitediary', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('diary.events').set('qParams', params);\n        }\n    },\n});\n\nexport default WorksitediaryIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"4d1mNFtx\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-diary\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"worksitediary\\\",[23,0,[\\\"qParams\\\"]],\\\"date,project,q\\\",\\\"user.worktimegroup,user.employer\\\",[28,\\\"hash\\\",null,[[\\\"date\\\"],[[23,0,[\\\"date\\\"]]]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/worksitediary/edit/\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\",\\\"status\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\",[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",\\\"worksitediary\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/events/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport { set } from '@ember/object';\n\nimport pdfmixin from '../../../mixins/worksitediary_pdf';\n\nimport { fetchWeather } from 'tt4/ember-movenium/utils/weather';\n\nimport moment from 'moment';\n\nWorksitediaryIndexController = GeneralReportController.extend(pdfmixin, {\n    notifications: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    cordova: Ember.inject.service('own-cordova-service'),\n    store: Ember.inject.service(),\n    weather: Ember.inject.service(),\n    form: 'diary',\n    showForm: false,\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: {\n                dynamic: true,\n                route: 'diary.report.date.project',\n                fields: ['date', 'project'],\n            },\n        }),\n    }),\n    showColumns: ['project', 'date', 'works', 'deviations', 'weather', 'status'],\n    status: 'all',\n    queryParams: ['project', 'date', 'page', 'user', 'status'],\n    date: moment().subtract(1, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'date',\n        }),\n        Em.Object.create({\n            field: 'project',\n        }),\n        Em.Object.create({\n            field: 'user',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    project: null,\n    user: null,\n    isWeatherLoading: false,\n    weatherStringToObject: function (string) {\n        var e, parsed;\n        if (!string) {\n            return false;\n        }\n        try {\n            parsed = JSON.parse(string);\n        } catch (error) {\n            e = error;\n            return false;\n        }\n        if (parsed.temperature) {\n            return parsed;\n        }\n        return false;\n    },\n    actions: {\n        fetchNewWeather: function () {\n            this.set('isWeatherLoading', true);\n            return this.store\n                .query('project', {\n                    id: this.get('showForm.project.id'),\n                    sideload: true,\n                })\n                .then((proj) => {\n                    return this.weather\n                        .fetchWeatherByProject(proj.firstObject, this.get('showForm.date'))\n                        .then((res) => {\n                            this.set('showForm.weather', JSON.stringify(res));\n                            return this.set('isWeatherLoading', false);\n                        })\n                        .catch((e) => {\n                            if (e.message === 'projectLocation is null') {\n                                this.notifications.error(\n                                    this.intl.t('general.weather.no_projectLocation'),\n                                    {\n                                        autoClear: true,\n                                    },\n                                );\n                                return this.set('isWeatherLoading', false);\n                            }\n                        });\n                });\n        },\n        onFieldChange: function (field, value) {\n            return this.set('showForm.' + field, value);\n        },\n\n        closeEditModal: function () {\n            return this.set('showForm', false);\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        transitionToEditRoute: function (row) {\n            const date = row.date;\n            const project = row.project.id;\n            return this.transitionToRoute('diary.report.date.project', date, project);\n        },\n    },\n});\n\nexport default WorksitediaryIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexRoute, service;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\n({\n    inject: { service },\n} = Ember);\n\nWorksitediaryIndexRoute = GeneralReportRoute.extend({\n    store: service(),\n    flags: service(),\n    form: 'diary',\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    beforeModel: function (transition) {\n        if (!this.get('Collector').testNeeds(['diary@access'])) {\n            transition.abort();\n            return this.transitionTo('diary.events');\n        }\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-diary')) {\n            params.sideload = true;\n            return this.get('store').query('diary', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('diary.index').set('qParams', params);\n        }\n    },\n});\n\nexport default WorksitediaryIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"df5bzqIS\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-diary\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"diary\\\",[23,0,[\\\"qParams\\\"]],\\\"user.worktimegroup,user.employer\\\",[28,\\\"hash\\\",null,[[\\\"date\\\"],[[23,0,[\\\"date\\\"]]]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,6,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/diary/report?modal=diary%2C\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[9]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"transitionToEditRoute\\\"],null]]]],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\",\\\"status\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\",[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"page\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"status\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showForm\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"menu.add_\\\",[23,0,[\\\"form\\\"]]],null]],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[[23,0,[\\\"form\\\"]],[23,0,[\\\"showForm\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"onFieldChange\\\"],null],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showForm\\\"]]],null],null],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"weather\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@error\\\",\\\"@class\\\",\\\"@label\\\"],[[23,5,[\\\"label\\\"]],[23,0,[\\\"errors\\\",\\\"firstObject\\\",\\\"message\\\"]],[28,\\\"concat\\\",[\\\"ember-movenium-field-\\\",[23,5,[\\\"name\\\"]]],null],[23,5,[\\\"label\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"call\\\",[[28,\\\"fn\\\",[[24,[\\\"weatherStringToObject\\\"]],[23,0,[\\\"showForm\\\",\\\"weather\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[5,\\\"addon/fields/weather\\\",[],[[\\\"@field\\\",\\\"@form\\\",\\\"@record\\\",\\\"@value\\\",\\\"@shouldAutomaticallyFetchNewWeather\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[23,0,[\\\"showForm\\\"]],[28,\\\"call\\\",[[28,\\\"fn\\\",[[24,[\\\"weatherStringToObject\\\"]],[23,0,[\\\"showForm\\\",\\\"weather\\\"]]],null]],null],false]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-primary \\\",[28,\\\"if\\\",[[23,0,[\\\"isWeatherLoading\\\"]],\\\"is-loading\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"fetchNewWeather\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.weather.refetch_weather\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[6,[23,4,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@skipLastUsed\\\",\\\"@mandatory\\\",\\\"@onChange\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[28,\\\"get\\\",[[23,0,[\\\"showForm\\\"]],[23,5,[\\\"name\\\"]]],null],[23,0,[\\\"showForm\\\"]],true,[24,[\\\"field\\\",\\\"features\\\",\\\"mandatory\\\"]],[28,\\\"fn\\\",[[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"                \\\"]],\\\"parameters\\\":[3,4]}],[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"Buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"Saved\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/index/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"DgnIowMI\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryReportController, computed, controller, get, service, set;\n\nimport Ember from 'ember';\n\n({\n    computed,\n    inject: { service, controller },\n    set,\n    get,\n} = Ember);\n\nDiaryReportController = Ember.Controller.extend({\n    Collector: service('collector-service'),\n    dateController: controller('diary.report.date'),\n    projectController: controller('diary.report.date.project'),\n    date: computed.alias('dateController.model.date'),\n    project: computed.alias('projectController.model.project'),\n    field: computed('date', function () {\n        var c, field;\n        c = this.get('Collector');\n        field = c.field('diary', 'date');\n        set(field, 'value', this.get('date'));\n        return field;\n    }),\n    actions: {\n        setValue: function (value, field) {\n            if (moment(value).isValid()) {\n                if (this.get('project')) {\n                    return this.transitionToRoute(\n                        'diary.report.date.project',\n                        value,\n                        this.get('project.id'),\n                    );\n                } else {\n                    return this.transitionToRoute('diary.report.date', value);\n                }\n            }\n        },\n    },\n});\n\nexport default DiaryReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/report/date/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryReportDateController, computed, controller, get, service, set;\n\nimport Ember from 'ember';\n\n({\n    computed,\n    inject: { service, controller },\n    set,\n    get,\n} = Ember);\n\nDiaryReportDateController = Ember.Controller.extend({\n    Collector: service('collector-service'),\n    projectController: controller('diary.report.date.project'),\n    project: computed.alias('projectController.model.project'),\n    field: computed('project', function () {\n        var c, field;\n        c = this.get('Collector');\n        field = c.field('diary', 'project');\n        set(field, 'value', this.get('project.id'));\n        return field;\n    }),\n    actions: {\n        setValue: function (value, field) {\n            if (value) {\n                return this.transitionToRoute('diary.report.date.project', value.get('id'));\n            }\n        },\n    },\n});\n\nexport default DiaryReportDateController;\n","export default Ember.HTMLBars.template({\"id\":\"ez50voq1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/report/date/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/report/date/project/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryReportDateController, computed, get, service, set;\n\nimport Ember from 'ember';\n\nimport DS from 'ember-data';\n\nimport config from 'tt4/config/environment';\n\nimport $ from 'jquery';\n\n({\n    computed,\n    inject: { service },\n    set,\n    get,\n} = Ember);\n\nDiaryReportDateController = Ember.Controller.extend({\n    Collector: service('collector-service'),\n    GpsLocator: service(),\n    fetchingWeather: false,\n    ownWeather: {},\n    translations: {\n        temp: '°C',\n        wspeed: 'm/s',\n        percent: '%',\n    },\n    skip: ['date', 'project'],\n    workforce_fields: computed('model',function () {\n        var allFields;\n        allFields = this.get('Collector').fieldArray('diary');\n        return allFields.filter(function (item) {\n            return item.name.substring(0, 9) === 'workforce';\n        });\n    }),\n    workforce_by_names: computed('workforce_fields','model', function () {\n        return this.get('workforce_fields').mapBy('name');\n    }),\n    /*\n  MOVED weather-calculation to afterModel in route, check it out!\n  weather: Ember.computed 'model.project', 'model.date','model.id', ->\n      if !@get('model.isNew') && @get('model.weather')\n          return JSON.parse(@get('model.weather'))\n      return DS.PromiseObject.create({\n          promise: @fetchWeatherPosition()\n      })\n  */\n    fetchWeatherPosition: function (model) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var projectLocation;\n            projectLocation = model.get('project.location_map');\n            if (projectLocation) {\n                projectLocation = JSON.parse(projectLocation);\n                return this.fetchWeather(\n                    projectLocation.latitude,\n                    projectLocation.longitude,\n                    model.get('date'),\n                )\n                    .then(function (json) {\n                        return resolve(json);\n                    })\n                    .catch(function (e) {\n                        return reject(e);\n                    });\n            } else {\n                return this.get('GpsLocator')\n                    .getLocation()\n                    .then(\n                        (position) => {\n                            return this.fetchWeather(\n                                position.coords.latitude,\n                                position.coords.longitude,\n                                model.get('date'),\n                            )\n                                .then(function (json) {\n                                    return resolve(json);\n                                })\n                                .catch(function (e) {\n                                    return reject(e);\n                                });\n                        },\n                        function (error) {\n                            return reject(error);\n                        },\n                    );\n            }\n        });\n    },\n    fetchWeather: function (lat, lon, date = false) {\n        var hour, url;\n        hour = 12;\n        url = config.APP.WEATHER_HISTORY_API;\n        if (date) {\n            date = moment(date).format('YYYYMMDD');\n            if (date === moment().format('YYYYMMDD')) {\n                url = config.APP.WEATHER_API;\n                // if current time is < 12:00, use current hour for fetching weather\n                if (moment().format('HH') < 12) {\n                    hour = moment().format('HH');\n                }\n            }\n            // if trying to fetch weather-info from future, just return empty promise\n            if (date > moment().format('YYYYMMDD')) {\n                return Em.RSVP.Promise.resolve();\n            }\n        } else {\n            date = moment(this.get('model.date')).format('YYYYMMDD');\n        }\n        this.set('fetchingWeather', true);\n        return $.getJSON(\n            url + '?lat=' + lat + '&lon=' + lon + '&date=' + date + '&hour=' + hour,\n            (json) => {\n                this.set('fetchingWeather', false);\n                this.set('weather', json);\n                if (!json.dew_point) {\n                    json.dew_point = this.calcDewPoint(json.temperature, json.humidity);\n                }\n                this.set('model.weather', JSON.stringify(json));\n                this.set('model.weather_fetched', moment().format('YYYY-MM-DD HH:mm:ss'));\n                return json;\n            },\n        );\n    },\n    calcDewPoint: function (temp, humidity) {\n        var dew_point;\n        dew_point = temp - (100 - humidity) / 5;\n        return Math.round(dew_point * 100) / 100;\n    },\n    actions: {\n        recordAdded: function (record) {\n            return this.transitionToRoute('diary.index');\n        },\n        cancel: function () {\n            return this.transitionToRoute('diary.index');\n        },\n        setWorkforceValue: function (value, field) {\n            if (field) {\n                return this.set('model.' + field, value);\n            }\n        },\n        updateWeather: function () {\n            var json;\n            // if weather-datatype changes, change this also\n            json = {};\n            json.temperature = this.get('ownWeather.temperature');\n            json.humidity = this.get('ownWeather.humidity');\n            json.windspeed = this.get('ownWeather.windspeed');\n            json.weather = this.get('ownWeather.weather');\n            if (this.get('ownWeather.temperature') && this.get('ownWeather.humidity')) {\n                json.dew_point = this.calcDewPoint(json.temperature, json.humidity);\n                this.set('ownWeather.dew_point', json.dew_point);\n            }\n            return this.set('model.weather', JSON.stringify(json));\n        },\n        toggleOverrideWeather: function () {\n            if (this.get('weather.temperature')) {\n                this.set('ownWeather', this.get('weather'));\n            }\n            this.toggleProperty('overrideWeather');\n            return false;\n        },\n        changeWeatherType: function (type) {\n            this.set('ownWeather.weather', type);\n            return this.send('updateWeather');\n        },\n    },\n});\n\nexport default DiaryReportDateController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/report/date/project/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryReportDateProjectRoute, get, service, set;\n\nimport Ember from 'ember';\n\nimport DS from 'ember-data';\n\n({\n    inject: { service },\n    set,\n    get,\n} = Ember);\n\nDiaryReportDateProjectRoute = Ember.Route.extend({\n    Collector: service('collector-service'),\n    store: service(),\n    session: service(),\n    model: function (params) {\n        var parentParams;\n        parentParams = this.paramsFor('diary.report.date');\n        return this.get('store')\n            .findRecord('project', params.project)\n            .then((project) => {\n                var date;\n                date =\n                    moment(parentParams.date).subtract(7, 'days').format('YYYY-MM-DD') +\n                    '_' +\n                    parentParams.date;\n                return this.get('store')\n                    .query('diary', {\n                        date: date,\n                        project: params.project,\n                        sideload: true,\n                        order: 'date-',\n                    })\n                    .then((rows) => {\n                        var rowsForDate;\n                        rowsForDate = rows.filterBy('date', parentParams.date);\n                        if (rowsForDate.get('length') > 0) {\n                            return rowsForDate.get('firstObject');\n                        } else {\n                            return this.getWorkdayStrength(parentParams.date, params.project).then(\n                                (strength) => {\n                                    var data;\n                                    data = strength || {};\n                                    if (rows.get('length') > 0) {\n                                        // copy only these to fields .. nothing else is needed\n                                        data.deviations = rows.get('firstObject').deviations;\n                                        data.works = rows.get('firstObject').works;\n                                    }\n                                    Object.assign(data, {\n                                        date: parentParams.date,\n                                        project: project,\n                                    });\n                                    delete data.event;\n                                    return this.get('store').createRecord('diary', data);\n                                },\n                            );\n                        }\n                    });\n            });\n    },\n    afterModel: function (model) {\n        var controller, e;\n        controller = this.controllerFor('diary/report/date/project');\n        controller.set('overrideWeather', false);\n        if (model.get('isNew')) {\n            controller.set(\n                'weather',\n                DS.PromiseObject.create({\n                    promise: controller.fetchWeatherPosition(model),\n                }),\n            );\n            return controller.set('editMode', false);\n        } else {\n            try {\n                controller.set('weather', JSON.parse(model.get('weather')));\n            } catch (error) {\n                e = error;\n                controller.set('weather', null);\n            }\n            return controller.set('editMode', true);\n        }\n    },\n    resetController: function (controller, isExiting) {\n        if (isExiting) {\n            return controller.set('ownWeather', {});\n        }\n    },\n    getWorkdayStrength: function (date, project) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var c, presencePromise, store, worktimePromise;\n            c = this.get('Collector');\n            store = this.get('store');\n            worktimePromise = Ember.A([]);\n            presencePromise = Ember.A([]);\n            if (c.formExists('worktime')) {\n                worktimePromise = store.query('worktime', {\n                    date: date,\n                    project: project,\n                    limit: 'all',\n                    sideload: ['user.employer', 'user.userlevel', 'employer.name'],\n                });\n            }\n            if (c.formExists('presence')) {\n                presencePromise = store.query('presence', {\n                    date: date,\n                    project: project,\n                    limit: 'all',\n                    sideload: ['user.employer', 'user.userlevel', 'employer.name'],\n                });\n            }\n            return Ember.RSVP.Promise.all([worktimePromise, presencePromise]).then((data) => {\n                var employer,\n                    foremen,\n                    foremenStrength,\n                    maincontractorId,\n                    own,\n                    rows,\n                    subStrength,\n                    workerStrength;\n                rows = data[0].toArray().concat(data[1].toArray()).uniqBy('user');\n                employer = this.get('session.currentUser.employer.id');\n                if (Ember.isPresent(employer)) {\n                    if (c.testNeeds(['project.maincontractor'])) {\n                        maincontractorId = store\n                            .peekRecord('project', project)\n                            .get('maincontractor.id');\n                        own = rows.filterBy('employer.id', maincontractorId);\n                    } else {\n                        own = rows.filterBy('employer.id', employer);\n                    }\n                } else {\n                    own = rows;\n                }\n                foremen = own.filter((item) => {\n                    return [3, 5, 6].includes(parseInt(item.get('user.userlevel')));\n                });\n                subStrength = rows.get('length') - own.get('length');\n                foremenStrength = foremen.get('length');\n                workerStrength = own.get('length') - foremenStrength;\n                return resolve({\n                    workforce_workers: workerStrength,\n                    workforce_foremen: foremenStrength,\n                    workforce_subcontractor: subStrength,\n                });\n            });\n        });\n    },\n});\n\nexport default DiaryReportDateProjectRoute;\n","export default Ember.HTMLBars.template({\"id\":\"isrK5WF5\",\"block\":\"{\\\"symbols\\\":[\\\"component\\\",\\\"field\\\",\\\"record\\\",\\\"wfield\\\",\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[4,\\\"collector/record-custom-comp\\\",null,[[\\\"record\\\",\\\"form\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"model\\\"]],\\\"diary\\\",\\\"recordAdded\\\",\\\"cancel\\\"]],{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,2,[\\\"name\\\"]],[24,[\\\"skip\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"type\\\"]],\\\"databasearray\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[23,2,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"diary/database-array\\\",null,[[\\\"field\\\",\\\"change\\\",\\\"model\\\"],[[23,2,[]],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\"],[[\\\"target\\\"],[[23,1,[]]]]],[23,3,[]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"name\\\"]],\\\"weather\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"weather-info\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"overrideWeather\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"fetchingWeather\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.fetching_weather\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move move-\\\",[24,[\\\"weather\\\",\\\"weather\\\"]],\\\" weather-icon\\\"]]],[8],[9],[0,\\\"\\\\n                            \\\"],[1,[24,[\\\"weather\\\",\\\"temperature\\\"]],false],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[0,\\\", \\\"],[1,[24,[\\\"weather\\\",\\\"windspeed\\\"]],false],[1,[24,[\\\"translations\\\",\\\"wspeed\\\"]],false],[0,\\\", \\\"],[1,[24,[\\\"weather\\\",\\\"humidity\\\"]],false],[1,[24,[\\\"translations\\\",\\\"percent\\\"]],false],[0,\\\", \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.abbr_dew_point\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"weather\\\",\\\"dew_point\\\"]],false],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"weather-brand\\\"],[8],[0,\\\"—\\\"],[1,[28,\\\"t\\\",[\\\"general.weather_provider\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[4,\\\"unless\\\",[[24,[\\\"editMode\\\"]]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleOverrideWeather\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"general.edit\\\"],null]],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-inline\\\"],[8],[0,\\\"\\\\n                        \\\"],[5,\\\"bs-dropdown\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[6,[23,5,[\\\"button\\\"]],[],[[\\\"@class\\\"],[\\\"btn-default dropdown-toggle\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"ownWeather\\\",\\\"weather\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move move-\\\",[24,[\\\"ownWeather\\\",\\\"weather\\\"]],\\\" dropdown-weather-icon\\\"]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.weather_type\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"caret\\\"],[8],[9],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                            \\\"],[6,[23,5,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[6,[23,6,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"Clouds\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Clouds dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.clouds\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"],[6,[23,6,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"LightRain\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-LightRain dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.light_rain\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"],[6,[23,6,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"LightSnow\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-LightSnow dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.light_snow\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"],[6,[23,6,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"PartlyCloudyDay\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PartlyCloudyDay dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.part_cloud\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"],[6,[23,6,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"Rain\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Rain dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.rain\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"],[6,[23,6,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"Snow\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Snow dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.snow\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"],[6,[23,6,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeatherType\\\",\\\"Sun\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Sun dropdown-weather-icon\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.sun\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[\\\"text\\\",\\\"form-control short-weather-input\\\",[24,[\\\"ownWeather\\\",\\\"temperature\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateWeather\\\",[24,[\\\"ownWeather\\\"]]],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[\\\"text\\\",\\\"form-control short-weather-input\\\",[24,[\\\"ownWeather\\\",\\\"windspeed\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateWeather\\\",[24,[\\\"ownWeather\\\"]]],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[1,[24,[\\\"translations\\\",\\\"wspeed\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[\\\"text\\\",\\\"form-control short-weather-input\\\",[24,[\\\"ownWeather\\\",\\\"humidity\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateWeather\\\",[24,[\\\"ownWeather\\\"]]],null]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[1,[24,[\\\"translations\\\",\\\"percent\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.abbr_dew_point\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"ownWeather\\\",\\\"dew_point\\\"]],false],[1,[24,[\\\"translations\\\",\\\"temp\\\"]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleOverrideWeather\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-NoEdit\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"in-array\\\",[[23,2,[\\\"name\\\"]],[24,[\\\"workforce_by_names\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"name\\\"]],[24,[\\\"workforce_by_names\\\",\\\"firstObject\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workforce-fields\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"workforce_fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workforce-field\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[23,4,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,4,[]]],[[\\\"model\\\",\\\"change\\\",\\\"class\\\"],[[24,[\\\"model\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setWorkforceValue\\\"],null],\\\"add-fields form-control\\\"]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-container\\\",[[23,2,[]]],[[\\\"change\\\",\\\"model\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\"],[[\\\"target\\\"],[[23,1,[]]]]],[23,3,[]]]]],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2,3]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/report/date/project/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/report/date/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryReportDateRoute;\n\nimport Ember from 'ember';\n\nDiaryReportDateRoute = Ember.Route.extend({\n    session: Ember.inject.service(),\n    beforeModel: function (transition) {\n        if (transition.targetName === 'diary.report.date.index') {\n            if (this.get('session.currentUser.currentMySite')) {\n                this.transitionTo(\n                    'diary.report.date.project',\n                    this.get('session.currentUser.currentMySite.id'),\n                );\n            }\n            if (\n                this.modelFor('diary.report.date.project') &&\n                this.modelFor('diary.report.date.project').get('project.id')\n            ) {\n                return this.transitionTo(\n                    'diary.report.date.project',\n                    this.modelFor('diary.report.date.project').get('project.id'),\n                );\n            }\n        }\n    },\n    actions: {\n        willTransition: function (transition) {\n            if (transition.targetName === 'diary.report.index') {\n                return transition.abort();\n            }\n        },\n    },\n});\n\nexport default DiaryReportDateRoute;\n","export default Ember.HTMLBars.template({\"id\":\"9xqmHBk4\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/field-container\\\",[[24,[\\\"field\\\"]]],[[\\\"change\\\"],[\\\"setValue\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/report/date/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryReportRoute;\n\nimport Ember from 'ember';\n\nDiaryReportRoute = Ember.Route.extend({\n    session: Ember.inject.service(),\n    redirect: function (model, transition) {\n        if (\n            transition.targetName !== 'diary.report.date' &&\n            transition.targetName !== 'diary.report.date.index' &&\n            transition.targetName !== 'diary.report.date.project'\n        ) {\n            return this.transitionTo('diary.report.date', moment().format('YYYY-MM-DD'));\n        }\n    },\n});\n\nexport default DiaryReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"qlBVJz1l\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/field-container\\\",[[24,[\\\"field\\\"]]],[[\\\"change\\\"],[\\\"setValue\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/diary/report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/diary/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nDiaryRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    beforeModel: function (transition) {\n        if (transition && transition.targetName === 'diary.index') {\n            this.transitionToRightPage();\n        }\n        return this._super(transition);\n    },\n    transitionToRightPage: function () {\n        if (!this.get('Collector').testNeeds(['diary@access'])) {\n            return this.transitionTo('diary.events');\n        }\n    },\n});\n\nexport default DiaryRoute;\n","import GeneralAddController from '../../../controllers/general-add';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport { A } from '@ember/array';\n\nexport default GeneralAddController.extend({\n    session: service(),\n    edit: true,\n    drivinglog: alias('model'),\n    fieldSettings: A({\n        edit: true,\n    }),\n});\n","import GeneralAddRoute from '../../../routes/general-add';\n\nexport default GeneralAddRoute.extend({\n    controllerName: 'drivinglog/edit',\n    modelName: 'drive',\n    edit: true,\n    afterSave: 'drivinglog',\n});\n","export default Ember.HTMLBars.template({\"id\":\"AVjX3Jxg\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/drivinglog/edit/template.hbs\"}});","import { A } from '@ember/array';\nimport EmberObject from '@ember/object';\nimport GeneralReportController from '../../../controllers/general-report';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\n\nexport default GeneralReportController.extend({\n    intl: service(),\n    Collector: service('collector-service'),\n    dialogs: service(),\n    queryParams: ['page', 'date', 'user', 'q'],\n    form: 'drive',\n    showColumns: null,\n    init: function () {\n        this._super(...arguments);\n        this.showColumns = [\n            'date',\n            'user',\n            'route',\n            'distance',\n            'starttime',\n            'endtime',\n            'drive_hours',\n            'private_drive',\n            'license_plate',\n        ];\n    },\n    drivinglog: alias('model'),\n    filters: A([\n        EmberObject.create({ field: 'date' }),\n        EmberObject.create({ type: 'searchbox', bindto: 'q' }),\n        EmberObject.create({ field: 'user' }),\n    ]),\n    settings: EmberObject.create({\n        rowSettings: EmberObject.create({\n            editRoute: 'drivinglog.edit',\n            historyRoute: 'drivinglog.history',\n        }),\n        massedit: true,\n        hideColumns: ['location_start', 'location_end'],\n    }),\n});\n","import GeneralReportRoute from '../../../routes/general-report';\n\nexport default GeneralReportRoute.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    form: 'drive',\n    model(params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('drive', params);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"t6f3vysP\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"drive\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",\\\"drive\\\",[24,[\\\"drivinglog\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"settings\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/drivinglog/index/template.hbs\"}});","import Controller, { inject as controller } from '@ember/controller';\n\nimport { alias } from '@ember/object/computed';\nimport { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { later } from '@ember/runloop';\n\nexport default Controller.extend({\n    toggleController: controller('drivinglog/toggle/index'),\n    Collector: service('collector-service'),\n    gui: service(),\n    km: 'km',\n    init() {\n        this._super(...arguments);\n        if (!get(this, 'toggleController.openDrive')) {\n            return this.transitionToRoute('drivinglog.toggle');\n        }\n    },\n    drivinglog: alias('model'),\n    openDrive: computed('toggleController.openDrive', function () {\n        if (!get(this, 'toggleController.openDrive')) {\n            this.transitionToRoute('drivinglog.toggle');\n        }\n\n        return get(this, 'toggleController.openDrive');\n    }),\n\n    distField: computed(function () {\n        return get(this, 'Collector').field('drive', 'distance');\n    }),\n\n    routeField: computed(function () {\n        return get(this, 'Collector').field('drive', 'route');\n    }),\n\n    gaugeField: computed(function () {\n        return get(this, 'Collector').field('drive', 'gauge_end');\n    }),\n\n    projField: computed(function () {\n        return get(this, 'Collector').field('drive', 'project');\n    }),\n\n    privateField: computed(function () {\n        return get(this, 'Collector').field('drive', 'private_drive');\n    }),\n\n    descField: computed(function () {\n        return get(this, 'Collector').field('drive', 'description');\n    }),\n\n    actions: {\n        confirm() {\n            return get(this, 'toggleController').send('endDrive');\n        },\n\n        setRoute(value) {\n            return set(this, 'toggleController.openDrive.route', value);\n        },\n\n        privateDrive() {\n            this.toggleProperty('toggleController.openDrive.private_drive');\n            return false;\n        },\n\n        toggleRoute() {\n            this.toggleProperty('route');\n            later(\n                this,\n                () => document.getElementsByClassName('confirm-extra-route-textarea')[0].focus(),\n                500,\n            );\n            return false;\n        },\n\n        toggleComment() {\n            this.toggleProperty('commentToggled');\n            return false;\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"1x6NdPg2\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"drive-confirm-container \\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"isSafari\\\"]],\\\"isMobileSafari\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-circle-button\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"confirm-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.confirm.congratulations\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"km-input\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.confirm.distance_driven\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"distField\\\"]]],[[\\\"class\\\",\\\"model\\\"],[\\\"add-fields\\\",[24,[\\\"toggleController\\\",\\\"openDrive\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[22,\\\"km\\\"],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"toggleController\\\",\\\"showGauge\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"km-input\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.confirm.gauge_end\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"gaugeField\\\"]]],[[\\\"class\\\",\\\"model\\\"],[\\\"add-fields\\\",[24,[\\\"toggleController\\\",\\\"openDrive\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[22,\\\"km\\\"],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"toggleController\\\",\\\"showProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"km-input\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.confirm.project\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"projField\\\"]]],[[\\\"class\\\",\\\"model\\\"],[\\\"add-fields\\\",[24,[\\\"toggleController\\\",\\\"openDrive\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.drivinglog_private\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"km-input\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"privateDrive\\\"]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"glyphicon move \\\",[28,\\\"if\\\",[[24,[\\\"toggleController\\\",\\\"openDrive\\\",\\\"private_drive\\\"]],\\\"move-CheckedCheckbox\\\",\\\"move-UncheckedCheckbox\\\"],null]]]],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.private_drive\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra-buttons\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Route\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleRoute\\\"]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"route\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra-route\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/fields/textarea-field\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"bubbleChange\\\",\\\"model\\\"],[[24,[\\\"routeField\\\"]],\\\"add-fields confirm-extra-route-textarea\\\",\\\"setRoute\\\",[24,[\\\"toggleController\\\",\\\"openDrive\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.drivinglog_desc\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra-header\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Comments\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleComment\\\"]],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"commentToggled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra-route\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"descField\\\"]]],[[\\\"class\\\",\\\"model\\\"],[\\\"add-fields\\\",[24,[\\\"toggleController\\\",\\\"openDrive\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-buttons\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"toggleController\\\",\\\"openDrive\\\",\\\"hasDirtyAttributes\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"toggleController\\\",\\\"openDrive\\\",\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"confirm\\\"]],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.confirm.continue\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"route\\\"],[\\\"div\\\",\\\"drivinglog.toggle\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-UndoReturn\\\"],[8],[9],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.confirm.undo\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/drivinglog/toggle/confirm/template.hbs\"}});","import Controller from '@ember/controller';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { get, set, computed } from '@ember/object';\nimport { on } from '@ember/object/evented';\nimport { run } from '@ember/runloop';\nimport { isEmpty } from '@ember/utils';\n\nfunction whenAvailable(name, callback) {\n    var interval = 100; // ms\n    window.setTimeout(function () {\n        if (window[name]) {\n            callback(window[name]);\n        } else {\n            whenAvailable(name, callback);\n        }\n    }, interval);\n}\n\nconst DrivinglogToggleIndexController = Controller.extend(AuthenticatedRouteMixin, {\n    notifications: service(),\n    intl: service(),\n    gps_value: '',\n    zoomLevel: 15,\n    km: 'km',\n    refresh_available: false,\n    markers: null,\n    gps_error: '',\n    directionsDisplay: null,\n    directionsService: null,\n\n    drivinglog: alias('model'),\n\n    position: on('init', function () {\n        this.markers = [];\n        whenAvailable('google', () => {\n            this.directionsDisplay = new window.google.maps.DirectionsRenderer();\n            this.directionsService = new window.google.maps.DirectionsService();\n        });\n\n        if (navigator.geolocation) {\n            return navigator.geolocation.watchPosition(\n                (location) => {\n                    const loc = {};\n                    loc.latitude = location.coords.latitude;\n                    loc.longitude = location.coords.longitude;\n                    set(this, 'gps_value', JSON.stringify(loc));\n                    return set(this, 'gps_error', '');\n                },\n\n                function (error) {\n                    return set(\n                        this,\n                        'gps_error',\n                        'PositionError (' + error.code + '): ' + error.message,\n                    );\n                },\n            );\n        }\n    }),\n\n    positionChanged: computed('gps_value', 'map', function () {\n        if (isEmpty(get(this, 'distance'))) {\n            this.calculateDistance();\n            return false;\n        } else {\n            run.throttle(this, this.calculateDistance, 5000);\n            return true;\n        }\n    }),\n\n    showGauge: computed('openDrive.distance', function () {\n        if (get(this, 'openDrive.gauge_start')) {\n            const gauge_start = get(this, 'openDrive.gauge_start');\n            const dist = get(this, 'openDrive.distance');\n            let sum = dist * 1 + gauge_start * 1;\n            sum = Math.round(sum);\n            // eslint-disable-next-line ember/no-side-effects\n            set(this, 'openDrive.gauge_end', sum);\n            localStorage.setItem('drivinglog_gauge_last_end', sum);\n        }\n\n        return get(this, 'Collector').fieldExists('drive', 'gauge_start');\n    }),\n\n    gaugeField: computed('openDrive', 'openDrive.distance', function () {\n        if (localStorage.getItem('drivinglog_gauge_last_end')) {\n            // eslint-disable-next-line ember/no-side-effects\n            set(this, 'openDrive.gauge_start', localStorage.getItem('drivinglog_gauge_last_end'));\n        }\n        return get(this, 'Collector').field('drive', 'gauge_start');\n    }),\n\n    showProject: computed(function () {\n        return get(this, 'Collector').fieldExists('drive', 'project');\n    }),\n\n    showPrivate: computed(function () {\n        return get(this, 'Collector').fieldExists('drive', 'private');\n    }),\n\n    licenseField: computed(function () {\n        return get(this, 'Collector').field('drive', 'license_plate');\n    }),\n\n    projField: computed(function () {\n        return get(this, 'Collector').field('drive', 'project');\n    }),\n\n    actions: {\n        startDrive() {\n            const row = get(this, 'openDrive');\n            const date = moment().format('YYYY-MM-DD');\n            const starttime = moment().format('HH:mm');\n\n            set(row, 'starttime', starttime);\n            set(row, 'date', date);\n            set(row, 'validation', 'off');\n            set(row, 'location_start', get(this, 'gps_value'));\n            if (get(this, 'license_plate')) {\n                set(row, 'license_plate', get(this, 'license_plate'));\n            }\n\n            // eslint-disable-next-line ember/named-functions-in-promises\n            return row.save().then(() => {\n                return get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n                    autoClear: true,\n                });\n            });\n        },\n\n        confirmDrive() {\n            if (!get(this, 'openDrive')) {\n                return;\n            }\n            const row = get(this, 'openDrive');\n            const endtime = moment().format('HH:mm');\n\n            //some momentjs calculcation for drive hours\n            const end_m = moment();\n            const start_m = moment(get(row, 'date') + ' ' + get(row, 'starttime'));\n            const duration = moment.duration(end_m.diff(start_m));\n\n            set(row, 'endtime', endtime);\n            set(row, 'validation', 'off');\n            set(row, 'location_end', get(this, 'gps_value'));\n            set(row, 'distance', get(this, 'distance'));\n            set(row, 'drive_hours', duration.asHours());\n\n            if (get(this, 'license_plate')) {\n                set(row, 'license_plate', get(this, 'license_plate'));\n            }\n\n            if (get(this, 'route')) {\n                set(row, 'route', get(this, 'route'));\n            }\n\n            return this.transitionToRoute('drivinglog.toggle.confirm');\n        },\n\n        endDrive() {\n            if (!get(this, 'openDrive')) {\n                return;\n            }\n            const row = get(this, 'openDrive');\n\n            // eslint-disable-next-line ember/named-functions-in-promises\n            return row.save().then(() => {\n                get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n                    autoClear: true,\n                });\n\n                return this.transitionToRoute('drivinglog.toggle');\n            });\n        },\n\n        updateRoute() {\n            return this.calculateDistance();\n        },\n    },\n    calculateDistance() {\n        const map = get(this, 'map');\n\n        const start_location = JSON.parse(get(this, 'openDrive.location_start'));\n        const start = new window.google.maps.LatLng(\n            start_location.latitude,\n            +start_location.longitude,\n        );\n\n        const end_location = JSON.parse(get(this, 'gps_value'));\n        const end = new window.google.maps.LatLng(end_location.latitude, end_location.longitude);\n\n        for (let m of Array.from(get(this, 'markers'))) {\n            m.setMap(null);\n        }\n        set(this, 'markers', []);\n\n        get(this, 'directionsDisplay').setMap(map);\n\n        const request = {\n            origin: start,\n            destination: end,\n            travelMode: 'DRIVING',\n        };\n\n        return get(this, 'directionsService').route(request, (response, status) => {\n            if (status === 'OK') {\n                get(this, 'directionsDisplay').setDirections(response);\n                set(\n                    this,\n                    'route',\n                    response.routes[0].legs[0].start_address +\n                        ' - ' +\n                        response.routes[0].legs[0].end_address,\n                );\n                set(\n                    this,\n                    'distance',\n                    (response.routes[0].legs[0].distance.value / 1000).toFixed(1),\n                );\n            }\n        });\n    },\n});\n\nexport default DrivinglogToggleIndexController;\n","import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport Route from '@ember/routing/route';\nimport { get, set } from '@ember/object';\n\nexport default Route.extend(AuthenticatedRouteMixin, {\n    create_new: false,\n    model() {\n        this.create_new = true;\n        return this.store\n            .query('drive', { user: 'self', location_end: '(empty)' })\n            .then(this.onDriveQueried.bind(this));\n    },\n\n    setupController(controller, model) {\n        if (get(this, 'openDrive')) {\n            set(controller, 'openDrive', get(this, 'openDrive'));\n        }\n        if (get(this, 'newDrive')) {\n            set(controller, 'openDrive', get(this, 'newDrive'));\n        }\n        return set(controller, 'model', model);\n    },\n\n    resetController(controller, isExiting) {\n        this._super.apply(this, arguments);\n        if (isExiting) {\n            return set(controller, 'started_drive', false);\n        }\n    },\n    onDriveQueried(data) {\n        if (get(data, 'firstObject')) {\n            this.create_new = false;\n            set(this, 'openDrive', get(data, 'firstObject'));\n        }\n        if (this.create_new) {\n            const drive = this.store.createRecord('drive', {});\n            set(this, 'newDrive', drive);\n            get(data, 'content').push(drive);\n        }\n        return data;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"ViwmhLXL\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"drivetoggle-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"gps_value\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"openDrive\\\",\\\"location_start\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.toggle.end_drive\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"circle-button stop\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"confirmDrive\\\"]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Mileage button\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.toggle.start_drive\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"circle-button start\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"startDrive\\\"]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Mileage button\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"slim\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"openDrive\\\",\\\"location_start\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showGauge\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"km-input\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.toggle.gauge_start\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"gaugeField\\\"]]],[[\\\"class\\\",\\\"model\\\"],[\\\"add-fields\\\",[24,[\\\"openDrive\\\"]]]]],false],[0,\\\"\\\\n                            \\\"],[1,[22,\\\"km\\\"],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"slim\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n\\\\n                            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.toggle.project\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"projField\\\"]]],[[\\\"class\\\",\\\"model\\\"],[\\\"form-control add-fields\\\",[24,[\\\"openDrive\\\"]]]]],false],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"slim\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"drive.license_plate\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.toggle.license_plate\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"licenseField\\\"]]],[[\\\"model\\\"],[[24,[\\\"openDrive\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"slim\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"openDrive\\\",\\\"location_start\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"drivinglog.toggle.route_distance\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[22,\\\"distance\\\"],false],[1,[22,\\\"km\\\"],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"positionChanged\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"circle-button-small refresh pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"updateRoute\\\"]],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-refresh button-small\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"slim\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"openDrive\\\",\\\"location_start\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.toggle.your_current_route\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"gps-location-map\\\",null,[[\\\"value\\\",\\\"zoomLevel\\\",\\\"map\\\",\\\"markers\\\",\\\"skipPositionUpdate\\\"],[[24,[\\\"gps_value\\\"]],[24,[\\\"zoomLevel\\\"]],[24,[\\\"map\\\"]],[24,[\\\"markers\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.toggle.your_current_location\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"gps-location-map\\\",null,[[\\\"value\\\",\\\"map\\\",\\\"zoomLevel\\\"],[[24,[\\\"gps_value\\\"]],[24,[\\\"map\\\"]],[24,[\\\"zoomLevel\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"drivinglog.toggle.fetching_position\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"gps_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[1,[22,\\\"gps_error\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/drivinglog/toggle/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersAddController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nimport collector from '../../../classes/collector';\n\nimport config from '../../../config/environment';\n\nimport { t } from 'ember-intl';\n\nimport $ from 'jquery';\n\nEmployersAddController = GeneralAddController.extend({\n    session: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    notifications: Ember.inject.service(),\n    error: Ember.inject.service(),\n    intl: Em.inject.service(),\n    cc: Em.inject.service(),\n    VastuuGroup: Em.inject.service('vastuu-group'),\n    //    needs: 'employers/saved'\n    modalTitle: 'Vastuu group-raportti',\n    showInviteDialog: false,\n    messageButtonText: Em.computed(function () {\n        return this.get('intl').t('employer.tilaajavastuu_invite_button');\n    }),\n    tilaajavastuuText: Em.computed('session.currentUser.company', function () {\n        return this.get('intl').t('employer.invite_tilaajavastuu_email', {\n            company: this.get('session.currentUser.company'),\n        });\n    }),\n    tilaajavastuuHiddenAddition: Em.computed(function () {\n        return this.get('intl').t('employer.tilaajavastuu_invite_footer_text');\n    }),\n    vgIsDisabled: Em.computed(function () {\n        return this.get('Collector').testNeeds(['products.vg_reliable_partner_disabled']);\n    }),\n    //    special_disable: ['tv_status','date_checked','archive_code']\n    // Little häx for setting tv_status to ei_loydy before fetching\n    reportRead: t('employer.add.tv_report.read'),\n    setNotChecked: function () {\n        if (collector.getFormObject('employer.tv_status') && !this.get('vgIsDisabled')) {\n            this.set('model.tv_status', 'ei_loydy');\n            return this.set('pretext', this.get('intl').t('employer.add.pretext.check_status'));\n        }\n    }.observes('model'),\n    setParentEmployer: Em.observer('model', 'session.currentUser', function () {\n        var field, user;\n        field = collector.getFormObject('employer.parent');\n        if (field.features != null && field.features.do_not_preselect) {\n            return;\n        }\n        if (!this.get('model.isNew')) {\n            return;\n        }\n        if (collector.getFormObject('employer.parent') && this.get('session.currentUser')) {\n            user = this.store.query('user', {\n                id: this.get('session.currentUser.id'),\n                sideload: true,\n            });\n            return user.then(() => {\n                return this.set('model.parent', user.get('firstObject.employer'));\n            });\n        }\n    }),\n    setCustomization: Em.on('init', function () {\n        if (collector.getFormObject('employer.tv_status')) {\n            var customization = {\n                tv_status: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                date_checked: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                archive_code: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                emp_phone: {\n                    template: 'employers/add/emp_phone',\n                },\n                emp_id: {\n                    template: 'employers/add/emp_id',\n                },\n            };\n            return this.set('customization', customization);\n        }\n    }),\n    countryLists: Ember.inject.service(),\n    setCountryCode: function () {\n        var code, codes, codesByNumber, companyCountry, i, len, model, number, ref, userCountry;\n        model = this.get('model');\n        codes = this.get('countryLists.phoneList');\n        codesByNumber = codes.mapBy('number');\n        userCountry = this.get('session.currentUser.homecountry');\n        companyCountry = this.get('session.currentUser.company_info.country');\n        number = null;\n        if (\n            !model.get('emp_phone') ||\n            (((ref = model.get('emp_phone')), indexOf.call(codesByNumber, ref) >= 0) &&\n                !this.get('countryCodeSetManually'))\n        ) {\n            for (i = 0, len = codes.length; i < len; i++) {\n                code = codes[i];\n                if (code.id === userCountry) {\n                    number = code.number;\n                    break;\n                } else if (code.id === companyCountry) {\n                    number = code.number;\n                }\n            }\n            if (number) {\n                return model.set('emp_phone', number);\n            }\n        }\n    },\n    changeCountry: function (countrycode) {\n        this.set('countryCodeSetManually', true);\n        return this.set('model.emp_phone', countrycode);\n    },\n    actions: {\n        generalAddAction: function (type, param) {\n            if (type === 'getReliablePartnerData') {\n                return this.getReliablePartnerData();\n            }\n            if (type === 'changeCountry') {\n                return this.changeCountry(param);\n            }\n            if (type === 'setCountryCode') {\n                return this.setCountryCode();\n            }\n        },\n\n        /**\n         * Handles the \"I have read it\" action when user confirms they've reviewed the Reliable Partner report.\n         * This action saves the current date as the check date and optionally attaches\n         * the PDF report to the employer model before closing the report modal.\n         */\n        iHaveReadIt: function () {\n            const model = this.get('model');\n            const pdfReport = this.get('rp_pdf_report');\n\n            // Update the date when the report was checked\n            model.set('date_checked', moment().format('YYYY-MM-DD'));\n\n            // Attach PDF report to model if available so it gets saved with the employer\n            if (pdfReport) {\n                model.set('tv_pdf', [{\n                    name: `${model.get('name')} - Luotettava kumppani.pdf`,\n                    file: `data:application/pdf;base64,${pdfReport}`\n                }]);\n            }\n\n            // Close the report modal\n            this.set('tilaajavastuu_report', null);\n        },\n        messageButtonAction: function () {\n            this.set('showInviteDialog', true);\n            return false;\n        },\n        removeModal: function () {\n            return this.set('showInviteDialog', false);\n        },\n        sendInviteTilaajavastuuEmail: function () {\n            var promise, title;\n            this.get('notifications').success(this.get('intl').t('general.email_sent'), {\n                autoClear: true,\n            });\n            title = this.get('intl').t('employer.invite_tilaajavastuu_title');\n            promise = this.Collector.ttapi({\n                url: 'sendEmail',\n                data: {\n                    email: this.get('model.emp_email'),\n                    content:\n                        this.get('tilaajavastuuText') +\n                        '<br><br>' +\n                        this.get('tilaajavastuuHiddenAddition'),\n                    title: title,\n                },\n                method: 'post',\n            });\n            return promise.then((ret) => {\n                $('.modal').modal('hide');\n                return this.set('showInviteDialog', false);\n            });\n        },\n    },\n\n    /**\n     * Fetches and processes Reliable Partner (Luotettava Kumppani) data from VastuuGroup API.\n     * Validates the employer's business ID, retrieves their status report, and updates\n     * the UI accordingly with status indicators and optional PDF report.\n     *\n     * @async\n     * @returns {Promise<void>}\n     */\n    getReliablePartnerData: async function () {\n        if (this.get('vgIsDisabled')) {\n            return;\n        }\n        const empId = this.get('model.emp_id');\n\n        // Exit early if no business ID is provided\n        if (Ember.isEmpty(empId)) {\n            return;\n        }\n\n        this.setProperties({\n            showMessageButton: false,\n            loading: true\n        });\n\n        try {\n            const response = await this.VastuuGroup.getReliablePartnerStatusAndReport(empId);\n            if (response?.success && response?.data) {\n                this.handleSuccessfulResponse(response.data);\n            } else {\n                this.handleNotFoundResponse();\n            }\n        } catch (error) {\n            this.handleErrorResponse(error);\n        } finally {\n            this.set('loading', false);\n        }\n    },\n\n    handleSuccessfulResponse(data) {\n        const model = this.get('model');\n        const intl = this.get('intl');\n\n        // Store PDF report for later use\n        this.set('rp_pdf_report', data.pdf_report);\n\n        // Update model\n        model.set('tv_status', data.status.toLowerCase());\n        model.set('name', data.company_name || model.get('name'));\n\n        // Clear validation errors for name and country\n        this.clearModelErrors(['name', 'emp_country']);\n\n        // Set appropriate alert style based on status\n        this.setMessageStatusByStatus(data.status);\n\n        // Build and display status message\n        const statusDescription = data.description || intl.t(`employer.vg_status.description.${data.status.toLowerCase()}`);\n        const message = this.buildStatusMessage(data.status, statusDescription);\n        this.set('message', message);\n\n        // Show PDF report if available\n        if (data.pdf_report) {\n            this.showTVReport(data.pdf_report);\n        }\n    },\n\n    handleNotFoundResponse() {\n        const intl = this.get('intl');\n        const model = this.get('model');\n\n        model.tv_status = 'ei_loydy';\n\n        this.setProperties({\n            messageStatus: 'alert-danger',\n            showMessageButton: true,\n            message: Ember.String.htmlSafe(\n                '<div>' +\n                    '<h3><b>' + intl.t('employer.add.status.notfound') + '</b></h3>' +\n                    intl.t('employer.add.status.marketing') +\n                '</div>'\n            )\n        });\n    },\n\n    handleErrorResponse(error) {\n        const intl = this.get('intl');\n        const model = this.get('model');\n\n        this.error.notify(error);\n\n        model.tv_status = 'ei_loydy';\n\n        this.setProperties({\n            messageStatus: 'alert-danger',\n            message: Ember.String.htmlSafe(\n                `<div><h3><b>${intl.t('employer.add.status.failed')}</b></h3></div>`\n            )\n        });\n    },\n\n    clearModelErrors(errorFields) {\n        const modelErrors = this.get('errors');\n        if (!modelErrors) return;\n\n        errorFields.forEach(field => {\n            if (modelErrors.includes(field)) {\n                modelErrors.removeObject(field);\n            }\n        });\n    },\n\n    setMessageStatusByStatus(status) {\n        const statusMap = {\n            'Ok': 'alert-success',\n            'Seis': 'alert-danger'\n        };\n\n        this.set('messageStatus', statusMap[status] || 'alert-warning');\n    },\n\n    buildStatusMessage(status, description) {\n        const intl = this.get('intl');\n\n        return Ember.String.htmlSafe(\n            '<div>' +\n                '<h3>' + intl.t('employer.add.status') + ': <b>' + status + '</b></h3>' +\n                '<h4 style=\"padding-left: 0.7em;\">' + description + '</h4>' +\n            '</div>'\n        );\n    },\n\n    showTVReport(base64Report) {\n        if (!base64Report) return;\n\n        this.set('loadingTvReport', true);\n        const report = this.VastuuGroup.getReliablePartnerPdfLink(base64Report);\n        this.setProperties({\n            tilaajavastuu_report: report,\n            loadingTvReport: false\n        });\n    },\n});\n\nexport default EmployersAddController;\n","export default Ember.HTMLBars.template({\"id\":\"mS+9JBcd\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"name\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"emp_id\\\"]],\\\"emp_id\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-2\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"disabled\\\",[28,\\\"not\\\",[[28,\\\"needs\\\",[\\\"!products.vg_reliable_partner_disabled\\\"],null]],null]],[12,\\\"title\\\",[28,\\\"if\\\",[[28,\\\"not\\\",[[28,\\\"needs\\\",[\\\"!products.vg_reliable_partner_disabled\\\"],null]],null],[28,\\\"t\\\",[\\\"employer.actions.vg_disabled_tooltip\\\"],null]],null]],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"getReliablePartnerData\\\"]],[8],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"employer.get_tilaajavastuu_info\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/add/emp_id/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"PYLDalK2\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-phone-field\\\"],[8],[0,\\\"\\\\n    \\\"],[5,\\\"bs-dropdown\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"button\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-toggle form-control add-fields\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[28,\\\"country-flag\\\",[[24,[\\\"model\\\",\\\"emp_phone\\\"]],\\\"number\\\"],null],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+358\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-fi\\\"],[8],[9],[0,\\\" +358\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+46\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-se\\\"],[8],[9],[0,\\\" +46\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+371\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-lv\\\"],[8],[9],[0,\\\" +371\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+372\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-ee\\\"],[8],[9],[0,\\\" +372\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+48\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-pl\\\"],[8],[9],[0,\\\" +48\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+44\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-gb\\\"],[8],[9],[0,\\\" +44\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+33\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-fr\\\"],[8],[9],[0,\\\" +33\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+36\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-hu\\\"],[8],[9],[0,\\\" +36\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+34\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-es\\\"],[8],[9],[0,\\\" +34\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+49\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-de\\\"],[8],[9],[0,\\\" +49\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+31\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-nl\\\"],[8],[9],[0,\\\" +31\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+47\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-no\\\"],[8],[9],[0,\\\" +47\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+370\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-lt\\\"],[8],[9],[0,\\\" +370\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+1\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-us\\\"],[8],[9],[0,\\\" +1\\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\",\\\"focus-in\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"field\\\",\\\"ext\\\"]],[24,[\\\"placeholder\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"setCountryCode\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/add/emp_phone/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nEmployersAddRoute = GeneralAddRoute.extend({\n    modelName: 'employer',\n    controllerName: 'employers.add',\n    savedRoute: 'employers.saved',\n    resetController: function (controller, isExiting, transition) {\n        this._super(controller, isExiting, transition);\n        if (isExiting) {\n            controller.set('tilaajavastuu_report', false);\n            return controller.set('message', null);\n        }\n    },\n});\n\nexport default EmployersAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Usj0Yapj\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\"],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"tilaajavastuu_report\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"employers/add/tilaajavastuu\\\",[],[[\\\"@modalTitle\\\",\\\"@loadingTvReport\\\",\\\"@tilaajavastuu_report\\\",\\\"@reportRead\\\",\\\"@iHaveReadIt\\\",\\\"@message\\\"],[[23,0,[\\\"modalTitle\\\"]],[23,0,[\\\"loadingTvReport\\\"]],[23,0,[\\\"tilaajavastuu_report\\\"]],[23,0,[\\\"reportRead\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"iHaveReadIt\\\"],null],[23,0,[\\\"message\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHidden\\\"],[[23,0,[\\\"showInviteDialog\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showInviteDialog\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"\\\\n      \\\"],[6,[23,1,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"modal-title\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"employer.tilaajavastuu_invite_title\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"employer.tilaajavastuu_email_recipent\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control add-fields inline-edit\\\",[24,[\\\"model\\\",\\\"emp_email\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"employer.tilaajavastuu_email_text\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\"],[\\\"3\\\",\\\"form-control add-fields inline-edit\\\",\\\"field\\\",\\\"\\\",[24,[\\\"tilaajavastuuText\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"default\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showInviteDialog\\\"]]],null],false],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"modal.clear\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"primary\\\",[28,\\\"action\\\",[[23,0,[]],\\\"sendInviteTilaajavastuuEmail\\\"],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"modal.ok\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/add/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"2wVV2qca\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\",\\\"@iHaveReadIt\\\",\\\"@reportRead\\\",\\\"@message\\\",\\\"@tilaajavastuu_report\\\",\\\"@modalTitle\\\",\\\"@loadingTvReport\\\"],\\\"statements\\\":[[5,\\\"bs-modal\\\",[],[[\\\"@onHidden\\\",\\\"@backdropClose\\\"],[[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,5,[]]],null],false],null],false]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[23,6,[]],false],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,7,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n            \\\"],[1,[23,5,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[23,7,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[6,[23,1,[\\\"footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"primary\\\",[23,2,[]]]],{\\\"statements\\\":[[1,[23,3,[]],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/add/tilaajavastuu/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/check/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersCheckController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport config from '../../../config/environment';\n\nEmployersCheckController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    indexController: Ember.inject.controller('employers.index'),\n    vastuuGroup: Ember.inject.service('vastuu-group'),\n    settings: Ember.computed.alias('indexController.settings'),\n    showLoader: Ember.computed.alias('indexController.showLoader'),\n    form: 'employer',\n    showColumns: ['name', 'emp_id', 'tv_status', 'tv_pdf', 'date_checked'],\n    queryParams: ['page', 'q'],\n    filteredEmployers: Ember.computed(function () {\n        return {\n            tv_status: '!ok',\n        };\n    }),\n    formatter: function (column, value, scope, formatted) {\n        if (column === 'tv_status') {\n            if (value && value !== 'ei_loydy') {\n                return new Ember.String.htmlSafe(\n                    '<img src=\"' +\n                        config.APP.CDN_URL +\n                        '/images/tv' +\n                        value +\n                        '.png\" class=\"report-img\" title=\"' +\n                        formatted +\n                        '\">',\n                );\n            } else {\n                return formatted;\n            }\n        }\n        return false;\n    },\n    actions: {\n        updateReliablePartnerData: function (items) {\n            this.get('indexController').syncReliablePartnerData(items)\n        },\n        transitionToEditRoute: function (row) {\n            return this.transitionToRoute('employers.edit', row);\n        },\n    },\n});\n\nexport default EmployersCheckController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/check/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersCheckRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nEmployersCheckRoute = GeneralReportRoute.extend({\n    flags: Ember.inject.service(),\n    form: 'employer',\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        if (\n            !this.get('flags').test('form-report-employers') &&\n            !this.get('flags').test('ember-movenium-form-report-employers')\n        ) {\n            params = this._super(params);\n            params.sideload = true;\n            params.tv_status = '!ok';\n            return this.store.query('employer', params);\n        }\n    },\n});\n\nexport default EmployersCheckRoute;\n","export default Ember.HTMLBars.template({\"id\":\"WPwhRzGF\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"employer.check.description\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"employer-report-loading-overlay\\\"],[8],[0,\\\" \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filter\\\",\\\"@showFilters\\\",\\\"@localStorageKey\\\"],[\\\"employer\\\",[28,\\\"hash\\\",null,[[\\\"tv_status\\\"],[\\\"!ok\\\"]]],\\\" \\\",\\\"employer_check\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.vg_reliable_partner_disabled\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,4,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"updateReliablePartnerData\\\",[23,2,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"employer.actions.tv_report_pdf\\\"],null],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/check/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/edit/add-file/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersAddFileController;\n\nimport Ember from 'ember';\n\nEmployersAddFileController = Ember.Controller.extend();\n\nexport default EmployersAddFileController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/edit/add-file/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersEditAddFileRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nEmployersEditAddFileRoute = GeneralAddRoute.extend({\n    modelName: 'employerfile',\n    afterSave: Ember.computed('form', function () {\n        return {\n            route: 'employers.edit.employer-files',\n            params: this.modelFor('employers.edit').get('id'),\n        };\n    }),\n    model: function (params) {\n        var employer;\n        employer = this.modelFor('employers.edit');\n        return this.store.createRecord('employerfile', {\n            employer: employer,\n        });\n    },\n});\n\nexport default EmployersEditAddFileRoute;\n","export default Ember.HTMLBars.template({\"id\":\"xZQ84iK/\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/edit/add-file/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EditController;\n\nimport Ember from 'ember';\n\nimport AddController from '../add/controller';\n\nimport collector from '../../../classes/collector';\n\nEditController = AddController.extend({\n    setNotChecked: null,\n    Collector: Ember.inject.service('collector-service'),\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n    subMenus: Ember.computed(function () {\n        var c, subMenus;\n        c = this.get('Collector');\n        subMenus = [\n            {\n                link: 'employers.edit.index',\n                text: 'menu.edit_employer',\n            },\n            {\n                link: 'employers.edit.employer-files',\n                text: 'menu.employer-files',\n                needs: ['employerfile'],\n            },\n        ];\n        return subMenus.filter(function (item) {\n            if (item.needs) {\n                return c.testNeeds(item.needs);\n            }\n            return true;\n        });\n    }),\n});\n\nexport default EditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/edit/employer-files/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersViewEmployerFileController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nEmployersViewEmployerFileController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    employerFilesObserver: function () {\n        return this.set('page', 1);\n    }.observes('employerfile'),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideEdit: true,\n            hideHistory: true,\n        }),\n    }),\n    form: 'employerfile',\n    showColumns: ['description', 'file'],\n    cancelRoute: 'employers.employerfiles',\n    queryParams: ['row_info_status'],\n    row_info_status: null,\n    link: Ember.computed(function () {\n        return {\n            link: ['employers.edit.add-file'],\n            translated: this.get('intl').t('menu.add_employer_file'),\n        };\n    }),\n});\n\nexport default EmployersViewEmployerFileController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/edit/employer-files/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersEditEmployerFilesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nEmployersEditEmployerFilesRoute = GeneralReportRoute.extend({\n    Collector: Ember.inject.service('collector-service'),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var employer;\n        params = this._super(params);\n        employer = this.modelFor('employers.edit');\n        params['employer'] = employer.get('id');\n        return this.store.query('employerfile', params);\n    },\n});\n\nexport default EmployersEditEmployerFilesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"1MTFq3wi\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"params\\\"],[[24,[\\\"link\\\",\\\"link\\\"]]]],{\\\"statements\\\":[[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary wide-button\\\"],[8],[1,[24,[\\\"link\\\",\\\"translated\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"formatter\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"formatter\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/edit/employer-files/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/edit/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersEditIndexController;\n\nimport Ember from 'ember';\n\nimport AddController from '../add/controller';\n\nimport collector from '../../../classes/collector';\n\nEmployersEditIndexController = AddController.extend({\n    setNotChecked: null,\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n    setCustomization: Em.on('init', function () {\n        if (collector.getFormObject('employer.tv_status')) {\n            var customization = {\n                tv_status: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                date_checked: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                archive_code: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                emp_id: {\n                    template: 'employers/add/emp_id',\n                },\n            };\n            return this.set('customization', customization);\n        }\n    }),\n});\n\nexport default EmployersEditIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/edit/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersEditIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nEmployersEditIndexRoute = GeneralAddRoute.extend({\n    modelName: 'employer',\n    controllerName: 'employers/edit',\n    edit: true,\n    model: function () {\n        return this.modelFor('employers.edit');\n    },\n    afterSave: 'employers',\n    resetController: function (controller, isExiting, transition) {\n        this._super(controller, isExiting, transition);\n        if (isExiting) {\n            controller.set('tilaajavastuu_report', false);\n            return controller.set('message', null);\n        }\n    },\n});\n\nexport default EmployersEditIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"PGK2gc7s\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"tilaajavastuu_report\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[5,\\\"employers/add/tilaajavastuu\\\",[],[[\\\"@modalTitle\\\",\\\"@loadingTvReport\\\",\\\"@tilaajavastuu_report\\\",\\\"@reportRead\\\",\\\"@iHaveReadIt\\\",\\\"@message\\\"],[[23,0,[\\\"modalTitle\\\"]],[23,0,[\\\"loadingTvReport\\\"]],[23,0,[\\\"tilaajavastuu_report\\\"]],[23,0,[\\\"reportRead\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"iHaveReadIt\\\"],null],[23,0,[\\\"message\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/edit/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nEmployersEditRoute = GeneralAddRoute.extend({\n    modelName: 'employer',\n    controllerName: 'employers/edit',\n    edit: true,\n    //    model: (params) ->\n    //        @store.findRecord(@get('modelName'), params.id)\n    afterSave: 'employers',\n    resetController: function (controller, isExiting, transition) {\n        this._super(controller, isExiting, transition);\n        if (isExiting) {\n            controller.set('tilaajavastuu_report', false);\n            return controller.set('message', null);\n        }\n    },\n});\n\nexport default EmployersEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"k7MHK+2D\",\"block\":\"{\\\"symbols\\\":[\\\"sublink\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-fluid\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-6 col-md-6 col-sm-6 col-xs-8\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[24,[\\\"model\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"subMenus\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subMenus\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"div\\\",\\\"submenu-item\\\",[23,1,[\\\"link\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersHistoryRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nEmployersHistoryRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default EmployersHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"HJLgiYmn\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"employer\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/history/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/inactive/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersInactiveController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nEmployersInactiveController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    form: 'employer',\n    showColumns: ['emp_id', 'name'],\n    queryParams: ['page', 'q'],\n    data: Em.computed('model.[]', function () {\n        var formatted_rows;\n        if (!this.get('model')) {\n            return;\n        }\n        formatted_rows = Em.A([]);\n        this.get('model').forEach(function (row) {\n            return formatted_rows.push(Ember.Object.create(row));\n        });\n        return formatted_rows;\n    }),\n    rowActions: Em.computed(function () {\n        var arr;\n        return (arr = [\n            {\n                action: 'removeRow',\n                icon: 'move move-Delete',\n                text: this.get('intl').t('report.delete_rows'),\n            },\n        ]);\n    }),\n    actions: {\n        catchActions: function (action, params) {\n            return this.send(action, params);\n        },\n        removeRow: function (row) {\n            var self;\n            self = this;\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    var emp;\n                    if (con) {\n                        this.get('data').removeObject(row);\n                        emp = this.get('store').peekRecord('employer', row.id);\n                        return emp.destroyRecord();\n                    }\n                });\n        },\n    },\n});\n\nexport default EmployersInactiveController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/inactive/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersInactiveRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nEmployersInactiveRoute = GeneralReportRoute.extend({\n    Collector: Ember.inject.service('collector-service'),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var c;\n        c = this.get('Collector');\n        return c\n            .ttapi({\n                url: 'inactive_employers',\n            })\n            .then((data) => {\n                var records;\n                this.store.pushPayload('employer', data);\n                records = Ember.A([]);\n                if (data.employers) {\n                    data.employers.forEach((employer) => {\n                        return records.pushObject(this.store.peekRecord('employer', employer.id));\n                    });\n                }\n                return data.employers;\n            });\n    },\n});\n\nexport default EmployersInactiveRoute;\n","export default Ember.HTMLBars.template({\"id\":\"+TTOudag\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"employers.report.inactive_employers\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"data\\\",\\\"translationPrefix\\\",\\\"rowActions\\\",\\\"bubbleActions\\\"],[[24,[\\\"showColumns\\\"]],[24,[\\\"data\\\"]],\\\"report.employer\\\",[24,[\\\"rowActions\\\"]],\\\"catchActions\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/inactive/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport config from '../../../config/environment';\n\nEmployersIndexController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    flags: Ember.inject.service(),\n    cc: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    vastuuGroup: Ember.inject.service('vastuu-group'),\n    error: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    session: Ember.inject.service(),\n    form: 'employer',\n    showColumns: [\n        'name',\n        'emp_id',\n        'tv_status',\n        'tv_pdf',\n        'date_checked',\n        'parent',\n        'emp_users_given',\n        'emp_email',\n        'emp_phone',\n    ],\n    queryParams: ['page', 'q', 'emp_users_given', 'parent'],\n    emp_users_given: null,\n    parent: null,\n    showLoader: false,\n    init_functions: function () {\n        if (\n            this.get('flags').test('form-report-employers') ||\n            this.get('flags').test('ember-movenium-form-report-employers')\n        ) {\n            return null;\n        } else {\n            return this._super();\n        }\n    },\n    emp_users_given_options: Ember.computed(function () {\n        return [\n            {\n                id: '1',\n                name: this.get('intl').t('employer.emp_users_given.1'),\n            },\n            {\n                id: '2',\n                name: this.get('intl').t('employer.emp_users_given.2'),\n            },\n            {\n                id: '3',\n                name: this.get('intl').t('employer.emp_users_given.3'),\n            },\n        ];\n    }),\n    autoChecked: Ember.computed(function () {\n        if (!this.get('Collector').testNeeds(['employer.tv_status'])) {\n            return null;\n        }\n        return moment().startOf('month').format('L');\n    }),\n    filters: Ember.computed(function () {\n        var prompt_text;\n        prompt_text = this.get('intl').t('general.select.emp_users_given');\n        return Em.A([\n            Em.Object.create({\n                type: 'dropdown_values',\n                field: 'emp_users_given',\n                prompt: prompt_text,\n                options: [\n                    {\n                        id: '1',\n                        value: this.get('intl').t('employer.emp_users_given.1'),\n                    },\n                    {\n                        id: '2',\n                        value: this.get('intl').t('employer.emp_users_given.2'),\n                    },\n                    {\n                        id: '3',\n                        value: this.get('intl').t('employer.emp_users_given.3'),\n                    },\n                ],\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n        ]);\n    }),\n    settings: Em.computed(function () {\n        var _self, c, ret;\n        _self = this;\n        c = this.get('Collector');\n        ret = Em.Object.create({});\n        ret.set('massedit', true);\n        if (c.fieldExists('employer', 'tv_status')) {\n            ret.set('rowActions', [\n                {\n                    text: 'employer.actions.tv_report_pdf',\n                    action: function (self, items) {\n                        return _self.send('updateReliablePartnerData', items);\n                    },\n                },\n            ]);\n        }\n        return ret;\n    }),\n    cdn_url: Em.computed(function () {\n        return config.APP.CDN_URL;\n    }),\n    syncReliablePartnerData: async function (items) {\n        if (!this.get('Collector').testNeeds(['!products.vg_reliable_partner_disabled'])) {\n            return;\n        }\n        try {\n            this.set('showLoader', true);\n\n            // Extract necessary fields for the batch endpoint\n            const employers = items.map(item => ({\n                id: item.get('id'),\n                emp_id: item.get('emp_id'),\n                name: item.get('name'),\n                tv_status: item.get('tv_status')\n            })).filter(emp => emp.id && emp.emp_id);\n\n            if (employers.length === 0) {\n                this.notifications.warning(this.intl.t('employer.no_valid_employers'));\n                return;\n            }\n\n            // Call the batch update method\n            const response = await this.vastuuGroup.updateReliablePartnerStatusesAndReports(employers);\n\n            // additional handling after batch update\n            if (response?.success) {\n                // Refresh the items to reflect updated data\n                const ids = items.mapBy('id').join(',');\n                if (ids) await this.store.query('employer', { id: ids });\n\n                this.notifications.success(this.intl.t('employer.tv_status_updated_successfully'), { autoClear: true });\n            }\n        } catch (error) {\n            this.error.notify(error);\n        } finally {\n            this.set('showLoader', false);\n        }\n    },\n\n    showSaveErrorNotification: async function(error, row) {\n        const errorMessage = await this.error.toStringAsyncHTML(error) || 'Unknown error';\n        const prefix = this.intl.t('general.error_prefix');\n        const rowIdentifier = `${row.name || ''} - ${row.emp_id || ''}`;\n\n        const fullMessage = `${prefix} ${rowIdentifier}: ${errorMessage}`;\n\n        this.notifications.error(fullMessage);\n    },\n\n    formatter: function (column, value, scope, formatted) {\n        if (column === 'tv_status') {\n            if (value && value !== 'ei_loydy') {\n                return new Ember.String.htmlSafe(\n                    '<img src=\"' +\n                        config.APP.CDN_URL +\n                        '/images/tv' +\n                        value +\n                        '.png\" class=\"report-img\" title=\"' +\n                        formatted +\n                        '\">',\n                );\n            } else {\n                return formatted;\n            }\n        }\n        return false;\n    },\n    actions: {\n        transitionToEditRoute: function (row) {\n            return this.transitionToRoute('employers.edit', row);\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        updateReliablePartnerData: async function (items) {\n            this.syncReliablePartnerData(items);\n        },\n        forceFetchTvPdf: async function (items) {\n            const validItems = items.filter(row => row.get('emp_id'));\n\n            // Wait for all PDF updates to complete\n            await Promise.all(validItems.map(row => this.vastuuGroup.updateReliablePartnerPdfReport(row)));\n\n            // Update the rows to reflect the new PDF reports\n            const ids = validItems.mapBy('id').join(',');\n            if (ids) await this.store.query('employer', { id: ids });\n        },\n    },\n});\n\nexport default EmployersIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nEmployersIndexRoute = GeneralReportRoute.extend({\n    flags: Ember.inject.service(),\n    form: 'employer',\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n        emp_users_given: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        if (\n            !this.get('flags').test('form-report-employers') &&\n            !this.get('flags').test('ember-movenium-form-report-employers')\n        ) {\n            params = this._super(params);\n            params.sideload = true;\n            return this.store.query('employer', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('employers.index').set('qParams', params);\n        }\n    },\n});\n\nexport default EmployersIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"zlhULIQM\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"field\\\",\\\"value\\\",\\\"unformatted\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"employer-report-loading-overlay\\\"],[8],[0,\\\" \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"autoChecked\\\"]],[28,\\\"needs\\\",[\\\"!products.vg_reliable_partner_disabled\\\"],null]],null]],null,{\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"employer.report_header_text\\\"],[[\\\"date\\\"],[[24,[\\\"autoChecked\\\"]]]]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@filterChangeAction\\\"],[\\\"employer\\\",[22,\\\"qParams\\\"],\\\"q,emp_users_given,parent\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\",\\\"@formatCells\\\"],[true,true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.vg_reliable_partner_disabled\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,7,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"updateReliablePartnerData\\\",[23,2,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"employer.actions.tv_report_pdf\\\"],null],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[6,[23,7,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/employers/edit/\\\"]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n            \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"transitionToEditRoute\\\"],null],\\\"remove,history,overview,edit\\\"]]],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[23,3,[]],\\\"tv_status\\\"],null],[28,\\\"eq\\\",[[23,5,[]],\\\"selvitä\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"img\\\",true],[11,\\\"src\\\",[29,[[22,\\\"cdn_url\\\"],\\\"/images/tvselvita.png\\\"]]],[10,\\\"class\\\",\\\"report-img\\\"],[11,\\\"title\\\",[29,[[23,4,[]]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[23,3,[]],\\\"tv_status\\\"],null],[28,\\\"not-eq\\\",[[23,5,[]],\\\"ei_loydy\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"img\\\",true],[11,\\\"src\\\",[29,[[22,\\\"cdn_url\\\"],\\\"/images/tv\\\",[23,5,[]],\\\".png\\\"]]],[10,\\\"class\\\",\\\"report-img\\\"],[11,\\\"title\\\",[29,[[23,4,[]]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[3,4,5]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/index/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"6E0UglSF\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/removed/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersRemovedController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nEmployersRemovedController = GeneralReportController.extend({\n    flags: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    form: 'employer',\n    showColumns: [\n        'name',\n        'emp_id',\n        'tv_status',\n        'tv_pdf',\n        'date_checked',\n        'parent',\n        'emp_users_given',\n        'emp_email',\n        'emp_phone',\n    ],\n    queryParams: ['page', 'q', 'emp_users_given', 'parent'],\n    init_functions: function () {\n        if (\n            this.get('flags').test('form-report-employers') ||\n            this.get('flags').test('ember-movenium-form-report-employers')\n        ) {\n            return null;\n        } else {\n            return this._super();\n        }\n    },\n    filters: Ember.computed(function () {\n        var prompt_text;\n        prompt_text = this.get('intl').t('general.select.emp_users_given');\n        return Em.A([\n            Em.Object.create({\n                type: 'dropdown_values',\n                field: 'emp_users_given',\n                prompt: prompt_text,\n                options: [\n                    {\n                        id: '1',\n                        value: this.get('intl').t('employer.emp_users_given.1'),\n                    },\n                    {\n                        id: '2',\n                        value: this.get('intl').t('employer.emp_users_given.2'),\n                    },\n                    {\n                        id: '3',\n                        value: this.get('intl').t('employer.emp_users_given.3'),\n                    },\n                ],\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n        ]);\n    }),\n    row_info_status: 'removed',\n    settings: Em.Object.create({\n        showStatus: 'removed',\n        rowActions: [],\n    }),\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n    },\n});\n\nexport default EmployersRemovedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/removed/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersRemovedRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nUsersRemovedRoute = GeneralReportRoute.extend({\n    flags: Ember.inject.service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n        emp_users_given: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        if (\n            !this.get('flags').test('form-report-employers') &&\n            !this.get('flags').test('ember-movenium-form-report-employers')\n        ) {\n            params = this._super(params);\n            params.sideload = true;\n            return this.store.query('employer', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('employers.removed').set('qParams', params);\n        }\n    },\n});\n\nexport default UsersRemovedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"IwG6Q4ML\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"tableAction\\\",\\\"more\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"settings\\\",\\\"showStatus\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"employers.report.removed_employers\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-employers\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showRemoved\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@filterChangeAction\\\",\\\"@localStorageKey\\\"],[\\\"employer\\\",true,[22,\\\"qParams\\\"],\\\"q,emp_users_given\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null],\\\"removed_employer\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,5,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,8,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n             \\\"],[6,[23,6,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"form-report-employers\\\"],null]],null,{\\\"statements\\\":[[4,\\\"collector/form-report\\\",null,[[\\\"filterByValues\\\",\\\"filter\\\",\\\"form\\\",\\\"localStorageKey\\\",\\\"showRemoved\\\"],[[24,[\\\"qParams\\\"]],[24,[\\\"filteredEmployers\\\"]],\\\"employer\\\",\\\"removed_employer\\\",true]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"filters\\\"]],\\\"expected `report.filters` to be a contextual component but found a string. Did you mean `(component report.filters)`? ('tt4/pods/employers/removed/template.hbs' @ L30:C10) \\\"],null]],[[\\\"showColumns\\\",\\\"filterChangeAction\\\"],[\\\"q,emp_users_given\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/employers/removed/template.hbs' @ L31:C11) \\\"],null]],[[\\\"selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,2,[\\\"no-content\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"actions\\\"]],\\\"expected `table.actions` to be a contextual component but found a string. Did you mean `(component table.actions)`? ('tt4/pods/employers/removed/template.hbs' @ L33:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"more\\\"]],\\\"expected `tableAction.more` to be a contextual component but found a string. Did you mean `(component tableAction.more)`? ('tt4/pods/employers/removed/template.hbs' @ L34:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,4,[\\\"lock\\\"]],false],[0,\\\"\\\\n                    \\\"],[1,[23,4,[\\\"massedit\\\"]],false],[0,\\\"\\\\n                    \\\"],[1,[23,4,[\\\"restore\\\"]],false],[0,\\\"\\\\n                    \\\"],[1,[23,4,[\\\"qrCode\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                \\\"],[1,[23,3,[\\\"inlineEdit\\\"]],false],[0,\\\"\\\\n                \\\"],[1,[23,3,[\\\"pdfExport\\\"]],false],[0,\\\"\\\\n                \\\"],[1,[23,3,[\\\"columnSelector\\\"]],false],[0,\\\"\\\\n                \\\"],[1,[23,3,[\\\"exportMore\\\"]],false],[0,\\\"\\\\n                \\\"],[1,[23,3,[\\\"refresh\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"            \\\"],[1,[23,2,[\\\"rowActions\\\"]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"employer\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",\\\"employer\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/removed/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nEmployersRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default EmployersRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/saved/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSavedController;\n\nimport Ember from 'ember';\n\nimport savedController from '../../../controllers/saved';\n\nUsersSavedController = savedController.extend({\n    //    needs: 'employers/add'\n    actions: {\n        addUser: function () {\n            var user;\n            //            user = @get 'model.id'\n            //            controller = @get 'controllers.orientations/add'\n            //            controller.set 'users', Em.A([parseInt(user,10)])\n            user = this.store.peekRecord('user', null);\n            if (!user) {\n                user = this.store.createRecord('user');\n            }\n            user.set('employer', this.get('model'));\n            return this.transitionToRoute('users.add');\n        },\n    },\n});\n\nexport default UsersSavedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/saved/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSavedRoute;\n\nimport Ember from 'ember';\n\nimport SavedRoute from '../../../routes/saved';\n\nUsersSavedRoute = SavedRoute.extend({\n    templateName: 'employers.saved',\n});\n\nexport default UsersSavedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"u32VKIG8\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/saved\\\",[]],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-lg btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addUser\\\"]],[8],[1,[28,\\\"t\\\",[\\\"users.add_to_employer\\\"],null],false],[9],[0,\\\"\\\\n        \\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/saved/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/employers/tree/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar EmployersTreeRoute;\n\nimport Ember from 'ember';\n\nEmployersTreeRoute = Ember.Route.extend({\n    model: function (params) {\n        var self;\n        self = this;\n        return this.Collector.ajax({\n            url: 'employers',\n            data: {\n                parent: '!(empty)',\n                limit: 'all',\n            },\n        }).then(function (data) {\n            var gdata, promarr;\n            promarr = [];\n            gdata = [['Name', 'Parent']];\n            data.employers.forEach(function (row) {\n                return promarr.push(\n                    new Em.RSVP.Promise(function (resolve, reject) {\n                        if (row.parent) {\n                            return self.store\n                                .findRecord('employer', row.parent)\n                                .then(function (parent) {\n                                    gdata.push([\n                                        row.name.toString(),\n                                        parent.get('name').toString(),\n                                    ]);\n                                    return resolve();\n                                });\n                        } else {\n                            gdata.pushObject([row.name.toString(), '']);\n                            return resolve();\n                        }\n                    }),\n                );\n            });\n            return Em.RSVP.Promise.all(promarr).then(function () {\n                return gdata;\n            });\n        });\n    },\n});\n\nexport default EmployersTreeRoute;\n","export default Ember.HTMLBars.template({\"id\":\"w7bA8lN/\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"style\\\",\\\"overflow-x:auto\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\"],[[24,[\\\"model\\\"]],\\\"tree\\\"]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/employers/tree/template.hbs\"}});","import Controller from '@ember/controller';\nimport { later } from '@ember/runloop';\nimport { configureScope, lastEventId } from '@sentry/browser';\nimport { computed, set, get } from '@ember/object';\nimport Ember from 'ember';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { isArray } from '@ember/array';\n\nexport default Controller.extend({\n    intl: service(),\n    errorService: service('error'),\n    init() {\n        this._super();\n\n        if (!Modernizr.localstorage) {\n            set(this, 'localStorageError', true);\n        }\n        this.getEventId();\n    },\n    error: alias('model'),\n    parsedError: computed('model', function () {\n        const error = get(this, 'error');\n        const intl = get(this, 'intl');\n        if (get(error, 'errors.error')) {\n            if (intl.exists('general.error.translated.' + get(error, 'errors.error'))) {\n                return intl.t('general.error.translated.' + get(error, 'errors.error'));\n            }\n        }\n        return null;\n    }),\n\n    technicalErrorString: computed('error', function () {\n        return this.errorService.toString(this.error);\n    }),\n\n    technicalError: computed('error', function () {\n        const error = this.error;\n        if (error.errors && isArray(error.errors))\n            return JSON.stringify(this.error.errors.firstObject);\n        else if (error.errors) return JSON.stringify(error.errors);\n        else return JSON.stringify(error);\n    }),\n\n    insertLabel() {\n        configureScope((scope) => {\n            scope.setTag('fatal_error', 'true');\n        });\n    },\n\n    getEventId() {\n        const id = lastEventId();\n        this.insertLabel();\n        if (!id && !Ember.testing) {\n            later(this, 'getEventId', 100);\n            return;\n        }\n        set(this, 'eventId', id);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"gjJJbXwx\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"error-flex\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"error-flex-container jumbotron\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"error.main.title\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"parsedError\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[22,\\\"parsedError\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"error.main.desc\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"localStorageError\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"error.main.localstorage\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"error.tech.details\\\"],null],false],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"technicalError\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[23,0,[\\\"technicalErrorString\\\"]],false],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[1,[23,0,[\\\"technicalError\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"error.main_id\\\"],null],false],[0,\\\": \\\"],[1,[22,\\\"eventId\\\"],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/error/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    content: alias('model'),\n});\n","import GeneralAddRoute from '../../../routes/general-add';\n\nexport default GeneralAddRoute.extend({\n    modelName: 'firecard',\n});\n","export default Ember.HTMLBars.template({\"id\":\"K7tdReXp\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/firecards/add/template.hbs\"}});","import GeneralAddController from '../../../controllers/general-add';\nimport { A } from '@ember/array';\nimport { alias } from '@ember/object/computed';\n\nexport default GeneralAddController.extend({\n    edit: true,\n    content: alias('model'),\n    fieldSettings: A({\n        edit: true,\n    }),\n});\n","import GeneralAddRoute from '../../../routes/general-add';\n\nexport default GeneralAddRoute.extend({\n    controllerName: 'firecards/edit',\n    modelName: 'firecard',\n    edit: true,\n    afterSave: 'firecards',\n});\n","export default Ember.HTMLBars.template({\"id\":\"U1tazc0M\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/firecards/edit/template.hbs\"}});","import GeneralReportController from '../../../controllers/general-report';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\nimport EmberObject from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nexport default GeneralReportController.extend({\n    intl: service(),\n    Collector: service('collector-service'),\n    exportFile: service('export-file'),\n    form: 'firecard',\n    employer: null,\n    user: null,\n\n    init() {\n        this._super(...arguments);\n        this.showColumns = ['user_employer', 'user'];\n        this.queryParams = ['page', 'user_employer', 'user'];\n        return this.addPdfGenerate();\n    },\n\n    content: alias('model'),\n    filters: A([EmberObject.create({ field: 'user_employer' })]),\n    settings: EmberObject.create({\n        rowActions: [],\n        massedit: true,\n    }),\n\n    addPdfGenerate() {\n        return this.settings.rowActions.push({\n            text: this.intl.t('firecard.export_firecard_pdf'),\n            action: async (self, items) => {\n                const rowids = items.mapBy('id');\n\n                const response = await this.Collector.ttapi({\n                    url: 'pdfGenerate/firecard',\n                    data: {\n                        rowids,\n                    },\n                    method: 'post',\n                    dataType: 'text',\n                });\n\n                return this.exportFile.exportFile(response, 'export_firecard', 'pdf', true);\n            },\n        });\n    },\n});\n","import GeneralReportRoute from '../../../routes/general-report';\n\nexport default GeneralReportRoute.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        user_employer: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n    },\n    form: 'firecard',\n    model(params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('firecard', params);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"IWuS9QQI\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"firecard\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"limit\\\",\\\"offset\\\"],[\\\"bubbleTransition\\\",\\\"firecard\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/firecards/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/form-wizard/component.coffee.old\n// Generated by CoffeeScript 2.6.1\n\n/*\n    this is done totally wrong!!!!!! tries to be component for wizards but in reality only support own measurement!!\n*/\nvar FormWizardComponent;\n\nimport Ember from 'ember';\n\nFormWizardComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    collector: Ember.inject.service('collector-service'),\n    customMeasurements: Em.A([]),\n    didReceiveAttrs: function () {\n        if (this.customMeasurements.length > 0) {\n            return;\n        }\n        return this.get('store')\n            .findAll('form')\n            .then((forms) => {\n                forms.forEach((form) => {\n                    if (form.get('external_type').includes(this.get('form'))) {\n                        return this.customMeasurements.pushObject(form);\n                    }\n                });\n                if (this.customMeasurements.length === 0) {\n                    return this.customMeasurements.pushObject(this.createBaseForm());\n                }\n            });\n    },\n    createBaseForm: function () {\n        var base_fields, fields, form, number;\n        // number = @customMeasurements.length + 1\n        number = this.getMeasurementNumber();\n        form = this.get('store').createRecord('form', {\n            external_type: 'measurement_custom' + number,\n        });\n        fields = form.get('fields');\n        base_fields = [\n            {\n                type: 'date',\n                external_type: 'date',\n                name: '$lang(10)',\n            },\n            {\n                type: 'database',\n                external_type: 'project',\n                name: '$lang(10)',\n                options:\n                    this.getSchemaidFor('project', 'number') +\n                    '\\n' +\n                    this.getSchemaidFor('project', 'name'),\n            },\n            {\n                type: 'database',\n                external_type: 'user',\n                name: '$lang(10)',\n                options:\n                    this.getSchemaidFor('user', 'lastname') +\n                    '\\n' +\n                    this.getSchemaidFor('user', 'firstname'),\n            },\n            {\n                type: 'number',\n                external_type: 'tr_rating',\n                name: '$lang(10)',\n            },\n            {\n                type: 'textarea',\n                external_type: 'description',\n                name: '$lang(10)',\n            },\n        ];\n        Em.A(base_fields).forEach((fieldValues) => {\n            return fields.pushObject(this.get('store').createRecord('form-field', fieldValues));\n        });\n        return form;\n    },\n    getMeasurementNumber: function () {\n        var max, min, number;\n        min = 1;\n        max = 99;\n        number = Math.floor(Math.random() * (max - min + 1)) + min;\n        if (this.get('collector').formExists('measurement_custom' + number)) {\n            number = this.getMeasurementNumber();\n        }\n        return number;\n    },\n    getSchemaidFor: function (form, field) {\n        var field_record, form_record;\n        form_record = this.get('store').peekAll('form').findBy('external_type', form);\n        if (!form_record) {\n            Ember.assert('getSchemaidFor failed because form (' + form + ') not found');\n        }\n        field_record = form_record.get('fields').findBy('external_type', field);\n        if (!form_record) {\n            Ember.assert(\n                'getSchemaidFor failed because field (' + field + ') not found from form ' + form,\n            );\n        }\n        return field_record.get('id');\n    },\n    actions: {\n        saved: function () {\n            if (this.get('saved')) {\n                return this.saved();\n            }\n        },\n        removedMeasurement: function () {\n            if (this.get('removedMeasurement')) {\n                return this.removedMeasurement();\n            }\n        },\n        addMeasurement: function () {\n            return this.get('customMeasurements').pushObject(this.createBaseForm());\n        },\n        extClash: function (model) {\n            var number;\n            number = this.getMeasurementNumber();\n            return model.set('external_type', 'measurement_custom' + number);\n        },\n    },\n});\n\nexport default FormWizardComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/form-wizard/custom-measurement/component.coffee.old\n// Generated by CoffeeScript 2.6.1\n\n/*\n\n    this is done totally wrong!!!!!! tries to be component for wizards but in reality only support own measurement!!\n\n*/\nvar CustomMeasurementComponent;\n\nimport Ember from 'ember';\n\nCustomMeasurementComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    session: Em.inject.service(),\n    notifications: Ember.inject.service(),\n    modelCreator: Ember.inject.service('model-creator'),\n    // form we are creating or editing\n    form: null,\n    model: null,\n    measurement_fields: Ember.computed('model.fields.[]', function () {\n        if (!this.get('model.fields')) {\n            return [];\n        }\n        return this.get('model.fields').filter(function (item) {\n            return item.get('external_type').indexOf('_plus') !== -1;\n        });\n    }),\n    getSchemaidFor: function (form, field) {\n        var field_record, form_record;\n        form_record = this.get('store').peekAll('form').findBy('external_type', form);\n        if (!form_record) {\n            Ember.assert('getSchemaidFor failed because form (' + form + ') not found');\n        }\n        field_record = form_record.get('fields').findBy('external_type', field);\n        if (!form_record) {\n            Ember.assert(\n                'getSchemaidFor failed because field (' + field + ') not found from form ' + form,\n            );\n        }\n        return field_record.get('id');\n    },\n    makeid: function () {\n        var i, j, possible, text;\n        text = '';\n        possible = 'abcdefghijklmnopqrstuvwxyz';\n        for (i = j = 0; j < 10; i = ++j) {\n            text += possible.charAt(Math.floor(Math.random() * possible.length));\n        }\n        return text;\n    },\n    // set all missing field names\n    beforeSave: function () {\n        var intl, model;\n        model = this.get('model');\n        intl = this.get('intl');\n        return model.get('fields').forEach(function (record) {\n            var endsWith, external_type, newName, splitted, startsWith;\n            external_type = record.get('external_type');\n            splitted = external_type.split('_');\n            endsWith = splitted[splitted.length - 1];\n            if (endsWith === 'minus' || endsWith === 'notices') {\n                startsWith = external_type.substring(0, external_type.length - endsWith.length - 1);\n                newName = model\n                    .get('fields')\n                    .findBy('external_type', startsWith + '_plus')\n                    .get('name');\n                if (endsWith === 'notices') {\n                    newName += ' ' + intl.t('measurement_custom.notice_field');\n                }\n                return record.set('name', newName);\n            }\n        });\n    },\n    actions: {\n        addField: function () {\n            var fields, rand;\n            fields = this.get('model.fields');\n            if (fields.length > 48) {\n                this.get('dialogs').alert(\n                    this.get('intl').t('settings.measurement_custom.max_fields'),\n                );\n                return;\n            }\n            rand = this.makeid();\n            fields.pushObject(\n                this.get('store').createRecord('form-field', {\n                    type: 'number',\n                    external_type: 'meas' + rand + '_plus',\n                }),\n            );\n            fields.pushObject(\n                this.get('store').createRecord('form-field', {\n                    type: 'number',\n                    external_type: 'meas' + rand + '_minus',\n                }),\n            );\n            return fields.pushObject(\n                this.get('store').createRecord('form-field', {\n                    type: 'multiselect',\n                    external_type: 'meas' + rand + '_notices',\n                    options: this.getSchemaidFor('trnotice', 'desc'),\n                }),\n            );\n        },\n        removeField: function (field) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('general.areyousure'))\n                .then((con) => {\n                    var field_prefix, remove_fields;\n                    if (!con) {\n                        return;\n                    }\n                    field_prefix = field\n                        .get('external_type')\n                        .substring(0, field.get('external_type').length - 4);\n                    remove_fields = this.get('model.fields').filter(function (item) {\n                        return item.get('external_type').indexOf(field_prefix) !== -1;\n                    });\n                    return remove_fields.forEach(function (record) {\n                        return record.destroyRecord();\n                    });\n                });\n        },\n        saveForm: function () {\n            var model;\n            this.set('saving', true);\n            this.beforeSave();\n            model = this.get('model');\n            return model\n                .save()\n                .then(() => {\n                    var promises;\n                    promises = [];\n                    model.get('fields').forEach(function (record) {\n                        if (record.get('hasDirtyAttributes')) {\n                            return promises.push(record.save());\n                        }\n                    });\n                    return Ember.RSVP.Promise.all(promises).then(() => {\n                        return this.get('modelCreator')\n                            .createEmberModels()\n                            .then(() => {\n                                if (this.get('saved')) {\n                                    this.saved();\n                                }\n                                return this.set('saving', false);\n                            });\n                    });\n                })\n                .catch((e) => {\n                    this.get('notifications').error(\n                        this.get('intl').t('settings.measurement_custom.create_failed'),\n                        {\n                            autoClear: false,\n                        },\n                    );\n                    if (this.get('extClash')) {\n                        this.extClash(model);\n                    }\n                    return this.set('saving', false);\n                });\n        },\n        removeForm: function (form) {\n            this.set('removing', true);\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('settings.measurement_custom.confirm_remove'))\n                .then((con) => {\n                    if (con) {\n                        return form\n                            .destroyRecord()\n                            .then(() => {\n                                return this.get('modelCreator')\n                                    .createEmberModels()\n                                    .then(() => {\n                                        if (this.get('removedMeasurement')) {\n                                            this.removedMeasurement();\n                                        }\n                                        return this.get('notifications').success(\n                                            this.get('intl').t(\n                                                'settings.measurement_custom.remove_success',\n                                            ),\n                                            {\n                                                autoClear: true,\n                                            },\n                                        );\n                                    });\n                            })\n                            .catch((e) => {\n                                return this.get('notifications').error(\n                                    this.get('intl').t('settings.measurement_custom.remove_fail'),\n                                    {\n                                        autoClear: false,\n                                    },\n                                );\n                            })\n                            .finally(() => {\n                                if (!this.get('isDestroyed')) {\n                                    return this.set('removing', false);\n                                }\n                            });\n                    }\n                });\n        },\n    },\n});\n\nexport default CustomMeasurementComponent;\n","export default Ember.HTMLBars.template({\"id\":\"4oASLNIs\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"&default\\\"],\\\"statements\\\":[[14,2],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.measurement_custom.name\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control lg\\\",[24,[\\\"model\\\",\\\"name\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.measurement_custom.fields\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-horizontal\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"measurement_fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control\\\",[23,1,[\\\"name\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-2\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeField\\\",[23,1,[]]]],[8],[1,[28,\\\"t\\\",[\\\"settings.measurement_custom.remove_field\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addField\\\"]],[8],[1,[28,\\\"t\\\",[\\\"settings.measurement_custom.add_field\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline-block\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"saveButtonText\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveForm\\\"],null],\\\"btn btn-primary\\\",[28,\\\"t\\\",[\\\"settings.measurement_custom.save\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger inline-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeForm\\\",[24,[\\\"model\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"settings.measurement_custom.remove\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/form-wizard/custom-measurement/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"ehXVKZXq\",\"block\":\"{\\\"symbols\\\":[\\\"customMeasurement\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"customMeasurements\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"customMeasurements\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[23,1,[\\\"isDeleted\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"form-wizard/custom-measurement\\\",null,[[\\\"model\\\",\\\"saved\\\",\\\"removedMeasurement\\\",\\\"extClash\\\"],[[23,1,[]],[28,\\\"action\\\",[[23,0,[]],\\\"saved\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removedMeasurement\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"extClash\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addMeasurement\\\"]],[8],[1,[28,\\\"t\\\",[\\\"settings.custom_measurement.new_measurement\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/form-wizard/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsController;\n\nimport Ember from 'ember';\n\nFormsController = Ember.Controller.extend();\n\nexport default FormsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/custom-report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsFormCustomReportRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport report from '../../../utils/custom-reports';\n\nimport config from '../../../config/environment';\n\nFormsFormCustomReportRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    model: function (params) {\n        var setting;\n        setting = report[params.form];\n        return {\n            host: setting.host,\n            url: setting.path,\n            form: setting.form,\n            filters: setting.filters,\n            report: params.form,\n            nopaginate: !setting.paginate,\n        };\n    },\n});\n\nexport default FormsFormCustomReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"QpiGKy0F\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"filters\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/custom-filters-comp\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"values\\\"],[[24,[\\\"model\\\",\\\"filters\\\"]],[24,[\\\"model\\\",\\\"form\\\"]],[24,[\\\"filterValues\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[1,[28,\\\"api-report\\\",null,[[\\\"filters\\\",\\\"path\\\",\\\"host\\\",\\\"translationPrefix\\\",\\\"noPagination\\\"],[[24,[\\\"filterValues\\\"]],[24,[\\\"model\\\",\\\"url\\\"]],[24,[\\\"model\\\",\\\"host\\\"]],[24,[\\\"model\\\",\\\"report\\\"]],[24,[\\\"model\\\",\\\"nopaginate\\\"]]]]],false],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/forms/custom-report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/customer/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsCustomerEditController;\n\nimport Ember from 'ember';\n\nFormsCustomerEditController = Ember.Controller.extend({\n    actions: {\n        recordSaved: function (settings, row) {\n            return this.transitionToRoute('saved').then(function (newRoute) {\n                newRoute.controller.set('model', row);\n                return newRoute.controller.set('afterSave', {\n                    route: 'forms.form-report',\n                    params: 'customer',\n                });\n            });\n        },\n        cancelClicked: function () {\n            return this.transitionToRoute('forms.form-report', {\n                form: 'customer',\n            });\n        },\n    },\n});\n\nexport default FormsCustomerEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/customer/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsCustomerEditRoute;\n\nimport Ember from 'ember';\n\nFormsCustomerEditRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default FormsCustomerEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"1EeHw3q1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"forms/customer/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"customer\\\",[24,[\\\"model\\\",\\\"id\\\"]],\\\"recordSaved\\\",\\\"cancelClicked\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/forms/customer/edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/customer/record-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsCustomerRecordCompComponent;\n\nimport Ember from 'ember';\n\nimport recordComp from '../../../collector/record-comp/component';\n\nFormsCustomerRecordCompComponent = recordComp.extend({\n    layoutName: 'collector/record-comp',\n    returnField: function (field) {\n        if (field.name === 'campaign') {\n            field.type = 'dropdown_options';\n            field.options = Em.A([]);\n            this.get('store')\n                .findAll('campaign')\n                .then((campaigns) => {\n                    var camp, i, len, ref, results;\n                    ref = campaigns.mapBy('name').uniq();\n                    results = [];\n                    for (i = 0, len = ref.length; i < len; i++) {\n                        camp = ref[i];\n                        if (camp === 'default') {\n                            continue;\n                        }\n                        results.push(\n                            field.options.pushObject({\n                                id: camp,\n                                value: camp,\n                            }),\n                        );\n                    }\n                    return results;\n                });\n        }\n        return field;\n    },\n});\n\nexport default FormsCustomerRecordCompComponent;\n","import GeneralAddController from 'tt4/controllers/general-add';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class FormsFormAddController extends GeneralAddController {\n    @service router;\n    @service store;\n    @service('collector-service') collector;\n\n    @action goBack() {\n        this.router.transitionTo('forms.form-report', this.form.underscore());\n    }\n\n    @action onFieldChange(field, value) {\n        this.model[field] = value;\n    }\n\n    @action addNew() {\n        this.model = this.store.createRecord(this.form);\n    }\n\n    @action addSame() {\n        this.model = this.collector.copyRecord(this.model);\n    }\n}\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/form-add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsFormAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nFormsFormAddRoute = GeneralAddRoute.extend({\n    controllerName: 'forms/form-add',\n    afterSave: Ember.computed('form', function () {\n        return {\n            route: 'forms.form-report',\n            params: this.get('form'),\n        };\n    }),\n    model: function (params) {\n        this.set('modelName', params.form.dasherize());\n        this.set('form', params.form);\n        return this._super(params);\n    },\n});\n\nexport default FormsFormAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"WW7CKYKf\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"flag.ember-movenium-form-add-own-forms\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@close\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@addNew\\\",\\\"@addSame\\\"],[[23,0,[\\\"form\\\"]],[23,0,[\\\"goBack\\\"]],[23,0,[\\\"model\\\"]],[23,0,[\\\"onFieldChange\\\"]],[23,0,[\\\"addNew\\\"]],[23,0,[\\\"addSame\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/forms/form-add/template.hbs\"}});","import GeneralAddController from 'tt4/controllers/general-add';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class FormsFormEditController extends GeneralAddController {\n    @service router;\n\n    @action goBack() {\n        this.router.transitionTo('forms.form-report', this.form.underscore());\n    }\n\n    @action onFieldChange(field, value) {\n        this.model[field] = value;\n    }\n}\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/form-edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsFormEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nFormsFormEditRoute = GeneralAddRoute.extend({\n    controllerName: 'forms/form-edit',\n    afterSave: Ember.computed('form', function () {\n        return {\n            route: 'forms.form-report',\n            params: this.get('form'),\n        };\n    }),\n    edit: true,\n    //controllerName: 'forms/edit-form'\n    model: function (params) {\n        this.set('modelName', params.form.dasherize());\n        this.set('form', params.form);\n        return this.store.findRecord(this.get('modelName'), params.id, {\n            include: true,\n        });\n    },\n});\n\nexport default FormsFormEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"5Yo15nzz\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"flag.ember-movenium-form-add-own-forms\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@close\\\",\\\"@record\\\",\\\"@onFieldChange\\\"],[[23,0,[\\\"form\\\"]],[23,0,[\\\"goBack\\\"]],[23,0,[\\\"model\\\"]],[23,0,[\\\"onFieldChange\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/forms/form-edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/form-history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsFormHistoryRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nFormsFormHistoryRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default FormsFormHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"8weeeZNj\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],[24,[\\\"model\\\",\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/forms/form-history/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/form-report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsFormReportController,\n    indexOf1 = [].indexOf;\n\nimport Ember from 'ember';\n\nimport formReport from '../../collector/report-comp/component';\n\nimport pdfExport from '../../../mixins/pdf-export';\n\nimport collector from '../../../classes/collector';\n\nimport config from '../../../config/environment';\n\nimport csvExport from '../../../mixins/csv-export';\n\nimport initController from '../../../mixins/init-controller';\n\nimport saveTheChildren from '../../../mixins/save-the-children';\n\nimport $ from 'jquery';\n\nimport { pluralize } from 'ember-inflector';\n\nFormsFormReportController = Ember.Controller.extend(\n    pdfExport,\n    csvExport,\n    initController,\n    saveTheChildren,\n    {\n        Collector: Ember.inject.service('collector-service'),\n        session: Ember.inject.service(),\n        localStorageWrapper: Ember.inject.service(),\n        sessionGlobals: Em.inject.service(),\n        dialogs: Ember.inject.service(),\n        tools: Ember.inject.service(),\n        capi: Ember.inject.service(),\n        exportFile: Ember.inject.service(),\n        admintool: Ember.inject.service(),\n        intl: Ember.inject.service(),\n        limit: 25,\n        page: 1,\n        errors: Ember.A([]),\n        translations: {\n            twentyfive: 25,\n            fifty: 50,\n            hundred: 100,\n        },\n        init_functions: function () {\n            this._super();\n            return this.refreshQueries();\n        },\n        initColSelecter: function () {\n            //close display-menu only if clicked outside of it\n            $('.display-menu').on('click', function (event) {\n                if (!$(this).hasClass('open')) {\n                    $(this).addClass('open');\n                }\n            });\n            return $('body').on('click touchend', function (e) {\n                if (\n                    !$('.display-menu').is(e.target) &&\n                    $('.display-menu').has(e.target).length === 0 &&\n                    $('.open').has(e.target).length === 0\n                ) {\n                    $('.display-menu').removeClass('open');\n                }\n            });\n        },\n        showMassEdit: Ember.computed('selectedRows', 'formName', function () {\n            return (\n                this.get('selectedRows') &&\n                this.get('Collector').testNeeds([this.get('formName') + '@edit'])\n            );\n        }),\n        settings: Ember.computed('formName', 'columnString', function () {\n            var settings;\n            if (!this.get('formName')) {\n                return;\n            }\n            settings = Ember.Object.create({\n                form: this.get('formName'),\n                show_columns: this.get('columnString'),\n                limit: this.get('limit'),\n            });\n            return settings;\n        }),\n        customQueryparams: Ember.computed(function () {\n            var formFeatures, forms;\n            forms = this.get('Collector').forms();\n            if (forms[this.get('formName')].features) {\n                formFeatures = forms[this.get('formName')].features;\n            }\n            if (formFeatures && Object.keys(formFeatures).includes('custom_queryparams')) {\n                return Object.values(formFeatures)[0];\n            }\n            return false;\n        }),\n        rowActions: Ember.computed('formName', 'showStatus', function () {\n            var actions, c, form;\n            c = this.get('Collector');\n            form = this.get('formName');\n            if (this.get('showStatus') === 'removed' && c.privilege(form, 'remove')) {\n                actions = [\n                    {\n                        action: 'restoreRow',\n                        icon: 'move move-ReuseFilled',\n                        text: this.get('intl').t('report.restore_rows'),\n                    },\n                    {\n                        action: 'historyRow',\n                        icon: 'move move-Search',\n                        text: this.get('intl').t('report.customer.history'),\n                    },\n                ];\n                if (c.privilege(form, 'edit')) {\n                    actions.push({\n                        action: 'editRow',\n                        icon: 'move move-Pencil',\n                        text: this.get('intl').t('general.edit'),\n                    });\n                }\n            } else {\n                // aika purkka, mut what you gonna do kun ei oo kauheen customoitava tämä\n                if (form === 'promomessage') {\n                    actions = [\n                        {\n                            action: 'historyRow',\n                            icon: 'move move-Search',\n                            text: this.get('intl').t('report.customer.history'),\n                        },\n                        {\n                            action: 'previewRow',\n                            icon: 'move move-Globe',\n                            text: this.get('intl').t('report.diaryreport_other_note.review'),\n                        },\n                    ];\n                } else {\n                    actions = [\n                        {\n                            action: 'historyRow',\n                            icon: 'move move-Search',\n                            text: this.get('intl').t('report.customer.history'),\n                        },\n                        {\n                            action: 'viewRow',\n                            icon: 'move move-View',\n                            text: this.get('intl').t('history.action.show_data'),\n                        },\n                    ];\n                }\n                if (c.privilege(form, 'edit')) {\n                    actions.push({\n                        action: 'editRow',\n                        icon: 'move move-Pencil',\n                        text: this.get('intl').t('general.edit'),\n                    });\n                }\n                if (c.privilege(form, 'remove')) {\n                    actions.push({\n                        action: 'removeRow',\n                        icon: 'move move-Delete',\n                        text: this.get('intl').t('report.delete_rows'),\n                    });\n                }\n                if (form === 'customer') {\n                    actions.push({\n                        action: 'loginToCustomer',\n                        icon: 'move move-Key',\n                        text: this.get('intl').t('general.login'),\n                    });\n                }\n            }\n            return actions;\n        }),\n        refreshQueries: Ember.observer('filterValues', 'columnString', function () {\n            if (!this.get('columnString')) {\n                return;\n            }\n            return this.refreshReport(this.get('settings'));\n        }),\n        refreshReport: function (report) {\n            var filterValues, form, query, showFiltersArr;\n            filterValues = this.get('filterValues');\n            if (!filterValues) {\n                return;\n            }\n            form = report.get('form');\n            showFiltersArr = this.get('filters').split(',');\n            query = [];\n            showFiltersArr.forEach((item) => {\n                var filter, value;\n                filter = filterValues.findBy('name', item);\n                if (this.get('customQueryparams')) {\n                    item = this.get('customQueryparams');\n                }\n                if (!filter) {\n                    return;\n                }\n                value = filter.value;\n                if (filter.name === 'groupBy') {\n                    return report.set('group', filter.value);\n                } else {\n                    if (!value) {\n                        return;\n                    }\n                    return query.pushObject({\n                        name: item,\n                        value: value,\n                    });\n                }\n            });\n            return report.set('query', query);\n        },\n        filters: Ember.computed('formName', function () {\n            var c, fields, filters, splitted;\n            if (!this.get('formName')) {\n                return;\n            }\n            c = this.get('Collector');\n            filters = [];\n            fields = c.fieldArray(this.get('formName'));\n            fields.forEach((field) => {\n                var ref;\n                if (\n                    (ref = field.type) === 'database' ||\n                    ref === 'date' ||\n                    ref === 'dropdown_options'\n                ) {\n                    return filters.push(field.name);\n                }\n            });\n            if (this.get('customQueryparams')) {\n                splitted = this.get('customQueryparams').split(':');\n                filters.splice(filters.indexOf(splitted[1]), 1);\n            }\n            filters.push('q');\n            filters.push('groupBy');\n            //@set('settings.showStatus', @get('row_info_status'))\n\n            //bind = Ember.Binding.from('row_info_status').to('settings.showStatus')\n            //bind.connect(@)\n            return filters.join(',');\n        }),\n        columns: Ember.computed('formName', 'session.currentUser', 'currentTemplate', function () {\n            var c, columns, fields, ls_columns;\n            c = this.get('Collector');\n            if (!this.get('formName')) {\n                return;\n            }\n            if (!this.get('session.currentUser')) {\n                return;\n            }\n            ls_columns = this.get('localStorageWrapper').getUserSetting(\n                this.get('formName') + '_defaultColumns',\n            );\n            fields = c.fieldArray(this.get('formName'));\n            if (ls_columns.length === 0) {\n                ls_columns = fields.mapBy('name');\n            }\n            if (this.get('currentTemplate')) {\n                ls_columns = this.get('currentTemplate.columns').split(',');\n            }\n            columns = Ember.A([]);\n            ls_columns.forEach(function (column) {\n                var field, ref;\n                if (column === 'id' || column === 'row_info.created') {\n                    return;\n                }\n                field = fields.findBy('name', column);\n                if (!field) {\n                    return;\n                }\n                if (!field.features.hide_column) {\n                    if (\n                        ls_columns.length < 1 ||\n                        ((ref = field.name), indexOf1.call(ls_columns, ref) >= 0)\n                    ) {\n                        return columns.pushObject({\n                            ext: field.name,\n                            name: field.translated_name,\n                        });\n                    }\n                }\n            });\n            if (ls_columns.length < 1 || indexOf1.call(ls_columns, 'row_info.created') >= 0) {\n                columns.pushObject({\n                    name: this.get('intl').t('general.row_info.created'),\n                    ext: 'row_info.created',\n                });\n            }\n            this.saveColumnsToLS(columns);\n            return columns;\n        }),\n        hiddenColumns: Ember.computed('formName', 'columns.[]', function () {\n            var c, col_arr, fields, hidden_columns;\n            if (!this.get('formName')) {\n                return;\n            }\n            if (!this.get('columns')) {\n                return;\n            }\n            c = this.get('Collector');\n            fields = c.fieldArray(this.get('formName'));\n            hidden_columns = Ember.A([]);\n            col_arr = this.get('columns').mapBy('ext');\n            fields.forEach(function (field) {\n                var ref;\n                if (\n                    ((ref = field.name), indexOf1.call(col_arr, ref) < 0) &&\n                    !field.features.hide_column\n                ) {\n                    return hidden_columns.pushObject({\n                        ext: field.name,\n                        name: field.translated_name,\n                    });\n                }\n            });\n            if (indexOf1.call(col_arr, 'row_info.created') < 0) {\n                hidden_columns.pushObject({\n                    name: this.get('intl').t('general.row_info.created'),\n                    ext: 'row_info.created',\n                });\n            }\n            return hidden_columns;\n        }),\n        columnString: Ember.computed('columns.[]', function () {\n            if (!this.get('columns')) {\n                return;\n            }\n            return this.get('columns').mapBy('ext').join(',');\n        }),\n        selectedRows: Ember.computed('_checkedRows.[]', function () {\n            if (this.get('_checkedRows')) {\n                return this.get('_checkedRows').mapBy('id').join(',');\n            }\n        }),\n        moreLinksClass: Em.computed('_checkedRows.[]', function () {\n            if (this.get('_checkedRows.length') === 0) {\n                return 'disabled';\n            }\n        }),\n        status: Em.computed(function () {\n            return this.get('statusOptions')[0];\n        }),\n        statusOptions: Ember.computed('formName', function () {\n            var field, intl, option, options;\n            if (!this.get('formName')) {\n                return [];\n            }\n            if (!this.get('Collector').fieldExists(this.get('formName'), 'status')) {\n                return [];\n            }\n            intl = this.get('intl');\n            field = this.get('Collector').field(this.get('formName'), 'status');\n            options = (function () {\n                var i, len, ref, results;\n                ref = field.options;\n                results = [];\n                for (i = 0, len = ref.length; i < len; i++) {\n                    option = ref[i];\n                    if (intl.exists('status.' + option)) {\n                        results.push({\n                            id: option,\n                            name: intl.t('status.' + option),\n                        });\n                    } else if (Ember.typeOf(option) === 'object' && option.value) {\n                        results.push({\n                            id: option.id,\n                            name: option.value,\n                        });\n                    } else {\n                        results.push({\n                            id: option,\n                            name: option,\n                        });\n                    }\n                }\n                return results;\n            })();\n            options.unshift({\n                id: '',\n                name: intl.t('status.all'),\n            });\n            return options;\n        }),\n        createComponent: function (settings) {\n            return formReport.create({\n                store: this.get('store'),\n                Collector: this.get('Collector'),\n                intl: this.get('intl'),\n                sessionGlobals: this.get('sessionGlobals'),\n                rowsPerPage: 'all',\n                renderer: this,\n                checked_rows: this.get('_checkedRows')\n                    ? this.get('_checkedRows').map((item) => {\n                          return item.get('id');\n                      })\n                    : void 0,\n                status: this.get('status.id'),\n                settings: settings,\n            });\n        },\n        getPdfAttachmentForEmail: function (params) {\n            if (Ember.get(params, 'type') === 'export_pdf_full') {\n                return this.getTtapiPdf('base64', params);\n            } else {\n                return this._export_pdf(params, 'base64');\n            }\n        },\n        actions: {\n            handleExportActions: function (params) {\n                switch (params.type) {\n                    case 'export_pdf':\n                        return this.send('export_pdf', params);\n                    case 'export_pdf_full':\n                        return this.send('export_pdf_full', params);\n                    case 'export_excel':\n                        return this.send('export_excel', params);\n                }\n            },\n            export: function (type) {\n                this.set('showEmailModal', true);\n                return this.set('exportInitType', type);\n            },\n            exportJoinedATReport: function () {\n                var c;\n                c = this.get('Collector');\n                return this.get('admintool')\n                    .ajax({\n                        url: 'joined_billinginfo',\n                    })\n                    .then((rows) => {\n                        var billing_columns,\n                            col,\n                            customer_columns,\n                            element,\n                            joined_columns,\n                            translated_columns;\n                        customer_columns = c.fields('customer');\n                        billing_columns = c.fields('billinginfo');\n                        joined_columns = [];\n                        translated_columns = [];\n                        for (col in customer_columns) {\n                            translated_columns.push(c.getTranslationForColumn('customer', col));\n                            joined_columns.push(col);\n                        }\n                        for (col in billing_columns) {\n                            translated_columns.push(c.getTranslationForColumn('billinginfo', col));\n                            joined_columns.push(col);\n                        }\n                        element = this.createCsvElement(joined_columns, rows, translated_columns);\n                        return this.createCsvFromElements(element, false);\n                    });\n            },\n            deleteChecked: function () {\n                if (this.get('_checkedRows.length') > 0) {\n                    return this.get('dialogs')\n                        .confirm(this.get('intl').t('report.confirm_delete'))\n                        .then((con) => {\n                            var show_error;\n                            if (con) {\n                                show_error = false;\n                                this.get('_checkedRows').forEach((row) => {\n                                    var record;\n                                    record = this.get('store').peekRecord(\n                                        this.get('formName'),\n                                        row.id,\n                                    );\n                                    if (record) {\n                                        return record.destroyRecord();\n                                    } else {\n                                        return this.get('store')\n                                            .findRecord(this.get('formName'), row.id)\n                                            .then(function (record) {\n                                                return record.destroyRecord();\n                                            });\n                                    }\n                                });\n                                return this.set('_checkedRows', Em.A([]));\n                            }\n                        });\n                }\n            },\n            restoreChecked: function () {\n                if (this.get('_checkedRows.length') > 0) {\n                    return this.get('dialogs')\n                        .confirm(this.get('intl').t('report.confirm_restore_rows'))\n                        .then((con) => {\n                            var form, form_plural;\n                            if (con) {\n                                form = this.get('formName');\n                                form_plural = pluralize(this.get('formName')).camelize();\n                                this.get('_checkedRows').forEach((row) => {\n                                    var record;\n                                    record = this.get('store').peekRecord(\n                                        this.get('formName'),\n                                        row.id,\n                                    );\n                                    return this.get('capi')\n                                        .request(\n                                            '/' + form_plural + '/' + row.id + '?validation=off',\n                                            {\n                                                dataType: 'json',\n                                                type: 'PUT',\n                                                data:\n                                                    '{\"' + form + '\":{\"row_info.status\":\"normal\"}}',\n                                            },\n                                        )\n                                        .then(() => {\n                                            return record.unloadRecord();\n                                        });\n                                });\n                                return this.set('_checkedRows', Em.A([]));\n                            }\n                        });\n                }\n            },\n            export_csv: function () {\n                var component, csv_str;\n                // pretty much copy & paste code from export_pdf\n                csv_str = [];\n                component = this.createComponent(this.get('settings'));\n                return component.get('asCsvArray').then((csvArr) => {\n                    var a, csvString, name;\n                    csvArr.forEach((arr) => {\n                        var i, indexOf, len, str;\n                        //remove linebreaks from csv string to avoid invalid format\n                        for (indexOf = i = 0, len = arr.length; i < len; indexOf = ++i) {\n                            str = arr[indexOf];\n                            if (typeof str === 'string') {\n                                arr[indexOf] = str.replace(/(\\r\\n\\t|\\n|\\r\\t)/gm, ' ');\n                            }\n                        }\n                        return csv_str.push(arr.join(';'));\n                    });\n                    name = this.get('session.currentUser.company') || 'movenium_export';\n                    if (typeof LocalFileSystem !== 'undefined' && LocalFileSystem !== null) {\n                        return window.requestFileSystem(\n                            LocalFileSystem.PERSISTENT,\n                            0,\n                            function (fileSystem) {\n                                return fileSystem.root.getFile(\n                                    name + '.csv',\n                                    {\n                                        create: true,\n                                    },\n                                    function (entry) {\n                                        var fileEntry;\n                                        fileEntry = entry;\n                                        return entry.createWriter(function (writer) {\n                                            //write file and open\n                                            writer.onwrite = function (evt) {\n                                                return cordova.plugins.fileOpener2.open(\n                                                    fileEntry.toURL(),\n                                                    'text/csv',\n                                                );\n                                            };\n                                            return writer.write(csv_str);\n                                        });\n                                    },\n                                );\n                            },\n                        );\n                    } else {\n                        //download csv for desktop\n                        csvString = csv_str.join('\\n');\n                        a = document.createElement('a');\n                        a.setAttribute(\n                            'href',\n                            'data:text/csv;charset=utf-8,\\uFEFF' + encodeURIComponent(csvString),\n                        );\n                        a.download = name + '.csv';\n                        a.style.display = 'none';\n                        document.body.appendChild(a);\n                        return a.click();\n                    }\n                });\n            },\n            export_excel: function (params) {\n                var component;\n                component = this.createComponent(this.get('settings'));\n                if (params.template) {\n                    component.set('show_columns', Ember.get(params, 'template.columns'));\n                }\n                return component.get('asXlsArray').then((output) => {\n                    var name;\n                    name = this.get('session.currentUser.company' || 'movenium_export');\n                    this.get('excel').export(output, {\n                        fileName: name + '.xlsx',\n                    });\n                    return this.set('showEmailModal', false);\n                });\n            },\n            export_pdf_full: function (params) {\n                var promise;\n                this.set('showLoader', true);\n                promise = this.getTtapiPdf(null, params);\n                if (promise) {\n                    promise.then((content) => {\n                        var data;\n                        data = JSON.parse(content);\n                        this.set('showLoader', false);\n                        if (data.url) {\n                            return window.open(data.url);\n                        }\n                    });\n                    promise.catch((e) => {\n                        return alert('pdf export failed: ' + JSON.stringify(e));\n                    });\n                    promise.finally(() => {\n                        this.set('showLoader', false);\n                        return this.set('showEmailModal', false);\n                    });\n                }\n            },\n            export_pdf: function (params = {}) {\n                this.set('showLoader', true);\n                return this._export_pdf(params)\n                    .then((file) => {\n                        if (typeof cordova !== 'undefined' && cordova !== null) {\n                            return this.get('cordova').openFile(file, 'application/pdf');\n                        }\n                    })\n                    .finally(() => {\n                        this.set('showEmailModal', false);\n                        return this.set('showLoader', false);\n                    });\n            },\n            setStatus: function (status) {\n                return this.set('status', status);\n            },\n            setRowsPerPage: function (limit) {\n                this.set('page', 1);\n                this.set('settings.limit', limit);\n                return this.set('limit', limit);\n            },\n            editRow: function (row) {\n                var ref, router;\n                // dirrrrty haxx for admintool\n                if (this.get('formName') === 'customer') {\n                    return this.transitionToRoute('admintool.customer', row.get('id'));\n                } else {\n                    router = Ember.getOwner(this).lookup('router:main');\n                    if (\n                        ((ref = 'forms.' + this.get('formName') + '.edit'),\n                        indexOf1.call(Object.keys(router._routerMicrolib.recognizer.names), ref) >=\n                            0)\n                    ) {\n                        return this.transitionToRoute(\n                            'forms.' + this.get('formName') + '.edit',\n                            row.get('id'),\n                        );\n                    } else {\n                        return this.transitionToRoute(\n                            'forms.form-edit',\n                            this.get('formName'),\n                            row.get('id'),\n                        );\n                    }\n                }\n            },\n            historyRow: function (row) {\n                return this.transitionToRoute(\n                    'forms.form-history',\n                    this.get('formName'),\n                    row.get('id'),\n                );\n            },\n            viewRow: function (row) {\n                var ref, router;\n                router = Ember.getOwner(this).lookup('router:main');\n                if (\n                    ((ref = 'forms.' + this.get('formName') + '.view'),\n                    indexOf1.call(Object.keys(router._routerMicrolib.recognizer.names), ref) >= 0)\n                ) {\n                    return this.transitionToRoute(\n                        'forms.' + this.get('formName') + '.view',\n                        row.get('id'),\n                    );\n                } else {\n                    return this.transitionToRoute(\n                        'forms.form-view',\n                        this.get('formName'),\n                        row.get('id'),\n                    );\n                }\n            },\n            previewRow: function (row) {\n                this.set('modalContent', row);\n                //@set 'title', row['title']\n                //@set 'message', row['title']\n                this.set('showModal', true);\n            },\n            closeModal: function () {\n                return this.set('showModal', false);\n            },\n            restoreRow: function (row) {\n                var form, form_plural;\n                if (collector.hasErrors(this.get('formName'))) {\n                    return;\n                }\n                form = this.get('formName');\n                form_plural = pluralize(this.get('formName')).camelize();\n                return this.get('dialogs')\n                    .confirm(this.get('intl').t('report.confirm_restore'))\n                    .then((con) => {\n                        if (con) {\n                            return this.get('capi')\n                                .request('/' + form_plural + '/' + row.id + '?validation=off', {\n                                    dataType: 'json',\n                                    type: 'PUT',\n                                    data: '{\"' + form + '\":{\"row_info.status\":\"normal\"}}',\n                                })\n                                .then(() => {\n                                    row = this.get('store').peekRecord(form, row.id);\n                                    return row.unloadRecord();\n                                });\n                        }\n                    });\n            },\n            showColumn: function (col) {\n                this.get('columns').pushObject(col);\n                return this.saveColumnsToLS(this.get('columns'));\n            },\n            hideColumn: function (col) {\n                this.get('columns').removeObject(col);\n                return this.saveColumnsToLS(this.get('columns'));\n            },\n            moveCol: function (col, dir) {\n                return this.moveElementInArray(this.get('columns'), col, dir);\n            },\n            sortDown: function (col) {\n                return this.moveElementInArray(this.get('columns'), col, 1);\n            },\n            deactivateTemplate: function () {\n                var lskey;\n                lskey = this.get('formName') + '_defaultColumns';\n                //_currentTemplate = @get('content.firstObject.constructor.modelName')+'_currentTemplate';\n                //if @get('localStorageWrapper').getUserSetting(_currentTemplate).columns\n                //    @get('localStorageWrapper').removeUserSetting(_currentTemplate)\n\n                //if @get('localStorageKey')\n                //    key = @get('localStorageKey')+'_defaultColumns'\n                //else if @get('content.firstObject.constructor.modelName')\n                //    key = @get('content.firstObject.constructor.modelName')+'_defaultColumns'\n                if (lskey) {\n                    this.get('localStorageWrapper').removeUserSetting(lskey);\n                }\n                return this.set('currentTemplate', null);\n            },\n            showRemovedRows: function () {\n                this.set('page', 1);\n                if (this.get('showStatus') === 'removed') {\n                    this.set('showStatus', 'normal');\n                } else {\n                    this.set('showStatus', 'removed');\n                }\n                return this.set('settings.row_info_status', this.get('showStatus'));\n            },\n            showEmailDialog: function () {\n                this.set('showEmailModal', true);\n                this.set('exportInitType', 'email');\n                return false;\n            },\n            removeModal: function () {\n                this.set('emailSent', false);\n                this.set('showEmailModal', false);\n                return false;\n            },\n            sendEmail: function (to, title, content, params) {\n                var formName, rowids;\n                this.set('showLoader', true);\n                formName = this.get('formName');\n                rowids = this.get('_checkedRows')\n                    ? this.get('_checkedRows').map((item) => {\n                          return item.get('id');\n                      })\n                    : [];\n                return this.getPdfAttachmentForEmail(params).then((pdf) => {\n                    var promise;\n                    promise = this.get('Collector').ttapi({\n                        url: 'sendReportAsEmail',\n                        data: {\n                            to_address: to,\n                            email: pdf,\n                            content: content,\n                            lang: this.get('intl.primaryLocale'),\n                            includeApproval: Ember.get(params, 'approvalLink'),\n                            form_name: formName,\n                            rowids: rowids,\n                            header:\n                                this.get('intl').t('menu.' + formName) +\n                                '-' +\n                                this.get('intl').t('general.report'),\n                        },\n                        method: 'post',\n                    });\n                    promise.then(() => {\n                        this.set('emailSent', true);\n                        return this.set('showLoader', false);\n                    });\n                    return promise.catch(() => {\n                        this.set('showLoader', false);\n                        return this.set('emailError', true);\n                    });\n                });\n            },\n            loginToCustomer: function (row) {\n                var url;\n                url = null;\n                if (row.campaign === 'visma' || row.campaign === 'entry_mini') {\n                    url = config.APP.ENTRY_URL;\n                }\n                return $.ajax({\n                    url:\n                        config.APP.ADMINTOOLURL +\n                        'getCustomerAdminUsers?partnerid=' +\n                        row.partnerid,\n                    type: 'GET',\n                    headers: {\n                        Authorization:\n                            'Bearer ' + this.get('session.session.authenticated.access_token'),\n                    },\n                    success: (admins) => {\n                        return this.get('tools').login(\n                            {\n                                username: admins['users'][0]['username'],\n                                userid: admins['users'][0]['id'],\n                                partnerid: row.partnerid,\n                            },\n                            url,\n                        );\n                    },\n                });\n            },\n            checkedRows: function (rows) {\n                this.set('_checkedRows', rows);\n                this.set('thereIsCheckedRows', rows.length > 0);\n            },\n            toggleInlineEdit: function () {\n                var promises;\n                if (this.get('inlineEdit')) {\n                    promises = [];\n                    this.get('model').forEach(function (row) {\n                        if (!row.get('isValid') || row.get('isError')) {\n                            row.rollbackAttributes();\n                            return promises.push(row.reload());\n                        } else if (row.get('hasDirtyAttributes')) {\n                            return row.rollbackAttributes();\n                        }\n                    });\n                    return Ember.RSVP.Promise.all(promises).then(() => {\n                        this.set('errors', Ember.A([]));\n                        this.toggleProperty('inlineEdit');\n                        this.set('timeout', true);\n                        return Em.run.later(\n                            this,\n                            function () {\n                                return this.set('timeout', false);\n                            },\n                            2000,\n                        );\n                    });\n                } else {\n                    this.toggleProperty('inlineEdit');\n                    this.set('addRows', Ember.A([]));\n                    this.set('timeout', true);\n                    return Em.run.later(\n                        this,\n                        function () {\n                            return this.set('timeout', false);\n                        },\n                        2000,\n                    );\n                }\n            },\n            saveRows: function () {\n                var allRows, errors, last_promise;\n                errors = Ember.A([]);\n                last_promise = new Ember.RSVP.Promise((resolve) => {\n                    return resolve();\n                });\n                allRows = this.get('addRows').concat(this.get('model').toArray());\n                allRows.forEach((row, index) => {\n                    if (!row.get('hasDirtyAttributes')) {\n                        return;\n                    }\n                    ++index;\n                    return (last_promise = new Ember.RSVP.Promise((resolve) => {\n                        return last_promise.then(() => {\n                            return row.validate().then(() => {\n                                return this.save_record_and_catch_errors(\n                                    index,\n                                    row,\n                                    errors,\n                                    resolve,\n                                );\n                            });\n                        });\n                    }));\n                });\n                last_promise.then(() => {\n                    if (Ember.get(errors, 'length') === 0) {\n                        return this.toggleProperty('inlineEdit');\n                    }\n                });\n                return this.set('errors', errors);\n            },\n            copyRow: function (row) {\n                var c;\n                c = this.get('Collector');\n                return this.get('addRows').unshiftObject(c.copyRecord(row));\n            },\n        },\n        save_record_and_catch_errors: function (index, row, errors, resolve) {\n            var promise;\n            if (row.get('isValid')) {\n                promise = this.save_record(row);\n                promise.then(() => {\n                    return resolve();\n                });\n                return promise.catch(function (e) {\n                    var error;\n                    //                row.rollbackAttributes()\n                    if (e && e.errors[0] && e.errors[0].error_msg) {\n                        error = e.errors[0].error_msg;\n                    } else if (e && e.errors[0] && e.errors[0].error) {\n                        error = e.errors[0].error;\n                    } else {\n                        error = 'unknown';\n                    }\n                    errors.pushObject({\n                        index: index,\n                        row: row.get('id'),\n                        error: error,\n                    });\n                    return resolve();\n                });\n            } else {\n                return errors.pushObject({\n                    index: index,\n                    row: row.get('id'),\n                    error: row.get('errors.messages.firstObject'),\n                });\n            }\n        },\n        _export_pdf: function (params, mode = 'download') {\n            return new Ember.RSVP.Promise((resolve) => {\n                var component, promise, report;\n                report = this.get('settings');\n                component = this.createComponent(report);\n                component.set('pdfSettings', params);\n                if (params.template) {\n                    component.set('show_columns', Ember.get(params, 'template.columns'));\n                }\n                promise = component.get('asPdfElement');\n                return promise.then((element) => {\n                    return this.createPdfFromElements([element], mode, '', 8, params).then(\n                        (back) => {\n                            return resolve(back);\n                        },\n                    );\n                });\n            });\n        },\n        getRawFilters: function () {\n            var params;\n            params = {};\n            if (this.get('filterValues')) {\n                this.get('filterValues').forEach((filter) => {\n                    var add;\n                    if (\n                        Ember.isArray(Ember.get(filter, 'value')) &&\n                        Ember.get(filter, 'value').length === 0\n                    ) {\n                    } else if (Ember.get(filter, 'bindto')) {\n                        return (params['q'] = Ember.get(filter, 'value'));\n                    } else if (Ember.get(filter, 'value') && Ember.get(filter, 'subform')) {\n                        add = {};\n                        add[Ember.get(filter, 'name')] = Ember.get(filter, 'value');\n                        return (params[Ember.get(filter, 'form')] = add);\n                    } else if (\n                        Ember.get(filter, 'value') &&\n                        Ember.get(filter, 'name') !== 'status'\n                    ) {\n                        return (params[Ember.get(filter, 'name')] = Ember.get(filter, 'value'));\n                    }\n                });\n            }\n            return params;\n        },\n        getTtapiPdf: function (format = null, params) {\n            var postParams, url;\n            url = 'pdf/row';\n            postParams = {\n                form: this.get('formName'),\n                lang: moment.locale(),\n                filters: JSON.stringify(this.getRawFilters()),\n            };\n            if (this.get('thereIsCheckedRows')) {\n                postParams.id = this.get('_checkedRows').mapBy('id').join(',');\n            }\n            if (params.template) {\n                postParams.template = Ember.get(params, 'template.id');\n            }\n            if (format) {\n                postParams.type = format;\n            }\n            return this.get('Collector').ttapi({\n                dataType: 'text',\n                url: url,\n                data: postParams,\n            });\n        },\n        thereIsCheckedRows: false,\n        formContainsApprovedStatus: Ember.computed('formName', function () {\n            var field, fields, found;\n            fields = this.get('Collector').fields(this.get('formName'));\n            found = false;\n            for (field in fields) {\n                if (\n                    fields[field].type === 'status' &&\n                    indexOf1.call(fields[field].options, 'approved') >= 0\n                ) {\n                    found = true;\n                }\n            }\n            return found;\n        }),\n        showApprovalLinkSelection: Ember.computed.and(\n            'thereIsCheckedRows',\n            'formContainsApprovedStatus',\n        ),\n        moveElementInArray: function (obj, col, offset) {\n            var index, newIndex;\n            index = obj.indexOf(col);\n            obj.removeObject(col);\n            newIndex = index + offset;\n            if (newIndex > obj.length) {\n                newIndex = 0;\n            } else if (newIndex < 0) {\n                newIndex = obj.length;\n            }\n            obj.insertAt(newIndex, col);\n            return this.saveColumnsToLS(obj);\n        },\n        saveColumnsToLS: function (columns) {\n            var cols, ls, lskey;\n            //return if @get('currentTemplate')\n            cols = columns.mapBy('ext');\n            ls = this.get('localStorageWrapper');\n            lskey = this.get('formName') + '_defaultColumns';\n            return ls.setUserSetting(lskey, cols);\n        },\n    },\n);\n\nexport default FormsFormReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/form-report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsFormReportRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nimport initRoute from '../../../mixins/init-route';\n\nFormsFormReportRoute = GeneralReportRoute.extend(initRoute, {\n    Collector: Em.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n            replace: true,\n        },\n        q: {\n            refreshModel: true,\n            replace: true,\n        },\n    },\n    model: function (params) {\n        var c, field, fields, form, i, len;\n        params = this._super(params);\n        params.sideload = true;\n        form = params.form;\n        this.set('form', form);\n        delete params.form;\n        c = this.get('Collector');\n        fields = c.fieldArray(form);\n        if (fields) {\n            for (i = 0, len = fields.length; i < len; i++) {\n                field = fields[i];\n                if ('use_index' in field.features) {\n                    if (!(field.name in params)) {\n                        params[field.name] =\n                            moment().startOf('month').format('YYYY-MM-DD') +\n                            '_' +\n                            moment().endOf('month').format('YYYY-MM-DD');\n                    }\n                }\n            }\n        }\n        return this.get('store').query(form.underscore(), params);\n    },\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.set('formName', this.get('form'));\n    },\n    actions: {\n        didTransition: function () {\n            Ember.run.scheduleOnce('afterRender', this, function () {\n                return this.controller.initColSelecter();\n            });\n            return true;\n        },\n    },\n});\n\nexport default FormsFormReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"kc0ybgar\",\"block\":\"{\\\"symbols\\\":[\\\"error\\\",\\\"dd\\\",\\\"ddm\\\",\\\"col\\\",\\\"col\\\",\\\"dd\\\",\\\"ddm\\\",\\\"opt\\\",\\\"dd\\\",\\\"ddm\\\",\\\"report\\\",\\\"Report\\\",\\\"@formName\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-own-form-report\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\"],[[23,0,[\\\"formName\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,12,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[12]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"own-form-report\\\"],null]],null,{\\\"statements\\\":[[4,\\\"collector/form-report\\\",null,[[\\\"form\\\",\\\"updateOnDidReceiveAttrs\\\"],[[24,[\\\"formName\\\"]],true]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[23,11,[\\\"filters\\\"]],false],[0,\\\"\\\\n        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,11,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/forms/form-report/template.hbs' @ L8:C10) \\\"],null]],[[\\\"selectable\\\"],[true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[11]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/filters-comp\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"values\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"formName\\\"]],[24,[\\\"filterValues\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content report-forms\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-right report-button-row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"statusOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more pull-left\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[6,[23,9,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"  \\\"],[1,[28,\\\"t\\\",[\\\"report.more_button\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                        \\\"],[6,[23,9,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showMassEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[6,[23,10,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                                    \\\"],[6,[23,10,[\\\"linkTo\\\"]],[],[[\\\"@route\\\",\\\"@models\\\"],[\\\"massedit\\\",[28,\\\"array\\\",[[24,[\\\"formName\\\"]],[24,[\\\"selectedRows\\\"]]],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.massedit\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[6,[23,10,[\\\"item\\\"]],[],[[\\\"@class\\\"],[\\\"disabled\\\"]],{\\\"statements\\\":[[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.massedit\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[28,\\\"needs\\\",[[28,\\\"concat\\\",[[23,13,[]],\\\"@remove\\\"],null]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showStatus\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,10,[\\\"item\\\"]],[],[[\\\"@class\\\"],[[22,\\\"moreLinksClass\\\"]]],{\\\"statements\\\":[[0,\\\"\\\\n                                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"restoreChecked\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.restore_rows\\\"],null],false],[9],[0,\\\"\\\\n                                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,10,[\\\"item\\\"]],[],[[\\\"@class\\\"],[[22,\\\"moreLinksClass\\\"]]],{\\\"statements\\\":[[0,\\\"\\\\n                                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"deleteChecked\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.delete_rows\\\"],null],false],[9],[0,\\\"\\\\n                                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[5,\\\"qr-code-generator\\\",[],[[\\\"@style\\\",\\\"@rows\\\",\\\"@editRoute\\\",\\\"@form\\\"],[\\\"li\\\",[23,0,[\\\"checked\\\"]],[23,0,[\\\"settings\\\",\\\"rowSettings\\\",\\\"editRoute\\\"]],[22,\\\"formName\\\"]]]],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[10]}],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[9]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"inlineEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more pull-left\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveRows\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general_report.inline_edit.save\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"edit-mode-container hidden-xs hidden-sm\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"timeout\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"theme\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[[24,[\\\"inlineEdit\\\"]],\\\"light\\\",[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general_report.inline_edit.toggle\\\"],null],\\\"\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"theme\\\",\\\"onToggle\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[[24,[\\\"inlineEdit\\\"]],\\\"light\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggleInlineEdit\\\"],null],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"general_report.inline_edit.toggle\\\"],null],\\\"\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"statusOptions\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"status-container\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"hidden-xs\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.status\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n\\\\n                        \\\"],[5,\\\"bs-dropdown\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[6,[23,6,[\\\"button\\\"]],[],[[\\\"@class\\\"],[\\\"status-toggle btn-secondary\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[1,[24,[\\\"status\\\",\\\"name\\\"]],false],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-down\\\"],[8],[9],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                            \\\"],[6,[23,6,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"status-menu\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"statusOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,7,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"status\\\",[23,8,[]]]],[8],[1,[23,8,[\\\"name\\\"]],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"                            \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PDF-2Filled\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more display-menu\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"dropdown-toggle\\\"],[10,\\\"aria-expanded\\\",\\\"false\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-secondary\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-DragReorder\\\"],[8],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"dropdown-menu dropdown-menu-right keep-open column-selector-dropdown\\\"],[10,\\\"role\\\",\\\"menu\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.limit\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"unless\\\",[[24,[\\\"limit\\\"]],\\\"selected-limit\\\"],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"is-almost-equal\\\",[[24,[\\\"limit\\\"]],\\\"25\\\",true],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",25]],[8],[1,[24,[\\\"translations\\\",\\\"twentyfive\\\"]],false],[9],[0,\\\" |\\\\n                            \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"if\\\",[[28,\\\"is-almost-equal\\\",[[24,[\\\"limit\\\"]],\\\"50\\\",true],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",50]],[8],[1,[24,[\\\"translations\\\",\\\"fifty\\\"]],false],[9],[0,\\\" |\\\\n                            \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"if\\\",[[28,\\\"is-almost-equal\\\",[[24,[\\\"limit\\\"]],\\\"100\\\",true],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",100]],[8],[1,[24,[\\\"translations\\\",\\\"hundred\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n                        \\\"],[1,[28,\\\"report-template-selector\\\",null,[[\\\"form\\\",\\\"columns\\\",\\\"settings\\\",\\\"currentTemplate\\\",\\\"deactivateTemplate\\\"],[[24,[\\\"formName\\\"]],[24,[\\\"columns\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"currentTemplate\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"deactivateTemplate\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.hidden\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"hiddenColumns\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"a\\\",false],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.columns.click_to_show\\\"],null]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showColumn\\\",[23,5,[]]]],[8],[1,[23,5,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.shown\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.columns.click_to_hide\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"hideColumn\\\",[23,4,[]]]],[8],[1,[23,4,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"sort-link pull-right\\\"],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moveCol\\\",[23,4,[]],-1]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Up2Filled\\\"],[8],[9],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"sort-link pull-right\\\"],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moveCol\\\",[23,4,[]],1]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Down2Filled\\\"],[8],[9],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,2,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,2,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_csv\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_csv\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                        \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export\\\",\\\"export_excel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_excel\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                        \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export\\\",\\\"export_pdf\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                        \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export\\\",\\\"export_pdf_full\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf_full\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"formName\\\"]],\\\"customer\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"exportJoinedATReport\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_joined_csv\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"hideEmailSend\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showEmailDialog\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.send_email\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showStatus\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showRemovedRows\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.show_normal\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showRemovedRows\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.show_removed\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[24,[\\\"errors\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger alert-dismissable\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"#\\\"],[10,\\\"class\\\",\\\"close\\\"],[10,\\\"data-dismiss\\\",\\\"alert\\\"],[11,\\\"aria-label\\\",[28,\\\"t\\\",[\\\"general.close\\\"],null]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general_report.inline_edit.error.title\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general_report.inline_edit.error.row\\\"],[[\\\"row\\\",\\\"error\\\"],[[23,1,[\\\"index\\\"]],[23,1,[\\\"error\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[4,\\\"if\\\",[[24,[\\\"inlineEdit\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[28,\\\"inline-edit\\\",null,[[\\\"settings\\\",\\\"addRows\\\",\\\"show_columns\\\",\\\"columnHash\\\",\\\"copyRow\\\"],[[24,[\\\"settings\\\"]],[24,[\\\"addRows\\\"]],[24,[\\\"columnString\\\"]],[28,\\\"hash\\\",null,[[\\\"all\\\",\\\"hidden\\\"],[[24,[\\\"columns\\\"]],[24,[\\\"hiddenColumns\\\"]]]]],[28,\\\"action\\\",[[23,0,[]],\\\"copyRow\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"checkable\\\",\\\"formReport\\\",\\\"settings\\\",\\\"editRow\\\",\\\"restoreRow\\\",\\\"removeRow\\\",\\\"historyRow\\\",\\\"viewRow\\\",\\\"previewRow\\\",\\\"loginToCustomer\\\",\\\"show_columns\\\",\\\"rowActions\\\",\\\"checkedRows\\\",\\\"status\\\",\\\"currentPage\\\",\\\"rowsPerPage\\\"],[true,true,[24,[\\\"settings\\\"]],\\\"editRow\\\",\\\"restoreRow\\\",\\\"removeRow\\\",\\\"historyRow\\\",\\\"viewRow\\\",\\\"previewRow\\\",\\\"loginToCustomer\\\",[24,[\\\"columnString\\\"]],[24,[\\\"rowActions\\\"]],\\\"checkedRows\\\",[24,[\\\"status\\\",\\\"id\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"showEmailModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"export-modal\\\",null,[[\\\"initType\\\",\\\"sendEmailAction\\\",\\\"exportActions\\\",\\\"showEmailModal\\\",\\\"includeApprovalLink\\\",\\\"statusFieldIsVisible\\\",\\\"form\\\",\\\"showApprovalLinkSelection\\\",\\\"count\\\",\\\"emailSent\\\",\\\"loading\\\",\\\"emailError\\\"],[[24,[\\\"exportInitType\\\"]],\\\"sendEmail\\\",\\\"handleExportActions\\\",[24,[\\\"showEmailModal\\\"]],[24,[\\\"includeApprovalLink\\\"]],[24,[\\\"statusFieldIsVisible\\\"]],[24,[\\\"formName\\\"]],[24,[\\\"showApprovalLinkSelection\\\"]],[24,[\\\"emailSendingCount\\\"]],[24,[\\\"emailSent\\\"]],[24,[\\\"showLoader\\\"]],[24,[\\\"emailError\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"mess-ages/types/promo\\\",null,[[\\\"content\\\",\\\"close\\\"],[[24,[\\\"modalContent\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/forms/form-report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/form-view/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsFormViewController;\n\nimport Ember from 'ember';\n\nFormsFormViewController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    fields: Ember.computed('model', function () {\n        var c, fields, form_name, model;\n        model = this.get('model');\n        if (!model) {\n            return;\n        }\n        form_name = model.get('constructor.modelName');\n        if (form_name) {\n            form_name = form_name.underscore();\n        }\n        c = this.get('Collector');\n        fields = c.fieldArray(form_name);\n        Em.assert('Seems that your form name ' + form_name + ' has no fields', fields);\n        fields = fields.filterBy('features.hide', void 0);\n        return fields;\n    }),\n});\n\nexport default FormsFormViewController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/form-view/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsFormViewRoute;\n\nimport Ember from 'ember';\n\nFormsFormViewRoute = Ember.Route.extend({\n    model: function (params) {\n        this.set('modelName', params.form.dasherize());\n        return this.store.findRecord(this.get('modelName'), params.id, {\n            include: true,\n        });\n    },\n});\n\nexport default FormsFormViewRoute;\n","export default Ember.HTMLBars.template({\"id\":\"SeP1ZQjh\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-10 col-md-6 col-lg-4 col-sm-offset-1 col-md-3 col-lg-offset-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/record-view-comp\\\",null,[[\\\"fields\\\",\\\"model\\\"],[[24,[\\\"fields\\\"]],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-10 col-md-6 col-lg-4 col-sm-offset-1 col-md-3 col-lg-offset-4 col-margin-top\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"button\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\",\\\"forms.form-report\\\",[24,[\\\"model\\\",\\\"_internalModel\\\",\\\"modelName\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.back\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/forms/form-view/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/information/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsInformationRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nFormsInformationRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    intl: Em.inject.service(),\n    model: function () {\n        var arr, form, forms, name;\n        forms = this.Collector.forms();\n        arr = [];\n        for (name in forms) {\n            form = forms[name];\n            form = Em.Object.create(form);\n            form.set('ext', name);\n            if (form.get('name') == null) {\n                form.set('name', this.get('intl').t('menu.' + name + 's'));\n            }\n            arr.push(form);\n        }\n        return arr;\n    },\n    actions: {\n        toggleShowFields: function (form) {\n            return form.toggleProperty('showFields');\n        },\n    },\n});\n\nexport default FormsInformationRoute;\n","export default Ember.HTMLBars.template({\"id\":\"0FRuciT/\",\"block\":\"{\\\"symbols\\\":[\\\"form\\\",\\\"value\\\",\\\"key\\\",\\\"error\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h2\\\",true],[8],[0,\\\"\\\\n        \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\" - \\\"],[1,[23,1,[\\\"ext\\\"]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-primary\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.user_can\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[23,1,[\\\"privileges\\\",\\\"add\\\"]],\\\"bg-success\\\",\\\"bg-danger\\\"],null]]]],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\": \\\"],[1,[28,\\\"if\\\",[[23,1,[\\\"privileges\\\",\\\"add\\\"]],\\\"Yes\\\",\\\"No\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[23,1,[\\\"privileges\\\",\\\"edit\\\"]],\\\"bg-success\\\",\\\"bg-danger\\\"],null]]]],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"general.edit\\\"],null],false],[0,\\\": \\\"],[1,[28,\\\"if\\\",[[23,1,[\\\"privileges\\\",\\\"edit\\\"]],\\\"Yes\\\",\\\"No\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[23,1,[\\\"privileges\\\",\\\"remove\\\"]],\\\"bg-success\\\",\\\"bg-danger\\\"],null]]]],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"formeditor.remove\\\"],null],false],[0,\\\": \\\"],[1,[28,\\\"if\\\",[[23,1,[\\\"privileges\\\",\\\"remove\\\"]],\\\"Yes\\\",\\\"No\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-danger\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.has_errors\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[1,[23,4,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-info\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"panel-heading\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleShowFields\\\",[23,1,[]]]],[8],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"fields.on_form\\\"],null],false],[0,\\\": \\\"],[7,\\\"small\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.click_to_show\\\"],null],false],[9],[9],[0,\\\" \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"panel-body \\\",[28,\\\"if\\\",[[23,1,[\\\"showFields\\\"]],\\\"\\\",\\\"hidden\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[23,1,[\\\"objects\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[23,3,[]],false],[0,\\\" \\\"],[1,[28,\\\"if\\\",[[23,2,[\\\"name\\\"]],[23,2,[\\\"name\\\"]]],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.field_type\\\"],null],false],[0,\\\": \\\"],[1,[23,2,[\\\"type\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.field_options\\\"],null],false],[0,\\\": \\\"],[1,[28,\\\"show-json\\\",[[23,2,[\\\"options\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,2,[\\\"features\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.field_features\\\"],null],false],[0,\\\": \\\"],[1,[28,\\\"show-json\\\",[[23,2,[\\\"features\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2,3]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/forms/information/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/forms/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormsRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nFormsRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default FormsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"FkqvDjL+\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/forms/template.hbs\"}});","import Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { computed, get } from '@ember/object';\n\n// eslint-disable-next-line ember/alias-model-in-controller\nexport default Controller.extend({\n    gps: service('gps'),\n\n    // eslint-disable-next-line ember/avoid-leaking-state-in-ember-objects\n    translations: { lat: 'Lat', lon: 'Lon', acc: 'Accuracy' },\n\n    errorState: computed('gps.status', function () {\n        if (get(this, 'gps.status') === 'error') {\n            return true;\n        }\n    }),\n\n    searching: computed('gps.status', function () {\n        if (get(this, 'gps.status') === 'searching') {\n            return true;\n        }\n    }),\n\n    accuracy: computed('gps.currentAccuracy', function () {\n        const accuracy = get(this, 'gps.currentAccuracy');\n        if (accuracy > 1000) {\n            return Math.round(accuracy / 10) / 100 + ' km';\n        } else {\n            return Math.round(accuracy) + ' m';\n        }\n    }),\n\n    latlng: computed('gps.{currentLatitude,currentLongitude,currentAccuracy}', function () {\n        return {\n            lat: get(this, 'gps.currentLatitude'),\n            lng: get(this, 'gps.currentLongitude'),\n            accuracy: get(this, 'gps.currentAccuracy'),\n        };\n    }),\n\n    actions: {\n        retry() {\n            //@get('gpsService').start()\n            return window.location.reload();\n        },\n    },\n});\n","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nexport default Route.extend(AuthenticatedRouteMixin);\n","export default Ember.HTMLBars.template({\"id\":\"XbkQiEYa\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errorState\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[[24,[\\\"gps\\\",\\\"lastErrorHeader\\\"]]],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"show-linefeeds\\\",[[28,\\\"t\\\",[[24,[\\\"gps\\\",\\\"lastErrorMessage\\\"]]],null]],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"retry\\\"]],[8],[1,[28,\\\"t\\\",[\\\"gps.retry\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"searching\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"gps.searching_more_accurate\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"gps\\\",\\\"currentLatitude\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"google-map\\\",null,[[\\\"center\\\"],[[24,[\\\"latlng\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[1,[24,[\\\"translations\\\",\\\"lat\\\"]],false],[0,\\\": \\\"],[1,[24,[\\\"gps\\\",\\\"currentLatitude\\\"]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[24,[\\\"translations\\\",\\\"lon\\\"]],false],[0,\\\": \\\"],[1,[24,[\\\"gps\\\",\\\"currentLongitude\\\"]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[24,[\\\"translations\\\",\\\"acc\\\"]],false],[0,\\\": \\\"],[1,[22,\\\"accuracy\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/gpslocation/template.hbs\"}});","import EmberObject from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { A } from '@ember/array';\nimport GeneralReportController from '../../controllers/general-report';\n\nconst GroupsReportController = GeneralReportController.extend({\n    limit: 25,\n    form: 'group',\n\n    init() {\n        this._super(...arguments);\n        this.showColumns = ['name', 'type'];\n        this.queryParams = ['name', 'type', 'q'];\n    },\n\n    content: alias('model'),\n\n    filters: A([\n        EmberObject.create({ field: 'type' }),\n        EmberObject.create({ type: 'searchbox', bindto: 'q' }),\n    ]),\n\n    settings: EmberObject.create({\n        rowSettings: EmberObject.create({\n            editRoute: {\n                modal: true,\n            },\n        }),\n        sortByColumn: 'name',\n    }),\n});\n\nexport default GroupsReportController;\n","import GeneralReportRoute from '../../routes/general-report';\n\nconst GroupsReportRoute = GeneralReportRoute.extend({\n    queryParams: {\n        name: {\n            refreshModel: true,\n        },\n        type: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n\n    form: 'group',\n    model(params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('group', params);\n    },\n});\n\nexport default GroupsReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"77uHEREQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/groups/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default class IntegrationsReportRoute extends Route {}\n","export default Ember.HTMLBars.template({\"id\":\"7Mr+FDLa\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"Action\\\",\\\"ExportMore\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showFilters\\\"],[\\\"error_fondion\\\",\\\"q\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@formatCells\\\",\\\"@hideSumRow\\\",\\\"@selectable\\\"],[true,true,false]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ExportPdf\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Pdf\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"PdfFull\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Excel\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Csv\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Cell\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/integrations/fondionerrors/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default class IntegrationsIndexRoute extends Route {}\n","export default Ember.HTMLBars.template({\"id\":\"GDcuHjY/\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[5,\\\"ccbutton\\\",[],[[],[]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/integrations/index/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default class IntegrationsListRoute extends Route {}\n","export default Ember.HTMLBars.template({\"id\":\"xhbdYV/1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\"],[\\\"ccbutton\\\"]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/integrations/list/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default class IntegrationsReportRoute extends Route {}\n","export default Ember.HTMLBars.template({\"id\":\"iPjH7T6Q\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"integrations-report\\\",[],[[],[]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/integrations/report/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default class IntegrationsRoute extends Route {}\n","export default Ember.HTMLBars.template({\"id\":\"PpgfQUga\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/integrations/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/invite-users/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar InviteUsersController;\n\nimport Ember from 'ember';\n\nimport pdfMixin from '../../mixins/pdf-export';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nInviteUsersController = Ember.Controller.extend(AuthenticatedRouteMixin, pdfMixin, {\n    Collector: Em.inject.service('collector-service'),\n    store: Em.inject.service(),\n    session: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    notifications: Ember.inject.service(),\n    intl: Em.inject.service(),\n    queryParams: ['projectid'],\n    emailSending: false,\n    smsSending: false,\n    projectid: null,\n    codeObs: Ember.observer('magicKey', function () {\n        return this.set('message_sent', false);\n    }),\n    field: Em.computed(function () {\n        var c, f, form, forms, i, len;\n        c = this.get('Collector');\n        forms = [\n            'presence',\n            'worktime',\n            'orientations',\n            'diaryreport',\n            'tr',\n            'mvr',\n            'worktask',\n            'skyddsrond',\n            'byggdagbok',\n        ];\n        form = false;\n        for (i = 0, len = forms.length; i < len; i++) {\n            f = forms[i];\n            if (c.formExists(f)) {\n                form = f;\n                break;\n            }\n        }\n        return c.field(form, 'project');\n    }),\n    projectObs: Em.observer('projectid', 'session.currentUser.username', function () {\n        if (this.get('session.currentUser.username')) {\n            if (!this.get('projectid')) {\n                return;\n            }\n            this.set('field.value', this.get('projectid'));\n            return this.store\n                .query('project', {\n                    id: this.get('projectid'),\n                })\n                .then((data) => {\n                    this.set('project', data.get('firstObject'));\n                    return this.createInvitePDF();\n                });\n        }\n    }),\n    sms_placeholder: Ember.computed(function () {\n        var intl;\n        intl = this.get('intl');\n        return intl.t('invite_users.sms_placeholder');\n    }),\n    sms_number: Ember.computed(function () {\n        var self;\n        self = this;\n        return this.store\n            .findRecord(\n                'user',\n                this.get('session.currentUser.id', {\n                    reload: true,\n                }),\n            )\n            .then(function (data) {\n                return self.set('sms_number', data.get('phone'));\n            });\n    }),\n    email_address: Ember.computed(function () {\n        return this.get('session.currentUser.email');\n    }),\n    smsnumObs: Ember.observer('sms_number', function () {\n        if (\n            !/\\+(9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[^0]\\d{1,14}$/i.test(\n                this.get('sms_number'),\n            )\n        ) {\n            this.set('numbererror', this.get('intl').t('field.error.phone_number'));\n            return this.set('sms_button_disabled', true);\n        } else {\n            this.set('numbererror', null);\n            return this.set('sms_button_disabled', false);\n        }\n    }),\n    emailObs: Ember.observer('email_address', function () {\n        if (!this.get('email_address')) {\n            return this.set('email_button_disabled', true);\n        } else {\n            return this.set('email_button_disabled', false);\n        }\n    }),\n    createInvitePDF: function () {\n        /*\n    CREATE USER SIGNING PDF HELP - this is so horrible!!!!!! .. but does the thing\n    */\n        var c,\n            creator,\n            currenturl,\n            getLongUrl,\n            getTinyUrl,\n            intl,\n            project,\n            promise,\n            promise_arr,\n            store,\n            writtenForm;\n        project = this.get('project');\n        store = this.get('store');\n        c = this.get('Collector');\n        if (!project) {\n            return;\n        }\n        intl = this.get('intl');\n        currenturl = window.location.origin + '/';\n        creator = this.get('session.currentUser.username');\n        if (!creator) {\n            alert('Error occured. Please, log in again.');\n            return;\n        }\n        getLongUrl = (projectid, creator) => {\n            // if you edit this, edit also projects/saved/controller\n            return new Em.RSVP.Promise((resolve, reject) => {\n                var type, url, userid;\n                url = '#/register/user?project=' + projectid + '&creator=' + creator;\n                type = '';\n                if (c.productExists('products.rakentajanpaketti')) {\n                    type = 'valtti';\n                } else if (!c.productExists('products.personalliggareandid06')) {\n                    type = 'normal';\n                }\n                url += '&type=' + type;\n                userid = this.get('session.currentUser.id');\n                if (c.formExists('employer')) {\n                    return store\n                        .query('user', {\n                            id: userid,\n                            sideload: ['employer.name', 'employer.emp_id', 'employer.country'],\n                        })\n                        .then(() => {\n                            var employer;\n                            employer = this.get('session.currentUser.employer');\n                            if (employer) {\n                                if (\n                                    !employer.get('country') &&\n                                    c.productExists('products.personliggareandid06')\n                                ) {\n                                    reject({\n                                        missing: 'employer_country',\n                                    });\n                                }\n                                url += '&employer_name=' + encodeURIComponent(employer.get('name'));\n                                url += '&employer_id=' + encodeURIComponent(employer.get('emp_id'));\n                                if (employer.get('country')) {\n                                    url +=\n                                        '&employer_country=' +\n                                        encodeURIComponent(employer.get('country'));\n                                }\n                                return resolve({\n                                    longurl: url,\n                                    employer: employer.get('name'),\n                                });\n                            } else {\n                                return store\n                                    .query('employer', {\n                                        main: 'on',\n                                    })\n                                    .then((employers) => {\n                                        employer = employers.get('firstObject');\n                                        if (employer == null) {\n                                            return alert(\n                                                'Main employer is not set. Cannot create help.',\n                                            );\n                                        } else {\n                                            url +=\n                                                '&employer_name=' +\n                                                encodeURIComponent(employer.get('name'));\n                                            url +=\n                                                '&employer_id=' +\n                                                encodeURIComponent(employer.get('emp_id'));\n                                            if (employer.get('country')) {\n                                                url +=\n                                                    '&employer_country=' +\n                                                    encodeURIComponent(employer.get('country'));\n                                            }\n                                            return resolve({\n                                                longurl: url,\n                                                employer: employer.get('name'),\n                                            });\n                                        }\n                                    });\n                            }\n                        });\n                } else {\n                    return resolve({\n                        longurl: url,\n                    });\n                }\n            });\n        };\n        getTinyUrl = (projectid, projectname) => {\n            return new Em.RSVP.Promise((resolve, reject) => {\n                //resolve \"http://goo.gl/Aer43 \" + projectid\n                return getLongUrl(projectid, creator).then(\n                    (ret) => {\n                        var call;\n                        console.log(ret);\n                        call = this.get('Collector').ttapi({\n                            url: 'code/generate',\n                            data: {\n                                longUrl: currenturl + ret.longurl,\n                            },\n                            method: 'post',\n                        });\n                        return call.then(function (back) {\n                            var retarr;\n                            retarr = {\n                                project: projectname,\n                                url: back.id,\n                            };\n                            if (c.formExists('employer')) {\n                                retarr['employer'] = ret.employer;\n                            }\n                            console.log(retarr);\n                            return resolve(retarr);\n                        });\n                    },\n                    (error) => {\n                        return reject(error);\n                    },\n                );\n            });\n        };\n        writtenForm = function (url) {\n            var arr, ascii, character, characters, i, len, numbers, ret_arr, str;\n            arr = url.split('/');\n            str = arr[arr.length - 1];\n            characters = str.split('');\n            numbers = intl.t('general.numbers').split(',');\n            ret_arr = [];\n            for (i = 0, len = characters.length; i < len; i++) {\n                character = characters[i];\n                ascii = character.charCodeAt(0);\n                ret_arr.push(\n                    ascii >= 48 && ascii <= 57\n                        ? numbers[ascii - 48]\n                        : ascii >= 65 && ascii <= 90\n                          ? intl.t('general.big_char') + ' ' + character\n                          : ascii >= 97 && ascii <= 122\n                            ? intl.t('general.small_char') + ' ' + String.fromCharCode(ascii - 32)\n                            : void 0,\n                );\n            }\n            return ret_arr.join(', ');\n        };\n        promise_arr = [];\n        promise = getTinyUrl(project.get('id'), project.get('name'));\n        promise_arr.push(promise);\n        return promise.then(\n            (elem) => {\n                var codeBlock, pdfElements, start;\n                if (elem.url.indexOf('=') < 0) {\n                    start = elem.url.lastIndexOf('/') + 1; // when using http://m0v.eu/<code> url\n                } else {\n                    start = elem.url.indexOf('=') + 1; // when using kehityspurkki or p.move (http://p.movenium.com/next/ttapi/public/code?code=<code>)\n                }\n                codeBlock = elem.url.substring(start);\n                pdfElements = [];\n                pdfElements.push({\n                    text: elem.project + ' - ' + elem.employer,\n                    style: 'bigText',\n                    alignment: 'center',\n                });\n                pdfElements.push(' ');\n                pdfElements.push({\n                    text: intl.t('general.usersigninghelp_before').toString(),\n                    alignment: 'center',\n                });\n                pdfElements.push({\n                    text: elem.url,\n                    style: 'bigText',\n                    margin: [10, 10, 10, 10],\n                    alignment: 'center',\n                });\n                pdfElements.push({\n                    text: '(' + writtenForm(elem.url) + ')',\n                    alignment: 'center',\n                });\n                pdfElements.push(' ');\n                pdfElements.push({\n                    text: intl.t('general.usersigninghelp_after').toString(),\n                    alignment: 'center',\n                });\n                pdfElements.push({\n                    text: codeBlock,\n                    style: 'bigText',\n                    margin: [10, 10, 10, 10],\n                    alignment: 'center',\n                });\n                pdfElements.push(' ');\n                pdfElements.push({\n                    text: intl.t('general.usersigninghelp_qr').toString(),\n                    alignment: 'center',\n                });\n                pdfElements.push(' ');\n                pdfElements.push({\n                    qr: elem.url,\n                    alignment: 'center',\n                });\n                this.set('pdfObject', pdfElements);\n                return this.set('magicKey', elem.url.slice(-6));\n            },\n            (error) => {\n                console.error(error);\n                if (error.missing) {\n                    return this.get('dialogs').alert(\n                        this.get('intl').t('user_invite.pdf_create.missing.' + error.missing),\n                    );\n                } else {\n                    return this.get('dialogs').alert(this.get('intl').t('general.error'));\n                }\n            },\n        );\n    },\n    //########################################################\n    actions: {\n        projectChanged: function (value) {\n            this.set('project', value);\n            return this.createInvitePDF();\n        },\n        getPDF: function () {\n            if (this.get('pdfObject')) {\n                return this.createPdfFromElements(this.get('pdfObject'));\n            }\n        },\n        sendSms: function () {\n            var self, send;\n            self = this;\n            send = this.Collector.ttapi({\n                url: 'sendSms',\n                data: {\n                    phone: self.get('sms_number'),\n                    messageid: 'magic_code_sms',\n                    values: {\n                        code: self.get('magicKey'),\n                    },\n                    language: moment.locale(),\n                },\n                method: 'post',\n            });\n            return send.then(() => {\n                this.get('notifications').success(this.get('intl').t('invite_users.sms_sent'), {\n                    autoClear: true,\n                });\n                self.set('sms_message_sent', true);\n                return this.set('smsSending', false);\n            });\n        },\n        sendEmail: function () {\n            var self, send;\n            this.set('emailSending', true);\n            self = this;\n            send = this.Collector.ttapi({\n                url: 'sendEmail',\n                data: {\n                    email: self.get('email_address'),\n                    messageid: 'magic_code_email',\n                    titleid: 'magic_code_email_title',\n                    values: {\n                        sender:\n                            this.get('session.currentUser.firstname') +\n                            ' ' +\n                            this.get('session.currentUser.lastname'),\n                        service: this.get('session.currentUser.employer.name'),\n                        project: this.get('project.name'),\n                        code: self.get('magicKey'),\n                    },\n                    language: moment.locale(),\n                },\n                method: 'post',\n            });\n            return send.then(() => {\n                this.get('notifications').success(this.get('intl').t('general.email_sent'), {\n                    autoClear: true,\n                });\n                self.set('email_message_sent', true);\n                return this.set('emailSending', false);\n            });\n        },\n        setInviteType: function (type) {\n            if (type === 'sms') {\n                return this.set('inviteType', 'sms');\n            } else if (type === 'email') {\n                return this.set('inviteType', 'email');\n            }\n        },\n    },\n});\n\nexport default InviteUsersController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/invite-users/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar InviteUsersRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport pdfMixin from '../../mixins/pdf-export';\n\nInviteUsersRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    //activate: ->\n    //    @set 'controller.field.value', null\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting) {\n            this.set('controller.projectid', null);\n            this.set('controller.magicKey', null);\n            return this.set('controller.field.value', null);\n        }\n    },\n});\n\nexport default InviteUsersRoute;\n","export default Ember.HTMLBars.template({\"id\":\"2H6aJniy\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"mobileView\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"header.invite-users.not-available-on-mobile\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.invite-users\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"users.index\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-md-4 col-sm-offset-3 col-md-offset-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"invite_users.title\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"invite_users.description\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"field\\\"]]],[[\\\"change\\\"],[\\\"projectChanged\\\"]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"magicKey\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"invite_users.magic_key\\\"],null],false],[0,\\\": \\\"],[7,\\\"code\\\",true],[8],[1,[22,\\\"magicKey\\\"],false],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"getPDF\\\"]],[8],[1,[28,\\\"t\\\",[\\\"invite_users.create_pdf\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"invite_users.send_code_by\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-group\\\"],[10,\\\"id\\\",\\\"accordion\\\"],[10,\\\"role\\\",\\\"tablist\\\"],[10,\\\"aria-multiselectable\\\",\\\"true\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[10,\\\"role\\\",\\\"tab\\\"],[10,\\\"id\\\",\\\"headingOne\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"a\\\",true],[10,\\\"role\\\",\\\"button\\\"],[10,\\\"data-toggle\\\",\\\"collapse\\\"],[10,\\\"data-parent\\\",\\\"#accordion\\\"],[10,\\\"href\\\",\\\"#collapseOne\\\"],[10,\\\"aria-expanded\\\",\\\"true\\\"],[10,\\\"aria-controls\\\",\\\"collapseOne\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"t\\\",[\\\"invite_users.send_code_by_sms\\\"],null],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"id\\\",\\\"collapseOne\\\"],[10,\\\"class\\\",\\\"panel-collapse collapse in\\\"],[10,\\\"role\\\",\\\"tabpanel\\\"],[10,\\\"aria-labelledby\\\",\\\"headingOne\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"invite_users.send_sms_help\\\"],null],false],[0,\\\"\\\\n                                \\\"],[7,\\\"br\\\",true],[8],[9],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control\\\",\\\"phone\\\",[24,[\\\"sms_placeholder\\\"]],[24,[\\\"sms_number\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"numbererror\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-exclamation-sign\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[22,\\\"numbererror\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\",\\\"savingText\\\"],[[24,[\\\"smsSending\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"sendSms\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"sms_button_disabled\\\"]],[28,\\\"t\\\",[\\\"invite_users.send_sms\\\"],null],[28,\\\"t\\\",[\\\"general.sending\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[10,\\\"role\\\",\\\"tab\\\"],[10,\\\"id\\\",\\\"headingTwo\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"collapsed\\\"],[10,\\\"role\\\",\\\"button\\\"],[10,\\\"data-toggle\\\",\\\"collapse\\\"],[10,\\\"data-parent\\\",\\\"#accordion\\\"],[10,\\\"href\\\",\\\"#collapseTwo\\\"],[10,\\\"aria-expanded\\\",\\\"false\\\"],[10,\\\"aria-controls\\\",\\\"collapseTwo\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"t\\\",[\\\"invite_users.send_code_by_email\\\"],null],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"id\\\",\\\"collapseTwo\\\"],[10,\\\"class\\\",\\\"panel-collapse collapse in\\\"],[10,\\\"role\\\",\\\"tabpanel\\\"],[10,\\\"aria-labelledby\\\",\\\"headingTwo\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"t\\\",[\\\"invite_users.send_email_help\\\"],null],false],[0,\\\"\\\\n                                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control\\\",\\\"email\\\",[24,[\\\"email_placeholder\\\"]],[24,[\\\"email_address\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailerror\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-exclamation-sign\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[22,\\\"emailerror\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\",\\\"savingText\\\"],[[24,[\\\"emailSending\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"sendEmail\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"email_button_disabled\\\"]],[28,\\\"t\\\",[\\\"invite_users.send_email\\\"],null],[28,\\\"t\\\",[\\\"general.sending\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/invite-users/template.hbs\"}});","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nexport default Route.extend(AuthenticatedRouteMixin, {\n    session: service(),\n    initapp: service(),\n    analytics: service(),\n    PushNotification: service(),\n\n    afterModel() {\n        return new Promise(async (resolve) => {\n            this.analytics.trackEvent({ category: 'Logout', action: 'Logout' });\n\n            // send request to ttapi for push notification removal\n            // await it because this is a callback, and if the session is invalidated before this is complete,\n            // ttapi will respond with an error because it does not get the access token in the request\n            await this.PushNotification.unregister();\n            delete localStorage['first-time-loader-greeting'];\n            this.initapp.clearInit();\n            this.session.invalidate();\n            resolve();\n        });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"fXIW7Xld\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"signin default-background\\\"],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/logout/template.hbs\"}});","import EmberObject, { computed, set } from '@ember/object';\nimport { A } from '@ember/array';\nimport { alias } from '@ember/object/computed';\nimport GeneralReportController from '../../../controllers/general-report';\nimport { typeOf } from '@ember/utils';\n\nconst MachinesMachineController = GeneralReportController.extend({\n    form: 'tooltype',\n    limit: 25,\n\n    init() {\n        this._super(...arguments);\n        this.showColumns = ['type', 'name'];\n        this.queryParams = ['q'];\n    },\n\n    content: alias('model'),\n    settings: EmberObject.create({\n        rowSettings: EmberObject.create({\n            editRoute: {\n                modal: true,\n            },\n        }),\n        massedit: true,\n        sortByColumn: 'type',\n    }),\n\n    filters: computed(function () {\n        return A([EmberObject.create({ type: 'searchbox', bindto: 'q' })]);\n    }),\n\n    actions: {\n        filterChangeAction(value, field) {\n            if (typeOf(value) === 'object' || typeOf(value) === 'instance') {\n                return set(this, field, value.id);\n            } else {\n                return set(this, field, value);\n            }\n        },\n    },\n});\n\nexport default MachinesMachineController;\n","import { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\nimport GeneralReportRoute from '../../../routes/general-report';\n\nconst MachinesMachineRoute = GeneralReportRoute.extend({\n    store: service(),\n    flags: service(),\n\n    queryParams: {\n        q: {\n            refreshModel: true,\n        },\n    },\n\n    form: 'tooltype',\n\n    model(params) {\n        params = this._super(params);\n\n        if (params.page) {\n            delete params.page;\n        }\n        return set(this.controllerFor('machines.machine'), 'qParams', params);\n    },\n});\n\nexport default MachinesMachineRoute;\n","export default Ember.HTMLBars.template({\"id\":\"G1M7Rf0N\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"tooltype\\\",[22,\\\"qParams\\\"],[28,\\\"hash\\\",null,[[\\\"order\\\"],[\\\"type\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/machines/machine?modal=tooltype%2C\\\"]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/machine/template.hbs\"}});","import EmberObject, { computed, set } from '@ember/object';\nimport Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { A } from '@ember/array';\n\nconst MachinesMapController = Controller.extend({\n    queryParams: ['tooltype', 'status'],\n\n    tooltype: null,\n    status: null,\n    content: alias('model'),\n    filters: computed(function () {\n        return A([\n            EmberObject.create({\n                field: 'tooltype',\n                type: 'database',\n                form: 'transaction',\n                name: 'tooltype',\n            }),\n            EmberObject.create({\n                field: 'status',\n                type: 'database',\n                form: 'transaction',\n                name: 'status',\n            }),\n        ]);\n    }),\n\n    actions: {\n        filterChange(value, field) {\n            if (field === 'tooltype') {\n                return set('tooltype', value ? value.id : null);\n            } else {\n                return set(this, field, value);\n            }\n        },\n    },\n});\n\nexport default MachinesMapController;\n","import Route from '@ember/routing/route';\n\nconst MachinesMapRoute = Route.extend({\n    queryParams: {\n        tooltype: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n    },\n\n    model(params) {\n        params.endtime = '(empty)';\n        params.groupBy = 'project';\n        params.sideload = ['project.name', 'project.location_map'];\n\n        return this.store.query('transaction', params);\n    },\n});\n\nexport default MachinesMapRoute;\n","export default Ember.HTMLBars.template({\"id\":\"StWOHfIX\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/filters-comp\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"change\\\"],[\\\"tooltype,status\\\",\\\"transaction\\\",\\\"filterChange\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"machine-map\\\",null,[[\\\"machines\\\"],[[24,[\\\"model\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/map/template.hbs\"}});","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nimport GeneralReportController from '../../../controllers/general-report';\nimport moment from 'moment';\nimport EmberObject, { get, set, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { isPresent } from '@ember/utils';\nimport { alias } from '@ember/object/computed';\nimport { A } from '@ember/array';\n\nconst MachinesPricesController = GeneralReportController.extend({\n    intl: service(),\n    collector: service('collector-service'),\n    excel: service(),\n    queryParams: ['project', 'tooltype', 'starttime', 'status', 'more'],\n    form: 'transaction',\n    selectedProject: null,\n    tooltype: null,\n    project: null,\n    content: alias('model'),\n    filters: computed(function () {\n        return A([\n            EmberObject.create(\n                { field: 'starttime', type: 'date' },\n                {\n                    start: moment().subtract(1, 'month').format('YYYY-MM-DD'),\n                    end: moment().format('YYYY-MM-DD'),\n                },\n            ),\n            EmberObject.create({ field: 'project' }),\n            EmberObject.create({ field: 'tooltype' }),\n            EmberObject.create({ field: 'status' }),\n        ]);\n    }),\n    formattedData: computed('model', function () {\n        const c = get(this, 'collector');\n        const model = this.model;\n        for (let project in model) {\n            const data = model[project];\n            if (isPresent(data.rows)) {\n                data.rows.forEach((item) => {\n                    return (item.status = c.getDropdownValue(\n                        null,\n                        item.status,\n                        c.field('transaction', 'status'),\n                    ));\n                });\n            }\n        }\n        return model;\n    }),\n\n    rowColumns: computed(function () {\n        const columns = ['tooltype', 'timespan', 'status', 'price', 'days', 'amount', 'sum'];\n        get(this, 'ownFields').forEach((field) => {\n            return columns.push(field.name);\n        });\n        return columns;\n    }),\n\n    ownFields: computed(function () {\n        const formFields = [\n            'tooltype',\n            'timespan',\n            'status',\n            'price',\n            'days',\n            'amount',\n            'sum',\n            'starttime',\n            'endtime',\n            'project',\n        ];\n        const ownFields = [];\n        const c = get(this, 'Collector');\n        c.fieldArray(get(this, 'form')).filter((field) => {\n            if (!formFields.includes(field.name)) {\n                return ownFields.push(field);\n            }\n        });\n        return ownFields;\n    }),\n\n    translatedColumns: computed(function () {\n        const intl = get(this, 'intl');\n        const rowColumns = get(this, 'rowColumns');\n        const ownFields = get(this, 'ownFields');\n        const translatedColumns = [];\n        rowColumns.forEach((item) => {\n            let translation = intl.t('report.transactionprices.' + item);\n            if (ownFields) {\n                ownFields.forEach((field) => {\n                    if (field.name === item) {\n                        return (translation = field.translated_name);\n                    }\n                });\n            }\n            return translatedColumns.push(translation);\n        });\n        return translatedColumns;\n    }),\n\n    actions: {\n        filterChanged(num, form) {\n            if (form === 'project') {\n                set(this, 'selectedProject', num);\n            }\n            return this._super(num, form);\n        },\n        export_print() {\n            return print();\n        },\n        export_excel() {\n            const cols = this.translatedColumns.map((i) => i);\n            const rowColumns = this.rowColumns;\n            const excel = this.excel;\n            const intl = this.intl;\n            const exportData = [];\n            const object = this.model;\n            for (let project in object) {\n                const data = object[project];\n                exportData.push([project]);\n                exportData.push([]);\n                exportData.push(cols);\n                data.rows.forEach((item) => {\n                    const ret = [];\n                    rowColumns.forEach((col) => {\n                        return ret.push(item[col]);\n                    });\n                    return exportData.push(ret);\n                });\n                exportData.push([]);\n            }\n\n            return excel.export(exportData, {\n                sheetName: intl.t('machines.prices'),\n                fileName: intl.t('machines.prices') + '.xlsx',\n            });\n        },\n    },\n    starttime:\n        moment().subtract(1, 'month').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n});\n\nexport default MachinesPricesController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport initRoute from 'tt4/mixins/init-route';\nimport { isEmpty, isPresent } from '@ember/utils';\nimport { set } from '@ember/object';\n\nconst MachinesPricesRoute = Route.extend(initRoute, {\n    collector: service('collector-service'),\n    queryParams: {\n        project: {\n            refreshModel: true,\n        },\n        tooltype: {\n            refreshModel: true,\n        },\n        starttime: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        more: {\n            refreshModel: true,\n        },\n    },\n\n    more: null,\n    model(params) {\n        // only fetch if project is chosen\n        let split;\n        if (params.project == null || params.project === '') {\n            return;\n        }\n        for (let param in params) {\n            const v = params[param];\n            if (param.includes('-')) {\n                if (isPresent(v)) {\n                    split = param.split('-');\n                    if (isEmpty(params[split[0]])) {\n                        params[split[0]] = { [split[1]]: v };\n                    }\n                }\n                delete params[param];\n            }\n\n            if (v === 'null' || v === null || v === 'undefined') {\n                delete params[param];\n            }\n        }\n\n        if (params.more != null) {\n            params.more.split(',').forEach(function (param) {\n                const splitted = param.split(':');\n                if (splitted[0].includes('-')) {\n                    if (isPresent(splitted[1])) {\n                        split = splitted[0].split('-');\n                        if (isEmpty(params[split[0]])) {\n                            return (params[split[0]] = { [split[1]]: splitted[1] });\n                        }\n                    }\n                } else {\n                    return (params[splitted[0]] = splitted[1]);\n                }\n            });\n            set(this, 'more', params.more);\n        } else {\n            set(this, 'more', null);\n        }\n\n        delete params.more; // just to make sure this doesn't bleed into capi\n\n        delete params.page;\n        params.limit = 'all';\n        return this.collector.ttapi({ url: 'machines/prices', data: params });\n    },\n});\n\nexport default MachinesPricesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"/JB8eOS7\",\"block\":\"{\\\"symbols\\\":[\\\"project\\\",\\\"index\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row hidden-print\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2 col-xs-offset-10\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_print\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"general.print\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_excel\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"report.actions.export_excel\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"hidden-print\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"selectedProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.select.project\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[24,[\\\"formattedData\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h4\\\",true],[8],[1,[23,2,[]],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\"],[[24,[\\\"rowColumns\\\"]],[24,[\\\"translatedColumns\\\"]],[23,1,[\\\"rows\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-xs-offset-6 col-sm-4 col-md-2 col-sm-offset-8 col-md-offset-9\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[7,\\\"b\\\",true],[10,\\\"class\\\",\\\"text-uppercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.transactionprices.pricetotal\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"totals\\\",\\\"sum\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"report-print\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/prices/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst MachinesRoute = Route.extend(AuthenticatedRouteMixin);\n\nexport default MachinesRoute;\n","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\nimport { isPresent } from '@ember/utils';\nimport { Promise as EmberPromise } from 'rsvp';\nimport { later } from '@ember/runloop';\nimport Ember from 'ember';\n\nconst MachinesTransactionController = Controller.extend({\n    store: service(),\n    init() {\n        this._super(...arguments);\n        this.pojo = {};\n    },\n\n    content: alias('model'),\n    actions: {\n        typeSelected(value, field) {\n            if (value) {\n                return this.transitionToRoute('machines.transaction.' + field, value.id);\n            }\n        },\n\n        changeAddValue(value, field) {\n            return set(this, 'pojo.' + field, value);\n        },\n\n        async savePojo() {\n            set(this, 'saving', true);\n            const pojo = this.pojo;\n            const store = this.store;\n            const project = isPresent(pojo.project) ? pojo.project : null;\n            const tooltypeRecord = await store.findRecord('tooltype', get(pojo, 'tooltype.id'), {\n                reload: true,\n            });\n            const price = tooltypeRecord.price;\n            const data = await store.query('transaction', {\n                tooltype: get(pojo, 'tooltype.id'),\n                project: get(project, 'id') || '(empty)',\n                endtime: '(empty)',\n            });\n            const save_these = [];\n            if (data.length > 0) {\n                const old_row = data.firstObject;\n                set(old_row, 'endtime', moment.utc().format('YYYY-MM-DD HH:mm:ss.SSS'));\n                save_these.push(old_row.save());\n                const new_amount = parseInt(old_row.amount, 10) + parseInt(pojo.amount, 10);\n                save_these.push(\n                    store\n                        .createRecord('transaction', {\n                            tooltype: pojo.tooltype,\n                            price,\n                            starttime: moment.utc().format('YYYY-MM-DD HH:mm:ss.SSS'),\n                            amount: new_amount,\n                            project,\n                        })\n                        .save(),\n                );\n            } else {\n                save_these.push(\n                    store\n                        .createRecord('transaction', {\n                            tooltype: pojo.tooltype,\n                            price,\n                            starttime: moment.utc().format('YYYY-MM-DD HH:mm:ss.SSS'),\n                            amount: pojo.amount,\n                            project,\n                        })\n                        .save(),\n                );\n            }\n\n            await EmberPromise.all(save_these);\n            set(this, 'saved', true);\n            if (!Ember.testing) {\n                return later(\n                    this,\n                    () => {\n                        set(this, 'saved', false);\n                        set(pojo, 'amount', null);\n                        set(pojo, 'tooltype', null);\n                        set(pojo, 'project', null);\n                        set(this, 'saving', false);\n                        return this.transitionToRoute('machines.transactions');\n                    },\n                    5000,\n                );\n            }\n        },\n    },\n});\nexport default MachinesTransactionController;\n","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst MachinesTransactionRoute = Route.extend(AuthenticatedRouteMixin);\n\nexport default MachinesTransactionRoute;\n","export default Ember.HTMLBars.template({\"id\":\"EYMzmM81\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6 col-md-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"transaction.tooltype\\\"],[[\\\"change\\\"],[\\\"changeAddValue\\\"]]],false],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"transaction.project\\\"],[[\\\"change\\\"],[\\\"changeAddValue\\\"]]],false],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"transaction.amount\\\"],[[\\\"change\\\"],[\\\"changeAddValue\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saved\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"machines.transaction.saved\\\"],[[\\\"amount\\\",\\\"machine\\\"],[[24,[\\\"pojo\\\",\\\"amount\\\"]],[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"tooltype\\\",[24,[\\\"pojo\\\",\\\"tooltype\\\"]]]]]]]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"savePojo\\\"]],[8],[1,[28,\\\"t\\\",[\\\"machines.transaction.save_tools\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transaction/add/template.hbs\"}});","import { isPresent } from '@ember/utils';\nimport { computed, get } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport Controller from '@ember/controller';\n\nexport default Controller.extend({\n    collectorService: service(),\n    transaction: alias('model'),\n\n    subMenus: computed(function () {\n        const c = get(this, 'collectorService');\n        const subMenus = [\n            { link: 'machines.transaction.project', text: 'machines.transaction.select_project' },\n            // {link: 'machines.transaction.tooltype', text:'machines.transaction.select_tooltype'},\n            {\n                link: 'machines.transaction.add',\n                text: 'machines.transaction.add_tools',\n                needs: ['tooltype@add'],\n            },\n        ];\n\n        return subMenus.filter(function (item) {\n            if (isPresent(item.needs)) {\n                return c.testNeeds(item.needs);\n            }\n            return true;\n        });\n    }),\n});\n","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport EmberObject, { get, set } from '@ember/object';\nimport { Promise as EmberPromise } from 'rsvp';\nimport { later } from '@ember/runloop';\nimport Ember from 'ember';\n\nconst MachinesTransactionMoveController = Controller.extend({\n    store: service(),\n    content: alias('model'),\n    pojo: EmberObject.create({\n        amount: null,\n        project: null,\n    }),\n    actions: {\n        change(value, field) {\n            return set(this.pojo, field, value);\n        },\n\n        async moveMachines() {\n            const pojo = this.pojo;\n            const model = this.model;\n            const store = this.store;\n            if (get(pojo, 'project.id') !== get(model, 'project.id')) {\n                const amount = parseInt(model.amount, 10);\n                const pojo_amount = parseInt(pojo.amount, 10);\n                set(model, 'endtime', moment.utc().format('YYYY-MM-DD HH:mm:ss.SSS'));\n                let old_project = null;\n                const data = await store.query('transaction', {\n                    project: get(pojo, 'project.id'),\n                    tooltype: get(model, 'tooltype.id'),\n                    endtime: '(empty)',\n                });\n                if (amount - pojo_amount > 0) {\n                    old_project = store.createRecord('transaction', {\n                        amount: amount - pojo_amount,\n                        tooltype: model.tooltype,\n                        starttime: moment.utc().format('YYYY-MM-DD HH:mm:ss.SSS'),\n                        project: model.project,\n                        price: get(model, 'tooltype.price'),\n                    });\n                }\n                let new_amount = pojo_amount;\n                if (data.length > 0) {\n                    const found_project = data.firstObject;\n                    const old_amount = parseInt(found_project.amount, 10);\n                    set(found_project, 'endtime', moment.utc().format('YYYY-MM-DD HH:mm:ss.SSS'));\n                    found_project.save();\n                    new_amount += old_amount;\n                }\n\n                const new_project = store.createRecord('transaction', {\n                    amount: new_amount,\n                    tooltype: model.tooltype,\n                    starttime: moment.utc().format('YYYY-MM-DD HH:mm:ss.SSS'),\n                    project: pojo.project,\n                    price: get(model, 'tooltype.price'),\n                });\n\n                const save_these = [model.save, new_project.save()];\n                if (old_project) {\n                    save_these.push(old_project.save());\n                }\n\n                await EmberPromise.all(save_these);\n                set(this, 'saved', true);\n                if (!Ember.testing) {\n                    return later(\n                        this,\n                        () => {\n                            set(this, 'saved', false);\n                            set(pojo, 'amount', null);\n                            set(pojo, 'project', null);\n                            return this.transitionToRoute('machines.transactions');\n                        },\n                        5000,\n                    );\n                }\n            }\n        },\n    },\n});\n\nexport default MachinesTransactionMoveController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\n\nconst MachinesTransactionMoveRoute = Route.extend({\n    store: service(),\n    collector: service('collector-service'),\n    model(params) {\n        params.endtime = '(empty)';\n        params.sideload = this.collector.getSideloads('transaction');\n        params.sideload.push('tooltype.price');\n        return this.store.query('transaction', params).then((objects) => objects.objectAt(0));\n    },\n});\n\nexport default MachinesTransactionMoveRoute;\n","export default Ember.HTMLBars.template({\"id\":\"HCO7qS9D\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6 col-md-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"machines.transaction.move.title\\\"],[[\\\"amount\\\",\\\"project\\\"],[[24,[\\\"model\\\",\\\"amount\\\"]],[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"project\\\",[24,[\\\"model\\\",\\\"project\\\"]]]]]]]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"transaction.project\\\"],[[\\\"change\\\"],[\\\"change\\\"]]],false],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"transaction.amount\\\"],[[\\\"change\\\"],[\\\"change\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moveMachines\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"machines.transaction.move.action\\\"],[[\\\"amount\\\",\\\"project\\\"],[[24,[\\\"pojo\\\",\\\"amount\\\"]],[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"project\\\",[24,[\\\"pojo\\\",\\\"project\\\"]]]]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saved\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"machines.transaction.move.saved\\\"],[[\\\"amount\\\",\\\"tooltype\\\",\\\"oldproject\\\",\\\"newproject\\\"],[[24,[\\\"pojo\\\",\\\"amount\\\"]],[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"tooltype\\\",[24,[\\\"model\\\",\\\"tooltype\\\"]]]]],[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"project\\\",[24,[\\\"model\\\",\\\"project\\\"]]]]],[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"project\\\",[24,[\\\"pojo\\\",\\\"project\\\"]]]]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transaction/move/template.hbs\"}});","import { isPresent } from '@ember/utils';\nimport Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { get } from '@ember/object';\n\nexport default Controller.extend({\n    transaction: alias('model'),\n\n    actions: {\n        typeSelected(value, field) {\n            if (isPresent(value) && get(value, 'id')) {\n                this.transitionToRoute(`machines.transaction.${field}.selected`, get(value, 'id'));\n            } else {\n                this.transitionToRoute(`machines.transaction.${field}`);\n            }\n        },\n    },\n});\n","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { computed, get, set } from '@ember/object';\nimport { later } from '@ember/runloop';\nimport { isPresent, typeOf } from '@ember/utils';\nimport Ember from 'ember';\n\nconst MachinesTransactionProjectController = Controller.extend({\n    Collector: service('collector-service'),\n    //    queryParams: ['statusSearch','more']\n    status: null,\n    init() {\n        this._super(...arguments);\n        const c = this.Collector;\n        const filters = c.fieldArray('transaction').filter((item) => {\n            set(item, 'value', get(this, 'item.name'));\n            return (\n                ['database', 'dropdown_values'].includes(item.type) &&\n                !['project', 'status', 'tooltype'].includes(item.name)\n            );\n        });\n        set(this, 'filters', filters);\n        const qp = filters.mapBy('name');\n        qp.push('statusSearch');\n        set(this, 'queryParams', qp);\n        return set(this, 'to', {});\n    },\n\n    content: alias('model'),\n    tools: computed('project.id', 'model.project.id', function () {\n        return this.model.transactions.sortBy('tooltype.type');\n    }),\n\n    showSaveButton: computed('project.id', 'model.project.id', function () {\n        return get(this, 'project.id');\n    }),\n\n    fields: computed('model.project', function () {\n        const fields = [];\n        this.Collector.fieldArray('transaction').forEach((item) => {\n            if (\n                ['database', 'dropdown_values'].includes(item.type) &&\n                !['project', 'status', 'tooltype'].includes(item.name)\n            ) {\n                item.filterOptions = { project: get(this.model, 'project.id') };\n                return fields.push(item);\n            }\n        });\n        return fields;\n    }),\n\n    to_fields: computed('fields', 'project', function () {\n        return this.fields.map((item) => {\n            const new_item = Object.assign({}, item);\n            new_item.filterOptions = { project: this.project?.id };\n            return new_item;\n        });\n    }),\n\n    actions: {\n        changeStatus(value) {\n            return set(this, 'statusSearch', value);\n        },\n\n        valueChanged(value, tooltype, status, transactionid) {\n            //Ember.set(this, 'amounts.'+Ember.get(tooltype,'id'), parseInt(value))\n            const found = this.model.amounts.find(\n                (item) =>\n                    item.tooltype === get(tooltype, 'id') &&\n                    item.status === status &&\n                    item.id === transactionid,\n            );\n            if (found) {\n                return (found.amount = parseInt(value));\n            } else {\n                return this.model.amounts.push({\n                    id: transactionid,\n                    tooltype: get(tooltype, 'id'),\n                    status,\n                    amount: parseInt(value),\n                });\n            }\n        },\n\n        async moveMachines() {\n            set(this, 'saving', true);\n            const params = {\n                machines: [],\n                from: {\n                    project: get(this.model, 'project.id'),\n                    status: this.statusSearch,\n                },\n                to: {\n                    project: get(this, 'project.id'),\n                    status: this.status,\n                },\n            };\n\n            const fields = this.fields;\n            if (fields.length > 0) {\n                fields.forEach((field) => {\n                    params['from'][field.name] = get(this, field.name);\n                    return (params['to'][field.name] = get(this, 'to.' + field.name));\n                });\n            }\n\n            this.model.amounts.forEach((item) => {\n                if (item.amount < 1) {\n                    return;\n                }\n                const ret = {\n                    id: item.id,\n                    tooltype: item.tooltype,\n                    amount: item.amount,\n                };\n                fields.forEach((field) => {\n                    if (isPresent(get(item, field.name))) {\n                        return set(ret, field.name, get(item, field.name));\n                    }\n                });\n                return params.machines.push(ret);\n            });\n\n            await this.Collector.ttapi({\n                url: 'machines/move',\n                method: 'post',\n                data: JSON.stringify(params),\n                contentType: 'application/json; charset=utf-8',\n            });\n            set(this, 'saved', true);\n            if (!Ember.testing) {\n                return later(\n                    this,\n                    () => {\n                        set(this, 'saved', false);\n                        set(this, 'saving', false);\n                        return this.transitionToRoute('machines.transactions');\n                    },\n                    5000,\n                );\n            }\n        },\n\n        selectProject(value) {\n            return set(this, 'project', value);\n        },\n\n        selectStatus(value) {\n            return set(this, 'status', value);\n        },\n\n        changeValue(way, value, field) {\n            if (way === 'to') {\n                field = 'to.' + field;\n            }\n            if (typeOf(value) === 'instance') {\n                value = value.id;\n            }\n            return set(this, field, value);\n        },\n    },\n});\n\nexport default MachinesTransactionProjectController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { hash } from 'rsvp';\nimport { set } from '@ember/object';\n\nconst MachinesTransactionProjectRoute = Route.extend({\n    store: service(),\n    Collector: service('collector-service'),\n    init() {\n        this._super(...arguments);\n        const qp = {\n            statusSearch: {\n                refreshModel: true,\n            },\n        };\n        const c = this.Collector;\n        c.fieldArray('transaction').forEach((item) => {\n            if (\n                ['database', 'dropdown_values'].includes(item.type) &&\n                !['project', 'status', 'tooltype'].includes(item.name)\n            ) {\n                return (qp[item.name] = { refreshModel: true });\n            }\n        });\n\n        return set(this, 'queryParams', qp);\n    },\n\n    model(params) {\n        let groups, transactions;\n        if (params.statusSearch) {\n            params.status = params.statusSearch;\n        }\n        delete params.statusSearch;\n        //        params.groupBy =\n        params.endtime = '(empty)';\n        params.sideload = true;\n\n        if (this.Collector.testNeeds(['toolgroup'])) {\n            transactions = null;\n            groups = this.store.findAll('toolgroup');\n        } else {\n            transactions = this.store.query('transaction', params);\n            groups = null;\n        }\n\n        return hash({\n            project: this.store.findRecord('project', params.project),\n            amounts: [],\n            transactions,\n            params,\n            groups,\n        });\n    },\n});\n\nexport default MachinesTransactionProjectRoute;\n","export default Ember.HTMLBars.template({\"id\":\"8OE4YElQ\",\"block\":\"{\\\"symbols\\\":[\\\"amount\\\",\\\"index\\\",\\\"field\\\",\\\"transaction\\\",\\\"group\\\",\\\"field\\\"],\\\"statements\\\":[[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"machines.transaction.status_desc\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"transaction.status\\\"],[[\\\"change\\\",\\\"class\\\"],[\\\"changeStatus\\\",\\\"add-fields form-control\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"label\\\",true],[8],[1,[23,6,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,6,[]]],[[\\\"change\\\",\\\"class\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\",[24,[\\\"from\\\"]]],null],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"groups\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"groups\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"machines/transaction/project/selected/tool-group\\\",null,[[\\\"group\\\",\\\"otherParams\\\",\\\"amounts\\\",\\\"change\\\"],[[23,5,[]],[24,[\\\"model\\\",\\\"params\\\"]],[24,[\\\"model\\\",\\\"amounts\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"valueChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[5]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"machines.transaction.project.empty\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"tools\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"machines/transaction/project/selected/tool-item\\\",null,[[\\\"tooltype\\\",\\\"status\\\",\\\"amount\\\",\\\"id\\\",\\\"change\\\"],[[23,4,[\\\"tooltype\\\"]],[23,4,[\\\"status\\\"]],[23,4,[\\\"amount\\\"]],[23,4,[\\\"id\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"valueChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[4]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"machines.transaction.project.empty\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"project\\\",\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"machines.transaction.project.move_project\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"transaction.project\\\"],[[\\\"change\\\",\\\"class\\\"],[\\\"selectProject\\\",\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"machines.transaction.project.change_status\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"transaction.status\\\"],[[\\\"change\\\",\\\"class\\\"],[\\\"selectStatus\\\",\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"to_fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"label\\\",true],[8],[1,[23,3,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,3,[]]],[[\\\"change\\\",\\\"class\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\",\\\"to\\\"],null],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[4,\\\"if\\\",[[24,[\\\"saved\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"machines.transaction.project.saved.moved\\\"],null],false],[0,\\\" \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[24,[\\\"amounts\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,1,[]],0],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,1,[]],false],[0,\\\"  \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"tooltype\\\",[23,2,[]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2]},null],[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"machines.transaction.project.saved.info\\\"],[[\\\"oldproject\\\",\\\"newproject\\\"],[[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"project\\\",[24,[\\\"model\\\",\\\"project\\\"]]]]],[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"project\\\",[24,[\\\"project\\\"]]]]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showSaveButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moveMachines\\\"]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"machines.transaction.project.action\\\"],[[\\\"project\\\"],[[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"transaction\\\",\\\"project\\\",[24,[\\\"project\\\"]]]]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transaction/project/selected/template.hbs\"}});","import Component from '@ember/component';\nimport { Promise as EmberPromise } from 'rsvp';\nimport PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\nimport ObjectProxy from '@ember/object/proxy';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n\n    transactions: computed('tooltypes.value', 'otherParams', function () {\n        return ObjectProxy.extend(PromiseProxyMixin).create({\n            promise: new EmberPromise((resolve) => {\n                if (!get(this, 'tooltypes.value') || get(this, 'tooltypes.value.length') == 0) {\n                    resolve({ value: [] });\n                    return;\n                }\n\n                const params = get(this, 'otherParams');\n                params.tooltype = get(this, 'tooltypes.value').mapBy('id').join(',');\n\n                get(this, 'store')\n                    .query('transaction', params)\n                    .then((records) => this._resolveTransactions(records, resolve));\n            }),\n        });\n    }),\n\n    tooltypes: computed('group', function () {\n        return ObjectProxy.extend(PromiseProxyMixin).create({\n            promise: new EmberPromise((resolve) => {\n                get(this, 'store')\n                    .query('tooltype', { toolgroup: get(this, 'group.id') })\n                    .then((records) => this._resolveTooltypes(records, resolve));\n            }),\n        });\n    }),\n\n    actions: {\n        valueChanged(value, tooltype, status, transactionid) {\n            this.change(value, tooltype, status, transactionid);\n        },\n    },\n\n    _resolveTransactions(records, resolve) {\n        resolve({ value: records.sortBy('tooltype.type') });\n    },\n\n    _resolveTooltypes(records, resolve) {\n        resolve({ value: records });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"J3kbRy6/\",\"block\":\"{\\\"symbols\\\":[\\\"transaction\\\",\\\"&default\\\"],\\\"statements\\\":[[14,2],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"onoff\\\"]]],null],[28,\\\"not\\\",[[24,[\\\"onoff\\\"]]],null]],null]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"b\\\",true],[8],[1,[24,[\\\"group\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"icon-small pull-right text-report-muted \\\",[28,\\\"if\\\",[[24,[\\\"onoff\\\"]],\\\"move move-SortUp\\\",\\\"move move-SortDown\\\"],null]]]],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"onoff\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"transactions\\\",\\\"value\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"machines/transaction/project/selected/tool-item\\\",null,[[\\\"tooltype\\\",\\\"status\\\",\\\"amount\\\",\\\"id\\\",\\\"amounts\\\",\\\"change\\\"],[[23,1,[\\\"tooltype\\\"]],[23,1,[\\\"status\\\"]],[23,1,[\\\"amount\\\"]],[23,1,[\\\"id\\\"]],[24,[\\\"amounts\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"valueChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"machines.transaction.project.empty\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transaction/project/selected/tool-group/template.hbs\"}});","import Component from '@ember/component';\nimport { get, set, computed } from '@ember/object';\nexport default Component.extend({\n    value: 0,\n\n    defaultValue: 0,\n\n    freeAmount: computed('amount', 'value', function () {\n        return get(this, 'amount') - get(this, 'value');\n    }),\n\n    didReceiveAttrs() {\n        let amounts = get(this, 'amounts');\n        if (amounts && amounts.length > 0) {\n            amounts.forEach((amount) => {\n                if (get(this, 'id') === get(amount, 'id')) {\n                    set(this, 'value', get(amount, 'amount'));\n                }\n            });\n        }\n    },\n\n    actions: {\n        handleButtons(value) {\n            value = parseInt(value, 10);\n            const v = parseInt(get(this, 'value'), 10);\n            if (v === 0 && value === -1) return;\n            if (v === get(this, 'amount') && value === 1) return;\n            set(this, 'value', v + value);\n            this.change(v + value, get(this, 'tooltype'), get(this, 'status'), get(this, 'id'));\n        },\n        handleInput(value) {\n            if (value < 0) {\n                set(this, 'value', 0);\n                this.change(0, get(this, 'tooltype'), get(this, 'status'), get(this, 'id'));\n            } else if (value >= get(this, 'amount')) {\n                set(this, 'value', get(this, 'amount'));\n                this.change(\n                    get(this, 'amount'),\n                    get(this, 'tooltype'),\n                    get(this, 'status'),\n                    get(this, 'id'),\n                );\n            } else {\n                this.change(value, get(this, 'tooltype'), get(this, 'status'), get(this, 'id'));\n            }\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"L/9ED5tb\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-7 col-md-4 col-lg-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"tooltype\\\",\\\"transaction\\\",[24,[\\\"tooltype\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"status\\\"]]],null,{\\\"statements\\\":[[0,\\\"                (\\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"status\\\",\\\"transaction\\\",[24,[\\\"status\\\"]]]]],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-5 col-md-4 col-lg-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"input-group-addon add-fields minus-tool-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"handleButtons\\\",-1]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyph-lg glyphicon-minus-sign\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[8],[4,\\\"if\\\",[[24,[\\\"freeAmount\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"amount\\\",\\\"transaction\\\",[24,[\\\"freeAmount\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[22,\\\"defaultValue\\\"],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\" /\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"type\\\",\\\"min\\\",\\\"step\\\",\\\"class\\\",\\\"key-up\\\"],[[24,[\\\"value\\\"]],\\\"number\\\",1,1,\\\"form-control add-fields\\\",[28,\\\"action\\\",[[23,0,[]],\\\"handleInput\\\",[24,[\\\"value\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"input-group-addon add-fields plus-tool-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"handleButtons\\\",1]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyph-lg glyphicon-plus-sign\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transaction/project/selected/tool-item/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"TvKHxusG\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"machines.transaction.project_desc\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"transaction.project\\\"],[[\\\"change\\\",\\\"class\\\"],[\\\"typeSelected\\\",\\\"add-fields form-control\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transaction/project/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"lVKy9v9p\",\"block\":\"{\\\"symbols\\\":[\\\"sublink\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"subMenus\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subMenus\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"div\\\",\\\"submenu-item\\\",[23,1,[\\\"link\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transaction/template.hbs\"}});","import Controller from '../project/controller';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    tooltype: alias('model'),\n});\n","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { get } from '@ember/object';\n\nconst MachinesTransactionTooltypeController = Controller.extend({\n    content: alias('model'),\n    actions: {\n        moveMachines(transaction) {\n            const project = transaction.project;\n            if (project) {\n                return this.transitionToRoute(\n                    'machines.transaction.move',\n                    get(transaction, 'tooltype.id'),\n                    project.id,\n                );\n            } else {\n                return this.transitionToRoute(\n                    'machines.transaction.move',\n                    get(transaction, 'tooltype.id'),\n                    '(empty)',\n                );\n            }\n        },\n    },\n});\n\nexport default MachinesTransactionTooltypeController;\n","import Route from '@ember/routing/route';\nimport { hash } from 'rsvp';\nimport { inject as service } from '@ember/service';\n\nconst MachinesTransactionTooltypeRoute = Route.extend({\n    store: service(),\n    model(params) {\n        params.endtime = '(empty)';\n        params.sideload = true;\n        params.order = 'project';\n        return hash({\n            transactions: this.store.query('transaction', params),\n            tooltype: this.store.findRecord('tooltype', params.tooltype),\n        });\n    },\n});\n\nexport default MachinesTransactionTooltypeRoute;\n","export default Ember.HTMLBars.template({\"id\":\"NxzSeXfR\",\"block\":\"{\\\"symbols\\\":[\\\"transaction\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6 col-md-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"machines.transaction.tooltype.title\\\"],[[\\\"machine\\\"],[[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"tooltype\\\",\\\"transaction\\\",[24,[\\\"model\\\",\\\"tooltype\\\"]]]]]]]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6 col-md-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group link-component-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"transactions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",\\\"list-group-item link transaction\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moveMachines\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"b\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"amount\\\",\\\"transaction\\\",[23,1,[\\\"amount\\\"]]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"machines.pieces\\\"],null],false],[0,\\\"\\\\n                        -\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[23,1,[]],\\\"project\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"project\\\",\\\"transaction\\\",[23,1,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"t\\\",[\\\"machines.transaction.tooltype.empty_project\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                     \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge move move-RightRound\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transaction/tooltype/selected/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"e7IAP5tk\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"machines.transaction.tooltype_desc\\\"],null],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"transaction.tooltype\\\"],[[\\\"change\\\",\\\"class\\\"],[\\\"typeSelected\\\",\\\"add-fields form-control\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transaction/tooltype/template.hbs\"}});","import GeneralReportController from '../../../controllers/general-report';\nimport { alias } from '@ember/object/computed';\nimport EmberObject, { computed, set } from '@ember/object';\nimport { typeOf } from '@ember/utils';\nimport { A } from '@ember/array';\n\nconst MachinesTransactionsHistoryController = GeneralReportController.extend({\n    form: 'transaction',\n    limit: 25,\n\n    init() {\n        this._super(...arguments);\n        this.showColumns = ['project', 'tooltype', 'amount', 'price', 'starttime'];\n        this.queryParams = ['project', 'tooltype', 'q'];\n    },\n\n    content: alias('model'),\n    settings: EmberObject.create({\n        rowSettings: EmberObject.create({\n            hideEdit: true,\n        }),\n        massedit: true,\n        sortByColumn: 'project,starttime-',\n    }),\n\n    filters: computed(function () {\n        return A([\n            EmberObject.create({ field: 'project' }),\n            EmberObject.create({ field: 'tooltype' }),\n            EmberObject.create({ type: 'searchbox', bindto: 'q' }),\n            EmberObject.create({ field: 'endtime', value: '!(empty)' }),\n        ]);\n    }),\n\n    actions: {\n        filterChangeAction(value, field) {\n            if (typeOf(value) === 'object' || typeOf(value) === 'instance') {\n                return set(this, field, value.id);\n            } else {\n                return set(this, field, value);\n            }\n        },\n    },\n});\n\nexport default MachinesTransactionsHistoryController;\n","import { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\nimport GeneralReportRoute from '../../../routes/general-report';\n\nconst MachinesTransactionsHistoryRoute = GeneralReportRoute.extend({\n    store: service(),\n    flags: service(),\n\n    queryParams: {\n        project: {\n            refreshModel: true,\n        },\n        tooltype: {\n            refreshModel: true,\n        },\n    },\n\n    form: 'transaction',\n    model(params) {\n        params = this._super(params);\n\n        if (params.page) {\n            delete params.page;\n        }\n        return set(this.controllerFor('machines.transactions-history'), 'qParams', params);\n    },\n});\n\nexport default MachinesTransactionsHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"i5PckcVb\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\",\\\"@localStorageKey\\\"],[\\\"transaction\\\",[22,\\\"qParams\\\"],\\\"project,tooltype,q,status\\\",[28,\\\"hash\\\",null,[[\\\"endtime\\\",\\\"order\\\"],[\\\"!(empty)\\\",\\\"project,starttime-\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null],\\\"transactions-history\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transactions-history/template.hbs\"}});","import { typeOf } from '@ember/utils';\nimport GeneralReportController from '../../../controllers/general-report';\nimport EmberObject, { computed, set } from '@ember/object';\nimport { A } from '@ember/array';\nimport { alias } from '@ember/object/computed';\n\nconst MachinesTransactionsController = GeneralReportController.extend({\n    form: 'transaction',\n    limit: 25,\n    init() {\n        this._super(...arguments);\n        this.showColumns = ['project', 'tooltype', 'amount', 'price', 'starttime'];\n        this.queryParams = ['starttime', 'project', 'tooltype', 'q'];\n    },\n    content: alias('model'),\n\n    settings: EmberObject.create({\n        rowSettings: EmberObject.create({\n            hideEdit: true,\n            hideRemove: true,\n        }),\n        massedit: true,\n        sortByColumn: 'starttime-',\n    }),\n\n    filters: computed(function () {\n        return A([\n            EmberObject.create(\n                { field: 'starttime', type: 'date' },\n                {\n                    start: moment().subtract(1, 'month').format('YYYY-MM-DD'),\n                    end: moment().endOf('week').format('YYYY-MM-DD'),\n                },\n            ),\n            EmberObject.create({ field: 'project' }),\n            EmberObject.create({ field: 'tooltype' }),\n            EmberObject.create({ field: 'endtime', value: '(empty)' }),\n        ]);\n    }),\n\n    queryLimitFull: computed('model', function () {\n        if (this.model.meta.count === 1000) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n\n    actions: {\n        filterChangeAction(value, field) {\n            if (typeOf(value) === 'object' || typeOf(value) === 'instance') {\n                return set(this, field, value.id);\n            } else {\n                return set(this, field, value);\n            }\n        },\n    },\n    starttime:\n        moment().subtract(1, 'month').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n});\n\nexport default MachinesTransactionsController;\n","import { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\nimport GeneralReportRoute from '../../../routes/general-report';\n\nconst MachinesTransactionsRoute = GeneralReportRoute.extend({\n    store: service(),\n    flags: service(),\n\n    queryParams: {\n        starttime: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        tooltype: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n\n    form: 'transaction',\n    model(params) {\n        params = this._super(params);\n\n        if (params.page) {\n            delete params.page;\n        }\n        return set(this.controllerFor('machines.transactions'), 'qParams', params);\n    },\n});\n\nexport default MachinesTransactionsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"D8tWDH85\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"transaction\\\",[22,\\\"qParams\\\"],[28,\\\"hash\\\",null,[[\\\"starttime\\\",\\\"endtime\\\"],[[24,[\\\"qParams\\\",\\\"starttime\\\"]],\\\"(empty)\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/machines/transactions/template.hbs\"}});","import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment';\nimport { action, get, computed } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { alias } from '@ember/object/computed';\n\nexport default class MaponController extends Controller.extend(AuthenticatedRouteMixin, {\n    content: alias('model'),\n}) {\n    @service('collector-service') Collector;\n\n    @tracked map_visible = false;\n    @tracked user;\n    @tracked gps_value;\n\n    constructor() {\n        super(...arguments);\n        this.queryParams = ['date', 'user'];\n        this.translations = {\n            maponPoC: 'Mapon proof-of-concept',\n            unitInfo: 'Unit information',\n            since: 'since',\n            lastUpdate: 'Last update',\n            lastPosition: 'Last position',\n            state: 'State',\n        };\n    }\n\n    rangeStart = moment().startOf('week').format('YYYY-MM-DD');\n\n    rangeEnd = moment().endOf('week').format('YYYY-MM-DD');\n\n    @computed\n    get mapon_users() {\n        return this.store.query('user', { mapon_unit_id: '!(empty)' });\n    }\n\n    get mapon_unit_data() {\n        if (!this.user) return [];\n        const unit_id = get(this.store.peekRecord('user', this.user), 'mapon_unit_id');\n        const url = 'mapon_unit?unit_id=' + unit_id;\n        return this.Collector.ccapi({ url }).then(this.getUnitData.bind(this));\n    }\n\n    get mapon_data_routes() {\n        if (!this.model) return [];\n\n        this.model.forEach((route) => {\n            if (route.type !== 'route') return;\n\n            if (route.start) {\n                route.start.time = moment(route.start.time).format('llll');\n            }\n            if (route.end) {\n                route.end.time = moment(route.end.time).format('llll');\n            }\n            if (route.distance) {\n                return (route.distance = (route.distance / 1000).toFixed(2));\n            }\n            return route;\n        });\n\n        return this.model;\n    }\n\n    @action\n    toggle_gps_map() {\n        if (this.map_visible) {\n            this.map_visible = false;\n        } else {\n            this.map_visible = true;\n        }\n    }\n\n    getUnitData(data) {\n        const unitdata = data.data.units[0];\n\n        if (unitdata.mileage) {\n            unitdata.mileage = Math.round(unitdata.mileage / 1000) + 'km';\n        }\n\n        if (unitdata.last_update) {\n            unitdata.last_update = moment(unitdata.last_update).format('llll');\n        }\n\n        if (unitdata.state.start) {\n            unitdata.state.start = moment(unitdata.state.start).format('llll');\n        }\n\n        this.gps_value = '{\"latitude\": ' + unitdata.lat + ', \"longitude\": ' + unitdata.lng + '}';\n        return data.data.units[0];\n    }\n}\n","import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment';\nimport { get } from '@ember/object';\nimport { isPresent } from '@ember/utils';\n\nexport default class MaponRoute extends Route.extend(AuthenticatedRouteMixin, {}) {\n    @service('collector-service') Collector;\n\n    queryParams = {\n        date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n    };\n\n    async model(params) {\n        const { date } = params;\n\n        if (!isPresent(params.user)) return;\n        if (params.user === 'null') return;\n\n        const user = await this.store.findRecord('user', params.user);\n        let from, to;\n        const unit_id = get(user, 'mapon_unit_id');\n\n        if (!unit_id) return;\n\n        if (!date) {\n            from = moment().startOf('week').format('YYYY-MM-DDTHH:mm:ss') + 'Z';\n            to = moment().endOf('week').format('YYYY-MM-DDTHH:mm:ss') + 'Z';\n        } else {\n            const date_parsed = date.split('_');\n            from = moment(date_parsed[0]).format('YYYY-MM-DDTHH:mm:ss') + 'Z';\n            to = moment(date_parsed[1]).format('YYYY-MM-DDT') + '23:59:59Z';\n        }\n\n        const url = 'mapon?unit_id=' + unit_id + '&from=' + from + '&till=' + to;\n        const data = await this.Collector.ccapi({ url });\n\n        return data.data.units[0].routes;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"vbsAjGM6\",\"block\":\"{\\\"symbols\\\":[\\\"route\\\",\\\"muData\\\"],\\\"statements\\\":[[7,\\\"h2\\\",true],[8],[1,[24,[\\\"translations\\\",\\\"maponPoC\\\"]],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row reports-header-row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-lg-3 report-filter-component\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"range-picker\\\",null,[[\\\"autoApply\\\",\\\"ranges\\\",\\\"opens\\\",\\\"start\\\",\\\"end\\\",\\\"value\\\"],[true,false,\\\"right\\\",[24,[\\\"rangeStart\\\"]],[24,[\\\"rangeEnd\\\"]],[24,[\\\"date\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-lg-3 report-filter-component\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"select-comp\\\",null,[[\\\"content\\\",\\\"promptTranslation\\\",\\\"value\\\",\\\"form\\\",\\\"field\\\",\\\"classes\\\"],[[24,[\\\"mapon_users\\\"]],\\\"general.select_choose\\\",[24,[\\\"user\\\"]],\\\"worktime\\\",\\\"user\\\",\\\"form-control\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"with\\\",[[28,\\\"await\\\",[[24,[\\\"mapon_unit_data\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[\\\"label\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[1,[24,[\\\"translations\\\",\\\"unitInfo\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Mileage\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[7,\\\"b\\\",true],[8],[1,[23,2,[\\\"number\\\"]],false],[9],[0,\\\" \\\"],[1,[23,2,[\\\"label\\\"]],false],[0,\\\" (\\\"],[1,[23,2,[\\\"mileage\\\"]],false],[0,\\\")\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time\\\"],[8],[9],[0,\\\" \\\"],[1,[24,[\\\"translations\\\",\\\"lastUpdate\\\"]],false],[0,\\\": \\\"],[1,[23,2,[\\\"last_update\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GeoFence\\\"],[8],[9],[0,\\\" \\\"],[1,[24,[\\\"translations\\\",\\\"lastPosition\\\"]],false],[0,\\\": \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggle_gps_map\\\"]],[8],[1,[23,2,[\\\"lat\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"lng\\\"]],false],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Route\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[24,[\\\"translations\\\",\\\"state\\\"]],false],[0,\\\": \\\"],[7,\\\"i\\\",true],[8],[1,[23,2,[\\\"state\\\",\\\"name\\\"]],false],[9],[0,\\\" \\\"],[1,[24,[\\\"translations\\\",\\\"since\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"state\\\",\\\"start\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"map_visible\\\"]],\\\"show_gps_map\\\",\\\"hide_gps_map\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"gps-location-map\\\",null,[[\\\"value\\\"],[[24,[\\\"gps_value\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-exclamation-sign\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"sr-only\\\"],[8],[1,[28,\\\"t\\\",[\\\"comboreport.error_in_report\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n        \\\"],[1,[24,[\\\"error\\\",\\\"msg\\\"]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-striped\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"abcense.starttime\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.start_address\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.abcense.endtime\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.end_address\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"field.km\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"mapon_data_routes\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"route\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"start\\\",\\\"time\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"start\\\",\\\"address\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"end\\\",\\\"time\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"end\\\",\\\"address\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"distance\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/mapon/template.hbs\"}});","import Controller from '@ember/controller';\nimport EmberObject, { set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nconst MateriallogGroupsController = Controller.extend({\n    content: alias('model'),\n    report: EmberObject.create({\n        form: 'materialgroup',\n        refreshRows: true,\n    }),\n\n    actions: {\n        showAdd(onoff) {\n            set(this, 'record_id', null);\n            set(this, 'showAddPopup', onoff);\n            return false;\n        },\n\n        editRow(row) {\n            set(this, 'record_id', row.id);\n            set(this, 'showAddPopup', true);\n            return false;\n        },\n\n        rowAdded() {\n            this.send('showAdd', false);\n            return this.report.notifyPropertyChange('refreshRows');\n        },\n    },\n});\n\nexport default MateriallogGroupsController;\n","import Route from '@ember/routing/route';\n\nconst MateriallogGroupsRoute = Route.extend();\n\nexport default MateriallogGroupsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"yGTEXTAs\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"Report\\\",\\\"Table\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-materiallogs\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@localStorageKey\\\"],[\\\"materialgroup\\\",\\\"materialgroup\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"materialgroup@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,3,[\\\"Add\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[6,[23,3,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"edit,remove\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"form-report-materiallogs\\\"],null]],null,{\\\"statements\\\":[[4,\\\"collector/form-report\\\",null,[[\\\"form\\\",\\\"localStorageKey\\\",\\\"showColumns\\\"],[\\\"materialgroup\\\",\\\"materialgroup\\\",\\\"name\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"materialgroup@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,1,[\\\"add\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/materiallog/groups/template.hbs' @ L16:C11) \\\"],null]],[[\\\"rowActions\\\",\\\"selectable\\\"],[\\\"edit,remove\\\",true]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,2,[\\\"rowActions\\\"]],false],[0,\\\"\\\\n            \\\"],[1,[23,2,[\\\"no-content\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"materialgroup@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showAdd\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"settings\\\",\\\"editRow\\\"],[[24,[\\\"report\\\"]],\\\"editRow\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddPopup\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"general.add\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showAdd\\\",false],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"cancelClicked\\\",\\\"recordSaved\\\"],[\\\"materialgroup\\\",[24,[\\\"record_id\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"showAdd\\\",false],null],\\\"rowAdded\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/materiallog/groups/template.hbs\"}});","import { alias } from '@ember/object/computed';\nimport Controller from '@ember/controller';\nimport EmberObject, { set } from '@ember/object';\n\nconst MateriallogListController = Controller.extend({\n    content: alias('model'),\n    report: EmberObject.create({\n        form: 'materialtype',\n        refreshRows: true,\n    }),\n\n    actions: {\n        showAdd(onoff) {\n            set(this, 'record_id', null);\n            set(this, 'showAddPopup', onoff);\n            return false;\n        },\n\n        editRow(row) {\n            set(this, 'record_id', row.id);\n            set(this, 'showAddPopup', true);\n            return false;\n        },\n\n        rowAdded() {\n            this.send('showAdd', false);\n            return this.report.notifyPropertyChange('refreshRows');\n        },\n    },\n});\n\nexport default MateriallogListController;\n","import Route from '@ember/routing/route';\n\nconst MateriallogListRoute = Route.extend();\n\nexport default MateriallogListRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Z93ZnMvq\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"Report\\\",\\\"Table\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-materiallogs\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@localStorageKey\\\"],[\\\"materialtype\\\",\\\"materialtype\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"materialtype@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,3,[\\\"Add\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[6,[23,3,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"edit,remove\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"form-report-materiallogs\\\"],null]],null,{\\\"statements\\\":[[4,\\\"collector/form-report\\\",null,[[\\\"form\\\",\\\"localStorageKey\\\"],[\\\"materialtype\\\",\\\"materialtype\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"materialtype@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,1,[\\\"add\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/materiallog/list/template.hbs' @ L16:C11) \\\"],null]],[[\\\"rowActions\\\",\\\"selectable\\\"],[\\\"edit,remove\\\",true]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,2,[\\\"rowActions\\\"]],false],[0,\\\"\\\\n            \\\"],[1,[23,2,[\\\"no-content\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"materialtype@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showAdd\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"settings\\\",\\\"editRow\\\"],[[24,[\\\"report\\\"]],\\\"editRow\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddPopup\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"general.add\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showAdd\\\",false],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"cancelClicked\\\",\\\"recordSaved\\\"],[\\\"materialtype\\\",[24,[\\\"record_id\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"showAdd\\\",false],null],\\\"rowAdded\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/materiallog/list/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"WBLJjwOl\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/materiallog/loading/template.hbs\"}});","import { alias } from '@ember/object/computed';\nimport GeneralReportController from '../../../controllers/general-report';\nimport { inject as service } from '@ember/service';\nimport EmberObject, { set } from '@ember/object';\nimport { A } from '@ember/array';\nimport { typeOf } from '@ember/utils';\n\nconst MateriallogReportController = GeneralReportController.extend({\n    flags: service(),\n\n    form: 'materiallog',\n    type: null,\n    project: null,\n    user: null,\n    employer: null,\n    task: null,\n\n    limit: 25,\n    init() {\n        this._super(...arguments);\n        this.showColumns = ['date', 'project', 'user', 'type', 'amount', 'employer', 'task'];\n        this.queryParams = ['project', 'date', 'q', 'user', 'type', 'task', 'employer'];\n    },\n\n    content: alias('model'),\n    settings: EmberObject.create({\n        rowSettings: EmberObject.create({\n            editRoute: {\n                modal: true,\n            },\n        }),\n        sortByColumn: 'date-',\n    }),\n\n    filters: A([\n        EmberObject.create({ field: 'date' }),\n        EmberObject.create({ field: 'type' }),\n        EmberObject.create({ field: 'project' }),\n        EmberObject.create({ field: 'employer' }),\n        EmberObject.create({ field: 'task' }),\n        EmberObject.create({ field: 'user' }),\n        EmberObject.create({ type: 'searchbox', bindto: 'q' }),\n    ]),\n\n    actions: {\n        filterChangeAction(value, field) {\n            if (typeOf(value) === 'object' || typeOf(value) === 'instance') {\n                return set(this, field, value.id);\n            } else {\n                return set(this, field, value);\n            }\n        },\n    },\n    init_functions() {\n        if (\n            this.flags.test('form-report-materiallogs') ||\n            this.flags.test('ember-movenium-form-report-materiallogs')\n        ) {\n            return null;\n        } else {\n            return this._super();\n        }\n    },\n\n    formReportDate:\n        moment().startOf('isoweek').subtract(1, 'week').format('YYYY-MM-DD') +\n        '_' +\n        moment().format('YYYY-MM-DD'),\n    date:\n        moment().startOf('isoweek').subtract(1, 'week').format('YYYY-MM-DD') +\n        '_' +\n        moment().format('YYYY-MM-DD'),\n});\n\nexport default MateriallogReportController;\n","import GeneralReportRoute from '../../../routes/general-report';\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\n\nconst MateriallogReportRoute = GeneralReportRoute.extend({\n    flags: service(),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        task: {\n            refreshModel: true,\n        },\n        type: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n\n    form: 'materiallog',\n    model(params) {\n        if (\n            !this.flags.test('form-report-materiallogs') &&\n            !this.flags.test('ember-movenium-form-report-materiallogs')\n        ) {\n            params = this._super(params);\n            params.sideload = true;\n            return this.store.query('materiallog', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return set(this.controllerFor('materiallog.report'), 'qParams', params);\n        }\n    },\n});\n\nexport default MateriallogReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"pnlXasEn\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-materiallogs\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@filter\\\",\\\"@form\\\",\\\"@additional\\\",\\\"@filterChangeAction\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\"],[[28,\\\"hash\\\",null,[[\\\"date\\\"],[[23,0,[\\\"formReportDate\\\"]]]]],[23,0,[\\\"form\\\"]],\\\"project.owner\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null],[23,0,[\\\"qParams\\\"]],\\\"date,project,user,type,amount,employer,task,q,groupBy\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"form-report-materiallogs\\\"],null]],null,{\\\"statements\\\":[[4,\\\"collector/form-report\\\",null,[[\\\"filterDefaultValues\\\",\\\"form\\\",\\\"filterByValues\\\"],[[28,\\\"hash\\\",null,[[\\\"date\\\"],[[24,[\\\"formReportDate\\\"]]]]],[24,[\\\"form\\\"]],[24,[\\\"qParams\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"filters\\\"]],\\\"expected `report.filters` to be a contextual component but found a string. Did you mean `(component report.filters)`? ('tt4/pods/materiallog/report/template.hbs' @ L32:C10) \\\"],null]],[[\\\"additional\\\",\\\"filterChangeAction\\\"],[\\\"project.owner\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/materiallog/report/template.hbs' @ L33:C10) \\\"],null]],[[\\\"selectable\\\"],[true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/materiallog/report/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nexport default Route.extend(AuthenticatedRouteMixin);\n","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport collectorService from 'tt4/injections/services/collector-service';\nimport ttapiService from 'tt4/injections/services/ttapi';\nimport initappService from 'tt4/injections/services/initapp';\nimport sessionhelperService from 'tt4/injections/services/sessionhelper';\nimport { A } from '@ember/array';\nimport MutableArray from '@ember/array/mutable';\nimport { action, notifyPropertyChange } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport moment from 'moment';\nimport Ember from 'ember';\nimport { later } from '@ember/runloop';\n\nexport default class MessAgesComponent extends Component<any> {\n    @service public session: any;\n    @service protected router: any;\n    @service('collector-service' as any) protected Collector: collectorService;\n    @service protected ttapi: ttapiService;\n    @service protected initapp: initappService;\n    @service protected sessionhelper: sessionhelperService;\n\n    @tracked protected messageStack: MutableArray<string> = A([]);\n\n    public get currentMessage(): any {\n        return this.messageStack.firstObject;\n    }\n\n    public get formattedCreated() {\n        return moment.utc(this.currentMessage.created).local().format('LLLL');\n    }\n\n    constructor(owner: unknown, args: any) {\n        super(owner, args);\n        if (!Ember.testing) {\n            if (this.initapp.appReady) {\n                this.fetchMessagesLoop();\n            } else {\n                this.initapp.on('appReady', () => {\n                    this.fetchMessagesLoop();\n                });\n            }\n        }\n    }\n\n    public fetchMessagesLoop(): any {\n        this.fetchMessages();\n        return later(\n            this,\n            () => {\n                return this.fetchMessagesLoop();\n            },\n            15 * 60 * 1000,\n        );\n    }\n\n    public async fetchMessages() {\n        if (!this.session.isAuthenticated) return;\n        if (this.sessionhelper.tokenHasExpired()) return;\n        const back = await this.ttapi._get('messages');\n\n        return (this.messageStack = A(back));\n    }\n\n    public get superiorReplacementMessageTypes() {\n        return [\n            'superior-end-of-replacement',\n            'superior-start-of-replacement',\n            'replacement-start-of-replacement',\n            'replacement-end-of-replacement',\n        ];\n    }\n\n    @action\n    public closeModal() {\n        this.markAsRead();\n        notifyPropertyChange(this, 'messageStack');\n    }\n\n    @action\n    public async addUserConsent(type: string) {\n        await this.ttapi._post('userconsent', { type });\n        return this.markAsRead();\n    }\n\n    @action\n    public async markAsRead() {\n        if (!this.currentMessage) return;\n\n        //do not mark as read when impersonating\n        if (this.session.session.content.authenticated.scope) {\n            return this.messageStack.removeObject(this.currentMessage);\n        }\n\n        //mark as read\n        await this.ttapi._post('messages/markasread_by_id/' + this.currentMessage.id);\n\n        return this.messageStack.removeObject(this.currentMessage);\n    }\n\n    @action\n    public markAsReadAndTransition() {\n        this.markAsRead();\n        if (this.Collector.testNeeds(['modules.timetracker', 'modules.absences'])) {\n            return this.router.transitionTo({ queryParams: { wizard: 'onboarding-wizard' } });\n        } else if (this.Collector.testNeeds(['products.mini_entry'])) {\n            return this.router.transitionTo({ queryParams: { wizard: 'billing' } });\n        }\n    }\n    @action\n    public async execute(value: boolean | string) {\n        if (value === false) {\n            this.messageStack.removeObject(this.currentMessage);\n            return this.closeModal();\n        }\n\n        await this.ttapi._post('messages/' + this.currentMessage.id, { value });\n\n        return this.messageStack.removeObject(this.currentMessage);\n    }\n\n    @action\n    public async closeModalAndRefresh() {\n        await this.markAsRead();\n        window.location.reload();\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"2wnceBaF\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentMessage\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"messageboard\\\",[24,[\\\"currentMessage\\\",\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"currentMessage\\\",\\\"header\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"message-date-header\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[22,\\\"formattedCreated\\\"],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"currentMessage\\\"]],\\\"creator_name\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        - \\\"],[7,\\\"i\\\",true],[8],[1,[28,\\\"get\\\",[[24,[\\\"currentMessage\\\"]],\\\"creator_name\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"mess-ages/types/messageboard\\\",null,[[\\\"message\\\"],[[24,[\\\"currentMessage\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"welcome-admin\\\",[24,[\\\"currentMessage\\\",\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"wizard-builder/welcome-wizard\\\",null,[[\\\"close\\\",\\\"transitionToOnboarding\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"markAsReadAndTransition\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"markAsReadAndTransition\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"currentMessage\\\",\\\"extra\\\",\\\"type\\\"]],\\\"taxman-validations\\\"],null]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"messages.modal_title\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"mess-ages/types/taxman-validations\\\",null,[[\\\"close\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"addUserConsent\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"message\\\",[24,[\\\"currentMessage\\\",\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"messages.modal_title\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"mess-ages/types/message\\\",null,[[\\\"close\\\",\\\"params\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"markAsRead\\\"],null],[24,[\\\"currentMessage\\\",\\\"extra\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"terms-of-service\\\",[24,[\\\"currentMessage\\\",\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"mess-ages/types/user-consent\\\",null,[[\\\"close\\\",\\\"type\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"addUserConsent\\\"],null],[24,[\\\"currentMessage\\\",\\\"type\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"user-consent\\\",[24,[\\\"currentMessage\\\",\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"mess-ages/types/user-consent\\\",null,[[\\\"close\\\",\\\"type\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"addUserConsent\\\"],null],[24,[\\\"currentMessage\\\",\\\"type\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"in-array\\\",[[24,[\\\"currentMessage\\\",\\\"type\\\"]],[24,[\\\"superiorReplacementMessageTypes\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"mess-ages/types/superior-replacement\\\",null,[[\\\"close\\\",\\\"data\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeModalAndRefresh\\\"],null],[24,[\\\"currentMessage\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"messages.modal_title\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"mess-ages/types/link-request\\\",null,[[\\\"params\\\",\\\"messageid\\\",\\\"execute\\\"],[[24,[\\\"currentMessage\\\",\\\"extra\\\"]],[24,[\\\"currentMessage\\\",\\\"id\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"execute\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/mess-ages/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport capiService from 'tt4/injections/services/capi';\nimport ttapiService from 'tt4/injections/services/ttapi';\n\ninterface IMessAgesTypesLinkRequestComponent {\n    messageid: number;\n    params?: any;\n    execute(args0: boolean | string): void;\n}\n\nexport default class MessAgesTypesLinkRequestComponent extends Component<IMessAgesTypesLinkRequestComponent> {\n    @service protected session: any;\n    @service protected capi: capiService;\n    @service protected ttapi: ttapiService;\n\n    @action\n    async linknow() {\n        await this.ttapi.request('messages/' + this.args.messageid, {\n            method: 'post',\n            data: {\n                value: 'linknow',\n            },\n        });\n\n        const data = await this.capi.request('me?linkings');\n        set(this.session, 'currentUser.services', data);\n        if (this.args.execute) {\n            return this.args.execute(false);\n        }\n    }\n\n    @action\n    skiplinking() {\n        if (this.args.execute) {\n            return this.args.execute('skiplinking');\n        }\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"JnEfe8HI\",\"block\":\"{\\\"symbols\\\":[\\\"@params\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"userlinker.request_title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"userlinker.request_text\\\"],[[\\\"company\\\",\\\"request_maker\\\"],[[23,1,[\\\"company\\\"]],[23,1,[\\\"request_maker\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"linknow\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"userlinker.request_link_now\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"skiplinking\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"userlinker.request_skip\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/mess-ages/types/link-request/template.hbs\"}});","import Component from '@glimmer/component';\nimport { htmlSafe } from '@ember/template';\n\ninterface IMessAgesTypesMessageComponent {\n    params: { text: string };\n}\n\nexport default class MessAgesTypesMessageComponent extends Component<IMessAgesTypesMessageComponent> {\n    get content() {\n        // convert line breaks to html\n        return htmlSafe(this.args.params.text.replace(/\\n/g, '<br>'));\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"9WB/Ukzx\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[23,0,[\\\"content\\\"]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/mess-ages/types/message/template.hbs\"}});","import { sanitize } from 'dom-purify';\nimport Component from '@glimmer/component';\nimport { htmlSafe } from '@ember/template';\nimport { isPresent } from '@ember/utils';\n\ninterface IMessAgesTypesMessageboardComponent {\n    message: any;\n}\n\nexport default class MessAgesTypesMessageboardComponent extends Component<IMessAgesTypesMessageboardComponent> {\n    get content() {\n        //convert line breaks to html\n        const content: string = this.args.message?.content;\n        if (isPresent(content)) {\n            return htmlSafe(sanitize(content.replace(/\\n/g, '<br>')));\n        }\n        return '';\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"rcULaFfy\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\",\\\"user\\\",\\\"@message\\\"],\\\"statements\\\":[[1,[23,0,[\\\"content\\\"]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"sms_sent\\\"]],\\\"1\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-phone\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.view.sms_sent\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"email_sent\\\"]],\\\"1\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-envelope\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.view.email_sent\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"users_read\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"users_read\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h6\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"messages.view.users_read\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[\\\"users_read\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-success\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CheckedCheckbox\\\"],[8],[9],[0,\\\" \\\"],[1,[23,2,[\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"firstname\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"users_notread\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h6\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"messages.view.users_notread\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[\\\"users_notread\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-UncheckedCheckbox\\\"],[8],[9],[0,\\\" \\\"],[1,[23,1,[\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"firstname\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/mess-ages/types/messageboard/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { htmlSafe } from '@ember/template';\nimport { action } from '@ember/object';\n\ninterface IMessAgesTypesPromoComponent {\n    content: any;\n    close(): void;\n}\n\nexport default class MessAgesTypesPromoComponent extends Component<IMessAgesTypesPromoComponent> {\n    @tracked protected show: boolean = true;\n\n    get iframe_size(): string {\n        if (!this.args.content.external_height) {\n            return '500';\n        } else {\n            return this.args.content.external_height;\n        }\n    }\n\n    get message_content() {\n        return htmlSafe(this.args.content.message);\n    }\n\n    @action\n    closeModal() {\n        if (this.args.close) {\n            this.args.close();\n        }\n        return (this.show = false);\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"y3bDgd8m\",\"block\":\"{\\\"symbols\\\":[\\\"@content\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"show\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-overlay\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[23,1,[\\\"title\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"closeModal\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"message_content\\\"],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"iframe\\\",true],[10,\\\"frameborder\\\",\\\"0\\\"],[11,\\\"style\\\",[29,[\\\"height:\\\",[22,\\\"iframe_size\\\"],\\\"px; width:100%;\\\"]]],[11,\\\"src\\\",[23,1,[\\\"external_url\\\"]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/mess-ages/types/promo/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\n\ninterface IMessAgesTypesSuperiorReplacementComponent {\n    close(): void;\n}\n\nexport default class MessAgesTypesSuperiorReplacementComponent extends Component<IMessAgesTypesSuperiorReplacementComponent> {\n    @tracked protected show: boolean = true;\n\n    @action\n    closeModal() {\n        if (this.args.close) {\n            this.args.close();\n        }\n        return (this.show = false);\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"49KPp3Y/\",\"block\":\"{\\\"symbols\\\":[\\\"@data\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"show\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-overlay\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@class\\\",\\\"@header\\\",\\\"@close\\\"],[\\\"has-text-centered\\\",[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"superiorreplacement.\\\",[23,1,[\\\"type\\\"]],\\\"-title\\\"],null]],null],[28,\\\"fn\\\",[[23,0,[\\\"closeModal\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"superior-start-of-replacement\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"superiorreplacement.superior.start.heading\\\"],null],false],[0,\\\" \\\"],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"extra\\\",\\\"name\\\"]],false],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"superiorreplacement.date_interval\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"superiorreplacement\\\",\\\"startdate\\\",[23,1,[\\\"extra\\\",\\\"startdate\\\"]]]]],false],[0,\\\" - \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"superiorreplacement\\\",\\\"enddate\\\",[23,1,[\\\"extra\\\",\\\"enddate\\\"]]]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"superiorreplacement.superior.start.text1\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"superior-end-of-replacement\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"superiorreplacement.superior.end.text\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"replacement-start-of-replacement\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"superiorreplacement.replacement.start.heading\\\"],null],false],[0,\\\" \\\"],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"extra\\\",\\\"name\\\"]],false],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"superiorreplacement.date_interval\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"superiorreplacement\\\",\\\"startdate\\\",[23,1,[\\\"extra\\\",\\\"startdate\\\"]]]]],false],[0,\\\" - \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"superiorreplacement\\\",\\\"enddate\\\",[23,1,[\\\"extra\\\",\\\"enddate\\\"]]]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"superiorreplacement.replacement.start.text1\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"replacement-end-of-replacement\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"superiorreplacement.replacement.end.text\\\"],null],false],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary mt-5 btn-normal-size\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"closeModal\\\"]]],null]]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/mess-ages/types/superior-replacement/template.hbs\"}});","import Component from '@glimmer/component';\n\nexport default class MessAgesTypesTaxmanValidationsComponent extends Component {}\n","export default Ember.HTMLBars.template({\"id\":\"f9tJOq2w\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"message.taxman.validation_errors\\\"],null],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/mess-ages/types/taxman-validations/template.hbs\"}});","import config from '../../../../config/environment';\nimport Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport cdnService from 'tt4/injections/services/cdn';\nimport { action } from '@ember/object';\nimport moment from 'moment';\n\ninterface IMessAgesTypesUserConsentComponent {\n    type: string;\n    close(args0: string): void;\n}\n\nexport default class MessAgesTypesUserConsentComponent extends Component<IMessAgesTypesUserConsentComponent> {\n    @service protected cdn: cdnService;\n\n    get terms_url() {\n        switch (moment.locale()) {\n            case 'fi':\n                return config.termsAndConditions.fi;\n            case 'sv':\n            case 'se':\n                return config.termsAndConditions.se;\n            default:\n                return config.termsAndConditions.en;\n        }\n    }\n\n    @action\n    closeModal() {\n        if (this.args.close) {\n            return this.args.close(this.args.type);\n        }\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"RsSjiGop\",\"block\":\"{\\\"symbols\\\":[\\\"@type\\\"],\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"hideClose\\\"],[[28,\\\"t\\\",[\\\"messages.modal_title\\\"],null],true]],{\\\"statements\\\":[[7,\\\"div\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"messages.\\\",[23,1,[]]],null]],[[\\\"htmlSafe\\\"],[true]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"terms-of-service\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"billing.terms\\\"],null],false],[0,\\\" \\\"],[7,\\\"a\\\",true],[10,\\\"target\\\",\\\"_blank\\\"],[11,\\\"href\\\",[29,[[22,\\\"terms_url\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"register.terms_link\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"saveButtonText\\\"],[[24,[\\\"spinIsLoading\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"closeModal\\\"]]],null],\\\"btn btn-m-link btn-lg\\\",[28,\\\"t\\\",[\\\"general.approve\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/mess-ages/types/user-consent/template.hbs\"}});","import Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport EmberObject, { set, computed } from '@ember/object';\n\nconst MessageboardAddController = Controller.extend({\n    Collector: service('collector-service'),\n    ttapi: service(),\n    intl: service(),\n    userform: 'worktime',\n\n    spinIsLoading: false,\n    disabled: false,\n\n    init() {\n        this._super(...arguments);\n\n        if (this.Collector.fieldExists('worktime', 'user')) {\n            return set(this, 'userform', 'worktime');\n        } else if (this.Collector.fieldExists('presence', 'user')) {\n            return set(this, 'userform', 'presence');\n        }\n    },\n\n    content: alias('model'),\n\n    field: computed(function () {\n        return EmberObject.create({\n            type: 'multiselect',\n            features: {},\n            form: this.userform,\n            name: 'user',\n            options: {\n                fields: ['lastname', 'firstname'],\n            },\n            ext: 'user',\n        });\n    }),\n\n    actions: {\n        async save() {\n            const params = {};\n\n            params.receivers = this.receivers;\n            params.header = this.header;\n            params.message = this.message;\n            params.forced = this.forced;\n\n            set(this, 'receivers', null);\n            set(this, 'header', null);\n            set(this, 'message', null);\n            set(this, 'forced', null);\n            await this.ttapi.request('/messageboard/new', {\n                type: 'POST',\n                data: params,\n            });\n            set(this, 'spinIsLoading', false);\n            set(this, 'disabled', false);\n            return this.transitionToRoute('messageboard.index');\n        },\n\n        cancel() {\n            set(this, 'receivers', null);\n            set(this, 'header', null);\n            set(this, 'message', null);\n            set(this, 'forced', null);\n            return this.transitionToRoute('messageboard.index');\n        },\n\n        bubbleChange(value) {\n            return set(this, 'receivers', value);\n        },\n    },\n});\n\nexport default MessageboardAddController;\n","export default Ember.HTMLBars.template({\"id\":\"kEDQVDWo\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.messageboard\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"messageboard.index\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"messageboard.add.receivers\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"field\\\"]]],[[\\\"_class\\\",\\\"change\\\"],[\\\"add-fields form-control\\\",\\\"bubbleChange\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"messageboard.add.header\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"header\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"messageboard.add.message\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\"],[\\\"3\\\",\\\"form-control add-fields\\\",\\\"field\\\",\\\"\\\",[24,[\\\"message\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"messageboard.add.forced\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"checked\\\",\\\"name\\\",\\\"placeholder\\\",\\\"disabled\\\"],[\\\"checkbox\\\",\\\"form-control add-fields\\\",[24,[\\\"forced\\\"]],\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"spinIsLoading\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/messageboard/add/template.hbs\"}});","import Route from '@ember/routing/route';\n\nconst MessageboardHistoryRoute = Route.extend({\n    model(params) {\n        return params;\n    },\n});\n\nexport default MessageboardHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"GfP3YFd2\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"project\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/messageboard/history/template.hbs\"}});","/* eslint-disable ember/no-observers */\nimport Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport EmberObject, { set, computed, observer } from '@ember/object';\nimport { A } from '@ember/array';\nimport { on } from '@ember/object/evented';\n\nconst MessageboardController = Controller.extend({\n    Collector: service('collector-service'),\n    intl: service(),\n    session: service(),\n    dialogs: service(),\n    ttapi: service(),\n    error: service(),\n\n    rowsPerPage: 30,\n    currentPage: 1,\n\n    showRemoved: false,\n\n    init() {\n        this._super(...arguments);\n        this.columns = ['date', 'header', 'forced'];\n        this.queryParams = ['showRemoved'];\n        this.rowActions = [\n            { action: 'viewRow', icon: 'move move-View' },\n            { action: 'showHistory', icon: 'move move-Search' },\n        ];\n    },\n\n    popupArr: A([]),\n    messageboards: alias('model.messageboards'),\n    data: computed('messageboards.[]', 'popupArr.[]', function () {\n        const data = this.messageboards;\n        if (!data) {\n            return null;\n        }\n\n        const columns = this.columns;\n        const formatted_data = A([]);\n        data.forEach((unformatted_row) => {\n            const row = EmberObject.create();\n            if (unformatted_row.id) {\n                row.id = unformatted_row.id;\n            }\n\n            if (!unformatted_row.read) {\n                row.class = 'warning';\n            }\n\n            if (unformatted_row.row_info.status === 'removed') {\n                row.class = 'danger';\n            }\n\n            columns.forEach((column) => {\n                let cell = unformatted_row[column];\n\n                if (column === 'date') {\n                    cell = moment(cell).format('L');\n                }\n\n                if (column === 'forced') {\n                    cell = (() => {\n                        switch (cell) {\n                            case '1':\n                            case true:\n                                return this.intl.t('general.yes');\n                            default:\n                                return this.intl.t('general.no');\n                        }\n                    })();\n                }\n\n                return (row[column] = cell);\n            });\n\n            return formatted_data.pushObjects([row]);\n        });\n\n        return formatted_data;\n    }),\n\n    rowActionsObs: on(\n        'init',\n        observer('showRemoved', function () {\n            const session = this.session;\n            if (session) {\n                if (this.Collector.getUserlevel(session) === 5) {\n                    let arr = [\n                        { action: 'viewRow', icon: 'move move-View' },\n                        { action: 'removeRow', icon: 'move move-Delete' },\n                        { action: 'showHistory', icon: 'move move-Search' },\n                    ];\n\n                    if (this.showRemoved) {\n                        arr = [\n                            { action: 'viewRow', icon: 'move move-View' },\n                            { action: 'showHistory', icon: 'move move-Search' },\n                        ];\n                    }\n\n                    return set(this, 'rowActions', arr);\n                }\n            }\n        }),\n    ),\n\n    // get translation for every column\n    translated_columns: computed('columns', function () {\n        const translated_columns = [];\n        this.columns.forEach((item) => {\n            return translated_columns.push(this.intl.t('report.messageboard.' + item));\n        });\n\n        return translated_columns;\n    }),\n\n    actions: {\n        catchActions(action, params) {\n            return this.send(action, params);\n        },\n\n        async removeRow(params) {\n            const con = await this.dialogs.confirm(this.intl.t('report.confirm_delete'));\n            if (con) {\n                await this.removeMessage(params.id);\n                const obj = this.messageboards.findBy('id', params.id);\n                return this.messageboards.removeObject(obj);\n            }\n        },\n\n        viewRow(params) {\n            //mark as read\n            const obj = this.messageboards.findBy('id', params.id);\n            obj.read = true;\n\n            return this.popupArr.pushObject(obj);\n        },\n\n        columnClicked() {\n            set(this, 'order', null);\n        },\n\n        showHistory(params) {\n            return this.transitionToRoute('messageboard.history', params.id);\n        },\n\n        showRemovedRows() {\n            return this.toggleProperty('showRemoved');\n        },\n    },\n\n    async removeMessage(id) {\n        try {\n            const params = {};\n            params.rowid = id;\n            return await this.ttapi.request('/messageboard', {\n                type: 'DELETE',\n                data: params,\n            });\n        } catch (reason) {\n            return this.error.notify(reason);\n        }\n    },\n});\n\nexport default MessageboardController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst MessageboardRoute = Route.extend(AuthenticatedRouteMixin, {\n    ttapi: service(),\n\n    queryParams: {\n        showRemoved: {\n            refreshModel: true,\n        },\n    },\n\n    model(params) {\n        let url = '/messageboard/all';\n        if (params.showRemoved) {\n            url += '?showRemoved=true';\n        }\n        return this.ttapi.request(url, { type: 'GET' });\n    },\n\n    actions: {\n        rowAction() {},\n        showRemovedRows() {},\n    },\n});\n\nexport default MessageboardRoute;\n","export default Ember.HTMLBars.template({\"id\":\"8dKt2N1O\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 text-right\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"btn-group report-more \\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,1,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showRemovedRows\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showRemoved\\\"]],true],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"t\\\",[\\\"report.actions.show_normal\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"t\\\",[\\\"report.actions.show_removed\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"order\\\"],[[24,[\\\"columns\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"data\\\"]],[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",[24,[\\\"order\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"popupArr\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"modal-array\\\",null,[[\\\"array\\\",\\\"store\\\",\\\"model\\\"],[[24,[\\\"popupArr\\\"]],[24,[\\\"store\\\"]],[23,0,[\\\"messageboards\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/messageboard/index/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst MessageboardRoute = Route.extend(AuthenticatedRouteMixin);\n\nexport default MessageboardRoute;\n","export default Ember.HTMLBars.template({\"id\":\"ooPzXW3z\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/messageboard/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/messages/add/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MessagesAddIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nMessagesAddIndexController = GeneralReportController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                type: 'searchbox',\n            }),\n        ]);\n    }),\n    queryParams: ['q'],\n    tab: '',\n    employers: Em.computed(function () {\n        return this.store.findAll('employer');\n    }),\n    projects: Em.computed(function () {\n        return this.store.findAll('project');\n    }),\n    groups: Em.computed(function () {\n        return this.store.findAll('group');\n    }),\n    roles: Em.computed(function () {\n        var ownroles, roles;\n        roles = [\n            {\n                id: '1',\n                name: this.get('intl').t('user.userlevel.1'),\n            },\n            {\n                id: '2',\n                name: this.get('intl').t('user.userlevel.2'),\n            },\n            {\n                id: '3',\n                name: this.get('intl').t('user.userlevel.3'),\n            },\n            {\n                id: '6',\n                name: this.get('intl').t('user.userlevel.6'),\n            },\n            {\n                id: '5',\n                name: this.get('intl').t('user.userlevel.5'),\n            },\n            {\n                id: '4',\n                name: this.get('intl').t('user.userlevel.4'),\n            },\n        ];\n        ownroles = Ember.get(this.get('Collector').field('user', 'userlevel'), 'options').filter(\n            function (item) {\n                return item.length > 1;\n            },\n        );\n        ownroles.forEach((role) => {\n            return roles.push({\n                id: role.substring(0, 2),\n                name: role.substring(2),\n            });\n        });\n        return roles;\n    }),\n    users: Em.computed('q', function () {\n        if (this.get('q')) {\n            return this.store.query('user', {\n                q: this.get('q'),\n                order: 'lastname',\n            });\n        }\n    }),\n    selected_users_arr: Em.computed(function () {\n        return Em.A([]);\n    }),\n    selected_employer_count: Em.computed('selected_users_arr.@each', function () {\n        if (!this.get('showEmployer')) {\n            return false;\n        }\n        return this.get('selected_users_arr').uniqBy('employer').length;\n    }),\n    //update selected users array from selected value\n    selected_users: Em.observer(\n        'tab',\n        'selected_employer',\n        'selected_project',\n        'selected_group',\n        'selected_role',\n        function () {\n            switch (this.get('tab')) {\n                case 'employer':\n                    if (!this.get('selected_employer')) {\n                        return;\n                    }\n                    //get users with selected employer\n                    return this.store\n                        .query('user', {\n                            limit: 'all',\n                            employer: this.get('selected_employer.id'),\n                            order: 'lastname',\n                        })\n                        .then((users) => {\n                            return this.send('addUsersToList', users);\n                        });\n                case 'group':\n                    if (!this.get('selected_group')) {\n                        return;\n                    }\n                    //get users with selected employer\n                    return this.store\n                        .query('user', {\n                            limit: 'all',\n                            group: this.get('selected_group.id'),\n                            order: 'lastname',\n                        })\n                        .then((users) => {\n                            return this.send('addUsersToList', users);\n                        });\n                case 'role':\n                    if (!this.get('selected_role')) {\n                        return;\n                    }\n                    //get users with selected employer\n                    return this.store\n                        .query('user', {\n                            limit: 'all',\n                            userlevel: this.get('selected_role'),\n                            order: 'lastname',\n                        })\n                        .then((users) => {\n                            return this.send('addUsersToList', users);\n                        });\n            }\n        },\n    ),\n    selected_users_arr_formated: Em.computed('selected_users_arr.[]', function () {\n        return this.get('selected_users_arr').map((row) => {\n            if (!isNaN(row.get('userlevel'))) {\n                row.set(\n                    'userlevel',\n                    this.get('Collector')._format_(row.get('userlevel'), 'user', 'userlevel'),\n                );\n            }\n            return row;\n        });\n    }),\n    showColumns: Em.computed('showEmployer', function () {\n        if (this.get('showEmployer')) {\n            return ['lastname', 'firstname', 'userlevel', 'email', 'phone', 'employer.name'];\n        } else {\n            return ['lastname', 'firstname', 'userlevel', 'email', 'phone'];\n        }\n    }),\n    // get translation for every column\n    translated_columns: Em.computed('showColumns', function () {\n        var c, columns, intl, translated_columns;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        columns = this.get('showColumns');\n        translated_columns = [];\n        $.each(columns, (key, item) => {\n            return translated_columns.push(intl.t('report.user.' + item));\n        });\n        return translated_columns;\n    }),\n    rowActions: Em.computed('intl', function () {\n        var arr;\n        arr = [\n            {\n                action: 'removeRow',\n                icon: 'move move-Delete',\n                text: this.get('intl').t('report.delete_rows'),\n            },\n        ];\n        return arr;\n    }),\n    showColumnsUsersearch: ['lastname', 'firstname', 'email', 'phone'],\n    // get translation for every column\n    translated_columns_userSearch: Em.computed('showColumnsUsersearch', function () {\n        var c, columns, intl, translated_columns;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        columns = this.get('showColumnsUsersearch');\n        translated_columns = [];\n        $.each(columns, (key, item) => {\n            return translated_columns.push(intl.t('report.user.' + item));\n        });\n        return translated_columns;\n    }),\n    rowActionsUsersearch: [\n        {\n            action: 'addUserToList',\n            icon: 'glyphicon glyphicon-plus',\n        },\n    ],\n    showGroup: Em.computed(function () {\n        return this.get('Collector').formExists('group');\n    }),\n    showEmployer: Em.computed(function () {\n        return this.get('Collector').formExists('employer');\n    }),\n    actions: {\n        catchActions: function (action, params) {\n            return this.send(action, params);\n        },\n        changeTab: function (tab) {\n            return this.set('tab', tab);\n        },\n        removeRow: function (user) {\n            var userObject;\n            if (this.get('selected_users_arr.arrangedContent')) {\n                userObject = this.get('selected_users_arr.arrangedContent').findBy('id', user.id);\n                return this.get('selected_users_arr.arrangedContent').removeObject(userObject);\n            } else {\n                return this.get('selected_users_arr').removeObject(user);\n            }\n        },\n        addUserToList: function (user) {\n            return this.get('selected_users_arr').addObject(user);\n        },\n        addUsersToList: function (users) {\n            if (this.get('selected_users_arr.arrangedContent')) {\n                return users.arrangedContent.forEach((user) => {\n                    return this.get('selected_users_arr.arrangedContent').addObject(user);\n                });\n            } else {\n                return this.get('selected_users_arr').addObjects(users);\n            }\n        },\n        sendToAll: function () {\n            this.set('selected_users_arr', Em.A([]));\n            return this.transitionToRoute('messages.add.message');\n        },\n        clearReceivers: function () {\n            return this.set('selected_users_arr', Em.A([]));\n        },\n        searchChanged: function (value) {\n            if (typeof value === 'object') {\n            } else {\n                return this.set('q', value);\n            }\n        },\n    },\n});\n\nexport default MessagesAddIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/messages/add/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MessagesAddRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nMessagesAddRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    queryParams: {\n        q: {\n            refreshModel: true,\n        },\n    },\n});\n\nexport default MessagesAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"iY9Y2btK\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"messages.add.title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendToAll\\\"]],[8],[1,[28,\\\"t\\\",[\\\"message.add.to_all_users\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"messages.add.or\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.select_users_by\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"nav nav-tabs nav-justified\\\"],[8],[0,\\\"\\\\n            \\\"],[4,\\\"if\\\",[[24,[\\\"showEmployer\\\"]]],null,{\\\"statements\\\":[[7,\\\"li\\\",true],[10,\\\"role\\\",\\\"presentation\\\"],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"tab\\\"]],\\\"employer\\\"],null],\\\"active\\\"],null]]]],[8],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"changeTab\\\",\\\"employer\\\"]],[8],[1,[28,\\\"t\\\",[\\\"messages.add.by_employer\\\"],null],false],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[4,\\\"if\\\",[[24,[\\\"showGroup\\\"]]],null,{\\\"statements\\\":[[7,\\\"li\\\",true],[10,\\\"role\\\",\\\"presentation\\\"],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"tab\\\"]],\\\"group\\\"],null],\\\"active\\\"],null]]]],[8],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"changeTab\\\",\\\"group\\\"]],[8],[1,[28,\\\"t\\\",[\\\"messages.add.by_group\\\"],null],false],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"role\\\",\\\"presentation\\\"],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"tab\\\"]],\\\"role\\\"],null],\\\"active\\\"],null]]]],[8],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"changeTab\\\",\\\"role\\\"]],[8],[1,[28,\\\"t\\\",[\\\"messages.add.by_role\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"role\\\",\\\"presentation\\\"],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"tab\\\"]],\\\"users\\\"],null],\\\"active\\\"],null]]]],[8],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"changeTab\\\",\\\"users\\\"]],[8],[1,[28,\\\"t\\\",[\\\"messages.add.search_users\\\"],null],false],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-messages-add\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"employer\\\",[24,[\\\"tab\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"select-comp\\\",null,[[\\\"content\\\",\\\"promptTranslation\\\",\\\"value\\\",\\\"form\\\",\\\"field\\\",\\\"classes\\\",\\\"disabled\\\",\\\"relation\\\"],[[24,[\\\"employers\\\"]],\\\"general.select_choose\\\",[24,[\\\"selected_employer\\\"]],\\\"user\\\",\\\"employer\\\",\\\"form-control\\\",[24,[\\\"disabled\\\"]],true]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[1,[22,\\\"message_employer\\\"],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"group\\\",[24,[\\\"tab\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"select-comp\\\",null,[[\\\"content\\\",\\\"promptTranslation\\\",\\\"value\\\",\\\"form\\\",\\\"field\\\",\\\"classes\\\",\\\"disabled\\\",\\\"relation\\\"],[[24,[\\\"groups\\\"]],\\\"general.select_choose\\\",[24,[\\\"selected_group\\\"]],\\\"user\\\",\\\"group\\\",\\\"form-control\\\",[24,[\\\"disabled\\\"]],true]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"role\\\",[24,[\\\"tab\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"prompt\\\"],[[24,[\\\"roles\\\"]],\\\"form-control\\\",[24,[\\\"selected_role\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"users\\\",[24,[\\\"tab\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"searchbox-messages-add flex-filter-field input-group report-more report-filter-component\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"search-box\\\",null,[[\\\"value\\\",\\\"change\\\",\\\"classes\\\"],[[24,[\\\"value\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"searchChanged\\\"],null],\\\"form-control add-field\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"q\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"users\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"t\\\",[\\\"report.no_rows\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"order\\\"],[[24,[\\\"showColumnsUsersearch\\\"]],[24,[\\\"translated_columns_userSearch\\\"]],[24,[\\\"users\\\"]],[24,[\\\"rowActionsUsersearch\\\"]],\\\"catchActions\\\",\\\"lastname\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[1,[28,\\\"if\\\",[[24,[\\\"selected_users_arr\\\"]],[24,[\\\"selected_users_arr\\\",\\\"length\\\"]],\\\"0\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.users_selected\\\"],null],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selected_users_arr\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"selected_employer_count\\\"]]],null,{\\\"statements\\\":[[0,\\\"                , \\\"],[1,[22,\\\"selected_employer_count\\\"],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.employers_selected\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"report-row-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clearReceivers\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Delete\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selected_users_arr\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"order\\\",\\\"checkable\\\"],[[24,[\\\"showColumns\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"selected_users_arr_formated\\\"]],[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",[24,[\\\"order\\\"]],false]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"messages.add.message\\\"]],{\\\"statements\\\":[[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.next\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/messages/add/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/messages/add/message/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MessagesAddMessageController;\n\nimport Ember from 'ember';\n\nimport config from '../../../../config/environment';\n\nimport { gt } from '@ember/object/computed';\n\nimport { sanitize } from 'dom-purify';\n\nMessagesAddMessageController = Ember.Controller.extend({\n    addIndexController: Ember.inject.controller('messages/add/index'),\n    ttapi: Ember.inject.service(),\n    session: Ember.inject.service(),\n    users_without_phone: Em.A([]),\n    users_without_email: Em.A([]),\n    //get receivers user ids to own array\n    receivers: Em.computed('addIndexController.selected_users_arr.[]', function () {\n        var recobj;\n        recobj = this.get('addIndexController.selected_users_arr');\n        //get all users if none selected\n        if (\n            (Em.isEmpty(recobj) || recobj.length === 0) &&\n            !this.get('header') &&\n            !this.get('message')\n        ) {\n            return this.get('store')\n                .query('user', {\n                    limit: 'all',\n                })\n                .then((users) => {\n                    this.set('addIndexController.selected_users_arr', users);\n                    return this.parseReceivers(users);\n                });\n        } else {\n            return this.parseReceivers(recobj);\n        }\n    }),\n    parseReceivers: function (recobj) {\n        var recArr;\n        recArr = [];\n        this.set('users_without_phone', Em.A([]));\n        this.set('users_without_email', Em.A([]));\n        recobj.forEach((receiver) => {\n            //if send sms set and someones doesnt have phone\n            if (!receiver.get('phone')) {\n                this.get('users_without_phone').push(receiver);\n            }\n            //same thing for email\n            if (!receiver.get('email')) {\n                this.get('users_without_email').push(receiver);\n            }\n            return recArr.push(receiver.id);\n        });\n        return recArr;\n    },\n    message_length: Em.computed('header', 'message', 'send_sms', function () {\n        var chars, length;\n        if (!this.get('send_sms')) {\n            return;\n        }\n        chars = 3; //sms message format is like \"title - rest_of_the_message\"\n        if (this.get('header')) {\n            chars += parseInt(this.get('header.length'));\n        }\n        if (this.get('message')) {\n            chars += parseInt(this.get('message.length'));\n        }\n        length = Math.ceil(chars / 160);\n        return length;\n    }),\n    multiple_sms: gt('message_length', 1),\n    fillData: function () {\n        var addController;\n        addController = this.get('addIndexController');\n        this.set('selected_users_arr', addController.selected_users_arr);\n        this.set('header', addController.header);\n        this.set('message', addController.message);\n        this.set('send_sms', addController.send_sms);\n        this.set('send_email', addController.send_email);\n        return this.set('sticky_message', addController.sticky_message);\n    },\n    //called from routes resetController hook\n    resetData: function () {\n        this.set('addIndexController.selected_users_arr', Em.A([]));\n        this.set('addIndexController.tab', '');\n        this.set('addIndexController.selected_employer', '');\n        this.set('addIndexController.selected_project', '');\n        this.set('addIndexController.selected_group', '');\n        this.set('addIndexController.selected_role', '');\n        this.set('addIndexController.q', '');\n        this.set('addIndexController.header', '');\n        this.set('addIndexController.message', '');\n        this.set('addIndexController.send_sms', '');\n        this.set('addIndexController.send_email', '');\n        return this.set('addIndexController.sticky_message', '');\n    },\n    actions: {\n        save: function () {\n            var params, self;\n            self = this;\n            params = {};\n            params.brand = config.brand;\n            params.receivers = this.get('receivers');\n            params.header = sanitize(this.get('header'));\n            if (this.get('message')) {\n                //if this is null, message opening screen gets stuck\n                params.message = sanitize(this.get('message'));\n            } else {\n                params.message = '';\n            }\n            params.send_sms = this.get('send_sms');\n            params.send_email = this.get('send_email');\n            params.sticky_message = this.get('sticky_message');\n            params.creator_name =\n                this.get('session.currentUser.firstname') +\n                ' ' +\n                this.get('session.currentUser.lastname');\n            return this.get('ttapi')\n                .request('/messages/new_message', {\n                    type: 'POST',\n                    data: params,\n                })\n                .then((data) => {\n                    self.set('spinIsLoading', false);\n                    self.set('disabled', false);\n                    return self.transitionToRoute('messages.list');\n                });\n        },\n        cancel: function () {\n            this.set('spinIsLoading', false);\n            this.set('disabled', false);\n            return this.transitionToRoute('messages.list');\n        },\n    },\n});\n\nexport default MessagesAddMessageController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/messages/add/message/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MessagesAddMessageRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nMessagesAddMessageRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    setupController: function (controller) {\n        return controller.fillData();\n    },\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting && transition.targetName === 'messages.list') {\n            return controller.resetData();\n        }\n    },\n});\n\nexport default MessagesAddMessageRoute;\n","export default Ember.HTMLBars.template({\"id\":\"gq2jRLtg\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\",\\\"user\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"messages.add.write_message_title\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-check\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"receivers\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[24,[\\\"receivers\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.users_selected\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.no_users_selected\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-xs\\\",\\\"messages.add.index\\\"]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-left\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.edit_receivers\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"messages.add.send_also\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[11,\\\"class\\\",[29,[\\\"btn btn-\\\",[28,\\\"if\\\",[[24,[\\\"send_sms\\\"]],\\\"primary\\\",\\\"default\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"send_sms\\\",[24,[\\\"send_sms\\\"]]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.send_also_sms\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[11,\\\"class\\\",[29,[\\\"btn btn-\\\",[28,\\\"if\\\",[[24,[\\\"send_email\\\"]],\\\"primary\\\",\\\"default\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"send_email\\\",[24,[\\\"send_email\\\"]]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.send_also_email\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"send_sms\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"users_without_phone\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"messages.add.users_without_phone\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"users_without_phone\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[23,2,[\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"firstname\\\"]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"send_email\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"users_without_email\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"messages.add.users_without_email\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"users_without_email\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[23,1,[\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"firstname\\\"]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"label\\\",true],[11,\\\"class\\\",[29,[\\\"btn btn-\\\",[28,\\\"if\\\",[[24,[\\\"sticky_message\\\"]],\\\"primary\\\",\\\"default\\\"],null]]]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"sticky_message\\\",[24,[\\\"sticky_message\\\"]]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.sticky_message\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"messages.add.header\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"message_header\\\",\\\"\\\",[24,[\\\"header\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"messages.add.message\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\"],[\\\"3\\\",\\\"form-control add-fields\\\",\\\"message_content\\\",\\\"\\\",[24,[\\\"message\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"message_length\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"multiple_sms\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[1,[28,\\\"t\\\",[\\\"messages.add.sms_count\\\"],null],false],[0,\\\": \\\"],[1,[22,\\\"message_length\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"messages.add.sms_count\\\"],null],false],[0,\\\": \\\"],[1,[22,\\\"message_length\\\"],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"messages.add.multiple_sms_warning\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\",\\\"savingText\\\"],[[24,[\\\"spinIsLoading\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[28,\\\"t\\\",[\\\"general.send\\\"],null],[28,\\\"t\\\",[\\\"general.sending\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/messages/add/message/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/messages/email-approvals/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MessagesEmailApprovalsController;\n\nimport Ember from 'ember';\n\nMessagesEmailApprovalsController = Ember.Controller.extend({\n    queryParams: ['created_date'],\n    show_columns: 'created_date,created_time,form,email,row_count,approved,comment,report',\n    order: 'created_date-,created_time-',\n    created_date: null,\n    rowActions: [\n        {\n            action: 'rowHistory',\n            icon: 'move move-Search',\n        },\n    ],\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'created_date',\n                type: 'date',\n                form: 'email_approval',\n                name: 'created_date',\n            }),\n        ]);\n    }),\n    mappedFilters: Em.computed('filters.@each.value', function () {\n        return this.get('filters').map(function (filter) {\n            return {\n                name: filter.get('field'),\n                value: filter.get('value'),\n            };\n        });\n    }),\n    actions: {\n        filterChanged: function (value, fieldName) {\n            if (value == null) {\n                return this.set('created_date', '');\n            } else {\n                return this.set('created_date', value);\n            }\n        },\n    },\n});\n\nexport default MessagesEmailApprovalsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/messages/email-approvals/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MessagesEmailApprovalsRoute;\n\nimport Ember from 'ember';\n\nMessagesEmailApprovalsRoute = Ember.Route.extend();\n\nexport default MessagesEmailApprovalsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"bWOB7nCW\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"email_approval\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"rowActions\\\",\\\"order\\\",\\\"settings\\\",\\\"show_columns\\\",\\\"form\\\",\\\"query\\\"],[[24,[\\\"rowActions\\\"]],[24,[\\\"order\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"show_columns\\\"]],\\\"email_approval\\\",[24,[\\\"mappedFilters\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/messages/email-approvals/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/messages/list/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MessagesListController;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nimport { htmlSafe } from '@ember/string';\n\nimport { sanitize } from 'dom-purify';\n\nMessagesListController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    appCtrl: Ember.inject.controller('application'),\n    addIndexController: Ember.inject.controller('messages/add/index'),\n    columns: ['created', 'header', 'content', 'creator_name', 'read_status'],\n    queryParams: ['page'],\n    popupArr: Em.A([]),\n    showRemoved: false,\n    hideSort: true,\n    offset: 0,\n    limit: 25,\n    page: 1,\n    pages: Em.computed('model', function () {\n        return Math.ceil(this.get('model.count') / this.get('limit'));\n    }),\n    data: Em.computed('model.messages.[]', 'popupArr.[]', function () {\n        var columns, data, formatted_data;\n        data = this.get('model.messages');\n        if (!data) {\n            return null;\n        }\n        columns = this.get('columns');\n        formatted_data = Em.A([]);\n        data.forEach((unformatted_row) => {\n            var row;\n            row = Ember.Object.create();\n            if (unformatted_row.id) {\n                row.id = unformatted_row.id;\n            }\n            //            if !unformatted_row.read\n            //                row.class = \"warning\"\n\n            //            if unformatted_row.row_info.status == \"removed\"\n            //                row.class = \"danger\"\n            if (unformatted_row.sticky == 1) {\n                row.class = 'info';\n            }\n            $.each(columns, (key, column) => {\n                var cell, userlevel;\n                cell = sanitize(unformatted_row[column]);\n                if (column === 'created') {\n                    cell = moment(cell).format('L');\n                }\n                if (column === 'read_status') {\n                    cell = unformatted_row.read_count + ' / ' + unformatted_row.receiver_count;\n                    if (unformatted_row.read_count / unformatted_row.receiver_count === 1) {\n                        cell = new htmlSafe(\n                            '<span class=\"label-m label-m-approved\" title=\"ok\"><span class=\"glyphicon glyphicon-ok\"></span></span>',\n                        );\n                    }\n                    userlevel = this.get('session.currentUser.userlevel');\n                    if (userlevel !== '5' && userlevel !== '6') {\n                        if (\n                            unformatted_row.read_count === '0' &&\n                            unformatted_row.receiver_count === '1'\n                        ) {\n                            cell = new htmlSafe('');\n                        }\n                    }\n                }\n                if (cell && cell.length > 50) {\n                    cell = cell.substring(0, 50) + '...';\n                }\n                return (row[column] = new htmlSafe(cell));\n            });\n            return formatted_data.pushObjects([row]);\n        });\n        return formatted_data;\n    }),\n    rowActions: Em.computed(function () {\n        var arr, userlevel;\n        userlevel = this.get('session.currentUser.userlevel');\n        if (userlevel === '5') {\n            return (arr = [\n                {\n                    action: 'copyRow',\n                    icon: 'move move-CopyRow',\n                    text: this.get('intl').t('timetracker.calendar.copy'),\n                },\n                {\n                    action: 'removeRow',\n                    icon: 'move move-Delete',\n                    text: this.get('intl').t('report.delete_rows'),\n                },\n            ]);\n        } else if (userlevel !== '1') {\n            return (arr = [\n                {\n                    action: 'copyRow',\n                    icon: 'move move-CopyRow',\n                    text: this.get('intl').t('timetracker.calendar.copy'),\n                },\n            ]);\n        }\n    }),\n    // get translation for every column\n    translated_columns: Ember.computed('columns', function () {\n        var c, columns, intl, translated_columns;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        columns = this.get('columns');\n        translated_columns = [];\n        $.each(columns, (key, item) => {\n            return translated_columns.push(intl.t('report.messages.' + item));\n        });\n        return translated_columns;\n    }),\n    removeMessage: function (id) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return this.get('ttapi')\n                .request('/messages/' + id, {\n                    type: 'DELETE',\n                })\n                .then((data) => {\n                    return resolve(data);\n                })\n                .catch((reason) => {\n                    var error_obj;\n                    error_obj = {};\n                    error_obj.responseText = reason.responseJSON.error;\n                    error_obj.status = reason.status;\n                    error_obj.statusText = reason.responseJSON.error_description;\n                    Tt4.set('last_error', error_obj);\n                    return reject(reason);\n                });\n        });\n    },\n    editMessage: function (id) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return this.get('ttapi')\n                .request('/messages/' + id, {\n                    type: 'PUT',\n                })\n                .then((data) => {\n                    return resolve(data);\n                })\n                .catch((reason) => {\n                    var error_obj;\n                    error_obj = {};\n                    error_obj.status = reason.status;\n                    Tt4.set('last_error', error_obj);\n                    return reject(reason);\n                });\n        });\n    },\n    autoFillData: function (message) {\n        var promise, ref, ref1, ref2;\n        promise = this.get('Collector').ttapi({\n            method: 'get',\n            url: 'messages/receivers/' + message.id,\n        });\n        promise.then((data) => {\n            var receivers;\n            if (data.receivers) {\n                receivers = data.receivers.mapBy('user');\n                return this.store\n                    .query('user', {\n                        limit: 'all',\n                        id: receivers.join(','),\n                    })\n                    .then((users) => {\n                        return this.send('addUsersToList', users);\n                    });\n            }\n        });\n        this.set('addIndexController.header', message.header);\n        this.set('addIndexController.message', message.content);\n        this.set(\n            'addIndexController.send_sms',\n            (ref = message.sms_sent === '1') != null\n                ? ref\n                : {\n                      true: false,\n                  },\n        );\n        this.set(\n            'addIndexController.send_email',\n            (ref1 = message.email_sent === '1') != null\n                ? ref1\n                : {\n                      true: false,\n                  },\n        );\n        return this.set(\n            'addIndexController.sticky_message',\n            (ref2 = message.sticky == 1) != null\n                ? ref2\n                : {\n                      true: false,\n                  },\n        );\n    },\n    actions: {\n        catchActions: function (action, params) {\n            return this.send(action, params);\n        },\n        closeModal: function () {\n            this.send('markAsRead');\n            return this.set('currentMessage', null);\n        },\n        removeRow: function (params) {\n            var self;\n            self = this;\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    if (con) {\n                        return this.removeMessage(params.id).then(function () {\n                            var obj;\n                            obj = self.get('model.messages').findBy('id', params.id);\n                            return self.get('model.messages').removeObject(obj);\n                        });\n                    }\n                });\n        },\n        unstick: function (params) {\n            var self;\n            self = this;\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_unstick'))\n                .then((con) => {\n                    if (con) {\n                        return this.editMessage(params.id).then(function () {\n                            var obj;\n                            obj = self.get('model.messages').findBy('id', params.id);\n                            obj.sticky = '0';\n                            self.set('currentMessage', null);\n                            return self.send('refreshModel');\n                        });\n                    }\n                });\n        },\n        addUsersToList: function (users) {\n            return this.set('addIndexController.selected_users_arr', [].addObjects(users));\n        },\n        copyRow: function (params) {\n            var messageData;\n            this.transitionToRoute('/messages/add/message');\n            messageData = this.get('model.messages').findBy('id', params.id);\n            this.autoFillData(messageData);\n        },\n        showRow: function (msg) {\n            var message, promise, userlevel;\n            message = $.extend(true, {}, this.get('model.messages').findBy('id', msg.id)); //make deep copy so message can be re-opened without reloading site\n            //find users who have read and who have not (admin only)\n            userlevel = this.get('session.currentUser.userlevel');\n            message.created = moment.utc(message.created).local().format('LLLL');\n            if (\n                userlevel === '5' ||\n                (userlevel === '6' &&\n                    message['creator_user'] === this.get('session.currentUser.id'))\n            ) {\n                promise = this.get('Collector').ttapi({\n                    method: 'get',\n                    url: 'messages/receivers/' + msg.id,\n                });\n                return promise.then((data) => {\n                    var i, len, receivers, ref, row, userids, users_notread, users_read;\n                    if (data.receivers) {\n                        receivers = data.receivers;\n                        userids = [];\n                        ref = data.receivers;\n                        for (i = 0, len = ref.length; i < len; i++) {\n                            row = ref[i];\n                            userids.push(row.user);\n                        }\n                        users_read = Em.A([]);\n                        users_notread = Em.A([]);\n                        return this.store\n                            .query('user', {\n                                id: userids.join(','),\n                                order: 'lastname',\n                                limit: 'all',\n                            })\n                            .then((users) => {\n                                users.forEach((user) => {\n                                    const receiver_row = receivers.findBy(\n                                        'user',\n                                        parseInt(user.id),\n                                    );\n                                    user.set('readstatus', receiver_row.status);\n                                    if (receiver_row.status === 'new') {\n                                        return users_notread.pushObject(user);\n                                    } else {\n                                        return users_read.pushObject(user);\n                                    }\n                                });\n                                message.users_read = users_read;\n                                message.users_notread = users_notread;\n                                return this.set('currentMessage', message);\n                            });\n                    }\n                });\n            } else {\n                return this.set('currentMessage', message);\n            }\n        },\n        //            @set \"currentMessage\", message\n        markAsRead: function () {\n            var promise;\n            if (Em.isNone(this.get('currentMessage'))) {\n                return;\n            }\n            //do not mark as read when impersonating\n            if (this.get('appCtrl.impersonate')) {\n                this.set('currentMessage', null);\n                return;\n            }\n            //mark as read\n            promise = this.get('Collector').ttapi({\n                method: 'post',\n                url: 'messages/markasread/' + this.get('currentMessage.id'),\n            });\n            return promise.then((back) => {\n                //remove currentmessage\n                this.set('currentMessage', null);\n                return console.log('removed');\n            });\n        },\n    },\n});\n\nexport default MessagesListController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/messages/list/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MessagesListRoute;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nMessagesListRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    ttapi: Ember.inject.service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n    },\n    limit: 25,\n    model: function (params) {\n        var offset, page, url;\n        page = params.page;\n        offset = (page - 1) * this.get('limit');\n        url = '/messages/all';\n        url += '?limit=' + this.get('limit') + '&offset=' + offset;\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return this.get('ttapi')\n                .request(url, {\n                    type: 'GET',\n                })\n                .then((data) => {\n                    return resolve(data);\n                })\n                .catch(reject);\n        });\n    },\n    actions: {\n        refreshModel: function () {\n            return this.refresh();\n        },\n    },\n});\n\nexport default MessagesListRoute;\n","export default Ember.HTMLBars.template({\"id\":\"t60FglFd\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"order\\\",\\\"rowAction\\\",\\\"noRowsText\\\",\\\"hideSort\\\"],[[24,[\\\"columns\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"data\\\"]],[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",[24,[\\\"order\\\"]],\\\"showRow\\\",[28,\\\"t\\\",[\\\"report.no_rows\\\"],null],[24,[\\\"hideSort\\\"]]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pages\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentMessage\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"currentMessage\\\",\\\"header\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"currentMessage\\\",\\\"sticky\\\"]],\\\"1\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],\\\"5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-warning\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"unstick\\\",[24,[\\\"currentMessage\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"unstick_row\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"message-date-header\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[24,[\\\"currentMessage\\\",\\\"created\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"currentMessage\\\"]],\\\"creator_name\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                - \\\"],[7,\\\"i\\\",true],[8],[1,[28,\\\"get\\\",[[24,[\\\"currentMessage\\\"]],\\\"creator_name\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"mess-ages/types/messageboard\\\",null,[[\\\"message\\\"],[[24,[\\\"currentMessage\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/messages/list/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/messages/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MessagesRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nMessagesRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default MessagesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"fSEtyYWx\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/multitask/loading/template.hbs\"}});","import { set } from '@ember/object';\nimport { typeOf } from '@ember/utils';\nimport GeneralReportController from '../../../controllers/general-report';\n\n// eslint-disable-next-line ember/alias-model-in-controller\nexport default GeneralReportController.extend({\n    actions: {\n        filterChangeAction(value, field) {\n            if (typeOf(value) === 'object' || typeOf(value) === 'instance') {\n                return set(this, field, value.id);\n            } else {\n                return set(this, field, value);\n            }\n        },\n    },\n\n    date:\n        moment().startOf('isoweek').subtract(1, 'week').format('YYYY-MM-DD') +\n        '_' +\n        moment().format('YYYY-MM-DD'),\n});\n","import { set } from '@ember/object';\nimport GeneralReportRoute from '../../../routes/general-report';\n\nconst MateriallogReportRoute = GeneralReportRoute.extend({\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        taskname: {\n            refreshModel: true,\n        },\n    },\n    form: 'multitask',\n\n    model(params) {\n        if (params.page) {\n            delete params.page;\n        }\n        return set(this.controllerFor('multitask.report'), 'qParams', params);\n    },\n});\n\nexport default MateriallogReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"K/Te03Ln\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[0,\\\" \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"multitask\\\",[22,\\\"qParams\\\"],\\\"date,project,user,q,groupBy\\\",[28,\\\"hash\\\",null,[[\\\"date\\\",\\\"order\\\"],[[24,[\\\"date\\\"]],\\\"date-\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/multitask/report/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nexport default Route.extend(AuthenticatedRouteMixin);\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/my-sites/add-image-component/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MySitesAddImageComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport { resizeImage } from 'tt4/utils/file-util';\n\nimport $ from 'jquery';\n\nMySitesAddImageComponent = Ember.Component.extend({\n    tagName: 'span',\n    store: Ember.inject.service(),\n    project_image_observer: Em.observer('file', function () {\n        var project, projectImage;\n        project = this.get('project');\n        projectImage = this.get('file');\n        return this.get('store')\n            .findRecord('project', project.id)\n            .then((record) => {\n                var images;\n                images = record.get('image');\n                //do not delete old images if there are already multiple images\n                if (images.length > 1) {\n                    //put new image as default (first in array)\n                    images.unshiftObject(projectImage[0]);\n                    projectImage = images;\n                }\n                if (projectImage === null) {\n                    record.set('image', '');\n                } else {\n                    record.set('image', projectImage);\n                }\n                return record.save().then(() => {\n                    if (this.get('updateImage')) {\n                        return this.updateImage();\n                    }\n                });\n            });\n    }),\n    data: Em.A([]),\n    change: function (e) {\n        var file, i, len, ref, results, self;\n        self = this;\n        this.set('data', Em.A([]));\n        ref = e.target.files;\n        results = [];\n        for (i = 0, len = ref.length; i < len; i++) {\n            file = ref[i];\n            results.push(self.readFile(file));\n        }\n        return results;\n    },\n    readFile: function (file) {\n        var acceptedTypes, file_data, reader, ref, self;\n        self = this;\n        acceptedTypes = ['image/gif', 'image/png', 'image/jpg', 'image/jpeg'];\n        this.set('error', null);\n        if (((ref = file.type), indexOf.call(acceptedTypes, ref) >= 0)) {\n            file_data = {};\n            file_data.name = file.name;\n            return resizeImage(file, 960, 960, 80).then((resized) => {\n                file_data.file = resized;\n                return resizeImage(resized, 200, 200, 80).then((ersized) => {\n                    var data;\n                    file_data.preview = resized;\n                    data = self.get(data);\n                    data.pushObject(file_data);\n                    return self.set('file', data);\n                });\n            });\n        } else {\n            reader = new FileReader();\n            reader.onloadend = function (e) {\n                var api_format, dataURL, parse_file;\n                dataURL = e.target.result;\n                parse_file = dataURL.split(',');\n                api_format = {\n                    data: parse_file[1],\n                    name: file.name,\n                };\n                return self.set('file', api_format);\n            };\n            return reader.readAsDataURL(file);\n        }\n    },\n    actions: {\n        addFile: function () {\n            return $(this.get('element')).find('.file_input').click();\n        },\n    },\n});\n\nexport default MySitesAddImageComponent;\n","export default Ember.HTMLBars.template({\"id\":\"E6KVBet5\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"input\\\",true],[10,\\\"class\\\",\\\"hide file_input\\\"],[11,\\\"value\\\",[22,\\\"value\\\"]],[10,\\\"type\\\",\\\"file\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link mysites-btn-delete\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addFile\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-camera\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/my-sites/add-image-component/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/my-sites/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MySitesController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nMySitesController = Ember.Controller.extend({\n    queryParams: ['site', 'project'],\n    session: Ember.inject.service(),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    google: Ember.inject.service(),\n    mySites: Ember.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    tools: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    gps: Em.inject.service('gps'),\n    wtService: Em.inject.service(),\n    cdn: Em.inject.service(),\n    error: Em.inject.service(),\n    project: '',\n    projects: Ember.computed(function () {\n        var c;\n        c = this.get('Collector');\n        if (c.testNeedsOne('presence') && !c.testNeedsOne('worktime')) {\n            return this.store.query('project', {\n                sideload: true,\n                presence_project: 'on',\n            });\n        } else {\n            return this.store.query('project', {\n                sideload: true,\n            });\n        }\n    }),\n    showAddSiteButton: Em.computed.gt('session.currentUser.services.linkings.length', 0),\n    serviceList: Em.computed('session.currentUser.services.linkings', function () {\n        return this.get('session.currentUser.services.linkings').map(function (item) {\n            return {\n                id: item.username,\n                name: item.company + ' - ' + item.username,\n                company: item.company,\n                partnerid: item.partnerid,\n            };\n        });\n    }),\n    currentService: Em.computed.alias('session.currentUser.username'),\n    selectProjectField: Em.computed(function () {\n        var c, field;\n        c = this.get('Collector');\n        if (c.fieldExists('worktime', 'project')) {\n            field = c.field('worktime', 'project');\n        } else if (c.fieldExists('presence', 'project')) {\n            field = c.field('presence', 'project');\n        } else if (c.fieldExists('orientation', 'ori_site')) {\n            field = c.field('orientation', 'ori_site');\n        } else if (c.fieldExists('tr', 'project')) {\n            field = c.field('tr', 'project');\n        } else if (c.fieldExists('mvr', 'project')) {\n            field = c.field('mvr', 'project');\n        } else {\n            return null;\n        }\n        return field;\n    }),\n    selectProject: Em.computed('selectProjectField', function () {\n        var field;\n        field = this.get('selectProjectField');\n        if (field) {\n            field.prompt = 'my-sites.add_site';\n            field.skipForcedGPS = true;\n        }\n        return field;\n    }),\n    isMySitesStored: false,\n    /*isMySitesStored_observer: Em.observer 'model.[]', ->\n          self = @\n          storageData = JSON.parse(localStorage.getItem(@get('localStorageId') ))\n          if storageData\n              @set 'isMySitesStored', true\n          else\n              @set 'isMySitesStored', false\n\n          self.set \"showGpsButton\", false\n          #check if projects has gps locations\n          $.each @get(\"model\"), (key, item) =>\n              if item.get(\"location_map\")\n                  self.set \"showGpsButton\", true\n   */\n    showGpsButton: false,\n    setNumberOfWorkersAtProjects: function (projects) {\n        var params, promise;\n        params = Em.Object.create({\n            sideload: true,\n            endtime: '(empty)',\n        });\n        promise = this.store.query('worktime', params);\n        return promise.then(function (worktimes) {\n            var tmp_dict;\n            tmp_dict = [];\n            projects.forEach(function (project) {\n                return project.set('active_workers', 0);\n            });\n            worktimes.forEach(function (item) {\n                var count;\n                if (tmp_dict.hasOwnProperty(item.get('project.id'))) {\n                    count = tmp_dict.get(item.get('project.id')) + 1;\n                    return (tmp_dict[item.get('project.id')] = count);\n                } else {\n                    return (tmp_dict[item.get('project.id')] = 1);\n                }\n            });\n            return tmp_dict.forEach(function (value, projectId) {\n                return projects.forEach(function (project) {\n                    if (project.get('id').toString() === projectId.toString()) {\n                        return project.set('active_workers', value);\n                    }\n                });\n            });\n        });\n    },\n    project_ids_observer: Em.observer('model.[]', 'session.currentUser', function () {\n        if (!this.get('session.currentUser')) {\n            return;\n        }\n        if (this.get('model.length') === 0) {\n            return;\n        }\n        return this.updateSites().then(() => {\n            return this.saveMySitesToLocalStorage();\n        });\n    }),\n    // If model contains sites that have not all the information fetch it now\n    updateSites: function () {\n        var store;\n        store = this.get('store');\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promises, sites;\n            sites = this.get('model');\n            promises = [];\n            sites.forEach((site) => {\n                var promise;\n                if (!site.partnerid || site.partnerid === 'NaN') {\n                    site.partnerid = this.get('session.currentUser.partnerid');\n                }\n                if ('name' in site) {\n                    return;\n                }\n                promise = store.findRecord('project', site.id);\n                promises.push(promise);\n                return promise.then(\n                    (project) => {\n                        return this.get('mySites').getMySiteObject(project, site);\n                    },\n                    (reason) => {},\n                );\n            });\n            // this should never happen\n            if (promises.length === 0) {\n                return resolve();\n            } else {\n                return Em.RSVP.Promise.all(promises).then(() => {\n                    return resolve();\n                });\n            }\n        });\n    },\n    /*\n  loadMySitesFromLocalStorage: Ember.on 'init', Ember.observer 'session.currentUser','refresh', ->\n      return if not @get 'session.currentUser'\n      mySites = @get('mySites').loadFromLocalStorage()\n\n      if @get('site')\n          @setCurrentMySite {id: @get('site')}\n\n      if mySites.length < 1\n          @loadEverythingToMySites()\n      else\n          @addOwnedProjectsToMySites()\n\n  */\n    addOwnedProjectsToMySites: function () {\n        var c, mySites, promise, userId;\n        if (!this.get('session.currentUser')) {\n            return;\n        }\n        c = this.get('Collector');\n        if (!c.fieldExists('project', 'owner')) {\n            return;\n        }\n        mySites = this.get('model');\n        if (!mySites) {\n            return;\n        }\n        userId = this.get('session.currentUser.id');\n        promise = this.store.query('project', {\n            owner: userId,\n            sideload: true,\n        });\n        return promise.then((projects) => {\n            var add_these;\n            add_these = projects.reject((project) => {\n                return mySites.findBy('id', project.id);\n            });\n            if (add_these.length > 0) {\n                add_these.forEach((project) => {\n                    return mySites.pushObject(this.get('mySites').getMySiteObject(project));\n                });\n                return this.saveMySitesToLocalStorage();\n            }\n        });\n    },\n    loadEverythingToMySites: function () {\n        var promise, userId;\n        promise = this.get('projects');\n        userId = this.get('session.currentUser.id');\n        return promise.then((projects) => {\n            var mySites, tmp_projects;\n            tmp_projects = projects.filter((record) => {\n                if (record.get('owner')) {\n                    return record.get('owner').get('id') === userId;\n                } else {\n                    return false;\n                }\n            });\n            if (tmp_projects.length > 0) {\n                projects = tmp_projects;\n            }\n            mySites = projects.slice(0, 100).map((record) => {\n                return this.get('mySites').getMySiteObject(record);\n            });\n            return this.set('model', Em.A(mySites));\n        });\n    },\n    saveMySitesToLocalStorage: function () {\n        return this.get('mySites').saveToLocalStorage(\n            this.get('model').sortBy('used').reverse().slice(0, 100),\n        );\n    },\n    changeService: function (site) {\n        var partnerid, ret, service;\n        Em.assert(site.partnerid, 'mySite partnerid not set');\n        partnerid = site.partnerid;\n        service = Em.A(this.get('session.currentUser.services.linkings')).findBy(\n            'partnerid',\n            '' + partnerid,\n        );\n        ret = confirm(this.get('intl').t('mysites.change_service'));\n        if (ret) {\n            return this.get('tools').change_service(service.username, '#/my-sites?site=' + site.id);\n        }\n    },\n    setCurrentMySite: function (site) {\n        return this.get('wtService')\n            .unlessOpenWt(site)\n            .then(\n                () => {\n                    return this.get('store')\n                        .findRecord('project', site.id)\n                        .then(\n                            (siteRecord) => {\n                                var modelsite;\n                                if (siteRecord.get('row_info.status') === 'removed') {\n                                    this.get('model').removeObject(\n                                        this.get('model').findBy('id', site.id),\n                                    );\n                                    this.saveMySitesToLocalStorage();\n                                    return;\n                                }\n                                modelsite = this.get('model').findBy('id', site.id);\n                                this.get('mySites').getMySiteObject(siteRecord, modelsite);\n                                this.saveMySitesToLocalStorage();\n                                this.get('localStorageWrapper').setUserSetting(\n                                    'currentMySite',\n                                    parseInt(site.id, 10),\n                                );\n                                this.set('session.currentUser.currentMySite', siteRecord);\n                                return this.doTransition(siteRecord);\n                            },\n                            (reason) => {\n                                this.get('model').removeObject(\n                                    this.get('model').findBy('id', site.id),\n                                );\n                                return this.saveMySitesToLocalStorage();\n                            },\n                        );\n                },\n                () => {\n                    this.get('wtService').showOpenWtError();\n                    return this.set('saving', false);\n                },\n            );\n    },\n    doTransition: function (record) {\n        if (\n            record.get('presence_project') &&\n            this.get('Collector').testNeeds(['presence@add', 'userfieldcheck.id06kort'])\n        ) {\n            return this.transitionToRoute('presences.add');\n        } else if (\n            this.get('Collector').testNeeds([\n                'worktime',\n                'products.timetracker_clockcard||worktime.starttime@disabled||products.timetracker_hybrid',\n                'modulecontrol.worktimes',\n            ])\n        ) {\n            if (this.get('Collector').testNeedsOne('flag.clockcard-25')) {\n                return this.transitionToRoute({ queryParams: { modal: 'timecard' } });\n            }\n            return this.transitionToRoute('timetracker.timecard.add');\n        } else if (\n            this.get('Collector').testNeeds([\n                'worktime@add',\n                '!worktime.starttime@disabled',\n                '!products.timetracker_hybrid',\n                'modulecontrol.worktimes',\n            ])\n        ) {\n            return this.transitionToRoute('timetracker.add');\n        } else if (this.get('Collector').testNeeds(['orientation', 'orientation@add'])) {\n            return this.transitionToRoute('orientations.add');\n        } else if (this.get('Collector').testNeeds(['tr', 'tr@add'])) {\n            return this.transitionToRoute('site_safety.measurement.add', 'add', 'tr');\n        } else if (this.get('Collector').testNeeds(['mvr', 'mvr@add'])) {\n            return this.transitionToRoute('site_safety.measurement.add', 'add', 'mvr');\n        } else {\n            return this.get('dialogs').alert(\n                this.get('intl').t('mysites.no_rights_for_this_project'),\n            );\n        }\n    },\n    filteredSites: Em.computed(\n        'model.@each.partnerid',\n        'model',\n        'model.[]',\n        'session.currentUser.services',\n        function () {\n            var partnerids, services, sites;\n            if (!this.get('session.currentUser.services')) {\n                return Em.A();\n            }\n            services = this.get('session.currentUser.services');\n            partnerids = Em.A(services.linkings).map(function (item) {\n                return parseInt(item.partnerid, 10);\n            });\n            partnerids.push(services.partnerid);\n            sites = this.get('model').filter(function (item) {\n                var ref;\n                return (ref = item.partnerid), indexOf.call(partnerids, ref) >= 0;\n            });\n            return sites.sortBy('used').reverse();\n        },\n    ),\n    currentlySelectedProjectForAddingMysite: null,\n    actions: {\n        openOverview: function (site) {\n            var c;\n            c = this.get('Collector');\n            if (this.get('session.currentUser.userlevel') === '3' || c.testNeeds(['project@add'])) {\n                return this.get('store')\n                    .findRecord('project', site.id)\n                    .then((siteRecord) => {\n                        this.set('session.currentUser.currentMySite', siteRecord);\n                        this.transitionToRoute('projects.edit.overview', site.id);\n                    });\n            } else {\n                return this.set('projectinfo', site.id);\n            }\n        },\n        openFilesview: function (site) {\n            var c;\n            c = this.get('Collector');\n            if (c.testNeeds(['project@add'])) {\n                return this.transitionToRoute('projects.edit.project-files', site.id);\n            } else {\n                return this.set('projectfiles', site.id);\n            }\n        },\n        removeProjectModal: function () {\n            return this.set('projectinfo', '');\n        },\n        removeFilesModal: function () {\n            return this.set('projectfiles', '');\n        },\n        openAddSiteModalOn: function () {\n            this.set('showAddSiteModal', true);\n            return false;\n        },\n        removeModal: function () {\n            return this.set('showAddSiteModal', false);\n        },\n        addNewSiteFromMySites: function (project) {\n            var mySitesProjects;\n            if (!project) {\n                return;\n            }\n            mySitesProjects = this.get('model');\n            if (!mySitesProjects.findBy('id', project.get('id'))) {\n                return this.get('store')\n                    .query('project', {\n                        id: project.get('id'),\n                        sideload: true,\n                    })\n                    .then((found_projects) => {\n                        var found_project;\n                        found_project = found_projects.get('firstObject');\n                        return mySitesProjects.pushObject(\n                            this.get('mySites').getMySiteObject(found_project),\n                        );\n                    });\n            }\n        },\n        removeSiteFromMySites: function (projectId) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('mysites.confirm_remove'))\n                .then((con) => {\n                    if (con) {\n                        this.get('model').removeObject(projectId);\n                        if (this.get('model.length') === 0) {\n                            return this.get('mySites').removeAllSites();\n                        } else {\n                            return this.saveMySitesToLocalStorage();\n                        }\n                    }\n                });\n        },\n        projectClicked: function (site) {\n            if (site.partnerid !== this.get('session.currentUser.services.partnerid')) {\n                return this.changeService(site);\n            } else {\n                return this.setCurrentMySite(site);\n            }\n        },\n        imageUpdated: function (site_id) {\n            var promise, site, sites, store;\n            store = this.get('store');\n            sites = this.get('model');\n            site = sites.findBy('id', site_id);\n            promise = store.findRecord('project', site_id);\n            return promise.then(\n                (project) => {\n                    return this.get('mySites').getMySiteObject(project, site);\n                },\n                (reason) => {},\n            );\n        },\n        //clearMySites: () ->\n        //    @set 'mySitesProjectIds', Em.A []\n        projectSelected: function (project) {\n            this.set('currentlySelectedProjectForAddingMysite', project);\n            this.set('showAddSiteNowButton', project ? true : false);\n            return false;\n        },\n        addSiteNow: function (service, project) {\n            var promise;\n            promise = this.get('Collector').ttapi({\n                url: 'tunnel/findRow/project/' + project,\n                data: {\n                    username: service,\n                },\n            });\n            promise.then((data) => {\n                var found, mySitesProjects, mysites, newsite;\n                mysites = this.get('mySites');\n                newsite = mysites.getMySiteObject(Em.Object.create(data.project));\n                service = this.get('serviceList').findBy('id', service);\n                Em.set(newsite, 'partnerid', parseInt(service.partnerid, 10));\n                Em.set(newsite, 'company', service.company);\n                //mysites.addSiteObject newsite\n                mySitesProjects = this.get('model');\n                found = mySitesProjects.find(function (item) {\n                    return parseInt(item.id, 10) === newsite.id;\n                });\n                if (!found) {\n                    return mySitesProjects.pushObject(newsite);\n                }\n            });\n            return this.set('showAddSiteModal', false);\n        },\n        addMySite: function (project) {\n            if (project) {\n                return this.send('addNewSiteFromMySites', project);\n            }\n        },\n        openGpsMap: function () {\n            var locs, rows, self;\n            self = this;\n            if (!this.get('showGpsMap')) {\n                locs = [];\n                rows = self.get('model');\n                $.each(this.get('model'), (key, item) => {\n                    var loc;\n                    loc = {};\n                    loc.project = JSON.parse(item.get('location_map'));\n                    return locs.push(loc);\n                });\n                this.set('mapMarkers', locs);\n                return this.set('showGpsMap', true);\n            } else {\n                return self.set('showGpsMap', false);\n            }\n        },\n        updateMySitesPicture: function (record, mysite) {\n            this.get('mySites').getMySiteObject(record, mysite);\n            return this.set('edit_id', null);\n        },\n        toggleEditMode: function (site) {\n            var edit_id;\n            edit_id = this.get('edit_id');\n            if (edit_id === site.id) {\n                return this.set('edit_id', null);\n            } else {\n                return this.set('edit_id', site.id);\n            }\n        },\n        fetchNearest: function () {\n            var project_promise, self;\n            self = this;\n            this.set('project_fetching', true);\n            project_promise = this.get('store').findAll('project', {\n                reload: true,\n            });\n            return project_promise.then((projects) => {\n                var options;\n                options = {\n                    enableHighAccuracy: true,\n                    maximumAge: 5000,\n                };\n                if (navigator.geolocation) {\n                    return navigator.geolocation.getCurrentPosition(\n                        function (location) {\n                            var add_project,\n                                dialog_text,\n                                nearProject,\n                                shortestDist,\n                                shortestProject;\n                            shortestProject = null;\n                            nearProject = null;\n                            shortestDist = null;\n                            projects.forEach(function (project) {\n                                var distance, pres_latlng, proj_latlng, proj_loc;\n                                if (project.get('location_map')) {\n                                    proj_loc = JSON.parse(project.get('location_map'));\n                                    if (proj_loc) {\n                                        proj_latlng = new window.google.maps.LatLng(\n                                            proj_loc.latitude,\n                                            proj_loc.longitude,\n                                        );\n                                        pres_latlng = new window.google.maps.LatLng(\n                                            location.coords.latitude,\n                                            location.coords.longitude,\n                                        );\n                                        distance =\n                                            window.google.maps.geometry.spherical.computeDistanceBetween(\n                                                proj_latlng,\n                                                pres_latlng,\n                                            );\n                                        if (shortestProject === null || shortestDist > distance) {\n                                            shortestProject = project;\n                                            return (shortestDist = distance);\n                                        }\n                                    }\n                                }\n                            });\n                            self.set('project_fetching', false);\n                            add_project = false;\n                            if (shortestProject) {\n                                //find if project already in mysites list\n                                if (self.get('filteredSites').length > 0) {\n                                    if (\n                                        !self\n                                            .get('filteredSites')\n                                            .findBy('id', shortestProject.get('id'))\n                                    ) {\n                                        add_project = true;\n                                    } else {\n                                        add_project = false;\n                                    }\n                                } else {\n                                    add_project = true;\n                                }\n                                if (add_project) {\n                                    dialog_text = self\n                                        .get('intl')\n                                        .t('my-sites.add_project_and_continue', {\n                                            project_name: shortestProject.get('name'),\n                                        });\n                                    return self\n                                        .get('dialogs')\n                                        .confirm(dialog_text)\n                                        .then((con) => {\n                                            if (con) {\n                                                self.send('addNewSiteFromMySites', shortestProject);\n                                                return self.setCurrentMySite(shortestProject);\n                                            }\n                                        });\n                                } else {\n                                    dialog_text = self\n                                        .get('intl')\n                                        .t('my-sites.continue_to_project', {\n                                            project_name: shortestProject.get('name'),\n                                        });\n                                    return self\n                                        .get('dialogs')\n                                        .confirm(dialog_text)\n                                        .then((con) => {\n                                            if (con) {\n                                                return self.setCurrentMySite(shortestProject);\n                                            }\n                                        });\n                                }\n                            } else {\n                                return self\n                                    .get('dialogs')\n                                    .alert(\n                                        self.get('intl').t('my-sites.no_shortest_project_found'),\n                                    );\n                            }\n                        },\n                        (reason) => {\n                            return this.get('error').notify(reason);\n                        },\n                        options,\n                    );\n                }\n            });\n        },\n        removeAll: function () {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('mysites.confirm_remove_all'))\n                .then((con) => {\n                    if (con) {\n                        return this.get('mySites')\n                            .removeAllSites()\n                            .then(() => {\n                                this.set('model', []);\n                                return this.saveMySitesToLocalStorage();\n                            });\n                    }\n                });\n        },\n    },\n});\n\nexport default MySitesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/my-sites/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MySitesRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nMySitesRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    session: Ember.inject.service(),\n    mySites: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    localStorageWrapper: Ember.inject.service(),\n    localStorageId: 'movenium_tt_users_my_sites',\n    model: function (params) {\n        var promise, self;\n        self = this;\n        //get sites from localstorage and update them\n\n        //do not fetch mysites from ttapi/LS when in testing mode\n        if (Ember.testing) {\n            return Em.A([]);\n        }\n        promise = this.getMySites();\n        return promise.then((all_sites) => {\n            var i,\n                len,\n                not_own_sites,\n                own_sites,\n                par,\n                partnerid,\n                projects_from_api,\n                site,\n                updated_own_projects;\n            partnerid = this.get('session.currentUser.partnerid');\n            //get only sites from localstorage where partnerid is same as currentuser partnerid\n            own_sites = Em.A([]);\n            not_own_sites = Em.A([]);\n            for (i = 0, len = all_sites.length; i < len; i++) {\n                site = all_sites[i];\n                if (site.partnerid === partnerid) {\n                    own_sites.push(site);\n                } else {\n                    not_own_sites.push(site);\n                }\n            }\n            // filter broken sites\n            own_sites = own_sites.filter(function (item) {\n                return Ember.get(item, 'id');\n            });\n            //update own sites and return them and other ones\n            if (own_sites.length > 0) {\n                //get own projects\n                par = {};\n                par.id = own_sites.mapBy('id').join(',');\n                if (this.get('Collector').testNeeds(['project.maincontractor'])) {\n                    par.sideload = 'maincontractor.name';\n                }\n                updated_own_projects = Em.A([]);\n                projects_from_api = this.store.query('project', par);\n                return projects_from_api.then(function (projs) {\n                    var sites;\n                    //get each project from api\n                    projs.forEach(function (proj) {\n                        var proj_obj;\n                        proj_obj = self.get('mySites').getMySiteObject(proj);\n                        // ugly hack to get correct used timestamp from original mysite row\n                        if (own_sites.findBy('id', proj.get('id'))) {\n                            Ember.set(\n                                proj_obj,\n                                'used',\n                                moment(\n                                    Ember.get(own_sites.findBy('id', proj.get('id')), 'used'),\n                                ).format('YYYY-MM-DD HH:mm:ss'),\n                            );\n                        }\n                        return updated_own_projects.pushObject(proj_obj);\n                    });\n                    //combine updated own projects and other mysites from localstorage\n                    sites = Em.A([]);\n                    sites.pushObjects(not_own_sites);\n                    sites.pushObjects(updated_own_projects);\n                    return sites;\n                });\n            } else {\n                return all_sites;\n            }\n        });\n    },\n    getMySites: function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var ret, sites;\n            ret = Em.A(this.get('localStorageWrapper').getItemWithBackend('mySites'));\n            if (!sites) {\n                //sites = ret.local # do not fetch localstorage saved projects\n                sites = [];\n            }\n            return ret.backend.then(\n                (more_sites) => {\n                    var found, i, len, site;\n                    for (i = 0, len = more_sites.length; i < len; i++) {\n                        site = more_sites[i];\n                        if (!site) {\n                            continue;\n                        }\n                        found = sites.find(function (item) {\n                            return item.id === site.id;\n                        });\n                        if (!found) {\n                            site.partnerid = parseInt(site.partnerid, 10);\n                            sites.push(site);\n                        }\n                    }\n                    return resolve(sites);\n                },\n                (e) => {\n                    return resolve([]);\n                },\n            );\n        });\n    },\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.addOwnedProjectsToMySites();\n    },\n});\n\n/*\nself = @\nparams.id = @get('mySitesProjects').mapBy('id').join ','\nparams.sideload = true\n\nif params.id == \"\"\n    return Em.A []\n\nunsorted_mySitesProjects = @.store.query('project', params)\n\nsortedMySitesProjects = Em.A []\n\nprojectIds = @get('mySitesProjects')\n\nunsorted_mySitesProjects.then (projects) =>\n    projectIds.forEach (localStoredId) =>\n        projects.forEach (project) ->\n            projectId = project.get('id')\n            if (localStoredId == projectId)\n                sortedMySitesProjects.pushObject(project)\n\n    @setNumberOfWorkersAtProjects(sortedMySitesProjects)\n\nreturn sortedMySitesProjects\n*/\nexport default MySitesRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/my-sites/select-project/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MySitesSelectProjectComponent;\n\nimport Ember from 'ember';\n\nimport databaseField from '../../collector/fields/database-field/component';\n\nMySitesSelectProjectComponent = databaseField.extend({\n    layoutName: 'collector/fields/database-field',\n\n    //   override database-field\n\n    normalDropdownOptions: Em.computed('options', 'defaultValueForNormalDropdown', function () {\n        return this.get('options').map((option) => {\n            Ember.set(option, 'name', option.text);\n            return option;\n        });\n    }),\n    //use_normal_dropdown_limit: 4\n    queryBackend: function (form) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise;\n            promise = this.get('Collector').ttapi({\n                url: 'tunnel/findAll/' + this.get('form'),\n                data: {\n                    field: this.get('object'),\n                    limit: this.get('ajax_search_limit'),\n                    q: this.get('query'),\n                    username: this.get('username'),\n                },\n            });\n            return promise.then((data) => {\n                this.set('queryRowCount', data.count);\n                return resolve(\n                    Em.A(data[form + 's']).map(function (item) {\n                        return Em.Object.create(item);\n                    }),\n                );\n            }, reject);\n        });\n    },\n    getText: function (record) {\n        return record.text;\n    },\n    pushToStore: function () {},\n    addToLastused: function () {},\n    getOptionsFromLocalStorage: function () {\n        return Em.A([]);\n    },\n    fetchRecordById: function (id) {\n        return new Em.RSVP.Promise(function (resolve) {\n            return resolve(id);\n        });\n    },\n    reload: Em.observer('username', function () {\n        return this.initilizeDropdown();\n    }),\n});\n\nexport default MySitesSelectProjectComponent;\n","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed, get, set } from '@ember/object';\n\nexport default Component.extend({\n    session: service(),\n    store: service(),\n    analytics: service(),\n    Collector: service('collector-service'),\n\n    totalPlaceholderImgs: 5,\n    editing: false,\n\n    showEditLink: computed(function () {\n        return get(this, 'Collector').testNeeds(['project@add']);\n    }),\n\n    // if site is from current service and maincontactorname can be found return it\n    // otherwise return companyname of the owner service\n    companyName: computed(function () {\n        if (\n            get(this, 'Collector').testNeeds(['project.maincontractor']) &&\n            get(this, 'mySite.partnerid') == get(this, 'session.currentUser.services.partnerid')\n        ) {\n            const project = get(this, 'store').peekRecord('project', get(this, 'mySite.id'));\n            if (project) {\n                const maincontractor = get(project, 'maincontractor.name');\n                if (maincontractor) return maincontractor;\n            }\n        }\n\n        return get(this, 'mySite.company');\n    }),\n\n    actions: {\n        projectClicked(mySite) {\n            this.analytics.customData = { category: 'my-sites' };\n            this.projectClicked(mySite);\n        },\n\n        updateImage() {\n            this.imageUpdated(get(this, 'mySite.id'));\n            set(this, 'editing', false);\n        },\n\n        removeSiteFromMySites(mySite) {\n            this.removeSiteFromMySites(mySite);\n        },\n\n        openOverview(mySite) {\n            this.openOverview(mySite);\n        },\n\n        openFilesview(mySite) {\n            this.openFilesview(mySite);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"gS8uFFc8\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-4\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-card\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"editing\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 mysites-close\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link mysites-btn-close\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editing\\\"]]],null],false]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cancel\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"h1\\\",true],[10,\\\"class\\\",\\\"my-sites-header\\\"],[8],[1,[24,[\\\"mySite\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"projectClicked\\\",[24,[\\\"mySite\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"mySite\\\",\\\"image\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"editing\\\"]],\\\"image-open\\\",\\\"image\\\"],null]],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[28,\\\"api-image\\\",[[24,[\\\"mySite\\\",\\\"image\\\"]]],null],\\\"')\\\"]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"editing\\\"]],\\\"image-open\\\",\\\"image\\\"],null]],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[28,\\\"random-mysite-image\\\",[[24,[\\\"mySite\\\",\\\"id\\\"]],[24,[\\\"totalPlaceholderImgs\\\"]]],null],\\\"')\\\"]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"unless\\\",[[24,[\\\"editing\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-panel-text\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showEditLink\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h1\\\",true],[8],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"my-sites-project-name\\\",\\\"projects.edit\\\",[24,[\\\"mySite\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[0,\\\" \\\"],[1,[24,[\\\"mySite\\\",\\\"name\\\"]],false],[0,\\\" \\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h1\\\",true],[8],[1,[24,[\\\"mySite\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[7,\\\"p\\\",true],[8],[1,[24,[\\\"mySite\\\",\\\"number\\\"]],false],[0,\\\" - \\\"],[4,\\\"if\\\",[[24,[\\\"companyName\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[22,\\\"companyName\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                         \\\\n                    \\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"mySite\\\",\\\"partnerid\\\"]],[24,[\\\"session\\\",\\\"currentUser\\\",\\\"services\\\",\\\"partnerid\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"editing\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row mysites-float\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"project@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"my-sites/add-image-component\\\",null,[[\\\"project\\\",\\\"updateImage\\\"],[[24,[\\\"mySite\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateImage\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-action mysites-btn-delete\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeSiteFromMySites\\\",[24,[\\\"mySite\\\"]]]],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default pull-left\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openOverview\\\",[24,[\\\"mySite\\\"]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Search\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"submenu.project.overview\\\"],null]],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"projectfile\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default pull-left\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openFilesview\\\",[24,[\\\"mySite\\\"]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-file\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"my-sites.projectfiles\\\"],null]],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default pull-right mysites-float\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editing\\\"]]],null],true]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"general.edit\\\"],null]],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/my-sites/site-card/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"NaOOvJxf\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\",\\\"mySite\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"filteredSites\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"item\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-sites-header-buttons\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"item\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddSiteButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openAddSiteModalOn\\\"]],[8],[1,[28,\\\"t\\\",[\\\"my-sites.add_site\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"change\\\"],[[24,[\\\"selectProject\\\"]],\\\"addMySite\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeAll\\\"]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Delete\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary my-sites-gps-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"fetchNearest\\\"]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project_fetching\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Globe\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"my-sites.fetch_nearest\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showGpsButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openGpsMap\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Globe\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showGpsMap\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"gps-location-map\\\",null,[[\\\"zoomLevel\\\",\\\"projectmarkers\\\"],[5,[24,[\\\"mapMarkers\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"filteredSites\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"my-sites/site-card\\\",null,[[\\\"mySite\\\",\\\"projectClicked\\\",\\\"removeSiteFromMySites\\\",\\\"openOverview\\\",\\\"openFilesview\\\",\\\"imageUpdated\\\"],[[23,2,[]],[28,\\\"action\\\",[[23,0,[]],\\\"projectClicked\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeSiteFromMySites\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openOverview\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"openFilesview\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"imageUpdated\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"filteredSites\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"my-sites.add_new_my_site\\\"],null],false],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-5 col my-sites-welcome\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"my-sites.add_new_my_site_description\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddSiteButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openAddSiteModalOn\\\"]],[8],[1,[28,\\\"t\\\",[\\\"my-sites.add_site\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"change\\\"],[[24,[\\\"selectProject\\\"]],\\\"addMySite\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-5 col my-sites-welcome\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"my-sites.add_new_my_site_gps_description\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary my-sites-gps-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"fetchNearest\\\"]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project_fetching\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Globe\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"my-sites.fetch_nearest\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHidden\\\"],[[23,0,[\\\"showAddSiteModal\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showAddSiteModal\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"modal-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"my-sites.add_site\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"my-sites.add_site_help\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"my-sites.select_contractor\\\"],null],false],[9],[0,\\\"\\\\n\\\\n            \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\"],[\\\"form-control add-fields\\\",[24,[\\\"serviceList\\\"]],[24,[\\\"currentService\\\"]]]]],false],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"my-sites.select_project\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"my-sites/select-project\\\",null,[[\\\"username\\\",\\\"field\\\",\\\"_class\\\",\\\"bubbleChange\\\"],[[24,[\\\"currentService\\\"]],[24,[\\\"selectProjectField\\\"]],\\\"form-control add-fields\\\",\\\"projectSelected\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddSiteNowButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addSiteNow\\\",[24,[\\\"currentService\\\"]],[24,[\\\"currentlySelectedProjectForAddingMysite\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"my-sites.addSite\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"projectinfo\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-container\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"project-info\\\",null,[[\\\"project\\\"],[[24,[\\\"projectinfo\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-overlay\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"projectfiles\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"my-sites.projectfiles\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeFilesModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"project-files\\\",null,[[\\\"project\\\"],[[24,[\\\"projectfiles\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/my-sites/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default class NovaCostcentersRoute extends Route {}\n","export default Ember.HTMLBars.template({\"id\":\"7exrkSDP\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\"],\\\"statements\\\":[[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showFilters\\\"],[\\\"novacostcenter\\\",\\\"q\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"history\\\"]]],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/nova-costcenters/template.hbs\"}});","import Controller, { inject as controller } from '@ember/controller';\nimport { computed, get, set } from '@ember/object';\nconst { alias } = computed;\n\nexport default Controller.extend({\n    addController: controller('orientations/add'),\n    init() {\n        this._super(...arguments);\n    },\n    worksite: alias('addController.record.ori_site'),\n    users: alias('addController.users'),\n    content: alias('model'),\n\n    actions: {\n        async save() {\n            if (!this.lockgroupid) {\n                this.transitionToRoute('orientations.add.signatures');\n                return;\n            }\n            let lock = await get(this, 'store').findRecord('lockgroup', this.lockgroupid);\n\n            //set(this,'saving', true);\n            let passesToBeSaved = [];\n\n            for (var item of this.selectedUsers) {\n                var record = get(this, 'store').createRecord('lockpermission', {\n                    user: item,\n                    lockgroupid: lock,\n                    pass_start: this.pass_start,\n                    pass_end: this.pass_end,\n                });\n                passesToBeSaved.pushObject(record);\n                //await record.save();\n            }\n            set(this, 'addController.passesToBeSaved', passesToBeSaved);\n            if (get(this, 'addController.record')) {\n                get(this, 'addController.record').rollbackAttributes(); // do not leave any orphan records\n            }\n            this.transitionToRoute('orientations.add.signatures');\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"JIxPvw56\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"orientations/add-passes\\\",null,[[\\\"selectedProject\\\",\\\"preSelectedUsers\\\",\\\"selectedUsers\\\",\\\"lockgroupid\\\",\\\"pass_start\\\",\\\"pass_end\\\"],[[24,[\\\"worksite\\\"]],[24,[\\\"users\\\"]],[28,\\\"mut\\\",[[24,[\\\"selectedUsers\\\"]]],null],[28,\\\"mut\\\",[[24,[\\\"lockgroupid\\\"]]],null],[28,\\\"mut\\\",[[24,[\\\"pass_start\\\"]]],null],[28,\\\"mut\\\",[[24,[\\\"pass_end\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add.confirm\\\"]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-left\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"previous\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"],[[\\\"on\\\"],[\\\"click\\\"]]],[8],[1,[28,\\\"t\\\",[\\\"orientations.confirm_and_sign\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/add/add-passes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/checkboxes/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar checkboxesController;\n\nimport Ember from 'ember';\n\ncheckboxesController = Ember.Controller.extend({\n    //    needs: 'orientations/add'\n    addController: Ember.inject.controller('orientations/add'),\n    json: function () {\n        var key, model, self, temp;\n        model = this.get('addController.model.record');\n        if (!model) {\n            return;\n        }\n        temp = Ember.A([]);\n        self = this;\n        this.get('checkboxes').forEach(function (item) {\n            if (item.checked) {\n                return temp.pushObject(item.key);\n            }\n        });\n        key = this.get('model.checkboxes.key');\n        return model.set(key, temp);\n    }.observes('checkboxes.@each.checked'),\n    checkboxes: Ember.computed.alias('model.checkboxes.options'),\n    title: Ember.computed.alias('model.checkboxes.title'),\n    group: Ember.computed.alias('model.group'),\n    firstGroup: Ember.computed.equal('group', 0),\n    lastGroup: Ember.computed('group', function () {\n        return this.get('group') === this.get('model.count') - 1;\n    }),\n    previousGroup: Ember.computed('group', function () {\n        return this.get('group') - 1;\n    }),\n    nextGroup: Ember.computed('group', function () {\n        return this.get('group') + 1;\n    }),\n    mandatory: Ember.computed('model', function () {\n        return this.get('addController.mandatoryArr')[this.get('model.checkboxes.key')];\n    }),\n    valid: Ember.computed('mandatory', 'checkboxes.@each.checked', function () {\n        var checkboxes;\n        if (this.get('mandatory')) {\n            checkboxes = this.get('checkboxes');\n            return checkboxes.get('length') === checkboxes.filterBy('checked').get('length');\n        }\n        return true;\n    }),\n    actions: {\n        toggleCheckbox: function (box) {\n            box.toggleProperty('checked');\n            return false;\n        },\n    },\n});\n\nexport default checkboxesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/checkboxes/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsAddCheckboxesRoute;\n\nimport Ember from 'ember';\n\nimport OrientationsSubRoute from '../sub/route';\n\nOrientationsAddCheckboxesRoute = OrientationsSubRoute.extend({\n    model: function (params) {\n        var group_key, groups;\n        groups = this.modelFor('orientations.add').get('checkbox_groups');\n        group_key = params.group;\n        if (group_key === 'last') {\n            group_key = groups.length - 1;\n        }\n        return Ember.Object.create({\n            checkboxes: groups[group_key],\n            group: parseInt(group_key, 10),\n            count: groups.length,\n        });\n    },\n});\n\nexport default OrientationsAddCheckboxesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"5OApBKSZ\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\",\\\"index\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"padding-left\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CheckedCheckbox\\\"],[8],[9],[0,\\\" \\\"],[1,[22,\\\"title\\\"],false],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\" \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"checkboxes\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-4 col-sm-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3 col-md-3 col-lg-2\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"classNames\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"form-control top-buffer\\\",[23,1,[\\\"checked\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"col-xs-9 col-md-9 col-lg-10\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleCheckbox\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[23,1,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"compare-helper\\\",[3,[23,2,[]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix visible-md-block\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"compare-helper\\\",[2,[23,2,[]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix visible-sm-block\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-info-sign\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.checkboxes.mandatory\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"firstGroup\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.orientations_parent\\\"],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add.parent\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-left\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"previous\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-left\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"previous\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add.checkboxes\\\",[24,[\\\"previousGroup\\\"]]]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-left\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"previous\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"valid\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"lastGroup\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add.confirm\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"next\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add.checkboxes\\\",[24,[\\\"nextGroup\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"next\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/add/checkboxes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/confirm/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar confirmController;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\nimport config from 'tt4/config/environment';\n\nconfirmController = Ember.Controller.extend({\n    //    needs: [\"orientations/add\"]\n    addController: Ember.inject.controller('orientations/add'),\n    indexController: Ember.inject.controller('orientations/add/index'),\n    record: Ember.computed.alias('addController.record'),\n    Collector: Ember.inject.service('collector-service'),\n    VastuuGroup: Em.inject.service('vastuu-group'),\n    intl: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    saving: false,\n    passBlockLoading: false,\n    validPassBlocks: Ember.A(), // helper array to store the pass blocks by users\n    passDatesAlreadySet: false, // helper variable to check if the pass dates have been set\n    fileField: Ember.computed('record.ori_site.file', function () {\n        var field;\n        field = this.get('Collector').field('project', 'file');\n        field.value = this.get('record.ori_site.file');\n        this.set('record.file', this.get('record.ori_site.file'));\n        return field;\n    }),\n\n    placeHolder: Ember.computed('validPassBlocks.[]', function () {\n        if (this.get('validPassBlocks').length === 1) {\n            return this.get('intl').t('select.all');\n        }\n        return this.get('intl').t('orientations.validation.select_rest');\n    }),\n\n    // computed property to get the users that are not selected to any pass block\n    unselectedUsers: Ember.computed('addController.users', function () {\n        const users = this.get('addController.userRecords');\n        let userArray = [];\n        for (let user of users) {\n            userArray.push({\n                id: user.get('id'),\n                name: user.get('firstname') + ' ' + user.get('lastname'),\n            });\n        }\n        let selectedUsers = [];\n        // now we have the users, let's add the selected users to the selectedUsers array\n        for (let block of this.get('validPassBlocks')) {\n            for (let user of block.users) {\n                selectedUsers.push(user.id);\n            }\n        }\n        // now we have the selected users, let's remove them from the userArray\n        userArray = userArray.filter((user) => {\n            return !selectedUsers.includes(user.id);\n        });\n        return userArray;\n    }),\n    // if false, do not show the button to add more blocks\n    areThereUnselectedUsers: Ember.computed('unselectedUsers', 'validPassBlocks.[]', function () {\n        // if no user-blocks are added, we need to use special validation here that skips zero users check\n        // because zero user-blocks is valid in the case where we are not adding passes to any users\n        // and the result of areUserPassesValid has to be inverted so that this function returns true if there are unselected users\n        // normally areUserPassesValid would return false if there are unselected users\n        const ret = !this.areUserPassesValid(true);\n        // if all users passes are not valid, we have still unselected users\n        return ret;\n    }),\n\n    extras: Ember.computed(function () {\n        var extras, extras_tmp;\n        extras_tmp = collector.forms.orientation.objects;\n        extras = [];\n        $.each(extras_tmp, function (index, obj) {\n            if (obj.type !== 'checkboxgroup') {\n                if (index.indexOf('addon_') >= 0) {\n                    obj.ext = index;\n                    return extras.push(obj);\n                }\n            }\n        });\n        return extras;\n    }),\n    passStart: moment().format('YYYY-MM-DD'),\n    unvalid: Em.A([]),\n    setPassDates: function () {\n        if (this.Collector.testNeeds(['project.proj_end'])) {\n            if (this.get('record.ori_site.proj_end')) {\n                return this.setPassDatesTo(null, this.get('record.ori_site.proj_end'));\n            } else {\n                return this.setPassDatesTo();\n            }\n        } else {\n            return this.setPassDatesTo();\n        }\n    },\n    setPassDatesTo: function (start, end) {\n        if (start) {\n            this.set('record.pass_start', moment(start).format('YYYY-MM-DD'));\n        } else {\n            this.set('record.pass_start', moment().format('YYYY-MM-DD'));\n        }\n        if (end) {\n            return this.set('record.pass_end', moment(end).format('YYYY-MM-DD'));\n        } else {\n            return this.set('record.pass_end', moment().add(1, 'months').format('YYYY-MM-DD'));\n        }\n    },\n    clearPassDates: function () {\n        if (this.get('showPassDates')) {\n            this.set('record.pass_start', null);\n            this.set('record.pass_end', null);\n            return this.set('showPassDates', false);\n        }\n    },\n    checkTVEmployerStatus: async function (users) {\n        if (!this.get('Collector').testNeeds(['!products.vg_reliable_partner_disabled'])) {\n            return null;\n        }\n        try {\n\n            // Extract necessary fields for the batch endpoint\n            const employers = users.map(user => ({\n                id: user.get('employer.id'),\n                emp_id: user.get('employer.emp_id'),\n                name: user.get('employer.name'),\n                tv_status: user.get('employer.tv_status')\n            })).filter(emp => emp.id && emp.emp_id);\n\n            if (employers.length === 0) {\n                return null;\n            }\n\n            // Call the batch update method\n            const response = await this.VastuuGroup.updateReliablePartnerStatusesAndReports(employers);\n\n            return response;\n\n        } catch (error) {\n            console.error('Error checking TV employer status:', error);\n            throw error;\n        }\n    },\n    actions: {\n        removePassBlock: function (block_id) {\n            // find correct block by id and filter it out\n            this.set(\n                'validPassBlocks',\n                this.get('validPassBlocks').filter((block) => block.id !== block_id),\n            );\n            // notify unselectedUsers to update the selected users\n            this.notifyPropertyChange('unselectedUsers');\n        },\n        startDateChanged: function (id) {\n            let block = this.get('validPassBlocks').find((block) => block.id === id);\n            if (!block) {\n                return;\n            }\n            if (!moment(block.pass_start).isValid()) {\n               this.set(`validPassBlocks.${id}.startDateError`, true);\n            } else {\n                this.set(`validPassBlocks.${id}.startDateError`, false);\n            }\n        },\n        endDateChanged: function (id) {\n            let block = this.get('validPassBlocks').find((block) => block.id === id);\n            if (!block) {\n                return;\n            }\n            if (!moment(block.pass_end).isValid()) {\n               this.set(`validPassBlocks.${id}.endDateError`, true);\n            } else {\n                this.set(`validPassBlocks.${id}.endDateError`, false);\n            }\n        },\n        addNewPassPanel: async function () {\n            this.set('passBlockLoading', true);\n            if (!this.passDatesAlreadySet) {\n                await this.getPassDatesFromProject();\n            } else {\n                this.set('passDatesAlreadySet', true);\n            }\n            this.get('validPassBlocks').pushObject({\n                id: this.get('validPassBlocks').length,\n                pass_start: this.get('record.pass_start'),\n                pass_end: this.get('record.pass_end'),\n                extra_info: null,\n                users: [],\n            });\n            // if there are only one user unselected, add it to a new pass block\n            if (this.get('unselectedUsers').length === 1) {\n                this.send('addUserToPassBlock', this.get('validPassBlocks').length - 1, [\n                    this.get('unselectedUsers')[0],\n                ]);\n            }\n            this.set('passBlockLoading', false);\n        },\n        addUserToPassBlock: function (block_id, users) {\n            this.set(`validPassBlocks.${block_id}.users`, users);\n            // notify unselectedUsers to update the selected users\n            this.notifyPropertyChange('unselectedUsers');\n        },\n        async save(row) {\n            this.set('saving', true);\n            var dummy, k, mandatory, records, self, store, users, v, valid;\n            self = this;\n            mandatory = this.get('addController.mandatoryArr');\n            valid = true;\n            this.set('unvalid', Em.A([]));\n\n            for (k in mandatory) {\n                v = mandatory[k];\n                if (\n                    !row.get(k) &&\n                    k !== 'ori_user' &&\n                    k !== 'ori_site' &&\n                    k !== 'ori_date' &&\n                    k !== 'ori_place' &&\n                    k !== 'sign_emp_img' &&\n                    k !== 'sign_per_img'\n                ) {\n                    self.get('unvalid').pushObject(\n                        self.get('intl').t('orientations.validation.' + k),\n                    );\n                    valid = false;\n                }\n            }\n            // go through all the pass blocks and check that the pass start and end dates are valid\n            for (let block of this.get('validPassBlocks')) {\n                if (moment(block.pass_start).isAfter(block.pass_end)) {\n                    self.get('unvalid').pushObject(\n                        self.get('intl').t('orientations.validation.pass_start_before_end'),\n                    );\n                    valid = false;\n                }\n            }\n\n            if (valid) {\n                this.set('addController.disableLinks', true);\n                users = this.get('addController.users');\n                store = this.get('store');\n                dummy = row.serialize();\n                dummy.ori_site = store.peekRecord('project', dummy.ori_site);\n                records = Em.A([]);\n\n                for (let id of users) {\n                    try {\n                        let oriuser = await self\n                            .get('Collector')\n                            .findFormRelations('orientation', 'ori_user', {\n                                id: id,\n                            });\n\n                        var record, ref, user;\n                        user = oriuser[0];\n                        dummy.ori_user = user;\n                        if (self.get('Collector').fieldExists('orientation', 'parent')) {\n                            dummy.parent = self.get('addController.selected_parents')[id];\n                        }\n                        record = store.createRecord('orientation', dummy);\n\n                        // get the pass dates for the user\n                        let passData = self.getPassDataForUser(user);\n                        if (passData) {\n                            record.set('pass_start', passData.pass_start);\n                            record.set('pass_end', passData.pass_end);\n                            record.set('extra_info', passData.extra_info);\n                        }\n                        records.pushObject(record);\n                    } catch (error) {\n                        console.error('Error occurred while processing user:', error);\n                    }\n                }\n            }\n            // if there are no unselected users, go to the next step\n            if (valid && this.areUserPassesValid()) {\n                if (this.get('Collector').testNeedsOne('employer')) {\n                    try {\n                        let queriedUsers = await store.query('user', {\n                            id: users.join(','),\n                            sideload: true,\n                        });\n\n                        var usersWithUniqueEmployers;\n                        usersWithUniqueEmployers = queriedUsers.uniqBy('employer.emp_id');\n\n                        try {\n                            await this.checkTVEmployerStatus(usersWithUniqueEmployers);\n                        } catch (error) {\n                            console.error('Error fetching or checking employer:', error);\n                        }\n                    } catch (error) {\n                        console.error('Error occurred while querying users:', error);\n                    }\n                }\n                self.set('addController.orientations', records);\n                self.clearPassDates();\n\n                if (\n                    (ref = self.get('addController.projectHasLocks')) != null ? ref._result : void 0\n                ) {\n                    self.transitionToRoute('orientations.add.add-passes');\n                } else {\n                    self.transitionToRoute('orientations.add.signatures');\n                    row.rollbackAttributes();\n                }\n            } else if (!this.areUserPassesValid()) {\n                // add validation error to unvalid-array\n                self.get('unvalid').pushObject(\n                    self.get('intl').t('orientations.validation.unselected_users'),\n                );\n            }\n            this.set('saving', false);\n        },\n        setFile: function (file, field) {\n            return this.set('record.file', file);\n        },\n    },\n    getPassDatesFromProject: async function () {\n        // Mark the function as async\n        var oriProjId;\n        if (Modernizr.inputtypes.date) {\n            oriProjId = this.get('indexController.record.ori_site.id');\n\n            if (this.Collector.testNeeds(['employer', 'urakkaraportointi'])) {\n                try {\n                    const user = await this.store.findRecord(\n                        'user',\n                        this.get('addController.users.firstObject'),\n                        { reload: true },\n                    );\n                    const contracts = await this.store.query('urakkaraportointi', {\n                        contract_employer: user.get('employer.id'),\n                    });\n\n                    const contractEndDateFound = contracts\n                        .sortBy('contract_month')\n                        .reverseObjects()\n                        .any((contract) => {\n                            const contrProjId = contract.get('contract_project.id');\n                            if (contrProjId === oriProjId) {\n                                this.setPassDatesTo(null, contract.get('contract_end_date'));\n                            }\n                            return contrProjId === oriProjId;\n                        });\n\n                    if (!contractEndDateFound) {\n                        this.setPassDates();\n                    }\n                } catch (error) {\n                    console.error('Error occurred while fetching data:', error);\n                }\n            } else {\n                this.setPassDates();\n            }\n        } else {\n            return false;\n        }\n    },\n    // helper function to get the pass dates for the user from the validPassBlocks array\n    getPassDataForUser(user) {\n        for (let block of this.get('validPassBlocks')) {\n            if (block.users.some((u) => u.id === user.id)) {\n                return {\n                    pass_start: block.pass_start,\n                    pass_end: block.pass_end,\n                    extra_info: block.extra_info,\n                };\n            }\n        }\n        // user was not found from the validPassBlocks array so we take the first block that doesn't have any users and return its pass dates\n        for (let block of this.get('validPassBlocks')) {\n            if (block.users.length === 0) {\n                return {\n                    pass_start: block.pass_start,\n                    pass_end: block.pass_end,\n                    extra_info: block.extra_info,\n                };\n            }\n        }\n    },\n\n    // Passes are valid if:\n    // 1. No blocks has been added (no need to add passes to any users, special validation)\n    // 2. If there is only one block without users\n    // 3. if there are no blocks without users, number of users combined in the blocks is the same as the number of users in the addController.users array\n    areUserPassesValid: function (skipZeroCheck = false) {\n        if (!skipZeroCheck && this.get('validPassBlocks').length === 0) {\n            return true;\n        }\n        let blocksWithoutUsers = this.get('validPassBlocks').filter(\n            (block) => block.users.length === 0,\n        );\n        if (blocksWithoutUsers.length > 1) {\n            return false;\n        }\n        if (blocksWithoutUsers.length === 1) {\n            return true;\n        }\n        let userCount = this.get('validPassBlocks').reduce(\n            (acc, block) => acc + block.users.length,\n            0,\n        );\n        return userCount === this.get('addController.users').length;\n    },\n});\n\nexport default confirmController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/confirm/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar confirmRoute;\n\nimport Ember from 'ember';\n\nimport OrientationsSubRoute from '../sub/route';\n\nconfirmRoute = OrientationsSubRoute.extend({\n    model: function () {\n        var id;\n        if (\n            this.Collector.testNeeds(['project.proj_end']) ||\n            this.Collector.testNeeds(['orientation.file'])\n        ) {\n            id = this.controllerFor('orientations.add').get('projectRecord').get('id');\n            return this.store.findRecord('project', id, {\n                reload: true,\n            });\n        }\n    },\n    // make sure we reset the validPassBlocks array when we leave the route\n    resetController(controller, isExiting, transition) {\n        if (isExiting) {\n            controller.set('validPassBlocks', Ember.A()); // Reset the array\n        }\n    },\n});\n\nexport default confirmRoute;\n","export default Ember.HTMLBars.template({\"id\":\"wZHhfV5u\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\",\\\"extra\\\",\\\"block\\\",\\\"option\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 pr-5\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"special_warning\\\"],[8],[1,[28,\\\"t\\\",[\\\"orientations.special_warning\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[4,\\\"if\\\",[[24,[\\\"addController\\\",\\\"mandatoryArr\\\",\\\"special_warning\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"class\\\",\\\"name\\\",\\\"placeholderTranslation\\\",\\\"value\\\"],[\\\"3\\\",\\\"form-control input-lg\\\",[24,[\\\"special_warning\\\"]],\\\"orientations.special_warning\\\",[24,[\\\"record\\\",\\\"special_warning\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"orientation.file\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"orientations.file\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"                        \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"file\\\",\\\"orientation\\\",[28,\\\"get\\\",[[24,[\\\"record\\\",\\\"ori_site\\\"]],\\\"file\\\"],null]]]],false],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector/fields/fileupload-field-ver3\\\",null,[[\\\"field\\\",\\\"hidden\\\",\\\"bubbleChange\\\",\\\"model\\\"],[[24,[\\\"fileField\\\"]],true,\\\"setFile\\\",[24,[\\\"record\\\",\\\"ori_site\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"validPassBlocks\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-primary link\\\"],[10,\\\"data-anchor\\\",\\\"pass-block\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"orientations.pass_dates\\\"],null],false],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"action\\\",[[23,0,[]],\\\"removePassBlock\\\",[23,3,[\\\"id\\\"]]],null]]],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@anchorName\\\"],[[28,\\\"t\\\",[\\\"orientations.users\\\"],null],\\\"orientations-users\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n                            \\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@class\\\",\\\"@searchEnabled\\\",\\\"@options\\\",\\\"@selected\\\",\\\"@onChange\\\",\\\"@placeholder\\\"],[\\\"form-control add-fields\\\",true,[23,0,[\\\"unselectedUsers\\\"]],[23,3,[\\\"users\\\"]],[28,\\\"fn\\\",[[28,\\\"action\\\",[[23,0,[]],\\\"addUserToPassBlock\\\",[23,3,[\\\"id\\\"]]],null]],null],[23,0,[\\\"placeHolder\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[1,[23,4,[\\\"name\\\"]],false],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column pt-4\\\"],[10,\\\"data-anchor\\\",\\\"pass-dates-block\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 pr-4\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"pass_start\\\"],[11,\\\"style\\\",[28,\\\"if\\\",[[23,3,[\\\"startDateError\\\"]],\\\"color: red;\\\",\\\"\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"orientations.pass_start\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[4,\\\"if\\\",[[24,[\\\"addController\\\",\\\"mandatoryArr\\\",\\\"pass_start\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"name\\\",\\\"startDate\\\",\\\"change\\\"],[\\\"form-control input-lg\\\",[23,3,[\\\"pass_start\\\"]],\\\"pass_start\\\",[24,[\\\"passStart\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"startDateChanged\\\",[23,3,[\\\"id\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"startDateError\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger mt-4\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"t\\\",[\\\"validation.error.date_correct\\\"],null],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 pl-4\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"pass_end\\\"],[11,\\\"style\\\",[28,\\\"if\\\",[[23,3,[\\\"endDateError\\\"]],\\\"color: red;\\\",\\\"\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"orientations.pass_end\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[4,\\\"if\\\",[[24,[\\\"addController\\\",\\\"mandatoryArr\\\",\\\"pass_end\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"startDate\\\",\\\"change\\\"],[\\\"form-control input-lg\\\",\\\"pass_end\\\",[23,3,[\\\"pass_end\\\"]],[24,[\\\"passStart\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"endDateChanged\\\",[23,3,[\\\"id\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"endDateError\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger mt-4\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"t\\\",[\\\"validation.error.date_correct\\\"],null],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pt-6\\\"],[10,\\\"data-anchor\\\",\\\"extra-info-block\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"extra_info\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.orientation.extra_info\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[4,\\\"if\\\",[[24,[\\\"addController\\\",\\\"mandatoryArr\\\",\\\"extra_info\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\"],[\\\"3\\\",\\\"form-control input-lg\\\",\\\"extra_info\\\",[23,3,[\\\"extra_info\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[3]},null],[4,\\\"if\\\",[[23,0,[\\\"areThereUnselectedUsers\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\",\\\"@form\\\"],[[23,0,[\\\"passBlockLoading\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addNewPassPanel\\\"],null],\\\"btn btn-primary\\\",\\\"orientation\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"orientations.add-pass-block-button\\\"],null],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"extras\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector-field\\\",null,[[\\\"field\\\",\\\"model\\\"],[[23,2,[]],[23,0,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"unvalid\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.validation\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"padding-left\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"unvalid\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[1,[23,1,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add.checkboxes\\\",\\\"last\\\"]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-left\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"previous\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[10,\\\"data-anchor\\\",\\\"add-pass-next-button-container\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\"],[[23,0,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"addController\\\",\\\"record\\\"]]],null],\\\"btn btn-primary btn-block btn-lg\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"orientations.confirm_and_sign\\\"],null],false],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/add/confirm/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsAddController;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nOrientationsAddController = Ember.Controller.extend({\n    //    needs: 'orientations/add/signatures'\n    signaturesController: Em.inject.controller('orientations/add/signatures'),\n    record: Ember.computed.alias('model.record'),\n    checkbox_groups: Ember.computed.alias('model.checkbox_groups'),\n    evented: Em.inject.service(),\n    selected_parents: {},\n    router: Em.inject.service(),\n    users: Em.A([]),\n    date: Ember.computed(function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n    init: function () {\n        this._super();\n        return this.evented.on('onResumed', this, 'updateDate');\n    },\n    willDestroyElement: function () {\n        this._super();\n        return this.evented.off('onResumed', this, 'updateDate');\n    },\n    updateDate: function () {\n        return this.notifyPropertyChange('date');\n    },\n    place: null,\n    disableLinks: Em.computed('model.record.ori_site', 'users', {\n        get: function () {\n            if (this._value) {\n                return this._value;\n            }\n            if (this.get('model.record.ori_site') && this.get('users').length) {\n                return false;\n            } else {\n                return true;\n            }\n        },\n        set: function (key, value) {\n            return (this._value = value);\n        },\n    }),\n    projectObserver: async function () {\n        if (this.get('model.record.ori_site')) {\n            // Refetch the ori_site project to make sure\n            // all project properties are loaded\n            const project = (\n                await this.store.query('project', {\n                    id: this.get('model.record.ori_site.id'),\n                })\n            ).get('firstObject');\n\n            if (project) {\n                this.set('model.record.special_warning', project.get('special_warnings'));\n                return this.set('place', project.get('city'));\n            } else {\n                this.set('model.record.special_warning', null);\n                return this.set('place', null);\n            }\n        }\n    }.observes('model.record.ori_site'),\n    projects: Ember.computed(function () {\n        return this.store.findAll('project');\n    }),\n    projectHasLocks: Ember.computed('model.record.ori_site', {\n        get: function () {\n            var locksPromise;\n            if (!this.Collector.testNeedsOne('products.worksite_areas')) {\n                return false;\n            }\n            if (!this.get('model.record.ori_site')) {\n                return false;\n            }\n            locksPromise = this.store.query('lockgroup', {\n                project: this.get('model.record.ori_site.id'),\n            });\n            return locksPromise.then(this.hasLocks.bind(this));\n        },\n        set: function (key, value) {\n            return value;\n        },\n    }),\n    hasLocks: function (locks) {\n        return locks.length > 0;\n    },\n    mandatoryArr: [],\n    mandatory: function () {\n        var arr, form, k, v;\n        form = collector.forms.orientation.objects;\n        arr = {};\n        for (k in form) {\n            v = form[k];\n            if (v.features.mandatory) {\n                arr[k] = true;\n            }\n        }\n        return this.set('mandatoryArr', arr);\n    }.observes('model'),\n});\n\nexport default OrientationsAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsAddIndexController;\n\nimport Ember from 'ember';\n\nOrientationsAddIndexController = Ember.Controller.extend({\n    //    needs: 'orientations/add'\n    addController: Ember.inject.controller('orientations/add'),\n    record: Ember.computed.alias('addController.record'),\n    dialogs: Em.inject.service(),\n    intl: Em.inject.service(),\n    flags: Em.inject.service(),\n    initapp: Ember.inject.service(),\n    showButtonNext: Em.computed(\n        'record.ori_site',\n        'addController.users',\n        'addController.users.length',\n        'loading',\n        'addController.userRecords.length',\n        'addController.projectRecord',\n        function () {\n            if (\n                this.get('addController.userRecords') &&\n                this.get('addController.userRecords').length &&\n                this.get('addController.projectRecord') &&\n                this.get('addController.users').indexOf(null) < 0\n            ) {\n                return this.get('loading') === false;\n            } else {\n                return false;\n            }\n        },\n    ),\n    loading: false,\n    skip_users: Em.A([]),\n    /*\n  overlapArr: Em.A([])\n\n  overlap: (->\n      self = @\n      users = @get('addController.users')\n      if users && @get('record.ori_site')\n          @set(\"overlapArr\", Em.A([]))\n          users.forEach( (user)->\n              orientations = self.store.query('orientation', {\"ori_site\": self.get('record.ori_site.id'), \"ori_user\": user})\n              orientations.then( ->\n                  if orientations.get('length') > 0\n                      self.set('addController.disableLinks', true)\n                      user = self.store.findRecord('user', user)\n                      user.then(\n                          self.get('overlapArr').pushObject(user)\n                      )\n              )\n          )\n  ).observes('addController.users', 'addController.model.record.ori_site')\n\n  */\n    actions: {\n        projectChanged: function (project) {\n            return this.get('record').set('ori_site', project);\n        },\n        updateUsers: function (users) {\n            return this.set('addController.users', users.mapBy('id'));\n        },\n        activateCardRegister: function () {\n            var productname;\n            this.set('savingCardRegister', 'start');\n            productname = 'cardregister';\n            return this.get('Collector')\n                .addProduct(productname)\n                .then(() => {\n                    this.get('initapp').clearInit();\n                    this.set('savingCardRegister', 'done');\n                    return this.get('dialogs')\n                        .alert(this.get('intl').t('general.settings_refresh_needed'))\n                        .then(function () {\n                            return location.reload();\n                        });\n                });\n        },\n        usersChanged: function (users) {\n            return this.set('addController.users', users.mapBy('id'));\n        },\n        userSelected: function (id) {\n            var orientations;\n            if (!this.get('record.ori_site')) {\n                this.get('dialogs')\n                    .alert(this.get('intl').t('orientations.select_project_first'))\n                    .then(() => {\n                        return this.set('addController.users', Em.A([]));\n                    });\n                return;\n            }\n            this.set('loading', true);\n            orientations = this.store.query('orientation', {\n                ori_site: this.get('record.ori_site.id'),\n                ori_user: id,\n            });\n            return orientations.then((found) => {\n                this.set('loading', false);\n                if (found.get('length') > 0) {\n                    return this.get('dialogs')\n                        .alert(this.get('intl').t('orientations.already_orientated'))\n                        .then(() => {\n                            var filtered;\n                            filtered = this.get('addController.users').reject(function (item) {\n                                return item === id;\n                            });\n                            return this.set('addController.users', filtered);\n                        });\n                }\n            });\n        },\n        userAlreadyAdded: function (user) {\n            return this.get('dialogs').alert(this.get('intl').t('orientations.user_already_added'));\n        },\n        changeSelectedProject: function (record) {\n            var orientations, users_oriented, users_oriented_obj;\n            this.set('record.ori_site', record);\n            this.set('addController.users', Em.A([]));\n            //find users which have orientations to this project\n            orientations = this.store.query('orientation', {\n                ori_site: this.get('record.ori_site.id'),\n                sideload: true,\n            });\n            users_oriented = [];\n            users_oriented_obj = [];\n            return orientations.then((oris) => {\n                oris.forEach((ori) => {\n                    users_oriented.push(ori.get('ori_user.id'));\n                    return users_oriented_obj.push(ori.get('ori_user'));\n                });\n                this.set('skip_users_obj', users_oriented_obj);\n                return this.set('skip_users', users_oriented);\n            });\n        },\n    },\n});\n\nexport default OrientationsAddIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsAddIndexRoute;\n\nimport Ember from 'ember';\n\nOrientationsAddIndexRoute = Ember.Route.extend({\n    session: Em.inject.service(),\n    settings: Em.inject.service('customer-settings'),\n    intl: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    // when orientations are saved and user comes back to .add route create new orientation\n    beforeModel: function () {\n        var checkAll, checkAllBoxes, orientations, ref;\n        orientations = this.controllerFor('orientations/add');\n        if (!orientations.get('model')) {\n            return;\n        }\n        if (!orientations.get('model.record')) {\n            checkAll = this.get('settings.settings').filterBy('key', 'orientations_check_all');\n            checkAllBoxes = false;\n            if (checkAll.length > 0 && ((ref = checkAll[0].value) === 'on' || ref === 'true')) {\n                checkAllBoxes = true;\n            }\n            // reset controller\n            orientations.set('employer_signature', null);\n            orientations.set('users', Ember.A([]));\n            orientations.set('place', null);\n            orientations.set('selected_parents', {});\n            orientations.set('disableLinks', null);\n            orientations.get('model.checkbox_groups').forEach(function (item) {\n                return item.options.forEach(function (option) {\n                    return option.set('checked', checkAllBoxes ? true : false);\n                });\n            });\n            return orientations.set('model.record', this.store.createRecord('orientation'));\n        }\n    },\n    afterModel: function (model) {\n        var controller, orientations, users_oriented, users_oriented_obj;\n        // if project is preselected change it also to the record\n        if (this.controllerFor('orientations/add').projectRecord) {\n            model.set('record.ori_site', this.controllerFor('orientations/add').projectRecord);\n        }\n        if (this.get('session.currentUser.currentMySite')) {\n            controller = this.controllerFor('orientations/add/index');\n            //console.log @get \"session.currentUser.currentMySite\"\n            model.set('record.ori_site', this.get('session.currentUser.currentMySite'));\n            //find users which have orientations to this project\n            orientations = this.store.query('orientation', {\n                ori_site: this.get('session.currentUser.currentMySite.id'),\n                sideload: true,\n            });\n            users_oriented = [];\n            users_oriented_obj = [];\n            return orientations.then((oris) => {\n                oris.forEach((ori) => {\n                    users_oriented.push(ori.get('ori_user.id'));\n                    return users_oriented_obj.push(ori.get('ori_user'));\n                });\n                controller.set('skip_users_obj', users_oriented_obj);\n                return controller.set('skip_users', users_oriented);\n            });\n        }\n    },\n\n    actions: {\n        willTransition: function(transition) {\n            if (this._discardConfirmed) {\n                this._discardConfirmed = false;\n                return true;\n            }\n\n            var controller = this.controllerFor('orientations/add/index');\n            let userRecords = controller.get('addController.userRecords') || [];\n            let hasDirty = userRecords.some(r => r && r.hasDirtyAttributes);\n\n            if (hasDirty) {\n                transition.abort();\n                this.dialogs\n                    .confirm(this.intl.t('orientations.dialog.discard_unsaved.orientation_changes'))\n                    .then(confirmed => {\n                        if (confirmed) {\n                            this._discardConfirmed = true;\n                            transition.retry();\n                        }\n                    });\n                return false;\n            }\n            return true;\n        }\n    },\n\n});\n\n//controller.send 'changeSelectedProject', @get \"session.currentUser.currentMySite\"\nexport default OrientationsAddIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"sKawjWac\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"orientations/select-users\\\",null,[[\\\"activateCardRegister\\\",\\\"savingCardRegister\\\",\\\"updateUsers\\\",\\\"project\\\",\\\"projectChanged\\\",\\\"users\\\",\\\"usersChanged\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"activateCardRegister\\\"],null],[24,[\\\"savingCardRegister\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateUsers\\\"],null],[28,\\\"mut\\\",[[24,[\\\"addController\\\",\\\"projectRecord\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"projectChanged\\\"],null],[28,\\\"mut\\\",[[24,[\\\"addController\\\",\\\"userRecords\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"usersChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-xs-offset-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showButtonNext\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.orientations_parent\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add.parent\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"next\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add.checkboxes\\\",0]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"next\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/add/index/template.hbs\"}});","import Component from '@ember/component';\nimport { set, get } from '@ember/object';\n\nexport default Component.extend({\n    actions: {\n        parentChanged(value) {\n            const userid = get(this, 'user');\n            if (!value) {\n                set(this, 'parents.' + userid, null);\n            } else {\n                set(this, 'parents.' + userid, value);\n            }\n            this.parentSelected(userid, value);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"Gnp0YkW/\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/field-comp\\\",[\\\"orientation.parent\\\"],[[\\\"_class\\\",\\\"change\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"parentChanged\\\",[24,[\\\"parent\\\"]]]]],false],[0,\\\"\\\\n    \\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/add/parent-selector/template.hbs\"}});","import Controller, { inject as controller } from '@ember/controller';\nimport { computed, get, set } from '@ember/object';\nconst { alias } = computed;\n\nexport default Controller.extend({\n    addController: controller('orientations/add'),\n    init() {\n        this._super(...arguments);\n        this.selectedParentsStates = [];\n    },\n    selected_parents: alias('addController.selected_parents'),\n    users: alias('addController.users'),\n    content: alias('model'),\n\n    showButtonNext: computed('selectedParentsStates.@each.parentSelected', function () {\n        //First time in page when nothing is selected...\n        if (get(this, 'selectedParentsStates').length == 0) {\n            return false;\n        }\n        const usersWithoutParent = get(this, 'selectedParentsStates').filter((item) => {\n            return !item.parentSelected;\n        });\n        if (usersWithoutParent.length == 0) return true;\n        else return false;\n    }),\n\n    actions: {\n        parentSelected(user, value) {\n            // super ugly hax but orientations just are\n            if (get(this, 'selectedParentsStates').length == 0) {\n                const arr = [];\n                get(this, 'users').forEach((userid) => {\n                    arr.push({ user: userid, parentSelected: false });\n                });\n                set(this, 'selectedParentsStates', arr);\n            }\n            const item = get(this, 'selectedParentsStates').findBy('user', user);\n            set(item, 'parentSelected', value ? true : false);\n        },\n    },\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"D+RWT3q8\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-fluid\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"padding-left\\\"],[8],[1,[28,\\\"t\\\",[\\\"orientations.select_parentforusers\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"addController\\\",\\\"users\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"          \\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"orientation-user col-sm-6 col-lg-4 col-xs-12\\\"],[8],[1,[28,\\\"collector/value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"orientation\\\",\\\"ori_user\\\",[23,1,[]]]]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"orientation-parent col-sm-6 col-lg-4 col-xs-12\\\"],[8],[1,[28,\\\"orientations/add/parent-selector\\\",null,[[\\\"user\\\",\\\"parents\\\",\\\"parentSelected\\\"],[[23,1,[]],[24,[\\\"selected_parents\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"parentSelected\\\"],null]]]],false],[9],[0,\\\"       \\\\n                \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-left\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"previous\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showButtonNext\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"orientations.add.checkboxes\\\",0]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"next\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/add/parent/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsAddRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nOrientationsAddRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    dialogs: Ember.inject.service(),\n    settings: Ember.inject.service('customer-settings'),\n    capi: Ember.inject.service('collector-service'),\n    notifications: Ember.inject.service(),\n    intl: Em.inject.service(),\n    router: Em.inject.service(),\n    checkbox_groups: function () {\n        var checkAll, checkAllBoxes, ref, self, temp;\n        self = this;\n        temp = Ember.A([]);\n        checkAll = this.get('settings.settings').filterBy('key', 'orientations_check_all');\n        checkAllBoxes = false;\n        if (\n            (checkAll.length > 0 && ((ref = checkAll[0].value) === 'on' || ref === 'true')) ||\n            this.get('checkAll')\n        ) {\n            checkAllBoxes = true;\n        }\n        $.each(collector.forms.orientation.objects, function (title) {\n            var options_arr;\n            if (this.type !== 'checkboxgroup') {\n                return;\n            }\n            if (!this.options) {\n                return;\n            }\n            options_arr = Ember.A([]);\n            $.each(this.options, function (key) {\n                var text;\n                text =\n                    this.substring(0, 1) === '$'\n                        ? self.get('intl').t('orientations.' + title + '.' + key)\n                        : this;\n                return options_arr.pushObject(\n                    Ember.Object.create({\n                        checked: checkAllBoxes ? true : null,\n                        key: key,\n                        text: text,\n                    }),\n                );\n            });\n            return temp.pushObject({\n                title: this.name ? this.name : self.get('intl').t('orientations.' + title),\n                key: title,\n                options: options_arr,\n            });\n        });\n        return temp;\n    },\n    model: function () {\n        return Ember.Object.create({\n            record: this.store.createRecord('orientation'),\n            checkbox_groups: this.checkbox_groups(),\n        });\n    },\n    // Function to handle the saving process of orientations and related data\n    async continueSaving(signature, orientations) {\n        // Indicate that the saving process has started\n        this.set('controller.signaturesController.saving', true);\n        let currentObj = null; // Variable to hold the current orientation object being processed\n\n        try {\n            // Iterate through each orientation object\n            for (let obj of orientations) {\n                currentObj = obj;\n                // Set the place and date for the orientation\n                obj.set('ori_place', this.get('controller.place'));\n                obj.set('ori_date', this.get('controller.date'));\n\n                // If a signature is provided, set it for the orientation\n                if (signature) {\n                    obj.set('sign_emp_img', signature);\n                }\n\n                // Save any passes that need to be saved\n                if (this.get('controller.passesToBeSaved')) {\n                    await this.savePasses(this.get('controller.passesToBeSaved'));\n                    this.set('controller.passesToBeSaved', null);\n                }\n\n                // If the work permit product is in use, copy work permits to the new orientation record\n                if (this.capi.testNeedsOne('products.workPermit')) {\n                    // copy the work permits from the ori_user to the new orientation record\n                    const oriWorkPermits = await this.copyWorkPermits(obj);\n                    obj.set('workpermit', oriWorkPermits);\n                    // copy no_certificate_required from the original user to the new orientation record\n                    obj.set('no_certificate_required', obj.get('ori_user.no_certificate_required'));\n                }\n\n                // Save the orientation object\n                await obj.save();\n            }\n            // If the orientations were saved successfully\n\n            currentObj = null; // Reset currentObj after saving all orientations\n\n            // Transition to the saved state and reset controller properties\n            this.transitionTo('orientations.add.saved');\n            this.get('controller').set('model.record', null);\n            this.get('controller').set('users', null);\n            this.get('controller').set('projectRecord', null);\n            this.get('controller').set('userRecords', null);\n            this.get('controller').set('orientations_was_saved', true);\n\n        } catch (error) {\n\n            // Include the current orientation object user in the error context if available\n            let errorContext = '';\n            if (currentObj && currentObj.get('ori_user')) {\n                errorContext = ` ${this.get('intl').t('orientations.save_failed_for_user')} ${currentObj.get('ori_user.firstname')} ${currentObj.get('ori_user.lastname')} `;\n            }\n\n            const errorMessage = `${this.get('intl').t('general.error_prefix')} ${errorContext} ${error}`;\n            this.notifications.error(errorMessage, { autoClear: true });\n        } finally {\n            // Ensure the saving indicator is reset regardless of success or failure\n            this.set('controller.signaturesController.saving', false);\n        }\n    },\n\n    // Function to save a list of passes\n    async savePasses(passes) {\n        for (let pass of passes) {\n            await pass.save(); // Save each pass individually\n        }\n    },\n\n    // Function to copy user work permits and return those in an array\n    async copyWorkPermits(obj) {\n        const workPermits = obj.get('ori_user.workpermit');\n        // Create and save copies of all work permits in parallel\n        const oriWorkPermits = await Promise.all(\n            workPermits.toArray().map((permit) => {\n                // Create a copy of the workpermit record\n                const permitCopy = this.capi.copyRecord(permit);\n                // Save the original workpermit id to copied record for reference\n                permitCopy.set('isCopyOf', permit.get('id'));\n                // Save the copied workpermit\n                return permitCopy.save();\n            })\n        );\n        // Return the array of copied work permits\n        return oriWorkPermits;\n    },\n\n    actions: {\n        willTransition: function (transition) {\n            var oris, target, unsavedRecords;\n            unsavedRecords = false;\n            target = transition.targetName.split('.');\n            oris = this.store.peekAll('orientation');\n            oris.forEach(function (orientation) {\n                if (orientation.get('isNew') === true) {\n                    return (unsavedRecords = true);\n                }\n            });\n            if (this.get('router').get('currentRouteName') === 'orientations.add.index') {\n                if (target[0] !== 'orientations') {\n                    if (this.get('controller.orientations')) {\n                        this.get('controller.orientations').forEach(function (item) {\n                            return item.rollbackAttributes();\n                        });\n                    } else {\n                        this.get('controller.model.record').rollbackAttributes();\n                    }\n                    this.set('controller.users', Em.A([]));\n                    return true;\n                }\n            }\n            if (target[0] === 'orientations' || unsavedRecords === false) {\n                return true;\n            }\n            if (!this.get('allowTransition')) {\n                transition.abort();\n            } else {\n                return true;\n            }\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('orientations.move'))\n                .then((con) => {\n                    if (!con) {\n                        return transition.abort();\n                    } else {\n                        this.get('controller').set('users', null);\n                        this.get('controller').set('projectRecord', null);\n                        this.get('controller').set('userRecords', null);\n                        if (this.get('controller.orientations')) {\n                            this.get('controller.orientations').forEach(function (item) {\n                                return item.rollbackAttributes();\n                            });\n                        } else {\n                            this.get('controller.model.record').rollbackAttributes();\n                        }\n                        this.set('controller.users', Em.A([]));\n                        this.set('allowTransition', true);\n                        return transition.retry();\n                    }\n                });\n        },\n        save: function () {\n            var mandatory, orientations, sigController, signature, signaturesMissing;\n            sigController = this.get('controller.signaturesController');\n            sigController.send('validate');\n            if (sigController.get('errors')) {\n                return;\n            }\n            signaturesMissing = false;\n            orientations = this.get('controller.orientations');\n            signature = sigController.get('model.employer_signature');\n            orientations.forEach(function (obj) {\n                if (!obj.get('sign_per_img')) {\n                    return (signaturesMissing = true);\n                }\n            });\n            if (!signature || signaturesMissing) {\n                mandatory = this.get('controller.mandatoryArr');\n                if (\n                    (!signature && mandatory['sign_emp_img']) ||\n                    (signaturesMissing && mandatory['sign_per_img'])\n                ) {\n                    return this.get('dialogs').alert(\n                        this.get('intl').t('orientations.mandatory_signatures_missing'),\n                    );\n                } else {\n                    return this.get('dialogs')\n                        .confirm(this.get('intl').t('orientations.signatures_missing'))\n                        .then((continueSaving) => {\n                            //if !confirm(@get('intl').t(\"orientations.signatures_missing\"))\n                            //    continueSaving = false\n                            if (continueSaving) {\n                                return this.continueSaving(signature, orientations);\n                            }\n                        });\n                }\n            } else {\n                return this.continueSaving(signature, orientations);\n            }\n        },\n    },\n});\n\nexport default OrientationsAddRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/saved/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar savedController;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nimport pdfExport from '../../../../mixins/pdf-export';\n\nimport { alias } from '@ember/object/computed';\n\nsavedController = Ember.Controller.extend(pdfExport, {\n    //    needs: ['application','orientations/add']\n    addController: Ember.inject.controller('orientations/add'),\n    application: Ember.inject.controller(),\n    exportFile: Ember.inject.service(),\n    content: alias('model'),\n    showColumns: ['project', 'special_warning', 'place', 'date', 'pass_valid'],\n    checked_amount: Ember.computed('addController.orientations.firstObject', function () {\n        var arr, groups, orientation;\n        orientation = this.get('addController.orientations.firstObject');\n        if (!orientation) {\n            return;\n        }\n        groups = this.get('content.checkbox_groups');\n        arr = [];\n        groups.forEach(function (obj) {\n            var i, ori;\n            ori = orientation.get(obj.key);\n            if (!ori) {\n                arr.push({\n                    title: obj.title,\n                    amount: 0,\n                    length: obj.options.length,\n                });\n                return;\n            }\n            i = 0;\n            ori.forEach(function (item) {\n                if (item) {\n                    return i++;\n                }\n            });\n            return arr.push({\n                title: obj.title,\n                amount: i,\n                length: obj.options.length,\n            });\n        });\n        return arr;\n    }),\n    extraFields: Ember.computed(function () {\n        var extras, extras_tmp, self;\n        extras_tmp = collector.forms.orientation.objects;\n        extras = [];\n        self = this;\n        $.each(extras_tmp, function (index, obj) {\n            if (obj.type !== 'checkboxgroup') {\n                if (index.indexOf('addon_') >= 0) {\n                    return extras.push({\n                        name: obj.name,\n                        value: self.get('addController.orientations.firstObject.' + index),\n                    });\n                }\n            }\n        });\n        return extras;\n    }),\n    export_special_pdf: function (data) {\n        var filters, ids, postParams, url;\n        url = 'pdf/orientation';\n        ids = [];\n        filters = {};\n        data.forEach((row) => {\n            ids.push(row.id);\n            return (filters['ori_date'] = row.get('ori_date'));\n        });\n        postParams = {\n            filters: JSON.stringify(filters),\n            form: 'orientation',\n            lang: moment.locale(),\n            type: 'base64',\n            id: ids.join(','),\n        };\n        return this.get('Collector').ttapi({\n            dataType: 'text',\n            url: url,\n            data: postParams,\n        });\n    },\n    actions: {\n        pdf_export: function () {\n            var data, promise;\n            this.set('showLoader', true);\n            data = this.get('addController.orientations');\n            promise = this.export_special_pdf(data);\n            if (promise) {\n                promise.then((content) => {\n                    this.set('showLoader', false);\n                    return this.get('exportFile').exportFile(content, 'export', 'pdf', true);\n                });\n                return promise.catch((e) => {\n                    alert('pdf export failed: ' + JSON.stringify(e));\n                    return this.set('showLoader', false);\n                });\n            }\n        },\n    },\n});\n\nexport default savedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/saved/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar savedRoute;\n\nimport Ember from 'ember';\n\nimport OrientationsSubRoute from '../sub/route';\n\nsavedRoute = OrientationsSubRoute.extend();\n\nexport default savedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"4iJM9Rp0\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"item\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.saved.title\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.saved.text\\\"],[[\\\"count\\\"],[[24,[\\\"addController\\\",\\\"orientations\\\",\\\"length\\\"]]]]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"checked_amount\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[1,[23,2,[\\\"title\\\"]],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge badge-important\\\"],[8],[1,[23,2,[\\\"amount\\\"]],false],[0,\\\" / \\\"],[1,[23,2,[\\\"length\\\"]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.project\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\",\\\"ori_site\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.special_warning\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\",\\\"special_warning\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.place\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\",\\\"ori_place\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.date\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\",\\\"ori_date\\\"]],\\\"L\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\",\\\"pass_start\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.pass_valid\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\",\\\"pass_start\\\"]],\\\"L\\\"],null],false],[0,\\\" - \\\"],[4,\\\"if\\\",[[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\",\\\"pass_end\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"moment-format\\\",[[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\",\\\"pass_end\\\"]],\\\"L\\\"],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\",\\\"file\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.file\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"file\\\",\\\"orientation\\\",[28,\\\"get\\\",[[24,[\\\"addController\\\",\\\"orientations\\\",\\\"firstObject\\\"]],\\\"file\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"extraFields\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[4,\\\"if\\\",[[23,1,[\\\"value\\\"]]],null,{\\\"statements\\\":[[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"name\\\"]],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[23,1,[\\\"value\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-m-link btn-lg btn-block\\\",\\\"orientations.reports\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-m-link btn-lg btn-block\\\",\\\"orientations.add.index\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"orientations.add_more\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-lg btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"pdf_export\\\"]],[8],[1,[28,\\\"t\\\",[\\\"orientations.pdf-export\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/add/saved/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/signatures/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsAddSignaturesController;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nimport { alias } from '@ember/object/computed';\n\nOrientationsAddSignaturesController = Ember.Controller.extend({\n    //    needs: ['application','orientations/add']\n    session: Em.inject.service(),\n    intl: Em.inject.service(),\n    addController: Ember.inject.controller('orientations/add'),\n    applicationController: Ember.inject.controller('application'),\n    orientations: Ember.computed.alias('addController.orientations'),\n    content: alias('model'),\n    showSignatureModal: false,\n    checkBoxes: Ember.computed('addController.orientations', function () {\n        var arr, groups, intl, orientation;\n        orientation = this.get('addController.orientations.firstObject');\n        intl = this.get('intl');\n        if (!orientation) {\n            return;\n        }\n        groups = this.get('content.checkbox_groups');\n        arr = [];\n        groups.forEach(function (obj) {\n            var i, subArr;\n            subArr = [];\n            i = 0;\n            obj.options.forEach(function (item) {\n                var name;\n                if (item && item.get('checked')) {\n                    name =\n                        item.get('text.string') && item.get('text.string').substring(0, 1) === '$'\n                            ? intl.t('orientations.' + obj.key + '.' + item.get('key'))\n                            : item.get('text');\n                    return subArr.push({\n                        name: name,\n                    });\n                }\n            });\n            if (subArr.length > 0) {\n                return arr.push({\n                    title: obj.title,\n                    checkboxes: subArr,\n                    length: obj.options.length,\n                });\n            }\n        });\n        return arr;\n    }),\n    extraFields: Ember.computed(function () {\n        var extras, extras_tmp, self;\n        extras_tmp = collector.forms.orientation.objects;\n        extras = [];\n        self = this;\n        $.each(extras_tmp, function (index, obj) {\n            if (obj.type !== 'checkboxgroup') {\n                if (index.indexOf('addon_') >= 0) {\n                    return extras.push({\n                        name: obj.name,\n                        value: self.get('addController.orientations.firstObject.' + index),\n                    });\n                }\n            }\n        });\n        return extras;\n    }),\n    actions: {\n        validate: function () {\n            var data;\n            data = this.get('addController.place');\n            if (!data || data === null || data === '') {\n                this.set('error', this.get('intl').t('field.error.mandatory'));\n                this.set('errors', true);\n            } else {\n                this.set('error', null);\n                this.set('errors', false);\n            }\n            return false;\n        },\n        addPhoto: function (user, image) {\n            user.set('image', image);\n            return user.save();\n        },\n        openSignatureModal: function (model, field) {\n            var signature;\n            this.set('signatureModel', model);\n            this.set('signatureField', field);\n            signature = Ember.get(model, field);\n            this.set('selectedSignature', signature);\n            return this.set('showSignatureModal', true);\n        },\n        changeSignature: function (value) {\n            var field, model;\n            model = this.get('signatureModel');\n            field = this.get('signatureField');\n            Ember.set(model, field, value);\n            return this.set('showSignatureModal', false);\n        },\n    },\n});\n\n// @signatureModel[@signatureField] = value\n// Ember.set(@get 'signatureModel', @get 'signatureField', value)\nexport default OrientationsAddSignaturesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/signatures/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar signaturesRoute;\n\nimport Ember from 'ember';\n\nimport OrientationsSubRoute from '../sub/route';\n\nsignaturesRoute = OrientationsSubRoute.extend();\n\nexport default signaturesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"h2VZ+eGv\",\"block\":\"{\\\"symbols\\\":[\\\"record\\\",\\\"checkbox_group\\\",\\\"subgroup\\\",\\\"field\\\"],\\\"statements\\\":[[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.project\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"orientations\\\",\\\"0\\\",\\\"ori_site\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.special_warning\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"orientations\\\",\\\"0\\\",\\\"special_warning\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"orientations\\\",\\\"0\\\",\\\"pass_start\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.pass_valid\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"orientations\\\",\\\"0\\\",\\\"pass_start\\\"]],\\\"L\\\"],null],false],[0,\\\" - \\\"],[4,\\\"if\\\",[[24,[\\\"orientations\\\",\\\"0\\\",\\\"pass_end\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"moment-format\\\",[[24,[\\\"orientations\\\",\\\"0\\\",\\\"pass_end\\\"]],\\\"L\\\"],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"extraFields\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[4,\\\"if\\\",[[23,4,[\\\"value\\\"]]],null,{\\\"statements\\\":[[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[23,4,[\\\"name\\\"]],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[23,4,[\\\"value\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[10,\\\"data-toggle\\\",\\\"collapse\\\"],[10,\\\"data-target\\\",\\\"#collapseGroup\\\"],[10,\\\"aria-expanded\\\",\\\"false\\\"],[10,\\\"aria-controls\\\",\\\"collapseGroup\\\"],[10,\\\"type\\\",\\\"button\\\"],[8],[0,\\\"\\\\n      \\\"],[1,[28,\\\"t\\\",[\\\"orientations.checked_groups\\\"],null],false],[0,\\\"   \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"caret\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"collapse\\\"],[10,\\\"id\\\",\\\"collapseGroup\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"checkBoxes\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[8],[1,[23,2,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[\\\"checkboxes\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[1,[23,3,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.employer_signature\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",[29,[\\\"list-group-item \\\",[28,\\\"if\\\",[[24,[\\\"model\\\",\\\"employer_signature\\\"]],\\\"list-group-item-success\\\"],null]]]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"action\\\",[[23,0,[]],\\\"openSignatureModal\\\",[24,[\\\"model\\\"]],\\\"employer_signature\\\"],null]]],[8],[0,\\\"\\\\n        \\\"],[1,[24,[\\\"session\\\",\\\"currentUser\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"session\\\",\\\"currentUser\\\",\\\"lastname\\\"]],false],[0,\\\"\\\\n        \\\"],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"employer_signature\\\"]]],null,{\\\"statements\\\":[[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"orientations signature-preview\\\"],[11,\\\"src\\\",[24,[\\\"model\\\",\\\"employer_signature\\\"]]],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"field.type.signature\\\"],null]],[8],[9],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"orientations-icon glyphicon glyphicon-ok-sign pull-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.users_signature\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"list-group orientated-users\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"addController\\\",\\\"orientations\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3 col-sm-2 col-md-1\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"ori_user\\\",\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"user-icon\\\",[[23,1,[\\\"ori_user\\\",\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],[[\\\"text\\\"],[[28,\\\"concat\\\",[[23,1,[\\\"ori_user\\\",\\\"firstname\\\"]],\\\" \\\",[23,1,[\\\"ori_user\\\",\\\"lastname\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"add-photo\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"file-picker\\\",null,[[\\\"onChange\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"addPhoto\\\",[23,1,[\\\"ori_user\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Camera\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9 col-sm-10 col-md-11 signature\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",[29,[\\\"list-group-item \\\",[28,\\\"if\\\",[[23,1,[\\\"sign_per_img\\\"]],\\\"list-group-item-success\\\"],null]]]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"action\\\",[[23,0,[]],\\\"openSignatureModal\\\",[23,1,[]],\\\"sign_per_img\\\"],null]]],[8],[0,\\\"\\\\n                    \\\"],[1,[23,1,[\\\"ori_user\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"ori_user\\\",\\\"lastname\\\"]],false],[0,\\\"\\\\n                    \\\"],[4,\\\"if\\\",[[23,1,[\\\"sign_per_img\\\"]]],null,{\\\"statements\\\":[[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"orientations signature-preview\\\"],[11,\\\"src\\\",[23,1,[\\\"sign_per_img\\\"]]],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"field.type.signature\\\"],null]],[8],[9],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"orientations-icon glyphicon glyphicon-ok-sign pull-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[5,\\\"signature-modal\\\",[],[[\\\"@open\\\",\\\"@onHide\\\",\\\"@signatureSrc\\\",\\\"@onChange\\\"],[[23,0,[\\\"showSignatureModal\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showSignatureModal\\\"]]],null],false],null],[23,0,[\\\"selectedSignature\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeSignature\\\"],null]]]],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"orientations.date\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"moment-format\\\",[[24,[\\\"addController\\\",\\\"date\\\"]],\\\"L\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-9\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"orientations.place\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"addController\\\",\\\"mandatoryArr\\\",\\\"ori_place\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"focus-out\\\"],[\\\"text\\\",\\\"form-control input-lg\\\",[24,[\\\"addController\\\",\\\"place\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validate\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control input-lg\\\",[24,[\\\"addController\\\",\\\"place\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[1,[23,0,[\\\"error\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general_add.error\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg btn-block\\\"],[12,\\\"disabled\\\",[22,\\\"errors\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-SaveDisk\\\"],[8],[9],[0,\\\"  \\\"],[1,[28,\\\"t\\\",[\\\"orientations.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/add/signatures/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/add/sub/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar subRoute;\n\nimport Ember from 'ember';\n\nimport ResetScrollMixin from '../../../../mixins/reset-scroll';\n\nsubRoute = Ember.Route.extend(ResetScrollMixin, {\n    beforeModel: function () {\n        var orientations;\n        orientations = this.controllerFor('orientations.add');\n        // this situation occurs when orientation is saved and trying to add another one\n        if (orientations.get('orientations_was_saved')) {\n            return;\n        }\n        if (!orientations.get('users').length) {\n            return this.transitionTo('orientations.add');\n        }\n    },\n});\n\nexport default subRoute;\n","export default Ember.HTMLBars.template({\"id\":\"0zcWIPfC\",\"block\":\"{\\\"symbols\\\":[\\\"group\\\",\\\"index\\\",\\\"group\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.orientation\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"orientations.reports\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row hidden-xs hidden-sm\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ol\\\",true],[10,\\\"class\\\",\\\"breadcrumb\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disableLinks\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"active\\\"],[8],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Conference\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.add\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.orientations_parent\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\" \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Conference\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.parent\\\"],null],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"checkbox_groups\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[8],[0,\\\" \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-CheckedCheckbox\\\"],[8],[9],[0,\\\" \\\"],[1,[23,3,[\\\"title\\\"]],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[8],[0,\\\" \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Note\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.confirm\\\"],null],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[23,0,[\\\"projectHasLocks\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Password\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.add-passes\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"li\\\",true],[8],[0,\\\" \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Signature\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.signatures\\\"],null],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\"],[\\\"li\\\",\\\"link\\\",\\\"orientations.add.index\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Conference\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.add\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.orientations_parent\\\"],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\"],[\\\"li\\\",\\\"link\\\",\\\"orientations.add.parent\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Conference\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.parent\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"checkbox_groups\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\",\\\"model\\\"],[\\\"li\\\",\\\"link\\\",\\\"orientations.add.checkboxes\\\",[23,2,[]]]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-CheckedCheckbox\\\"],[8],[9],[0,\\\" \\\"],[1,[23,1,[\\\"title\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2]},null],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\"],[\\\"li\\\",\\\"link\\\",\\\"orientations.add.confirm\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Note\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.confirm\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"await\\\",[[23,0,[\\\"projectHasLocks\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\"],[\\\"li\\\",\\\"link\\\",\\\"orientations.add.add-passes\\\"]],{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Password\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.add-passes\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"disabled\\\",\\\"route\\\"],[\\\"li\\\",\\\"link\\\",\\\"true\\\",\\\"orientations.add.signatures\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Signature\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"orientations.breadcrumb.signatures\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nOrientationsEditRoute = GeneralAddRoute.extend({\n    modelName: 'orientation',\n    edit: true,\n    afterSave: 'orientations.reports',\n    setupController: function (controller, model) {\n        controller.set('model', model);\n        controller.set(\n            'fieldSettings',\n            Em.A({\n                edit: true,\n            }),\n        );\n        return controller.set('edit', true);\n    },\n});\n\nexport default OrientationsEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"UHzkg9mg\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/edit/template.hbs\"}});","import Controller from '@ember/controller';\nimport { computed, get, set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    collector: service('collector-service'),\n\n    queryParams: ['ori_site'],\n\n    ori_site: null,\n    orientations: alias('model'),\n\n    data: computed('orientations', function () {\n        // Get the data from the model and convert it to a format that the tree component can use\n        // The structure of the data is as follows:\n        // [employer.name, parent.name]\n        const data = get(this, 'orientations').map((item) => {\n            return [get(item, 'ori_employer.name'), get(item, 'parent.name')];\n        });\n\n        // Add the parent names of those parents that are not presented as ori_employer in the data\n        // After this we have all the parents in the data\n        get(this, 'orientations').forEach((item) => {\n            const parentName = get(item, 'parent.name') || null;\n            const isFoundAlready = data.find((item) => item[0] === parentName);\n\n            if (parentName && !isFoundAlready) {\n                data.push([parentName, null]);\n            }\n        });\n\n        //\n        const dataWithoutNulls = data.filter((item) => item[0]);\n        const dataWithoutLoops = dataWithoutNulls.filter((item) => item[0] !== item[1]);\n\n        const nestedData = this.convertToNestedArray(dataWithoutLoops);\n\n        const flattenedData = this.flatten(nestedData);\n\n        const result = flattenedData.map((item) => {\n            return {\n                ...item,\n                lastindex: item.level - 1,\n                levelAsRange: Array.from({ length: item.level }, (_, index) => index + 1),\n            };\n        });\n\n        return result;\n    }),\n\n    projectField: computed(function () {\n        const fieldArray = get(this, 'collector').fieldArray('orientation');\n        return fieldArray.findBy('name', 'ori_site');\n    }),\n\n    actions: {\n        projectChanged(value) {\n            set(this, 'ori_site', value ? get(value, 'id') : null);\n        },\n    },\n\n    convertToNestedArray(rows) {\n        // Format the rows to objects\n        rows = rows.map((row) => {\n            return { name: row[0], parent: row[1], children: [] };\n        });\n\n        // Create trees from all the rows\n        const trees = [];\n        // Rows that have been iterated\n        const iteratedRows = [];\n\n        // Cut the loops\n        // If there are two rows that have each other as parent, rename parent from one of them\n        const loopParents = [];\n        rows.forEach((row) => {\n            if (row.parent) {\n                const parent = rows.find((item) => item.name === row.parent);\n                if (parent && parent.parent === row.name) {\n                    if (!loopParents.includes(parent.parent)) {\n                        parent.parent = parent.parent + ' (esiintyy useassa eri roolissa)';\n                        loopParents.push(parent.parent);\n                    } else {\n                        parent.parent =\n                            +' (esiintyy useassa eri roolissa ' +\n                            '(' +\n                            loopParents.filter((item) => item === parent.parent).length +\n                            ')' +\n                            ')';\n                        loopParents.push(parent.parent);\n                    }\n                }\n            }\n        });\n\n        // If row has a parent who has no row in the data, add it to the data\n        rows.forEach((row) => {\n            if (row.parent && !rows.find((item) => item.name === row.parent)) {\n                rows.push({ name: row.parent, parent: null, children: [] });\n            }\n        });\n\n        const nestRows = (tempRows, levels = 1) => {\n            // Copy the rows to avoid modifying the original array\n            let rowsCopied = tempRows;\n\n            const iterate = (rows) => {\n                for (const row of rows) {\n                    if (!row.parent) {\n                        trees.push(row);\n                        iteratedRows.push(row);\n                    } else {\n                        const parent = rows.find((item) => item.name === row.parent);\n                        if (parent) {\n                            parent.children.push(row);\n                            iteratedRows.push(row);\n                        }\n                    }\n                }\n            };\n\n            let levelsIterated = 0;\n            while (levelsIterated < levels) {\n                const rows = rowsCopied.filter(\n                    (row) => !iteratedRows.find((tree) => tree.name === row.name),\n                );\n                iterate(rows);\n                if (rows.length === 0) break;\n                levelsIterated++;\n            }\n        };\n\n        nestRows(rows, 10);\n        return trees;\n    },\n\n    flatten(data) {\n        const flattenStructure = (node, level, result, breadCrumps, breadCrumpsArray) => {\n            result.push({\n                name: node.name,\n                level,\n                hasChildren: node.children.length > 0,\n                childrenCount: node.children.length,\n                breadCrumps: `${breadCrumps} > ${node.name}`.substring(6),\n                breadCrumpsArray: breadCrumpsArray,\n            });\n\n            if (node.children && node.children.length > 0) {\n                for (const child of node.children) {\n                    if (breadCrumpsArray.includes(child.name)) return;\n\n                    flattenStructure(child, level + 1, result, `${breadCrumps} > ${node.name}`, [\n                        ...breadCrumpsArray,\n                        node.name,\n                    ]);\n                }\n            }\n        };\n\n        const result = [];\n        flattenStructure({ name: '', children: data }, -1, result, '', []);\n\n        return result.slice(1);\n    },\n});\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Route.extend({\n    store: service(),\n\n    queryParams: {\n        ori_site: {\n            refreshModel: true,\n        },\n    },\n\n    model: function (params) {\n        if (!params.ori_site) return []; // we do not want to even load the data if no project is selected\n\n        params.sideload = true;\n        params.groupBy = 'parent,ori_employer';\n        params.limit = 'all';\n        const data = get(this, 'store').query('orientation', params);\n        return data;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"zK88RUXq\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"level\\\",\\\"index\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6 col-lg-4 filter-comp-component\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"projectField\\\"]]],[[\\\"change\\\",\\\"useAsFilter\\\"],[\\\"projectChanged\\\",true]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"ori_site\\\"]]],null,{\\\"statements\\\":[[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"ml-8\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[4,\\\"each\\\",[[23,1,[\\\"levelAsRange\\\"]]],null,{\\\"statements\\\":[[7,\\\"td\\\",true],[10,\\\"width\\\",\\\"50px\\\"],[10,\\\"style\\\",\\\"text-align:center;\\\"],[8],[1,[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[]],[23,1,[\\\"lastindex\\\"]]],null],\\\"-\\\"],null],false],[9]],\\\"parameters\\\":[2,3]},null],[0,\\\"\\\\n        \\\"],[7,\\\"td\\\",true],[10,\\\"colspan\\\",\\\"100\\\"],[10,\\\"class\\\",\\\"px-3 py-3\\\"],[11,\\\"title\\\",[23,1,[\\\"breadCrumps\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"hasChildren\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge ml-2\\\"],[10,\\\"style\\\",\\\"transform: translateY(-2px);\\\"],[8],[1,[23,1,[\\\"childrenCount\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"general.choose_project_first\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/employeetree/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsHistoryRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nOrientationsHistoryRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default OrientationsHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"kB/yjEWO\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"orientation\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/history/template.hbs\"}});","import Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport EmberObject from '@ember/object';\nimport { A } from '@ember/array';\nimport moment from 'moment';\n\nexport default class OrientationsInactivePassesController extends Controller {\n  @service intl;\n  @service flags;\n  @service store;\n  @service notifications;\n  @service router;\n  @service capi;\n\n  queryParams = ['ori_site', 'page'];\n\n  @tracked ori_site = null;\n  @tracked page = 1;\n\n  rowsPerPage = 100;\n  columns = ['ori_user', 'ori_employer', 'pass_start', 'pass_end'];\n  form = 'orientation';\n\n  get filters() {\n    return A([\n      EmberObject.create({\n        field: 'ori_site',\n        form: 'orientation',\n        type: 'database',\n        value: this.ori_site,\n        singleselect: true,\n      }),\n    ]);\n  }\n\n  get pageCount() {\n    const count = this.model?.count ?? 0;\n    return Math.ceil(count / this.rowsPerPage);\n  }\n\n  get translatedColumns() {\n    return this.columns.map((column) =>\n      this.intl.t(`report.orientation.${column}`)\n    );\n  }\n\n  get message() {\n    if (this.model?.error === 'no_site_selected') {\n      return this.intl.t('orientations.message_select_site_first');\n    }\n    return null;\n  }\n\n  get data() {\n    const rawData = this.model?.passive_users;\n    if (!rawData) {\n      return null;\n    }\n\n    return A(\n      rawData.map((row) =>\n        EmberObject.create({\n          id: row.user_id,\n          ori_id: row.ori_id,\n          user_id: row.user_id,\n          ori_user: row.ori_user,\n          ori_employer: row.ori_employer,\n          pass_start: row.pass_start,\n          pass_end: row.pass_end,\n        })\n      )\n    );\n  }\n\n  get checkedActions() {\n    return [{ name: 'revoke_passes' }];\n  }\n\n  @action\n  filterChanged(value, fieldName) {\n    this.page = 1;\n    this[fieldName] = value?.id || null;\n  }\n\n\n  /**\n   * Revokes orientation passes for selected users by setting their pass end date to yesterday.\n   * This effectively makes their passes expired.\n   */\n  @action\n  async revokePasses(action, row) {\n    if (action !== 'checkedRowsAction' || !row.rows?.length) {\n      return;\n    }\n\n    const yesterdayStr = moment().subtract(1, 'days').format('YYYY-MM-DD');\n    const oriIds = row.rows.map((selectedRow) => selectedRow.ori_id);\n\n    try {\n      await this.capi.request('orientations', {\n        method: 'PUT',\n        contentType: 'application/json',\n        data: JSON.stringify({\n          orientation: {\n            id: oriIds,\n            pass_end: yesterdayStr,\n            meta: {\n              insert_history: true,\n            },\n          },\n        }),\n      });\n\n      this.notifications.success(\n        this.intl.t('orientations.passes_revoked_success'), { autoClear: true }\n      );\n      // Refresh the route to reflect changes\n      this.router.transitionTo('orientations.inactive-passes', {\n        queryParams: { ori_site: this.ori_site, page: this.page },\n      });\n    } catch (error) {\n      this.notifications.error(\n        `${this.intl.t('general.error_prefix')} ${error}`\n      );\n    }\n  }\n}\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\n\nexport default class OrientationsInactivePassesRoute extends Route {\n  @service ttapi;\n\n  queryParams = {\n    ori_site: {\n      refreshModel: true,\n    },\n    page: {\n      refreshModel: true,\n    },\n  };\n\n  async model(params) {\n    // No site selected - show message instead of making API call\n    if (!params.ori_site) {\n      return {\n        passive_users: null,\n        count: 0,\n        error: 'no_site_selected',\n      };\n    }\n\n    const limit = 100;\n    const offset = params.page ? (params.page - 1) * limit : 0;\n\n    return this.ttapi.request('/orientations/inactive_passes', {\n      type: 'GET',\n      data: {\n        ori_site: params.ori_site,\n        limit,\n        offset,\n      },\n    });\n  }\n}\n","export default Ember.HTMLBars.template({\"id\":\"TZmUmKLP\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"orientations-inactive-passes\\\"],[8],[0,\\\"\\\\n  \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.orientations.inactive_passes.title\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"  \\\"],[5,\\\"report-filters\\\",[],[[\\\"@filters\\\",\\\"@form\\\",\\\"@filterValueChanged\\\"],[[23,0,[\\\"filters\\\"]],[23,0,[\\\"form\\\"]],[23,0,[\\\"filterChanged\\\"]]]]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"message\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n      \\\"],[7,\\\"h4\\\",true],[8],[1,[23,0,[\\\"message\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"table-comp\\\",[],[[\\\"@columns\\\",\\\"@translated_columns\\\",\\\"@data\\\",\\\"@checkable\\\",\\\"@hideSort\\\",\\\"@checkedActions\\\",\\\"@bubbleActions\\\"],[[23,0,[\\\"columns\\\"]],[23,0,[\\\"translatedColumns\\\"]],[23,0,[\\\"data\\\"]],true,true,[23,0,[\\\"checkedActions\\\"]],[23,0,[\\\"revokePasses\\\"]]]]],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"    \\\"],[5,\\\"pagi-nate\\\",[],[[\\\"@rowsPerPage\\\",\\\"@currentPage\\\",\\\"@pageCount\\\"],[[23,0,[\\\"rowsPerPage\\\"]],[23,0,[\\\"page\\\"]],[23,0,[\\\"pageCount\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/inactive-passes/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"rcZk2W8C\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/own-orientation/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OwnOrientationsController;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nOwnOrientationsController = Ember.Controller.extend({\n    //    needs: ['application','orientations/add']\n    session: Em.inject.service(),\n    intl: Em.inject.service(),\n    addController: Ember.inject.controller('orientations/add'),\n    applicationController: Ember.inject.controller('application'),\n    orientations: Ember.computed.alias('addController.orientations'),\n    errors: 0,\n    has_errors: false,\n    validate_fields: ['ori_place', 'sign_per_img'],\n    signatureField: Ember.computed(function () {\n        return this.get('Collector').field('orientation', 'sign_per_img');\n    }),\n    fileField: Ember.computed('model.record.ori_site', function () {\n        var field;\n        field = this.get('Collector').field('project', 'file');\n        field.value = this.get('model.record.ori_site.file');\n        return field;\n    }),\n    ori_place: Em.computed(function () {\n        if (this.get('model.project.city')) {\n        }\n    }),\n    checkBoxes: Em.computed(function () {\n        var arr, groups, intl;\n        intl = this.get('intl');\n        groups = this.get('model.checkbox_groups');\n        arr = [];\n        groups.forEach(function (obj) {\n            var i, subArr;\n            subArr = [];\n            i = 0;\n            obj.options.forEach(function (item) {\n                var name;\n                if (item) {\n                    name =\n                        item.get('text.string') && item.get('text.string').substring(0, 1) === '$'\n                            ? intl.t('orientations.' + obj.key + '.' + item.get('key'))\n                            : item.get('text');\n                    return subArr.push({\n                        name: name,\n                    });\n                }\n            });\n            if (subArr.length > 0) {\n                return arr.push({\n                    title: obj.title,\n                    checkboxes: subArr,\n                    length: obj.options.length,\n                });\n            }\n        });\n        return arr;\n    }),\n    extraFields: Ember.computed(function () {\n        var extras, extras_tmp, self;\n        extras_tmp = collector.forms.orientation.objects;\n        extras = [];\n        self = this;\n        $.each(extras_tmp, function (index, obj) {\n            if (obj.type !== 'checkboxgroup') {\n                if (index.indexOf('addon_') >= 0) {\n                    return extras.push({\n                        name: obj.name,\n                        value: self.get('addController.orientations.firstObject.' + index),\n                    });\n                }\n            }\n        });\n        return extras;\n    }),\n    mandatoryArr: Em.computed('model', function () {\n        var arr, form, k, v;\n        form = collector.forms.orientation.objects;\n        arr = {};\n        for (k in form) {\n            v = form[k];\n            if (v.features.mandatory) {\n                arr[k] = true;\n            }\n        }\n        return arr;\n    }),\n    actions: {\n        validate: function () {\n            var field, j, len, ref;\n            ref = this.get('validate_fields');\n            for (j = 0, len = ref.length; j < len; j++) {\n                field = ref[j];\n                if (\n                    (!this.get('model.record.' + field) ||\n                        this.get('model.record.' + field) === null ||\n                        this.get('model.record.' + field) === '') &&\n                    !this.get('error_' + field)\n                ) {\n                    this.set('error_' + field, true);\n                    this.incrementProperty('errors');\n                } else if (this.get('model.record.' + field) && this.get('error_' + field)) {\n                    this.set('error_' + field, false);\n                    this.decrementProperty('errors');\n                }\n            }\n            if (this.get('errors') === 0) {\n                this.set('has_errors', false);\n            } else {\n                this.set('has_errors', true);\n            }\n            return false;\n        },\n        setSignature: function (value) {\n            this.set('model.record.sign_per_img', value);\n            return this.send('validate');\n        },\n        setFile: function (file, field) {\n            return this.set('model.record.file', file);\n        },\n    },\n});\n\nexport default OwnOrientationsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/own-orientation/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar signaturesRoute;\n\nimport Ember from 'ember';\n\nimport addRoute from '../add/route';\n\nimport config from '../../../config/environment';\n\nsignaturesRoute = addRoute.extend({\n    session: Em.inject.service(),\n    checkAll: true,\n    model: function (params) {\n        var project;\n        project = this.get('store').findRecord('project', params.id, {\n            reload: true,\n        });\n        return project.then((proj) => {\n            return Ember.RSVP.hash({\n                checkbox_groups: this.checkbox_groups(),\n                record: this.get('store').createRecord('orientation', {\n                    ori_site: proj,\n                    ori_place: proj.get('city'),\n                    ori_date: moment().format('YYYY-MM-DD'),\n                    ori_user: this.get('session.currentUser'),\n                    pass_start: moment().format('YYYY-MM-DD'),\n                    pass_end: proj.get('proj_end'),\n                    special_warning: proj.get('special_warnings'),\n                    file: proj.get('file'),\n                }),\n            });\n        });\n    },\n    toDataUrl: function (url, callback) {\n        var img_url, xhr;\n        img_url = config.APP.COLLECTOR_API_URL + '/' + url;\n        xhr = new XMLHttpRequest();\n        if (window.XMLHttpRequest) {\n            xhr = new XMLHttpRequest();\n        } else {\n            xhr = new ActiveXObject('Microsoft.XMLHTTP');\n        }\n        xhr.onload = function () {\n            var reader;\n            reader = new FileReader();\n            reader.onloadend = function () {\n                callback(reader.result);\n            };\n            reader.readAsDataURL(xhr.response);\n        };\n        xhr.open('GET', img_url);\n        xhr.responseType = 'blob';\n        return xhr.send();\n    },\n    actions: {\n        save: function (row, model) {\n            var controller, i, item, j, key, len, len1, options, ref, ref1, tmp;\n            controller = this.get('controller');\n            controller.send('validate');\n            if (controller.get('has_errors')) {\n                return;\n            }\n            ref = model['checkbox_groups'];\n            for (i = 0, len = ref.length; i < len; i++) {\n                item = ref[i];\n                tmp = [];\n                ref1 = item.options;\n                for (j = 0, len1 = ref1.length; j < len1; j++) {\n                    options = ref1[j];\n                    tmp.push(options.key);\n                }\n                key = item.key;\n                row.set(key, tmp);\n            }\n            return row.save().then(() => {\n                return this.transitionTo('timetracker.worktime-list');\n            });\n        },\n    },\n});\n\nexport default signaturesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Vubbitep\",\"block\":\"{\\\"symbols\\\":[\\\"checkbox_group\\\",\\\"subgroup\\\"],\\\"statements\\\":[[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.worksite_info\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.project\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"model\\\",\\\"record\\\",\\\"ori_site\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.special_warning\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"model\\\",\\\"record\\\",\\\"ori_site\\\",\\\"special_warnings\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"record\\\",\\\"ori_site\\\",\\\"file\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.file\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[1,[28,\\\"collector/fields/fileupload-field-ver3\\\",null,[[\\\"field\\\",\\\"hidden\\\",\\\"bubbleChange\\\",\\\"model\\\"],[[24,[\\\"fileField\\\"]],true,\\\"setFile\\\",[24,[\\\"record\\\",\\\"ori_site\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"file\\\",\\\"orientation\\\",[28,\\\"get\\\",[[24,[\\\"model\\\",\\\"record\\\",\\\"ori_site\\\"]],\\\"file\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.checked_groups\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"checkBoxes\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[8],[1,[23,1,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"checkboxes\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.worker_signature\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"list-group orientated-users\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/fields/signature-field\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"bubbleChange\\\",\\\"model\\\",\\\"showModal\\\",\\\"placeholderText\\\"],[[24,[\\\"signatureField\\\"]],\\\"add-fields\\\",\\\"setSignature\\\",[24,[\\\"model\\\",\\\"record\\\"]],[24,[\\\"signature\\\"]],[28,\\\"concat\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"firstname\\\"]],\\\" \\\",[24,[\\\"session\\\",\\\"currentUser\\\",\\\"lastname\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"error_sign_per_img\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"field.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"orientations.date\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"moment-format\\\",[[24,[\\\"addController\\\",\\\"date\\\"]],\\\"L\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-9\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"orientations.place\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"mandatoryArr\\\",\\\"ori_place\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"focus-out\\\"],[\\\"text\\\",\\\"form-control input-lg\\\",[24,[\\\"model\\\",\\\"record\\\",\\\"ori_place\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validate\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control input-lg\\\",[24,[\\\"model\\\",\\\"record\\\",\\\"ori_place\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"error_ori_place\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"field.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"has_errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general_add.error\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg btn-block\\\"],[12,\\\"disabled\\\",[22,\\\"has_errors\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"model\\\",\\\"record\\\"]],[24,[\\\"model\\\"]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-SaveDisk\\\"],[8],[9],[0,\\\"  \\\"],[1,[28,\\\"t\\\",[\\\"orientations.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/own-orientation/template.hbs\"}});","import Controller from '@ember/controller';\nimport { get, set, computed } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { htmlSafe } from '@ember/string';\nimport EmberError from '@ember/error';\nimport config from 'tt4/config/environment';\n\nexport default Controller.extend({\n    Collector: service('collector-service'),\n    ajax: service(),\n    session: service(),\n    intl: service(),\n    cc: service(),\n    ttapi: service(),\n    notifications: service(),\n    store: service(),\n    flags: service(),\n\n    localStorageKey: 'passes',\n    pass_ends_range: null,\n\n    passes: alias('model'),\n\n    rollockIntegration: computed(function () {\n        if (config.target === 'release-next') {\n            return 'rollock_qa';\n        } else {\n            return 'rollock';\n        }\n    }),\n    \n    showMegaflexSyncDetails: computed(function () {\n        return get(this, 'flags').test('megaflex-sync-details');\n    }),\n\n    limitedSyncFailedDetails: computed('syncFailedDetails.[]', function () {\n        const failedDetails = get(this, 'syncFailedDetails');\n        if (failedDetails && failedDetails.length > 0) {\n            return failedDetails.slice(0, 10);\n        }\n        return [];\n    }),\n\n    remainingErrorCount: computed('syncFailedDetails.[]', function () {\n        const failedDetails = get(this, 'syncFailedDetails');\n        if (failedDetails && failedDetails.length > 10) {\n            return failedDetails.length - 10;\n        }\n        return 0;\n    }),\n\n    progress: computed('numericalProgress', function () {\n        return get(this, 'numericalProgress') + ' %';\n    }),\n\n    progressStyle: computed('progress', function () {\n        return htmlSafe('width: ' + get(this, 'numericalProgress') + '%');\n    }),\n\n    syncModalHeader: computed('syncType', function () {\n        const syncType = get(this, 'syncType') || 'rollock';\n        return `${syncType}.sync.modal_header`;\n    }),\n\n    syncExecutingMessage: computed('syncType', function () {\n        const syncType = get(this, 'syncType') || 'rollock';\n        return `${syncType}.sync.executing`;\n    }),\n\n    timecleanProjects: computed('model.timcleanProjects', function () {\n        if (!get(this, 'model.timecleanProjects')) {\n            return null;\n        } else {\n            return get(this, 'model.timecleanProjects').map((project) => {\n                return { id: project.id, name: project.name };\n            });\n        }\n    }),\n\n    actions: {\n        showTimecleanModal() {\n            set(this, 'showTimecleanModal', true);\n        },\n\n        syncRollock(rows) {\n            rows = this._initializeSync(rows, 'rollock.sync.no_users', 'rollock');\n            \n            if (rows.length === 0) return;\n\n            let rollockIntegration = get(this, 'rollockIntegration');\n            let url = this.cc.host + '/' + rollockIntegration;\n            let accessToken = get(this, 'session.data.authenticated.access_token');\n\n            rows.forEach((row) => {\n                get(this, 'ajax').request(url, {\n                    type: 'POST',\n                    headers: {\n                        Authorization: 'Bearer ' + accessToken,\n                    },\n                    contentType: 'application/json',\n                    data: JSON.stringify(row),\n                    success: () => {\n                        this.incrementProgress();\n                    },\n                    error: (e) => {\n                        this.incrementProgress();\n                        throw new EmberError(JSON.stringify(e));\n                    },\n                });\n            });\n        },\n\n        syncMegaflex(rows) {\n            rows = this._initializeSync(rows, 'megaflex.sync.no_users', 'megaflex');\n            \n            if (rows.length === 0) return;\n\n            set(this, 'syncSuccess', true);\n            set(this, 'syncFailedDetails', []);\n\n            // Process each orientation one by one\n            this.processMegaflexSync(rows, 0);\n        },\n\n        close() {\n            set(this, 'allDone', false);\n            set(this, 'syncSuccess', true);\n            set(this, 'syncErrorMessage', null);\n            set(this, 'syncFailedDetails', null);\n            set(this, 'showErrorDetails', false);\n            set(this, 'showSyncProgress', false);\n        },\n        \n        toggleErrorDetails() {\n            this.toggleProperty('showErrorDetails');\n        },\n    },\n\n    _initializeSync(rows, errorMessageKey, syncType) {\n        //only try to sync if user has a pass with an end time\n        const filteredRows = rows.filter((row) => get(row, 'pass_end'));\n        set(this, 'rowAmount', filteredRows.length);\n\n        if (filteredRows.length === 0) {\n            get(this, 'notifications').error(get(this, 'intl').t(errorMessageKey), {\n                autoClear: true,\n            });\n            return [];\n        }\n\n        set(this, 'syncType', syncType);\n        set(this, 'showSyncProgress', true);\n        set(this, 'allDone', false);\n        set(this, 'numericalProgress', 0);\n        set(this, 'count', 0);\n\n        return filteredRows;\n    },\n\n    processMegaflexSync(rows, index) {\n        if (index >= rows.length) {\n            // All done - show summary\n            set(this, 'allDone', true);\n            this._showMegaflexSyncSummary();\n            return;\n        }\n\n        const row = rows[index];\n        const orientationId = get(row, 'id');\n        const userId = get(row, 'user_id');\n\n        get(this, 'ttapi')\n            .request('api/megaflex/personSync', {\n                method: 'POST',\n                data: { orientation_id: orientationId },\n            })\n            .then((response) => this._handlePersonSyncSuccess(response, orientationId, userId, rows, index))\n            .catch((error) => this._handlePersonSyncError(error, orientationId, userId, rows, index));\n    },\n\n    _handlePersonSyncSuccess(response, orientationId, userId, rows, index) {\n        if (!response.success) {\n            // Track failed sync\n            set(this, 'syncSuccess', false);\n            const failedDetails = get(this, 'syncFailedDetails') || [];\n            failedDetails.push({\n                orientation_id: orientationId,\n                user_id: userId,\n                reason_key: response.message_key,\n                error: response.data ? response.data.error : null\n            });\n            set(this, 'syncFailedDetails', failedDetails);\n        }\n        \n        this.incrementProgress();\n        \n        // Process next orientation\n        this.processMegaflexSync(rows, index + 1);\n    },\n\n    _handlePersonSyncError(error, orientationId, userId, rows, index) {\n        // Track error\n        set(this, 'syncSuccess', false);\n        const failedDetails = get(this, 'syncFailedDetails') || [];\n        failedDetails.push({\n            orientation_id: orientationId,\n            user_id: userId,\n            reason_key: 'megaflex.error.sync_exception',\n            error: error.message || JSON.stringify(error)\n        });\n        set(this, 'syncFailedDetails', failedDetails);\n        \n        this.incrementProgress();\n        \n        // Continue with next orientation despite error\n        this.processMegaflexSync(rows, index + 1);\n    },\n\n    _showMegaflexSyncSummary() {\n        const rowAmount = get(this, 'rowAmount');\n        const failedDetails = get(this, 'syncFailedDetails') || [];\n        const successCount = rowAmount - failedDetails.length;\n        const failedCount = failedDetails.length;\n\n        if (failedCount === 0) {\n            // All succeeded\n            const message = get(this, 'intl').t('megaflex.sync.complete', {\n                success: successCount,\n                skipped: 0,\n                failed: 0\n            });\n            get(this, 'notifications').success(message, {\n                autoClear: true,\n            });\n        } else if (failedCount === rowAmount) {\n            // All failed\n            const message = get(this, 'intl').t('megaflex.sync.all_failed', {\n                failed: failedCount\n            });\n            set(this, 'syncErrorMessage', message);\n            get(this, 'notifications').error(message, {\n                autoClear: true,\n                clearDuration: 10000\n            });\n        } else {\n            // Partial success\n            const message = get(this, 'intl').t('megaflex.sync.partial_success', {\n                success: successCount,\n                failed: failedCount\n            });\n            set(this, 'syncErrorMessage', message);\n            get(this, 'notifications').warning(message, {\n                autoClear: true,\n                clearDuration: 10000\n            });\n        }\n    },\n\n    incrementProgress() {\n        let count = get(this, 'count');\n        let rowAmount = get(this, 'rowAmount');\n\n        count++;\n        if (count === rowAmount) set(this, 'allDone', true);\n\n        set(this, 'count', count);\n        set(this, 'numericalProgress', Math.floor((count / rowAmount) * 100));\n    },\n});\n","import Route from '@ember/routing/route';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport RSVP from 'rsvp';\n\nexport default Route.extend({\n    Collector: service('collector-service'),\n    ttapi: service(),\n\n    queryParams: {\n        'ori_site': {\n            refreshModel: true,\n        },\n        'pass_end:pass_end': {\n            refreshModel: true,\n        },\n    },\n\n    model(params) {\n        // if pass_end qParam is given, pass it to the form-report component and set the pass_ends_range filter to the given value\n        // so that we can transition (from anomalies widget) to the report with the pass_ends_range filter set\n        set(this.controllerFor('orientations/passes'), 'qParams', params);\n        set(\n            this.controllerFor('orientations/passes'),\n            'pass_ends_range',\n            params['pass_end:pass_end'],\n        );\n\n        if (this.Collector.testNeeds(['products.rfid'])) {\n            return RSVP.hash({\n                timecleanProjects: get(this, 'ttapi')._get('/api/gateList/projects'),\n            });\n        }\n    },\n});\n","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\n/*\nThis component wants    \ntimecleanProjects = array of {id:project.id, name:project.name}\nshowTimecleanModal = true/false\n*/\nexport default Component.extend({\n    ttapi: service(),\n\n    init() {\n        this._super();\n        //if gatelist projects are found, automatically select the first to the dropdown\n        let firstProject = get(this, 'timecleanProjects.firstObject');\n        if (firstProject) set(this, 'project', firstProject.id);\n    },\n\n    actions: {\n        syncTimeclean(project = null) {\n            set(this, 'timecleanSynced', false);\n            if (!project) return;\n            set(this, 'loading', true);\n            set(this, 'error', false);\n            get(this, 'ttapi')\n                ._post('/api/gateList/updateGateList', { project: project })\n                .then(this.completeSyncing.bind(this))\n                .catch(this.handleError.bind(this));\n        },\n\n        close() {\n            set(this, 'showTimecleanModal', false);\n            set(this, 'timecleanSynced', false);\n            set(this, 'loading', false);\n            set(this, 'error', false);\n        },\n\n        projectChanged() {\n            set(this, 'timecleanSynced', false);\n            set(this, 'loading', false);\n            set(this, 'error', false);\n        },\n    },\n\n    completeSyncing() {\n        set(this, 'loading', false);\n        set(this, 'timecleanSynced', true);\n    },\n\n    handleError(e) {\n        set(this, 'loading', false);\n        if (e.message) {\n            set(this, 'error', e.message);\n        } else {\n            set(this, 'error', e);\n        }\n        set(this, 'timecleanSynced', false);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"OGuMg9xR\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showTimecleanModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"timeclean.sync.modal_header\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"timecleanSynced\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"timeclean.sync.description\\\"],null],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timeclean.sync.gate_projects\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"timecleanProjects\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"change\\\",\\\"classes\\\"],[[24,[\\\"timecleanProjects\\\"]],[24,[\\\"project\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"projectChanged\\\"],null],\\\"form-control\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timeclean.sync.no_devices\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"timecleanSynced\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"timeclean.sync.command_sent\\\"],null],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[22,\\\"error\\\"],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"timecleanSynced\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-lg btn-block btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-lg btn-block btn-success\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"syncTimeclean\\\",[24,[\\\"project\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-lg btn-block btn-info\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/passes/sync-timeclean-modal/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"WeryqAbD\",\"block\":\"{\\\"symbols\\\":[\\\"failedItem\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\",\\\"sendChange\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@localStorageKey\\\",\\\"@showColumns\\\",\\\"@showFilters\\\",\\\"@filter\\\",\\\"@blockFilters\\\",\\\"@filterByValues\\\",\\\"@skipCustomQueryParams\\\",\\\"@hideAdditionalFiltersButton\\\"],[\\\"orientation\\\",[23,0,[\\\"localStorageKey\\\"]],\\\"ori_user,ori_site,pass_start,pass_end,ori_employer,extra_info\\\",\\\"ori_user,ori_site,ori_employer\\\",[28,\\\"hash\\\",null,[[\\\"pass_start\\\",\\\"pass_end\\\"],[\\\"!null\\\",\\\"!null\\\"]]],true,[23,0,[\\\"qParams\\\"]],true,true]],{\\\"statements\\\":[[0,\\\"\\\\n      \\\"],[6,[23,2,[\\\"filters\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n          \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"filter-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"pass.filter.pass_valid_range\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"date-range-picker\\\",null,[[\\\"fieldName\\\",\\\"dateChange\\\",\\\"value\\\"],[\\\"pass_start:pass_end\\\",[28,\\\"action\\\",[[23,0,[]],[23,6,[]]],null],[24,[\\\"pass_valid_range\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"filter-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"pass.filter.pass_ends_range\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"date-range-picker\\\",null,[[\\\"fieldName\\\",\\\"dateChange\\\",\\\"value\\\"],[\\\"pass_end:pass_end\\\",[28,\\\"action\\\",[[23,0,[]],[23,6,[]]],null],[24,[\\\"pass_ends_range\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n    \\\"],[6,[23,2,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"rollock\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,5,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"syncRollock\\\",[23,3,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"rollock.sync\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"modules.megaflex\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,5,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"syncMegaflex\\\",[23,3,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"megaflex.sync\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.rfid\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,5,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"showTimecleanModal\\\"],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"timeclean.sync\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n      \\\"],[6,[23,3,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"edit\\\"]]],[0,\\\"\\\\n      \\\"],[6,[23,3,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"orientations/passes/sync-timeclean-modal\\\",null,[[\\\"timecleanProjects\\\",\\\"showTimecleanModal\\\"],[[24,[\\\"timecleanProjects\\\"]],[24,[\\\"showTimecleanModal\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSyncProgress\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[[24,[\\\"syncModalHeader\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"allDone\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[[24,[\\\"syncExecutingMessage\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"syncErrorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"megaflex.sync.error\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[22,\\\"syncErrorMessage\\\"],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"syncFailedDetails\\\"]],[24,[\\\"showMegaflexSyncDetails\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mt-3\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"panel-heading\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleErrorDetails\\\"]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"glyphicon glyphicon-chevron-\\\",[28,\\\"if\\\",[[24,[\\\"showErrorDetails\\\"]],\\\"down\\\",\\\"right\\\"],null]]]],[8],[9],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"t\\\",[\\\"megaflex.error_details\\\"],null],false],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge\\\"],[8],[1,[24,[\\\"syncFailedDetails\\\",\\\"length\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showErrorDetails\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-unstyled\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"limitedSyncFailedDetails\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"mb-2\\\"],[8],[0,\\\"\\\\n                                                \\\"],[7,\\\"strong\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.id\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[23,1,[\\\"orientation_id\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"user_id\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                                    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"strong\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.user\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[23,1,[\\\"user_id\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                                \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"strong\\\",true],[8],[1,[28,\\\"t\\\",[\\\"megaflex.error.reason\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"reason_key\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                                    \\\"],[1,[28,\\\"t\\\",[[23,1,[\\\"reason_key\\\"]]],[[\\\"person\\\",\\\"error\\\"],[[23,1,[\\\"user_id\\\"]],[23,1,[\\\"error\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                                    \\\"],[1,[28,\\\"t\\\",[\\\"megaflex.error.sync_exception\\\"],[[\\\"person\\\",\\\"error\\\"],[[23,1,[\\\"user_id\\\"]],[23,1,[\\\"error\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"remainingErrorCount\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[10,\\\"style\\\",\\\"padding: 10px 15px; border-top: 1px solid #ddd;\\\"],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"em\\\",true],[8],[1,[22,\\\"remainingErrorCount\\\"],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"megaflex.error.more_errors\\\"],null],false],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[10,\\\"aria-valuenow\\\",\\\"20\\\"],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[11,\\\"style\\\",[22,\\\"progressStyle\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[22,\\\"progress\\\"],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/passes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/reports/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationController;\n\nimport Ember from 'ember';\nimport { inject as service } from '@ember/service';\nimport { computed } from '@ember/object';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nOrientationController = GeneralReportController.extend({\n    Collector: service('collector-service'),\n\n    useAddonFormReport: computed(function() {\n        return this.Collector.testNeeds(['products.orientations_parent||products.workPermit||products.orientations_allow_employer_edit']);\n    }),\n\n    filters: Em.A([\n        Em.Object.create({\n            field: 'ori_site',\n        }),\n        Em.Object.create({\n            field: 'ori_date',\n        }),\n    ]),\n    projectObserver: function () {\n        return this.set('page', 1);\n    }.observes('project'),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideEdit: true,\n        }),\n        sortByColumn: 'ori_date',\n    }),\n    ori_date:\n        moment().subtract(2, 'year').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    queryParams: ['page', 'user', 'ori_site', 'ori_employer', 'ori_user', 'ori_date'],\n    filter: false,\n    search: false,\n    user: null,\n    ori_site: null,\n    project: null,\n    ori_employer: null,\n    ori_user: null,\n    //    status: 'all'\n    form: 'orientation',\n    //Could not get this from model for some reason\n    localStorageKey: 'Tt4.Orientation',\n    // These should probably go to general report controller and be loaded from settings api\n    showColumns: [\n        'ori_date',\n        'special_warning',\n        'ori_place',\n        'ori_user',\n        'ori_site',\n        'ori_employer',\n        'sign_emp_img',\n        'sign_per_img',\n    ],\n    cancelRoute: 'orientations.reports',\n    actions: {\n        closeEditModal: function () {\n            this.editRecord.rollbackAttributes();\n            return this.set('editRecord', null);\n        },\n    },\n});\n\nexport default OrientationController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/reports/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nOrientationRoute = GeneralReportRoute.extend({\n    form: 'orientation',\n    queryParams: {\n        ori_date: {\n            refreshModel: true,\n            replace: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        ori_site: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        //params.ori_date = params.date\n        //delete params.date\n        if (params.project) {\n            if (params.project !== 'null') {\n                params.ori_site = params.project;\n            }\n        }\n        delete params.project;\n        params.sideload = true;\n        return this.store.query('orientation', params);\n    },\n});\n\nexport default OrientationRoute;\n","export default Ember.HTMLBars.template({\"id\":\"kn3T89bT\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"useAddonFormReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showFilters\\\",\\\"@filterByValues\\\"],[\\\"orientation\\\",\\\"ori_date,ori_site,ori_user,ori_employer\\\",[23,0,[\\\"qParams\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"editRecord\\\"]]],null]],null],\\\"remove,history,overview,edit\\\"]]],[0,\\\"\\\\n\\\\n            \\\"],[6,[23,3,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"formatter\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"formatter\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"editRecord\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.add_orientation\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"collector/form-add/forms/orientation\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\",\\\"@showSaved\\\"],[\\\"orientation\\\",[23,0,[\\\"editRecord\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null],true]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/reports/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nOrientationsRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default OrientationsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"ZV87ncKr\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/withoutori/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsWithoutoriController;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nOrientationsWithoutoriController = Ember.Controller.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    dialogs: Em.inject.service(),\n    store: Em.inject.service(),\n    flags: Ember.inject.service(),\n    addController: Ember.inject.controller('orientations/add'),\n    columns: ['project', 'user'],\n    rowsPerPage: 25,\n    pageCount: Ember.computed('model.count', function () {\n        return Math.ceil(this.get('model.count') / this.get('rowsPerPage'));\n    }),\n    page: 1,\n    form: 'orientation',\n    daysBack: Em.computed(function () {\n        return this.flags.test(\"users-without-ori-period\") ?? 30;\n    }),\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'ori_site',\n                form: 'orientation',\n                value: this.get('ori_site'),\n            }),\n            Em.Object.create({\n                field: 'employer',\n                form: 'user',\n                value: this.get('employer'),\n            }),\n        ]);\n    }),\n    queryParams: ['ori_site', 'employer', 'page'],\n    ori_site: null,\n    employer: null,\n    // get translation for every column\n    translated_columns: Em.computed('columns', function () {\n        var c, columns, intl, translated_columns;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        columns = this.get('columns');\n        translated_columns = [];\n        $.each(columns, (key, item) => {\n            return translated_columns.push(intl.t('report.userswithoutori.' + item));\n        });\n        return translated_columns;\n    }),\n    message: Em.computed('model', function () {\n        if (this.get('model.error') === 'too_many_users') {\n            return this.get('intl').t('orientations.message_too_many_users');\n        }\n    }),\n    data: Em.computed('model', function () {\n        var columns, data, formatted_data, ids;\n        data = this.get('model.users');\n        if (!data) {\n            return null;\n        }\n        ids = [];\n        columns = this.get('columns');\n        formatted_data = Em.A([]);\n        data.forEach((unformatted_row) => {\n            var row;\n            row = Ember.Object.create();\n            if (unformatted_row.id) {\n                row.id = unformatted_row.id;\n            }\n            row.id = unformatted_row['projectid'] + '_' + unformatted_row['userid'];\n            $.each(columns, (key, column) => {\n                var cell;\n                cell = unformatted_row[column];\n                if (!Number.isInteger(cell)) {\n                    return (row[column] = new Ember.String.htmlSafe(cell));\n                } else {\n                    return (row[column] = cell);\n                }\n            });\n            return formatted_data.pushObjects([row]);\n        });\n        return formatted_data;\n    }),\n    checkedActions: Em.computed(function () {\n        return [\n            {\n                name: 'orientateUsers',\n            },\n        ];\n    }),\n    actions: {\n        catchActions: function (action, row) {\n            var addController,\n                data,\n                i,\n                ids_array,\n                lastprojectid,\n                len,\n                projectid,\n                promise,\n                promises,\n                tmp_rows,\n                userObjs,\n                userids;\n            if (action === 'checkedRowsAction') {\n                userids = [];\n                userObjs = [];\n                tmp_rows = row.rows;\n                addController = this.get('addController');\n                lastprojectid = '';\n                projectid = tmp_rows[0].id.split('_')[0];\n                promises = [];\n                for (i = 0, len = tmp_rows.length; i < len; i++) {\n                    data = tmp_rows[i];\n                    ids_array = data.id.split('_'); // projectid, userid\n                    userids.push(ids_array[1]);\n                    promise = this.get('store').findRecord('user', ids_array[1]);\n                    promises.push(promise);\n                    promise.then((user) => {\n                        return userObjs.push(user);\n                    });\n                    if (lastprojectid !== '' && lastprojectid !== ids_array[0]) {\n                        this.get('dialogs').alert(\n                            this.get('intl').t('orientations.warning_multiple_projects'),\n                        );\n                        return;\n                    }\n                    lastprojectid = ids_array[0];\n                }\n                Promise.all(promises).then(() => {\n                    return this.get('store')\n                        .findRecord('project', projectid)\n                        .then((project) => {\n                            addController.set('users', userids);\n                            addController.set('userData', userObjs);\n                            this.set('session.currentUser.currentMySite', project);\n                            // support new orientation user selector\n                            addController.set('projectRecord', project);\n                            addController.set('userRecords', userObjs);\n                            return this.transitionToRoute('orientations.add');\n                        });\n                });\n            }\n        },\n        filterChanged: function (value, fieldName) {\n            this.set('page', 1);\n            if (Em.isEmpty(value)) {\n                return this.set(fieldName, null);\n            } else {\n                return this.set(fieldName, value);\n            }\n        },\n    },\n});\n\nexport default OrientationsWithoutoriController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/orientations/withoutori/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsWithoutoriRoute;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nOrientationsWithoutoriRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    ttapi: Ember.inject.service(),\n    queryParams: {\n        ori_site: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        if (Em.isEmpty(params.ori_site)) {\n            delete params.ori_site;\n        }\n        if (Em.isEmpty(params.employer)) {\n            delete params.employer;\n        }\n        params.limit = 25;\n        params.offset = 0;\n        if (params.page) {\n            params.offset = params.page * params.limit - params.limit;\n            delete params.page;\n        }\n        return this.get('ttapi').request('/orientations/users_without_ori', {\n            type: 'GET',\n            data: params,\n        });\n    },\n});\n\nexport default OrientationsWithoutoriRoute;\n","export default Ember.HTMLBars.template({\"id\":\"OXuDkM2y\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.orientations.without_ori.title\\\"],[[\\\"days\\\"],[[24,[\\\"daysBack\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"message\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n   \\\"],[7,\\\"h4\\\",true],[8],[1,[22,\\\"message\\\"],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"ids\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"order\\\",\\\"rowAction\\\",\\\"checkable\\\",\\\"checkedActions\\\"],[[24,[\\\"columns\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"data\\\"]],[24,[\\\"ids\\\"]],[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",[24,[\\\"order\\\"]],\\\"showRow\\\",true,[24,[\\\"checkedActions\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"rowsPerPage\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/orientations/withoutori/template.hbs\"}});","/* eslint-disable ember/no-observers */\nimport { alias } from '@ember/object/computed';\nimport Controller, { inject as controller } from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { computed, observer, get, set } from '@ember/object';\n\nconst PassAddController = Controller.extend({\n    saved: controller(),\n\n    Collector: service('collector-service'),\n    intl: service(),\n\n    chooseUser: true,\n    no_orientation: false,\n    showNext: false,\n    no_orientation_error: false,\n\n    pass_start_error: false,\n    pass_end_error: false,\n\n    save_disabled: false,\n\n    content: alias('model'),\n\n    oriUserField: computed(function () {\n        return this.Collector.formField('orientation', 'ori_user');\n    }),\n    oriProjectField: computed(function () {\n        return this.Collector.formField('orientation', 'ori_site');\n    }),\n\n    overlap: observer('user', 'ori_site', function () {\n        if (this.user && this.ori_site) {\n            return this.store\n                .query('orientation', { ori_site: this.ori_site.id, ori_user: this.user.id })\n                .then(this.handleData.bind(this));\n        }\n    }),\n\n    actions: {\n        continue() {\n            return set(this, 'chooseUser', false);\n        },\n        updateDisabledButton() {\n            const pass_start = get(this, 'content.pass_start');\n            const pass_end = get(this, 'content.pass_end');\n            if (moment(pass_start).isValid() && moment(pass_end).isValid()) {\n                set(this, 'save_disabled', false);\n            } else {\n                set(this, 'save_disabled', true);\n            }\n        },\n        startDateChanged: function (pass_start) {\n            if (!moment(pass_start).isValid()) {\n               set(this, `pass_start_error`, true);\n               set(this, \"save_disabled\", true);\n            } else {\n                set(this, `pass_start_error`, false);\n            }\n            this.send('updateDisabledButton');\n        },\n        endDateChanged: function (pass_end) {\n            if (!moment(pass_end).isValid()) {\n               set(this, `pass_end_error`, true);\n            } else {\n                set(this, `pass_end_error`, false);\n            }\n            this.send('updateDisabledButton');\n        },\n        async save() {\n            const row = await this.content.save();\n\n            set(this, 'no_orientation', false);\n            set(this, 'content', null);\n            set(this, 'showNext', false);\n            set(this, 'chooseUser', true);\n            set(this, 'user', null);\n            set(this, 'saved.model', row);\n            set(this, 'saved.afterSave', 'orientations.passes');\n\n            return this.transitionToRoute('saved');\n        },\n    },\n\n    async handleData(orientation) {\n        if (orientation.length === 0) {\n            set(this, 'no_orientation_error', this.intl.t('orientations.no_orientation_error'));\n            return set(this, 'showNext', false);\n        } else {\n            set(this, 'content', orientation.firstObject);\n            set(this, 'no_orientation_error', false);\n            set(this, 'showNext', true);\n            const oriProjId = orientation.firstObject.ori_site.id;\n            if (this.Collector.testNeeds(['employer', 'urakkaraportointi'])) {\n                const contracts = await this.store.query('urakkaraportointi', {\n                    contract_employer: get(this, 'user.employer.id'),\n                });\n                const contractEndDateFound = contracts\n                    .sortBy('contract_month')\n                    .reverseObjects()\n                    .any((contract) => {\n                        const contrProjId = get(contract, 'contract_project.id');\n                        if (contrProjId === oriProjId) {\n                            set(this, 'content.pass_start', moment().format('YYYY-MM-DD'));\n                            set(this, 'content.pass_end', get(contract, 'contract_end_date'));\n                        }\n                        return contrProjId === oriProjId;\n                    });\n                if (!contractEndDateFound) {\n                    set(this, 'content.pass_start', moment().format('YYYY-MM-DD'));\n                    return set(\n                        this,\n                        'content.pass_end',\n                        moment().add(1, 'months').format('YYYY-MM-DD'),\n                    );\n                }\n            } else {\n                set(this, 'content.pass_start', moment().format('YYYY-MM-DD'));\n                return set(\n                    this,\n                    'content.pass_end',\n                    moment().add(1, 'months').format('YYYY-MM-DD'),\n                );\n            }\n        }\n    },\n});\nexport default PassAddController;\n","import Route from '@ember/routing/route';\n\nconst PassAddRoute = Route.extend();\n\nexport default PassAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"emPmTw00\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.pass\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"orientations.passes\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"chooseUser\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6 col-lg-4 col-lg-offset-4 col-md-offset-3 col-sm-offset-2\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientations.site\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"component\\\",[\\\"collector/fields/power-database\\\"],[[\\\"field\\\",\\\"onchange\\\"],[[24,[\\\"oriProjectField\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"ori_site\\\"]]],null]],null]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6 col-lg-4 col-lg-offset-4 col-md-offset-3 col-sm-offset-2\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"orientation.ori_user\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"component\\\",[\\\"collector/fields/power-database\\\"],[[\\\"field\\\",\\\"onchange\\\"],[[24,[\\\"oriUserField\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"user\\\"]]],null]],null]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"no_orientation_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[22,\\\"no_orientation_error\\\"],false],[7,\\\"br\\\",true],[8],[9],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"orientations.add\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"orientations.add_orientation\\\"],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showNext\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"continue\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-primary link\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"orientations.pass_dates\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"pass_start\\\"],[11,\\\"style\\\",[28,\\\"if\\\",[[24,[\\\"pass_start_error\\\"]],\\\"color: red;\\\",\\\"\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"orientations.pass_start\\\"],null],false],[9],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"mandatoryArr\\\",\\\"pass_start\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"name\\\",\\\"startDate\\\",\\\"change\\\"],[\\\"form-control input-lg\\\",[24,[\\\"content\\\",\\\"pass_start\\\"]],\\\"pass_start\\\",[24,[\\\"passStart\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"startDateChanged\\\",[24,[\\\"content\\\",\\\"pass_start\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"pass_start_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger mt-4\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"validation.error.date_correct\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"pass_end\\\"],[11,\\\"style\\\",[28,\\\"if\\\",[[24,[\\\"pass_end_error\\\"]],\\\"color: red;\\\",\\\"\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"orientations.pass_end\\\"],null],false],[9],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"mandatoryArr\\\",\\\"pass_end\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"startDate\\\",\\\"change\\\"],[\\\"form-control input-lg\\\",\\\"pass_end\\\",[24,[\\\"content\\\",\\\"pass_end\\\"]],[24,[\\\"passStart\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"endDateChanged\\\",[24,[\\\"content\\\",\\\"pass_end\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"pass_end_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger mt-4\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"validation.error.date_correct\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"extra_info\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.orientation.extra_info\\\"],null],false],[9],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"mandatoryArr\\\",\\\"extra_info\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\"],[\\\"3\\\",\\\"form-control input-lg\\\",\\\"extra_info\\\",[24,[\\\"content\\\",\\\"extra_info\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[12,\\\"disabled\\\",[22,\\\"save_disabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/pass/add/template.hbs\"}});","import { alias } from '@ember/object/computed';\nimport Controller from '@ember/controller';\n\nconst PassIndexController = Controller.extend({\n    content: alias('model'),\n});\n\nexport default PassIndexController;\n","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst PassIndexRoute = Route.extend(AuthenticatedRouteMixin);\n\nexport default PassIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"DtK76DsM\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/pass/index/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst PassRoute = Route.extend(AuthenticatedRouteMixin);\n\nexport default PassRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/password/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PasswordIndexController;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nimport initController from '../../../mixins/init-controller';\n\nPasswordIndexController = Ember.Controller.extend(initController, {\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    localStorageWrapper: Ember.inject.service(),\n    errorMessage: null,\n    loadingMessage: null,\n    okMessage: null,\n    init_functions: function () {\n        var ls, username;\n        this._super();\n        ls = this.get('localStorageWrapper');\n        username = ls.getSavedUsername();\n        return this.set('savedUsername', username);\n    },\n    actions: {\n        cancel: function () {\n            return this.transitionToRoute('login');\n        },\n        sendLink: function (type) {\n            var intl, req, self, username;\n            intl = this.get('intl');\n            this.set('errorMessage', null);\n            this.set('loadingMessage', intl.t('password.sending_recovery_link'));\n            self = this;\n            username = this.get('savedUsername');\n            req = this.Collector.ttapi({\n                url: 'password_recovery/send',\n                data: {\n                    username: username,\n                    type: type,\n                    language: moment.locale(),\n                    callback_url: config.APP.password_recovery_callbackurl,\n                },\n                method: 'post',\n            });\n            return req.then(\n                function (resp) {\n                    var message;\n                    self.set('loadingMessage', null);\n                    if (resp.sms_sent) {\n                        message = intl.t('password.link_sent_to_number');\n                        self.set('okMessage', message);\n                    }\n                    if (resp.email_sent) {\n                        message = intl.t('password.link_sent_to_email');\n                        return self.set('okMessage', message);\n                    }\n                },\n                (reason) => {\n                    var message;\n                    message = intl.t('password.link_sending_failed');\n                    return this.set('errorMessage', message);\n                },\n            );\n        },\n    },\n});\n\nexport default PasswordIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/password/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PasswordIndexRoute;\n\nimport Ember from 'ember';\n\nimport initRoute from '../../../mixins/init-route';\n\nPasswordIndexRoute = Ember.Route.extend(initRoute);\n\nexport default PasswordIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Otk8BFvF\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"password-recovery\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container password\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"popup\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"password_header\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/brand/first_time_loader_logo.svg\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"header.path.login\\\"],null]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n            \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-signin\\\"],[10,\\\"role\\\",\\\"form\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"form-signin-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"password.header\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[1,[22,\\\"errorMessage\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loadingMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[22,\\\"loadingMessage\\\"],false],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress progress-striped active\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[10,\\\"aria-valuenow\\\",\\\"100\\\"],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[10,\\\"style\\\",\\\"width: 100%\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"okMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[22,\\\"okMessage\\\"],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"loadingMessage\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"okMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner-addon left-addon\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-user\\\"],[8],[9],[0,\\\"\\\\n\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"id\\\",\\\"value\\\",\\\"class\\\",\\\"placeholder\\\",\\\"autocapitalize\\\"],[\\\"identification\\\",[24,[\\\"savedUsername\\\"]],\\\"form-control add-fields\\\",[28,\\\"t\\\",[\\\"login.username\\\"],null],\\\"off\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"okMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-lg btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendLink\\\",\\\"email\\\"]],[8],[1,[28,\\\"t\\\",[\\\"password.get_new_password_email\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-lg btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendLink\\\",\\\"sms\\\"]],[8],[1,[28,\\\"t\\\",[\\\"password.get_new_password_sms\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-lg btn-warning btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"password.back_to_login\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\" \\\"],[2,\\\" /container \\\"],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/password/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/password/recovery/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PasswordRecoveryController;\n\nimport Ember from 'ember';\n\nPasswordRecoveryController = Ember.Controller.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    queryParams: ['a', 'u', 'c', 'h'],\n    disabled: true,\n    showPasswordChange: false,\n    paramObs: Ember.observer('a', 'u', 'c', 'h', function () {\n        return Ember.run.once(this, this.checkHash);\n    }),\n    checkHash: function () {\n        var intl, req, self;\n        self = this;\n        intl = this.get('intl');\n        req = this.Collector.ttapi({\n            url: 'password_recovery/checkParams',\n            data: {\n                a: this.get('a'),\n                u: this.get('u'),\n                c: this.get('c'),\n                h: this.get('h'),\n            },\n            method: 'post',\n        });\n        return req.then(\n            function (resp) {\n                return self.set('showPasswordChange', true);\n            },\n            function (reason) {\n                return self.set(\n                    'errorMessage',\n                    intl.t('password.recovery.' + reason.payload.error),\n                );\n            },\n        );\n    },\n    passwordObs: Ember.observer('new_password', function () {\n        if (this.get('new_password').length < 8) {\n            this.set('showLengthError', true);\n            return this.set('disabled', true);\n        } else {\n            this.set('showLengthError', false);\n            return this.set('disabled', false);\n        }\n    }),\n    actions: {\n        changePassword: function () {\n            var intl, req, self;\n            intl = this.get('intl');\n            this.set('loadingMessage', intl.t('password.recovery.changing_password'));\n            this.set('showPasswordChange', false);\n            self = this;\n            req = this.Collector.ttapi({\n                url: 'password_recovery/setPassword',\n                data: {\n                    a: this.get('a'),\n                    u: this.get('u'),\n                    c: this.get('c'),\n                    h: this.get('h'),\n                    password: this.get('new_password'),\n                },\n                method: 'post',\n            });\n            return req.then(\n                function (resp) {\n                    self.set('okMessage', intl.t('password.recovery.password_changed'));\n                    return self.set('loadingMessage', null);\n                },\n                function (reason) {\n                    self.set(\n                        'errorMessage',\n                        intl.t('password.recovery.' + reason.responseJSON.error),\n                    );\n                    return self.set('loadingMessage', null);\n                },\n            );\n        },\n        cancel: function () {\n            return this.transitionToRoute('login');\n        },\n    },\n});\n\nexport default PasswordRecoveryController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/password/recovery/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PasswordRecoveryRoute;\n\nimport Ember from 'ember';\n\nPasswordRecoveryRoute = Ember.Route.extend();\n\nexport default PasswordRecoveryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"lzpY+MoK\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"password-recovery\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container password\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"popup\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"password_header\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/brand/login_logo.png\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"header.path.login\\\"],null]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n            \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-signin\\\"],[10,\\\"role\\\",\\\"form\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"form-signin-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"password.recovery.header\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[1,[22,\\\"errorMessage\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loadingMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[22,\\\"loadingMessage\\\"],false],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress progress-striped active\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[10,\\\"aria-valuenow\\\",\\\"100\\\"],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[10,\\\"style\\\",\\\"width: 100%\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"okMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[22,\\\"okMessage\\\"],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showPasswordChange\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner-addon left-addon\\\"],[8],[0,\\\"\\\\n\\\\n                        \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-lock\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"id\\\",\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"placeholder\\\",\\\"autocapitalize\\\"],[\\\"password\\\",\\\"password\\\",[24,[\\\"new_password\\\"]],\\\"form-control add-fields\\\",[28,\\\"t\\\",[\\\"password.recovery.new_password\\\"],null],\\\"off\\\"]]],false],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLengthError\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right text-danger\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-exclamation-sign\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"password.recovery.too_short_password\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"disabled\\\",[22,\\\"disabled\\\"]],[12,\\\"class\\\",\\\"btn btn-lg btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changePassword\\\"]],[8],[1,[28,\\\"t\\\",[\\\"password.recovery.change\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-lg btn-warning btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"password.back_to_login\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\" \\\"],[2,\\\" /container \\\"],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/password/recovery/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/password/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PasswordRoute;\n\nimport Ember from 'ember';\n\nPasswordRoute = Ember.Route.extend();\n\nexport default PasswordRoute;\n","export default Ember.HTMLBars.template({\"id\":\"FwnWcisE\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/password/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/accident/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceAccidentController;\n\nimport Ember from 'ember';\n\nPresenceAccidentController = Ember.Controller.extend({\n    Collector: Em.inject.service('collector-service'),\n    showTable: Ember.computed('filterValues', function () {\n        var filterValues, project;\n        filterValues = this.get('filterValues');\n        if (!filterValues) {\n            return false;\n        }\n        project = filterValues.findBy('name', 'project');\n        return !Ember.isEmpty(project.value);\n    }),\n    path: 'presence',\n    rows: 0,\n    getRows: Em.observer('filterValues', function () {\n        var c, project, promise, query, query_str_arr, url;\n        url = this.get('path');\n        query = this.get('filterValues');\n        project = query.findBy('name', 'project');\n        if (Ember.isEmpty(project.value)) {\n            return;\n        }\n        if (query) {\n            query_str_arr = [];\n            $.each(query, (key, item) => {\n                if (!item.value) {\n                    return;\n                }\n                return query_str_arr.push(item.name + '=' + item.value);\n            });\n            if (query_str_arr.length === 0) {\n                this.set('rows', 0);\n            }\n            url += '?' + query_str_arr.join('&');\n        }\n        url += '&limit=1&out=(empty)';\n        c = this.get('Collector');\n        promise = c.ttapi({\n            url: url,\n        });\n        return promise.then((data) => {\n            return this.set('rows', data.count);\n        });\n    }),\n});\n\nexport default PresenceAccidentController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/accident/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceAccidentRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nPresenceAccidentRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default PresenceAccidentRoute;\n","export default Ember.HTMLBars.template({\"id\":\"p3uxP2uY\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/filters-comp\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"values\\\"],[\\\"project\\\",\\\"presence\\\",[24,[\\\"filterValues\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showTable\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"presence.accident.on_site\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"blockquote\\\",true],[8],[7,\\\"h1\\\",true],[8],[1,[22,\\\"rows\\\"],false],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[1,[28,\\\"api-report\\\",null,[[\\\"filters\\\",\\\"path\\\",\\\"translationPrefix\\\",\\\"pdfSubHeader\\\"],[[24,[\\\"filterValues\\\"]],\\\"accident\\\",\\\"report.accident\\\",\\\"project\\\"]]],false],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/accident/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceAddController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\nimport { get } from '@ember/object';\n\nimport collector from '../../../classes/collector';\n\nimport $ from 'jquery';\n\nimport { captureException } from '@sentry/browser';\n\nPresenceAddController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    location: Ember.computed(function () {\n        return collector.getFormObject('presence.location');\n    }),\n    projectObs: function () {\n        return this.set('selectedProject', this.get('model.project'));\n    }.observes('model.project.name'),\n    projectField: Em.computed('model', function () {\n        var field;\n        field = this.get('Collector').fieldArray('presence', ['project'])[0];\n        field.value = this.get('model.project');\n        field.filterOptions = {\n            presence_project: 'on',\n        };\n        return field;\n    }),\n    mySiteSelected: Em.computed.and('session.currentUser.currentMySite', 'outActive'),\n    setCurrentMySite: Em.on(\n        'init',\n        Em.observer('session.currentUser.currentMySite', 'outActive', 'model', function () {\n            var site;\n            if (!this.get('outActive') || !this.get('model')) {\n                return;\n            }\n            site = this.get('session.currentUser.currentMySite');\n            if (site) {\n                return this.set('model.project', site);\n            }\n        }),\n    ),\n    projectDisabled: Ember.computed('inActive', function () {\n        if (this.get('inActive')) {\n            return 'disabled';\n        } else {\n            return false;\n        }\n    }),\n    force_location: Ember.computed(function () {\n        if (\n            collector.getFormObject('project.force_location') &&\n            this.get('session.currentUser.userlevel') !== '5'\n        ) {\n            return true;\n        }\n    }),\n    custom_projects: Em.A([]),\n    inoutLoading: false,\n    getIn: function (row) {\n        var self;\n        self = this;\n        if (!this.get('inActive')) {\n            return this.get('store')\n                .findRecord('project', this.get('selectedProject.id'), {\n                    reload: true,\n                })\n                .then((project) => {\n                    if (!project.get('presence_project')) {\n                        this.get('dialogs').alert(this.get('intl').t('presence.not_an_pl_project'));\n                        this.set('inActive', false);\n                        this.set('outActive', true);\n                        this.set('inoutLoading', false);\n                        return;\n                    }\n                    row.set('project', project);\n                    return this.saveRow(row, 'in').then(function () {\n                        self.set('inActive', true);\n                        return self.set('outActive', false);\n                    });\n                });\n        }\n    },\n    getOut: function (row) {\n        var self;\n        self = this;\n        if (!this.get('outActive')) {\n            return this.saveRow(row, 'out').then(function () {\n                self.set('inActive', false);\n                return self.set('outActive', true);\n            });\n        }\n    },\n    saveRow: function (row, status) {\n        var self;\n        self = this;\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            this.set('apiError', null);\n            if (status === 'out') {\n                row.set('in', void 0);\n                row.set('out', moment().format('HH:mm'));\n            } else if (status === 'in') {\n                row.set('in', moment().format('HH:mm'));\n                row.set('date', moment().format('YYYY-MM-DD'));\n            } else if (status === 'error') {\n                //                row.set 'out', moment().format('HH:mm')\n                row.set('in', void 0);\n                row.set('status', 'error_out');\n            }\n            return row.save().then(\n                function () {\n                    var newrow, store;\n                    if (status === 'out' || status === 'error') {\n                        store = self.get('store');\n                        newrow = store.createRecord('presence', {\n                            date: moment().format('YYYY-MM-DD'),\n                            project: self.get('selectedProject'),\n                            in: moment().format('HH:mm'),\n                        });\n                        self.set('model', newrow);\n                    }\n                    self.set('inoutLoading', false);\n                    return resolve();\n                },\n                (error) => {\n                    captureException(error);\n                    const errorCode = get(error, 'errors.0.errorMeta.message');\n                    let message = JSON.stringify(error.errors != null ? error.errors : error);\n\n                    if (errorCode === 'not found') {\n                        message = this.get('intl').t('validation.error.id06_not_found');\n                    } else if (errorCode) {\n                        const translationKey = `user.action.checkid06.reason_${errorCode}`;\n                        if (this.get('intl').exists(translationKey))\n                            message = this.get('intl').t(translationKey);\n                    }\n\n                    this.set('apiError', message);\n\n                    self.set('inoutLoading', false);\n                    return reject(error);\n                },\n            );\n        });\n    },\n    //time out counter 10 to 0\n    seconds: 0,\n    updateSecs: function () {\n        if (this.get('seconds') === 0) {\n            return;\n        }\n        return Ember.run.later(() => {\n            this.decrementProperty('seconds');\n            return this.updateSecs();\n        }, 1000);\n    },\n    //presence over 16h\n    checkPresenceOver16h: function () {\n        var diff, in_datetime, now, self;\n        //only when checking out\n        if (this.get('outActive')) {\n            return;\n        }\n        self = this;\n        now = moment();\n        in_datetime = moment(this.get('model.date') + ' ' + this.get('model.in'));\n        diff = now.diff(in_datetime, 'hours');\n        this.set('hoursActive', diff);\n        if (diff >= 16) {\n            //show alert\n            return this.get('dialogs')\n                .alert(this.get('intl').t('presence.over16h_automatic_checkout'))\n                .then((con) => {\n                    var row;\n                    row = this.get('model');\n                    return this.saveRow(row, 'error').then(function () {\n                        self.set('inActive', false);\n                        self.set('outActive', true);\n                        return self.set('hoursActive', null);\n                    });\n                });\n        }\n    },\n    showEndLocation: Em.computed(function () {\n        if (collector.getFormObject('presence.end_location')) {\n            return true;\n        }\n    }),\n    actions: {\n        changeValue: function (value, fieldName) {\n            var self, store;\n            self = this;\n            store = this.get('store');\n            return store.find('project', value).then(function (project) {\n                self.set('selectedProject', project);\n                return self.set('model.project', project);\n            });\n        },\n        setProject: function (value) {\n            return this.set('selectedProject', value);\n        },\n        worksitePresence: function (value) {\n            var row;\n            // If button is timed out we just return and do nothing\n            if (this.get('timeout')) {\n                //animate on click when timeout\n                $('.big-icon').addClass('anim-no-project');\n                setTimeout(function () {\n                    return $('.big-icon').removeClass('anim-no-project');\n                }, 500);\n                return;\n            }\n            row = this.get('model');\n            if (this.get('selectedProject')) {\n                //set loading indicator\n                this.set('inoutLoading', true);\n                // Set button to timed out so we can't spamclick it\n                this.set('timeout', true);\n                this.set('seconds', 5);\n                this.updateSecs();\n                // Remove the timeout after x amount of time\n                Em.run.later(\n                    this,\n                    function () {\n                        return this.set('timeout', false);\n                    },\n                    5000,\n                );\n                // Add animation class\n                $('.big-icon').addClass('anim-check-in');\n                // Remove the animation class after it has run\n                Em.run.later(\n                    this,\n                    function () {\n                        return $('.big-icon').removeClass('anim-check-in');\n                    },\n                    500,\n                );\n                // Stamp in or out just before the animation has finished\n                return Em.run.later(\n                    this,\n                    function () {\n                        // started new presence\n                        if (value === 'in') {\n                            this.getIn(row);\n                        }\n                        // ended presence\n                        if (value === 'out') {\n                            return this.getOut(row);\n                        }\n                    },\n                    300,\n                );\n            } else {\n                //animate on click when no project (should be done with liquidfire)\n                $('.big-icon').addClass('anim-no-project');\n                return setTimeout(function () {\n                    return $('.big-icon').removeClass('anim-no-project');\n                }, 500);\n            }\n        },\n    },\n});\n\nexport default PresenceAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nPresenceAddRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    gui: Ember.inject.service(),\n    modelName: 'presence',\n    controllerName: 'presences.add',\n    savedRoute: 'presences.saved',\n    beforeModel: function () {\n        this._super(...arguments);\n        return this.set('gui.hideMobileHeader', true);\n    },\n    model: function (params) {\n        var date_range;\n        params.sideload = true;\n        //get presences from today and yesterday\n        date_range =\n            moment().subtract(1, 'weeks').format('YYYY-MM-DD') +\n            '_' +\n            moment().format('YYYY-MM-DD');\n        return this.store\n            .query('presence', {\n                date: date_range,\n                user: 'self',\n                sideload: true,\n                out: '(empty)',\n                status: 'open',\n            })\n            .then((data) => {\n                var firstObject;\n                firstObject = data.get('firstObject');\n                this.set('currentPresence', firstObject != null);\n                if (firstObject) {\n                    return firstObject;\n                } else {\n                    return this.store.createRecord('presence', {\n                        date: moment().format('YYYY-MM-DD'),\n                    });\n                }\n            });\n    },\n    setupController: function (controller, model) {\n        if (this.get('currentPresence')) {\n            controller.set('inActive', true);\n            controller.set('outActive', false);\n        } else {\n            controller.set('outActive', true);\n            controller.set('inActive', false);\n        }\n        controller.set('model', model);\n        //check if presence is over 16h old\n        return controller.checkPresenceOver16h();\n    },\n    resetController: function (controller, isExiting, transition) {\n        this._super.apply(this, arguments);\n        if (isExiting) {\n            return this.set('gui.hideMobileHeader', false);\n        }\n    },\n});\n\nexport default PresenceAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"8nhnTGMb\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.presence\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"presences.index\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6 col-lg-4 col-lg-offset-4 col-md-offset-3 col-sm-offset-2\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"presence-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"presence.worksite\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"mySiteSelected\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"presence-text\\\"],[8],[7,\\\"b\\\",true],[8],[1,[24,[\\\"session\\\",\\\"currentUser\\\",\\\"company_info\\\",\\\"company_name\\\"]],false],[0,\\\" - \\\"],[1,[24,[\\\"selectedProject\\\",\\\"name\\\"]],false],[9],[0,\\\" \\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"my-sites\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.change\\\"],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"projectDisabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"presence-text\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[24,[\\\"selectedProject\\\"]],\\\"project\\\",\\\"presence\\\"]]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"change\\\"],[[24,[\\\"projectField\\\"]],\\\"form-control add-fields\\\",\\\"setProject\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selectedProject\\\",\\\"help\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-info-sign\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[24,[\\\"selectedProject\\\",\\\"help\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"presence-icons text-center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"outActive\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"in\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"selectedProject\\\"]],\\\"active\\\"],null],\\\" big-icon circle-background \\\",[28,\\\"if\\\",[[24,[\\\"timeout\\\"]],\\\"timeout\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"worksitePresence\\\",\\\"in\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"inoutLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"load-text\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"presence.loading\\\"],null],false],[0,\\\"\\\\n                                \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"presence.check\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"presence.in\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"timeout\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[22,\\\"seconds\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"out\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"big-icon circle-background \\\",[28,\\\"if\\\",[[24,[\\\"timeout\\\"]],\\\"timeout\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"worksitePresence\\\",\\\"out\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"inoutLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"load-text\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"presence.loading\\\"],null],false],[0,\\\"\\\\n                                \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"presence.check\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"presence.out\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"timeout\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[22,\\\"seconds\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"presence-text\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selectedProject\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"inActive\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"presence.currently_on_worksite\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"outActive\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"presence.currently_not_on_worksite\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"location\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6 col-lg-4 col-lg-offset-4 col-md-offset-3 col-sm-offset-2\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group text-center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"outActive\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showEndLocation\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"gps-location\\\",null,[[\\\"value\\\",\\\"model\\\"],[[24,[\\\"model\\\",\\\"end_location\\\"]],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"gps-location\\\",null,[[\\\"value\\\",\\\"model\\\"],[[24,[\\\"model\\\",\\\"location\\\"]],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"gps-location\\\",null,[[\\\"value\\\",\\\"model\\\"],[[24,[\\\"model\\\",\\\"location\\\"]],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"apiError\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.error_prefix\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[8],[1,[22,\\\"apiError\\\"],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/add/template.hbs\"}});","import OrientationsAviController from '../../timetracker/avi/controller';\nimport EmberObject from '@ember/object';\nimport { A } from '@ember/array';\nimport { alias } from '@ember/object/computed';\n\nexport default OrientationsAviController.extend({\n    notinuse: alias('model'),\n    filters: A([\n        EmberObject.create({ field: 'project', form: 'presence', singleselect: 'true' }),\n        EmberObject.create({ field: 'homecountry', form: 'user', type: 'dropdown_country' }),\n    ]),\n});\n","import OrientationsAviRoute from '../../timetracker/avi/route';\n\nexport default OrientationsAviRoute.extend({\n    templateName: 'timetracker.avi',\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresencesEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nPresencesEditController = GeneralAddController.extend({\n    session: Em.inject.service(),\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n    disableFields: Em.observer('model', function () {\n        var cust;\n        if (\n            this.get('session.currentUser.userlevel') !== '5' &&\n            this.get('session.currentUser.userlevel') !== '3' &&\n            !moment(this.get('model.date')).isSame(moment().format('YYYY-MM-DD'))\n        ) {\n            cust = {\n                in: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                out: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                user: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                project: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                date: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n                location: {\n                    features: {\n                        disabled: true,\n                    },\n                },\n            };\n            return this.set('customization', cust);\n        }\n    }),\n});\n\nexport default PresencesEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nPresenceEditRoute = GeneralAddRoute.extend({\n    modelName: 'presence',\n    controllerName: 'presences/edit',\n    edit: true,\n    //    model: (params) ->\n    //        @store.findRecord(@get('modelName'), params.id)\n    afterSave: 'presences.report',\n});\n\nexport default PresenceEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"JdbWXU9f\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/employer-sums/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresencesEmployerSumsController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nPresencesEmployerSumsController = GeneralReportController.extend({\n    showColumns: ['employer', 'hours'],\n    filters: Em.A([\n        Em.Object.create({\n            field: 'project',\n        }),\n        Em.Object.create({\n            field: 'date',\n        }),\n    ]),\n    objects: Ember.computed(function () {\n        return {\n            employer: {\n                type: 'database',\n                features: {},\n                options: {\n                    form: 'employer',\n                    fields: ['emp_id', 'name'],\n                },\n            },\n            hours: {\n                type: 'hours',\n                features: {},\n            },\n        };\n    }),\n    form: 'presence',\n    date:\n        moment().startOf('month').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    queryParams: ['project', 'page', 'date'],\n    project: null,\n    page: null,\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n            hideCheckbox: true,\n        }),\n    }),\n});\n\nexport default PresencesEmployerSumsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/employer-sums/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresencesEmployerSumsRoute;\n\nimport Ember from 'ember';\n\nPresencesEmployerSumsRoute = Ember.Route.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n            replace: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        delete params.page;\n        if (params.project === null) {\n            delete params.project;\n        }\n        //        params.date =\n        params.groupBy = 'employer';\n        return this.Collector.cget('presence', params, true);\n    },\n});\n\nexport default PresencesEmployerSumsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"TmQWFsNz\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"presence\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"type\\\",\\\"localStorageKey\\\",\\\"settings\\\",\\\"form_objects\\\"],[\\\"bubbleTransition\\\",\\\"presence\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],\\\"group\\\",\\\"presence_employer_sums\\\",[24,[\\\"settings\\\"]],[24,[\\\"objects\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/employer-sums/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceHistoryRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nPresenceHistoryRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default PresenceHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"cT/L46+L\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"presence\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/history/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nPresenceIndexController = GeneralReportController.extend({\n    form: 'presence',\n    showColumns: ['in', 'user', 'project', 'date'],\n    queryParams: ['page', 'project', 'employer', 'user'],\n    filters: Em.A([\n        Em.Object.create({\n            field: 'project',\n        }),\n    ]),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n        }),\n    }),\n    actions: {\n        closeEditModal: function () {\n            this.editRecord.rollbackAttributes();\n            return this.set('editRecord', null);\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        exportShare: function () {\n            var params, promise;\n            params = {\n                limit: 'all',\n            };\n            if (this.qParams) {\n                Object.entries(this.qParams).forEach(function (filter) {\n                    if (filter[1] && filter[0] !== 'status') {\n                        return (params[filter[0]] = filter[1]);\n                    }\n                });\n            }\n            if (this.qParams['order']) {\n                params.order = this.qParams['order'];\n            }\n            this.set('showShareModal', true);\n            promise = this.get('Collector').ttapi({\n                url: 'share/link',\n                method: 'post',\n                data: {\n                    params: params,\n                    values: {\n                        form: this.get('form'),\n                        lang: this.get('intl.primaryLocale'),\n                    },\n                },\n            });\n            return promise.then((back) => {\n                return this.set(\n                    'shareUrl',\n                    this.get('Collector').ttapi_url() + '/share?k=' + back.link,\n                );\n            });\n        },\n    },\n    date: moment().subtract(7, 'days').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    project: null,\n});\n\nexport default PresenceIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nPresenceIndexRoute = GeneralReportRoute.extend({\n    form: 'presence',\n    session: Em.inject.service(),\n    flags: Em.inject.service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-presence')) {\n            params.sideload = true;\n            params.out = '(empty)';\n            if (this.get('session.currentUser.userlevel') === '1') {\n                params.user = 'self';\n            }\n            params.date =\n                moment().subtract(7, 'days').format('YYYY-MM-DD') +\n                '_' +\n                moment().format('YYYY-MM-DD');\n            return this.store.query('presence', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('presences.index').set('qParams', params);\n        }\n    },\n});\n\nexport default PresenceIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"sWdbtOp5\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"ExportMore\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-presence\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\",\\\"@localStorageKey\\\"],[\\\"presence\\\",[22,\\\"qParams\\\"],\\\"project,user,employer\\\",\\\"user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"date\\\",\\\"out\\\"],[[23,0,[\\\"date\\\"]],\\\"(empty)\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null],\\\"open_presences\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,6,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,6,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ExportMore\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Pdf\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"PdfFull\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Excel\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Csv\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"EmailApproval\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"RemovedStatus\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,5,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"exportShare\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"report.actions.share\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"editRecord\\\"]]],null]],null],\\\"remove,history,edit\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"presence\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"settings\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"summableFieldTypes\\\"],[\\\"bubbleTransition\\\",\\\"presence\\\",[24,[\\\"settings\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],false]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"editRecord\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.add_presence\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"collector/form-add/forms/presence\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\"],[\\\"presence\\\",[23,0,[\\\"editRecord\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/index/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"JahmqWLr\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/location/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Controller;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    columnList: ['name', 'start', 'end', 'info'],\n    translated_columns: Em.computed(function () {\n        return ['name', 'start', 'end', 'info'];\n    }),\n    queryParams: ['date', 'page', 'order'],\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    limit: 10,\n    page: 1,\n    pageCount: Ember.computed('model.users.meta.count', function () {\n        var limit;\n        limit = this.get('limit') ? this.get('limit') : 25;\n        return Math.ceil(this.get('model.users.meta.count') / limit);\n    }),\n    data: Em.computed('model.beaconData', function () {\n        var arr, format, i, len, name, ref, retArr, row;\n        retArr = [];\n        format = moment.localeData().longDateFormat('L') + ' HH:mm:ss';\n        ref = this.get('model.beaconData');\n        for (name in ref) {\n            arr = ref[name];\n            if (arr.length > 0) {\n                for (i = 0, len = arr.length; i < len; i++) {\n                    row = arr[i];\n                    retArr.pushObject(\n                        Ember.Object.create({\n                            name: name,\n                            start: moment(row['start']).format(format),\n                            end: moment(row['end']).format(format),\n                            info: row['info'],\n                        }),\n                    );\n                }\n            } else {\n                retArr.pushObject(\n                    Ember.Object.create({\n                        name: name,\n                        start: null,\n                        end: null,\n                        info: null,\n                    }),\n                );\n            }\n        }\n        return retArr;\n    }),\n    dateObs: Ember.observer('filterValues', function () {\n        var date, values;\n        values = this.get('filterValues');\n        if (!values) {\n            if (!values) {\n                date =\n                    moment().startOf('week').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('week').format('YYYY-MM-DD');\n            }\n        } else {\n            date = Ember.get(values.findBy('name', 'date'), 'value');\n        }\n        return this.set('date', date);\n    }),\n    backendurl: Ember.computed(function () {\n        return Ember.get(config, 'APP.BEACONBACKENDURL');\n    }),\n    partnerid: Ember.computed(function () {\n        return this.get('session.currentUser.services.partnerid');\n    }),\n    actions: {\n        catchActions: function (action, params) {\n            return;\n            // this doesn't work yet\n            if (\n                action === 'columnClicked' ||\n                action === 'removeRow' ||\n                action === 'changeStatus' ||\n                action === 'checkRow' ||\n                action === 'rowHistory' ||\n                action === 'lockRows' ||\n                action === 'deleteChecked' ||\n                action === 'restoreChecked'\n            ) {\n                return this.send(action, params);\n            } else {\n                return this.sendAction(action, params, this.get('settings'));\n            }\n        },\n        click: function (item) {\n            if (item.info.split(' ')[0] === 'notregistered') {\n                this.set('showBeaconInfo', true);\n                return this.set('selectedBeacon', item);\n            }\n        },\n        close: function () {\n            return this.set('showBeaconInfo', false);\n        },\n        columnClicked: function (order) {\n            var currentOrder;\n            currentOrder = this.get('order');\n            if (currentOrder === order || currentOrder === null) {\n                currentOrder = order + '-';\n            } else {\n                currentOrder = order;\n            }\n            return this.set('order', currentOrder);\n        },\n    },\n});\n\nexport default Controller;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/location/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Route;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nRoute = Ember.Route.extend({\n    session: Ember.inject.service(),\n    collector: Ember.inject.service('collector-service'),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        order: {\n            refreshModel: true,\n        },\n    },\n    backendurl: Ember.computed(function () {\n        return Ember.get(config, 'APP.BEACONBACKENDURL');\n    }),\n    model: function (params) {\n        var beaconDataArr, limit, order, promise, promises, user_params, usrs, wirepas;\n        beaconDataArr = {};\n        promises = [];\n        limit = 10;\n        order = null;\n        if ((params.order = 'name')) {\n            order = 'lastname';\n        } else if ((params.order = 'name-')) {\n            order = 'lastname-';\n        }\n        params.offset = params.page != null ? (params.page - 1) * limit : 0;\n        wirepas = this.get('collector').testNeeds(['user.wirepas']) ? true : false;\n        user_params = {\n            limit: limit,\n            offset: params.offset,\n            order: order,\n        };\n        if (wirepas) {\n            user_params.wirepas = '!(empty)';\n        } else {\n            user_params.phone_imei = '!(empty)';\n        }\n        usrs = this.get('store').query('user', user_params);\n        promise = new Em.RSVP.Promise((resolve) => {\n            return usrs.then((users) => {\n                users.forEach((user) => {\n                    var name;\n                    name = user.get('firstname') + ' ' + user.get('lastname');\n                    return promises.push(\n                        $.ajax({\n                            url:\n                                this.get('backendurl') +\n                                (wirepas ? '/rigado/getBulks' : '/beacon/getBulks'),\n                            data: {\n                                partnerid: this.get('session.currentUser.services.partnerid'),\n                                maxpause: 20,\n                                scanlevel: 0,\n                                resolution: 15,\n                                imei: user.get(wirepas ? 'wirepas' : 'phone_imei'),\n                                date: params.date,\n                            },\n                            success: (data) => {\n                                return (beaconDataArr[name] = data);\n                            },\n                        }),\n                    );\n                });\n                return Em.RSVP.Promise.all(promises).then(() => {\n                    return resolve();\n                });\n            });\n        });\n        return promise.then(() => {\n            return Ember.RSVP.hash({\n                beaconData: beaconDataArr,\n                users: usrs,\n            });\n        });\n    },\n});\n\nexport default Route;\n","export default Ember.HTMLBars.template({\"id\":\"T8GBwm2S\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/filters-comp\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"values\\\",\\\"change\\\"],[\\\"date\\\",\\\"worktime\\\",[24,[\\\"filterValues\\\"]],\\\"filterChange\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\" row report-main-content\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\"],[[24,[\\\"columnList\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"data\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/location/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/locationtree/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Controller;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nController = Ember.Controller.extend();\n\nexport default Controller;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/locationtree/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Route;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nRoute = Ember.Route.extend({\n    backendurl: Ember.computed(function () {\n        return Ember.get(config, 'APP.BEACONBACKENDURL');\n    }),\n    model: function (params) {\n        return $.ajax({\n            url: this.get('backendurl') + '/rigado/tree',\n        });\n    },\n});\n\nexport default Route;\n","export default Ember.HTMLBars.template({\"id\":\"9uobqkFZ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\"],[[24,[\\\"model\\\"]],\\\"tree\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/locationtree/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceReportController;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nPresenceReportController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    dialogs: Em.inject.service(),\n    showColumns: ['date', 'project', 'user', 'employer', 'in', 'out', 'hours', 'status'],\n    summableFieldTypes: ['hours'],\n    form: 'presence',\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n                value: this.get('project'),\n            }),\n            Em.Object.create({\n                field: 'employer',\n            }),\n            Em.Object.create({\n                field: 'user',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n        ]);\n    }),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: {\n                modal: true,\n            },\n        }),\n        sortByColumn: 'date-,in-',\n    }),\n    ownExports: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                action: 'export_skatteverket',\n                text: this.get('intl').t('report.presence.export_skatteverket'),\n            }),\n        ]);\n    }),\n    queryParams: ['project', 'date', 'user', 'employer', 'status'],\n    project: null,\n    user: null,\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    status: 'all',\n    actions: {\n        closeEditModal: function () {\n            this.editRecord.rollbackAttributes();\n            return this.set('editRecord', null);\n        },\n        ownExportAction: function (action) {\n            return this.send(action);\n        },\n        export_skatteverket: function () {\n            var c, promise, self;\n            self = this;\n            if (!this.get('project')) {\n                this.get('dialogs').alert(\n                    this.get('intl').t('report.presence.export_skatteverket_select_project'),\n                );\n                return;\n            }\n            c = this.get('Collector');\n            promise = c.ccapi({\n                url: 'skatteverketv4?date=' + this.get('date') + '&project=' + this.get('project'),\n            });\n            return promise.then((data) => {\n                var a, company, name;\n                if (data.error) {\n                    throw new Ember.Error(\n                        'skatteverket export (' +\n                            data.integration +\n                            ') failed: ' +\n                            data.error +\n                            ', code:' +\n                            data.code,\n                    );\n                    return;\n                }\n                name = 'movenium_export';\n                company = self.get('session.currentUser.company');\n                if (company) {\n                    name = company;\n                }\n                a = document.createElement('a');\n                a.setAttribute(\n                    'href',\n                    'data:text/xml;charset=utf-8,\\uFEFF' + encodeURIComponent(data),\n                );\n                //a.href = 'data:attachment/csv,' + encodeURIComponent(csvString);\n                a.target = '_blank';\n                a.download = name + '_skatteverket.xml';\n                document.body.appendChild(a);\n                return a.click();\n            });\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        exportShare: function () {\n            var params, promise;\n            params = {\n                limit: 'all',\n            };\n            if (this.qParams) {\n                Object.entries(this.qParams).forEach(function (filter) {\n                    if (filter[1] && filter[0] !== 'status') {\n                        return (params[filter[0]] = filter[1]);\n                    }\n                });\n            }\n            if (this.qParams['order']) {\n                params.order = this.qParams['order'];\n            }\n            this.set('showShareModal', true);\n            promise = this.get('Collector').ttapi({\n                url: 'share/link',\n                method: 'post',\n                data: {\n                    params: params,\n                    values: {\n                        form: this.get('form'),\n                        lang: this.get('intl.primaryLocale'),\n                    },\n                },\n            });\n            return promise.then((back) => {\n                return this.set(\n                    'shareUrl',\n                    this.get('Collector').ttapi_url() + '/share?k=' + back.link,\n                );\n            });\n        },\n    },\n});\n\nexport default PresenceReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresenceReportRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nPresenceReportRoute = GeneralReportRoute.extend({\n    form: 'presence',\n    flags: service(),\n    queryParams: {\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-presence')) {\n            params.sideload = true;\n            return this.store.query('presence', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('presences.report').set('qParams', params);\n        }\n    },\n});\n\nexport default PresenceReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"kyeYGSuG\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"ExportMore\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-presence\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\",\\\"@showFilters\\\"],[\\\"presence\\\",[22,\\\"qParams\\\"],\\\"user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"date\\\",\\\"order\\\"],[[23,0,[\\\"date\\\"]],\\\"date-,in-\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null],\\\"project,employer,user,date,q\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,6,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,6,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,6,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,6,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/presences/report?modal=presence%2C\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ExportMore\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Pdf\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"PdfFull\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Excel\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Csv\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"EmailApproval\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"RemovedStatus\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,5,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"exportShare\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"report.actions.share\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"export_taxman\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,5,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"export_skatteverket\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"report.presence.export_skatteverket\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"editRecord\\\"]]],null]],null],\\\"remove,history,overview,edit\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\",\\\"summableFieldTypes\\\",\\\"ownExports\\\",\\\"ownExportAction\\\",\\\"localStorageKey\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]],[24,[\\\"summableFieldTypes\\\"]],[24,[\\\"ownExports\\\"]],\\\"ownExportAction\\\",\\\"presence-history\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"editRecord\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.add_presence\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"collector/form-add/forms/presence\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\"],[\\\"presence\\\",[23,0,[\\\"editRecord\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/presences/report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/presences/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar PresencesRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nPresencesRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default PresencesRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsAddController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nimport collector from '../../../classes/collector';\n\nimport config from '../../../config/environment';\n\nProjectsAddController = GeneralAddController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    userId: Ember.computed('session.currentUser.id', function () {\n        return this.get('session.currentUser.id');\n    }),\n    customization: Ember.computed('model', function () {\n        var self;\n        self = this;\n        return {\n            number: {\n                default: function () {\n                    if (!self.get('model.isNew')) {\n                        return;\n                    }\n                    return self.store\n                        .query('project', {\n                            sideload: true,\n                            limit: 1,\n                            order: 'number-',\n                        })\n                        .then((projects) => {\n                            var e, number;\n                            try {\n                                number = parseInt(projects.get('firstObject.number'), 10);\n                                if (!number) {\n                                    number = 0;\n                                }\n                                return self.set('model.number', ++number);\n                            } catch (error) {\n                                e = error;\n                            }\n                        });\n                },\n            },\n            // nothing to do..\n            skv_number: {\n                template: 'projects/add/skv_number',\n            },\n            phone: {\n                template: 'projects/add/phone',\n            },\n            owner: {\n                filterOptions: {\n                    userlevel: '!1',\n                },\n            },\n        };\n    }),\n    contact_person_name: Em.observer('model.contact_user', function () {\n        if (this.get('model.contact_user') == null) {\n            this.set('model.contact_person', null);\n            this.set('model.email', null);\n            this.set('model.phone', null);\n            return;\n        }\n        //set contact person field\n        if (!this.get('model.contact_user.email') && !this.get('model.contact_user.phone')) {\n            return this.store\n                .findRecord('user', this.get('model.contact_user.id'), {\n                    reload: true,\n                })\n                .then(() => {\n                    return this.setContactPersonInfo();\n                });\n        } else {\n            return this.setContactPersonInfo();\n        }\n    }),\n    setContactPersonInfo: function () {\n        this.set(\n            'model.contact_person',\n            this.get('model.contact_user').get('lastname') +\n                ' ' +\n                this.get('model.contact_user').get('firstname'),\n        );\n        if (this.get('model.contact_user').get('email')) {\n            this.set('model.email', this.get('model.contact_user').get('email'));\n        } else {\n            this.set('model.email', null);\n        }\n        if (this.get('model.contact_user').get('phone')) {\n            this.set('model.phone', this.get('model.contact_user').get('phone'));\n        } else {\n            this.set('model.phone', null);\n        }\n        //if finnishbuilder-module, set also other contact information\n        if (this.get('Collector').testNeeds(['modules.finnishbuilder'])) {\n            this.set('model.proj_firstname', this.get('model.contact_user').get('firstname'));\n            this.set('model.proj_lastname', this.get('model.contact_user').get('lastname'));\n            if (this.get('model.contact_user').get('email')) {\n                return this.set('model.proj_email', this.get('model.contact_user').get('email'));\n            } else {\n                return this.set('model.proj_email', null);\n            }\n        }\n    },\n    countryLists: Ember.inject.service(),\n    setCountryCode: function () {\n        var code, codes, codesByNumber, companyCountry, i, len, model, number, ref, userCountry;\n        model = this.get('model');\n        codes = this.get('countryLists.phoneList');\n        codesByNumber = codes.mapBy('number');\n        userCountry = this.get('session.currentUser.homecountry');\n        companyCountry = this.get('session.currentUser.company_info.country');\n        number = null;\n        if (\n            !model.get('phone') ||\n            (((ref = model.get('phone')), indexOf.call(codesByNumber, ref) >= 0) &&\n                !this.get('countryCodeSetManually'))\n        ) {\n            for (i = 0, len = codes.length; i < len; i++) {\n                code = codes[i];\n                if (code.id === userCountry) {\n                    number = code.number;\n                    break;\n                } else if (code.id === companyCountry) {\n                    number = code.number;\n                }\n            }\n            if (number) {\n                return model.set('phone', number);\n            }\n        }\n    },\n    actions: {\n        generalAddAction: function (type, param) {\n            if (type === 'changeCountry') {\n                return this.changeCountry(param);\n            }\n            if (type === 'setCountryCode') {\n                return this.setCountryCode();\n            }\n        },\n    },\n    changeCountry: function (countrycode) {\n        this.set('countryCodeSetManually', true);\n        return this.set('model.phone', countrycode);\n    },\n});\n\nexport default ProjectsAddController;\n","export default Ember.HTMLBars.template({\"id\":\"0Qd9RM+R\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-phone-field\\\"],[8],[0,\\\"\\\\n    \\\"],[5,\\\"bs-dropdown\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"button\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-toggle form-control add-fields\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[28,\\\"country-flag\\\",[[24,[\\\"model\\\",\\\"phone\\\"]],\\\"number\\\"],null],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+358\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-fi\\\"],[8],[9],[0,\\\" +358\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+46\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-se\\\"],[8],[9],[0,\\\" +46\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+371\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-lv\\\"],[8],[9],[0,\\\" +371\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+372\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-ee\\\"],[8],[9],[0,\\\" +372\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+48\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-pl\\\"],[8],[9],[0,\\\" +48\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+44\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-gb\\\"],[8],[9],[0,\\\" +44\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+49\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-de\\\"],[8],[9],[0,\\\" +49\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+33\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-fr\\\"],[8],[9],[0,\\\" +33\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+36\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-hu\\\"],[8],[9],[0,\\\" +36\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+34\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-es\\\"],[8],[9],[0,\\\" +34\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+31\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-nl\\\"],[8],[9],[0,\\\" +31\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+47\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-no\\\"],[8],[9],[0,\\\" +47\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+370\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-lt\\\"],[8],[9],[0,\\\" +370\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+1\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-us\\\"],[8],[9],[0,\\\" +1\\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\",\\\"focus-in\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"field\\\",\\\"ext\\\"]],[24,[\\\"placeholder\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"setCountryCode\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/add/phone/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nProjectsAddRoute = GeneralAddRoute.extend({\n    modelName: 'project',\n    controllerName: 'projects.add',\n    sharedAfterSave: 'shared.project',\n    savedRoute: 'projects.saved',\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    actions: {\n        save: function (isPromiseResolved = false) {\n            var address, city, ctrl, isUniqueAddress, m, zip;\n            ctrl = this.controllerFor('projects.add');\n            if (isPromiseResolved) {\n                this._super();\n                return ctrl.get('errors').removeObject('projectExists');\n            } else {\n                isUniqueAddress = true;\n                m = this.currentModel;\n                address = m.get('address');\n                zip = m.get('zip');\n                city = m.get('city');\n                return this.store\n                    .query('project', {\n                        address: address,\n                    })\n                    .then((projects) => {\n                        projects.every((project) => {\n                            if (\n                                (project.get('address') === address &&\n                                    address &&\n                                    project.get('city') === city &&\n                                    city) ||\n                                (project.get('zip') === zip && zip)\n                            ) {\n                                isUniqueAddress = false;\n                                this.get('dialogs')\n                                    .confirm(this.get('intl').t('project.add.project_exists_error'))\n                                    .then((con) => {\n                                        if (con) {\n                                            return this.send('save', true);\n                                        } else {\n                                            ctrl.get('errors').pushObject('projectExists');\n                                            return this.send('save', true);\n                                        }\n                                    });\n                            }\n                            return isUniqueAddress; //stop loop when address is found\n                        });\n                        if (isUniqueAddress) {\n                            return this.send('save', true);\n                        }\n                    });\n            }\n        },\n    },\n});\n\nexport default ProjectsAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"5yQhybw6\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-9\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"skv_number\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-2\\\"],[8],[0,\\\"\\\\n           \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"btn btn-m-link btn-lg btn-block\\\"],[10,\\\"role\\\",\\\"button\\\"],[10,\\\"onclick\\\",\\\"window.open('https://www.skatteverket.se/foretag/etjansterochblanketter/allaetjanster/tjanster/seanmalandraochavanmalbyggarbetsplatser.4.309a41aa1672ad0c8372766.html', '_blank')\\\"],[8],[1,[28,\\\"t\\\",[\\\"projects.link_to_skv\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/add/skv_number/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"7WObp7zW\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/add-file/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsAddFileController;\n\nimport Ember from 'ember';\n\nProjectsAddFileController = Ember.Controller.extend();\n\nexport default ProjectsAddFileController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/add-file/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditAddFileRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nProjectsEditAddFileRoute = GeneralAddRoute.extend({\n    modelName: 'projectfile',\n    afterSave: Ember.computed('form', function () {\n        return {\n            //route: \"forms.form-report\"\n            route: 'projects.edit.project-files',\n            params: this.modelFor('projects.edit').get('id'),\n        };\n    }),\n    model: function (params) {\n        var project;\n        project = this.modelFor('projects.edit');\n        return this.store.createRecord('projectfile', {\n            project: project,\n        });\n    },\n});\n\nexport default ProjectsEditAddFileRoute;\n","export default Ember.HTMLBars.template({\"id\":\"dfX3MSdc\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/add-file/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { action, set, notifyPropertyChange } from '@ember/object';\nexport default class ProjectCardListController extends Controller {\n    @service ttapi;\n\n    @alias('model') projectId;\n\n    /**\n     * Retrieves users who have recorded presence or worktime entries on this project\n     * @returns {Promise<{users: Array, count: number}>} Project users with their taxnumbers and employers\n     */\n\n    get projectUsers() {\n        let params = {};\n\n        params.project = this.projectId;\n        params.limit = 'all';\n        params.cols = 'taxnumber,employer';\n\n        return this.ttapi.request('api/project/users', { data: params });\n    }\n\n    get taxnumbers() {\n        return this.getTaxnumbers();\n    }\n\n    get usesProjectFilter() {\n        return this.showReport && this._projectUsersCount > 400 && !this.employer && !this.user;\n    }\n\n    async getTaxnumbers() {\n        const projectUsers = await this.projectUsers;\n        set(this, '_projectUsersCount', projectUsers.count);\n        set(this, 'showReport', true);\n\n        if (this.employer || this.user) {\n            let users = projectUsers.users;\n            if (this.employer)\n                users = projectUsers.users.filterBy('employer', parseInt(this.employer.id));\n            if (this.user) users = projectUsers.users.filterBy('taxnumber', this.user.taxnumber);\n\n            const taxnumbers = users.mapBy('taxnumber');\n            return taxnumbers.join(',') || 'not_found';\n        }\n\n        if (projectUsers.count > 400) {\n            return 'projectId:' + this.projectId;\n        }\n\n        const taxnumbers = projectUsers.users.mapBy('taxnumber');\n        return taxnumbers.join(',') || 'not_found';\n    }\n\n    @action\n    showCard(row) {\n        set(this, 'cardRow', row);\n        set(this, 'showModal', true);\n    }\n\n    @action\n    setEmployer(employer) {\n        set(this, 'employer', employer);\n        notifyPropertyChange(this, 'taxnumbers');\n        notifyPropertyChange(this, 'usesProjectFilter');\n    }\n\n    @action\n    setUser(user) {\n        set(this, 'user', user);\n        notifyPropertyChange(this, 'taxnumbers');\n        notifyPropertyChange(this, 'usesProjectFilter');\n    }\n}\n","import Route from '@ember/routing/route';\nimport { get } from '@ember/object';\n\nexport default class ProjectCardListRoute extends Route {\n    model() {\n        return get(this.modelFor('projects.edit'), 'id');\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"u2lVTZZE\",\"block\":\"{\\\"symbols\\\":[\\\"taxnumber\\\",\\\"Report\\\",\\\"Table\\\",\\\"field\\\",\\\"value\\\",\\\"unformatted\\\",\\\"row\\\",\\\"Report\\\",\\\"Table\\\",\\\"field\\\",\\\"value\\\",\\\"unformatted\\\",\\\"row\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"employer\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25 pr-5\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"form-report-filter-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"defaults.field.employer\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"user.employer\\\"],[[\\\"useAsFilter\\\",\\\"value\\\",\\\"usePowerDropdown\\\",\\\"change\\\"],[true,[24,[\\\"employer\\\",\\\"id\\\"]],true,\\\"setEmployer\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"form-report-filter-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"defaults.field.user\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"worktime.user\\\"],[[\\\"useAsFilter\\\",\\\"value\\\",\\\"usePowerDropdown\\\",\\\"change\\\"],[true,[24,[\\\"user\\\",\\\"id\\\"]],true,\\\"setUser\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"presence.user\\\"],[[\\\"useAsFilter\\\",\\\"value\\\",\\\"usePowerDropdown\\\",\\\"change\\\"],[true,[24,[\\\"user\\\",\\\"id\\\"]],true,\\\"setUser\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"let\\\",[[28,\\\"await\\\",[[23,0,[\\\"taxnumbers\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-empty\\\",[[23,1,[]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"loader-icon\\\",[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"showReport\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"usesProjectFilter\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showFilters\\\",\\\"@showColumns\\\",\\\"@extraParams\\\",\\\"@localStorageKey\\\",\\\"@jsonapi\\\",\\\"@hideCreatedColumn\\\",\\\"@hideAdditionalFiltersButton\\\"],[\\\"card\\\",\\\"date,type\\\",\\\"name,taxnumber,type,date,image,owner\\\",[28,\\\"hash\\\",null,[[\\\"projectId\\\"],[[23,0,[\\\"projectId\\\"]]]]],\\\"project.cards\\\",true,true,true]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"Table\\\"]],[],[[\\\"@selectable\\\",\\\"@formatCells\\\"],[false,true]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"Cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,10,[]],\\\"image\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,11,[]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[23,11,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"showCard\\\",[23,13,[]]]],[8],[0,\\\"\\\\n                                    \\\"],[5,\\\"user-competences/card\\\",[],[[\\\"@width\\\",\\\"@record\\\"],[50,[23,13,[]]]]],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[23,11,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"]],\\\"parameters\\\":[10,11,12,13]}],[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[9]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showFilters\\\",\\\"@showColumns\\\",\\\"@filter\\\",\\\"@localStorageKey\\\",\\\"@jsonapi\\\",\\\"@hideCreatedColumn\\\",\\\"@hideAdditionalFiltersButton\\\"],[\\\"card\\\",\\\"date,type\\\",\\\"name,taxnumber,type,date,image,owner\\\",[28,\\\"hash\\\",null,[[\\\"taxnumber\\\"],[[23,1,[]]]]],\\\"project.cards\\\",true,true,true]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"Table\\\"]],[],[[\\\"@selectable\\\",\\\"@formatCells\\\"],[false,true]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,3,[\\\"Cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[]],\\\"image\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,5,[]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[23,5,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"showCard\\\",[23,7,[]]]],[8],[0,\\\"\\\\n                                    \\\"],[5,\\\"user-competences/card\\\",[],[[\\\"@width\\\",\\\"@record\\\"],[50,[23,7,[]]]]],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[23,5,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"]],\\\"parameters\\\":[4,5,6,7]}],[0,\\\"\\\\n                    \\\"],[6,[23,3,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"modal-container\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showModal\\\"]]],null]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup modal-image-popup\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"user-competences/card\\\",[],[[\\\"@width\\\",\\\"@record\\\"],[450,[22,\\\"cardRow\\\"]]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-overlay\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/card-list/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { computed, get } from '@ember/object';\n\nexport default Controller.extend({\n    init() {\n        this._super();\n        this.showColumns =\n            'contract_month,contract_employer,contract_type,contract_number,contract_start_date,contract_end_date,contract_billed,contract_total_price,contract_flipped';\n    },\n    project: alias('model'),\n\n    defaultValues: computed('project', function () {\n        return { contract_project: get(this, 'project') };\n    }),\n});\n","export default Ember.HTMLBars.template({\"id\":\"zAuCjNjJ\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\"],\\\"statements\\\":[[4,\\\"collector/form-report\\\",null,[[\\\"form\\\",\\\"showColumns\\\",\\\"filter\\\"],[\\\"urakkaraportointi\\\",[24,[\\\"showColumns\\\"]],[24,[\\\"defaultValues\\\"]]]],{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"filters\\\"]],\\\"expected `report.filters` to be a contextual component but found a string. Did you mean `(component report.filters)`? ('tt4/pods/projects/edit/contract_report/template.hbs' @ L2:C6) \\\"],null]],[[\\\"showColumns\\\"],[\\\"contract_month,contract_employer\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/projects/edit/contract_report/template.hbs' @ L3:C7) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"rowActions\\\"]],\\\"expected `table.rowActions` to be a contextual component but found a string. Did you mean `(component table.rowActions)`? ('tt4/pods/projects/edit/contract_report/template.hbs' @ L4:C10) \\\"],null]],[[\\\"showActions\\\"],[\\\"edit,remove\\\"]]],false],[0,\\\"\\\\n        \\\"],[1,[23,2,[\\\"no-content\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/contract_report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nimport config from '../../../config/environment';\n\nProjectsEditController = GeneralAddController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Em.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n    subMenus: Ember.computed('dashboardView.[]', 'model.proj_type', function () {\n        var c, subMenus;\n        c = this.get('Collector');\n        subMenus = [\n            {\n                link: 'projects.edit.overview',\n                text: 'submenu.project.overview',\n            },\n            {\n                link: 'projects.edit.index',\n                text: 'menu.edit_project',\n                needs: ['!userlevel=3'],\n            },\n            {\n                link: 'projects.edit.project-files',\n                text: 'menu.project-files',\n                needs: ['projectfile'],\n            },\n            {\n                link: 'projects.edit.working-now',\n                text: 'menu.people_working_now',\n                needs: ['worktime'],\n            },\n            {\n                link: 'projects.edit.subprojects',\n                text: 'submenu.project.subprojects',\n                needs: ['subproject', 'project@edit'],\n            },\n            {\n                link: 'projects.edit.tasks',\n                text: 'submenu.project.tasks',\n                needs: ['task||multitask', 'project@edit'],\n            },\n            {\n                link: 'projects.edit.notices',\n                text: 'submenu.project.notices',\n                needs: ['notice'],\n            },\n            {\n                link: 'projects.edit.trnotices',\n                text: 'submenu.project.trnotices',\n                needs: ['trnotice'],\n            },\n            {\n                link: 'projects.edit.project-users',\n                text: 'submenu.project.project-users',\n                needs: ['products.rakentajanpaketti'],\n            },\n            {\n                link: 'projects.edit.linked-users',\n                text: 'submenu.project.linked_users',\n                needs: ['!products.generic_timetracker', '!products.base_basic'],\n            },\n            {\n                link: 'projects.edit.open_worktimes',\n                text: 'submenu.project.open_worktimes',\n                needs: ['userlevel=3'],\n            },\n            {\n                link: 'projects.edit.passes',\n                text: 'submenu.project.passes',\n                needs: ['orientation', 'userlevel=3'],\n            },\n            {\n                link: 'projects.edit.rollocks',\n                text: 'submenu.project.rollocks',\n                needs: ['rollock', 'userlevel=5'],\n            },\n            {\n                link: 'projects.edit.greenboxes',\n                text: 'submenu.project.greenboxes',\n                needs: ['modules.megaflex', 'userlevel=5'],\n            },            \n            {\n                link: 'projects.edit.tv-status',\n                text: 'submenu.project.tv_status',\n                needs: ['project@edit', 'employer', '!products.generic_timetracker'],\n            },\n            {\n                link: 'projects.edit.card-list',\n                text: 'submenu.project.card-list',\n                needs: ['!products.personalliggareandid06', 'products.cardregister', 'employer'],\n            },\n            {\n                link: 'projects.edit.taxmanerrors',\n                text: 'submenu.project.taxmanerrors',\n                needs: ['export_taxman'],\n            },\n        ];\n        if (this.get('model.proj_type') === '3' || this.get('model.proj_type') === '4') {\n            subMenus.pushObject({\n                link: 'projects.edit.contract_report',\n                text: 'submenu.project.contract_report',\n                needs: ['project@edit', 'export_taxman'],\n            });\n        }\n        return subMenus.filter(function (item) {\n            if (item.needs) {\n                return c.testNeeds(item.needs);\n            }\n            return true;\n        });\n    }),\n    contact_person_name: Em.observer('model.contact_user', function () {\n        var c;\n        //do not change values when entering edit mode, only when changing contact_user\n        if (!this.get('model.hasDirtyAttributes')) {\n            return;\n        }\n        c = this.get('Collector');\n        if (this.get('model.contact_user') == null) {\n            this.set('model.contact_person', null);\n            this.set('model.email', null);\n            this.set('model.phone', null);\n            return;\n        }\n        //set contact person field\n        this.set(\n            'model.contact_person',\n            this.get('model.contact_user').get('lastname') +\n                ' ' +\n                this.get('model.contact_user').get('firstname'),\n        );\n        if (this.get('model.contact_user').get('email')) {\n            this.set('model.email', this.get('model.contact_user').get('email'));\n        } else {\n            this.set('model.email', null);\n        }\n        if (this.get('model.contact_user').get('phone')) {\n            this.set('model.phone', this.get('model.contact_user').get('phone'));\n        } else {\n            this.set('model.phone', null);\n        }\n        //if finnishbuilder-module, set also other contact information\n        if (c.testNeeds(['modules.finnishbuilder'])) {\n            this.set('model.proj_firstname', this.get('model.contact_user').get('firstname'));\n            this.set('model.proj_lastname', this.get('model.contact_user').get('lastname'));\n            if (this.get('model.contact_user').get('email')) {\n                return this.set('model.proj_email', this.get('model.contact_user').get('email'));\n            } else {\n                return this.set('model.proj_email', null);\n            }\n        }\n    }),\n    projectImage: Ember.computed('model.image', function () {\n        var image;\n        image = this.get('model.image');\n        if (image != null && image.length > 0) {\n            if (image[0].url) {\n                return Ember.String.htmlSafe(config.APP.COLLECTOR_API_URL + '/' + image[0].url);\n            } else if (image[0].file) {\n                return Ember.String.htmlSafe(image[0].file);\n            } else {\n                return Ember.String.htmlSafe('img/placeholder.png');\n            }\n        } else {\n            return Ember.String.htmlSafe('img/placeholder.png');\n        }\n    }),\n});\n\nexport default ProjectsEditController;\n","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { computed } from '@ember/object';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    evented: service(),\n    \n    showInfo: false,\n    row: null,\n\n    project: alias('model'),\n\n    defaultValues: computed('project', function () {\n        return { project: get(this, 'project') };\n    }),\n\n    actions: {\n        rowAdded() {\n            // Trigger the report to refresh via the evented service\n            this.evented.storeEvent('insert', 'greenboxdevice', null);\n        },\n        toggleInfo(row) {\n            if (row) {\n                set(this, 'row', row);\n            } else {\n                set(this, 'row', null);\n            }\n            this.toggleProperty('showInfo');\n        },\n    },\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"eds86nkr\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\",\\\"modal\\\",\\\"form\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"greenboxdevice@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"auto-modal\\\",[],[[\\\"@header\\\"],[[28,\\\"collector-form-name\\\",[\\\"greenboxdevice\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,5,[\\\"open\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],[23,5,[\\\"show\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,5,[\\\"content\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"collector/form-add\\\",[],[[\\\"@form\\\",\\\"@defaults\\\",\\\"@close\\\",\\\"@rowAdded\\\"],[\\\"greenboxdevice\\\",[22,\\\"defaultValues\\\"],[28,\\\"action\\\",[[23,0,[]],[23,5,[\\\"close\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"fields\\\"]],[],[[\\\"@only\\\"],[\\\"greenbox_id\\\"]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"buttons\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"saved\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filter\\\",\\\"@showFilters\\\",\\\"@showColumns\\\",\\\"@hideAdditionalFiltersButton\\\"],[\\\"greenboxdevice\\\",[22,\\\"defaultValues\\\"],\\\"q,greenbox_id\\\",\\\"greenbox_id,direction,zone\\\",true]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"        \\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"remove,edit\\\"]]],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/greenboxes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nProjectsEditIndexController = GeneralAddController.extend({\n    customization: Ember.computed('model', function () {\n        return {\n            owner: {\n                filterOptions: {\n                    userlevel: '!1',\n                },\n            },\n        };\n    }),\n});\n\nexport default ProjectsEditIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nProjectsEditIndexRoute = GeneralAddRoute.extend({\n    controllerName: 'projects/edit/index',\n    model: function () {\n        return this.modelFor('projects.edit');\n    },\n});\n\nexport default ProjectsEditIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"T7AGXoTc\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/linked-users/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsLinkedUsersController;\n\nimport Ember from 'ember';\n\nProjectsLinkedUsersController = Ember.Controller.extend({\n    Collector: Em.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    intl: Em.inject.service(),\n    applicationController: Ember.inject.controller('application'),\n    rowActions: [\n        {\n            action: 'editRow',\n            icon: 'move move-Pencil',\n        },\n    ],\n    updatePath: function (model) {\n        return this.set('path', 'linked_users_for?to=' + model.get('id'));\n    },\n    rows: 0,\n    //init: ->\n    //    @getRows()\n\n    // these are copied from users/linked, but left here so that if someday we need to add filters etc to this controller, there is already some stuff ready\n    /*\n  getRows: ->\n      url = @get('path')\n      query = @get 'filterValues'\n\n      if query\n          query_str_arr = []\n          $.each query, (key,item) =>\n              return if not item.value\n              query_str_arr.push item.name + \"=\" + item.value\n          if query_str_arr.length == 0\n              @set 'rows', 0\n          url += \"?\" + query_str_arr.join(\"&\")\n\n      url += \"&limit=1&out=(empty)\"\n      c = @get 'Collector'\n      promise = c.ttapi\n          url: url\n\n      promise.then (data) =>\n          @set 'rows', data.count\n\n  */\n    actions: {\n        editRow: function (params) {\n            return this.transitionToRoute('users.edit', params.id).then(function (newRoute) {\n                return newRoute.controller.set('afterSave', 'projects.index');\n            });\n        },\n        removeRow: function (params) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    if (con) {\n                        return this.get('store')\n                            .findRecord('user', params.id)\n                            .then((record) => {\n                                return record.destroyRecord();\n                            });\n                    }\n                });\n        },\n    },\n});\n\nexport default ProjectsLinkedUsersController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/linked-users/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsLinkedUsersRoute;\n\nimport Ember from 'ember';\n\nProjectsLinkedUsersRoute = Ember.Route.extend({\n    setupController: function (controller, model) {\n        return controller.updatePath(model);\n    },\n});\n\nexport default ProjectsLinkedUsersRoute;\n","export default Ember.HTMLBars.template({\"id\":\"JmMtcGUQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[1,[28,\\\"api-report\\\",null,[[\\\"filters\\\",\\\"path\\\",\\\"translationPrefix\\\",\\\"pdfSubHeader\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"editRow\\\",\\\"removeRow\\\",\\\"hideExports\\\"],[[24,[\\\"filterValues\\\"]],[24,[\\\"path\\\"]],\\\"report.linked_users\\\",\\\"linked_users\\\",[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",\\\"editRow\\\",\\\"removeRow\\\",true]]],false],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/linked-users/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"DMvb2ApK\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/notices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditNoticesController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nProjectsEditNoticesController = GeneralReportController.extend({\n    form: 'notice',\n    showColumns: ['fixbydate', 'project', 'title', 'desc', 'status', 'pic', 'user'],\n    queryParams: ['date', 'status', 'user'],\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n        }),\n        sortByColumn: 'fixbydate',\n    }),\n    filters: Em.A([]),\n    status: 'all',\n});\n\nexport default ProjectsEditNoticesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/notices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditNoticesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nProjectsEditNoticesRoute = GeneralReportRoute.extend({\n    form: 'notice',\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var project;\n        params = this._super(params);\n        params.sideload = true;\n        project = this.modelFor('projects.edit');\n        params.project = project.get('id');\n        return this.store.query('notice', params);\n    },\n});\n\nexport default ProjectsEditNoticesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"+wXz5O0Z\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/notices/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/open-worktimes/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsOpenWorktimesController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nProjectsOpenWorktimesController = GeneralReportController.extend({\n    form: 'worktime',\n    showColumns: ['status', 'user', 'date'],\n    queryParams: ['date', 'status', 'user'],\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n        }),\n        sortByColumn: 'date',\n    }),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'date',\n        }),\n    ]),\n    status: 'open',\n    project: null,\n    page: null,\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n});\n\nexport default ProjectsOpenWorktimesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/open-worktimes/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsOpenWorktimesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nProjectsOpenWorktimesRoute = GeneralReportRoute.extend({\n    form: 'worktime',\n    session: Em.inject.service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n            replace: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var project;\n        params = this._super(params);\n        params.sideload = true;\n        project = this.modelFor('projects.edit');\n        params.project = project.get('id');\n        params.status = 'open';\n        params.date =\n            moment().startOf('week').format('YYYY-MM-DD') +\n            '_' +\n            moment().endOf('week').format('YYYY-MM-DD');\n        return this.store.query('worktime', params);\n    },\n});\n\nexport default ProjectsOpenWorktimesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"RPGd/bLk\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/open-worktimes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/overview/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditOverviewController;\n\nimport Ember from 'ember';\n\nimport DS from 'ember-data';\n\nProjectsEditOverviewController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    store: Ember.inject.service(),\n    session: Ember.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    hiddenDashboardObjects: [],\n    dashboardObjects: Em.computed('model.project', function () {\n        var c, objs;\n        c = this.get('Collector');\n        objs = [];\n        if (c.testNeedsOne('presence')) {\n            objs.push({\n                name: 'presence',\n                title: 'project.overview.title.presences',\n                styles: 'order: 0',\n            });\n        }\n        if (c.testNeedsOne('worktime')) {\n            objs.push({\n                name: 'worktime',\n                title: 'project.overview.title.worktimes',\n                styles: 'order: 1',\n            });\n        }\n        if (c.testNeedsOne('worktask')) {\n            objs.push({\n                name: 'worktask',\n                title: 'report.worktasks.report',\n                styles: 'order: 2',\n            });\n        }\n        if (c.testNeedsOne('tr')) {\n            objs.push({\n                name: 'tr',\n                title: 'project.overview.tr_index.mean',\n                styles: 'order: 3',\n            });\n        }\n        if (c.testNeedsOne('mvr')) {\n            objs.push({\n                name: 'mvr',\n                title: 'project.overview.mvr_index.mean',\n                styles: 'order: 4',\n            });\n        }\n        if (c.testNeedsOne('export_taxman')) {\n            objs.push({\n                name: 'taxmanerror',\n                title: 'submenu.project.taxmanerrors',\n                styles: 'order: 5',\n            });\n        }\n        if (c.testNeedsOne('export_taxman') && this.get('model.project.proj_type') === '3') {\n            objs.push({\n                name: 'contractTaxmanerror',\n                title: 'project.overview.contract_taxmanerrors',\n                styles: 'order: 6',\n            });\n        }\n        if (c.testNeedsOne('employer') && !c.testNeedsOne('products.generic_timetracker')) {\n            objs.push({\n                name: 'tv_status',\n                title: 'submenu.project.tv_status',\n                styles: 'order: 7',\n            });\n        }\n        return objs;\n    }),\n    dashboardView: Em.computed('dashboardObjects', function () {\n        var i, len, lsDbHide, object, ref, tmp, tmp_hidden;\n        tmp = [];\n        tmp_hidden = [];\n        lsDbHide = this.get('localStorageWrapper').getUserSetting('hideDashboard');\n        ref = this.get('dashboardObjects');\n        for (i = 0, len = ref.length; i < len; i++) {\n            object = ref[i];\n            if (lsDbHide.indexOf(object.name) > -1) {\n                tmp_hidden.push(object);\n            } else {\n                tmp.push(object);\n            }\n        }\n        this.set('hiddenDashboardObjects', tmp_hidden);\n        return tmp;\n    }),\n    pie_options: {\n        pieHole: 0.9,\n        chartArea: {\n            width: '90%',\n            height: '95%',\n        },\n        height: 200,\n        width: 200,\n        pieSliceTextStyle: {\n            color: 'black',\n            fontSize: 20,\n        },\n        pieSliceText: 'value',\n    },\n    //        slices: {\n    //            1: {offset: 0.02}\n    //            2: {offset: 0.02}\n    //            3: {offset: 0.02}\n    //        }\n    form: 'user',\n    fields: Ember.computed(function () {\n        var obj;\n        obj = {\n            first_row: this.hasFields(['firstname', 'lastname']),\n            rows: [this.hasFields(['personid', 'userlevel'])],\n        };\n        return obj;\n    }),\n    hasFields: function (fields, form = null) {\n        var c, field, i, len, ret;\n        c = this.get('Collector');\n        if (!form) {\n            form = 'user';\n        }\n        ret = [];\n        for (i = 0, len = fields.length; i < len; i++) {\n            field = fields[i];\n            if (c.fieldExists(form, field)) {\n                ret.push(field);\n            }\n        }\n        return ret;\n    },\n    tr_mean: Ember.computed('model.tr', function () {\n        var color, mean, trs;\n        trs = this.get('model.tr');\n        mean = this.calculateMean(trs, 'tr_rating');\n        color = this.getRatingColor(mean);\n        return {\n            mean: mean.toFixed(0) + '%',\n            color: color,\n        };\n    }),\n    mvr_mean: Ember.computed('model.mvr', function () {\n        var color, mean, mvrs;\n        mvrs = this.get('model.mvr');\n        mean = this.calculateMean(mvrs, 'mvr_rating');\n        color = this.getRatingColor(mean);\n        return {\n            mean: mean.toFixed(0) + '%',\n            color: color,\n        };\n    }),\n    getRatingColor: function (value) {\n        if (value >= 95) {\n            return 'good-rating';\n        } else if (value >= 90) {\n            return 'decent-rating';\n        } else if (value < 90) {\n            return 'bad-rating';\n        } else {\n            return 'default';\n        }\n    },\n    calculateMean: function (data, field) {\n        var total;\n        if (data.get('meta.count') === 0) {\n            return '-';\n        }\n        total = 0;\n        data.forEach(function (item) {\n            return (total += item.get(field));\n        });\n        return total / data.get('meta.count');\n    },\n    sensors: Ember.computed('model.project.sensors', function () {\n        var url;\n        url = this.get('model.project.sensors');\n        if (url) {\n            return DS.PromiseObject.create({\n                promise: this.fetchSensorData(url),\n            });\n        }\n    }),\n    sensorList: Ember.computed('sensors.isFulfilled', function () {\n        var sensors;\n        sensors = this.get('sensors');\n        console.log('sensors', sensors);\n        if (sensors && sensors.isFulfilled) {\n            return sensors.content.map(function (core, key) {\n                return {\n                    id: key,\n                    name: core.name,\n                };\n            });\n        }\n    }),\n    selectedCores: Ember.computed('selectedSensor', 'sensors.isFulfilled', function () {\n        var selectedSensor;\n        if (!this.get('sensors.isFulfilled')) {\n            return [];\n        }\n        selectedSensor = this.get('selectedSensor') || 0;\n        return this.get('sensors.content')[selectedSensor].sensors;\n    }),\n    fetchSensorData: function (url) {\n        var c, intl;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            return c\n                .ccapi({\n                    url: 'sensors_mama',\n                    data: {\n                        key: url,\n                    },\n                })\n                .then((data) => {\n                    var all_sensors, chart, core, i, j, len, len1, ref, ref1, row, sensors;\n                    all_sensors = [];\n                    ref = data.cores;\n                    for (i = 0, len = ref.length; i < len; i++) {\n                        core = ref[i];\n                        if (core.values == null) {\n                            continue;\n                        }\n                        sensors = [];\n                        ref1 = core.values;\n                        for (j = 0, len1 = ref1.length; j < len1; j++) {\n                            row = ref1[j];\n                            chart = this.getChartOptionsByType(row.type, row);\n                            if (!chart) {\n                                continue;\n                            }\n                            chart.chart = [\n                                ['Label', 'Value'],\n                                [intl.t('sensor.type.' + row.type), chart.value],\n                            ];\n                            sensors.push(chart);\n                        }\n                        if (sensors.length > 0) {\n                            all_sensors.push({\n                                name: core.tags.length > 0 ? core.tags[0] : core.name,\n                                sensors: sensors,\n                            });\n                        }\n                    }\n                    return resolve(all_sensors);\n                });\n        });\n    },\n    getChartOptionsByType: function (type, data) {\n        var temp;\n        if (data.name === 'Dew Point') {\n            // don't know better way to skip this one.. so hack for now :)\n            return;\n        }\n        temp = {};\n        temp.value = data.value;\n        temp.unit = data.unit;\n        if (type === 'temperature') {\n            temp.chart_options = {\n                yellowFrom: 25,\n                yellowTo: 35,\n                redFrom: 35,\n                redTo: 50,\n                max: 50,\n                min: -50,\n                width: 150,\n                height: 150,\n            };\n        }\n        if (type === 'pressure') {\n            temp.unit = 'k' + data.unit;\n            temp.value = Math.floor(data.value / 100) / 10;\n            temp.chart_options = {\n                greenFrom: 95,\n                greenTo: 110,\n                max: 120,\n                min: 80,\n                width: 150,\n                height: 150,\n            };\n        }\n        if (type === 'humidity') {\n            temp.chart_options = {\n                yellowFrom: 75,\n                yellowTo: 85,\n                redFrom: 85,\n                redTo: 100,\n                max: 100,\n                min: 50,\n                width: 150,\n                height: 150,\n            };\n        }\n        if (type === 'temperature' || type === 'pressure' || type === 'humidity') {\n            return temp;\n        } else {\n            return null;\n        }\n    },\n    actions: {\n        transitionWithParams: function (key) {\n            return this.transitionToRoute('projects.edit.taxmanerrors').then((targetRoute) => {\n                return targetRoute.controller.set('taxmanKey', key);\n            });\n        },\n        removeDashboardObject: function (object) {\n            var lsDbHide;\n            // update localstorage\n            lsDbHide = this.get('localStorageWrapper').getUserSetting('hideDashboard');\n            if (lsDbHide.length > 0) {\n                lsDbHide.push(object.name);\n            } else {\n                lsDbHide = [object.name];\n            }\n            this.get('localStorageWrapper').setUserSetting('hideDashboard', lsDbHide);\n            // update computed-property so we can update view in realtime\n            this.get('dashboardView').removeObject(object);\n            this.get('hiddenDashboardObjects').pushObject(object);\n            return false;\n        },\n        restoreDashboardObject: function (object) {\n            var index, lsDbHide;\n            // update localstorage\n            lsDbHide = this.get('localStorageWrapper').getUserSetting('hideDashboard');\n            if (lsDbHide.length > 0) {\n                index = lsDbHide.indexOf(object.name);\n                if (index !== -1) {\n                    lsDbHide.splice(index, 1);\n                }\n            }\n            this.get('localStorageWrapper').setUserSetting('hideDashboard', lsDbHide);\n            // update computed-property so we can update view in realtime\n            this.get('dashboardView').pushObject(object);\n            this.get('hiddenDashboardObjects').removeObject(object);\n            return false;\n        },\n        editRow: function (row) {\n            var form, id;\n            form = row.get('constructor.modelName');\n            id = row.get('id');\n            return this.transitionToRoute({\n                queryParams: {\n                    modal: [form, id],\n                },\n            });\n        },\n    },\n    worktasks: Ember.computed('model.worktask', function () {\n        var i,\n            item,\n            j,\n            len,\n            len1,\n            pie_done,\n            pie_overdue,\n            pie_upcoming,\n            ref,\n            worktask,\n            worktask_pie,\n            worktasks;\n        worktask = this.get('model.worktask');\n        worktask_pie = Em.A([\n            [\n                this.get('intl').t('report.worktasks.report'),\n                this.get('intl').t('report.worktasks.report'),\n            ],\n        ]);\n        pie_overdue = 0;\n        pie_upcoming = 0;\n        pie_done = 0;\n        worktasks = [];\n        ref = worktask.content;\n        for (i = 0, len = ref.length; i < len; i++) {\n            item = ref[i];\n            worktasks.push(item._data);\n        }\n        for (j = 0, len1 = worktasks.length; j < len1; j++) {\n            item = worktasks[j];\n            if (moment().isBefore(item.date) && item.status === 'open') {\n                pie_upcoming++;\n            } else if (item.status === 'fixed') {\n                pie_done++;\n            } else if (moment().isAfter(item.date) && item.status === 'open') {\n                pie_overdue++;\n            }\n        }\n        worktask_pie.push([this.get('intl').t('worktask_pie.upcoming'), pie_upcoming]);\n        worktask_pie.push([this.get('intl').t('worktask_pie.done'), pie_done]);\n        worktask_pie.push([this.get('intl').t('worktask_pie.overdue'), pie_overdue]);\n        return worktask_pie;\n    }),\n    openWorktasks: Ember.computed('model.worktask', function () {\n        return this.get('model.worktask').filterBy('status', 'open');\n    }),\n    fixedWorktasks: Ember.computed('model.worktask', function () {\n        return this.get('model.worktask').filterBy('status', 'fixed');\n    }),\n    worktaskFields: Ember.computed(function () {\n        var obj;\n        obj = {\n            first_row: this.hasFields(['date', 'name'], 'worktask'),\n            rows: [this.hasFields(['est_hours', 'hours', 'photos'], 'worktask')],\n        };\n        return obj;\n    }),\n    worktimes: Ember.computed('model.worktime', function () {\n        var i, item, j, len, len1, pie_approved, pie_open, ref, worktime, worktime_pie, worktimes;\n        worktime = this.get('model.worktime');\n        worktime_pie = Em.A([\n            [\n                this.get('intl').t('project.overview.title.worktimes'),\n                this.get('intl').t('project.overview.title.worktimes'),\n            ],\n        ]);\n        pie_open = 0;\n        pie_approved = 0;\n        worktimes = [];\n        ref = worktime.content;\n        for (i = 0, len = ref.length; i < len; i++) {\n            item = ref[i];\n            worktimes.push(item._data);\n        }\n        for (j = 0, len1 = worktimes.length; j < len1; j++) {\n            item = worktimes[j];\n            if (item.status === 'open') {\n                pie_open++;\n            } else if (item.status === 'approved') {\n                pie_approved++;\n            }\n        }\n        worktime_pie.push([this.get('intl').t('worktime_pie.open'), pie_open]);\n        worktime_pie.push([this.get('intl').t('worktime_pie.approved'), pie_approved]);\n        return worktime_pie;\n    }),\n    openWorktimes: Ember.computed('model.worktime', function () {\n        return this.get('model.worktime').filterBy('status', 'open');\n    }),\n    approvedWorktimes: Ember.computed('model.worktime', function () {\n        return this.get('model.worktime').filterBy('status', 'approved');\n    }),\n    presences: Ember.computed('model.presence', function () {\n        var i, item, j, len, len1, pie_total, presence, presence_pie, presences, ref;\n        presence = this.get('model.presence');\n        presence_pie = Em.A([\n            [\n                this.get('intl').t('project.overview.title.presences'),\n                this.get('intl').t('project.overview.title.presences'),\n            ],\n        ]);\n        pie_total = 0;\n        presences = [];\n        ref = presence.content;\n        for (i = 0, len = ref.length; i < len; i++) {\n            item = ref[i];\n            presences.push(item._data);\n        }\n        for (j = 0, len1 = presences.length; j < len1; j++) {\n            item = presences[j];\n            pie_total++;\n        }\n        presence_pie.push([this.get('intl').t('presence_pie.total'), pie_total]);\n        return presence_pie;\n    }),\n    taxmanerrors: Ember.computed('model', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                return this.get('store')\n                    .findAll('exportContactPerson')\n                    .then((contacts) => {\n                        contacts = contacts.filter((contact) => {\n                            return contact.get('isNew') === false;\n                        });\n                        if (contacts.length > 0) {\n                            return this.get('Collector')\n                                .ccapi({\n                                    url:\n                                        'vstyonte?date=' +\n                                        moment().startOf('month').format('YYYY-MM-DD') +\n                                        '_' +\n                                        moment().endOf('month').format('YYYY-MM-DD') +\n                                        '&project=' +\n                                        this.get('model.project.id'),\n                                })\n                                .then((back) => {\n                                    var data, pie_total, taxman_pie;\n                                    taxman_pie = Em.A([\n                                        [\n                                            this.get('intl').t('submenu.project.taxmanerrors'),\n                                            this.get('intl').t('submenu.project.taxmanerrors'),\n                                        ],\n                                    ]);\n                                    data = JSON.parse(back).validations;\n                                    pie_total = Object.keys(data).length;\n                                    taxman_pie.push([\n                                        this.get('intl').t('taxmam_pie.total'),\n                                        pie_total,\n                                    ]);\n                                    return resolve({\n                                        value: taxman_pie,\n                                    });\n                                });\n                        }\n                    });\n            }),\n        });\n    }),\n    contractTaxmanerrors: Ember.computed('model', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                return this.get('store')\n                    .findAll('exportContactPerson')\n                    .then((contacts) => {\n                        contacts = contacts.filter((contact) => {\n                            return contact.get('isNew') === false;\n                        });\n                        if (contacts.length > 0) {\n                            return this.get('Collector')\n                                .ccapi({\n                                    url:\n                                        'vsurakka?contract_month=' +\n                                        moment().format('YYYY-MM') +\n                                        '&project=' +\n                                        this.get('model.project.id'),\n                                })\n                                .then((back) => {\n                                    var data, pie_total, taxman_pie;\n                                    taxman_pie = Em.A([\n                                        [\n                                            this.get('intl').t(\n                                                'project.overview.contract_taxmanerrors',\n                                            ),\n                                            this.get('intl').t(\n                                                'project.overview.contract_taxmanerrors',\n                                            ),\n                                        ],\n                                    ]);\n                                    data = JSON.parse(back).validations;\n                                    pie_total = Object.keys(data).length;\n                                    taxman_pie.push([\n                                        this.get('intl').t('contract_taxman_pie.total'),\n                                        pie_total,\n                                    ]);\n                                    return resolve({\n                                        value: taxman_pie,\n                                    });\n                                });\n                        }\n                    });\n            }),\n        });\n    }),\n    tv_status: Ember.computed('model.projectUsers', function () {\n        var employers,\n            i,\n            item,\n            len,\n            pie_alert,\n            pie_check,\n            pie_not_found,\n            pie_ok,\n            pie_stop,\n            pie_waiting,\n            tv_status_pie;\n        employers = this.get('model.projectUsers.employers');\n        tv_status_pie = Em.A([\n            [\n                this.get('intl').t('submenu.project.tv_status'),\n                this.get('intl').t('submenu.project.tv_status'),\n            ],\n        ]);\n        pie_ok = 0;\n        pie_not_found = 0;\n        pie_stop = 0;\n        pie_check = 0;\n        pie_waiting = 0;\n        pie_alert = 0;\n        for (i = 0, len = employers.length; i < len; i++) {\n            item = employers[i];\n            if (item.tv_status) {\n                if (item.tv_status === 'ok') {\n                    pie_ok++;\n                } else if (item.tv_status === 'ei_loydy') {\n                    pie_not_found++;\n                } else if (item.tv_status === 'seis') {\n                    pie_stop++;\n                } else if (item.tv_status === 'selvita') {\n                    pie_check++;\n                } else if (item.tv_status === 'odotetaan') {\n                    pie_waiting++;\n                } else if (item.tv_status === 'huomioi') {\n                    pie_alert++;\n                }\n            }\n        }\n        tv_status_pie.push([this.get('intl').t('employer.tv_status.ok'), pie_ok]);\n        tv_status_pie.push([this.get('intl').t('employer.tv_status.ei_loydy'), pie_not_found]);\n        tv_status_pie.push([this.get('intl').t('employer.tv_status.seis'), pie_stop]);\n        tv_status_pie.push([this.get('intl').t('employer.tv_status.selvita'), pie_check]);\n        tv_status_pie.push([this.get('intl').t('employer.tv_status.odotetaan'), pie_waiting]);\n        tv_status_pie.push([this.get('intl').t('employer.tv_status.huomioi'), pie_alert]);\n        return tv_status_pie;\n    }),\n});\n\nexport default ProjectsEditOverviewController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/overview/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditOverviewRoute;\n\nimport Ember from 'ember';\n\nimport DS from 'ember-data';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nProjectsEditOverviewRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    //localStorageWrapper: Ember.inject.service()\n    beforeModel: function () {\n        this._super(...arguments);\n        return this.set('gui.hideMobileHeader', false);\n    },\n    model: function () {\n        var c, project, sideload, store;\n        //lsDbHide = @get('localStorageWrapper').getUserSetting 'hideDashboard'\n        project = this.modelFor('projects.edit');\n        sideload = [\n            'user.firstname',\n            'user.lastname',\n            'user.image',\n            'user.personid',\n            'user.userlevel',\n        ];\n        store = this.get('store');\n        c = this.get('Collector');\n        return Ember.RSVP.hash({\n            project: project,\n            tr: c.testNeedsOne('tr')\n                ? store.query('tr', {\n                      project: project.get('id'),\n                      date:\n                          moment().subtract(1, 'months').format('YYYY-MM-DD') +\n                          '_' +\n                          moment().format('YYYY-MM-DD'),\n                  })\n                : void 0,\n            mvr: c.testNeedsOne('mvr')\n                ? store.query('mvr', {\n                      project: project.get('id'),\n                      date:\n                          moment().subtract(1, 'months').format('YYYY-MM-DD') +\n                          '_' +\n                          moment().format('YYYY-MM-DD'),\n                  })\n                : void 0,\n            worktime: c.testNeedsOne('worktime')\n                ? store.query('worktime', {\n                      date: moment().format('YYYY-MM-DD'),\n                      project: project.get('id'),\n                      sideload: sideload,\n                      limit: 'all',\n                  })\n                : void 0,\n            presence: c.testNeedsOne('presence')\n                ? store.query('presence', {\n                      date: moment().format('YYYY-MM-DD'),\n                      project: project.get('id'),\n                      sideload: sideload,\n                      limit: 'all',\n                      groupBy: 'user',\n                      out: '(empty)',\n                  })\n                : void 0,\n            worktask: c.testNeedsOne('worktask')\n                ? store.query('worktask', {\n                      date:\n                          moment().startOf('week').format('YYYY-MM-DD') +\n                          '_' +\n                          moment().endOf('week').format('YYYY-MM-DD'),\n                      project: project.get('id'),\n                      sideload: ['user.image'],\n                  })\n                : void 0,\n            projectUsers: c.testNeedsOne('employer')\n                ? this.get('ttapi').request('api/project/users', {\n                      data: {\n                          project: project.get('id'),\n                          sideload: ['employer.name', 'employer.tv_status'],\n                          limit: 'all',\n                      },\n                  })\n                : void 0,\n        });\n    },\n});\n\nexport default ProjectsEditOverviewRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Z4jJjhF0\",\"block\":\"{\\\"symbols\\\":[\\\"db\\\",\\\"dd\\\",\\\"ddm\\\",\\\"db\\\",\\\"db\\\"],\\\"statements\\\":[[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more display-menu\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,2,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Settings\\\"],[8],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,2,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"item\\\"]],[[12,\\\"class\\\",\\\"dropdown-header\\\"]],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.columns.shown\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"dashboardView\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeDashboardObject\\\",[23,5,[]]]],[8],[1,[28,\\\"t\\\",[[23,5,[\\\"title\\\"]]],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,3,[\\\"item\\\"]],[[12,\\\"class\\\",\\\"disabled\\\"]],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"\\\"],[8],[7,\\\"i\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.empty\\\"],null],false],[9],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[6,[23,3,[\\\"item\\\"]],[[12,\\\"class\\\",\\\"dropdown-header\\\"]],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.columns.hidden\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"hiddenDashboardObjects\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"restoreDashboardObject\\\",[23,4,[]]]],[8],[1,[28,\\\"t\\\",[[23,4,[\\\"title\\\"]]],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,3,[\\\"item\\\"]],[[12,\\\"class\\\",\\\"disabled\\\"]],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"\\\"],[8],[7,\\\"i\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.empty\\\"],null],false],[9],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"project-overview-container\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[10,\\\"style\\\",\\\"order: 3\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"dashboardView\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[11,\\\"style\\\",[23,1,[\\\"styles\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"tr\\\"],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"site_safety.report.tr.data\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-list-container\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.overview.tr_index.mean\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"tr\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"tr\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"overview-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums-card\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"rating-value \\\",[24,[\\\"tr_mean\\\",\\\"color\\\"]]]]],[8],[1,[24,[\\\"tr_mean\\\",\\\"mean\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"mvr\\\"],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"site_safety.report.mvr.data\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-list-container\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.overview.mvr_index.mean\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"mvr\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"mvr\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"overview-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums-card\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"rating-value \\\",[24,[\\\"mvr_mean\\\",\\\"color\\\"]]]]],[8],[7,\\\"span\\\",true],[8],[1,[24,[\\\"mvr_mean\\\",\\\"mean\\\"]],false],[9],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"worktime\\\"],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"timetracker.worktime-list\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-list-container\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.overview.title.worktimes\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"worktime\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"overview-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums-card\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"top-users\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\"],[[24,[\\\"worktimes\\\"]],\\\"pie\\\",\\\"#D9534F,#5CB85C\\\",[24,[\\\"pie_options\\\"]]]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"presence\\\"],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"projects.edit.working-now\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"presence\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-list-container\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.overview.title.presences\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"presence\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"overview-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums-card\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"top-users\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\"],[[24,[\\\"presences\\\"]],\\\"pie\\\",\\\"#5CB85C\\\",[24,[\\\"pie_options\\\"]]]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"worktask\\\"],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"worktasks.report\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktask\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-list-container\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.worktasks.report\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"worktask\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"overview-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums-card\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"top-users\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\"],[[24,[\\\"worktasks\\\"]],\\\"pie\\\",\\\"#FFC56C,#5CB85C,#D9534F\\\",[24,[\\\"pie_options\\\"]]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"taxmanerror\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                 \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionWithParams\\\",\\\"vstyonte\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"export_taxman\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-list-container\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"submenu.project.taxmanerrors\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"taxmanerrors\\\",\\\"value\\\",\\\"1\\\",\\\"1\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"overview-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums-card\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"top-users\\\"],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\"],[[24,[\\\"taxmanerrors\\\",\\\"value\\\"]],\\\"pie\\\",\\\"#D9534F\\\",[24,[\\\"pie_options\\\"]]]]],false],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"contractTaxmanerror\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionWithParams\\\",\\\"vsurakka\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"export_taxman\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-list-container\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.overview.contract_taxmanerrors\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"contractTaxmanerrors\\\",\\\"value\\\",\\\"1\\\",\\\"1\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"overview-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums-card\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"top-users\\\"],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\"],[[24,[\\\"contractTaxmanerrors\\\",\\\"value\\\"]],\\\"pie\\\",\\\"#D9534F\\\",[24,[\\\"pie_options\\\"]]]]],false],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"tv_status\\\"],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"projects.edit.tv-status\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"employer\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-list-container\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"submenu.project.tv_status\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"projectUsers\\\",\\\"users\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"overview-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sums-card\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"top-users\\\"],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\"],[[24,[\\\"tv_status\\\"]],\\\"pie\\\",\\\"#5CB85C,#D9D24F,#D9534F,#FFC56C,#316395,#994499\\\",[24,[\\\"pie_options\\\"]]]]],false],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-list-container\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[[23,1,[\\\"title\\\"]]],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-card-item\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card-number\\\"],[8],[1,[28,\\\"get\\\",[[24,[\\\"model\\\"]],[28,\\\"concat\\\",[[23,1,[\\\"name\\\"]],\\\".meta.count\\\"],null]],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card-content card-number-content\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"h4\\\",true],[8],[4,\\\"link-to\\\",null,[[\\\"route\\\",\\\"model\\\"],[[28,\\\"concat\\\",[\\\"projects.edit.\\\",[23,1,[\\\"name\\\"]]],null],[24,[\\\"model\\\",\\\"project\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"project.overview.title.\\\",[23,1,[\\\"name\\\"]],\\\"_link\\\"],null]],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card-status\\\"],[8],[0,\\\"\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"projects.overview.nothing_to_show\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/overview/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/passes/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsPassesController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nProjectsPassesController = GeneralReportController.extend({\n    filters: Em.A([\n        Em.Object.create({\n            field: 'ori_user',\n        }),\n    ]),\n    ori_site: null,\n    projectObserver: function () {\n        return this.set('page', 1);\n    }.observes('project'),\n    settings: Em.Object.create({\n        localStorageKey: 'project-passes',\n    }),\n    queryParams: [\n        {\n            ori_site: {\n                as: 'project',\n            },\n        },\n        'page',\n        'ori_employer',\n        'ori_user',\n    ],\n    pass_end: '!(empty)',\n    pass_start: '!(empty)',\n    form: 'orientation',\n    //localStorageKey: \"project-passes\"\n    showColumns: ['ori_user', 'pass_start', 'pass_end'],\n});\n\nexport default ProjectsPassesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/passes/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsPassesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nProjectsPassesRoute = GeneralReportRoute.extend({\n    form: 'orientation',\n    queryParams: {\n        ori_site: {\n            refreshModel: true,\n            replace: true,\n        },\n        date: {\n            refreshModel: true,\n            replace: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var project;\n        params = this._super(params);\n        params.ori_date = params.date;\n        delete params.date;\n        if (params.project) {\n            if (params.project !== 'null') {\n                params.ori_site = params.project;\n            }\n        }\n        delete params.project;\n        params.sideload = true;\n        params.pass_end =\n            moment().format('YYYY-MM-DD') + '_' + moment().add(7, 'day').format('YYYY-MM-DD');\n        project = this.modelFor('projects.edit');\n        params.ori_site = project.get('id');\n        return this.store.query('orientation', params);\n    },\n});\n\nexport default ProjectsPassesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"IfGqctLy\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/passes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/project-files/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsViewProjectFileController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nProjectsViewProjectFileController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'ori_site',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    ori_site: null,\n    projectFilesObserver: function () {\n        return this.set('page', 1);\n    }.observes('projectfile'),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideEdit: true,\n            hideHistory: true,\n        }),\n    }),\n    queryParams: [\n        'page',\n        'user',\n        {\n            ori_site: {\n                as: 'project',\n            },\n        },\n        'row_info_status',\n        'q',\n    ],\n    row_info_status: null,\n    filter: false,\n    search: false,\n    form: 'projectfile',\n    showColumns: ['description', 'file'],\n    cancelRoute: 'projects.projectfiles',\n    show_link: false,\n    link: Ember.computed(function () {\n        return {\n            link: ['projects.edit.add-file'],\n            translated: this.get('intl').t('menu.add_project_file'),\n        };\n    }),\n    actions: {\n        tmp: function () {\n            return console.log('joo');\n        },\n    },\n});\n\nexport default ProjectsViewProjectFileController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/project-files/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditProjectFilesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nProjectsEditProjectFilesRoute = GeneralReportRoute.extend({\n    Collector: Ember.inject.service('collector-service'),\n    gui: Ember.inject.service(),\n    beforeModel: function () {\n        this._super(...arguments);\n        return this.set('gui.hideMobileHeader', false);\n    },\n    queryParams: {\n        ori_date: {\n            refreshModel: true,\n            replace: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        ori_site: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var project;\n        params = this._super(params);\n        params.ori_date = params.date;\n        delete params.date;\n        if (params.project) {\n            if (params.project !== 'null') {\n                params.ori_site = params.project;\n            }\n        }\n        delete params.project;\n        params.sideload = true;\n        project = this.modelFor('projects.edit');\n        //console.log project.get('id')\n        params['project'] = project.get('id');\n        return this.store.query('projectfile', params);\n    },\n});\n\nexport default ProjectsEditProjectFilesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"EC2p3Ep2\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[0,\\\"\\\\n         \\\"],[4,\\\"link-to\\\",null,[[\\\"params\\\"],[[24,[\\\"link\\\",\\\"link\\\"]]]],{\\\"statements\\\":[[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary wide-button\\\"],[8],[1,[24,[\\\"link\\\",\\\"translated\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"formatter\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"formatter\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/project-files/template.hbs\"}});","import Controller from '@ember/controller';\nimport EmberObject, { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport { A } from '@ember/array';\nimport avi from '../../../../mixins/avi';\nimport initController from '../../../../mixins/init-controller';\n\nexport default Controller.extend(avi, initController, {\n    intl: service(),\n    ttapi: service(),\n    store: service(),\n    Collector: service('collector-service'),\n    limit: 25,\n    page: 1,\n    queryObject: null,\n    employer: null,\n    init() {\n        this._super(...arguments);\n        this.columns = this.Collector.fieldArray('user');\n        this.showColumns = this.columns.mapBy('name');\n        this.queryParams = this.showColumns.concat(['page', 'q']);\n        this.rowActions = [\n            { action: 'edit', icon: 'move move-Pencil', text: this.intl.t('general.edit') },\n        ];\n        this.queryObject = {};\n    },\n\n    project: alias('model.project'),\n    data: alias('model.data'),\n\n    filters: computed(function () {\n        let filterArr = A([\n            EmberObject.create({ field: 'employer', form: 'user', singleselect: 'true' }),\n            EmberObject.create({ type: 'searchbox' }),\n        ]);\n\n        // Add all the possible filters from user report as \"more filters\"\n        const filterTypes = [\n            'date',\n            'database',\n            'databasearray',\n            'multiselect',\n            'dropdown_options',\n            'dropdown_values',\n            'dropdown_userlevel',\n            'dropdown_country',\n            'checkbox',\n        ];\n        for (const col of this.columns) {\n            if (!filterTypes.includes(col.type)) continue;\n            if (col.name === 'employer') continue;\n            filterArr.pushObject(\n                EmberObject.create({\n                    field: col.name,\n                    form: col.form,\n                    type: col.type,\n                    options: col.options,\n                    extra: true,\n                }),\n            );\n        }\n        return filterArr;\n    }),\n\n    pages: computed('data.count', function () {\n        return Math.ceil(get(this, 'data.count') / get(this, 'limit'));\n    }),\n    translated_columns: computed(function () {\n        return get(this, 'columns').mapBy('translated_name');\n    }),\n\n    actions: {\n        filterChanged(value, field) {\n            if (!value) value = '';\n            value = value.id || value;\n            set(this, field, value);\n        },\n\n        action(type, row) {\n            if (type === 'edit') {\n                this.transitionToRoute('users.edit', row.id).then((newRoute) =>\n                    this._afterSave(newRoute),\n                );\n            }\n        },\n    },\n\n    _afterSave(newRoute) {\n        newRoute.controller.afterSave = {\n            route: 'projects.edit.project-users',\n            params: this.project.id,\n        };\n    },\n\n    init_functions() {\n        this._super();\n    },\n});\n","import GeneralReportRoute from '../../../../routes/general-report';\nimport { get } from '@ember/object';\nimport { hash } from 'rsvp';\nimport { inject as service } from '@ember/service';\nimport { isEmpty } from '@ember/utils';\n\nexport default GeneralReportRoute.extend({\n    ttapi: service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n\n    model(params) {\n        params = this._super(params);\n\n        // Delete empty params and add all params to queryParams so filtering works\n        Object.keys(params).forEach((param) => {\n            if (isEmpty(params[param])) delete params[param];\n            this.queryParams[param] = { refreshModel: true };\n        });\n        let project = this.modelFor('projects.edit');\n        params.project = get(project, 'id');\n        let data = get(this, 'ttapi').request('/avi/project_users', {\n            type: 'GET',\n            data: params,\n        });\n        return hash({\n            data: data,\n            project: project,\n        });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"v50oMRIl\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"columns\\\",\\\"rowActions\\\",\\\"button\\\",\\\"column\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mt-4 row report-main-content\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\",\\\"hideClearFilters\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\",true]]],false],[0,\\\"\\\\n\\\"],[4,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"checkable\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"hideSort\\\"],[[24,[\\\"showColumns\\\"]],[24,[\\\"translated_columns\\\"]],[23,0,[\\\"data\\\",\\\"users\\\"]],false,[24,[\\\"rowActions\\\"]],\\\"action\\\",true]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[11,\\\"class\\\",[29,[[23,1,[\\\"class\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                        \\\"],[5,\\\"addon/value-format\\\",[],[[\\\"@form\\\",\\\"@field\\\",\\\"@value\\\"],[\\\"user\\\",[23,5,[]],[28,\\\"get\\\",[[23,1,[]],[23,5,[]]],null]]]],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[4,\\\"if\\\",[[23,3,[\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-row-icon invisible\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[[23,4,[\\\"icon\\\"]]]]],[3,\\\"action\\\",[[23,0,[]],\\\"action\\\",[23,4,[\\\"action\\\"]],[23,1,[]]]],[8],[4,\\\"if\\\",[[23,4,[\\\"text\\\"]]],null,{\\\"statements\\\":[[0,\\\" \\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,4,[\\\"text\\\"]]]]],false],[0,\\\" \\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2,3]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pages\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/project-users/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { computed } from '@ember/object';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    cc: service(),\n    showInfo: false,\n    row: null,\n\n    project: alias('model'),\n\n    lock: computed('row', function () {\n        return get(this, 'cc').request('rollock-lock-status', {\n            data: {\n                serialNumber: get(this, 'row.serialnumber'),\n                throwErrors: true,\n            },\n        });\n    }),\n\n    defaultValues: computed('project', function () {\n        return { project: get(this, 'project') };\n    }),\n\n    actions: {\n        rowAdded() {\n            this.notifyPropertyChange('defaultValues');\n        },\n        toggleInfo(row) {\n            if (row) {\n                set(this, 'row', row);\n            } else {\n                set(this, 'row', null);\n            }\n            this.toggleProperty('showInfo');\n        },\n    },\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"/dhjBqUi\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"row\\\",\\\"modal\\\",\\\"form\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"rollock@add\\\"],null]],null,{\\\"statements\\\":[[4,\\\"auto-modal\\\",null,[[\\\"header\\\"],[[28,\\\"collector-form-name\\\",[\\\"rollock\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"open\\\"]],\\\"expected `modal.open` to be a contextual component but found a string. Did you mean `(component modal.open)`? ('tt4/pods/projects/edit/rollocks/template.hbs' @ L5:C11) \\\"],null]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],[23,4,[\\\"show\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,4,[\\\"content\\\"]],\\\"expected `modal.content` to be a contextual component but found a string. Did you mean `(component modal.content)`? ('tt4/pods/projects/edit/rollocks/template.hbs' @ L6:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"defaults\\\",\\\"close\\\",\\\"rowAdded\\\"],[\\\"rollock\\\",[24,[\\\"defaultValues\\\"]],[28,\\\"action\\\",[[23,0,[]],[23,4,[\\\"close\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"rowAdded\\\"],null]]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,5,[\\\"fields\\\"]],\\\"expected `form.fields` to be a contextual component but found a string. Did you mean `(component form.fields)`? ('tt4/pods/projects/edit/rollocks/template.hbs' @ L8:C18) \\\"],null]],[[\\\"only\\\"],[\\\"serialnumber,direction,description\\\"]]],false],[0,\\\"\\\\n                \\\"],[1,[23,5,[\\\"buttons\\\"]],false],[0,\\\"\\\\n                \\\"],[1,[23,5,[\\\"saved\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"collector/form-report\\\",null,[[\\\"form\\\",\\\"filter\\\",\\\"showColumns\\\"],[\\\"rollock\\\",[24,[\\\"defaultValues\\\"]],\\\"serialnumber,direction,description\\\"]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/projects/edit/rollocks/template.hbs' @ L19:C7) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"rowActions\\\"]],\\\"expected `table.rowActions` to be a contextual component but found a string. Did you mean `(component table.rowActions)`? ('tt4/pods/projects/edit/rollocks/template.hbs' @ L20:C11) \\\"],null]],[[\\\"showActions\\\"],[\\\"remove\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Globe\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"rollock.lock_status.tooltip\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"toggleInfo\\\",[23,3,[]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"        \\\"],[1,[23,2,[\\\"no-content\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showInfo\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"close\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"toggleInfo\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"lock\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"lock\\\"]]],null],\\\"firmwareVersion\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"rollock.lock_status.lastConnection\\\"],null],false],[0,\\\":\\\"],[9],[1,[28,\\\"moment-format\\\",[[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"lock\\\"]]],null],\\\"lastConnection\\\"],null],\\\"llll\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"rollock.lock_status.timeZone\\\"],null],false],[0,\\\":\\\"],[9],[1,[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"lock\\\"]]],null],\\\"timeZone\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"rollock.lock_status.locale\\\"],null],false],[0,\\\":\\\"],[9],[1,[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"lock\\\"]]],null],\\\"locale\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"rollock.lock_status.firmwareVersion\\\"],null],false],[0,\\\":\\\"],[9],[1,[28,\\\"get\\\",[[28,\\\"await\\\",[[24,[\\\"lock\\\"]]],null],\\\"firmwareVersion\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"rollock.lock_status.not_found\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/rollocks/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nProjectsEditRoute = GeneralAddRoute.extend({\n    modelName: 'project',\n    controllerName: 'projects/edit',\n    edit: true,\n    afterSave: 'projects',\n});\n\nexport default ProjectsEditRoute;\n","import Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { computed, get, set } from '@ember/object';\nimport { filterBy, gt } from '@ember/object/computed';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    Collector: service('collector-service'),\n    session: service(),\n    store: service(),\n    dialogs: service(),\n    intl: service(),\n    queryParams: ['searchTerm'],\n\n    searchTerm: '',\n    dirtyRecords: filterBy('model.allSubProjects', 'hasDirtyAttributes', true),\n    hasDirtyRecords: gt('dirtyRecords.length', 0),\n    subproject: alias('model'),\n    _subprojects: computed('model.{subprojects,subprojects.[]}', function () {\n        if (get(this, 'Collector').testNeeds(['products.subprojectsmulti'])) {\n            return get(this, 'model.subprojects').map((item) => {\n                set(item, 'selected', get(item, 'project').includes(get(this, 'model.recordid'))); // eslint-disable-line\n                return item;\n            });\n        } else {\n            return get(this, 'model.subprojects').map((item) => {\n                item.selected = true;\n                return item;\n            });\n        }\n    }),\n\n    actions: {\n        searchChanged(term) {\n            set(this, 'searchTerm', term);\n        },\n        save() {\n            set(this, 'saving', true);\n\n            const promises = [];\n            get(this, 'dirtyRecords').forEach((record) => {\n                promises.push(record.save());\n            });\n\n            Promise.all(promises).then(() => this._setSavingFalse());\n        },\n\n        toggle(record) {\n            // skip toggling if multi subprojects is not on\n            if (!get(this, 'Collector').testNeeds(['products.subprojectsmulti'])) {\n                return;\n            }\n\n            if (get(record, 'project').includes(get(this, 'model.recordid'))) {\n                get(record, 'project').removeObject(get(this, 'model.recordid'));\n            } else {\n                get(record, 'project').pushObject(get(this, 'model.recordid'));\n            }\n\n            record.send('becomeDirty');\n\n            this.notifyPropertyChange('_subprojects');\n        },\n        changeNewSubprojectName(newName) {\n            set(this, 'newSubprojectName', newName);\n        },\n\n        addSubproject(name) {\n            set(this, 'saving', true);\n\n            let record;\n            if (get(this, 'edit')) {\n                set(this, 'edit.name', name);\n                record = get(this, 'edit');\n            } else {\n                const project = get(this, 'Collector').testNeeds(['products.subprojectsmulti'])\n                    ? [get(this, 'model.recordid')]\n                    : get(this, 'model.record');\n                record = get(this, 'store').createRecord('subproject', {\n                    name: name,\n                    project: project,\n                });\n            }\n            record.save().then(() => this._refresh());\n        },\n\n        open(record) {\n            const field = get(this, 'Collector').field('subproject', 'name');\n            field.value = record ? get(record, 'name') : '';\n            set(this, 'edit', record);\n            set(this, 'field', field);\n            set(this, 'showAddPopup', true);\n        },\n\n        remove(record) {\n            let confirm_text = get(this, 'intl').t('general.remove_row');\n            if (get(this, 'Collector').testNeedsOne('products.subprojectsmulti')) {\n                confirm_text = get(this, 'intl').t('subproject.remove_subproject', {\n                    count: get(record, 'project.length'),\n                });\n            }\n            get(this, 'dialogs')\n                .confirm(confirm_text)\n                .then((con) => this._removeRecord(con, record));\n        },\n    },\n\n    _setSavingFalse() {\n        set(this, 'saving', false);\n    },\n    _refresh() {\n        set(this, 'saving', false);\n        set(this, 'showAddPopup', false);\n        this.send('refreshModel');\n    },\n    _removeRecord(con, record) {\n        if (con) {\n            record.destroyRecord();\n        }\n    },\n});\n","import { inject as service } from '@ember/service';\nimport Route from '@ember/routing/route';\nimport { hash } from 'rsvp';\nimport { get } from '@ember/object';\n\nexport default Route.extend({\n    Collector: service('collector-service'),\n    session: service(),\n\n    queryParams: {\n        searchTerm: {\n            refreshModel: true,\n        },\n    },\n\n    model(params) {\n        // if subprojectsmulti is not we are just using form-report\n        if (!get(this, 'Collector').testNeeds(['products.subprojectsmulti']))\n            return { project: this.modelFor('projects.edit') };\n\n        let subprojectparams = {};\n\n        if (get(this, 'Collector').testNeeds(['products.subprojects'])) {\n            subprojectparams.project = get(this.modelFor('projects.edit'), 'id');\n        }\n\n        if (params.searchTerm) {\n            subprojectparams.q = params.searchTerm;\n        }\n\n        return hash({\n            record: this.modelFor('projects.edit'),\n            recordid: parseInt(get(this.modelFor('projects.edit'), 'id'), 10),\n            subprojects: this.store.query('subproject', subprojectparams),\n            allSubProjects: this.store.peekAll('subproject'),\n        });\n    },\n\n    actions: {\n        refreshModel() {\n            this.refresh();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"DcuMDeGE\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"subproject\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.subprojectsmulti\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"search-box\\\",null,[[\\\"value\\\",\\\"change\\\",\\\"classes\\\"],[[24,[\\\"searchTerm\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"searchChanged\\\"],null],\\\"form-control add-field\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group link-component-list\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_subprojects\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"list-group-item link\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"subproject@remove\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"badge\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,3,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Delete\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.subprojectsmulti\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[\\\"badge \\\",[28,\\\"if\\\",[[23,3,[\\\"selected\\\"]],\\\"link-comp-badge\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,3,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"p\\\",false],[12,\\\"class\\\",\\\"link-component-name\\\"],[12,\\\"title\\\",[29,[[23,3,[\\\"name\\\"]]]]],[3,\\\"action\\\",[[23,0,[]],\\\"open\\\",[23,3,[]]]],[8],[1,[23,3,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"subproject@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block project.task.button-margin\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"open\\\"]],[8],[1,[28,\\\"t\\\",[\\\"add.subproject\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddPopup\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"add.subproject\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAddPopup\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"collector/field-container\\\",null,[[\\\"field\\\",\\\"change\\\"],[[24,[\\\"field\\\"]],\\\"changeNewSubprojectName\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row record-comp-buttons\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addSubproject\\\",[24,[\\\"newSubprojectName\\\"]]]],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAddPopup\\\"]]],null],false]],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasDirtyRecords\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block project.task.button-margin\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"collector/form-report\\\",null,[[\\\"form\\\",\\\"filter\\\",\\\"showColumns\\\"],[\\\"subproject\\\",[28,\\\"hash\\\",null,[[\\\"project\\\"],[[24,[\\\"model\\\",\\\"project\\\"]]]]],\\\"number,name,description\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[23,1,[\\\"add\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/projects/edit/subprojects/template.hbs' @ L67:C11) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"rowActions\\\"]],\\\"expected `table.rowActions` to be a contextual component but found a string. Did you mean `(component table.rowActions)`? ('tt4/pods/projects/edit/subprojects/template.hbs' @ L68:C14) \\\"],null]],[[\\\"showActions\\\"],[\\\"edit,remove\\\"]]],false],[0,\\\"\\\\n            \\\"],[1,[23,2,[\\\"action\\\"]],false],[0,\\\"\\\\n            \\\"],[1,[23,2,[\\\"no-content\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/subprojects/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/tasks/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditTasksController;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nProjectsEditTasksController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    form: 'task',\n    show_linker_modal: false,\n    hide_linker: false,\n    actions: {\n        modalRecordSaved: function (settings, record) {\n            var c, id;\n            this.set('hide_linker', true);\n            id = this.get('model.record.id');\n            c = this.get('Collector');\n            return c\n                .getLinks(id, this.get('model.record.constructor.modelName'), 'task')\n                .then((tmp_links) => {\n                    var all_links, i, len, link, links;\n                    links = tmp_links['tasks'];\n                    all_links = [];\n                    all_links.push(record.id);\n                    for (i = 0, len = links.length; i < len; i++) {\n                        link = links[i];\n                        all_links.push(link['id']);\n                    }\n                    return c\n                        .saveLinks(\n                            id,\n                            this.get('model.record.constructor.modelName'),\n                            'task',\n                            all_links,\n                        )\n                        .then((links) => {\n                            this.set('hide_linker', false);\n                            this.set('show_linker_modal', false);\n                            return false;\n                        });\n                });\n        },\n        removeModal: function () {\n            return this.set('show_linker_modal', false);\n        },\n        openDialog: function () {\n            this.set('show_linker_modal', true);\n            return false;\n        },\n    },\n});\n\nexport default ProjectsEditTasksController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/tasks/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditTasksRoute;\n\nimport Ember from 'ember';\n\nProjectsEditTasksRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Em.inject.service(),\n    modelCreator: Ember.inject.service('model-creator'),\n    model: function (params) {\n        var c, field;\n        c = this.get('Collector');\n        if (c.fieldExists('worktime', 'task')) {\n            field = c.field('worktime', 'task');\n        } else {\n            field = c.field('multitask', 'taskname');\n        }\n        return Ember.RSVP.hash({\n            record: this.modelFor('projects.edit'),\n            field: field.options.fields,\n            tasks: this.modelFor('task'),\n        });\n    },\n    actions: {\n        //has to reload /forms to get reload setting to work\n        willTransition: function (transition) {\n            return this.get('modelCreator').createEmberModels();\n        },\n    },\n});\n\nexport default ProjectsEditTasksRoute;\n","export default Ember.HTMLBars.template({\"id\":\"IQ+HWOre\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"projects.edit.tasks.title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"projects.edit.tasks.description\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n   \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hide_linker\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/linker-comp\\\",null,[[\\\"model\\\",\\\"link\\\",\\\"show_fields\\\",\\\"linkTo\\\"],[[24,[\\\"model\\\",\\\"record\\\"]],\\\"task\\\",[24,[\\\"model\\\",\\\"field\\\"]],\\\"project\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n   \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"task@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block project.task.button-margin\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openDialog\\\"]],[8],[1,[28,\\\"t\\\",[\\\"add.task\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_linker_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"menu.add_task\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"cancelClicked\\\",\\\"recordSaved\\\"],[[24,[\\\"form\\\"]],[24,[\\\"record\\\"]],\\\"removeModal\\\",\\\"modalRecordSaved\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/tasks/template.hbs\"}});","import Controller from '@ember/controller';\nimport { computed, get } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    store: service(),\n    intl: service(),\n\n    selectedMonth: 0,\n\n    init() {\n        this._super();\n        this.contacts = get(this, 'store').findAll('exportContactPerson');\n        this.settings = { form: 'export-contact-person' };\n    },\n\n    taxmanerror: alias('model'),\n    taxmanKey: computed('taxmanerror.proj_type', function () {\n        if (get(this, 'taxmanerror.proj_type') == '4') {\n            return 'vsurakka';\n        } else {\n            return 'vstyonte';\n        }\n    }),\n    taxmanOptions: computed(function () {\n        return [\n            { id: 'vstyonte', name: get(this, 'intl').t('taxman.version.taxman_tyonte') },\n            { id: 'vsurakka', name: get(this, 'intl').t('taxman.version.taxman_urakka') },\n        ];\n    }),\n\n    contactSet: computed('contacts.[]', function () {\n        let contacts = get(this, 'contacts').filter((contact) => {\n            return get(contact, 'isNew') === false;\n        });\n        return contacts.length > 0;\n    }),\n\n    months: computed(function () {\n        let count = 0;\n        let montharr = [];\n\n        while (count < 36) {\n            const obj = {\n                id: count,\n                name: moment().subtract(count++, 'months').format('MMMM YYYY'),\n            };\n            montharr.push(obj);\n        }\n        return montharr;\n    }),\n\n    values: computed('model.id', function () {\n        let month = get(this, 'selectedMonth');\n\n        let moment_month = moment().subtract(month, 'months');\n\n        const project = get(get(this, 'model'), 'id');\n\n        let arr = [];\n\n        if (get(this, 'taxmanKey') == 'vstyonte') {\n            arr = [\n                {\n                    name: 'date',\n                    value:\n                        moment_month.startOf('month').format('YYYY-MM-DD') +\n                        '_' +\n                        moment_month.endOf('month').format('YYYY-MM-DD'),\n                },\n                {\n                    name: 'project',\n                    value: project,\n                },\n            ];\n        } else {\n            arr = [\n                {\n                    name: 'contract_month',\n                    value: moment_month.format('YYYY-MM'),\n                },\n                {\n                    name: 'contract_project',\n                    value: project,\n                },\n            ];\n        }\n\n        return arr;\n    }),\n\n    actions: {\n        toggleModal(settings, record) {\n            if (record) this.notifyPropertyChange('contacts');\n            this.toggleProperty('showModal');\n        },\n\n        fetchErrors() {\n            this.notifyPropertyChange('values');\n        },\n    },\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"56kNXxRy\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row mt-5\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[\\\"form-control input-lg\\\",[24,[\\\"months\\\"]],[24,[\\\"selectedMonth\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"taxmanerror\\\",\\\"proj_type\\\"]],\\\"3\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\"],[\\\"form-control input-lg\\\",[24,[\\\"taxmanOptions\\\"]],[24,[\\\"taxmanKey\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 mt-1\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"fetchErrors\\\"]],[8],[1,[28,\\\"t\\\",[\\\"taxman.fetch_errors\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"contactSet\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"taxman.contactnotset\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"taxman.set_contact\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"taxman/taxreport-component\\\",null,[[\\\"key\\\",\\\"query\\\",\\\"onlyErrors\\\",\\\"requestMethod\\\"],[[24,[\\\"taxmanKey\\\"]],[24,[\\\"values\\\"]],true,\\\"POST\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"taxman.add_contact\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"settings\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"settings\\\"]],\\\"toggleModal\\\",\\\"toggleModal\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/taxmanerrors/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Bvg8zf7Z\",\"block\":\"{\\\"symbols\\\":[\\\"sublink\\\",\\\"sensor\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-fluid\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],\\\"3\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-3 col-md-4 col-sm-6 col-xs-12 my-profile-circle-image-div img-project-div\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-profile-circle-image img-circle img-project\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url(\\\",[22,\\\"projectImage\\\"],\\\");\\\"]]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-6 col-md-6 col-sm-6 col-xs-12\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],\\\"3\\\"],null]],null,{\\\"statements\\\":[[7,\\\"h2\\\",true],[8],[1,[24,[\\\"model\\\",\\\"name\\\"]],false],[9],[7,\\\"h5\\\",true],[8],[1,[28,\\\"concat\\\",[[24,[\\\"model\\\",\\\"proj_firstname\\\"]],\\\" \\\",[24,[\\\"model\\\",\\\"proj_lastname\\\"]]],null],false],[0,\\\" \\\"],[9],[7,\\\"h5\\\",true],[8],[1,[24,[\\\"model\\\",\\\"phone\\\"]],false],[9],[7,\\\"h5\\\",true],[8],[1,[24,[\\\"model\\\",\\\"description\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"project.sensors\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-sensors\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"sensors\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"class\\\"],[\\\"loading-icon\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"sensors\\\",\\\"values\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sensor-item\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[8],[1,[23,2,[\\\"value\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"unit\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"options\\\"],[[23,2,[\\\"chart\\\"]],\\\"gauge\\\",[23,2,[\\\"chart_options\\\"]]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"subMenus\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subMenus\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"div\\\",\\\"submenu-item\\\",[23,1,[\\\"link\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/trnotices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditTrnoticesController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nProjectsEditTrnoticesController = GeneralReportController.extend({\n    form: 'trnotice',\n    showColumns: ['date', 'project', 'title', 'desc', 'status', 'pic', 'user'],\n    queryParams: ['date', 'status', 'user'],\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n        }),\n        sortByColumn: 'date',\n    }),\n    filters: Em.A([]),\n    status: 'all',\n});\n\nexport default ProjectsEditTrnoticesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/trnotices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditTrnoticesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nProjectsEditTrnoticesRoute = GeneralReportRoute.extend({\n    form: 'trnotice',\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var project;\n        params = this._super(params);\n        params.sideload = true;\n        project = this.modelFor('projects.edit');\n        params.project = project.get('id');\n        return this.store.query('trnotice', params);\n    },\n});\n\nexport default ProjectsEditTrnoticesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"DmndEcUd\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/trnotices/template.hbs\"}});","import Controller from '@ember/controller';\nimport EmberObject, { computed, get } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\nimport { htmlSafe } from '@ember/string';\nimport config from 'tt4/config/environment';\nimport { isEmpty } from '@ember/utils';\n\nexport default Controller.extend({\n    intl: service(),\n    Collector: service('collector-service'),\n\n    init() {\n        this._super(...arguments);\n        this.columnList = ['name', 'tv_status', 'date_checked', 'tv_pdf'];\n    },\n    content: alias('model.users'),\n    statusFilter: alias('model.status'),\n\n    translated_columns: computed(function () {\n        return get(this, 'columnList').map((column) => {\n            return get(this, 'intl').t('report.employer.' + column);\n        });\n    }),\n\n    data: computed('content', function () {\n        let model = get(this, 'content.employers');\n        if (!model) return;\n\n        if (this.statusFilter) {\n            model = model.filter((row) => row.tv_status === this.statusFilter);\n        }\n\n        let formattedRows = A([]);\n\n        model.forEach((row) => {\n            row.tv_status = this.formatTvStatus(row.tv_status);\n            row.tv_pdf = !isEmpty(row.tv_pdf)\n                ? get(this, 'Collector')._format_(row.tv_pdf, 'employer', 'tv_pdf')\n                : [];\n\n            formattedRows.push(EmberObject.create(row));\n        });\n\n        return formattedRows;\n    }),\n\n    formatTvStatus(status) {\n        if (!status) return;\n        let formatted = get(this, 'intl').t('employer.tv_status.' + status);\n\n        if (status !== 'ei_loydy') {\n            return htmlSafe(\n                '<img class=\"report-img\" src=\"' +\n                    config.APP.CDN_URL +\n                    '/images/tv' +\n                    status +\n                    '.png\" title=\"' +\n                    formatted +\n                    '\">',\n            );\n        } else {\n            return get(this, 'intl').t('employer.tv_status.' + status);\n        }\n    },\n});\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\n\nexport default Route.extend({\n    ttapi: service(),\n\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n    },\n\n    async model(queryparams) {\n        const projectId = get(this.modelFor('projects.edit'), 'id');\n\n        return {\n            users: await get(this, 'ttapi').request('api/project/employersTvStatus', {\n                data: { project: projectId }\n            }),\n            status: queryparams.status,\n        };\n    },\n\n    resetController(controller, isExiting) {\n        if (isExiting) {\n            // Reset the status query parameter to its default value\n            set(controller, 'status', null);\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"CrQIaIBe\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row report-main-content\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\"],[[24,[\\\"columnList\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"data\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/tv-status/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/working-now/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorkingNowController;\n\nimport Ember from 'ember';\n\nimport { inject as service } from '@ember/service';\n\nWorkingNowController = Ember.Controller.extend({\n    ttapi: service(),\n    intl: service(),\n    actions: {\n        showModal: function () {\n            this.set('showModal', true);\n            this.set('messageSent', false);\n            this.set('message_error', false);\n            return false;\n        },\n        closeModal: function () {\n            return this.set('showModal', false);\n        },\n        sendMessage: function () {\n            var message, params, receivers, self, title;\n            self = this;\n            params = {};\n            receivers = [];\n            title = this.get('title');\n            message = this.get('message_content');\n            if (title == null || title === '' || message == null || message === '') {\n                this.set('message_error', true);\n                return;\n            }\n            this.get('model').map((user) => {\n                return receivers.push(user.id);\n            });\n            params.receivers = receivers;\n            params.header = title;\n            params.message = message;\n            return this.get('ttapi')\n                .request('/messages/new_message', {\n                    type: 'POST',\n                    data: params,\n                })\n                .then((data) => {\n                    this.set('messageSent', true);\n                    this.set('title', '');\n                    return this.set('message_content', '');\n                });\n        },\n    },\n});\n\nexport default WorkingNowController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/edit/working-now/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsEditWorkingNowRoute;\n\nimport Ember from 'ember';\n\nProjectsEditWorkingNowRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    queryParams: {\n        project: {\n            refreshModel: true,\n            replace: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var project, prparams, wtparams;\n        //params = @._super(params)\n        project = this.modelFor('projects.edit');\n        wtparams = {};\n        prparams = {};\n        wtparams.project = project.get('id').toString();\n        wtparams.sideload = ['user.firstname', 'user.lastname', 'user.phone', 'user.image'];\n        wtparams.endtime = '(empty)';\n        prparams.project = project.get('id').toString();\n        prparams.sideload = ['user.firstname', 'user.lastname', 'user.phone', 'user.image'];\n        prparams.out = '(empty)';\n        prparams.groupBy = 'user';\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var c, promarr;\n            promarr = [];\n            c = this.get('Collector');\n            return Ember.RSVP.hash({\n                presences: c.testNeedsOne('presence')\n                    ? this.store.query('presence', prparams)\n                    : void 0,\n                worktimes: c.testNeedsOne('worktime')\n                    ? this.store.query('worktime', wtparams)\n                    : void 0,\n            }).then(function (values) {\n                if (values['worktimes']) {\n                    values['worktimes'].forEach(function (item) {\n                        return promarr.push(item.get('user'));\n                    });\n                }\n                if (values['presences']) {\n                    values['presences'].forEach(function (item) {\n                        return promarr.push(item.get('user'));\n                    });\n                }\n                return resolve(promarr.uniq());\n            });\n        });\n    },\n});\n\nexport default ProjectsEditWorkingNowRoute;\n","export default Ember.HTMLBars.template({\"id\":\"mys/St6h\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\"],\\\"statements\\\":[[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.number_of_working_users_today\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[24,[\\\"model\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"project.send_message\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-fluid\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"user-working-div\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-1 col-md-1 col-sm-3 col-xs-3 my-profile-circle-image-div\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"image\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"user-profile-circle-image img-circle\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[28,\\\"api-image\\\",[[23,1,[\\\"image\\\",\\\"firstObject\\\",\\\"url\\\"]]],null],\\\"');\\\"]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"user-profile-circle-image img-circle\\\"],[10,\\\"id\\\",\\\"image\\\"],[10,\\\"style\\\",\\\"background-image:url('img/user-profile-lg-gray.png');\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-3 col-md-3 col-sm-3 col-xs-3 user-working-data\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[8],[1,[23,1,[\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-3 col-md-3 col-sm-3 col-xs-3 user-working-data\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.phone\\\"],null],false],[0,\\\": \\\"],[1,[23,1,[\\\"phone\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"project.send_message\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"messageSent\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"project.message_sent\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[24,[\\\"message_error\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"project.modal.title\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control\\\",[28,\\\"mut\\\",[[24,[\\\"title\\\"]]],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"project.modal.message\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"class\\\",\\\"rows\\\",\\\"value\\\"],[\\\"form-control\\\",6,[28,\\\"mut\\\",[[24,[\\\"message_content\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendMessage\\\",[24,[\\\"title\\\"]],[24,[\\\"message_content\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"saved.modal.send_message\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/edit/working-now/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsHistoryRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nProjectsHistoryRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default ProjectsHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"KoEgfp0j\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"project\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/history/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"lPwB/9At\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/inactive-loading/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    ttapi: service(),\n    Collector: service('collector-service'),\n\n    init() {\n        this._super(...arguments);\n        this.endpoint = this.ttapi.host + '/inactive_projects';\n        this.types = this.getTypes();\n    },\n\n    content: alias('model'),\n\n    getTypes() {\n        let typesArr = [];\n        if (this.Collector.formExists('worktime')) typesArr.push('worktime');\n        if (this.Collector.formExists('presence')) typesArr.push('presence');\n\n        return typesArr.join(',');\n    },\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"hhpcajh3\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"projects.report.inactive_projects\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[9],[0,\\\"\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showFilters\\\",\\\"@filter\\\",\\\"@hideAdditionalFiltersButton\\\"],[\\\"project\\\",\\\"q\\\",[28,\\\"hash\\\",null,[[\\\"endpoint\\\",\\\"types\\\"],[[23,0,[\\\"endpoint\\\"]],[23,0,[\\\"types\\\"]]]]],true]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/inactive/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport pdfMixin from '../../../mixins/pdf-export';\n\nimport { generateQrCode } from 'tt4/utils/qrcode-generator';\n\nProjectsIndexController = GeneralReportController.extend(pdfMixin, {\n    flags: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    exportFile: Ember.inject.service(),\n    form: 'project',\n    showColumns: [\n        'number',\n        'name',\n        'address',\n        'city',\n        'zip',\n        'proj_type',\n        'proj_end',\n        'description',\n    ],\n    queryParams: ['page', 'q', 'group', 'customer', 'owner', 'contact_user'],\n    filters: Em.A([\n        Em.Object.create({\n            field: 'group',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    status: 'active',\n    group: null,\n    contact_user: null,\n    owner: null,\n    customer: null,\n    settings: Em.Object.create({\n        rowActions: [],\n        massedit: true,\n    }),\n    init_functions: function () {\n        if (!this.get('flags').test('form-report-projects')) {\n            this._super();\n            this.addSelfRegisteringHelp();\n            this.addSmsHelp();\n            return this.addSafetyNoticeUrlCreation();\n        } else {\n            return null;\n        }\n    },\n    addSmsHelp: function () {\n        var _self;\n        _self = this;\n        if (\n            !this.get('Collector').testNeeds([\n                'products.personalliggareandid06||products.personalliggare',\n            ])\n        ) {\n            return;\n        }\n        return this.get('settings.rowActions').push({\n            text: this.get('intl').t('general.smshelp'),\n            action: function (self, projects) {\n                return _self.send('smsHelpFunction', projects);\n            },\n        });\n    },\n    addSelfRegisteringHelp: function () {\n        var _self;\n        _self = this;\n        // hidden for now.. waiting new way to do the whole thing\n        if (!this.get('Collector').testNeeds(['presence', '!products.kulunvalvonta'])) {\n            return;\n        }\n        return this.get('settings.rowActions').push({\n            text: this.get('intl').t('general.usersigninghelp'),\n            action: function (self, projects) {\n                return _self.send('selfRegisteringHelp', projects);\n            },\n        });\n    },\n    addSafetyNoticeUrlCreation: function () {\n        var _self;\n        _self = this;\n        if (\n            !this.get('Collector').testNeeds(['products.measurement_tr||products.measurement_mvr'])\n        ) {\n            return;\n        }\n        return this.get('settings.rowActions').push({\n            text: this.get('intl').t('project.anon_safety_observation'),\n            action: (self, projects) => {\n                return _self.send('safetyNoticeUrlCreationAction', projects);\n            },\n        });\n    },\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        transitionToEditRoute: function (row) {\n            return this.transitionToRoute('projects.edit', row);\n        },\n        showRemovedRows: function () {\n            if (this.get('settings.showStatus') === 'removed') {\n                return this.set('settings.showStatus', 'normal');\n            } else {\n                return this.set('settings.showStatus', 'removed');\n            }\n        },\n\n\n        safetyNoticeUrlCreationAction: function (projects) {\n            var projArr = [];\n            projects.forEach((project) => {\n                projArr.push(project.get('id'));\n            });\n            this.set('gettingUrl', true);\n            return this.get('Collector')\n                .ttapi({\n                    url: 'safety_notice_shorturl',\n                    method: 'post',\n                    data: {\n                        projectids: projArr,\n                        lang: moment.locale(),\n                    },\n                })\n                .then((data) => {\n                    if (data.urls) {\n                        const qrCodeDataUrls = {};\n                        for (const [projectId, url] of Object.entries(data.urls)) {\n                            qrCodeDataUrls[projectId] = generateQrCode(url); // Use plain URL\n                        }\n                        return this.get('Collector')\n                            .ttapi({\n                                url: 'safety_notice_pdf',\n                                method: 'post',\n                                data: {\n                                    originalUrls: data.urls,\n                                    qrCodeDataUrls: qrCodeDataUrls,\n                                    projectids: projArr,\n                                },\n                            })\n                            .then((response) => {\n                                if (response.url) {\n                                    window.open(response.url, '_blank');\n                                }\n                            });\n                    }\n                });\n        },\n        selfRegisteringHelp: function (projects) {\n            /*\n      CREATE USER SIGNING PDF HELP - this is so horrible!!!!!! .. but does the thing\n      */\n            var _self,\n                arr,\n                creator,\n                currenturl,\n                getLongUrl,\n                getTinyUrl,\n                i,\n                intl,\n                len,\n                project,\n                promise,\n                promise_arr,\n                writtenForm;\n            intl = this.get('intl');\n            _self = this;\n            currenturl = window.location.href.split('#')[0];\n            creator = this.get('session.currentUser.username');\n            if (!creator) {\n                alert('Error occured. Please, log in again.');\n                return;\n            }\n            getLongUrl = function (projectid, creator) {\n                return new Em.RSVP.Promise(function (resolve, reject) {\n                    var store, url, userid;\n                    url = '#/register/user?project=' + projectid + '&creator=' + creator;\n                    userid = _self.get('session.currentUser.id');\n                    store = _self.get('store');\n                    return store\n                        .query('user', {\n                            id: userid,\n                            sideload: ['employer.name', 'employer.emp_id', 'employer.country'],\n                        })\n                        .then(() => {\n                            var employer;\n                            employer = _self.get('session.currentUser.employer');\n                            if (employer) {\n                                if (!employer.get('country')) {\n                                    reject({\n                                        missing: 'employer_country',\n                                    });\n                                }\n                                url += '&employer_name=' + encodeURIComponent(employer.get('name'));\n                                url += '&employer_id=' + encodeURIComponent(employer.get('emp_id'));\n                                url +=\n                                    '&employer_country=' +\n                                    encodeURIComponent(employer.get('country'));\n                                return resolve({\n                                    longurl: url,\n                                    employer: employer.get('name'),\n                                });\n                            } else {\n                                return store\n                                    .query('employer', {\n                                        main: 'on',\n                                    })\n                                    .then((employers) => {\n                                        employer = employers.get('firstObject');\n                                        if (employer == null) {\n                                            return alert(\n                                                'Main employer is not set. Cannot create help.',\n                                            );\n                                        } else {\n                                            url +=\n                                                '&employer_name=' +\n                                                encodeURIComponent(employer.get('name'));\n                                            url +=\n                                                '&employer_id=' +\n                                                encodeURIComponent(employer.get('emp_id'));\n                                            url +=\n                                                '&employer_country=' +\n                                                encodeURIComponent(employer.get('country'));\n                                            return resolve({\n                                                longurl: url,\n                                                employer: employer.get('name'),\n                                            });\n                                        }\n                                    });\n                            }\n                        });\n                });\n            };\n            getTinyUrl = function (projectid, projectname) {\n                return new Em.RSVP.Promise(function (resolve, reject) {\n                    //resolve \"http://goo.gl/Aer43 \" + projectid\n                    return getLongUrl(projectid, creator).then(\n                        (ret) => {\n                            var call;\n                            call = _self.Collector.ttapi({\n                                url: 'code/generate',\n                                data: {\n                                    longUrl: currenturl + ret.longurl,\n                                },\n                                method: 'post',\n                            });\n                            return call.then(function (back) {\n                                return resolve({\n                                    project: projectname,\n                                    url: back.id,\n                                    employer: ret.employer,\n                                });\n                            });\n                        },\n                        function (error) {\n                            return reject(error);\n                        },\n                    );\n                });\n            };\n            writtenForm = function (url) {\n                var arr, ascii, character, characters, i, len, numbers, ret_arr, str;\n                arr = url.split('/');\n                str = arr[arr.length - 1];\n                characters = str.split('');\n                numbers = intl.t('general.numbers').split(',');\n                ret_arr = [];\n                for (i = 0, len = characters.length; i < len; i++) {\n                    character = characters[i];\n                    ascii = character.charCodeAt(0);\n                    ret_arr.push(\n                        ascii >= 48 && ascii <= 57\n                            ? numbers[ascii - 48]\n                            : ascii >= 65 && ascii <= 90\n                              ? intl.t('general.big_char') + ' ' + character\n                              : ascii >= 97 && ascii <= 122\n                                ? intl.t('general.small_char') +\n                                  ' ' +\n                                  String.fromCharCode(ascii - 32)\n                                : void 0,\n                    );\n                }\n                return ret_arr.join(', ');\n            };\n            promise_arr = [];\n            arr = [];\n            for (i = 0, len = projects.length; i < len; i++) {\n                project = projects[i];\n                promise = getTinyUrl(project.get('id'), project.get('name'));\n                promise_arr.push(promise);\n                promise.then(function (back) {\n                    return arr.push(back);\n                });\n            }\n            return Em.RSVP.Promise.all(promise_arr).then(\n                function () {\n                    var codeBlock, elem, first, j, len1, pdfElements, start;\n                    pdfElements = [];\n                    first = true;\n                    for (j = 0, len1 = arr.length; j < len1; j++) {\n                        elem = arr[j];\n                        if (elem.url.indexOf('=') < 0) {\n                            start = elem.url.lastIndexOf('/') + 1; // when using http://m0v.eu/<code> url\n                        } else {\n                            start = elem.url.indexOf('=') + 1; // when using kehityspurkki or p.move (http://p.movenium.com/next/ttapi/public/code?code=<code>)\n                        }\n                        codeBlock = elem.url.substring(start);\n                        if (first) {\n                            pdfElements.push(elem.project + ' - ' + elem.employer);\n                        } else {\n                            pdfElements.push({\n                                text: elem.project + ' - ' + elem.employer,\n                                pageBreak: 'before',\n                            });\n                        }\n                        pdfElements.push(' ');\n                        pdfElements.push(intl.t('general.usersigninghelp_before').toString());\n                        pdfElements.push({\n                            text: elem.url,\n                            style: 'bigText',\n                            margin: [10, 10, 10, 10],\n                        });\n                        pdfElements.push('(' + writtenForm(elem.url) + ')');\n                        pdfElements.push(' ');\n                        pdfElements.push(intl.t('general.usersigninghelp_after').toString());\n                        pdfElements.push({\n                            text: codeBlock,\n                            style: 'bigText',\n                            margin: [10, 10, 10, 10],\n                        });\n                        first = false;\n                    }\n                    return _self.createPdfFromElements(pdfElements);\n                },\n                (error) => {\n                    if (error.missing) {\n                        return self\n                            .get('dialogs')\n                            .alert(\n                                self\n                                    .get('intl')\n                                    .t('user_invite.pdf_create.missing.' + error.missing),\n                            );\n                    } else {\n                        return self.get('dialogs').alert(self.get('intl').t('general.error'));\n                    }\n                },\n            );\n        },\n        //########################################################\n        smsHelpFunction: function (projects) {\n            var _self, first, i, intl, len, pdfElements, project, text;\n            intl = this.get('intl');\n            pdfElements = [];\n            first = true;\n            _self = this;\n            for (i = 0, len = projects.length; i < len; i++) {\n                project = projects[i];\n                if (!project.get('number')) {\n                    alert(\n                        intl.t('general.smshelperror', {\n                            projectname: project.get('name'),\n                            projectnumber: project.get('number'),\n                        }),\n                    );\n                    continue;\n                }\n                text = intl.t('general.smshelptext', {\n                    projectname: project.get('name'),\n                    projectnumber: project.get('number'),\n                });\n                if (first) {\n                    pdfElements.push(text);\n                } else {\n                    pdfElements.push({\n                        text: text,\n                        pageBreak: 'before',\n                    });\n                }\n                first = false;\n            }\n            if (pdfElements.length > 0) {\n                return _self.createPdfFromElements(pdfElements);\n            }\n        },\n    },\n});\n\nexport default ProjectsIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nProjectsIndexRoute = GeneralReportRoute.extend({\n    flags: Ember.inject.service(),\n    form: 'project',\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        if (\n            !this.get('flags').test('form-report-projects') &&\n            !this.get('flags').test('ember-movenium-form-report-projects')\n        ) {\n            params = this._super(params);\n            params.sideload = true;\n            return this.store.query('project', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('projects.index').set('qParams', params);\n        }\n    },\n});\n\nexport default ProjectsIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"SnW3vasg\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"row\\\",\\\"tableAction\\\",\\\"more\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-projects\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@filterByValues\\\",\\\"@form\\\",\\\"@showFilters\\\",\\\"@filterChangeAction\\\"],[[22,\\\"qParams\\\"],\\\"project\\\",\\\"group,customer,owner,contact_user,q\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,6,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,9,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/projects/edit/\\\"]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"presence\\\",\\\"!products.kulunvalvonta\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,9,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"selfRegisteringHelp\\\",[23,7,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"general.usersigninghelp\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.personalliggareandid06||products.personalliggare\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,9,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"smsHelpFunction\\\",[23,7,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"general.smshelp\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.measurement_tr||products.measurement_mvr\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,9,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"safetyNoticeUrlCreationAction\\\",[23,7,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"project.anon_safety_observation\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"]],\\\"parameters\\\":[9]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"transitionToEditRoute\\\"],null],\\\"remove,history,overview,edit\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"form-report-projects\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"collector/form-report\\\",[],[[\\\"@filterByValues\\\",\\\"@form\\\"],[[22,\\\"qParams\\\"],\\\"project\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"filters\\\"]],[],[[\\\"@showColumns\\\",\\\"@filterChangeAction\\\"],[\\\"group,customer,owner,contact_user,q\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"more\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"qrCode\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"presence\\\",\\\"!products.kulunvalvonta\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,5,[\\\"row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"selfRegisteringHelp\\\",[23,2,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"general.usersigninghelp\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.personalliggareandid06||products.personalliggare\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,5,[\\\"row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"smsHelpFunction\\\",[23,2,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"general.smshelp\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.measurement_tr||products.measurement_mvr\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,5,[\\\"row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"safetyNoticeUrlCreationAction\\\",[23,2,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"project.anon_safety_observation\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"inlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"pdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"columnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"exportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"gps\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"rowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"remove,history\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionToEditRoute\\\",[23,3,[]]]],[8],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"no-content\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"project\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"settings\\\",\\\"_showGpsButton\\\"],[\\\"bubbleTransition\\\",\\\"project\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"settings\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/index/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"EXiTH9B8\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/magickey/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsMagickeyController;\n\nimport Ember from 'ember';\n\nProjectsMagickeyController = Ember.Controller.extend({\n    queryParams: ['magic_key'],\n    Collector: Em.inject.service('collector-service'),\n    intl: Em.inject.service(),\n    mySites: Em.inject.service(),\n    session: Em.inject.service(),\n    tools: Em.inject.service(),\n    store: Em.inject.service(),\n    selfregister_url: null,\n    createNewUserAndLogin: function (creator, projectid) {\n        var p1, userinfo;\n        userinfo = {\n            project: projectid,\n            creator: creator,\n            person_country: this.get('session.currentUser.homecountry')\n                ? this.get('session.currentUser.homecountry')\n                : null,\n            lastname: this.get('session.currentUser.lastname'),\n            firstname: this.get('session.currentUser.firstname'),\n            id06card: this.get('session.currentUser.id06kort'),\n            person_code: this.get('session.currentUser.personid'),\n            relative_name: this.get('session.currentUser.relative_name'),\n            relative_phone: this.get('session.currentUser.relative_phone'),\n            email: this.get('session.currentUser.email'),\n            phone: this.get('session.currentUser.phone'),\n            id06valid: this.get('session.currentUser.id06valid'),\n            taxnumber: this.get('session.currentUser.taxnumber'),\n            birthdate: this.get('session.currentUser.birthdate'),\n            contract_type: this.get('session.currentUser.emp_relation'),\n            workpass: this.get('session.currentUser.workpass'),\n        };\n        //number: @get 'session.currentUser.number'\n        p1 = new Ember.RSVP.Promise((resolve, reject) => {\n            var employer;\n\n            // first fetch employer from api to get the needed info (emp_id and country)\n            if (this.get('Collector').testNeedsOne('employer')) {\n                return this.get('store')\n                    .findRecord('employer', this.get('session.currentUser.employer.id'), {\n                        reload: true,\n                    })\n                    .then((employer) => {\n                        userinfo['employer_name'] = employer.get('name');\n                        userinfo['employer_id'] = employer.get('emp_id');\n                        userinfo['employer_country'] = employer.get('country');\n                        return resolve(userinfo);\n                    });\n            } else {\n                //if service doesnt have employers on, employer is the current company\n                employer = this.get('session.currentUser.company_info');\n                userinfo['employer_name'] = employer.get('company_name');\n                userinfo['employer_id'] = employer.get('id');\n                userinfo['employer_country'] = employer.get('country');\n                return resolve(userinfo);\n            }\n        });\n        return p1.then((userinfo) => {\n            var promise;\n            promise = this.get('Collector').ttapi({\n                url: 'registerUser',\n                method: 'post',\n                data: {\n                    userinfo: userinfo,\n                },\n            });\n            return promise.then((back) => {\n                this.get('mySites').addSiteWithJustId(projectid);\n                return this.get('tools').change_service(back.username, '#/my-sites');\n            });\n        });\n    },\n    actions: {\n        changeuser: function () {\n            var c, params, username;\n            username = this.get('change_user_username');\n            c = this.get('Collector');\n            params = {\n                url: 'login',\n                type: 'POST',\n                data: {\n                    change_user: username,\n                },\n            };\n            return c.ajax(params).then((data) => {\n                return this.transitionToRoute('token', data.refresh_token, {\n                    queryParams: {\n                        url: window.location.href,\n                    },\n                });\n            });\n        },\n        add_project_with_magickey: function (magickey) {\n            var c, promise;\n            c = this.get('Collector');\n            if (!magickey) {\n                this.set('error', this.get('intl').t('magic_key.error_key_not_given'));\n                return;\n            }\n            this.set('error', null);\n            promise = c.ttapi({\n                url: 'send_magickey',\n                method: 'post',\n                data: {\n                    magickey: magickey,\n                },\n            });\n            return promise.then(\n                (back) => {\n                    switch (back.type) {\n                        case 'linked':\n                            if (back.projectid) {\n                                this.get('mySites').addSite(back.projectid, true);\n                            }\n                            return this.set('show_linking_done', true);\n                        case 'selfregister':\n                            this.set('selfregister_url', back.url);\n                            if (back.creator) {\n                                return this.createNewUserAndLogin(back.creator, back.project);\n                            } else {\n                                // fall back version if ttapi isnt returning creator\n                                return this.set('show_needs_selfregister', true);\n                            }\n                            break;\n                        case 'changeuser':\n                            this.set('change_user_username', back.username);\n                            return this.set('show_needs_changeuser', true);\n                        default:\n                            this.set('error', 'unknown error!!');\n                            return console.error(\n                                'Unknown response for add_project_with_magickey ' +\n                                    JSON.stringify(back),\n                            );\n                    }\n                },\n                (reason) => {\n                    return this.set(\n                        'error',\n                        this.get('intl').t('magic_key.error_' + reason.payload.error),\n                    );\n                },\n            );\n        },\n    },\n});\n\nexport default ProjectsMagickeyController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/magickey/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsMagickeyRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nProjectsMagickeyRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default ProjectsMagickeyRoute;\n","export default Ember.HTMLBars.template({\"id\":\"fu8ez7CT\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.join-project\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"my-sites\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-md-4 col-sm-offset-3 col-md-offset-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"magic_key.enter_key\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"magic_key.description\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"text\\\",[24,[\\\"magic_key\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[23,0,[\\\"error\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_needs_selfregister\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"magic_key.needs_to_selfregister\\\"],null],false],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[29,[[22,\\\"selfregister_url\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"magic_key.goto_selfregister\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_needs_changeuser\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"magic_key.needs_to_changeuser\\\"],null],false],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"changeuser\\\"]],[8],[1,[28,\\\"t\\\",[\\\"magic_key.chageuser_now\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_linking_done\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"magic_key.linking_done\\\"],null],false],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add_project_with_magickey\\\",[24,[\\\"magic_key\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"magic_key.send\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/magickey/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/removed/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsRemovedController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nProjectsRemovedController = GeneralReportController.extend({\n    flags: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    form: 'project',\n    showColumns: ['number', 'name', 'proj_type', 'proj_end', 'description'],\n    queryParams: ['page', 'q', 'group'],\n    init_functions: function () {\n        if (this.get('flags').test('form-report-projects')) {\n            return null;\n        } else {\n            return this._super();\n        }\n    },\n    filters: Em.A([\n        Em.Object.create({\n            field: 'group',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    row_info_status: 'removed',\n    group: null,\n    settings: Em.Object.create({\n        showStatus: 'removed',\n        rowActions: [],\n    }),\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n    },\n});\n\nexport default ProjectsRemovedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/removed/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nProjectsIndexRoute = GeneralReportRoute.extend({\n    flags: Ember.inject.service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        if (\n            !this.get('flags').test('form-report-projects') &&\n            !this.get('flags').test('ember-movenium-form-report-projects')\n        ) {\n            params = this._super(params);\n            params.sideload = true;\n            return this.store.query('project', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('projects.removed').set('qParams', params);\n        }\n    },\n});\n\nexport default ProjectsIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"zzVJveOk\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"settings\\\",\\\"showStatus\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"projects.report.removed_projects\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-projects\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showRemoved\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@filterChangeAction\\\",\\\"@localStorageKey\\\"],[\\\"project\\\",true,[22,\\\"qParams\\\"],\\\"group,q\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null],\\\"removed_project\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,6,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"form-report-projects\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"collector/form-report\\\",[],[[\\\"@form\\\",\\\"@localStorageKey\\\",\\\"@showRemoved\\\",\\\"@filterByValues\\\"],[\\\"project\\\",\\\"removed_project\\\",true,[22,\\\"qParams\\\"]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"filters\\\"]],[],[[\\\"@showColumns\\\",\\\"@filterChangeAction\\\"],[\\\"group,q\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"actions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"rowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"no-content\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"project\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"hideRemoveControls\\\",\\\"filters\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",\\\"project\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],true,[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/removed/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsReportController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport $ from 'jquery';\n\nProjectsReportController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    queryParams: ['project', 'date'],\n    date: moment().subtract(1, 'month').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    columns: Em.A([\n        Em.Object.create({\n            field: 'user',\n            form: 'worktime',\n        }),\n        Em.Object.create({\n            field: 'project',\n            form: 'worktime',\n        }),\n        Em.Object.create({\n            field: 'work_hours',\n            form: 'worktime',\n        }),\n        Em.Object.create({\n            field: 'absence_hours',\n            form: 'abcense',\n        }),\n    ]),\n    summableFields: {\n        worktime: 'work_hours',\n        abcense: 'absence_hours',\n    },\n    hasRequiredFilters: Em.computed('project', function () {\n        return !!this.get('project');\n    }),\n    filters: Em.computed(function () {\n        var params, rangesPromise;\n        rangesPromise = $.Deferred();\n        if (this.get('Collector').formExists('wage_period')) {\n            params = {\n                limit: 20,\n                order: 'period_end_date-,period_start_date-',\n                period_start_date:\n                    moment().subtract(1, 'years').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD'),\n            };\n            this.get('store')\n                .query('wage-period', params)\n                .then(function (periods) {\n                    var ranges;\n                    ranges = {};\n                    periods.forEach(function (period) {\n                        var name;\n                        if (period.get('period_name')) {\n                            name = period.get('period_name');\n                        } else {\n                            name =\n                                moment(period.get('period_start_date')).format('L') +\n                                ' - ' +\n                                moment(period.get('period_end_date')).format('L');\n                        }\n                        return (ranges[name] = [\n                            moment(period.get('period_start_date')),\n                            moment(period.get('period_end_date')),\n                        ]);\n                    });\n                    return rangesPromise.resolve(ranges);\n                });\n        } else {\n            rangesPromise.resolve({});\n        }\n        return Em.A([\n            Em.Object.create({\n                field: 'date',\n                form: 'worktime',\n                ranges: rangesPromise,\n            }),\n            Em.Object.create({\n                field: 'project',\n                form: 'worktime',\n            }),\n        ]);\n    }),\n});\n\nexport default ProjectsReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsReportRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nProjectsReportRoute = GeneralReportRoute.extend({\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var absenceParams;\n        params = this._super(params);\n        params.sideload = true;\n        params.groupBy = 'user,project';\n        absenceParams = {\n            startdate: params.date,\n            sideload: true,\n            groupBy: 'user',\n        };\n        return Ember.RSVP.hash({\n            worktimes: this.store.query('worktime', params),\n            abcenses: this.store.query('abcense', absenceParams),\n        });\n    },\n});\n\nexport default ProjectsReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"/1tl8u1X\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"sum-report\\\",null,[[\\\"model\\\",\\\"summableFields\\\",\\\"columns\\\",\\\"hasRequiredFilters\\\",\\\"mainForm\\\",\\\"idField\\\"],[[24,[\\\"model\\\"]],[24,[\\\"summableFields\\\"]],[24,[\\\"columns\\\"]],[24,[\\\"hasRequiredFilters\\\"]],\\\"worktime\\\",\\\"user.id\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/rfiddevices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsRfiddevicesController;\n\nimport Ember from 'ember';\n\nProjectsRfiddevicesController = Ember.Controller.extend({\n    report: Ember.computed('filters.@each.value', function () {\n        return Ember.Object.create({\n            form: 'rfiddevice',\n            query: this.get('filters').map(function (filter) {\n                return {\n                    name: filter.get('field'),\n                    value: filter.get('value'),\n                };\n            }),\n            refreshRows: true,\n        });\n    }),\n    rowActions: [\n        {\n            action: 'rowHistory',\n            icon: 'move move-Search',\n        },\n        {\n            action: 'removeRow',\n            icon: 'move move-Delete',\n        },\n        {\n            action: 'remoteControl',\n            icon: 'move move-Remote',\n        },\n        {\n            action: 'editRow',\n            icon: 'move move-Pencil',\n        },\n    ],\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n                type: 'database',\n                form: 'rfiddevice',\n                name: 'project',\n                singleselect: true,\n            }),\n            Em.Object.create({\n                field: 'user',\n                type: 'database',\n                form: 'rfiddevice',\n                name: 'project',\n                singleselect: true,\n            }),\n        ]);\n    }),\n    actions: {\n        showRemoteControl: function (onoff = true) {\n            this.set('showEditor', onoff);\n            return false;\n        },\n        editRow: function (row) {\n            return this.store.findRecord('rfiddevice', row.id).then((record) => {\n                record.on('didUpdate', () => {\n                    this.get('report').toggleProperty('refreshRows');\n                    return record.off('didUpdate');\n                });\n                return this.transitionToRoute({\n                    queryParams: {\n                        modal: ['rfiddevice', row.id],\n                    },\n                });\n            });\n        },\n        addRow: function () {\n            var record;\n            record = this.store.createRecord('rfiddevice');\n            record.set('date', moment().format('YYYY-MM-DD'));\n            record.on('didCreate', () => {\n                this.get('report').toggleProperty('refreshRows');\n                return record.off('didCreate');\n            });\n            return this.transitionToRoute({\n                queryParams: {\n                    modal: ['rfiddevice', 'new'],\n                },\n            });\n        },\n        openEditor: function (row) {\n            this.set('imei', row.get('imei'));\n            return this.send('showRemoteControl', true);\n        },\n        filterChanged: function (value, field) {\n            if (value == null) {\n                return this.set(field, '');\n            } else {\n                return this.set(field, value.id);\n            }\n        },\n    },\n});\n\nexport default ProjectsRfiddevicesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/rfiddevices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsRfiddevicesRoute;\n\nimport Ember from 'ember';\n\nProjectsRfiddevicesRoute = Ember.Route.extend();\n\nexport default ProjectsRfiddevicesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"ALa9iVqw\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"rfiddevice\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addRow\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"settings\\\",\\\"rowActions\\\",\\\"editRow\\\",\\\"remoteControl\\\"],[[24,[\\\"report\\\"]],[24,[\\\"rowActions\\\"]],\\\"editRow\\\",\\\"openEditor\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showEditor\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"imei\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"showRemoteControl\\\",false],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"famoco-editor\\\",null,[[\\\"imei\\\",\\\"close\\\"],[[24,[\\\"imei\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"showRemoteControl\\\",false],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/rfiddevices/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nProjectsRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default ProjectsRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/saved/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsSavedController;\n\nimport Ember from 'ember';\n\nimport savedController from '../../../controllers/saved';\n\nProjectsSavedController = savedController.extend({\n    session: Em.inject.service(),\n    store: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    //hideAddSame: true\n    magicKeyInit: Em.observer('model.id', function () {\n        var c;\n        c = this.get('Collector');\n        if (\n            c.testNeedsOne('products.personalliggareandid06') &&\n            this.get('session.currentUser.userlevel') !== 1\n        ) {\n            return this.getMagicKey();\n        }\n    }),\n    getLongUrl: function () {\n        var creator, model, projectid, promise, store;\n        store = this.get('store');\n        creator = this.get('session.currentUser.username');\n        if (!creator) {\n            return;\n        }\n        model = this.get('model');\n        projectid = model.get('id');\n        promise = new Em.RSVP.Promise((resolve, reject) => {\n            var url, userid;\n            url = '#/register/user?project=' + projectid + '&creator=' + creator;\n            userid = this.get('session.currentUser.id');\n            return store\n                .query('user', {\n                    id: userid,\n                    sideload: ['employer.name', 'employer.emp_id', 'employer.country'],\n                })\n                .then(() => {\n                    var employer;\n                    employer = this.get('session.currentUser.employer');\n                    if (employer) {\n                        if (!employer.get('country')) {\n                            reject({\n                                missing: 'employer_country',\n                            });\n                        }\n                        url += '&employer_name=' + encodeURIComponent(employer.get('name'));\n                        url += '&employer_id=' + encodeURIComponent(employer.get('emp_id'));\n                        url += '&employer_country=' + encodeURIComponent(employer.get('country'));\n                        return resolve({\n                            longurl: url,\n                            employer: employer.get('name'),\n                        });\n                    } else {\n                        return store\n                            .query('employer', {\n                                main: 'on',\n                            })\n                            .then((employers) => {\n                                employer = employers.get('firstObject');\n                                if (employer == null) {\n                                    return alert('Main employer is not set. Cannot create help.');\n                                } else {\n                                    url +=\n                                        '&employer_name=' +\n                                        encodeURIComponent(employer.get('name'));\n                                    url +=\n                                        '&employer_id=' +\n                                        encodeURIComponent(employer.get('emp_id'));\n                                    url +=\n                                        '&employer_country=' +\n                                        encodeURIComponent(employer.get('country'));\n                                    return resolve({\n                                        longurl: url,\n                                        employer: employer.get('name'),\n                                    });\n                                }\n                            });\n                    }\n                });\n        });\n        return promise;\n    },\n    getMagicKey: function () {\n        return this.getLongUrl().then((ret) => {\n            var call, longUrl;\n            longUrl = window.location.origin + '/' + ret.longurl;\n            call = this.get('Collector').ttapi({\n                url: 'code/generate',\n                data: {\n                    longUrl: longUrl,\n                },\n                method: 'post',\n            });\n            return call.then((back) => {\n                return this.set('magicKey', back.id.slice(-6));\n            });\n        });\n    },\n    usersObs: Em.observer('model.id', function () {\n        var c, call, groups, model, preselected_users;\n        c = this.get('Collector');\n        this.set('users', null);\n        if (c.formExists('group')) {\n            model = this.get('model');\n            groups = model.get('group');\n            //get users with selected groups\n            preselected_users = Em.A([]);\n            return this.get('store')\n                .query('user', {\n                    group: groups.join(),\n                })\n                .then((groupusers) => {\n                    var call;\n                    groupusers.forEach((groupuser) => {\n                        return preselected_users.push(parseInt(groupuser.id));\n                    });\n                    call = c.ttapi({\n                        url: 'linked_users?forms=project',\n                        method: 'get',\n                    });\n                    return call.then((back) => {\n                        var tmpobj;\n                        if (back.data) {\n                            tmpobj = Em.A([]);\n                            back.data.forEach((user) => {\n                                if (preselected_users && groups.length > 0) {\n                                    if (preselected_users.indexOf(user.id) !== -1) {\n                                        return tmpobj.pushObject(Ember.Object.create(user));\n                                    }\n                                } else {\n                                    return tmpobj.pushObject(Ember.Object.create(user));\n                                }\n                            });\n                            return this.set('users', tmpobj);\n                        }\n                    });\n                });\n        } else {\n            call = c.ttapi({\n                url: 'linked_users?forms=project',\n                method: 'get',\n            });\n            return call.then((back) => {\n                var tmpobj;\n                if (back.data) {\n                    tmpobj = Em.A([]);\n                    back.data.forEach((user) => {\n                        return tmpobj.pushObject(Ember.Object.create(user));\n                    });\n                    return this.set('users', tmpobj);\n                }\n            });\n        }\n    }),\n    selectedUsers: Em.A([]),\n    actions: {\n        forward: function () {\n            var model, projectid;\n            model = this.get('model');\n            projectid = model.get('id');\n            return this.transitionToRoute('invite-users', {\n                queryParams: {\n                    projectid: projectid,\n                },\n            });\n        },\n        gotoProjectTasks: function () {\n            return this.transitionToRoute('projects.edit.tasks', this.get('model.id'));\n        },\n        toggleUser: function (user) {\n            var id;\n            this.set('saving', false);\n            this.set('showLinks', true);\n            id = user.id;\n            if (user.get('selected')) {\n                this.get('selectedUsers').removeObject(id);\n                user.set('selected', false);\n            } else {\n                this.get('selectedUsers').pushObject(id);\n                user.set('selected', true);\n            }\n        },\n        saveLinks: function () {\n            var c, projectids;\n            c = this.get('Collector');\n            projectids = Em.A([]);\n            projectids.push(this.get('model.id'));\n            return this.get('selectedUsers').forEach((userid) => {\n                this.set('saving', true);\n                //get already saved links\n                return c.getLinks(userid, 'user', 'projects').then((links) => {\n                    //and push them to the projectids array if there is any\n                    if (links.projects) {\n                        links.projects.forEach((projectlink) => {\n                            return projectids.push(projectlink.id.toString());\n                        });\n                    }\n                    return c.saveLinks(userid, 'user', 'projects', projectids).then(\n                        (links) => {\n                            this.set('saving', false);\n                            return this.set('showLinks', false);\n                        },\n                        (error) => {\n                            this.set('saving', false);\n                            return this.set('showLinks', false);\n                        },\n                    );\n                });\n            });\n        },\n        cancelLinks: function () {\n            return this.set('users', Em.A([]));\n        },\n    },\n});\n\nexport default ProjectsSavedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/projects/saved/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsSavedRoute;\n\nimport Ember from 'ember';\n\nimport SavedRoute from '../../../routes/saved';\n\nProjectsSavedRoute = SavedRoute.extend({\n    templateName: 'projects.saved',\n});\n\nexport default ProjectsSavedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"tyhr/uXl\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\"],\\\"statements\\\":[[15,\\\"partials/saved\\\",[]],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"magicKey\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"projects.magic_key_desc\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"invite_users.magic_key\\\"],null],false],[0,\\\": \\\"],[7,\\\"code\\\",true],[8],[1,[22,\\\"magicKey\\\"],false],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"forward\\\"]],[8],[1,[28,\\\"t\\\",[\\\"projects.forward_to_users_linking\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"task\\\",\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-primary btn-lg btn-block \\\",[28,\\\"if\\\",[[24,[\\\"saving\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"gotoProjectTasks\\\"]],[8],[1,[28,\\\"t\\\",[\\\"submenu.project.tasks\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"users\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"projects.restrict_users\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[1,[28,\\\"t\\\",[\\\"projects.restrict_users_help\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"users\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",[29,[\\\"list-group-item \\\",[28,\\\"if\\\",[[23,1,[\\\"selected\\\"]],\\\"list-group-item-success\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"toggleUser\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                        \\\"],[1,[23,1,[\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"firstname\\\"]],false],[0,\\\" \\\"],[4,\\\"if\\\",[[23,1,[\\\"selected\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok-sign pull-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLinks\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-block btn-m-link \\\",[28,\\\"if\\\",[[24,[\\\"saving\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"saveLinks\\\"]],[8],[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9]],\\\"parameters\\\":[]},null],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/saved/template.hbs\"}});","import GeneralReportController from '../../../controllers/general-report';\nimport { A } from '@ember/array';\nimport EmberObject from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nexport default GeneralReportController.extend({\n    queryParams: ['page', 'q'],\n    form: 'task',\n\n    projecttask: alias('model'),\n\n    filters: A([EmberObject.create({ type: 'searchbox', bindto: 'q' })]),\n    settings: EmberObject.create({\n        rowSettings: EmberObject.create({\n            editRoute: {\n                modal: true,\n            },\n        }),\n    }),\n});\n","import { get } from '@ember/object';\nimport GeneralReportRoute from '../../../routes/general-report';\n\nexport default GeneralReportRoute.extend({\n    queryParams: {\n        q: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n    },\n\n    model(params) {\n        params = this._super(params);\n        return get(this, 'store').query('task', params);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"DwPLqecS\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"task\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"hideRemoveControls\\\",\\\"filters\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",\\\"task\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],true,[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"settings\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/tasks/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"zVTL0mBR\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"row\\\",\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/projects/template.hbs\"}});","import Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    dummy: alias('model'),\n\n    actions: {\n        coderead(code, action) {\n            this.transitionToRoute(action.route);\n        },\n    },\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"Pq8HTDdv\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"qrcode-reader\\\",null,[[\\\"onSuccess\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"coderead\\\"],null]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/qrcode/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterController;\n\nimport Ember from 'ember';\nimport config from 'tt4/config/environment';\n\nRegisterController = Ember.Controller.extend({\n    RegisterServiceController: Ember.inject.controller('register/service'),\n    RegisterUserController: Ember.inject.controller('register/user'),\n    logoUrl: Ember.computed(function () {\n        return config.APP.CDN_URL + '/images/movenium/movenium_logo_bw_small.png';\n    }),\n    actions: {\n        continue: function () {\n            if (this.get('registerType') === 'user') {\n                return this.get('RegisterUserController').send('continue');\n            } else {\n                return this.get('RegisterServiceController').send('continue');\n            }\n        },\n        cancel: function () {\n            return this.transitionToRoute('index');\n        },\n    },\n});\n\nexport default RegisterController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterIndexRoute;\n\nimport Ember from 'ember';\n\nRegisterIndexRoute = Ember.Route.extend();\n\nexport default RegisterIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"mlkzN7ww\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-md-4 col-sm-offset-3 col-md-offset-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.index.title\\\"],null],false],[9],[0,\\\"\\\\n\\\\n            \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"button\\\",\\\"btn btn-block btn-m-link\\\",\\\"register.service\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"register.new_company\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"button\\\",\\\"btn btn-block btn-m-link\\\",\\\"register.user.code\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"register.new_user\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterRoute;\n\nimport Ember from 'ember';\n\nRegisterRoute = Ember.Route.extend();\n\nexport default RegisterRoute;\n","export default Ember.HTMLBars.template({\"id\":\"/Cw8WhdF\",\"block\":\"{\\\"symbols\\\":[\\\"page\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"register\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"header\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.mainheader\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"img\\\",true],[11,\\\"src\\\",[23,0,[\\\"logoUrl\\\"]]],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"subheader shadow\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[0,\\\"\\\\n             \\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"pages\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"circle \\\",[28,\\\"if\\\",[[23,1,[\\\"active\\\"]],\\\"active\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,1,[\\\"num\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"active\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"name\\\"]],false],[9],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"line\\\"],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[0,\\\"\\\\n             \\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"register_content\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"footer\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showBackButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"button-container\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"back\\\"]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"button\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"general.back\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"nextPageText\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"pull-right button-container\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"continue\\\"]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"active button\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[22,\\\"nextPageText\\\"],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"pull-right button-container\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"button\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/code/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserCodeRoute;\n\nimport Ember from 'ember';\n\nimport config from '../../../../config/environment';\n\nRegisterUserCodeRoute = Ember.Route.extend({\n    actions: {\n        goToRegisterUrl: function () {\n            var encoded_url, key;\n            key = this.get('controller.magicKey');\n            if (!config.APP.SELFONBOARDURL) {\n                alert('env config.APP.SELFONBOARDURL not setted!');\n                return;\n            }\n            encoded_url = window.btoa(config.APP.OWN_URL);\n            return (window.location = config.APP.SELFONBOARDURL + key + '&return=' + encoded_url);\n        },\n    },\n});\n\nexport default RegisterUserCodeRoute;\n","export default Ember.HTMLBars.template({\"id\":\"yQr8hhDC\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-md-4 col-sm-offset-3 col-md-offset-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user.give_magic_key\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"class\\\"],[[24,[\\\"magicKey\\\"]],\\\"add-fields form-control input-xxl text-center\\\"]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"magicKey\\\",\\\"length\\\"]],6],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"goToRegisterUrl\\\"]],[8],[1,[28,\\\"t\\\",[\\\"register.user.go\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/user/code/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/company/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserId06CompanyController;\n\nimport Ember from 'ember';\n\nimport validator from '../../../../mixins/base-validation';\n\nRegisterUserId06CompanyController = Ember.Controller.extend(validator, {\n    registerUserController: Ember.inject.controller('register/user'),\n    actions: {\n        gotoNextPage: function (isCompanyChanged) {\n            return this.transitionToRoute('register.user.id06').then(function (newRoute) {\n                newRoute.controller.set('customEmployer', isCompanyChanged);\n                if (isCompanyChanged) {\n                    newRoute.controller.set('model.employer_name', null);\n                    newRoute.controller.set('model.employer_id', null);\n                    return newRoute.controller.set('model.employer_country', null);\n                }\n            });\n        },\n    },\n});\n\nexport default RegisterUserId06CompanyController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/company/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserCompanyRoute;\n\nimport Ember from 'ember';\n\nRegisterUserCompanyRoute = Ember.Route.extend({\n    model: function () {\n        return this.modelFor('register.user');\n    },\n});\n\nexport default RegisterUserCompanyRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Ngq7FGhG\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user_company_page\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.your_employer\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[24,[\\\"model\\\",\\\"employer_name\\\"]],false],[9],[0,\\\" - \\\"],[1,[24,[\\\"model\\\",\\\"employer_id\\\"]],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.is_this_your_employer\\\"],null],false],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"gotoNextPage\\\",false]],[8],[1,[28,\\\"t\\\",[\\\"general.yes\\\"],null],false],[9],[0,\\\" \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"gotoNextPage\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"general.no\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/user/company/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/confirm/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserLinkConfirmController;\n\nimport Ember from 'ember';\n\nUserLinkConfirmController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    registerUser: Em.inject.controller('register.user'),\n});\n\nexport default UserLinkConfirmController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/confirm/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserLinkConfirmRoute;\n\nimport Ember from 'ember';\n\nUserLinkConfirmRoute = Ember.Route.extend({\n    session: Em.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    beforeModel: function (transition) {\n        if (!this.get('session.isAuthenticated')) {\n            return this.replaceWith('register.user.sign-in');\n        }\n    },\n    setPersonInfo: function (model) {\n        model.set('lastname', this.get('session.currentUser.lastname'));\n        model.set('firstname', this.get('session.currentUser.firstname'));\n        model.set('id06card', this.get('session.currentUser.id06kort'));\n        model.set('person_code', this.get('session.currentUser.personid'));\n        model.set('person_country', this.get('session.currentUser.homecountry'));\n        model.set('homecountry', this.get('session.currentUser.homecountry'));\n        model.set('taxnumber', this.get('session.currentUser.taxnumber'));\n        return model.set('birthdate', this.get('session.currentUser.birthdate'));\n    },\n    actions: {\n        toSignIn: function () {\n            var model;\n            model = this.get('controller.registerUser.model').getProperties(\n                'project',\n                'creator',\n                'employer_name',\n                'employer_id',\n                'employer_country',\n                'type',\n            );\n            localStorage.removeItem('ember_simple_auth-session');\n            return this.replaceWith('register.user.sign-in', {\n                queryParams: model,\n            });\n        },\n        toID06: function () {\n            var destination, model, ref;\n            model = this.get('controller.registerUser.model');\n            destination = 'register.user.company';\n            if ((ref = this.get('controller.registerUser.type')) === 'valtti' || ref === 'normal') {\n                destination = 'register.user.info';\n            }\n            if (this.get('session.currentUser.employer')) {\n                this.store\n                    .findRecord('employer', this.get('session.currentUser.employer.id'), {\n                        reload: true,\n                    })\n                    .then((employer) => {\n                        this.setPersonInfo(model);\n                        model.set('employer_id', employer.get('emp_id'));\n                        model.set('employer_name', employer.get('name'));\n                        return model.set('employer_country', employer.get('country'));\n                    });\n                return this.replaceWith(destination);\n            } else {\n                this.setPersonInfo(model);\n                return this.replaceWith(destination);\n            }\n        },\n    },\n});\n\nexport default UserLinkConfirmRoute;\n","export default Ember.HTMLBars.template({\"id\":\"W1xqOZ98\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user_page0\\\"],null],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user_page0_text\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-signin\\\"],[10,\\\"role\\\",\\\"form\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main has-feedback\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.lastname\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"session\\\",\\\"currentUser\\\",\\\"lastname\\\"]],\\\"disabled\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main has-feedback\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.firstname\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"session\\\",\\\"currentUser\\\",\\\"firstname\\\"]],\\\"disabled\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-action btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toSignIn\\\"]],[8],[1,[28,\\\"t\\\",[\\\"register.user.not_me\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toID06\\\"]],[8],[1,[28,\\\"t\\\",[\\\"register.user.it_is_me\\\"],null],false],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/user/confirm/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserController;\n\nimport Ember from 'ember';\n\nimport initmixin from 'tt4/mixins/init-controller';\n\nRegisterUserController = Ember.Controller.extend(initmixin, {\n    intl: Em.inject.service(),\n    registerController: Ember.inject.controller('register'),\n    registerUserId06Controller: Ember.inject.controller('register.user.id06'),\n    registerUserInfoController: Ember.inject.controller('register.user.info'),\n    registerUserId06CompanyController: Ember.inject.controller('register.user.company'),\n    applicationController: Ember.inject.controller('application'),\n    queryParams: ['project', 'creator', 'employer_name', 'employer_id', 'employer_country', 'type'],\n    init_functions: function () {\n        this._super();\n        return Ember.run.next(this, () => {\n            this.get('registerController').set('registerType', 'user');\n            return this.notifyPropertyChange('currentPage');\n        });\n    },\n    nextPageText: Ember.on(\n        'init',\n        Ember.observer('currentPage', function () {\n            var intl, nextPageText;\n            intl = this.get('intl');\n            nextPageText = function () {\n                switch (this.get('currentPage')) {\n                    case 3:\n                        return intl.t('register.button_continue');\n                    case 4:\n                        return intl.t('register.button_continue');\n                    case 5:\n                        return null;\n                }\n            }.call(this);\n            return this.get('registerController').set('nextPageText', nextPageText);\n        }),\n    ),\n    observePages: Ember.observer('currentPage', function () {\n        var currentPage, i, index, len, page, page_list, ret;\n        currentPage = this.get('currentPage');\n        if (currentPage === 0) {\n            this.get('registerController').set('pages', Em.A([]));\n            return;\n        }\n        page_list = this.get('page_list');\n        ret = Em.A([]);\n        for (index = i = 0, len = page_list.length; i < len; index = ++i) {\n            page = page_list[index];\n            ret.pushObject(\n                Em.Object.create({\n                    name: page,\n                    active: currentPage - 1 >= index,\n                    done: currentPage - 1 > index,\n                    num: index + 1,\n                }),\n            );\n        }\n        return this.get('registerController').set('pages', ret);\n    }),\n    page_list: Ember.computed(function () {\n        var intl;\n        intl = this.get('intl');\n        return Em.A([\n            intl.t('register.user_page_sign_in'),\n            intl.t('register.user_page_confirm'),\n            intl.t('register.user_page_company_info'),\n            intl.t('register.user_page1'),\n            intl.t('register.user_page2'),\n        ]);\n    }),\n    currentPage: Ember.computed('applicationController.path.[]', function () {\n        var path;\n        path = this.get('applicationController.path');\n        if (!path) {\n            return 1;\n        }\n        switch (path[2]) {\n            case 'index':\n                return 0;\n            case 'sign-in':\n                return 1;\n            case 'confirm':\n                return 2;\n            case 'company':\n                return 3;\n            case 'id06':\n            case 'info':\n                return 4;\n            case 'done':\n                return 5;\n            default:\n                return 1;\n        }\n    }),\n    actions: {\n        continue: function () {\n            var currentPage,\n                promise,\n                ref,\n                registerUserId06CompanyController,\n                registerUserId06Controller,\n                registerUserInfoController;\n            registerUserId06Controller = this.get('registerUserId06Controller');\n            registerUserInfoController = this.get('registerUserInfoController');\n            registerUserId06CompanyController = this.get('registerUserId06CompanyController');\n            currentPage = this.get('currentPage');\n            switch (currentPage) {\n                case 3:\n                    return this.transitionToRoute('register.user.id06');\n                case 4:\n                    if ((ref = this.get('type')) === 'valtti' || ref === 'normal') {\n                        promise = registerUserInfoController.validate_all();\n                    } else {\n                        promise = registerUserId06Controller.validate_all();\n                    }\n                    return promise.then((allOk) => {\n                        var ref1;\n                        if (allOk === true) {\n                            if ((ref1 = this.get('type')) === 'valtti' || ref1 === 'normal') {\n                                return this.transitionToRoute('register.user.done');\n                            } else {\n                                return registerUserId06Controller.verifyUser().then((ok) => {\n                                    if (ok) {\n                                        return this.transitionToRoute('register.user.done');\n                                    }\n                                });\n                            }\n                        }\n                    });\n                case 5:\n                    return this.get('doneController').loginToService();\n            }\n        },\n    },\n});\n\nexport default RegisterUserController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/done/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserDoneController;\n\nimport Ember from 'ember';\n\nimport initmixin from 'tt4/mixins/init-controller';\n\nRegisterUserDoneController = Ember.Controller.extend(initmixin, {\n    registerUserController: Ember.inject.controller('register/user'),\n    applicationIndexController: Ember.inject.controller('index'),\n    application: Ember.inject.controller(),\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    mySites: Ember.inject.service(),\n    forwardingStraightToService: true,\n    initapp: Ember.inject.service(),\n    init_functions: function () {\n        var c, projectid, promise, registerUserController, userinfo;\n        this._super();\n        registerUserController = this.get('registerUserController');\n        if (!registerUserController.get('model.creator')) {\n            alert('creator not set');\n            return;\n        }\n        c = this.get('Collector');\n        userinfo = registerUserController.get('userinfo');\n        projectid = userinfo.project;\n        promise = c.ttapi({\n            url: 'registerUser',\n            method: 'post',\n            data: {\n                creator: registerUserController.get('model.creator'),\n                userinfo: JSON.parse(JSON.stringify(registerUserController.get('userinfo'))),\n            },\n        });\n        return promise.then((back) => {\n            var ls;\n            this.set('username', back.username);\n            ls = this.get('localStorageWrapper');\n            ls.setSavedUsername(back.username);\n            this.set('password', back.password);\n            this.set('done', true);\n            // if user has logged in, do not show this page, just login\n            if (this.get('session.currentUser')) {\n                return this.loginToService(projectid);\n            } else {\n                return this.set('forwardingStraightToService', false);\n            }\n        });\n    },\n    loginToService: function (projectid) {\n        var passwd, promise, self, username;\n        username = this.get('username');\n        passwd = this.get('password');\n        self = this;\n        if (!passwd) {\n            this.transitionToRoute('index');\n            return;\n        }\n        promise = this.get('session').authenticate(\n            'authenticator:collector-auth',\n            username,\n            passwd,\n        );\n        return promise.then(() => {\n            this.get('mySites').addSiteWithJustId(projectid);\n            this.get('applicationIndexController').set('defaultPageTransitionDone', true);\n            //@get('application').firstPageTransition()\n            this.transitionToRoute('index');\n            return Em.run.later(\n                this,\n                function () {\n                    this.get('initapp').clearInit();\n                    return location.reload();\n                },\n                1000,\n            );\n        });\n    },\n    actions: {\n        login: function () {\n            return this.loginToService();\n        },\n    },\n});\n\nexport default RegisterUserDoneController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/done/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserDoneRoute;\n\nimport Ember from 'ember';\n\nimport initmixin from 'tt4/mixins/init-route';\n\nRegisterUserDoneRoute = Ember.Route.extend(initmixin);\n\nexport default RegisterUserDoneRoute;\n","export default Ember.HTMLBars.template({\"id\":\"35G8V+4d\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"forwardingStraightToService\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.page4_header\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"username\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"bigtext\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.page4_text3\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"bigtext\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.page4_text1\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"highlight\\\"],[8],[1,[22,\\\"username\\\"],false],[9],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"bigtext\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.page4_text2\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"highlight\\\"],[8],[1,[22,\\\"password\\\"],false],[9],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"login\\\"]],[8],[1,[28,\\\"t\\\",[\\\"register.button_login\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/user/done/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/id06/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserId06Controller,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport validator from '../../../../mixins/base-validation';\n\nimport config from '../../../../config/environment';\n\nRegisterUserId06Controller = Ember.Controller.extend(validator, {\n    validationObject: 'model',\n    registerUserController: Ember.inject.controller('register/user'),\n    Collector: Ember.inject.service('collector-service'),\n    countryLists: Ember.inject.service(),\n    customEmployer: false,\n    validations: {\n        lastname: {\n            mandatory: true,\n        },\n        employer_id: {\n            mandatory: true,\n        },\n        employer_name: {\n            mandatory: true,\n        },\n        employer_country: {\n            mandatory: true,\n            employer_country: true,\n        },\n        id06card: {\n            mandatory: true,\n            id06_number: true,\n        },\n        person_code: {\n            mandatory: true,\n        },\n        //PIN: true\n        person_country: {\n            mandatory: true,\n            person_country: true,\n        },\n    },\n    validationstate: Ember.Object.create(),\n    errors: Ember.Object.create(),\n    setUserCountryByLang: Em.on('init', function () {\n        return Ember.run.schedule('afterRender', this, function () {\n            var countryByLang;\n            if (this.get('model') && !this.get('model.person_country')) {\n                countryByLang = moment.locale() === 'fi' ? 'fi' : 'se';\n                return this.set('model.person_country', countryByLang);\n            }\n        });\n    }),\n    setValidationErrors: function () {\n        var field, results, validations;\n        validations = this.get('validations');\n        validations = this.get('validations');\n        results = [];\n        for (field in validations) {\n            results.push(this.setValidationError(field));\n        }\n        return results;\n    },\n    setValidationError: function (field) {\n        var error, k, rule;\n        if (!this.get('validationstate.' + field)) {\n            this.set('validationstate.' + field, Ember.Object.create());\n        }\n        error = this.get('errors.' + field);\n        if (!error) {\n            this.set('validationstate.' + field + '.ok', true);\n            this.set('validationstate.' + field + '.error', false);\n        }\n        for (k in error) {\n            rule = error[k];\n            this.set('validationstate.' + field + '.ok', false);\n            this.set('validationstate.' + field + '.error', rule);\n            return;\n        }\n    },\n    setParams: Em.observer('project', 'creator', function () {\n        var controller;\n        controller = this.get('registerUserController');\n        controller.set('projectid', this.get('project'));\n        controller.set('creator', this.get('creator'));\n        controller.set('employer_name', this.get('employer_name'));\n        controller.set('employer_id', this.get('employer_id'));\n        return controller.set('employer_country', this.get('employer_country'));\n    }),\n    //    setDefaultEmployer: Em.observer 'employer_id','model', ->\n    //        console.log \"empo_id\", @get('model'),@get \"employer_id\"\n    //        return if not @get 'model'\n    //        @set 'model.employer_id', @get 'employer_id'\n    //        @set 'model.employer_country', @get 'employer_country'\n    //        @set 'model.person_country', @get 'employer_country'\n    //        @set 'model.employer_name', @get 'employer_name'\n    verifyFromApi: function (data) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var c, promise;\n            c = this.get('Collector');\n            promise = c.ttapi({\n                url: 'checkCard',\n                method: 'post',\n                dataType: 'text',\n                data: {\n                    card_id: data.get('id06card'),\n                    emp_id: data.get('employer_id'),\n                    creator: data.get('creator'),\n                },\n            });\n            return promise.then((back) => {\n                var emp_nationality, nationality;\n                if (back === 'user_found') {\n                    resolve('user_found');\n                }\n                c = this.get('Collector');\n                nationality = null;\n                if (this.get('model.person_country')) {\n                    nationality = this.get('model.person_country').toUpperCase();\n                }\n                emp_nationality = null;\n                if (this.get('model.employer_country')) {\n                    emp_nationality = this.get('model.employer_country').toUpperCase();\n                }\n                promise = c.ccapi({\n                    url: config.APP.ID06_VERIFY_URL,\n                    data: {\n                        card: this.get('model.id06card'),\n                        personid: this.get('model.person_code'),\n                        emp_id: this.get('model.employer_id'),\n                        nationality: nationality,\n                        emp_nationality: emp_nationality,\n                    },\n                });\n                return promise.then(\n                    function (back) {\n                        return resolve(JSON.parse(back).reason);\n                    },\n                    function () {\n                        return resolve('failed');\n                    },\n                );\n            });\n        });\n    },\n    verifyUser: function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var model, promise;\n            model = this.get('model');\n            this.set('loading', true);\n            promise = this.verifyFromApi(model);\n            return promise.then((result) => {\n                if (result === 'verified') {\n                    this.set('verifyOk', true);\n                    this.set('verifyFailed', false);\n                    this.set('model.status', 'ok');\n                    resolve(true);\n                } else if (result === 'timeout') {\n                    this.set('verifyOk', true);\n                    this.set('verifyFailed', false);\n                    this.set('model.status', 'not_verified');\n                    resolve(true);\n                } else if (result === 'user_found') {\n                    this.set('verifyOk', false);\n                    this.set('userFound', true);\n                    resolve(false);\n                } else {\n                    this.set('verifyOk', false);\n                    this.set('verifyFailed', true);\n                    resolve(false);\n                }\n                this.get('registerUserController').set('userinfo', model);\n                return this.set('loading', false);\n            });\n        });\n    },\n    fetchCard: function (card) {\n        var c, promise;\n        c = this.get('Collector');\n        promise = c.ccapi({\n            url: config.APP.ID06_CARD_URL,\n            data: {\n                id: card,\n            },\n        });\n        return promise.then((data) => {\n            var ref, ref1;\n            data = JSON.parse(data);\n            if (data.status_code === '202') {\n                if (!this.get('validationstate.id06card')) {\n                    this.set('validationstate.id06card', Ember.Object.create());\n                }\n                this.set('validationstate.id06card.ok', false);\n                return this.set(\n                    'validationstate.id06card.error',\n                    'validation.error.id06_not_found',\n                );\n            } else if ((ref = data.status_code) !== '500' && ref !== '504') {\n                if (\n                    ((ref1 = data.card_holder_nationality),\n                    indexOf.call(this.get('countryLists.shortList').mapBy('id'), ref1) < 0)\n                ) {\n                    this.set('hideCountry', true);\n                }\n                this.set('model.person_country', data.card_holder_nationality);\n                return this.set('model.employer_country', data.company_nationality);\n            }\n        });\n    },\n    validate_all: function () {\n        return this.validate().then(() => {\n            var error, errors;\n            this.setValidationErrors();\n            errors = this.get('errors');\n            for (error in errors) {\n                if (errors.hasOwnProperty(error)) {\n                    this.set('loading', false);\n                    return false;\n                } else {\n                    return true;\n                }\n            }\n        });\n    },\n    actions: {\n        valueChangedPersonCountry: function (field) {\n            return this.send('change', 'person_country');\n        },\n        valueChangedCompanyCountry: function (field) {\n            return this.send('change', 'employer_country');\n        },\n        // this is called when ever some field is modified\n        change: function (field, value) {\n            var promise, self;\n            self = this;\n            promise = this.validate([field]);\n            return promise.then(() => {\n                this.setValidationError(field);\n                if (field === 'id06card' && !this.get('errors.' + field)) {\n                    this.set('hideCountry', false);\n                    return this.fetchCard(value);\n                }\n            });\n        },\n        setFilled: function (field) {\n            return this.set(field + '_filled', true);\n        },\n        clearErrors: function (field) {\n            if (this.get('validationstate.' + field)) {\n                return this.set('validationstate.' + field + '.error', false);\n            }\n        },\n        changeEmployer: function () {\n            this.set('customEmployer', true);\n            this.set('model.employer_id', '');\n            this.set('model.employer_country', null);\n            return this.set('model.employer_name', '');\n        },\n        autofill: function () {\n            this.set('model.lastname', 'Registered');\n            this.set('model.firstname', 'User');\n            this.set('model.id06card', 'AA-1202-943291');\n            this.set('model.person_code', '19090510-3610');\n            this.set('model.person_country', 'se');\n            this.set('customEmployer', true);\n            this.set('model.employer_name', 'Auto Company Ltd');\n            this.set('model.employer_id', '644150-5489');\n            return this.set('model.employer_country', 'se');\n        },\n    },\n});\n\nexport default RegisterUserId06Controller;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/id06/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserRoute;\n\nimport Ember from 'ember';\n\nRegisterUserRoute = Ember.Route.extend({\n    model: function () {\n        return this.modelFor('register.user');\n    },\n});\n\nexport default RegisterUserRoute;\n","export default Ember.HTMLBars.template({\"id\":\"AOTOY7lM\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user_page1\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"dev-helper\\\",null,null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"autofill\\\"]],[8],[0,\\\"Autofill (active test card)\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user_page1_text\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"verifyOk\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"p\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.id06_verified\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"verifyFailed\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.id06_verify_failed\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"userFound\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.id06_user_found\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-signin\\\"],[10,\\\"role\\\",\\\"form\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"id06card\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"id06card\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.id06card\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"id06card\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"id06card\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"key-up\\\",\\\"focus-in\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"id06card\\\",[24,[\\\"model\\\",\\\"id06card\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\",\\\"id06card\\\"],null],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"id06card\\\"]]]]],false],[0,\\\"\\\\n\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"id06card\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"id06card\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"lastname\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"lastname\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.lastname\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"lastname\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"lastname\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"key-up\\\",\\\"focus-in\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"lastname\\\",[24,[\\\"model\\\",\\\"lastname\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\",\\\"lastname\\\"],null],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"lastname\\\"]]]]],false],[0,\\\"\\\\n\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"lastname\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"lastname\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main has-feedback\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.firstname\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"firstname\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main  \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_code\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_code\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.person_code\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_code\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"person_code\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"key-up\\\",\\\"focus-in\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"person_code\\\",[24,[\\\"model\\\",\\\"person_code\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\",\\\"person_code\\\"],null],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"person_code\\\"]]]]],false],[0,\\\"\\\\n\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_code\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_code\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hideCountry\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main  \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_country\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_country\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.person_country\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_country\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"person_country\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"prompt\\\",\\\"bubbleChange\\\",\\\"value\\\",\\\"classes\\\"],[[24,[\\\"countryLists\\\",\\\"shortList\\\"]],[28,\\\"t\\\",[\\\"select.country\\\"],null],\\\"valueChangedPersonCountry\\\",[24,[\\\"model\\\",\\\"person_country\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_country\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"person_country\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"customEmployer\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.your_employer\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[24,[\\\"model\\\",\\\"employer_name\\\"]],false],[9],[0,\\\" - \\\"],[1,[24,[\\\"model\\\",\\\"employer_id\\\"]],false],[0,\\\"\\\\n\\\"],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.your_employer\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_name\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_name\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.employer_name\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n                    \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_name\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"employer_name\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"key-up\\\",\\\"focus-in\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"employer_name\\\",[24,[\\\"model\\\",\\\"employer_name\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\",\\\"employer_name\\\"],null],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"employer_name\\\"]]]]],false],[0,\\\"\\\\n\\\\n                    \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_name\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_name\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_id\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_id\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.employer_id\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"key-up\\\",\\\"focus-in\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"employer_id\\\",[24,[\\\"model\\\",\\\"employer_id\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\",\\\"employer_id\\\"],null],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"employer_id\\\"]]]]],false],[0,\\\"\\\\n\\\\n                    \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_id\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_id\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_country\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_country\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.employer_country\\\"],null],false],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[9],[0,\\\"\\\\n                    \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_country\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"employer_country\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"prompt\\\",\\\"bubbleChange\\\",\\\"value\\\",\\\"classes\\\"],[[24,[\\\"countryLists\\\",\\\"shortList\\\"]],[28,\\\"t\\\",[\\\"select.country\\\"],null],\\\"valueChangedCompanyCountry\\\",[24,[\\\"model\\\",\\\"employer_country\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\\n                    \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_country\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"employer_country\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"validationErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.empty_fields_or_input_errors\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/user/id06/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/info/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserInfoController;\n\nimport Ember from 'ember';\n\nimport validator from '../../../../mixins/base-validation';\n\nimport config from '../../../../config/environment';\n\nimport $ from 'jquery';\n\nRegisterUserInfoController = Ember.Controller.extend(validator, {\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    vastuuGroup: Ember.inject.service('vastuu-group'),\n    registerUser: Em.inject.controller('register.user'),\n    showRaksa: Ember.computed('registerUser.type', function () {\n        return this.get('registerUser.type') === 'valtti';\n    }),\n    validationObject: 'model',\n    validations: Ember.computed('showRaksa', function () {\n        var validate;\n        validate = {\n            lastname: {\n                mandatory: true,\n            },\n            firstname: {\n                mandatory: true,\n            },\n        };\n        if (this.get('showRaksa')) {\n            validate.birthdate = {\n                mandatory: true,\n                birthdate: true,\n            };\n            validate.taxnumber = {\n                mandatory: true,\n                length: 12,\n                number: true,\n            };\n            validate.homecountry = {\n                mandatory: true,\n            };\n            validate.employer_name = {\n                mandatory: true,\n            };\n            validate.employer_id = {\n                mandatory: true,\n            };\n        }\n        return validate;\n    }),\n    validationstate: Ember.Object.create(),\n    errors: Ember.Object.create(),\n    setValidationErrors: function () {\n        var field, results, validations;\n        validations = this.get('validations');\n        validations = this.get('validations');\n        results = [];\n        for (field in validations) {\n            results.push(this.setValidationError(field));\n        }\n        return results;\n    },\n    setValidationError: function (field) {\n        var error, k, rule;\n        if (!this.get('validationstate.' + field)) {\n            this.set('validationstate.' + field, Ember.Object.create());\n        }\n        error = this.get('errors.' + field);\n        if (!error) {\n            this.set('validationstate.' + field + '.ok', true);\n            this.set('validationstate.' + field + '.error', false);\n        }\n        for (k in error) {\n            rule = error[k];\n            this.set('validationstate.' + field + '.ok', false);\n            this.set('validationstate.' + field + '.error', rule);\n            return;\n        }\n    },\n    fetchUserWithTaxnumber: function (taxnumber = false, ret = false) {\n        var c;\n        if (!taxnumber) {\n            taxnumber = this.get('model.taxnumber');\n        }\n        this.set('loading', true);\n        return this.vastuuGroup.request('tvpersonapi2',\n                {\n                    country: 'FI',\n                    'id-country': 'FI',\n                    'id-type': 'tax_number',\n                    'id-value': taxnumber,\n                },\n                this.registerUser.creator,\n            ).then((data) => {\n                this.set('loading', false);\n                if (data.length === 1 && !ret) {\n                    this.setPersonInfo(data[0]);\n                } else {\n                    this.set('selectEmployer', data);\n                }\n                return data;\n            });\n    },\n    fetchUserWithBarcode: function () {\n        var c;\n        this.set('loading', true);\n        c = this.get('Collector');\n        return c\n            .ccapi({\n                url: 'tvcard',\n                data: {\n                    card: this.get('model.barcode'),\n                },\n            })\n            .then((data) => {\n                if (data.length === 1) {\n                    return this.fetchUserWithTaxnumber(data[0]['taxnumber']).then((userinfo) => {\n                        return userinfo.forEach((user) => {\n                            if (data[0]['vatin'] === user['vatin']) {\n                                return this.setPersonInfo(user);\n                            }\n                        });\n                    });\n                }\n            });\n    },\n    setPersonInfo: function (data) {\n        this.set('duplicateTaxnumber', false);\n        if (data.taxnumber) {\n            this.set('userNotFoundFromTV', false);\n            this.set('model.taxnumber', data.taxnumber);\n            this.set('model.firstname', data.firstname);\n            this.set('model.lastname', data.lastname);\n            this.set('model.phone', data.phone);\n            this.set('model.email', data.email);\n            this.set('model.birthdate', data.birthdate);\n            this.set('model.homecountry', data.homecountry);\n            this.set('model.employer_id', data.vatin);\n            this.set('model.employer_name', data.employer);\n            this.set('model.status', data.status);\n            this.set('model.emp_address', data.emp_address);\n            this.set('model.emp_city', data.emp_city);\n            this.set('model.emp_country', data.emp_country);\n            this.set('model.emp_homecountry', data.emp_homecountry);\n            this.set('model.emp_email', data.emp_email);\n            this.set('model.emp_firstname', data.emp_firstname);\n            this.set('model.emp_lastname', data.emp_lastname);\n            this.set('model.emp_phone', data.emp_phone);\n            this.set('model.emp_zip', data.emp_zip);\n            this.set('model.contract_type', data.contract_type);\n            this.set('model.workpass', data.workpass);\n        } else {\n            this.set('userNotFoundFromTV', true);\n        }\n        return this.validateDuplicateTaxnumber().then((ret) => {\n            if (!ret) {\n                return this.set('duplicateTaxnumber', true);\n            }\n        });\n    },\n    validateDuplicateTaxnumber: function () {\n        var taxnumber;\n        this.set('duplicateTaxnumber', false);\n        taxnumber = this.get('model.taxnumber');\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            if (!taxnumber) {\n                resolve(true);\n            }\n            return this.get('Collector')\n                .ttapi({\n                    url: 'checkTaxnumber',\n                    method: 'post',\n                    dataType: 'text',\n                    data: {\n                        taxnumber: taxnumber,\n                        creator: this.get('registerUser.creator'),\n                    },\n                })\n                .then(\n                    function (ret) {\n                        if (ret === 'user_found') {\n                            return resolve(false);\n                        } else {\n                            return resolve(true);\n                        }\n                    },\n                    function (e) {\n                        return reject(e);\n                    },\n                );\n        });\n    },\n    validate_all: function () {\n        return this.validate().then(() => {\n            this.setValidationErrors();\n            return this.validateDuplicateTaxnumber().then(\n                (ret) => {\n                    var error, errors;\n                    if (ret) {\n                        errors = this.get('errors');\n                        for (error in errors) {\n                            if (errors.hasOwnProperty(error)) {\n                                this.set('loading', false);\n                                return false;\n                            } else {\n                                this.get('registerUser').set('userinfo', this.get('model'));\n                                return true;\n                            }\n                        }\n                    } else {\n                        this.set('duplicateTaxnumber', true);\n                        return false;\n                    }\n                },\n                function (e) {\n                    return console.log(e);\n                },\n            );\n        });\n    },\n    actions: {\n        // this is called when ever some field is modified\n        change: function (field, value) {\n            var promise;\n            promise = this.validate([field]);\n            return promise.then(() => {\n                this.setValidationError(field);\n                if (field === 'taxnumber' && value.length === 12) {\n                    this.fetchUserWithTaxnumber();\n                }\n                if (field === 'barcode' && value.length === 12) {\n                    return this.fetchUserWithBarcode();\n                }\n            });\n        },\n        clearErrors: function (field) {\n            if (this.get('validationstate.' + field)) {\n                return this.set('validationstate.' + field + '.error', false);\n            }\n        },\n        autofill: function () {\n            this.set('model.taxnumber', '100015809173');\n            return Em.run.later(\n                this,\n                function () {\n                    return $('.form-signin input:text').first().keyup();\n                },\n                20,\n            );\n        },\n        selectEmployer: function (user) {\n            this.set('selectEmployer', void 0);\n            return this.setPersonInfo(user);\n        },\n    },\n});\n\nexport default RegisterUserInfoController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/info/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserInfoRoute;\n\nimport Ember from 'ember';\n\nRegisterUserInfoRoute = Ember.Route.extend({\n    session: Em.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n});\n\nexport default RegisterUserInfoRoute;\n","export default Ember.HTMLBars.template({\"id\":\"1WCJWcrt\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\"],\\\"statements\\\":[[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user.info.title\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"dev-helper\\\",null,null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"autofill\\\"]],[8],[0,\\\"Autofill\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRaksa\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user.info.text\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRaksa\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"register/user/register-field-comp\\\",null,[[\\\"field\\\",\\\"value\\\",\\\"state\\\",\\\"change\\\",\\\"clearErrors\\\",\\\"mandatory\\\"],[\\\"taxnumber\\\",[24,[\\\"model\\\",\\\"taxnumber\\\"]],[24,[\\\"validationstate\\\",\\\"taxnumber\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],[24,[\\\"validations\\\",\\\"taxnumber\\\",\\\"mandatory\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"selectEmployer\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user.multiple_employers\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"selectEmployer\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",false],[12,\\\"class\\\",\\\"link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"selectEmployer\\\",[23,1,[]]]],[8],[1,[23,1,[\\\"employer\\\"]],false],[0,\\\", \\\"],[1,[23,1,[\\\"vatin\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"duplicateTaxnumber\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.taxnumber_user_found\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"userNotFoundFromTV\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.not_found_from_tv\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-signin\\\"],[10,\\\"role\\\",\\\"form\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"register/user/register-field-comp\\\",null,[[\\\"field\\\",\\\"value\\\",\\\"state\\\",\\\"change\\\",\\\"clearErrors\\\",\\\"mandatory\\\"],[\\\"firstname\\\",[24,[\\\"model\\\",\\\"firstname\\\"]],[24,[\\\"validationstate\\\",\\\"firstname\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],[24,[\\\"validations\\\",\\\"firstname\\\",\\\"mandatory\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"register/user/register-field-comp\\\",null,[[\\\"field\\\",\\\"value\\\",\\\"state\\\",\\\"change\\\",\\\"clearErrors\\\",\\\"mandatory\\\"],[\\\"lastname\\\",[24,[\\\"model\\\",\\\"lastname\\\"]],[24,[\\\"validationstate\\\",\\\"lastname\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],[24,[\\\"validations\\\",\\\"lastname\\\",\\\"mandatory\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRaksa\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"register/user/register-field-comp\\\",null,[[\\\"field\\\",\\\"value\\\",\\\"state\\\",\\\"change\\\",\\\"clearErrors\\\",\\\"mandatory\\\"],[\\\"birthdate\\\",[24,[\\\"model\\\",\\\"birthdate\\\"]],[24,[\\\"validationstate\\\",\\\"birthdate\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],[24,[\\\"validations\\\",\\\"birthdate\\\",\\\"mandatory\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"register/user/register-field-comp\\\",null,[[\\\"field\\\",\\\"value\\\",\\\"state\\\",\\\"change\\\",\\\"clearErrors\\\",\\\"mandatory\\\"],[\\\"homecountry\\\",[24,[\\\"model\\\",\\\"homecountry\\\"]],[24,[\\\"validationstate\\\",\\\"homecountry\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],[24,[\\\"validations\\\",\\\"homecountry\\\",\\\"mandatory\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"register/user/register-field-comp\\\",null,[[\\\"field\\\",\\\"value\\\",\\\"state\\\",\\\"change\\\",\\\"clearErrors\\\",\\\"mandatory\\\"],[\\\"email\\\",[24,[\\\"model\\\",\\\"email\\\"]],[24,[\\\"validationstate\\\",\\\"email\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],[24,[\\\"validations\\\",\\\"email\\\",\\\"mandatory\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"register/user/register-field-comp\\\",null,[[\\\"field\\\",\\\"value\\\",\\\"state\\\",\\\"change\\\",\\\"clearErrors\\\",\\\"mandatory\\\"],[\\\"phone\\\",[24,[\\\"model\\\",\\\"phone\\\"]],[24,[\\\"validationstate\\\",\\\"phone\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],[24,[\\\"validations\\\",\\\"phone\\\",\\\"mandatory\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRaksa\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"register/user/register-field-comp\\\",null,[[\\\"field\\\",\\\"value\\\",\\\"state\\\",\\\"change\\\",\\\"clearErrors\\\",\\\"mandatory\\\"],[\\\"employer_name\\\",[24,[\\\"model\\\",\\\"employer_name\\\"]],[24,[\\\"validationstate\\\",\\\"employer_name\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],[24,[\\\"validations\\\",\\\"employer_name\\\",\\\"mandatory\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"register/user/register-field-comp\\\",null,[[\\\"field\\\",\\\"value\\\",\\\"state\\\",\\\"change\\\",\\\"clearErrors\\\",\\\"mandatory\\\"],[\\\"employer_id\\\",[24,[\\\"model\\\",\\\"employer_id\\\"]],[24,[\\\"validationstate\\\",\\\"employer_id\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],[24,[\\\"validations\\\",\\\"employer_id\\\",\\\"mandatory\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"validationErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.empty_fields_or_input_errors\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/user/info/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/register-field-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserInfoComponent;\n\nimport Ember from 'ember';\n\nRegisterUserInfoComponent = Ember.Component.extend({\n    countryLists: Ember.inject.service(),\n    options: Ember.computed.alias('countryLists.fullList'),\n    actions: {\n        change: function () {\n            if (this.get('change')) {\n                return this.change(this.get('field'), this.get('value'));\n            }\n        },\n        clearErrors: function () {\n            if (this.get('clearErrors')) {\n                return this.clearErrors(this.get('field'));\n            }\n        },\n    },\n});\n\nexport default RegisterUserInfoComponent;\n","export default Ember.HTMLBars.template({\"id\":\"iLiPHB2m\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"state\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"state\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"register.field.\\\",[24,[\\\"field\\\"]]],null]],null],false],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n    \\\"],[4,\\\"if\\\",[[24,[\\\"state\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"state\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"field\\\"]],\\\"birthdate\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"value\\\",\\\"name\\\",\\\"disabled\\\",\\\"class\\\"],[[24,[\\\"value\\\"]],\\\"field\\\",[24,[\\\"disabled\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"field\\\"]],\\\"homecountry\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"class\\\",\\\"classes\\\",\\\"value\\\",\\\"bubbleChange\\\",\\\"prompt\\\",\\\"disabled\\\"],[[24,[\\\"options\\\"]],\\\"form-control add-fields\\\",\\\"form-control add-fields\\\",[24,[\\\"value\\\"]],\\\"change\\\",[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"key-up\\\",\\\"focus-in\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",[28,\\\"action\\\",[[23,0,[]],\\\"change\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\"],null],\\\"form-control add-fields\\\",[24,[\\\"value\\\"]]]]],false],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[4,\\\"if\\\",[[24,[\\\"state\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[4,\\\"if\\\",[[24,[\\\"state\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/user/register-field-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserRoute;\n\nimport Ember from 'ember';\n\nimport initmixin from 'tt4/mixins/init-route';\n\nRegisterUserRoute = Ember.Route.extend(initmixin, {\n    model: function (params) {\n        if (params.project === void 0) {\n            return this.replaceWith('register.user.code');\n        } else {\n            this.replaceWith('register.user.sign-in');\n            return Ember.Object.create(params);\n        }\n    },\n});\n\n//    resetController: (controller, isExiting, transition) ->\n//        if isExiting\n//            controller.set('applicationController.hide_topbar', false)\n//            controller.set('applicationController.hide_sidebar', false)\nexport default RegisterUserRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/sign-in/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterUserSigninController;\n\nimport Ember from 'ember';\n\nRegisterUserSigninController = Ember.Controller.extend({\n    base: Ember.inject.controller('register.user'),\n    nextPage: Ember.computed('model', function () {\n        var type;\n        type = this.get('base.type');\n        if ((type && type === 'valtti') || type === 'normal') {\n            return 'register.user.info';\n        }\n        return 'register.user.company';\n    }),\n});\n\nexport default RegisterUserSigninController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/register/user/sign-in/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserLinkSignInRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nUserLinkSignInRoute = Ember.Route.extend({\n    session: Em.inject.service(),\n    intl: Em.inject.service(),\n    beforeModel: function (transition) {\n        if (\n            this.get('session.isAuthenticated') &&\n            localStorage.getItem('ember_simple_auth-session')\n        ) {\n            return this.replaceWith('register.user.confirm');\n        }\n    },\n    setupController: function (controller, transition) {\n        this._super(controller, transition);\n        controller.set('hideRegister', true);\n        controller.set('mobile', false);\n        return controller.set('mobile_devices', false);\n    },\n    actions: {\n        authenticate: function () {\n            var controller, data, ls, promise, self;\n            self = this;\n            ls = this.get('localStorageWrapper');\n            controller = this.get('controller');\n            data = controller.getProperties('identification', 'password');\n            if (!data.identification || !data.password) {\n                this.set(\n                    'controller.errorMessage',\n                    this.get('intl').t('login.give_username_and_password'),\n                );\n                return;\n            }\n            this.set('controller.loadingMessage', 'Logging in...');\n            this.set('controller.errorMessage', null);\n            promise = this.get('session').authenticate(\n                'authenticator:collector-auth',\n                data.identification,\n                data.password,\n            );\n            promise.then(() => {\n                self.set('controller.loadingMessage', null);\n                return location.reload();\n            });\n            return promise.catch(function (resp) {\n                var error;\n                self.set('controller.loadingMessage', null);\n                error = resp ? resp.error : 'failed';\n                return self.set('controller.errorMessage', self.get('intl').t('login.' + error));\n            });\n        },\n    },\n});\n\nexport default UserLinkSignInRoute;\n","export default Ember.HTMLBars.template({\"id\":\"OP6Hoaqp\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-offset-1 col-md-offset-3 col-lg-offset-4 col-xs-12 col-sm-8 col-md-6 col-lg-4 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user.new_user\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"button\\\",\\\"btn btn-lg btn-m-default btn-block\\\",[24,[\\\"nextPage\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"register.user.not_a_user\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.user.old_user\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container login\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"popup no-top-margin\\\"],[10,\\\"style\\\",\\\"background-color: white;\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"login_header\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/logo.png\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"timecleandevice.type.movenium\\\"],null]],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"form\\\",false],[12,\\\"class\\\",\\\"form-signin\\\"],[12,\\\"role\\\",\\\"form\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"authenticate\\\"],[[\\\"on\\\"],[\\\"submit\\\"]]],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"form-signin-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"login.header\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[1,[22,\\\"errorMessage\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loadingMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[22,\\\"loadingMessage\\\"],false],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress progress-striped active\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[10,\\\"aria-valuenow\\\",\\\"100\\\"],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[10,\\\"style\\\",\\\"width: 100%\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner-addon left-addon\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-user\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"id\\\",\\\"value\\\",\\\"class\\\",\\\"placeholder\\\",\\\"autocapitalize\\\"],[\\\"identification\\\",[24,[\\\"identification\\\"]],\\\"form-control add-fields\\\",[28,\\\"t\\\",[\\\"login.username\\\"],null],\\\"off\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner-addon left-addon\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-lock\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"id\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\",\\\"placeholder\\\",\\\"autocapitalize\\\"],[\\\"password\\\",\\\"form-control add-fields\\\",\\\"password\\\",[24,[\\\"password\\\"]],[28,\\\"t\\\",[\\\"login.password\\\"],null],\\\"off\\\"]]],false],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-lg btn-m-link btn-block\\\"],[10,\\\"type\\\",\\\"submit\\\"],[8],[1,[28,\\\"t\\\",[\\\"login.sign_in\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\" \\\"],[2,\\\" /container \\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/user/sign-in/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"c3XOksUg\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/register/user/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"3E6B072e\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.resource_planning\\\",\\\"userlevel=5,3,6\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"react\\\",[],[[\\\"@comp\\\"],[\\\"ResourceViewV2\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/resource-planning/gantt/template.hbs\"}});","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class resourcePlanningRoute extends Route {\n    @service('collector-service') Collector;\n    @service router;\n    queryParams = {\n        publishStartDate: {\n            refreshModel: true,\n        },\n    };\n\n    beforeModel(transition) {\n        this.transitionToRightPage(transition);\n    }\n\n    transitionToRightPage(transition) {\n        if (\n            transition.targetName === 'resource-planning.gantt' &&\n            this.Collector.testNeeds(['!userfieldcheck.resourcePlanner'])\n        ) {\n            this.router.transitionTo('resource-planning.week');\n        }\n    }\n\n    @action\n    willTransition(transition) {\n        this.transitionToRightPage(transition);\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"M3DpVwPg\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"react\\\",[],[[\\\"@comp\\\"],[\\\"MobileView\\\"]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/resource-planning/week/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Controller;\n\nimport Ember from 'ember';\n\nimport config from '../../config';\n\nController = Ember.Controller.extend();\n\nexport default Controller;\n","export default Ember.HTMLBars.template({\"id\":\"4zwPlj0A\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"promo-ad\\\",[],[[\\\"@background\\\",\\\"@promoClass\\\",\\\"@product\\\"],[\\\"custom-export\\\",\\\"right-align\\\",\\\"custom_export\\\"]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/custom-export-ad/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default class CustomExportRoute extends Route {}\n","export default Ember.HTMLBars.template({\"id\":\"tu4SPWUi\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"custom-export-comp\\\",[],[[],[]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/custom-export/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/export-abcense/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AbcensesExportAbcenseAddController;\n\nimport Ember from 'ember';\n\nAbcensesExportAbcenseAddController = Ember.Controller.extend({\n    selectableIntegrations: Ember.computed.gt('model.length', 1),\n    selectedIntegration: Ember.computed('_selectedIntegration', function () {\n        return this.get('_selectedIntegration') || this.get('model.firstObject.key');\n    }),\n});\n\nexport default AbcensesExportAbcenseAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/export-abcense/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerExportSalaryAddRoute;\n\nimport Ember from 'ember';\n\nTimetrackerExportSalaryAddRoute = Ember.Route.extend({\n    model: function () {\n        return this.store.query('integration', {\n            type: 'export_absence',\n        });\n    },\n    actions: {\n        fileCreated: function () {\n            return this.transitionTo('salary.export-abcense');\n        },\n        cancel: function () {\n            return this.transitionTo('salary.export-abcense');\n        },\n    },\n});\n\nexport default TimetrackerExportSalaryAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"vAC6wj3Y\",\"block\":\"{\\\"symbols\\\":[\\\"integration\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export.create_new\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selectableIntegrations\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.export_export\\\"],null],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-control add-fields\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control add-fields\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"_selectedIntegration\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,1,[\\\"key\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"key\\\"]],[24,[\\\"_selectedIntegration\\\"]]],null]],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"record-comp-export\\\",null,[[\\\"form\\\",\\\"selectedIntegration\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"export_absence\\\",[24,[\\\"selectedIntegration\\\"]],\\\"fileCreated\\\",\\\"cancel\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/export-abcense/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/export-abcense/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerExportAbcenseIndexController;\n\nimport Ember from 'ember';\n\nimport config from '../../../../config/environment';\n\nTimetrackerExportAbcenseIndexController = Ember.Controller.extend({\n    dialogs: Ember.inject.service(),\n    capi: Ember.inject.service(),\n    intl: Em.inject.service(),\n    rowActions: Ember.computed('settings.row_info_status', function () {\n        var actions;\n        if (this.get('settings.row_info_status')) {\n            actions = [\n                {\n                    action: 'restoreRow',\n                    icon: 'move move-ReuseFilled',\n                },\n            ];\n        } else {\n            actions = [\n                {\n                    action: 'removeRow',\n                    icon: 'move move-Delete',\n                },\n                {\n                    action: 'historyRow',\n                    icon: 'move move-Search',\n                },\n            ];\n        }\n        return actions;\n    }),\n    actions: {\n        historyRow: function (row) {\n            return this.transitionToRoute({\n                queryParams: {\n                    modal: ['exportAbsence', row.id, 'history'],\n                },\n            });\n        },\n        restoreRow: function (row) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_restore'))\n                .then((con) => {\n                    if (con) {\n                        return this.get('capi')\n                            .request('/exportAbsences/' + row.id + '?validation=off', {\n                                dataType: 'json',\n                                type: 'PUT',\n                                data: '{\"exportAbsence\":{\"row_info.status\":\"normal\"}}',\n                            })\n                            .then((data) => {\n                                row = this.get('store').peekRecord('export-absence', row.id);\n                                return row.unloadRecord();\n                            });\n                    }\n                });\n        },\n        toggleRowStatus: function () {\n            if (this.get('settings.row_info_status') === 'removed') {\n                return this.set('settings.row_info_status', false);\n            } else {\n                return this.set('settings.row_info_status', 'removed');\n            }\n        },\n    },\n    settings: Em.Object.create({\n        row_info_status: false,\n        form: 'export_absence',\n    }),\n});\n\nexport default TimetrackerExportAbcenseIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/export-abcense/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerExportSalaryIndexRoute;\n\nimport Ember from 'ember';\n\nTimetrackerExportSalaryIndexRoute = Ember.Route.extend();\n\nexport default TimetrackerExportSalaryIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"3CXK0J79\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"button\\\",\\\"btn btn-primary\\\",\\\"salary.export-abcense.add\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"export.create_file\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleRowStatus\\\"]],[8],[4,\\\"if\\\",[[24,[\\\"settings\\\",\\\"row_info_status\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.actions.show_normal\\\"],null],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.actions.show_removed\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"rowActions\\\",\\\"historyRow\\\",\\\"settings\\\",\\\"restoreRow\\\",\\\"form\\\"],[[24,[\\\"rowActions\\\"]],\\\"historyRow\\\",[24,[\\\"settings\\\"]],\\\"restoreRow\\\",\\\"export_absence\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/export-abcense/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/export-abcense/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerExportSalaryRoute;\n\nimport Ember from 'ember';\n\nTimetrackerExportSalaryRoute = Ember.Route.extend();\n\nexport default TimetrackerExportSalaryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"FH2qaNe2\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/export-abcense/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/export-salary/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerExportSalaryAddController;\n\nimport Ember from 'ember';\n\nimport DS from 'ember-data';\n\nTimetrackerExportSalaryAddController = Ember.Controller.extend({\n    selectableIntegrations: Ember.computed.gt('model.length', 1),\n    selectedIntegration: Ember.computed('_selectedIntegration', function () {\n        return this.get('_selectedIntegration') || this.get('model.firstObject.key');\n    }),\n    checkSettings: function () {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            if (this.get('selectedIntegration') === 'general-fivaldi-salary-soap-v4') {\n                return this.get('store')\n                    .query('integrationsetting', {\n                        integration: 'general-fivaldi-salary-soap',\n                    })\n                    .then((settings) => {\n                        var mapped;\n                        mapped = settings.mapBy('key');\n                        if (!mapped.includes('businessid') || !mapped.includes('schema')) {\n                            this.set('showModal', 'fivaldi');\n                            return resolve();\n                        } else {\n                            return resolve();\n                        }\n                    });\n            } else if (this.get('selectedIntegration') === 'general-netvisor-salary-rest-v4') {\n                return this.get('store')\n                    .query('integrationsetting', {\n                        integration: 'general-netvisor-salary-rest',\n                    })\n                    .then((settings) => {\n                        var mapped;\n                        mapped = settings.mapBy('key');\n                        if (!mapped.includes('cid') || !mapped.includes('customerID')) {\n                            this.set('showModal', 'netvisor');\n                            return resolve();\n                        } else {\n                            return resolve();\n                        }\n                    });\n            } else {\n                return resolve();\n            }\n        });\n    },\n    settings: Ember.computed('selectedIntegration', function () {\n        return DS.PromiseObject.create({\n            promise: this.checkSettings(),\n        });\n    }),\n    actions: {\n        closeModal: function () {\n            return this.set('showModal', false);\n        },\n    },\n});\n\nexport default TimetrackerExportSalaryAddController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\n\nexport default Route.extend({\n    collector: service('collector-service'),\n    intl: service(),\n    store: service(),\n    dialogs: service(),\n    flags: service(),\n\n    async model() {\n        const integrations = await this.store.query('integration', { type: 'export_salary' });\n\n        if (integrations.length === 0) {\n            const integrations = this.getStandardIntegrations();\n            const customs = await this.store.query('custom-export', {});\n\n            customs.forEach((custom) =>\n                integrations.push({ name: custom.name, key: 'custom-' + custom.id }),\n            );\n\n            return integrations;\n        } else {\n            return integrations;\n        }\n    },\n\n    actions: {\n        fileCreated() {\n            this.transitionTo('salary.export-salary');\n        },\n        cancel() {\n            this.transitionTo('salary.export-salary');\n        },\n\n        async close() {\n            const con = await this.dialogs.confirm(\n                this.intl.t('export-salary.settings.confirm_close'),\n            );\n            if (con) set('this', 'controller.showModal', false);\n        },\n    },\n\n    getStandardIntegrations() {\n        let products = {\n            fivaldi_salary_csv:\n                'general-fivaldi-salary-csv-v2?_v=' + this.flags.test('general-fivaldi-salary-csv'),\n            lon600_salary_xml:\n                'general-lon-600-salary-xml-v2?_v=' + this.flags.test('general-lon-600-salary-xml'),\n            nova_salary_csv:\n                'general-nova-salary-csv-v4?_v=' + this.flags.test('general-nova-salary-csv'),\n            fivaldi_salary_soap:\n                'general-fivaldi-salary-soap-v4?_v=' +\n                this.flags.test('general-fivaldi-salary-soap'),\n            netvisor_salary_rest:\n                'general-netvisor-salary-rest-v4?_v=' +\n                this.flags.test('general-netvisor-salary-rest'),\n            payroll_worktime_rest: 'payroll_worktime_rest',\n            payroll_worktime_csv:\n                'general-payroll-worktime-csv?_v=' +\n                this.flags.test('general-payroll-worktime-csv'),\n            payroll_absence_csv:\n                'general-payroll-absence-csv?_v=' + this.flags.test('general-payroll-absence-csv'),\n            vismanet: 'vismanet',\n        };\n\n        if (this.collector.testNeedsOne('products.salarytype_v2')) {\n            products.fivaldi_salary_soap =\n                'general-fivaldi-salary-soap-salarytypesv2?_v=' +\n                this.flags.test('general-fivaldi-salary-soap-salarytypesv2');\n            products.payroll_worktime_csv =\n                'general-payroll-worktime-csv-salarytypesv2?_v=' +\n                this.flags.test('general-payroll-worktime-csv-salarytypesv2');\n            products.nova_salary_csv =\n                'general-nova-salary-csv-salarytypesv2?_v=' +\n                this.flags.test('general-nova-salary-csv-salarytypesv2');\n            products.netvisor_salary_rest =\n                'general-netvisor-salary-rest-salarytypesv2?_v=' +\n                this.flags.test('general-netvisor-salary-rest-salarytypesv2');\n            products.vismanet = 'vismanet-salarytypesv2';\n        }\n\n        const integrations = [];\n        Object.keys(products).forEach((product) => {\n            const key = products[product];\n            if (this.collector.testNeedsOne('products.' + product)) {\n                integrations.pushObject({\n                    name: this.intl.t('integrations.export.' + product),\n                    key: key,\n                });\n            }\n        });\n\n        return integrations;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"S79fM7Jz\",\"block\":\"{\\\"symbols\\\":[\\\"integration\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export.create_new\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selectableIntegrations\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.export_export\\\"],null],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-control add-fields\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control add-fields\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"_selectedIntegration\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,1,[\\\"key\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"key\\\"]],[24,[\\\"_selectedIntegration\\\"]]],null]],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"settings\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"integration-settings\\\",null,[[\\\"showModal\\\",\\\"save\\\",\\\"close\\\"],[[24,[\\\"showModal\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"send\\\"]],\\\"close\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"record-comp-export\\\",null,[[\\\"form\\\",\\\"selectedIntegration\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\",\\\"checkSettings\\\"],[\\\"export_salary\\\",[24,[\\\"selectedIntegration\\\"]],\\\"fileCreated\\\",\\\"cancel\\\",[24,[\\\"checkSettings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/export-salary/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/export-salary/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerExportSalaryIndexController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport config from '../../../../config/environment';\n\nimport collector from '../../../../classes/collector';\n\nTimetrackerExportSalaryIndexController = Ember.Controller.extend({\n    dialogs: Ember.inject.service(),\n    admintool: Ember.inject.service(),\n    session: Em.inject.service(),\n    initapp: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    capi: Em.inject.service(),\n    intl: Em.inject.service(),\n    _refreshNeeded: false,\n    showIntegrationModal: false,\n    rowActions: Ember.computed('settings.row_info_status', function () {\n        var actions;\n        if (this.get('settings.row_info_status')) {\n            actions = [\n                {\n                    action: 'restoreRow',\n                    icon: 'move move-ReuseFilled',\n                },\n            ];\n        } else {\n            actions = [\n                {\n                    action: 'removeRow',\n                    icon: 'move move-Delete',\n                },\n                {\n                    action: 'historyRow',\n                    icon: 'move move-Search',\n                },\n            ];\n        }\n        return actions;\n    }),\n    settings: Em.Object.create({\n        row_info_status: false,\n        form: 'export_salary',\n    }),\n    showAd: Em.computed(function () {\n        return !this.get('Collector').testNeedsOne('export_salary');\n    }),\n    showTheseProducts: [\n        'fivaldi_salary_csv',\n        'fivaldi_salary_soap',\n        'lon600_salary_xml',\n        'netvisor_salary_rest',\n        'nova_salary_csv',\n        'vismanet',\n        'fondion',\n    ],\n    _products: Em.on('init', function () {\n        var c, params;\n        c = this.get('Collector');\n        params = {\n            data: {\n                country: this.get('session.currentUser.company_info.country'),\n                lang: moment.locale(),\n            },\n            headers: {\n                Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n            },\n        };\n        return this.get('admintool')\n            .get('products', params)\n            .then((products) => {\n                var productsArr;\n                productsArr = products.filter((product) => {\n                    var ref;\n                    return (\n                        (ref = product.name), indexOf.call(this.get('showTheseProducts'), ref) >= 0\n                    );\n                });\n                products = productsArr.map((item) => {\n                    item = Ember.Object.create(item);\n                    if (c.testNeeds(['products.' + item.get('name')])) {\n                        item.set('selected', true);\n                    }\n                    return item;\n                });\n                return this.set('products', products);\n            });\n    }),\n    isDirty: Em.computed('products.@each.selected', 'productsSaved', function () {\n        var c, dirty, i, len, product, products;\n        products = this.get('products');\n        if (!products) {\n            return false;\n        }\n        c = this.get('Collector');\n        dirty = false;\n        for (i = 0, len = products.length; i < len; i++) {\n            product = products[i];\n            if (product.get('selected') && !c.testNeeds(['products.' + product.get('name')])) {\n                dirty = true;\n            } else if (\n                !product.get('selected') &&\n                c.testNeeds(['products.' + product.get('name')])\n            ) {\n                dirty = true;\n            }\n        }\n        return dirty;\n    }),\n    actions: {\n        click: function (object) {\n            if (object.get('disabled')) {\n                return false;\n            }\n            if (object.get('selected')) {\n                object.set('selected', false);\n            } else {\n                object.toggleProperty('selected');\n                this.toggleProperty('showIntegrationModal');\n            }\n            return false;\n        },\n        save: function () {\n            var c, i, len, needs, post_add_actions, product, products, promises;\n            products = this.get('products');\n            //@get('settingsController').refreshNeeded()\n            this.set('_refreshNeeded', true);\n            c = this.get('Collector');\n            needs = [];\n            post_add_actions = [];\n            for (i = 0, len = products.length; i < len; i++) {\n                product = products[i];\n                if (product.get('selected')) {\n                    if (\n                        !c.productExists('products.' + product.get('name')) &&\n                        typeof this['adding_' + product.get('name')] === 'function'\n                    ) {\n                        post_add_actions.push(product.get('name'));\n                    }\n                    needs.push('products.' + product.get('name'));\n                } else {\n                    needs.push('!products.' + product.get('name'));\n                }\n            }\n            //@sendInfoToCustomerService(products)\n            promises = c.setProducts(needs);\n            return Em.RSVP.Promise.all(promises).then((data) => {\n                this.set('productsSaved', true);\n                this.get('initapp').clearInit();\n                return this.get('dialogs')\n                    .alert(this.get('intl').t('general.settings_refresh_needed'))\n                    .then(function () {\n                        return location.reload();\n                    });\n            });\n        },\n        ShowSettings: function () {\n            if (this.get('Collector').productExists('products.netvisor_salary_rest')) {\n                return this.set('showModal', 'netvisor');\n            } else if (this.get('Collector').productExists('products.payroll_worktime_rest')) {\n                return this.set('showModal', 'payroll');\n            } else if (this.get('Collector').productExists('products.fivaldi_salary_soap')) {\n                return this.set('showModal', 'fivaldi');\n            } else if (this.get('Collector').productExists('products.vismanet')) {\n                return this.set('showModal', 'vismanet');\n            } else if (this.get('Collector').productExists('products.nova_web_service')) {\n                return this.set('showModal', 'nova_web_service');\n            } else if (this.get('Collector').productExists('products.fondion')) {\n                return this.set('showModal', 'fondion');\n            }\n        },\n        closeModal: function () {\n            return this.set('showModal', false);\n        },\n        infoButton: function (product) {\n            this.set('showIntegrationModal', true);\n            return this.set('integrationName', product);\n        },\n    },\n});\n\nexport default TimetrackerExportSalaryIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/export-salary/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerExportSalaryIndexRoute;\n\nimport Ember from 'ember';\n\nTimetrackerExportSalaryIndexRoute = Ember.Route.extend();\n\nexport default TimetrackerExportSalaryIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"EnWmye1d\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"Act\\\",\\\"ExportMore\\\",\\\"product\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showAd\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.products.integrations_ad.title\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.products.integrations_ad.text\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-6 col-md-4\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isDirty\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"settings.products.save\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"productsSaved\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.products.productsSaved\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row product_card_row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"products\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"product-card\\\",null,[[\\\"product\\\",\\\"products\\\",\\\"click\\\",\\\"infoButton\\\",\\\"showIntegrationModal\\\"],[[23,5,[]],[24,[\\\"products\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"click\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"infoButton\\\"],null],[24,[\\\"showIntegrationModal\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n            \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"button\\\",\\\"btn btn-primary\\\",\\\"salary.export-salary.add\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"export.create_file\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.fivaldi_salary_soap||products.netvisor_salary_rest||products.vismanet||products.nova_web_service||products.payroll_worktime_rest||products.fondion\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"ShowSettings\\\"]],[8],[1,[28,\\\"t\\\",[\\\"export.show_settings\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"integration-settings\\\",null,[[\\\"showModal\\\",\\\"save\\\",\\\"close\\\"],[[24,[\\\"showModal\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showFilters\\\",\\\"@filter\\\"],[\\\"export_salary\\\",\\\" \\\",[28,\\\"hash\\\",null,[[\\\"order\\\"],[\\\"date-\\\"]]]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"RemovedStatus\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"history,remove\\\"]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/export-salary/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/export-salary/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerExportSalaryRoute;\n\nimport Ember from 'ember';\n\nTimetrackerExportSalaryRoute = Ember.Route.extend();\n\nexport default TimetrackerExportSalaryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"WHGsLI8X\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/export-salary/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Route;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    Collector: Ember.inject.service('collector-service'),\n    beforeModel: function (transition) {\n        if (transition.targetName === 'salary.index') {\n            this.transitionToRightPage();\n        }\n        return this._super(transition);\n    },\n    transitionToRightPage: function () {\n        if (\n            this.get('Collector').testNeeds([\n                'userlevel=2,3,5',\n                'export_salary',\n                'export_salary@access',\n            ])\n        ) {\n            return this.transitionTo('salary.export-salary');\n        } else {\n            return this.transitionTo('salary.salaryperiods');\n        }\n    },\n    actions: {\n        willTransition: function (transition) {\n            if (transition.targetName === 'salary.index') {\n                return this.transitionToRightPage();\n            }\n        },\n    },\n});\n\nexport default Route;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/salaryperiods/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Controller;\n\nimport Ember from 'ember';\n\nController = Ember.Controller.extend({\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    report: Ember.computed('filters.@each.value', function () {\n        return Ember.Object.create({\n            form: 'wage_period',\n            refreshRows: true,\n            order: 'period_start_date-,period_end_date-',\n            query: this.get('filters').map(function (filter) {\n                if (filter.get('field') === 'period_start_date') {\n                    return {\n                        name: 'period_start_date:period_end_date',\n                        value: filter.get('value'),\n                    };\n                } else {\n                    return {\n                        name: filter.get('field'),\n                        value: filter.get('value'),\n                    };\n                }\n            }),\n        });\n    }),\n    checked_rows: [],\n    filters: Em.A([\n        Em.Object.create({\n            field: 'period_start_date',\n            type: 'date',\n            form: 'wage_period',\n        }),\n    ]),\n    addSingleButton: Ember.computed(function () {\n        return (\n            this.get('intl').t('general.add') +\n            ' ' +\n            this.get('intl').t('salary_period.adder.single').toLowerCase()\n        );\n    }),\n    actions: {\n        showAdd: function (onoff) {\n            this.set('record', null);\n            this.set('showAddPopup', onoff);\n            return false;\n        },\n        editRow: function (row) {\n            this.set('record', this.get('store').peekRecord(this.get('report.form'), row.id));\n            this.set('showAddPopup', true);\n            return false;\n        },\n        periodAdded: function () {\n            this.send('showAdd', false);\n            return this.get('report').notifyPropertyChange('refreshRows');\n        },\n        filterChanged: function (value, field) {\n            if (value == null) {\n                return this.set(field, null);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        removeCheckedRows: function (rows) {\n            if (this.get('checked_rows.length') > 0) {\n                return this.get('dialogs')\n                    .confirm(this.get('intl').t('report.confirm_delete'))\n                    .then((con) => {\n                        if (con) {\n                            return rows.forEach((row) => {\n                                console.log(this.get('form'));\n                                row = this.get('store').peekRecord(this.get('report.form'), row.id);\n                                if (row.get('row_info.privilege_remove') === false) {\n                                    this.get('dialogs').alert(\n                                        this.get('intl').t(\n                                            'general_report.mass_delete.not_allowed',\n                                        ),\n                                    );\n                                    return;\n                                }\n                                return row.destroyRecord();\n                            });\n                        }\n                    });\n            }\n        },\n        checkedRows: function (rows) {\n            this.set('checked_rows', rows);\n        },\n    },\n});\n\nexport default Controller;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/salaryperiods/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Route;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    model: function () {\n        return this.store.findAll('wage_period');\n    },\n});\n\nexport default Route;\n","export default Ember.HTMLBars.template({\"id\":\"9N+JucEV\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"form\\\",\\\"filters\\\",\\\"filterChanged\\\"],[[24,[\\\"form\\\"]],[24,[\\\"filters\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content report-forms\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-right report-button-row\\\"],[8],[0,\\\"\\\\n                \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more pull-left\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,1,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"  \\\"],[1,[28,\\\"t\\\",[\\\"report.more_button\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[6,[23,2,[\\\"item\\\"]],[],[[\\\"@class\\\"],[[22,\\\"moreLinksClass\\\"]]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeCheckedRows\\\",[24,[\\\"checked_rows\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.delete_rows\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"form\\\",\\\"settings\\\",\\\"editRow\\\",\\\"checkable\\\",\\\"checkedRows\\\"],[\\\"wage_period\\\",[24,[\\\"report\\\"]],\\\"editRow\\\",true,\\\"checkedRows\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showAdd\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.wage_periods.add_new\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[2,\\\"button class=\\\\\\\"btn btn-danger\\\\\\\" {{action 'removeCheckedRows' checked_rows}}>{{t \\\\\\\"report.delete_rows\\\\\\\"}}</button\\\"],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddPopup\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"general.add\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showAdd\\\",false],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/form-add/forms/wageperiod\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"close\\\",\\\"rowAdded\\\",\\\"rowEdited\\\"],[\\\"wage_period\\\",[24,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showAddPopup\\\"]]],null],null],null],[28,\\\"action\\\",[[23,0,[]],\\\"periodAdded\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"periodAdded\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/salaryperiods/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/salarytypes/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Controller, get, set;\n\nimport Ember from 'ember';\n\n({ get: get, set: set } = Ember);\n\nimport { computed } from '@ember/object';\n\nController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    servicehandler: Ember.inject.service(),\n    tools: Ember.inject.service(),\n    settings: Em.inject.controller(),\n    notifications: Ember.inject.service(),\n    preventUsage: computed('model.salarytypes.length', function () {\n        return this.get('model.salarytypes').filterBy('isNew', false).length === 0;\n    }),\n    rowActions: [\n        {\n            action: 'editRow',\n            icon: 'move move-Pencil',\n        },\n        {\n            action: 'rowHistory',\n            icon: 'move move-Search',\n        },\n        {\n            action: 'removeRow',\n            icon: 'move move-Delete',\n        },\n    ],\n    devText:\n        'If you want to start using new salarytypes v2, go to salarytype list and remove all old salarytypes ',\n    salarytypesText: 'salarytypes',\n    absenceSettings: Ember.Object.create({\n        form: 'abcensetype',\n    }),\n    sortedModel: Ember.computed.sort('model.salarytypes', function (a, b) {\n        var id_a, id_b, index_a, index_b, sortOrder;\n        sortOrder = [\n            '_basichours',\n            '_evening',\n            'hours_evening',\n            '_night',\n            '_extrahours',\n            '_overtimehours',\n            '_50',\n            'hours_50',\n            '_100',\n            'hours_100',\n            '_week50',\n            '_week100',\n            'hours_150',\n            'hours_200',\n            'hours_hourly',\n            'hours_piece',\n            'hours_extra',\n        ];\n        id_a = a.get('shortcut');\n        id_b = b.get('shortcut');\n        if (!id_a) {\n            id_a = a.get('control');\n        }\n        if (!id_b) {\n            id_b = b.get('control');\n        }\n        if (!id_a) {\n            id_a = '';\n        }\n        if (!id_b) {\n            id_b = '';\n        }\n        id_a = id_a.split(';')[0];\n        id_b = id_b.split(';')[0];\n        index_a = sortOrder.indexOf(id_a);\n        index_b = sortOrder.indexOf(id_b);\n        if (index_a === -1) {\n            index_a = sortOrder.length + 1;\n        }\n        if (index_b === -1) {\n            index_b = sortOrder.length + 1;\n        }\n        if (index_a > index_b) {\n            return 1;\n        } else {\n            return -1;\n        }\n    }),\n    dropdowns: Ember.computed.alias('model.dropdowns'),\n    shortcuts: Ember.computed.alias('model.shortcuts'),\n    manipulateService: function () {\n        var fields, selectable_count;\n        fields = {};\n        selectable_count = 0;\n        this.get('model.salarytypes').forEach((row) => {\n            var field, negation, pieces_or_hours, ref, type;\n            negation = get(row, 'inuse') ? '' : '!';\n            if ((ref = get(row, 'type')) === 'field' || ref === 'amount' || ref === 'check') {\n                if (!get(row, 'option')) {\n                    field = this.getFieldName(row);\n                    set(row, 'option', field);\n                    set(row, 'control', '$option');\n                }\n                type = {\n                    field: 'hours',\n                    amount: 'number',\n                    check: 'checkbox',\n                }[get(row, 'type')];\n                fields[negation + 'worktime.' + get(row, 'option')] = {\n                    type: type,\n                    name: row.get('name'),\n                };\n            } else if (\n                Ember.typeOf(row.get('type')) === 'string' &&\n                row.get('type').substring(0, 7) === 'custom_'\n            ) {\n                pieces_or_hours =\n                    row.get('type').substring(7, 17) === 'typeofwork' ? 'hours' : 'pieces';\n                field = pieces_or_hours === 'hours' ? 'work_hours' : '1';\n                row.set('control', field + ';' + row.get('type').substring(7));\n            } else if (this.get('Collector').fieldExists('worktime', row.get('type'))) {\n                row.set('control', row.get('type'));\n                row.set('option', row.get('type'));\n            } else if (!row.get('control')) {\n                row.set('control', 'work_hours;salarytype=$this');\n            }\n            if (!row.get('type') && row.get('inuse')) {\n                return selectable_count++;\n            }\n        });\n        // if there is more than 1 selectable salarytype and selection to worktime field\n        if (\n            selectable_count > 1 &&\n            !this.get('Collector').testNeeds(['products.selectablesalarytype'])\n        ) {\n            this.get('Collector').addProduct('selectablesalarytype');\n        } else if (\n            selectable_count <= 1 &&\n            this.get('Collector').testNeeds(['products.selectablesalarytype'])\n        ) {\n            this.get('Collector').removeProduct('selectablesalarytype');\n        }\n        return this.get('servicehandler').manipulateService(this.removeDuplicateFields(fields));\n    },\n    getFieldName: function (row) {\n        var name, option;\n        name = row.get('name');\n        option = null;\n        this.get('model.salarytypes').forEach((salarytype) => {\n            if (salarytype.get('name') === name && salarytype.get('option')) {\n                return (option = salarytype.get('option'));\n            }\n        });\n        if (option) {\n            return option;\n        } else {\n            return 'addon_' + this.get('tools').computerizeHumanInput(name);\n        }\n    },\n    removeDuplicateFields: function (fields) {\n        var keysByName, ret;\n        keysByName = {};\n        ret = {};\n        Object.keys(fields).forEach((fieldName) => {\n            var field;\n            field = fields[fieldName];\n            if (keysByName[field.name] == null) {\n                keysByName[field.name] = [];\n            }\n            return keysByName[field.name].push({\n                name: fieldName,\n                field: field,\n            });\n        });\n        Object.keys(keysByName).forEach((name) => {\n            var useField, useName;\n            fields = keysByName[name];\n            useField = null;\n            useName = null;\n            fields.forEach((field) => {\n                if (!useField) {\n                    useField = field;\n                }\n                if (useField.name.startsWith('!') && !field.name.startsWith('!')) {\n                    useField.name = useField.name.substring(1);\n                }\n                if (!this.plainFieldName(field.name).indexOf('addon') === -1) {\n                    return (useName = this.plainFieldName(field.name));\n                }\n            });\n            if (useName) {\n                useField.name = (useField.name.startsWith('!') ? '!' : '') + useName;\n            }\n            return (ret[useField.name] = useField.field);\n        });\n        return ret;\n    },\n    plainFieldName: function (name) {\n        if (name.startsWith('!')) {\n            return name.substring(1);\n        } else {\n            return name;\n        }\n    },\n    showSave: Ember.computed(\n        'model.salarytypes.@each.changedWorktimegroup',\n        'model.salarytypes.@each.hasDirtyAttributes',\n        'model.salarytypes.@each.inuse',\n        function () {\n            var show;\n            show = false;\n            this.get('model.salarytypes').forEach((row) => {\n                if (!row.get('inuse') && row.get('isNew')) {\n                    return;\n                }\n                if (row.get('hasDirtyAttributes') || row.get('changedWorktimegroup')) {\n                    return (show = true);\n                }\n            });\n            return show;\n        },\n    ),\n    actions: {\n        changedWorktimegroup: function (row, record, fieldname) {\n            if (!fieldname) {\n                return;\n            }\n            row.set('changedWorktimegroup', true);\n            return row.set(fieldname, record);\n        },\n        save: function () {\n            this.get('notifications').success(this.get('intl').t('general.saved'), {\n                autoClear: true,\n            });\n            this.set('_refreshNeeded', true);\n            this.manipulateService();\n            this.set('changedWorktimegroup', false);\n            return this.get('model.salarytypes').forEach((row) => {\n                if (row.get('hasDirtyAttributes') || row.get('changedWorktimegroup')) {\n                    return row.save();\n                }\n            });\n        },\n        remove: function (row) {\n            return row.destroyRecord();\n        },\n        addRow: function () {\n            return this.store.createRecord('salarytype', {\n                inuse: true,\n            });\n        },\n        editRow: function (row) {\n            return this.store.findRecord('abcensetype', row.id).then((record) => {\n                record.on('didUpdate', () => {\n                    return this.get('absenceSettings').toggleProperty('refreshRows');\n                });\n                return this.transitionToRoute({\n                    queryParams: {\n                        modal: ['abcensetype', row.id],\n                    },\n                });\n            });\n        },\n        removeRow: function (row, report) {\n            Em.assert('removeRow action needs row id', row.id);\n            return this.store.findRecord(report.get('form'), row.id).then(function (record) {\n                return record.destroyRecord();\n            });\n        },\n    },\n});\n\nexport default Controller;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/salarytypes/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Route;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    model: function () {\n        this.store.query('salarytype', {\n            sideload: true,\n        });\n        return Ember.RSVP.hash({\n            salarytypes: this.store.peekAll('salarytype'),\n            shortcuts: null,\n        });\n    },\n    //setupController: (controller, post) ->\n    //    this._super(controller, post)\n    //    controller.updateModel()\n    afterModel: function (model) {\n        return this.get('Collector')\n            .ccapi({\n                url:\n                    'default_salarytypes?products=' + this.get('Collector').getProducts().join(','),\n            })\n            .then((defaults) => {\n                var dropdowns, fields;\n                dropdowns = [];\n                fields = this.get('Collector').fields('worktime');\n                Object.keys(fields).forEach((field) => {\n                    var defaultsFields, ref, ref1;\n                    if (field === 'work_hours') {\n                        return;\n                    }\n                    if ((ref = fields[field].type) === 'hours' || ref === 'number') {\n                        defaultsFields = defaults.filter(function (item) {\n                            var ref1;\n                            return (\n                                (ref1 = Ember.get(item, 'type')) === 'field' ||\n                                ref1 === 'amount' ||\n                                ref1 === 'check'\n                            );\n                        });\n                        if (!defaultsFields.findBy('option', field)) {\n                            return defaults.push({\n                                name: fields[field].name\n                                    ? fields[field].name\n                                    : this.get('intl').t('worktime.' + field),\n                                control: field,\n                                type: 'disabled',\n                                option: field,\n                            });\n                        }\n                    } else if (\n                        (ref1 = fields[field].type) === 'dropdown_values' ||\n                        ref1 === 'dropdown_options'\n                    ) {\n                        return dropdowns.push({\n                            text: fields[field].name\n                                ? fields[field].name\n                                : this.get('intl').t('worktime.' + field),\n                            options: fields[field].options.map((option) => {\n                                return {\n                                    value: 'custom_' + field + '=' + option.id,\n                                    text: this.get('intl').t('worktime.' + field + '.' + option.id),\n                                };\n                            }),\n                        });\n                    } else if (fields[field].type === 'checkbox') {\n                        return dropdowns.push({\n                            text: fields[field].name\n                                ? fields[field].name\n                                : this.get('intl').t('worktime.' + field),\n                            options: [\n                                {\n                                    value: 'custom_' + field + '=true',\n                                    text: this.get('intl').t('general.yes'),\n                                },\n                                {\n                                    value: 'custom_' + field + '=false',\n                                    text: this.get('intl').t('general.no'),\n                                },\n                            ],\n                        });\n                    }\n                });\n                Ember.set(model, 'shortcuts', defaults);\n                Ember.set(model, 'dropdowns', dropdowns);\n                Ember.get(model, 'shortcuts').forEach((shortcut) => {\n                    var filtered, found, inuse;\n                    if (shortcut.shortcut) {\n                        found = Ember.get(model, 'salarytypes').findBy(\n                            'shortcut',\n                            shortcut.shortcut,\n                        );\n                    } else {\n                        filtered = Ember.get(model, 'salarytypes').filter(function (item) {\n                            var ref;\n                            return (\n                                (ref = item.get('type')) === 'field' ||\n                                ref === 'amount' ||\n                                ref === 'check' ||\n                                ref === 'disabled'\n                            );\n                        });\n                        found = filtered.findBy('option', shortcut.option);\n                    }\n                    if (!found) {\n                        inuse = this.get('Collector').testNeeds(['worktime.' + shortcut.option]);\n                        return this.store.createRecord('salarytype', {\n                            name: shortcut.name,\n                            control: shortcut.control,\n                            key: shortcut.key,\n                            type: inuse ? 'disabled' : shortcut.type,\n                            option: shortcut.option,\n                            shortcut: shortcut.shortcut,\n                            inuse: inuse,\n                        });\n                    }\n                });\n                return Ember.set(model, 'salarytypes', this.store.peekAll('salarytype'));\n            });\n    },\n    actions: {\n        willTransition: function (transition) {\n            return transition.then(() => {\n                if (this.controller.get('_refreshNeeded')) {\n                    return this.get('dialogs')\n                        .alert(this.get('intl').t('general.settings_refresh_needed'))\n                        .then(function () {\n                            return location.reload();\n                        });\n                }\n            });\n        },\n    },\n});\n\nexport default Route;\n","export default Ember.HTMLBars.template({\"id\":\"XdwkAtOD\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"shortcut\\\",\\\"dropdown\\\",\\\"opt\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"preventUsage\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning my-4 mx-4\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[28,\\\"t\\\",[\\\"salarytypes.old.warning\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"development\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning my-4 mx-4\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"devText\\\"],false],[0,\\\"\\\\n        \\\"],[5,\\\"link-to\\\",[],[[\\\"@route\\\",\\\"@model\\\"],[\\\"forms.form-report\\\",\\\"salarytype\\\"]],{\\\"statements\\\":[[1,[22,\\\"salarytypesText\\\"],false]],\\\"parameters\\\":[]}],[0,\\\"        \\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.help\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.name\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.type\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.key\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"salarytype.worktimegroup\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.worktimegroup\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.inuse\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sortedModel\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"disabled\\\"],[\\\"text\\\",[23,1,[\\\"name\\\"]],\\\"form-control\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"disabled\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"or\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"disabled\\\"],null],[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"product\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onChange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,1,[\\\"type\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[11,\\\"disabled\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"isNew\\\"]],false],null]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"dropdown\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.type.dropdown\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"field\\\"],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"field\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.type.field\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"amount\\\"],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"amount\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.type.amount\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"check\\\"],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"check\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"report.salarytype.type.check\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"dropdowns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"optgroup\\\",true],[11,\\\"label\\\",[23,3,[\\\"text\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,4,[\\\"value\\\"]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],[23,4,[\\\"value\\\"]]],null]],[8],[1,[23,4,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n                        \\\"],[7,\\\"optgroup\\\",true],[11,\\\"label\\\",[28,\\\"t\\\",[\\\"report.salarytype.hours_numbers\\\"],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"shortcuts\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"not-eq\\\",[[23,2,[\\\"option\\\"]],\\\"\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,2,[\\\"option\\\"]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,2,[\\\"option\\\"]],[23,1,[\\\"type\\\"]]],null]],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,1,[\\\"key\\\"]],\\\"form-control\\\"]]],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"salarytype.worktimegroup\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector/field-comp\\\",[\\\"salarytype.worktimegroup\\\"],[[\\\"prompt\\\",\\\"value\\\",\\\"change\\\"],[[28,\\\"t\\\",[\\\"salarytypes.useall\\\"],null],[23,1,[\\\"worktimegroup\\\",\\\"id\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changedWorktimegroup\\\",[23,1,[]]],null]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"checked\\\",\\\"disabled\\\"],[\\\"checkbox\\\",\\\"form-control\\\",[23,1,[\\\"inuse\\\"]],[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"disabled\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[23,1,[\\\"inuse\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,1,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addRow\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSave\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"salary.salarytypes.absence.salary_code\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"settings\\\",\\\"rowActions\\\",\\\"editRow\\\",\\\"removeRow\\\"],[[24,[\\\"absenceSettings\\\"]],[24,[\\\"rowActions\\\"]],\\\"editRow\\\",\\\"removeRow\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/salarytypes/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"kGQ/vzj4\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/workday-calendar/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorkdayCalendarController;\n\nimport Ember from 'ember';\n\nimport { inject as service } from '@ember/service';\n\nimport EmberObject from '@ember/object';\n\nWorkdayCalendarController = Ember.Controller.extend({\n    intl: service(),\n    store: service(),\n    tools: service(),\n    session: service(),\n    customerSettings: service(),\n    ttapi: service(),\n    Collector: service('collector-service'),\n    queryParams: ['worktimegroup', 'date'],\n    worktimegroup: null,\n    date:\n        moment().startOf('year').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('year').format('YYYY-MM-DD'),\n    daily_checked: true,\n    time_based_checked: false,\n    customTimeBased: Em.A([]),\n    fieldsToBeRemoved: [],\n    rowActions: [\n        {\n            action: 'editRow',\n            icon: 'move move-Pencil',\n        },\n    ],\n    showDailyOvertime: Ember.computed('Ember.devModeOn', function () {\n        //return false if !Ember.get(Ember, 'devModeOn')\n        if (this.get('Collector').testNeeds(['products.overtime', 'serviceCountry@se'])) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n    sortedWeekdays: Ember.computed('model.weeks.[]', 'worktimegroup', function () {\n        var days;\n        days = this.get('model.weeks');\n        return Ember.A([\n            days.filterBy('day', 'monday').get('lastObject'),\n            days.filterBy('day', 'tuesday').get('lastObject'),\n            days.filterBy('day', 'wednesday').get('lastObject'),\n            days.filterBy('day', 'thursday').get('lastObject'),\n            days.filterBy('day', 'friday').get('lastObject'),\n            days.filterBy('day', 'saturday').get('lastObject'),\n            days.filterBy('day', 'sunday').get('lastObject'),\n        ]);\n    }),\n    columns: Ember.computed(function () {\n        var cols;\n        cols = ['date', 'minutes', 'desc'];\n        if (this.get('Collector').testNeedsOne('worktimegroup')) {\n            cols.push('worktimegroup');\n        }\n        if (this.get('Collector').testNeedsOne('products.midweek_holiday_pay')) {\n            cols.push('midweek_holiday_pay');\n            cols.push('midweek_holiday_length');\n        }\n        cols.push('type');\n        return cols;\n    }),\n    overtimeColumns: ['name', 'rules'],\n    translated_columns: Ember.computed(function () {\n        var col, i, len, ref, translated;\n        translated = [];\n        ref = this.get('overtimeColumns');\n        for (i = 0, len = ref.length; i < len; i++) {\n            col = ref[i];\n            translated.push('overtimerule.' + col);\n        }\n        return translated;\n    }),\n    ownOvertimeColumns: [],\n    worktimegroupfield: Ember.computed('worktimegroup', function () {\n        var field;\n        field = this.get('Collector').field('user', 'worktimegroup');\n        field.value = this.get('worktimegroup');\n        return field;\n    }),\n    calculateSum: Ember.computed('sortedWeekdays', function () {\n        var max_sum, sum, weekdays;\n        weekdays = this.get('sortedWeekdays');\n        sum = 0;\n        max_sum = 0;\n        weekdays.forEach((day) => {\n            if (day) {\n                sum += day.get('minutes');\n                return (max_sum += day.get('max_minutes'));\n            }\n        });\n        return EmberObject.create({\n            sum: sum,\n            max_sum: max_sum,\n        });\n    }),\n    calculateDayLength: Ember.computed(\n        'editingWeekRule.starttime',\n        'editingWeekRule.endtime',\n        function () {\n            var end, length, minutes, start;\n            if (this.get('editingWeekRule.endtime') && this.get('editingWeekRule.starttime')) {\n                end = moment(this.get('editingWeekRule.endtime'), 'HH:mm');\n                start = moment(this.get('editingWeekRule.starttime'), 'HH:mm');\n                length = moment.duration(end.diff(start));\n                minutes = length.asMinutes();\n                if (\n                    this.get('Collector').testNeedsOne('worktime') &&\n                    this.get('Collector').testNeedsOne('worktime.pause')\n                ) {\n                    return this.getPause().then((pause) => {\n                        if (pause) {\n                            minutes -= pause;\n                        }\n                        if (minutes > 0) {\n                            return this.set('editingWeekRule.minutes', minutes);\n                        } else {\n                            return this.set('editingWeekRule.minutes', 0);\n                        }\n                    });\n                } else {\n                    if (minutes > 0) {\n                        return this.set('editingWeekRule.minutes', minutes);\n                    } else {\n                        return this.set('editingWeekRule.minutes', 0);\n                    }\n                }\n            }\n        },\n    ),\n    getPause: function () {\n        var configs, setting_params, worktimegroup;\n        worktimegroup = this.get('editingWeekRule.worktimegroup.id');\n        setting_params = {\n            name: 'default_value',\n            value: 30,\n        };\n        if (this.get('editingWeekRule.worktimegroup.id')) {\n            setting_params.condition = '$userProfile->worktimegroup==' + worktimegroup;\n        }\n        configs = {\n            form: 'worktime',\n            field: 'pause',\n            setting: setting_params,\n        };\n        return this.get('store')\n            .findAll('form', {\n                reload: true,\n            })\n            .then((forms) => {\n                var field, form, setting;\n                form = forms.filterBy('external_type', configs.form);\n                field = form.get('firstObject.fields').filterBy('external_type', configs.field);\n                if (field.get('length') > 0) {\n                    setting = field\n                        .get('firstObject.settings')\n                        .filterBy('name', configs.setting.name);\n                    setting = setting.filter((item) => {\n                        var arr;\n                        if (worktimegroup) {\n                            if (!item.get('condition')) {\n                                return false;\n                            }\n                            arr = item.get('condition').split('==');\n                            return arr[1] === worktimegroup;\n                        } else {\n                            return item.get('condition') === '';\n                        }\n                    });\n                    if (setting.get('firstObject')) {\n                        return setting.get('firstObject').value;\n                    } else {\n                        configs.setting.field = field.get('firstObject');\n                        return this.get('store').createRecord(\n                            'form-field-setting',\n                            configs.setting,\n                        );\n                    }\n                } else {\n                    return false;\n                }\n            });\n    },\n    isDisabled: function (day) {\n        if (day === 'saturday') {\n            return this.fiveDayVacationWeekIsOn();\n        }\n        if (day === 'sunday') {\n            return true;\n        }\n        return false;\n    },\n    fiveDayVacationWeekIsOn: function (day) {\n        var mainSettingOn, setting, settingsPromise;\n        mainSettingOn = this.customerSettings.checkSetting('vacation_week_length');\n        if (!this.Collector.testNeedsOne('worktimegroup') || !this.worktimegroup || mainSettingOn) {\n            return mainSettingOn;\n        }\n        setting = '';\n        settingsPromise = this.get('ttapi')._get('/settings?worktimegroup=' + this.worktimegroup);\n        return settingsPromise.then((result) => {\n            var vacation_week_length;\n            vacation_week_length = result.findBy('key', 'vacation_week_length');\n            if (!vacation_week_length) {\n                return false;\n            }\n            if (vacation_week_length.value === 'off') {\n                return false;\n            }\n            return true;\n        });\n    },\n    actions: {\n        showDayRule: function (date, day) {\n            const isoWeekday = moment(date).isoWeekday() - 1; // use isoWeekday to get weekdays not affected by locale\n            var defaultDayLength, params;\n            // we create a new record if: \n            // 1. we are adding a new rule for the day OR\n            // 2. selected worktimegroup is different from the record's worktimegroup (this happens when there is already a \"general\" rule for the day and user has selected some worktimegroup)\n            if ((day && !Ember.get(day, 'own')) || (day && day.get('own') && this.get('worktimegroup') && !day.get('worktimegroup.content'))) {\n                params = {\n                    date: Ember.get(day, 'date'),\n                    minutes: Ember.get(day, 'minutes'),\n                    desc: Ember.get(day, 'desc'),\n                    own: true,\n                    midweek_holiday_pay: false,\n                    midweek_holiday_length: null,\n                    absence_minutes: null,\n                };\n                if (this.get('worktimegroup')) {\n                    params.worktimegroup = this.get('store').peekRecord(\n                        'worktimegroup',\n                        this.get('worktimegroup'),\n                    );\n                }\n                day = this.get('store').createRecord('workday-day', params);\n            } else if (day == null) {\n                params = {};\n                if (this.get('worktimegroup')) {\n                    params.worktimegroup = this.get('store').peekRecord(\n                        'worktimegroup',\n                        this.get('worktimegroup'),\n                    );\n                }\n                if (date) {\n                    params.date = date;\n                    defaultDayLength = Ember.get(this.get('sortedWeekdays')[isoWeekday], 'minutes');\n                    params.minutes = defaultDayLength;\n                    params.absence_minutes = Ember.get(\n                        this.get('sortedWeekdays')[isoWeekday],\n                        'absence_minutes',\n                    );\n                    if (this.get('Collector').testNeedsOne('products.midweek_holiday_pay')) {\n                        params.midweek_holiday_length = defaultDayLength;\n                        params.midwdeek_holiday_pay = true;\n                    }\n                }\n                day = this.get('store').createRecord('workday-day', params);\n            }\n            if (day.absence_minutes === null) {\n                day.absence_minutes = day.minutes;\n            }\n            return this.set('dayRule', day);\n        },\n        closeModal: function () {\n            var day;\n            day = this.get('dayRule');\n            day.rollbackAttributes();\n            return this.set('dayRule', false);\n        },\n        closeWeekModal: function () {\n            var day;\n            day = this.get('editingWeekRule');\n            day.rollbackAttributes();\n            return this.set('editingWeekRule', false);\n        },\n        editWeekRule: function (rule) {\n            var c, record, weekend, worktimegroup;\n            c = this.get('Collector');\n            record = false;\n            weekend = ['saturday', 'sunday'];\n            if (\n                !rule.get('own') ||\n                (rule.get('own') && this.get('worktimegroup') && !rule.get('worktimegroup.content'))\n            ) {\n                worktimegroup =\n                    c.testNeedsOne('worktimegroup') && this.get('worktimegroup')\n                        ? this.get('store').peekRecord('worktimegroup', this.get('worktimegroup'))\n                        : void 0;\n                record = this.get('store').createRecord('workday-week', {\n                    day: rule.get('day'),\n                    starttime: rule.get('starttime'),\n                    endtime: rule.get('endtime'),\n                    minutes: rule.get('minutes'),\n                    max_minutes: rule.get('max_minutes') || 0,\n                    absence_minutes:\n                        rule.absence_minutes === null && !weekend.includes(rule.day)\n                            ? rule.minutes\n                            : rule.absence_minutes,\n                    worktimegroup: worktimegroup,\n                    own: true,\n                    overtimerule: null,\n                });\n            }\n            if (rule.absence_minutes === null && !weekend.includes(rule.day)) {\n                rule.absence_minutes = rule.minutes;\n            }\n            this.set('selectedOvertimeRule', rule.get('overtimerule.id'));\n            this.set('editingWeekRule', record || rule);\n            return this.set('vacationIsDisabled', this.isDisabled(rule.day));\n        },\n        filterChanged: function (value, field) {\n            if (field === 'worktimegroup' && value) {\n                value = value.get('id');\n            }\n            return this.set(field, value);\n        },\n        setValue: function (field, value) {\n            this.set(field, value);\n            if (field.includes('starttime') || field.includes('endtime')) {\n                return this.calculateDayLength;\n            }\n        },\n        showOvertimeModal: function () {\n            var row;\n            row = this.get('store').createRecord('workdayOvertimeRule', {\n                text: '',\n                rules: [],\n            });\n            return this.set('editOvertimeRow', row);\n        },\n        closeOvertimeModal: function () {\n            this.set('editingOvertimeRule', false);\n            return this.set('addingOvertimeRule', false);\n        },\n        editRow: function (row) {\n            return this.set('editOvertimeRow', row);\n        },\n        saveOvertimeRule: function (rules) {\n            var row;\n            row = this.get('editOvertimeRow');\n            row.set('rules', JSON.stringify(rules));\n            return row.save().then(() => {\n                this.set('editOvertimeRow', null);\n                return this.send('refreshModel');\n            });\n        },\n        valueChanged: function (val) {\n            var rule, weekRule;\n            weekRule = this.get('editingWeekRule');\n            console.log(this.get('selectedOvertimeRule'));\n            if (this.get('selectedOvertimeRule')) {\n                rule = this.get('store').peekRecord(\n                    'workday-overtimeRule',\n                    this.get('selectedOvertimeRule'),\n                );\n                return weekRule.set('overtimerule', rule);\n            } else {\n                return weekRule.set('overtimerule', null);\n            }\n        },\n        changeYear: function (year) {\n            var newYearParams;\n            newYearParams = year + '-01-01_' + year + '-12-31';\n            return this.set('date', newYearParams);\n        },\n    },\n});\n\nexport default WorkdayCalendarController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/salary/workday-calendar/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorkdayCalendarRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nWorkdayCalendarRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    session: Ember.inject.service(),\n    queryParams: {\n        worktimegroup: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params.country = this.get('session.currentUser.company_info.country');\n        return Ember.RSVP.hash({\n            days: this.get('store').query('workday-day', params),\n            weeks: this.get('store').query('workday-week', params),\n            overtimeRules: this.get('store')\n                .query('workday-overtimeRule', params)\n                .then((rules) => {\n                    return rules.forEach((rule) => {\n                        var rulejson;\n                        if (typeof rule.get('rules') !== 'string' || !rule.get('rules')) {\n                            return;\n                        }\n                        rulejson = JSON.parse(rule.get('rules')).map((rule) => {\n                            if (rule.field && !this.Collector.fieldExists('worktime', rule.field)) {\n                                rule.field = null;\n                            }\n                            return rule;\n                        });\n                        return rule.set('rules', rulejson);\n                    });\n                }),\n        });\n    },\n    actions: {\n        save: function (type) {\n            var record;\n            record = this.get('controller.' + type);\n            if (record.get('isSaving')) {\n                return;\n            }\n            return record.save().then(() => {\n                this.refresh();\n                return this.set('controller.' + type, false);\n            });\n        },\n        removeRow: function (row) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    if (con) {\n                        return row.destroyRecord().then(() => {\n                            return this.refresh();\n                        });\n                    }\n                });\n        },\n        removeWeekRow: function (row) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    if (con) {\n                        return row.destroyRecord().then(() => {\n                            return this.refresh();\n                        });\n                    }\n                });\n        },\n        removeDayRow: function (row) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    if (con) {\n                        return row.destroyRecord().then(() => {\n                            this.set('controller.dayRule', false);\n                            return this.refresh();\n                        });\n                    }\n                });\n        },\n        refreshModel: function () {\n            return this.refresh();\n        },\n    },\n});\n\nexport default WorkdayCalendarRoute;\n","export default Ember.HTMLBars.template({\"id\":\"wOZvlIJD\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"rule\\\",\\\"day\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row workday-calendar-toprow\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"company_info\\\",\\\"country\\\"]],\\\"fi\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.generic_timetracker\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[28,\\\"t\\\",[\\\"click.help_workday_calendar_otta\\\"],null]],[10,\\\"target\\\",\\\"_blank\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"settings.products.integration_info_button\\\"],null]],[10,\\\"class\\\",\\\"info-button-row move move-Info workday-calendar-info-button\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"https://ohjeet.visma.fi/articles/#!visma-movenium/ty-p-iv-kalenteri\\\"],[10,\\\"target\\\",\\\"_blank\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"settings.products.integration_info_button\\\"],null]],[10,\\\"class\\\",\\\"info-button-row move move-Info workday-calendar-info-button\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktimegroup\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-5 col-lg-4\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.worktimegroup\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"worktimegroupfield\\\"]]],[[\\\"change\\\"],[\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"shorthand_explanation\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h3\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-StartAndStop\\\"],[8],[9],[0,\\\" = \\\"],[1,[28,\\\"t\\\",[\\\"workday_calendar.worktime_startEnd_icon_explanation\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"h3\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time\\\"],[8],[9],[0,\\\" = \\\"],[1,[28,\\\"t\\\",[\\\"workday_calendar.worktime_icon_explanation\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.absences\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Vacation\\\"],[8],[9],[0,\\\" = \\\"],[1,[28,\\\"t\\\",[\\\"workday_calendar.vacationtime_icon_explanation\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.midweek_holiday_pay\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"workday_calendar.midweek_holiday_pay_explanation\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"gui\\\",\\\"isBelowMd\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workday-week-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sortedWeekdays\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workday-week-day\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"workday-week-day-title\\\"],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"workday.calendar.week.\\\",[23,3,[\\\"day\\\"]]],null]],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workday-week-day-content\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"workday.worktime_hours\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-StartAndStop\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[23,3,[\\\"starttime\\\"]],[23,3,[\\\"endtime\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\" \\\"],[1,[23,3,[\\\"starttime\\\"]],false],[0,\\\" - \\\"],[1,[23,3,[\\\"endtime\\\"]],false],[0,\\\" \\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"workday.week.startend.notSet\\\"],null],false],[0,\\\" \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"format-minutes\\\",[[23,3,[\\\"minutes\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.overtime\\\",\\\"!salarytypev2\\\",\\\"!flag.new-overtime-settings\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"max_minutes\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time\\\"],[8],[9],[0,\\\" -\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"format-minutes\\\",[[23,3,[\\\"max_minutes\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showDailyOvertime\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h4\\\",true],[8],[1,[23,3,[\\\"overtimerule\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.absences\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"workday.vacation_hours\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"absence_minutes\\\"]],null],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"day\\\"]],\\\"sunday\\\"],null],[28,\\\"is-equal\\\",[[23,3,[\\\"day\\\"]],\\\"saturday\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Vacation\\\"],[8],[9],[0,\\\" -\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"format-minutes\\\",[[23,3,[\\\"minutes\\\"]],\\\"Vacation\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"format-minutes\\\",[[23,3,[\\\"absence_minutes\\\"]],\\\"Vacation\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"week-day-buttons\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h5\\\",true],[8],[4,\\\"if\\\",[[23,3,[\\\"own\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"workday.row_type.own\\\"],null],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"workday.row_type.default\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil pull-right\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"general.edit\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"editWeekRule\\\",[23,3,[]]]],[8],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[23,3,[\\\"own\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Delete\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"workday.rule.reset\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"removeWeekRow\\\",[23,3,[]]]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.overtime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workday-week-day workday-week-day-sum\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workday-week-day-title sum-content\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"workday.calendar.week_sum\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"format-minutes\\\",[[24,[\\\"calculateSum\\\",\\\"sum\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.salarytype_v2\\\",\\\"!flag.new-overtime-settings\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"workday.calendar.week_max_sum\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"format-minutes\\\",[[24,[\\\"calculateSum\\\",\\\"max_sum\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workday-days-container\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showDailyOvertime\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h1\\\",true],[10,\\\"class\\\",\\\"inline-block\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday_calendar.overtime_rules\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"standard-icon-popover\\\",null,[[\\\"icon\\\",\\\"text\\\"],[\\\"info\\\",[28,\\\"t\\\",[\\\"workday_calendar.overtime_rules.help\\\"],[[\\\"htmlSafe\\\"],[true]]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showOvertimeModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"workday_calendar.add_rule\\\"],null],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"workday-days-report\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive general-report report-forms\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtimerule.name\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"workday.overtime_rule\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"overtimeRules\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"rules\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"if\\\",[[23,2,[\\\"field\\\"]],[28,\\\"collector-field-name\\\",null,[[\\\"form\\\",\\\"field\\\"],[\\\"worktime\\\",[23,2,[\\\"field\\\"]]]]],\\\"- \\\"],null],false],[0,\\\": \\\"],[1,[23,2,[\\\"values\\\",\\\"from\\\"]],false],[0,\\\" -  \\\"],[1,[23,2,[\\\"values\\\",\\\"to\\\"]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-row-icon\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Delete pull-right\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.delete_rows\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"removeRow\\\",[23,1,[]]]],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil pull-right\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"general.edit\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"editRow\\\",[23,1,[]]]],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[5,\\\"workday-days\\\",[],[[\\\"@workdayDays\\\",\\\"@showDayRule\\\",\\\"@date\\\",\\\"@changeYear\\\"],[[23,0,[\\\"model\\\",\\\"days\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"showDayRule\\\"],null],[23,0,[\\\"date\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeYear\\\"],null]]]],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"dayRule\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"workday.add.rule\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.date\\\"],null],false],[9],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[0,\\\"        \\\"],[4,\\\"unless\\\",[[24,[\\\"dayRule\\\",\\\"date\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control add-fields\\\",[24,[\\\"dayRule\\\",\\\"date\\\"]]]]],false],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.minutes\\\"],null],false],[9],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[4,\\\"if\\\",[[28,\\\"is-empty\\\",[[24,[\\\"dayRule\\\",\\\"minutes\\\"]]],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[1,[28,\\\"fields/time-minutes\\\",null,[[\\\"value\\\",\\\"valueChanged\\\"],[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"dayRule\\\",\\\"minutes\\\"]],0],null],\\\"00:00\\\",[24,[\\\"dayRule\\\",\\\"minutes\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"dayRule.minutes\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.absences\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.vacation_minutes\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"fields/time-minutes\\\",null,[[\\\"value\\\",\\\"valueChanged\\\"],[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"dayRule\\\",\\\"absence_minutes\\\"]],0],null],\\\"00:00\\\",[24,[\\\"dayRule\\\",\\\"absence_minutes\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"dayRule.absence_minutes\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.desc\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"value\\\",\\\"class\\\"],[[24,[\\\"dayRule\\\",\\\"desc\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.midweek_holiday_pay\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.midweek_holiday_pay.active_toggle\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/fields/toggle-field\\\",null,[[\\\"toggled\\\"],[[24,[\\\"dayRule\\\",\\\"midweek_holiday_pay\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"dayRule\\\",\\\"midweek_holiday_pay\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.midweek_holiday_pay.minutes\\\"],null],false],[9],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"fields/time-minutes\\\",null,[[\\\"value\\\",\\\"valueChanged\\\"],[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"dayRule\\\",\\\"midweek_holiday_length\\\"]],0],null],\\\"00:00\\\",[24,[\\\"dayRule\\\",\\\"midweek_holiday_length\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"dayRule.midweek_holiday_length\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"dayRule\\\"]],\\\"own\\\"],null],\\\"col-xs-6\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-m-link btn-block btn-group \\\",[28,\\\"if\\\",[[24,[\\\"dayRule\\\",\\\"isSaving\\\"]],\\\"disabled\\\"],null]]]],[12,\\\"disabled\\\",[28,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"is-empty\\\",[[24,[\\\"dayRule\\\",\\\"minutes\\\"]]],null],[28,\\\"not\\\",[[24,[\\\"dayRule\\\",\\\"date\\\"]]],null]],null],true,false],null]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",\\\"dayRule\\\"]],[8],[4,\\\"if\\\",[[24,[\\\"dayRule\\\",\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"dayRule\\\"]],\\\"own\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger btn-block btn-group\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeDayRow\\\",[24,[\\\"dayRule\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.delete\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"editingWeekRule\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"workday.add.week_rule\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeWeekModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.starttime\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/fields/time-field\\\",null,[[\\\"_class\\\",\\\"value\\\",\\\"bubbleChange\\\"],[\\\"form-control add-fields\\\",[24,[\\\"editingWeekRule\\\",\\\"starttime\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"editingWeekRule.starttime\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.endtime\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/fields/time-field\\\",null,[[\\\"_class\\\",\\\"value\\\",\\\"bubbleChange\\\"],[\\\"form-control add-fields\\\",[24,[\\\"editingWeekRule\\\",\\\"endtime\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"editingWeekRule.endtime\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.minutes\\\"],null],false],[9],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"fields/time-minutes\\\",null,[[\\\"value\\\",\\\"valueChanged\\\"],[[24,[\\\"editingWeekRule\\\",\\\"minutes\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"editingWeekRule.minutes\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.overtime\\\",\\\"!salarytypev2\\\",\\\"!flag.new-overtime-settings\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.max_minutes\\\"],null],false],[9],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"fields/time-minutes\\\",null,[[\\\"value\\\",\\\"valueChanged\\\"],[[24,[\\\"editingWeekRule\\\",\\\"max_minutes\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"editingWeekRule.max_minutes\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.absences\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"await\\\",[[24,[\\\"vacationIsDisabled\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.vacation_minutes\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"fields/time-minutes\\\",null,[[\\\"value\\\",\\\"valueChanged\\\"],[[24,[\\\"editingWeekRule\\\",\\\"absence_minutes\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",\\\"editingWeekRule.absence_minutes\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"workday.vacationIsDisabled.\\\",[24,[\\\"editingWeekRule\\\",\\\"day\\\"]]],null]],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showDailyOvertime\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.overtime_rule\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"select-comp\\\",null,[[\\\"content\\\",\\\"promptTranslation\\\",\\\"value\\\",\\\"classes\\\",\\\"change\\\"],[[24,[\\\"model\\\",\\\"overtimeRules\\\"]],\\\"general.select_choose\\\",[24,[\\\"selectedOvertimeRule\\\"]],\\\"form-control\\\",[28,\\\"action\\\",[[23,0,[]],\\\"valueChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-m-link btn-block \\\",[28,\\\"if\\\",[[24,[\\\"editingWeekRule\\\",\\\"isSaving\\\"]],\\\"disabled\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",\\\"editingWeekRule\\\"]],[8],[4,\\\"if\\\",[[24,[\\\"editingWeekRule\\\",\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"editOvertimeRow\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"overtime.add.rule\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"editOvertimeRow\\\"]]],null],null],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtimerule.name\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\"],[\\\"form-control add-fields\\\",\\\"text\\\",[24,[\\\"editOvertimeRow\\\",\\\"name\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-setting-comp/overtime-setting\\\",null,[[\\\"save\\\",\\\"mandatoryfieldSelection\\\",\\\"customrules\\\"],[\\\"saveOvertimeRule\\\",true,[24,[\\\"editOvertimeRow\\\",\\\"rules\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/salary/workday-calendar/template.hbs\"}});","import { inject as service } from '@ember/service';\nimport Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst ServicesRoute = Route.extend(AuthenticatedRouteMixin, {\n    Collector: service('collector-service'),\n    tools: service(),\n\n    model() {\n        return this.Collector.ajax({ url: 'me?linkings' });\n    },\n\n    actions: {\n        changeService(user) {\n            return this.tools.change_service(user.username);\n        },\n    },\n});\n\nexport default ServicesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"358z3oFZ\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"service.change_service.title\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"service.change_service.text\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-offset-2 col-md-offset-3 col-lg-offset-4 col-sm-8 col-md-6 col-lg-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group text-center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"linkings\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"list-group-item link  \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"username\\\"]],[23,1,[\\\"username\\\"]]],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"changeService\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[23,1,[\\\"company\\\"]],false],[0,\\\" - \\\"],[7,\\\"small\\\",true],[8],[1,[23,1,[\\\"username\\\"]],false],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/services/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/activitylog/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DevelopmentActivitylogController;\n\nimport Ember from 'ember';\n\nimport { alias } from '@ember/object/computed';\n\nDevelopmentActivitylogController = Ember.Controller.extend({\n    content: alias('model'),\n    queryParams: ['owner', '_creator', 'action'],\n    userField: Ember.computed(function () {\n        var c, field;\n        c = this.get('Collector');\n        if (c.fieldExists('worktime', 'user')) {\n            field = c.field('worktime', 'user');\n        } else if (c.fieldExists('presence', 'user')) {\n            field = c.field('presence', 'user');\n        } else if (c.fieldExists('orientation', 'ori_user')) {\n            field = c.field('orientation', 'ori_user');\n        } else if (c.fieldExists('tr', 'user')) {\n            field = c.field('tr', 'user');\n        } else if (c.fieldExists('mvr', 'user')) {\n            field = c.field('mvr', 'user');\n        } else {\n            return null;\n        }\n        return field;\n    }),\n    translations: {\n        findAll: 'findAll',\n        insertRow: 'insertRow',\n        updateRow: 'updateRow',\n        rows: 'Rows',\n        owners: 'Owners',\n    },\n    ownerField: Ember.computed(function () {\n        return Object.assign({}, this.get('userField'));\n    }),\n    columns: Ember.computed(function () {\n        return ['timestamp', '_creator', 'action', 'form', 'rowids', 'owners'];\n    }),\n    pageCount: Ember.computed('content.meta.count', function () {\n        return Math.ceil(this.get('content.meta.count') / 25);\n    }),\n    historyModal: Ember.computed(function () {\n        return ['worktime', this.get('model.id'), 'history'];\n    }),\n    actions: {\n        changeOwner: function (owner) {\n            this.set('owner', owner != null ? owner.get('id') : '');\n            return false;\n        },\n        changeUser: function (_creator) {\n            this.set('_creator', _creator != null ? _creator.get('id') : '');\n            return false;\n        },\n        changeAction: function (action) {\n            this.set('action', action);\n            return false;\n        },\n    },\n});\n\nexport default DevelopmentActivitylogController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/activitylog/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DevelopmentActivitylogRoute;\n\nimport Ember from 'ember';\n\nDevelopmentActivitylogRoute = Ember.Route.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        owner: {\n            refreshModel: true,\n        },\n        _creator: {\n            refreshModel: true,\n        },\n        action: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var query;\n        query = {\n            limit: 25,\n            offset: params.page != null ? (params.page - 1) * 25 : 0,\n            order: 'timestamp-',\n        };\n        if (params.owner) {\n            query.owners = params.owner;\n        }\n        if (params._creator) {\n            query._creator = params._creator;\n        }\n        if (params.action) {\n            query.action = params.action;\n        }\n        return this.store.query('user_activity_log', query);\n    },\n});\n\nexport default DevelopmentActivitylogRoute;\n","export default Ember.HTMLBars.template({\"id\":\"+jayC4oB\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"tr.title.user\\\"],null],false],[0,\\\":\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"userField\\\"]]],[[\\\"change\\\",\\\"prompt\\\",\\\"value\\\"],[\\\"changeUser\\\",\\\"user\\\",[24,[\\\"user\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"settings.activitylog_action\\\"],null],false],[0,\\\":\\\\n        \\\"],[7,\\\"select\\\",true],[11,\\\"onChange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"changeAction\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[10,\\\"name\\\",\\\"action\\\"],[10,\\\"class\\\",\\\"form-control\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"option\\\",true],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[24,[\\\"action\\\"]],\\\"findAll\\\"],null]],[10,\\\"value\\\",\\\"findAll\\\"],[8],[1,[24,[\\\"translations\\\",\\\"findAll\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"option\\\",true],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[24,[\\\"action\\\"]],\\\"insertRow\\\"],null]],[10,\\\"value\\\",\\\"insertRow\\\"],[8],[1,[24,[\\\"translations\\\",\\\"insertRow\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"option\\\",true],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[24,[\\\"action\\\"]],\\\"updateRow\\\"],null]],[10,\\\"value\\\",\\\"updateRow\\\"],[8],[1,[24,[\\\"translations\\\",\\\"updateRow\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"project.owner\\\"],null],false],[0,\\\":\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"ownerField\\\"]]],[[\\\"change\\\",\\\"prompt\\\",\\\"value\\\"],[\\\"changeOwner\\\",\\\"owner\\\",[24,[\\\"owner\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive table-striped\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"date\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.title.user\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.activitylog_action\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"formeditor.form\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[24,[\\\"translations\\\",\\\"rows\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[24,[\\\"translations\\\",\\\"owners\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"timestamp\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"user\\\",\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"user\\\",\\\"firstname\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"action\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"form\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"rowids\\\",\\\"length\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"owners\\\",\\\"length\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"action\\\"]],\\\"updateRow\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[4,\\\"link-to\\\",null,[[\\\"query\\\"],[[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[28,\\\"query-helper\\\",[[23,1,[\\\"form\\\"]],[23,1,[\\\"rowids\\\",\\\"0\\\"]],\\\"history\\\"],null]]]]]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Search\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[25,[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/activitylog/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/billing/bill-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsBillingBillCompComponent;\n\nimport Ember from 'ember';\n\nimport exportFile from '../../../../mixins/export-file';\n\nSettingsBillingBillCompComponent = Ember.Component.extend(exportFile, {\n    intl: Ember.inject.service(),\n    billrows: Em.A([]),\n    showCurrency: null,\n    month: Ember.computed(function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n    last_month: Em.computed('month', function () {\n        return moment(this.get('month')).subtract(1, 'month').format('YYYY-MM-DD');\n    }),\n    billdate: Ember.computed('month', function () {\n        return moment(this.get('month')).subtract(1, 'month').endOf('month').format('L');\n    }),\n    getBillRows: Em.on('init', function () {\n        var promise;\n        promise = this.get('Collector').ttapi({\n            url: 'billing',\n            data: {\n                month: this.get('last_month'),\n            },\n        });\n        return promise.then((bills) => {\n            return this.set('billrows', bills);\n        });\n    }),\n    fullPrice: Em.computed('billrows', function () {\n        var currency, price;\n        price = 0;\n        currency = null;\n        this.get('billrows').forEach((item) => {\n            price += item.price * item.amount;\n            return (currency = this.currencyByCountry(item.country));\n        });\n        if (currency) {\n            this.set('showCurrency', currency);\n        }\n        return price;\n    }),\n    _billrows: Em.computed('billrows', function () {\n        return this.get('billrows').map((row) => {\n            row.currency = this.currencyByCountry(row.country);\n            row.formatted_snapshot = this.formatSnapshot(row.snapshot);\n            return row;\n        });\n    }),\n    currencyByCountry: function (country) {\n        switch (country) {\n            case 'se':\n                return 'sek';\n            case 'fi':\n                return 'eur';\n            default:\n                return 'eur';\n        }\n    },\n    formatSnapshot: function (snapshot_str) {\n        var days, intl, name, snapshot, str;\n        intl = this.get('intl');\n        snapshot = JSON.parse(snapshot_str);\n        str = '';\n        for (name in snapshot) {\n            days = snapshot[name];\n            if (!Ember.isArray(days)) {\n                continue;\n            }\n            str +=\n                '<b>' +\n                decodeURIComponent(name) +\n                '</b>: <code>' +\n                days.join(',') +\n                '</code>' +\n                intl.t('settings.billing.total') +\n                ': ' +\n                days.length +\n                '<br>';\n        }\n        return Ember.String.htmlSafe(str);\n    },\n    actions: {\n        export: function (rows) {\n            var csv;\n            csv = 'product;description;price;currency;amount';\n            rows.forEach((row) => {\n                csv +=\n                    '\\n' +\n                    this.get('intl').t('billing.products.title.' + row.customerproduct.name) +\n                    ';';\n                csv += row.description + ';';\n                csv += row.price + ';';\n                csv += row.currency + ';';\n                //csv += (row.campaign or \"\") + \";\"\n                return (csv += row.amount);\n            });\n            return this.exportFile(csv, 'bill', 'csv');\n        },\n    },\n});\n\nexport default SettingsBillingBillCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"YhDl+mfP\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"&default\\\"],\\\"statements\\\":[[14,2],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"_billrows\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-primary billing-panel\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing.bill\\\"],null],false],[0,\\\" \\\"],[1,[22,\\\"billdate\\\"],false],[0,\\\" - \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"currency\\\",[[24,[\\\"fullPrice\\\"]],[24,[\\\"showCurrency\\\"]]],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_billrows\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"billing.products.title.\\\",[23,1,[\\\"customerproduct\\\",\\\"name\\\"]]],null]],null],false],[0,\\\" - \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing.unit_price\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"currency\\\",[[23,1,[\\\"price\\\"]],[23,1,[\\\"currency\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"],[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"billing.amount\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"amount\\\"]],false],[9],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[23,1,[\\\"formatted_snapshot\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"export\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export\\\",[24,[\\\"_billrows\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.download\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"billing.no_bills_for\\\"],[[\\\"month\\\"],[[24,[\\\"billdate\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/billing/bill-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/billing/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsBillingController;\n\nimport Ember from 'ember';\n\nimport config from '../../../config/environment';\n\nSettingsBillingController = Ember.Controller.extend({\n    cdn: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Em.inject.service(),\n    month: Ember.computed(function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n    oldMonths: Em.computed('month', function () {\n        var i, j, month, months;\n        month = this.get('month');\n        months = [];\n        for (i = j = 1; j < 4; i = ++j) {\n            months.push(moment(month).subtract(i, 'month').format('YYYY-MM-DD'));\n        }\n        return months;\n    }),\n    terms_url: Em.computed(function () {\n        var cdn;\n        cdn = this.get('cdn');\n        switch (moment.locale()) {\n            case 'fi':\n                return config.termsAndConditions.fi;\n            case 'sv':\n            case 'se':\n                return config.termsAndConditions.se;\n            default:\n                return config.termsAndConditions.en;\n        }\n    }),\n    products: Em.computed(function () {\n        var billing_desc, c, products, t;\n        c = this.get('Collector');\n        t = this.get('intl');\n        products = c.get('products');\n        billing_desc = [];\n        products.forEach(function (product) {\n            if (\n                t.exists('billing.products.description.' + product) &&\n                t.exists('billing.products.title.' + product)\n            ) {\n                return billing_desc.push({\n                    desc: t.t('billing.products.description.' + product),\n                    name: t.t('billing.products.title.' + product),\n                });\n            }\n        });\n        return billing_desc;\n    }),\n    actions: {\n        showOldBills: function () {\n            this.set('showOldBills', true);\n            return false;\n        },\n    },\n});\n\nexport default SettingsBillingController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/billing/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsBillingRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSettingsBillingRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default SettingsBillingRoute;\n","export default Ember.HTMLBars.template({\"id\":\"jGfrTKpb\",\"block\":\"{\\\"symbols\\\":[\\\"oldmonth\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"settings/billing/bill-comp\\\",null,[[\\\"month\\\"],[[24,[\\\"month\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"showOldBills\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showOldBills\\\"]],[8],[1,[28,\\\"t\\\",[\\\"billing.show_old_bills\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"oldMonths\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"settings/billing/bill-comp\\\",null,[[\\\"month\\\"],[[23,1,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"billing.terms\\\"],null],false],[0,\\\" \\\"],[7,\\\"a\\\",true],[10,\\\"target\\\",\\\"_blank\\\"],[11,\\\"href\\\",[29,[[22,\\\"terms_url\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"register.terms_link\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/billing/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/company-profile/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CompanyProfileController;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nCompanyProfileController = Ember.Controller.extend({\n    cdn: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    admintool: Ember.inject.service(),\n    store: Ember.inject.service(),\n    application: Em.inject.controller(),\n    settingsController: Em.inject.controller('settings'),\n    notifications: Ember.inject.service(),\n    intl: Em.inject.service(),\n    getData: Em.on(\n        'init',\n        Em.observer('session.currentUser.partnerid', function () {\n            var promise;\n            if (\n                this.get('session.currentUser.partnerid') &&\n                parseInt(this.get('session.currentUser.userlevel')) === 5\n            ) {\n                // get billing-data\n                promise = this.get('admintool').ajax({\n                    url: 'billinginfo',\n                    method: 'get',\n                });\n                promise.then(\n                    (data) => {\n                        this.set('billingData', data);\n                        this.set('billingtype', data['billingtype']);\n                        this.set('editmode', true);\n                        return $('#' + data['billingtype']).addClass('in');\n                    },\n                    (reason) => {\n                        this.set('billingData', {});\n                        this.set('billingtype', 'email');\n                        return $('#email').addClass('in');\n                    },\n                );\n                // get address-data\n                promise = this.get('admintool').ajax({\n                    url: 'customer_info',\n                    method: 'get',\n                });\n                return promise.then((data) => {\n                    return this.set('customerData', data);\n                });\n            }\n        }),\n    ),\n    showAdminMode: Em.computed('application.impersonate', 'Ember.devModeOn', function () {\n        if (Ember.get(Ember, 'devModeOn')) {\n            return true;\n        }\n        if (this.get('application.impersonate')) {\n            return true;\n        }\n        return false;\n    }),\n    actions: {\n        change: function (field, value) {\n            return this.set(field, value);\n        },\n        refreshNeeded: function () {\n            this.get('settingsController').refreshNeeded();\n            return false;\n        },\n        updateLogo: function (img) {\n            //console.log img\n            if (this.get('logo.isDeleted')) {\n                this.set('logo', this.get('store').createRecord('logo'));\n            }\n            this.set('logo.logo', img);\n            this.set('logoImage', false);\n            this.set('saveButtonVisible', true);\n            return false;\n        },\n        //@set 'logoImage', img.get 'thumb'\n        saveLogo: function () {\n            if (this.get('logo.logo') === 'remove') {\n                return this.get('logo')\n                    .destroyRecord()\n                    .then(() => {\n                        //@get('dialogs').success 'logo removed successfully'\n                        return this.set('saveButtonVisible', false);\n                    });\n            } else {\n                return this.get('logo')\n                    .save()\n                    .then(() => {\n                        //@get('dialogs').success 'logo uploaded successfully'\n                        this.set('saveButtonVisible', false);\n                        return this.get('notifications').success(\n                            this.get('intl').t('billing_info.logo_saved'),\n                            {\n                                autoClear: true,\n                            },\n                        );\n                    });\n            }\n        },\n        //@set 'logoImage', data.get 'logo.thumb'\n        removeModal: function () {\n            return this.set('showBillingTypeSelection', false);\n        },\n    },\n});\n\nexport default CompanyProfileController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/company-profile/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CompanyProfileRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nCompanyProfileRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    model: function () {\n        return this.get('store').findAll('company-info');\n    },\n    activate: function () {\n        var c, controller;\n        c = this.get('Collector');\n        controller = this.controllerFor('settings/company-profile');\n        return this.get('store')\n            .findAll('logo')\n            .then((logo) => {\n                var currentLogo;\n                controller.set('logoField', {\n                    form: 'logo',\n                    name: 'logo',\n                    type: 'hdfile',\n                    features: {\n                        is_image: true,\n                    },\n                });\n                if (logo.get('firstObject')) {\n                    currentLogo = logo.get('firstObject');\n                    controller.set('logoImage', currentLogo.get('logo.thumb'));\n                    controller.set('logo', currentLogo);\n                    return (controller.get('logoField')['value'] = currentLogo.get('logo'));\n                } else {\n                    return controller.set('logo', this.get('store').createRecord('logo'));\n                }\n            });\n    },\n});\n\nexport default CompanyProfileRoute;\n","export default Ember.HTMLBars.template({\"id\":\"eCtMYx+f\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"company-profile\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content settings-profile-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.billing_info_header\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"billing-info\\\",null,[[\\\"invoicingAddress\\\",\\\"billingtype\\\",\\\"edit\\\",\\\"customerData\\\"],[[24,[\\\"billingData\\\"]],[24,[\\\"billingtype\\\"]],[24,[\\\"editmode\\\"]],[24,[\\\"customerData\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content settings-profile-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.logo_header\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"company-info-container\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"blockquote\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.logo_text\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"logoImage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"image\\\"],[8],[7,\\\"img\\\",true],[11,\\\"src\\\",[29,[[28,\\\"api-image\\\",[[24,[\\\"logoImage\\\"]]],null]]]],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"logoField\\\"]]],[[\\\"change\\\"],[\\\"updateLogo\\\"]]],false],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saveButtonVisible\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveLogo\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content settings-profile-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.address_info_header\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"address-info\\\",null,[[\\\"data\\\",\\\"billingData\\\",\\\"billingtype\\\"],[[24,[\\\"customerData\\\"]],[24,[\\\"billingData\\\"]],[24,[\\\"billingtype\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content settings-profile-item\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.company_info\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"company-info\\\",null,[[\\\"model\\\",\\\"refreshNeeded\\\",\\\"showAdminMode\\\"],[[24,[\\\"model\\\",\\\"firstObject\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"refreshNeeded\\\"],null],[24,[\\\"showAdminMode\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/company-profile/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsController;\n\nimport Ember from 'ember';\n\nimport config from '../../config';\n\nSettingsController = Ember.Controller.extend({\n    _refreshNeeded: false,\n    refreshNeeded: function () {\n        console.info('refresh needed');\n        return this.set('_refreshNeeded', true);\n    },\n});\n\nexport default SettingsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/forms/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsFormsController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport exportFile from '../../../mixins/export-file';\n\nimport collector from '../../../classes/collector';\n\nimport $ from 'jquery';\n\nSettingsFormsController = Ember.Controller.extend(exportFile, {\n    queryParams: ['adminMode'],\n    formJson: Ember.inject.service(),\n    session: Ember.inject.service(),\n    tools: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    settingsController: Em.inject.controller('settings'),\n    settingsFormsFormController: Em.inject.controller('settings.forms.form'),\n    application: Em.inject.controller(),\n    dialogs: Ember.inject.service(),\n    ttapi2: Ember.inject.service(),\n    intl: Em.inject.service(),\n    modelCreator: Ember.inject.service(),\n    adminMode: false,\n    tt3Service: Ember.computed(function () {\n        return collector.get('tt3flag');\n    }),\n    dropdown_options: Em.computed('model', 'model.[]', 'adminMode', function () {\n        var acceptedForms, ret;\n        ret = [];\n        acceptedForms = [\n            'user',\n            'project',\n            'employer',\n            'worktime',\n            'task',\n            'abcense',\n            'group',\n            'orientation',\n            'projectfile',\n            'diary',\n            'worktask',\n            'site_safety_observation',\n            'trnotice',\n            'tooltype',\n        ];\n        this.get('model').forEach((form) => {\n            var ref;\n            if (\n                ((ref = form.get('external_type')), indexOf.call(acceptedForms, ref) >= 0) ||\n                this.get('adminMode')\n            ) {\n                return ret.push({\n                    id: form.get('id'),\n                    name:\n                        form.get('translatedName') +\n                        (this.get('adminMode') ? ' (' + form.get('external_type') + ')' : ''),\n                });\n            }\n        });\n        return ret;\n    }),\n    showAdminMode: Em.computed('application.impersonate', 'Ember.devModeOn', function () {\n        if (Ember.get(Ember, 'devModeOn')) {\n            return true;\n        }\n        if (this.get('application.impersonate')) {\n            return true;\n        }\n        return false;\n    }),\n    callImportForm: function (json) {\n        return this.get('formJson')\n            .import(JSON.parse(json))\n            .then((something_was_added) => {\n                if (!something_was_added) {\n                    return;\n                }\n                this.get('modelCreator')\n                    .createEmberModels()\n                    .then(() => {\n                        return this.get('application').notifyPropertyChange('sideMenus');\n                    });\n                return this.get('settingsController').refreshNeeded();\n            });\n    },\n    logs: Ember.computed('adminMode', 'form_id', function () {\n        if (this.get('adminMode')) {\n            return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n                promise: new Ember.RSVP.Promise((resolve) => {\n                    return this.get('ttapi2')\n                        ._get('getFormActivity', {\n                            date:\n                                moment().subtract(1, 'year').format('YYYY-MM-DD') +\n                                '_' +\n                                moment().format('YYYY-MM-DD'),\n                            form: this.get('form_id'),\n                        })\n                        .then((back) => {\n                            return resolve(back);\n                        });\n                }),\n            });\n        }\n    }),\n    actions: {\n        formChanged: function (formid) {\n            if (!formid) {\n                return this.transitionToRoute('settings.forms');\n            } else {\n                return this.transitionToRoute('settings.forms.form', formid);\n            }\n        },\n        exportForm: function () {\n            var form, json_string;\n            form = this.store.peekRecord('form', this.get('form_id'));\n            json_string = this.get('formJson').exportForm(form.get('external_type'));\n            if (json_string) {\n                return this.exportFile(JSON.stringify(json_string), 'export', 'json');\n            }\n        },\n        importForm: function () {\n            return $('#importFormFileInput').click();\n        },\n        createForm: function () {\n            var form, name;\n            name = prompt('Please enter form name');\n            if (name) {\n                form = this.store.createRecord('form', {\n                    name: name,\n                    external_type: this.get('tools').computerizeHumanInput(name),\n                });\n                return form.save().then(() => {\n                    this.set('model', this.store.peekAll('form'));\n                    return this.notifyPropertyChange('dropdown_options');\n                });\n            }\n        },\n        //@transitionToRoute 'settings.forms.form',\n        //    form: id\n        removeForm: function () {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('settings.forms.confirm_remove'))\n                .then((con) => {\n                    var form;\n                    if (con) {\n                        form = this.get('store').peekRecord('form', this.get('form_id'));\n                        return form\n                            .destroyRecord()\n                            .then(() => {\n                                this.get('settingsController').refreshNeeded();\n                                this.get('notifications').success(\n                                    this.get('intl').t('settings.forms.remove_success'),\n                                    {\n                                        autoClear: true,\n                                    },\n                                );\n                                this.set('form_id', null);\n                                return this.transitionToRoute('settings.forms');\n                            })\n                            .catch(e)(() => {\n                            return this.get('notifications').error(\n                                this.get('intl').t('settings.forms.remove_fail'),\n                                {\n                                    autoClear: false,\n                                },\n                            );\n                        });\n                    }\n                });\n        },\n        upload: function (evt) {\n            var input, reader;\n            input = evt.target;\n            if (input.files && input.files[0]) {\n                reader = new FileReader();\n                reader.onload = (e) => {\n                    var data;\n                    data = e.target.result;\n                    this.callImportForm(data);\n                    return this.set('selectedFile', null);\n                };\n                return reader.readAsText(input.files[0]);\n            }\n        },\n    },\n});\n\nexport default SettingsFormsController;\n","import Component from '@ember/component';\nimport { computed, set, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n    tagName: 'table',\n\n    mappedLogs: computed('logs', function () {\n        let logs = get(this, 'logs.content');\n\n        let mapLogs = logs.map((log) => {\n            if (log.body) {\n                Object.values(log.body).map((values) => {\n                    return this.modifiedData(log, values);\n                });\n            }\n            return log;\n        });\n        return mapLogs;\n    }),\n\n    init() {\n        this._super();\n        this.showData = {};\n    },\n\n    actions: {\n        toggle(log) {\n            if (!get(this, 'showData.' + log._id)) {\n                set(this, 'showData.' + log._id, true);\n            } else {\n                set(this, 'showData.' + log._id, false);\n            }\n        },\n    },\n\n    modifiedData(log, values) {\n        if (Object.keys(log.body)[0] === 'formFieldSetting' && values.field) {\n            values.field_info = this.store.peekRecord('form-field', values.field);\n        } else {\n            values.placeholder = values.external_type ? values.external_type : values.name;\n        }\n        return values;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"yAEokiH9\",\"block\":\"{\\\"symbols\\\":[\\\"formLog\\\",\\\"values\\\",\\\"settingName\\\",\\\"ext\\\",\\\"name\\\",\\\"value\\\",\\\"key\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"logs\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loading-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"forms.activitylog.action\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"forms.activitylog.timestamp\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"forms.activitylog.user\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"forms.activitylog.info\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"mappedLogs\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"toggle\\\",[23,1,[]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"action\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"timestamp\\\"]],\\\"DD.MM.YYYY HH:mm\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"if\\\",[[23,1,[\\\"impersonate\\\"]],[23,1,[\\\"impersonate\\\",\\\"username\\\"]],[23,1,[\\\"user\\\"]]],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[23,1,[\\\"body\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"showData\\\"]],[23,1,[\\\"_id\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[23,2,[]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,7,[]],\\\"placeholder\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[23,7,[]],false],[9],[0,\\\" : \\\"],[1,[28,\\\"if\\\",[[23,6,[\\\"external_type\\\"]],[23,6,[\\\"external_type\\\"]],[23,6,[]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[6,7]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"with\\\",[[23,2,[\\\"field_info\\\",\\\"external_type\\\"]]],null,{\\\"statements\\\":[[4,\\\"with\\\",[[23,2,[\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"forms.activitylog.setting\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[23,5,[]],false],[0,\\\" / \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"forms.activitylog.field\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[4]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[23,2,[\\\"placeholder\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[2,3]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"showData\\\"]],[23,1,[\\\"_id\\\"]]],null],\\\"move move-SortUp\\\",\\\"move move-SortDown\\\"],null]],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/forms/form-activity-log/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/forms/form/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsFormsFormController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collector from 'tt4/classes/collector';\n\nSettingsFormsFormController = Ember.Controller.extend({\n    session: Em.inject.service(),\n    dialogs: Ember.inject.service(),\n    error: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Em.inject.service(),\n    settingsController: Em.inject.controller('settings'),\n    formFieldController: Ember.inject.controller('settings.forms.form.field'),\n    formsController: Ember.inject.controller('settings.forms'),\n    modelCreator: Ember.inject.service('model-creator'),\n    adminMode: Ember.computed.alias('formsController.adminMode'),\n    selectedField: Ember.computed('formFieldController.field', function () {\n        return this.get('formFieldController.field');\n    }),\n    fieldController: Em.inject.controller('settings.forms.form.field'),\n    hasCCFunction: Ember.computed('filteredFormSettings.[]', function () {\n        return this.get('filteredFormSettings').filterBy('value', 'ccfunctions').get('length') > 0;\n    }),\n    ccfunctionload: Ember.computed('model.form', function () {\n        return this.get('Collector')\n            .ttapi({\n                url: 'ccfunctions/functions',\n                dataType: 'text',\n                data: {\n                    form: this.get('model.form.external_type'),\n                },\n            })\n            .then((data) => {\n                return this.set('ccfunctionvalue', data);\n            });\n    }),\n    filteredFields: Em.computed(\n        'model.fields',\n        'model.fields.@each.nro',\n        'model.fields.[]',\n        'model.form',\n        'adminMode',\n        'model.fields.@each.removed',\n        function () {\n            var fields, hideWithExternal, hideWithSetting, hideWithType;\n            hideWithSetting = ['hide', 'hidden', 'hide_tt4'];\n            hideWithType = ['device', 'rowlink', 'row_linker'];\n            hideWithExternal = [''];\n            if (!this.get('model.fields')) {\n                return [];\n            }\n            fields = this.get('model.fields')\n                .filterBy('form.id', this.get('model.form.id'))\n                .sortBy('nro');\n            if (fields) {\n                return fields.filter((field) => {\n                    var ref, ref1, ret;\n                    if (field.get('removed')) {\n                        return;\n                    }\n                    ret = true;\n                    if (\n                        ((ref = field.get('external_type')),\n                        indexOf.call(hideWithExternal, ref) >= 0)\n                    ) {\n                        ret = false;\n                    }\n                    if (((ref1 = field.get('type')), indexOf.call(hideWithType, ref1) >= 0)) {\n                        ret = false;\n                    }\n                    field.get('settings').forEach(function (setting) {\n                        var ref2;\n                        if (\n                            ((ref2 = setting.get('name')), indexOf.call(hideWithSetting, ref2) >= 0)\n                        ) {\n                            // show this field if hide-setting is object (it is conditionally hidden, so it seems a good idea to show this field)\n                            if (\n                                setting.get('value').indexOf('[') === -1 &&\n                                !setting.condition.includes('worktimegroup') &&\n                                setting.get('name') === 'hide'\n                            ) {\n                                return (ret = false);\n                            }\n                        }\n                    });\n                    if (this.get('adminMode')) {\n                        ret = true;\n                    }\n                    return ret;\n                });\n            }\n        },\n    ),\n    filteredFormSettings: Ember.computed('model.settings', 'model.settings.[]', function () {\n        return this.get('model.settings').filterBy('form.id', this.get('model.form.id'));\n    }),\n    filteredFieldSettings: Ember.computed(\n        'filteredFields',\n        'filteredFields.[]',\n        'model.fieldSettings.[]',\n        function () {\n            var fieldIds;\n            fieldIds = this.get('filteredFields').mapBy('id');\n            return this.get('model.fieldSettings').filter((setting) => {\n                var ref;\n                return (ref = setting.get('field.id')), indexOf.call(fieldIds, ref) >= 0;\n            });\n        },\n    ),\n    unsavedChanges: Em.computed(\n        'filteredFormSettings.@each.hasDirtyAttributes',\n        'filteredFieldSettings.@each.hasDirtyAttributes',\n        'filteredFields.@each.hasDirtyAttributes',\n        'model.form.hasDirtyAttributes',\n        function () {\n            if (this.get('model.form.hasDirtyAttributes')) {\n                return true;\n            }\n            if (!this.get('model.fields')) {\n                return;\n            }\n            if (this.get('filteredFields').filterBy('hasDirtyAttributes').length !== 0) {\n                return true;\n            }\n            if (this.get('filteredFormSettings').filterBy('hasDirtyAttributes').length !== 0) {\n                return true;\n            }\n            if (this.get('filteredFieldSettings').filterBy('hasDirtyAttributes').length !== 0) {\n                return true;\n            }\n        },\n    ),\n    dirtyFields: Em.computed('model.@each.hasDirtyAttributes', function () {\n        return this.get('model.fields').filterBy('hasDirtyAttributes');\n    }),\n    generateExternalType: function (name) {\n        if (!name) {\n            name = Math.random().toString(36).substring(10);\n        }\n        name = name.toString();\n        name = name.underscore();\n        name = name.replace(/[^\\w\\s]/gi, '');\n        name = name.substr(0, 20);\n        name = this.checkDuplicates(name);\n        name = 'addon_' + name;\n        return name;\n    },\n    checkDuplicates: function (name) {\n        var ret_name;\n        ret_name = null;\n        this.get('model.fields').forEach(function (field) {\n            if (field.get('external_type') === 'addon_' + name) {\n                return (ret_name = name + Math.floor(Math.random() * 10 + 1).toString());\n            }\n        });\n        if (ret_name) {\n            return this.checkDuplicates(ret_name);\n        }\n        return name;\n    },\n    saveField: function (field) {\n        var isNew;\n        isNew = false;\n        if (field.get('isNew')) {\n            field.set('external_type', this.generateExternalType(field.get('name')));\n            isNew = true;\n        }\n        return field.save().then(() => {\n            if (isNew) {\n                return this.transitionToRoute('settings.forms.form.field', field.get('id'));\n            }\n        });\n    },\n    saveDirtyForm: function () {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var form;\n            form = this.get('model.form');\n            if (this.get('model.form.hasDirtyAttributes')) {\n                return this.get('model.form').save().then(resolve, reject);\n            } else {\n                return resolve();\n            }\n        });\n    },\n    validateRecord: function (type, record) {\n        var name;\n        if (type === 'filteredFields') {\n            name = record.get('name');\n            if (name === '' || name === void 0) {\n                throw this.get('intl').t('form.editor.no_empty_names');\n            }\n        }\n    },\n    saveDirtyRecords: function (type) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var promises;\n            promises = [];\n            this.get(type).forEach((record) => {\n                this.validateRecord(type, record);\n                if (record.get('hasDirtyAttributes')) {\n                    return promises.push(record.save());\n                }\n            });\n            return Ember.RSVP.Promise.all(promises).then(resolve, reject);\n        });\n    },\n    formSettingOptions: [\n        {\n            name: 'access_denied',\n            value: 'true',\n        },\n        {\n            name: 'hide_addrow',\n            value: 'true',\n        },\n        {\n            name: 'hide_edit',\n            value: 'true',\n        },\n        {\n            name: 'hide_remove',\n            value: 'true',\n        },\n    ],\n    tt3ServiceAndDevMode: Ember.computed('Ember.devModeOn', function () {\n        if (Ember.get(Ember, 'devModeOn') && collector.get('tt3flag')) {\n            return true;\n        }\n    }),\n    actions: {\n        saveFields: function () {\n            this.set('state', 'saving');\n            return this.saveDirtyForm().then(() => {\n                return this.saveDirtyRecords('filteredFields')\n                    .then(() => {\n                        return this.saveDirtyRecords('filteredFormSettings').then(() => {\n                            return this.saveDirtyRecords('filteredFieldSettings').then(() => {\n                                this.get('settingsController').refreshNeeded();\n                                return this.get('modelCreator')\n                                    .createEmberModels()\n                                    .then(() => {\n                                        return this.set('state', 'clean');\n                                    });\n                            });\n                        });\n                    })\n                    .catch((reason) => {\n                        this.set('state', null);\n                        return this.get('error').notify(reason);\n                    });\n            });\n        },\n        addField: function () {\n            var external_type, field, nro;\n            nro = this.get('filteredFields.lastObject.nro');\n            if (!nro) {\n                nro = 1;\n            }\n            external_type = 'addon_' + Math.floor(Math.random() * 10000 + 1);\n            field = this.store.createRecord('form-field', {\n                form: this.get('model.form'),\n                nro: ++nro,\n                type: 'textbox',\n                external_type: external_type,\n            });\n            return this.transitionToRoute('settings.forms.form.field', external_type);\n        },\n        toggleShowFormInfo: function () {\n            this.set('showFormInfo', !this.get('showFormInfo'));\n            return false;\n        },\n        removeField: function (field) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('form.editor.remove_field'))\n                .then((con) => {\n                    if (con) {\n                        return field.destroyRecord().then(() => {\n                            this.get('store').unloadRecord(field);\n                            return this.transitionToRoute(\n                                'settings.forms.form',\n                                this.get('model.form.id'),\n                            );\n                        });\n                    }\n                });\n        },\n        addSetting: function (option) {\n            var values;\n            this.set('clearAddSetting', true);\n            if (option === 'custom') {\n                values = {};\n            } else {\n                values = this.get('formSettingOptions').findBy('name', option);\n            }\n            values.form = this.get('model.form');\n            return this.store.createRecord('form-setting', values);\n        },\n        reorderFields: function (itemModels, draggedModel) {\n            var i;\n            i = 1;\n            return itemModels.forEach(function (item) {\n                if (item.get('nro') > i) {\n                    // don't edit nro's when its not needed\n                    i = item.get('nro');\n                }\n                item.set('nro', i);\n                return i++;\n            });\n        },\n        //@set(\"model.fields\", itemModels.sortBy('nro'))\n        saveCCFunction: function () {\n            this.set('showCCSave', false);\n            return this.get('Collector').ttapi({\n                url: 'ccfunctions/functions',\n                method: 'post',\n                data: {\n                    form: this.get('model.form.external_type'),\n                    function: this.get('ccfunctionvalue'),\n                },\n            });\n        },\n        toggleSave: function () {\n            return this.set('showCCSave', true);\n        },\n        addCCFunctions: function () {\n            return this.get('store')\n                .createRecord('form-setting', {\n                    name: 'assigned_function',\n                    value: 'ccfunctions',\n                    form: this.get('model.form'),\n                })\n                .save();\n        },\n    },\n});\n\nexport default SettingsFormsFormController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/forms/form/field/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsFormsFormFieldController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport { t } from 'ember-intl';\n\nimport { isPresent } from '@ember/utils';\n\nSettingsFormsFormFieldController = Ember.Controller.extend({\n    formController: Em.inject.controller('settings.forms.form'),\n    formsController: Ember.inject.controller('settings.forms'),\n    tools: Ember.inject.service(),\n    intl: Em.inject.service(),\n    adminMode: Ember.computed.alias('formsController.adminMode'),\n    fieldTypes: Em.computed('intl', 'adminMode', function () {\n        var types;\n        types = [\n            {\n                id: 'textbox',\n                name: this.get('intl').t('field.type.textbox'),\n            },\n            {\n                id: 'textarea_varchar',\n                name: this.get('intl').t('field.type.textarea_varchar'),\n            },\n            {\n                id: 'number',\n                name: this.get('intl').t('field.type.number'),\n            },\n            {\n                id: 'date',\n                name: this.get('intl').t('field.type.date'),\n            },\n            {\n                //{id: \"dropdown_options\", name: @get('intl').t(\"field.type.dropdown_options\")}\n                id: 'dropdown_values',\n                name: this.get('intl').t('field.type.dropdown_values'),\n            },\n            {\n                id: 'hours',\n                name: this.get('intl').t('field.type.hours'),\n            },\n            {\n                //{id: \"price\", name: @get('intl').t(\"field.type.price\")}\n                //{id: \"big_price\", name: @get('intl').t(\"field.type.big_price\")}\n                id: 'decimal',\n                name: this.get('intl').t('field.type.decimal'),\n            },\n            {\n                id: 'checkbox',\n                name: this.get('intl').t('field.type.checkbox'),\n            },\n            {\n                id: 'hdfile',\n                name: this.get('intl').t('field.type.hdfile'),\n            },\n            {\n                id: 'signature',\n                name: this.get('intl').t('field.type.signature'),\n            },\n            {\n                id: 'checkboxgroup',\n                name: this.get('intl').t('field.type.checkboxgroup'),\n            },\n            {\n                id: 'weather',\n                name: this.get('intl').t('field.type.weather'),\n            },\n        ];\n        if (this.get('adminMode')) {\n            types.push({\n                id: 'database',\n                name: this.get('intl').t('field.type.database'),\n            });\n            types.push({\n                id: 'timerlink',\n                name: this.get('intl').t('field.type.timerlink'),\n            });\n            types.push({\n                id: 'datetime',\n                name: this.get('intl').t('field.type.datetime'),\n            });\n            types.push({\n                id: 'status',\n                name: this.get('intl').t('field.type.status'),\n            });\n            types.push({\n                id: 'databasearray',\n                name: this.get('intl').t('field.type.databasearray'),\n            });\n            types.push({\n                id: 'multiselect',\n                name: this.get('intl').t('field.type.multiselect'),\n            });\n            types.push({\n                id: 'time_new',\n                name: this.get('intl').t('field.type.time_new'),\n            });\n        }\n        return types;\n    }),\n    fieldSelectorFields: ['database', 'databasearray', 'timerlink', 'multiselect'],\n    field: Ember.computed.alias('model.field'),\n    filteredSettings: Em.computed('model.settings.[]', function () {\n        return this.get('model.settings').filterBy('field.id', this.get('model.field.id'));\n    }),\n    nameDisabled: Ember.computed('model.field', function () {\n        if (this.get('adminMode')) {\n            return false;\n        }\n        return (\n            this.get('model.field.name') &&\n            this.get('model.field.name').substring(0, 5) === '$lang' &&\n            this.get('model.field.name') !== '$lang(10)'\n        );\n    }),\n    showRawOptions: Ember.computed('model.field', function () {\n        var dropdowns, field, ref;\n        field = this.get('field');\n        dropdowns = [\n            'dropdown_values',\n            'dropdown_userlevel',\n            'dropdown_options',\n            'dropdown_language',\n            'checkboxgroup',\n        ];\n        if (!this.get('adminMode')) {\n            return false;\n        }\n        if (((ref = field.get('type')), indexOf.call(dropdowns, ref) >= 0)) {\n            return true;\n        }\n    }),\n    /*\n  typeObserver: Em.observer('field.type', ->\n      type = @get('field.type')\n      if (type == 'dropdown_options' || type == 'checkboxgroup') and !@get('field.options')\n          @set('field.options', \"\")\n      else if type == 'hdfile'\n              @set('field.hdfile', true)\n          else\n              @set('field.hdfile', false)\n  )\n\n  */\n    options: Em.computed('field.options', {\n        set: function (key, value) {\n            return (this._value = value);\n        },\n        get: function () {\n            var EmberOptions,\n                dropdowns,\n                field,\n                fieldString,\n                formatOption,\n                i,\n                len,\n                name,\n                option,\n                options,\n                ref,\n                splitOption;\n            if (this._value) {\n                return this._value;\n            }\n            field = this.get('field');\n            dropdowns = [\n                'dropdown_values',\n                'dropdown_userlevel',\n                'dropdown_options',\n                'dropdown_language',\n                'checkboxgroup',\n            ];\n            if (((ref = field.get('type')), indexOf.call(dropdowns, ref) < 0)) {\n                return;\n            }\n            fieldString = field.get('form.external_type') + '.' + field.get('external_type');\n            if (field.get('options') === void 0) {\n                field.set('options', '');\n            }\n            options = field.get('options').split('\\n');\n            EmberOptions = Em.A([]);\n            for (i = 0, len = options.length; i < len; i++) {\n                option = options[i];\n                if (field.get('type') === 'dropdown_options') {\n                    EmberOptions.pushObject(option);\n                } else {\n                    splitOption = option.split(';');\n                    formatOption = {\n                        id: splitOption[0],\n                    };\n                    if (field.get('own') || isPresent(splitOption[1])) {\n                        formatOption.name = splitOption[1];\n                    } else {\n                        name = this.get('intl').t(fieldString + '.' + splitOption[0]);\n                        formatOption.name = name;\n                    }\n                    EmberOptions.pushObject(formatOption);\n                }\n            }\n            return EmberOptions;\n        },\n    }),\n    settableSettings: Ember.computed(\n        'field.type',\n        'filteredSettings.[]',\n        'filteredSettings.@each.isDeleted',\n        function () {\n            var settableSettings;\n            settableSettings = ['mandatory', 'stashed'];\n            if (['checkbox', 'checkboxgroup'].includes(this.get('field.type'))) {\n                settableSettings.splice(settableSettings.indexOf('mandatory'), 1);\n            }\n            if (this.get('field.type') === 'hdfile') {\n                settableSettings.push('is_image');\n            }\n            return (settableSettings = settableSettings.map((settingName) => {\n                var settingRecord;\n                settingRecord = this.get('filteredSettings').find((record) => {\n                    return (\n                        record.get('name') === settingName &&\n                        record.get('value') === 'true' &&\n                        Ember.isEmpty(record.get('userlevel')) &&\n                        Ember.isEmpty(record.get('conditions'))\n                    );\n                });\n                return {\n                    name: settingName,\n                    on: settingRecord != null && !settingRecord.get('isDeleted'),\n                    record: settingRecord,\n                };\n            }));\n        },\n    ),\n    mandatory: Em.computed.alias('field.mandatory'),\n    stashed: Em.computed.alias('field.stashed'),\n    hdfile: Em.computed.alias('field.hdfile'),\n    disabled: Em.computed.alias('field.isEditable'),\n    dirtySettings: Em.A([]),\n    hasDirtySettings: Em.computed.notEmpty('dirtySettings'),\n    forms: Ember.computed(function () {\n        return this.store.peekAll('form');\n    }),\n    databaseFieldSelections: Em.computed('field.id', 'selectedForm', function () {\n        var allObjects, firstObject, firstOption, formExternal_type, options, typesWhitelist;\n        if (this.get('selectedForm')) {\n            formExternal_type = this.get('selectedForm');\n        } else {\n            if (Ember.isEmpty(this.get('field.options'))) {\n                return [];\n            }\n            options = this.get('field.options').split('\\n');\n            firstOption = options[0];\n            if (!firstOption) {\n                return Em.A([]);\n            }\n            firstObject = this.store.peekRecord('form-field', firstOption);\n            if (!firstObject) {\n                return [];\n            }\n            formExternal_type = firstObject.get('form.external_type');\n        }\n        typesWhitelist = [\n            'textbox',\n            'number',\n            'dropdown_options',\n            'dropdown_values',\n            'hdfile',\n            'datetime',\n            'hours',\n        ];\n        if (this.get('field.type') === 'databasearray') {\n            typesWhitelist.push('database');\n        }\n        allObjects = this.store.peekAll('form-field').filter(function (item) {\n            var ref;\n            return (\n                item.get('form.external_type') === formExternal_type &&\n                !item.get('features.hide') &&\n                ((ref = item.get('type')), indexOf.call(typesWhitelist, ref) >= 0)\n            );\n        });\n        return allObjects.map((item) => {\n            var name;\n            if (item.get('name') === '$lang(10)') {\n                name = this.get('intl').t(formExternal_type + '.' + item.get('external_type'));\n                if (name.string != null) {\n                    name = name.string;\n                }\n            } else {\n                name = item.get('name');\n            }\n            return Ember.Object.create({\n                id: item.get('id'),\n                name: name.substring(0, 30),\n            });\n        });\n    }),\n    databaseFieldSelectionValues: null,\n    observeDatabaseFieldSelectionValues: Em.observer('databaseFieldSelectionValues', function () {\n        var options, ref;\n        if (!this.get('fieldSelectorFields').includes(this.get('field.type'))) {\n            return;\n        }\n        options = this.get('databaseFieldSelectionValues');\n        if (options.length > 0) {\n            return this.set('field.options', options.join('\\n'));\n        }\n    }),\n    initDatabaseFieldSelectionValues: Em.observer('field.id', function () {\n        if (!this.get('field.options')) {\n            return;\n        }\n        return this.set(\n            'databaseFieldSelectionValues',\n            this.get('field.options')\n                .split('\\n')\n                .map(function (item) {\n                    return item.trim();\n                }),\n        );\n    }),\n    formFieldSettingOptions: [\n        {\n            name: 'mandatory',\n            value: 'true',\n        },\n        {\n            name: 'hide_column',\n            value: 'true',\n        },\n        {\n            name: 'hide',\n            value: 'true',\n        },\n        {\n            name: 'validate_check',\n        },\n        {\n            name: 'hide_filter',\n            value: 'true',\n        },\n        {\n            name: 'filter',\n            value: '$userProfile->primary_key',\n        },\n        {\n            name: 'set',\n            value: '$userProfile->primary_key',\n        },\n        {\n            name: 'disabled',\n            value: 'true',\n        },\n        {\n            name: 'default_value',\n        },\n    ],\n    selectedWorktimegroups: Em.computed(\n        'field.type',\n        'filteredSettings.@each.condition',\n        'filteredSettings.@each.isDeleted',\n        function () {\n            var groups;\n            groups = [];\n            this.filteredSettings.forEach((setting) => {\n                if (\n                    setting.name === 'hide' &&\n                    setting.condition &&\n                    setting.condition.includes('worktimegroup') &&\n                    !setting.isDeleted\n                ) {\n                    return groups.push(\n                        this.worktimegroups.findBy('id', setting.condition.split('==')[1]),\n                    );\n                }\n            });\n            return groups;\n        },\n    ),\n    actions: {\n        saveSettings: function () {\n            return this.get('dirtySettings').forEach(function (setting) {\n                if (setting.get('value') === 'false') {\n                    return setting.destroyRecord();\n                } else {\n                    return setting.save();\n                }\n            });\n        },\n        turnOnSetting: function (setting) {\n            var record;\n            record = Ember.get(setting, 'record');\n            if (Ember.isEmpty(record)) {\n                return this.store.createRecord('form-field-setting', {\n                    field: this.get('model.field'),\n                    name: Ember.get(setting, 'name'),\n                    value: 'true',\n                });\n            } else if (record.get('isDeleted')) {\n                return record.rollbackAttributes();\n            }\n        },\n        turnOffSetting: function (setting) {\n            var record;\n            record = Ember.get(setting, 'record');\n            if (!record || record.get('isDeleted')) {\n                return;\n            }\n            return Ember.get(setting, 'record').deleteRecord();\n        },\n        addSetting: function (option) {\n            var values;\n            this.set('clearAddSetting', true);\n            if (option === 'custom') {\n                values = {};\n            } else {\n                values = this.get('formFieldSettingOptions').findBy('name', option);\n            }\n            values.field = this.get('model.field');\n            return this.store.createRecord('form-field-setting', values);\n        },\n        saveMandatorySetting: function (value) {\n            var mandatorySetting, model;\n            mandatorySetting = null;\n            model = this.store\n                .peekAll('form-field-setting')\n                .filterBy('field.id', this.get('field.id'));\n            model.forEach(function (setting) {\n                if (setting.get('name') === 'mandatory') {\n                    return (mandatorySetting = setting);\n                }\n            });\n            if (value === false && mandatorySetting) {\n                mandatorySetting.destroyRecord();\n            }\n            if (!mandatorySetting) {\n                mandatorySetting = this.store.createRecord('form-field-setting', {\n                    field: this.get('field'),\n                    name: 'mandatory',\n                });\n            }\n            if (value === true) {\n                mandatorySetting.set('value', true);\n                mandatorySetting.save();\n            }\n            this.set('mandatory', value);\n            return this.send('refreshModel');\n        },\n        refreshModel: function () {\n            return this.set(\n                'model.settings',\n                this.store.peekAll('form-field-setting').filterBy('field.id', this.get('field.id')),\n            );\n        },\n        saveFieldName: function () {\n            var field;\n            if (this.get('field.name') === (field = this.get('field'))) {\n                return;\n            }\n            if (\n                field.get('name') === this.get('fieldName') ||\n                field.get('translatedName.string') === this.get('fieldName')\n            ) {\n                return;\n            }\n            if (field.get('isNew')) {\n                field.set(\n                    'external_type',\n                    (this.get('adminMode') ? '' : 'addon_') +\n                        this.get('tools').computerizeHumanInput(this.get('fieldName')),\n                );\n            }\n            return field.set('name', this.get('fieldName'));\n        },\n        saveOptions: function (options) {\n            var field, i, len, option, optionsString;\n            optionsString = '';\n            field = this.get('field');\n            for (i = 0, len = options.length; i < len; i++) {\n                option = options[i];\n                if (field.get('type') === 'dropdown_options') {\n                    optionsString += option + '\\n';\n                } else {\n                    if (!option.name || !option.id) {\n                        return;\n                    }\n                    optionsString += option.id + ';' + option.name + '\\n';\n                }\n            }\n            if (optionsString !== '') {\n                optionsString = optionsString.slice(0, -1);\n            }\n            return field.set('options', optionsString);\n        },\n        //get('formController').saveField(field)\n        hideForWorktimegroup: function (groups) {\n            groups.forEach((group) => {\n                var condition;\n                if (!this.selectedWorktimegroups.isAny('id', group.id)) {\n                    condition = '$userProfile->worktimegroup==' + group.id;\n                    this.createSetting('hide', condition, '!5');\n                    this.createSetting('disabled', condition, '!5');\n                    return this.createSetting('hide_column', condition, '!5');\n                }\n            });\n            return this.selectedWorktimegroups.forEach((group) => {\n                var condition, records;\n                if (!groups.isAny('id', group.id)) {\n                    condition = '$userProfile->worktimegroup==' + group.id;\n                    records = this.filteredSettings.map((record) => {\n                        if (record.condition === condition) {\n                            return record;\n                        }\n                    });\n                    return records.forEach((record) => {\n                        if (record && !record.isDeleted) {\n                            return record.deleteRecord();\n                        }\n                    });\n                }\n            });\n        },\n    },\n    createSetting: function (name, condition, userlevel) {\n        return this.store.createRecord('form-field-setting', {\n            field: this.get('model.field'),\n            name: name,\n            condition: condition,\n            userlevel: userlevel,\n            value: 'true',\n        });\n    },\n});\n\nexport default SettingsFormsFormFieldController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/forms/form/field/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsFormsFormFieldRoute;\n\nimport Ember from 'ember';\n\nimport ResetScrollMixin from '../../../../../mixins/reset-scroll';\n\nSettingsFormsFormFieldRoute = Ember.Route.extend(ResetScrollMixin, {\n    model: function (params) {\n        var field, form, worktimegroups;\n        form = this.modelFor('settings.forms.form').form;\n        field = this.store\n            .peekAll('form-field')\n            .filterBy('external_type', params.field)\n            .filterBy('form.id', form.id);\n        if (this.Collector.testNeedsOne('products.worktimegroup')) {\n            worktimegroups = this.store.findAll('worktimegroup');\n        }\n        return new Ember.RSVP.hash({\n            settings: this.store.peekAll('form-field-setting'),\n            field: Ember.get(field, 'firstObject'),\n            worktimegroups: worktimegroups ? worktimegroups : null,\n        });\n    },\n    setupController: function (controller, model) {\n        var firstObject, firstOption, groups, options;\n        this._super(controller, model);\n        if (!Ember.get(model, 'field')) {\n            this.transitionTo('settings.forms');\n        }\n        controller.set('fieldName', Ember.get(model, 'field.translatedName'));\n        if (controller.get('fieldSelectorFields').includes(Ember.get(model, 'field.type'))) {\n            if (Ember.isEmpty(Ember.get(model, 'field.options'))) {\n                controller.set('selectedForm', null);\n            } else {\n                options = Ember.get(model, 'field.options').split('\\n');\n                firstOption = options[0];\n                firstObject = this.store.peekRecord('form-field', firstOption);\n                if (firstObject) {\n                    controller.set('selectedForm', firstObject.get('form.external_type'));\n                }\n            }\n        }\n        if (model.worktimegroups) {\n            groups = [];\n            model.worktimegroups.forEach((group) => {\n                return groups.push({\n                    id: group.id,\n                    text: group.name,\n                });\n            });\n            return controller.set('worktimegroups', groups);\n        }\n    },\n});\n\nexport default SettingsFormsFormFieldRoute;\n","export default Ember.HTMLBars.template({\"id\":\"DlvuedfS\",\"block\":\"{\\\"symbols\\\":[\\\"opt\\\",\\\"worktimegroup\\\",\\\"setting\\\",\\\"form\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Admin info\\\"],[9],[0,\\\"\\\\n        id: \\\"],[1,[24,[\\\"field\\\",\\\"id\\\"]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        nro: \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\"],[[24,[\\\"field\\\",\\\"nro\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        external_type: \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\"],[[24,[\\\"field\\\",\\\"external_type\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        name: \\\"],[1,[24,[\\\"field\\\",\\\"name\\\"]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[4,\\\"if\\\",[[24,[\\\"field\\\",\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"options: \\\"],[1,[24,[\\\"field\\\",\\\"options\\\"]],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.field_name\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"key-up\\\",\\\"disabled\\\"],[\\\"text\\\",[24,[\\\"fieldName\\\"]],\\\"form-control\\\",[28,\\\"action\\\",[[23,0,[]],\\\"saveFieldName\\\"],null],[24,[\\\"nameDisabled\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"field\\\",\\\"type\\\"]],\\\"number\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[1,[28,\\\"t\\\",[\\\"report.materialtype.unit\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\"],[[24,[\\\"field\\\",\\\"options\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.field_type\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"$-or\\\",[[24,[\\\"field\\\",\\\"isNew\\\"]],[24,[\\\"adminMode\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"value\\\",\\\"options\\\",\\\"disabled\\\"],[[24,[\\\"field\\\",\\\"type\\\"]],[24,[\\\"fieldTypes\\\"]],[28,\\\"if\\\",[[24,[\\\"field\\\",\\\"isNew\\\"]],false,true],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"label label-default\\\"],[8],[1,[24,[\\\"field\\\",\\\"translatedType\\\"]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"field\\\",\\\"type\\\"]],\\\"dropdown_values\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.field_options\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"object-input\\\",null,[[\\\"objects\\\",\\\"save\\\",\\\"disabled\\\",\\\"addText\\\",\\\"saveText\\\"],[[24,[\\\"options\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveOptions\\\"],null],[28,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"field\\\",\\\"own\\\"]],[24,[\\\"adminMode\\\"]]],null],false,true],null],[28,\\\"t\\\",[\\\"form.editor.add_option\\\"],null],[28,\\\"t\\\",[\\\"form.editor.save_options\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"field\\\",\\\"type\\\"]],\\\"dropdown_options\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.field_options\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"array-input2\\\",null,[[\\\"objects\\\",\\\"disabled\\\",\\\"save\\\",\\\"addText\\\",\\\"saveText\\\"],[[24,[\\\"options\\\"]],[28,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"field\\\",\\\"own\\\"]],[24,[\\\"adminMode\\\"]]],null],false,true],null],[28,\\\"action\\\",[[23,0,[]],\\\"saveOptions\\\"],null],[28,\\\"t\\\",[\\\"form.editor.add_option\\\"],null],[28,\\\"t\\\",[\\\"form.editor.save_options\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRawOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control add-fields\\\",[28,\\\"mut\\\",[[24,[\\\"field\\\",\\\"options\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"field\\\",\\\"type\\\"]],\\\"checkboxgroup\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.field_options\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"object-input\\\",null,[[\\\"objects\\\",\\\"save\\\",\\\"disabled\\\",\\\"addText\\\",\\\"saveText\\\"],[[24,[\\\"options\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveOptions\\\"],null],[28,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"field\\\",\\\"own\\\"]],[24,[\\\"adminMode\\\"]]],null],false,true],null],[28,\\\"t\\\",[\\\"form.editor.add_option\\\"],null],[28,\\\"t\\\",[\\\"form.editor.save_options\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"field\\\",\\\"type\\\"]],\\\"status\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.field_options\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"value\\\"],[[24,[\\\"field\\\",\\\"options\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[[24,[\\\"field\\\",\\\"type\\\"]],[24,[\\\"fieldSelectorFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.show_fields\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"selectedForm\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[8],[0,\\\"...\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"forms\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,4,[\\\"external_type\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[24,[\\\"selectedForm\\\"]],[23,4,[\\\"external_type\\\"]]],null]],[8],[1,[23,4,[\\\"translatedName\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[1,[28,\\\"multi-buttons\\\",null,[[\\\"values\\\",\\\"content\\\",\\\"orderable\\\"],[[24,[\\\"databaseFieldSelectionValues\\\"]],[24,[\\\"databaseFieldSelections\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"$-or\\\",[[24,[\\\"field\\\",\\\"own\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"settableSettings\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"setting.type.\\\",[23,3,[\\\"name\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group btn-group-justified\\\"],[10,\\\"role\\\",\\\"group\\\"],[10,\\\"aria-label\\\",\\\"...\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[10,\\\"role\\\",\\\"group\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[23,3,[\\\"on\\\"]],\\\"btn-m-link\\\",\\\"btn-m-default\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"disabled\\\"]],\\\"disabled\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"turnOnSetting\\\",[23,3,[]]]],[8],[1,[28,\\\"t\\\",[\\\"general.yes\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[10,\\\"role\\\",\\\"group\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[23,3,[\\\"on\\\"]],\\\"btn-m-default\\\",\\\"btn-m-action\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"disabled\\\"]],\\\"disabled\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"turnOffSetting\\\",[23,3,[]]]],[8],[1,[28,\\\"t\\\",[\\\"general.no\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.worktimegroup\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.hide_for_worktimegroups\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@options\\\",\\\"@selected\\\",\\\"@placeholder\\\",\\\"@onChange\\\"],[[22,\\\"worktimegroups\\\"],[22,\\\"selectedWorktimegroups\\\"],[28,\\\"t\\\",[\\\"general.select.worktimegroup\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"hideForWorktimegroup\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[23,2,[\\\"text\\\"]],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"field\\\",\\\"type\\\"]],\\\"date\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"field\\\",\\\"isNew\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"setting.alarm\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"alarm-setter\\\",null,[[\\\"form\\\",\\\"field\\\"],[[24,[\\\"field\\\",\\\"form\\\",\\\"external_type\\\"]],[24,[\\\"field\\\",\\\"external_type\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"All settings\\\"],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"formeditor-rawsettings\\\",null,[[\\\"settings\\\"],[[24,[\\\"filteredSettings\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        Add \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"addSetting\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[11,\\\"selected\\\",[22,\\\"clearAddSetting\\\"]],[8],[0,\\\"...\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"formFieldSettingOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,1,[\\\"name\\\"]]],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"custom\\\"],[8],[0,\\\"Custom\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/forms/form/field/template.hbs\"}});","import Controller from '@ember/controller';\nimport { filterBy, alias } from '@ember/object/computed';\nimport { set, get } from '@ember/object';\nimport { inject as controller } from '@ember/controller';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    formsController: controller('settings.forms'),\n    dialogs: service(),\n    intl: service(),\n    removedField: alias('model'),\n    adminMode: alias('formsController.adminMode'),\n    fields: filterBy('model', 'removed', true),\n    productFields: filterBy('fields', 'editable', true),\n    customerFields: filterBy('fields', 'editable', false),\n    actions: {\n        restoreField(field, markNotEditable = false) {\n            get(this, 'dialogs')\n                .confirm(get(this, 'intl').t('form.editor.removed.confirm'))\n                .then((con) => this._restore(con, field, markNotEditable));\n        },\n    },\n\n    _restore(con, field, markNotEditable) {\n        if (con) {\n            if (markNotEditable) {\n                set(field, 'editable', 0);\n            }\n            set(field, 'removed', 0);\n        }\n    },\n});\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport resetScroll from 'tt4/mixins/reset-scroll';\n\nexport default Route.extend(resetScroll, {\n    store: service(),\n    model() {\n        const form = get(this.modelFor('settings.forms.form'), 'form.external_type');\n        return get(this, 'store').query('form-field', { row_info_removed: true, form: form });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"vaESZMPq\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"field\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.editor.removed.title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customerFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n                  \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"restoreField\\\",[23,2,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-ReuseFilled\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge\\\"],[8],[1,[23,2,[\\\"translatedType\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"name\\\"]],\\\"$lang(10)\\\"],null]],null,{\\\"statements\\\":[[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"removed\\\"],[[23,2,[\\\"external_type\\\"]],[23,2,[\\\"form\\\",\\\"external_type\\\"]],true]]],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[23,2,[\\\"name\\\"]],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[7,\\\"i\\\",true],[8],[0,\\\"(\\\"],[1,[23,2,[\\\"external_type\\\"]],false],[0,\\\")\\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"form.editor.editable_fields_warning\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"productFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n                      \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"restoreField\\\",[23,1,[]],true]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-ReuseFilled\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge\\\"],[8],[1,[23,1,[\\\"translatedType\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"$lang(10)\\\"],null]],null,{\\\"statements\\\":[[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"removed\\\"],[[23,1,[\\\"external_type\\\"]],[23,1,[\\\"form\\\",\\\"external_type\\\"]],true]]],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[23,1,[\\\"name\\\"]],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[7,\\\"i\\\",true],[8],[0,\\\"(\\\"],[1,[23,1,[\\\"external_type\\\"]],false],[0,\\\")\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/forms/form/removed-fields/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/forms/form/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsFormsFormRoute;\n\nimport Ember from 'ember';\n\nSettingsFormsFormRoute = Ember.Route.extend({\n    intl: Ember.inject.service(),\n    model: function (params) {\n        return new Ember.RSVP.hash({\n            form: this.store.peekRecord('form', params.form),\n            settings: this.store.peekAll('form-setting'),\n            fields: this.store.peekAll('form-field'),\n            fieldSettings: this.store.peekAll('form-field-setting'),\n        });\n    },\n    actions: {\n        willTransition: function (transition) {\n            if (transition.targetName.substring(0, 14) === 'settings.forms') {\n                return;\n            }\n            if (this.get('controller.unsavedChanges')) {\n                if (!confirm(this.get('intl').t('settings.forms.move'))) {\n                    transition.abort();\n                }\n            }\n            return true;\n        },\n    },\n});\n\nexport default SettingsFormsFormRoute;\n","export default Ember.HTMLBars.template({\"id\":\"R70cC9f+\",\"block\":\"{\\\"symbols\\\":[\\\"group\\\",\\\"modelItem\\\",\\\"opt\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"link-to\\\",[[12,\\\"class\\\",\\\"btn btn-default\\\"]],[[\\\"@route\\\",\\\"@model\\\"],[\\\"forms.form-report\\\",[24,[\\\"model\\\",\\\"form\\\",\\\"external_type\\\"]]]],{\\\"statements\\\":[[0,\\\"Show report\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[5,\\\"link-to\\\",[[12,\\\"class\\\",\\\"btn btn-default\\\"]],[[\\\"@route\\\",\\\"@model\\\"],[\\\"forms.form-add\\\",[24,[\\\"model\\\",\\\"form\\\",\\\"external_type\\\"]]]],{\\\"statements\\\":[[0,\\\"Add row\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[\\\"text-report-muted \\\",[28,\\\"if\\\",[[24,[\\\"showFormInfo\\\"]],\\\"move move-SortUp\\\",\\\"move move-SortDown\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"toggleShowFormInfo\\\"]],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showFormInfo\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                id: \\\"],[1,[24,[\\\"model\\\",\\\"form\\\",\\\"id\\\"]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                name: \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\"],[[24,[\\\"model\\\",\\\"form\\\",\\\"name\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                external_type: \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\"],[[24,[\\\"model\\\",\\\"form\\\",\\\"external_type\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n                \\\"],[1,[28,\\\"formeditor-rawsettings\\\",null,[[\\\"settings\\\"],[[24,[\\\"filteredFormSettings\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasCCFunction\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"style\\\",\\\"display: inline-block; margin-left: 40px\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"ccfunctionload\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Write your CC function here\\\"],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"value\\\",\\\"cols\\\",\\\"rows\\\",\\\"key-up\\\"],[[24,[\\\"ccfunctionvalue\\\"]],\\\"50\\\",\\\"6\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggleSave\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showCCSave\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"style\\\",\\\"margin-bottom: 25px;\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveCCFunction\\\"]],[8],[0,\\\"Save CC function\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"style\\\",\\\"margin-bottom: 25px;\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addCCFunctions\\\"]],[8],[0,\\\"Enable CC functions for this form\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                Add \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"addSetting\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[11,\\\"selected\\\",[22,\\\"clearAddSetting\\\"]],[8],[0,\\\"...\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"formSettingOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,3,[\\\"name\\\"]]],[8],[1,[23,3,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                        \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"custom\\\"],[8],[0,\\\"Custom\\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"webhook-list\\\",null,[[\\\"form\\\"],[[24,[\\\"model\\\",\\\"form\\\",\\\"external_type\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6 form-editor-div\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"sortable-group\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"model\\\",\\\"onChange\\\"],[\\\"ul\\\",\\\"list-group\\\",[24,[\\\"filteredFields\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"reorderFields\\\"],null]]],{\\\"statements\\\":[[4,\\\"each\\\",[[23,1,[\\\"model\\\"]]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"item\\\"]],\\\"expected `group.item` to be a contextual component but found a string. Did you mean `(component group.item)`? ('tt4/pods/settings/forms/form/template.hbs' @ L54:C19) \\\"],null]],[[\\\"model\\\",\\\"tagName\\\",\\\"class\\\"],[[23,2,[]],\\\"li\\\",[28,\\\"concat\\\",[\\\"list-group-item form-editor-field \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[]],[24,[\\\"selectedField\\\"]]],null],\\\"active \\\"],null],[28,\\\"if\\\",[[23,2,[\\\"hasDirtyAttributes\\\"]],\\\"dirty\\\"],null]],null]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n                        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-xs btn-default\\\",\\\"settings.forms.form.field\\\",[23,2,[\\\"external_type\\\"]]]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"$-or\\\",[[23,2,[\\\"own\\\"]],[24,[\\\"adminMode\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeField\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Delete\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge\\\"],[8],[1,[23,2,[\\\"translatedType\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge red\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[1,[23,2,[\\\"translatedName\\\"]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"type\\\"]],\\\"database\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        (\\\"],[1,[28,\\\"databasefield-options\\\",[[23,2,[\\\"options\\\"]]],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\" - \\\"],[7,\\\"i\\\",true],[8],[0,\\\"(\\\"],[1,[23,2,[\\\"external_type\\\"]],false],[0,\\\")\\\"],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"button\\\",\\\"btn btn-warning\\\",\\\"settings.forms.form.removed-fields\\\"]],{\\\"statements\\\":[[0,\\\"Show removed fields\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"$-or\\\",[[28,\\\"needs\\\",[\\\"products\\\"],null],[24,[\\\"tt3ServiceAndDevMode\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addField\\\"]],[8],[1,[28,\\\"t\\\",[\\\"forms.editor.add_field\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 \\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"unsavedChanges\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"pull-right btn btn-primary btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveFields\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\" \\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"state\\\"]],\\\"saving\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/forms/form/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/forms/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsFormsRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSettingsFormsRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    Collector: Em.inject.service('collector-service'),\n    session: Em.inject.service(),\n    beforeModel: function (transition) {\n        if (this.get('Collector').testNeedsOne('products.mini_entry')) {\n            transition.abort();\n            return this.transitionTo('dashboard');\n        }\n    },\n    model: function () {\n        return this.store.findAll('form');\n    },\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting) {\n            return controller.set('form_id', void 0);\n        }\n    },\n});\n\nexport default SettingsFormsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"7lLT9miJ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showAdminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-1\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"class\\\"],[\\\"checkbox\\\",[24,[\\\"adminMode\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-11\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"Admin mode\\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"prompt\\\",\\\"bubbleChange\\\"],[[24,[\\\"dropdown_options\\\"]],[24,[\\\"form_id\\\"]],[28,\\\"t\\\",[\\\"select.form\\\"],null],\\\"formChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"createForm\\\"]],[8],[0,\\\"Create form\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"form_id\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"tt3Service\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeForm\\\"]],[8],[1,[28,\\\"t\\\",[\\\"settings.forms.remove\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"exportForm\\\"]],[8],[0,\\\"Export form\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"input\\\",true],[10,\\\"class\\\",\\\"hide\\\"],[10,\\\"id\\\",\\\"importFormFileInput\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"upload\\\"],null]],[11,\\\"value\\\",[22,\\\"selectedFile\\\"]],[10,\\\"type\\\",\\\"file\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"importForm\\\"]],[8],[0,\\\"Import form\\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"settings/forms/form-activity-log\\\",null,[[\\\"logs\\\"],[[24,[\\\"logs\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/forms/template.hbs\"}});","/* eslint-disable */\n\nimport Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed } from '@ember/object';\nimport { get, set, getProperties } from '@ember/object';\nimport { action } from '@ember/object';\nimport { event } from 'jquery';\n\nexport default Component.extend({\n  store: service(),\n  session: service(),\n  notifications: service(),\n  intl: service(),\n  Collector: service('collector-service'),\n  loading: false,\n  autoPauseOptions: [\"15\", \"30\", \"45\", \"60\"],\n  pause_start_time: null,\n  pause_length: null,\n  min_workday_length: null,\n  min_workday_length_hours: null,\n  min_workday_length_minutes: null,\n  isChanged: computed('pause_start_time', 'pause_length', 'min_workday_length', {\n    get() {\n      let hasChanged = false;\n      const settings = get(this, 'settings');\n      if (settings) {\n        const {\n          pause_start_time: oldPauseStartTime,\n          pause_length: oldPauseLength,\n          min_workday_length: oldMinWorkdayLength,\n        } = settings;\n\n        const {\n          pause_start_time: newPauseStartTime,\n          pause_length: newPauseLength,\n          min_workday_length: newMinWorkdayLength,\n        } = getProperties(this, 'pause_start_time', 'pause_length', 'min_workday_length');\n\n        hasChanged = oldPauseStartTime !== newPauseStartTime ||\n          oldPauseLength !== newPauseLength ||\n          oldMinWorkdayLength !== newMinWorkdayLength;\n      }\n\n      return hasChanged;\n    },\n    set(key, value) {\n      return value;\n    }\n  }),\n  isValueCustom: computed('pause_length', 'autoPauseOptions', function() {\n  // Ensure pause_length is treated as a string for comparison\n  const pauseLengthAsString = `${this.pause_length}`;\n  return !this.autoPauseOptions.includes(pauseLengthAsString);\n  }),\n\n  init() {\n    this._super(...arguments);\n    this.fetchPauseSettings();\n  },\n\n  async fetchPauseSettings() {\n      set(this, 'loading', true);\n      const partnerId = get(this, 'session.currentUser.partnerid');\n      // If worktime group is not set, or is undefined or null, set it to 0 (laravel validation expects numerical value in request)\n      const worktimegroup = get(this, 'worktimegroup') || 0;\n\n\n      get(this, 'Collector').ttapi({\n        url: `api/getPauseSettings?partnerid=${partnerId}&worktimegroup=${worktimegroup}`,\n      }).then((response) => {\n        let settings = response.length > 0 ? response[response.length - 1] : {};\n\n        // Convert all relevant settings to string for consistent comparison\n        settings.pause_length = settings.pause_length?.toString();\n        settings.min_workday_length = settings.min_workday_length?.toString();\n\n        // Set initial settings for comparison\n        set(this, 'settings', settings);\n\n        // Also update current component properties to reflect fetched settings\n        this.setProperties({\n          pause_start_time: settings.pause_start_time,\n          pause_length: settings.pause_length,\n          min_workday_length: settings.min_workday_length || '0',\n          min_workday_length_hours: this.extractHours(settings.min_workday_length),\n          min_workday_length_minutes: this.extractMinutes(settings.min_workday_length)\n        });\n      }).catch((error) => {\n          console.error('Error fetching pause settings:', error);\n          // Handle the error appropriately here\n      }).finally(() => {\n          set(this, 'loading', false);\n          set(this, 'isChanged', false);\n      });\n    },\n\n  extractHours(value) {\n    if (!value) return '0';\n    const hours = Math.floor(parseFloat(value));\n    return hours < 10 ? '0' + hours : hours.toString();\n  },\n\n  extractMinutes(value) {\n    if (!value) return '00';\n    const minutes = Math.round((parseFloat(value) % 1) * 60);\n    return minutes < 10 ? '0' + minutes : minutes.toString();\n  },\n\n  @action\n  changeHours(property, event) {\n    if (event) {\n      let val = parseInt(event, 10);\n\n      if (isNaN(val) || val < 0) val = 0;\n      const value = val;\n      const minutes = this.get(property + '_minutes') || '00';\n      this.set(property, value + (parseInt(minutes) / 60));\n\n      // Update min_workday_length if the property is min_workday_length_hours\n      if (property === 'min_workday_length_hours') {\n        this.set('min_workday_length', this.get('min_workday_length_hours') + (parseInt(this.get('min_workday_length_minutes')) / 60));\n      }\n    }\n  },\n\n  @action\n  changeMinutes(property, event) {\n    if (event) {\n      let val = parseInt(event, 10);\n\n      if (isNaN(val) || val < 0 || val > 59) val = 0;\n      const value = val / 60;\n      const hours = this.get(property + '_hours') || '00';\n      this.set(property, parseInt(hours) + value);\n\n      // Update min_workday_length if the property is min_workday_length_minutes\n      if (property === 'min_workday_length_minutes') {\n        this.set('min_workday_length', (parseInt(this.get('min_workday_length_hours')) + (val / 60)));\n      }\n    }\n  },\n\n@action\nselectAll(event) {\n    const target = event.target;\n    target.select();\n},\n\n  @action\n      async saveSetting() {\n          set(this, 'loading', true);\n          const worktimegroup = get(this, 'worktimegroup') === undefined ? 0 : get(this, 'worktimegroup');\n          const partnerId = this.get('session.currentUser.partnerid');\n\n          const data = {\n          worktimegroup: worktimegroup,\n          pause_start_time: this.pause_start_time,\n          pause_length: parseInt(this.pause_length, 10),\n          min_workday_length: parseFloat(this.min_workday_length)\n          };\n\n          let savePromise = get(this, 'Collector').ttapi({\n              method: \"post\",\n              url: `api/savePauseSettings?partnerid=${partnerId}`,\n              data: data\n          });\n\n          return Ember.RSVP.Promise.all([savePromise]).then(() => {\n            set(this, 'loading', true);\n              if (get(this, 'settingSaved')) {\n                  return this.settingSaved('products.autopause');\n              }\n          }).catch(error => {\n              get(this, 'notifications').error('Failed to save settings. Please try again.');\n              set(this, 'loading', false);\n          }).finally(() => {\n              // Fetch and update pause settings regardless of the result of savePromise\n              this.fetchPauseSettings();\n              get(this, 'isChanged');\n              set(this, 'loading', false);\n          });\n      },\n\n      @action\n      changeValue(option, isCustom) {\n      if (isCustom) {\n          set(this, 'pause_length', option);\n      }\n      set(this, 'isChanged', true);\n      },\n\n      @action\n      validateInput(property, event) {\n          let value = parseInt(event.target.value, 10);\n\n          if (value < 0) {\n              this.set(property, '0');\n          } else {\n              this.set(property, value.toString());\n          }\n      },\n  }\n);\n","export default Ember.HTMLBars.template({\"id\":\"xU2QzZnI\",\"block\":\"{\\\"symbols\\\":[\\\"option\\\",\\\"@disabled\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.timetracker.autopause_info\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs min-workday-length\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.timetracker.autopause_minworktime\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline-flex-row\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"input\\\",[[3,\\\"on\\\",[\\\"focus\\\",[23,0,[\\\"selectAll\\\"]]]]],[[\\\"@type\\\",\\\"@min\\\",\\\"@name\\\",\\\"@class\\\",\\\"@focus-out\\\",\\\"@value\\\",\\\"@disabled\\\"],[\\\"number\\\",\\\"0\\\",\\\"min_workday_length-hours\\\",\\\"form-control\\\",[28,\\\"fn\\\",[[23,0,[\\\"changeHours\\\"]],\\\"min_workday_length\\\"],null],[23,0,[\\\"min_workday_length_hours\\\"]],[23,2,[]]]]],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"time-separator\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"general.hour_abbr\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[5,\\\"input\\\",[[3,\\\"on\\\",[\\\"focus\\\",[23,0,[\\\"selectAll\\\"]]]]],[[\\\"@type\\\",\\\"@min\\\",\\\"@max\\\",\\\"@name\\\",\\\"@class\\\",\\\"@focus-out\\\",\\\"@value\\\",\\\"@disabled\\\"],[\\\"number\\\",\\\"0\\\",\\\"59\\\",\\\"min_workday_length-minutes\\\",\\\"form-control\\\",[28,\\\"fn\\\",[[23,0,[\\\"changeMinutes\\\"]],\\\"min_workday_length\\\"],null],[23,0,[\\\"min_workday_length_minutes\\\"]],[23,2,[]]]]],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"general.min_abbr\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.timetracker.default_pause_help\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"autoPauseOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-inputs-settings\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\",[23,1,[]]],null]],[10,\\\"name\\\",\\\"pause_length\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,0,[\\\"pause_length\\\"]],[23,1,[]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"class\\\",\\\"radio-svg-fill\\\"],[10,\\\"id\\\",\\\"Ellipse_30\\\"],[10,\\\"data-name\\\",\\\"Ellipse 30\\\"],[10,\\\"cx\\\",\\\"3\\\"],[10,\\\"cy\\\",\\\"3\\\"],[10,\\\"r\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(3 3)\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-text\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"wizard.onboarding.timetracker.pause.\\\",[23,1,[]]],null]],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"radio-inputs-settings\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\",null,true]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isValueCustom\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"class\\\",\\\"radio-svg-fill\\\"],[10,\\\"id\\\",\\\"Ellipse_30\\\"],[10,\\\"data-name\\\",\\\"Ellipse 30\\\"],[10,\\\"cx\\\",\\\"3\\\"],[10,\\\"cy\\\",\\\"3\\\"],[10,\\\"r\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(3 3)\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-text-custom\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isValueCustom\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"name\\\",\\\"class\\\",\\\"focus-out\\\"],[[23,0,[\\\"pause_length\\\"]],\\\"pause_length\\\",\\\"form-control add-fields\\\",[28,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"disabled\\\",\\\"class\\\"],[null,false,\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.custom.text_end\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.timetracker.autopause_starttime\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inline-flex-row\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"class\\\",\\\"type\\\",\\\"name\\\"],[[23,0,[\\\"pause_start_time\\\"]],\\\"form-control\\\",\\\"time\\\",\\\"pause_start_time\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"disabled\\\",[28,\\\"not\\\",[[24,[\\\"isChanged\\\"]]],null]],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/auto-pause-setting/template.hbs\"}});","import { getProperties, get, set } from '@ember/object';\nimport { isPresent } from '@ember/utils';\nimport Component from '@ember/component';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    store: service(),\n    session: service(),\n    intl: service(),\n    Collector: service('collector-service'),\n    notifications: service(),\n    customerSettings: service(),\n    gps: service(),\n    didReceiveAttrs() {\n        set(this, 'address_error', false);\n        const worktimegroup = get(this, 'worktimegroup');\n        let coordsString = null;\n\n        if (isPresent(worktimegroup)) {\n            coordsString = get(this, 'customerSettings').checkSetting(\n                `autokm_address_${worktimegroup}`,\n            );\n        } else {\n            coordsString = get(this, 'customerSettings').checkSetting(`autokm_address`);\n        }\n        if (coordsString) {\n            set(this, 'active', true);\n            const coords = JSON.parse(coordsString);\n\n            if (coords.no_back_forth) {\n                set(this, 'backForthActive', false);\n            } else {\n                set(this, 'backForthActive', true);\n            }\n            set(this, 'loading', true);\n\n            get(this, 'gps')\n                .GetLocationByLatLng({ lat: coords.latitude, lng: coords.longitude })\n                .then((resp) => this._setAddress(resp));\n        }\n    },\n\n    actions: {\n        saveSetting() {\n            set(this, 'loading', true);\n            const full_address = getProperties(this, 'address', 'postal', 'city');\n            const gps = get(this, 'gps');\n            gps.GetFullObjectByAddress(Object.values(full_address).join(' ')).then(\n                (resp) => this._checkAndSave(resp),\n                (resp) => this._showError(resp),\n            );\n        },\n        checkboxChanged() {\n            this.toggleProperty('active');\n            const checked = get(this, 'active');\n            if (!checked) {\n                let settingstr = 'autokm_address';\n                if (isPresent(get(this, 'worktimegroup'))) {\n                    settingstr += `_${get(this, 'worktimegroup')}`;\n                }\n                get(this, 'customerSettings').setSetting(settingstr, 'off');\n                get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n                    autoClear: true,\n                });\n            }\n        },\n        checkboxChangedBackForth() {\n            this.toggleProperty('backForthActive');\n            const checked = get(this, 'backForthActive');\n            var setting = get(this, 'customerSettings').checkSetting('autokm_address');\n            var settingObj = JSON.parse(setting);\n            let settingstr = 'autokm_address';\n            if (isPresent(get(this, 'worktimegroup'))) {\n                settingstr += `_${get(this, 'worktimegroup')}`;\n            }\n            let promise = null;\n            if (!checked) {\n                settingObj.no_back_forth = true;\n                promise = get(this, 'customerSettings').setSetting(\n                    settingstr,\n                    JSON.stringify(settingObj),\n                );\n            } else {\n                delete settingObj.no_back_forth;\n                promise = get(this, 'customerSettings').setSetting(\n                    settingstr,\n                    JSON.stringify(settingObj),\n                );\n            }\n            promise.then(() => {\n                get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n                    autoClear: true,\n                });\n            });\n        },\n    },\n\n    _setAddress(resp) {\n        const split1 = resp.split(', ');\n        const split2 = split1[1].split(' ');\n        set(this, 'address', split1[0]);\n        set(this, 'postal', split2[0]);\n        set(this, 'city', split2[1]);\n        set(this, 'loading', false);\n    },\n\n    _checkAndSave(resp) {\n        let address = resp.formatted_address.split(', ');\n        if (address.length == 2) {\n            this._showError();\n        } else {\n            set(this, 'address_error', false);\n            this._saveSettings({\n                latitude: resp.geometry.location.lat(),\n                longitude: resp.geometry.location.lng(),\n            });\n        }\n    },\n    _saveSettings(resp) {\n        let settingstr = 'autokm_address';\n        if (isPresent(get(this, 'worktimegroup'))) {\n            settingstr += `_${get(this, 'worktimegroup')}`;\n        }\n        if (!get(this, 'backForthActive')) {\n            resp.no_back_forth = true;\n        }\n        get(this, 'customerSettings')\n            .setSetting(settingstr, JSON.stringify(resp))\n            .then(() => this._success());\n    },\n\n    _success() {\n        set(this, 'loading', false);\n        this.settingSaved();\n    },\n    _showError() {\n        set(this, 'loading', false);\n        set(this, 'address_error', true);\n        get(this, 'notifications').error(get(this, 'intl').t('settings.autokm.address_error'), {\n            autoClear: true,\n        });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"j1089KJY\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"change\\\"],[\\\"checkbox\\\",[24,[\\\"active\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"checkboxChanged\\\"],null]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"settings.autokm.activate_address_only\\\"],null],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"standard-icon-popover\\\",null,[[\\\"icon\\\",\\\"text\\\"],[\\\"info\\\",[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"settings.autokm.activate_address.desc\\\"],null]],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"setting\\\",\\\"active\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overlay\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"disabled\\\",\\\"checked\\\",\\\"change\\\"],[\\\"checkbox\\\",[28,\\\"if\\\",[[24,[\\\"active\\\"]],false,true],null],[24,[\\\"backForthActive\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"checkboxChangedBackForth\\\"],null]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"settings.autokm.activate_back_and_forth\\\"],null],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"standard-icon-popover\\\",null,[[\\\"icon\\\",\\\"text\\\"],[\\\"info\\\",[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"settings.autokm.activate_back_and_forth.desc\\\"],null]],null]]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row address-row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.address.street\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"address\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.address.postal\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"number\\\",[24,[\\\"postal\\\"]],\\\"form-control add-fields long-number\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.address.city\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"city\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"address_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.autokm.address_error_not_valid\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row save-row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"disabled\\\",[28,\\\"not\\\",[[24,[\\\"active\\\"]]],null]],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/autokm-setting/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class AddressCompComponent extends Component {\n    @service admintool;\n    @service() notifications;\n    @service intl;\n\n    @tracked companyData;\n    @tracked validate;\n    @tracked isLoading;\n\n    constructor() {\n        super(...arguments);\n        this.setData();\n    }\n\n    @action\n    async save() {\n        this.isLoading = true;\n        this.validate = false;\n\n        if (this.validationErrorsFound()) {\n            this.validate = true;\n            return (this.isLoading = false);\n        }\n\n        await this.saveData('customer_info', {\n            street: this.companyData.street,\n            zip: this.companyData.zip,\n            town: this.companyData.town,\n            country: this.companyData.country,\n            specifier: this.companyData.specifier,\n        });\n\n        if (this.billingData.use_company_address && this.billingData.billingtype == 'paper') {\n            await this.saveData('billinginfo', {\n                street: this.companyData.street,\n                zip: this.companyData.zip,\n                town: this.companyData.town,\n                country: this.companyData.country,\n                billingtype: 'paper',\n            });\n        }\n\n        this.isLoading = false;\n        this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n    }\n    async setData() {\n        this.companyData = this.args.popup\n            ? this.args.companyData\n            : await this.getdata('customer_info');\n        try {\n            this.billingData = await this.getdata('billinginfo');\n        } catch (error) {\n            if (error.statusText == 'Not Found') this.billingData = [];\n        }\n    }\n\n    async getdata(url) {\n        return await this.admintool.ajax({\n            url: url,\n            method: 'get',\n        });\n    }\n\n    validationErrorsFound() {\n        const mandatoryFields = ['street', 'zip', 'town', 'country'];\n        for (const field in this.companyData) {\n            if (mandatoryFields.includes(field)) {\n                if (!this.companyData[field] || this.companyData[field] == '') return true;\n            }\n        }\n    }\n\n    async saveData(url, data) {\n        return await this.admintool.ajax({\n            url: url,\n            method: 'PUT',\n            data: data,\n        });\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"JZMVyyno\",\"block\":\"{\\\"symbols\\\":[\\\"@popup\\\"],\\\"statements\\\":[[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\"],[[28,\\\"t\\\",[\\\"company_info.street\\\"],null],true,[28,\\\"and\\\",[[28,\\\"not\\\",[[23,0,[\\\"companyData\\\",\\\"street\\\"]]],null],[23,0,[\\\"validate\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"companyData\\\",\\\"street\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\"],[[28,\\\"t\\\",[\\\"company_info.zip\\\"],null],true,[28,\\\"and\\\",[[28,\\\"not\\\",[[23,0,[\\\"companyData\\\",\\\"zip\\\"]]],null],[23,0,[\\\"validate\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"companyData\\\",\\\"zip\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\"],[[28,\\\"t\\\",[\\\"company_info.town\\\"],null],true,[28,\\\"and\\\",[[28,\\\"not\\\",[[23,0,[\\\"companyData\\\",\\\"town\\\"]]],null],[23,0,[\\\"validate\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"companyData\\\",\\\"town\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\"],[[28,\\\"t\\\",[\\\"company_info.country\\\"],null],true,[28,\\\"and\\\",[[28,\\\"not\\\",[[23,0,[\\\"companyData\\\",\\\"country\\\"]]],null],[23,0,[\\\"validate\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"],[12,\\\"disabled\\\",true]],[[\\\"@value\\\"],[[23,0,[\\\"companyData\\\",\\\"country\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"company_info.specifier\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"companyData\\\",\\\"specifier\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\"],[[22,\\\"isLoading\\\"],[28,\\\"fn\\\",[[23,0,[\\\"save\\\"]],[23,0,[\\\"companyData\\\"]]],null],\\\"btn btn-primary btn-lg save\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/company-info/address-comp/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action, set } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class BillingCompComponent extends Component {\n    @service session;\n    @service admintool;\n    @service countryLists;\n    @service() notifications;\n    @service intl;\n\n    @tracked invoicingAddress;\n    @tracked billingType;\n    @tracked loading;\n    @tracked isSaving;\n\n    errors = { street: false, zip: false, town: false, country: false };\n\n    constructor() {\n        super(...arguments);\n        this.loading = true;\n        this.setData();\n    }\n\n    eInvoicingOperators = [\n        { id: 'apix', name: 'Apix Messaging Oy (003723327487)' },\n        { id: 'basware', name: 'BasWare Einvoices Oy (BAWCFI22)' },\n        { id: 'basware_oyj', name: 'BasWare Oyj (003705925424)' },\n        { id: 'cgi', name: 'CGI - Logica (003703575029)' },\n        { id: 'danske_bank', name: 'Danske Bank Oyj (DABAFIHH)' },\n        { id: 'enfo', name: 'Enfo Oy (003718062728)' },\n        { id: 'enfo_oyj', name: 'Enfo Oyj (003714377140)' },\n        { id: 'inex', name: 'InExchange Factorum AB (INEXCHANGE)' },\n        { id: 'liaison', name: 'LIAISON Technologies Oy (003708599126)' },\n        { id: 'maventa', name: 'Maventa Services (003721291126)' },\n        { id: 'nordea', name: 'Nordea (NDEAFIHH)' },\n        { id: 'notebeat', name: 'Notebeat Oy (003717203971)' },\n        { id: 'op', name: 'OP-Pohjola-ryhmä (OKOYFIHH)' },\n        { id: 'opus', name: 'OpusCapita Group Oy - Itella (003710948874)' },\n        { id: 'pagero', name: 'Pagero (003723609900)' },\n        { id: 'pop', name: 'POP Pankit (POPFFI22)' },\n        { id: 's_pankki', name: 'S-Pankki Oy (SBANFIHH)' },\n        { id: 'sampo', name: 'Sampo Pankki Oyj (PSPBFIHH)' },\n        { id: 'handelsbank', name: 'Svenska HAndelsbanken AB (HANDFIHH)' },\n        { id: 'saasto', name: 'Säästöpankit (ITELFIHH)' },\n        { id: 'tapiola', name: 'Tapiola Pankki (TAPIFI22)' },\n        { id: 'teliasonera', name: 'TeliaSonera Finland Oyj (003714756079)' },\n        { id: 'tieto', name: 'Tieto Oyj (003701011385)' },\n        { id: 'aland', name: 'Ålandsbanken Abp (AABAFI22)' },\n        { id: 'opus_solutions', name: 'OpusCapita Solutions Oy (E204503)' },\n    ];\n\n    @action\n    copyFields() {\n        set(\n            this,\n            'invoicingAddress.use_company_address',\n            !this.invoicingAddress.use_company_address,\n        );\n        if (this.invoicingAddress.use_company_address) {\n            set(this, 'invoicingAddress.zip', this.customerData.zip);\n            set(this, 'invoicingAddress.town', this.customerData.town);\n            set(this, 'invoicingAddress.country', this.customerData.country);\n            set(this, 'invoicingAddress.street', this.customerData.street);\n        }\n    }\n\n    @action\n    async save() {\n        this.isSaving = true;\n        if (this.billingType == 'eInvoice') {\n            this.clearFields(['email', 'zip', 'town', 'country', 'street']);\n            if (this.checkMandatoryFields()) return;\n        }\n        if (this.billingType == 'email')\n            this.clearFields([\n                'zip',\n                'town',\n                'country',\n                'street',\n                'e_invoice_operator',\n                'e_invoice_address',\n            ]);\n        if (this.billingType == 'paper')\n            this.clearFields(['e_invoice_operator', 'e_invoice_address', 'email']);\n\n        let data = this.getDataArray();\n        let method = this.invoicingAddress ? 'PUT' : 'POST';\n\n        await this.admintool.ajax({ url: 'billinginfo', method: method, data: data });\n\n        if (this.args.popup) {\n            await this.saveCompanyInfo();\n            this.args.close();\n        }\n\n        if (this.args.close) this.args.close();\n        this.isSaving = false;\n        this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n    }\n\n    async setData() {\n        this.invoicingAddress = {};\n\n        try {\n            this.invoicingAddress = await this.admintool.ajax({\n                url: 'billinginfo',\n                method: 'get',\n            });\n        } catch (error) {\n            if (error.statusText == 'Not Found') this.invoicingAddress = {};\n        } finally {\n            this.customerData = await this.admintool.ajax({ url: 'customer_info', method: 'get' });\n            this.billingType =\n                this.invoicingAddress && this.invoicingAddress.billingtype\n                    ? this.invoicingAddress.billingtype\n                    : 'email';\n            this.loading = false;\n        }\n    }\n\n    clearFields(fields) {\n        fields.map((field) => set(this, `invoicingAddress.${field}`, null));\n        if (this.billingType != 'paper') set(this, 'invoicingAddress.use_company_address', false);\n    }\n\n    getDataArray() {\n        let addressInfo =\n            this.invoicingAddress.use_company_address && this.billingType == 'paper'\n                ? this.customerData\n                : this.invoicingAddress;\n        return {\n            street: addressInfo.street,\n            zip: addressInfo.zip,\n            town: addressInfo.town,\n            country: addressInfo.country,\n            billingtype: this.billingType,\n            email: this.invoicingAddress.email,\n            e_invoice_operator: this.invoicingAddress.e_invoice_operator,\n            e_invoice_address: this.invoicingAddress.e_invoice_address,\n            invoice_ref: this.invoicingAddress.invoice_ref,\n            use_company_address: this.invoicingAddress.use_company_address,\n        };\n    }\n\n    checkMandatoryFields() {\n        const mandatoryFields = ['street', 'zip', 'town', 'country'];\n        let hasErrors = false;\n        for (const field in this.customerData) {\n            if (mandatoryFields.includes(field)) {\n                if (!this.customerData[field] || this.customerData[field] == '') {\n                    set(this, 'errors.' + field, true);\n                    hasErrors = true;\n                } else {\n                    set(this, 'errors.' + field, false);\n                }\n            }\n        }\n        return hasErrors;\n    }\n\n    async saveCompanyInfo() {\n        return await this.admintool.ajax({\n            url: 'customer_info',\n            method: 'PUT',\n            data: {\n                street: this.customerData.street,\n                zip: this.customerData.zip,\n                town: this.customerData.town,\n                country: this.customerData.country,\n                specifier: this.customerData.specifier,\n            },\n        });\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"ouiO4zKk\",\"block\":\"{\\\"symbols\\\":[\\\"error\\\",\\\"field\\\",\\\"acc\\\",\\\"accitem\\\",\\\"country\\\",\\\"accitem\\\",\\\"operator\\\",\\\"accitem\\\",\\\"@popup\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"products.mini_entry\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,9,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.billing_info_header\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[5,\\\"bs-accordion\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"item\\\"]],[[12,\\\"onclick\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"billingType\\\"]]],null],\\\"email\\\"],null]]],[[\\\"@value\\\"],[\\\"email\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,8,[\\\"title\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"billing_info.email\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"text-success icon-big pull-right \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,0,[\\\"billingType\\\"]],\\\"email\\\"],null],\\\"move move-Checkmark\\\"],null]]]],[8],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,8,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"blockquote\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.email_desc\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.email\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"invoicingAddress\\\",\\\"email\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.invoice_ref\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"invoicingAddress\\\",\\\"invoice_ref\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,0,[\\\"session\\\",\\\"currentUser\\\",\\\"company_info\\\",\\\"country\\\"]],\\\"fi\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,3,[\\\"item\\\"]],[[12,\\\"onclick\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"billingType\\\"]]],null],\\\"eInvoice\\\"],null]]],[[\\\"@value\\\"],[\\\"e_invoice\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"title\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"billing_info.e_invoice\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"text-success icon-big pull-right \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,0,[\\\"billingType\\\"]],\\\"eInvoice\\\"],null],\\\"move move-Checkmark\\\"],null]]]],[8],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"blockquote\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.e_invoice_desc\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                    \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.e_invoice_desc\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"invoicingAddress\\\",\\\"e_invoice_operator\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"eInvoicingOperators\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,7,[\\\"id\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"invoicingAddress\\\",\\\"e_invoice_operator\\\"]],[23,7,[\\\"id\\\"]]],null]],[8],[1,[23,7,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                    \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.e_invoice_address\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"invoicingAddress\\\",\\\"e_invoice_address\\\"]]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                    \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.invoice_ref\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"invoicingAddress\\\",\\\"invoice_ref\\\"]]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"item\\\"]],[[12,\\\"onclick\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"billingType\\\"]]],null],\\\"paper\\\"],null]]],[[\\\"@value\\\"],[\\\"paper\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"title\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"billing_info.paper\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"text-success icon-big pull-right \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,0,[\\\"billingType\\\"]],\\\"paper\\\"],null],\\\"move move-Checkmark\\\"],null]]]],[8],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"blockquote\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.paper_desc\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.use_company_address\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"input\\\",[[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"copyFields\\\"]]]]],[[\\\"@class\\\",\\\"@type\\\",\\\"@checked\\\"],[\\\"form-control\\\",\\\"checkbox\\\",[24,[\\\"invoicingAddress\\\",\\\"use_company_address\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.street\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"disabled\\\",[28,\\\"if\\\",[[24,[\\\"invoicingAddress\\\",\\\"use_company_address\\\"]],true,false],null]]],[[\\\"@value\\\"],[[23,0,[\\\"invoicingAddress\\\",\\\"street\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.zip\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"disabled\\\",[28,\\\"if\\\",[[24,[\\\"invoicingAddress\\\",\\\"use_company_address\\\"]],true,false],null]]],[[\\\"@value\\\"],[[23,0,[\\\"invoicingAddress\\\",\\\"zip\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.town\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"disabled\\\",[28,\\\"if\\\",[[24,[\\\"invoicingAddress\\\",\\\"use_company_address\\\"]],true,false],null]]],[[\\\"@value\\\"],[[23,0,[\\\"invoicingAddress\\\",\\\"town\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.e_invoice_country\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"invoicingAddress\\\",\\\"country\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[11,\\\"disabled\\\",[28,\\\"if\\\",[[24,[\\\"invoicingAddress\\\",\\\"use_company_address\\\"]],true,false],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"countryLists\\\",\\\"shortList\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,5,[\\\"id\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"invoicingAddress\\\",\\\"country\\\"]],[23,5,[\\\"id\\\"]]],null]],[8],[1,[23,5,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"billing_info.invoice_ref\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"invoicingAddress\\\",\\\"invoice_ref\\\"]]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.paper_notice\\\"],null],false],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,9,[]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.address_info_header\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[5,\\\"settings/general-v2/components/company-info/address-comp\\\",[],[[\\\"@companyData\\\",\\\"@popup\\\"],[[23,0,[\\\"customerData\\\"]],[23,9,[]]]]],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[23,0,[\\\"errors\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"settings.companyprofile.\\\",[23,2,[]],\\\"_missing\\\"],null]],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2]},null],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\"],[[22,\\\"isSaving\\\"],[23,0,[\\\"save\\\"]],\\\"btn btn-primary btn-lg save\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"query\\\"],[\\\"btn btn-primary\\\",[28,\\\"hash\\\",null,[[\\\"wizard\\\"],[\\\"billing\\\"]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"billing_info.open_billing_info\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/company-info/billing-comp/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { get, action } from '@ember/object';\nimport Ember from 'ember';\n\nexport default class InfoCompComponent extends Component {\n    @service store;\n    @service() notifications;\n    @service intl;\n    @service session;\n\n    @tracked company;\n    @tracked loading;\n    @tracked validate;\n    @tracked isSaving;\n\n    countries = [\n        { id: 'se', name: 'se' },\n        { id: 'fi', name: 'fi' },\n    ];\n\n    get adminMode() {\n        if (Ember.devModeOn || this.session.session.content.authenticated.scope) return true;\n        return false;\n    }\n\n    constructor() {\n        super(...arguments);\n        this.loading = true;\n        this.setCompanyInfo();\n    }\n\n    @action\n    async saveCompanyInfo() {\n        this.isSaving = true;\n        this.validate = false;\n\n        this.validationErrorsFound() ? (this.validate = true) : await this.company.save();\n        this.isSaving = false;\n        if (!this.validate)\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n    }\n\n    async setCompanyInfo() {\n        this.company = get(await this.store.findAll('company-info'), 'firstObject');\n        this.loading = false;\n    }\n\n    validationErrorsFound() {\n        if (!this.company.company_name || this.company.company_name == '') return true;\n        if (!this.company.company_vatin || this.company.company_vatin == '') return true;\n        return false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"LI8CIsrh\",\"block\":\"{\\\"symbols\\\":[\\\"country\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\"],[[28,\\\"t\\\",[\\\"company_info.company_name\\\"],null],true,[28,\\\"and\\\",[[28,\\\"not\\\",[[23,0,[\\\"company\\\",\\\"company_name\\\"]]],null],[23,0,[\\\"validate\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"company\\\",\\\"company_name\\\"]]]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\"],[[28,\\\"t\\\",[\\\"company_info.company_vatin\\\"],null],true,[28,\\\"and\\\",[[28,\\\"not\\\",[[23,0,[\\\"company\\\",\\\"company_vatin\\\"]]],null],[23,0,[\\\"validate\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"company\\\",\\\"company_vatin\\\"]]]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"company_info.company_contact_person\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"company\\\",\\\"company_contact_person\\\"]]]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"company_info.company_phone\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"company\\\",\\\"company_phone\\\"]]]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"company_info.company_email\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"],[12,\\\"placeholder\\\",\\\"\\\"]],[[\\\"@value\\\"],[[23,0,[\\\"company\\\",\\\"company_email\\\"]]]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"adminMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"horizontal-field\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"company_info.country\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"select\\\",true],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"company\\\",\\\"country\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"countries\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,1,[\\\"id\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,0,[\\\"company\\\",\\\"country\\\"]],[23,1,[\\\"id\\\"]]],null]],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\"],[[22,\\\"isSaving\\\"],[23,0,[\\\"saveCompanyInfo\\\"]],\\\"btn btn-primary btn-lg save\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/company-info/info-comp/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class LogoCompComponent extends Component {\n    @service store;\n    @service() notifications;\n    @service intl;\n\n    @tracked saveButtonVisible;\n    @tracked logo;\n    @tracked logoImage;\n    @tracked logoField;\n    @tracked isLoading;\n\n    constructor() {\n        super(...arguments);\n        this.activate();\n    }\n\n    @action\n    async updateLogo(img) {\n        if (this.logo.isDeleted) this.logo = await this.store.createRecord('logo');\n        this.logo.logo = img;\n        this.logoImage = false;\n        this.saveButtonVisible = true;\n    }\n    @action\n    async saveLogo() {\n        this.isLoading = true;\n        if (this.logo.logo == 'removed') {\n            await this.logo.destroyRecord();\n        } else {\n            await this.logo.save();\n            this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n        }\n        this.isLoading = false;\n        this.saveButtonVisible = false;\n    }\n\n    async activate() {\n        let logo = await this.store.findAll('logo');\n\n        this.logoField = {\n            form: 'logo',\n            name: 'logo',\n            type: 'hdfile',\n            features: { is_image: true },\n        };\n\n        if (logo.firstObject) {\n            let currentLogo = logo.firstObject;\n            this.logoImage = currentLogo.logo.thumb;\n            this.logo = currentLogo;\n            this.logoField.value = currentLogo.logo;\n        } else {\n            this.logo = this.store.createRecord('logo');\n        }\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"fxlxPUMC\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.logo_header\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"company-info-container\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"blockquote\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.logo_text\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"logoImage\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"image\\\"],[8],[7,\\\"img\\\",true],[11,\\\"src\\\",[29,[[28,\\\"api-image\\\",[[23,0,[\\\"logoImage\\\"]]],null]]]],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[5,\\\"collector/field-comp\\\",[],[[\\\"@field\\\",\\\"@change\\\"],[[23,0,[\\\"logoField\\\"]],[23,0,[\\\"updateLogo\\\"]]]]],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saveButtonVisible\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\"],[[22,\\\"isLoading\\\"],[23,0,[\\\"saveLogo\\\"]],\\\"btn btn-primary btn-lg save\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/company-info/logo-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/general-v2/components/edit-time-setting/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldSettingCompComponent;\n\nimport Ember from 'ember';\n\nCollectorFieldSettingCompComponent = Ember.Component.extend({\n    store: Em.inject.service(),\n    intl: Em.inject.service(),\n    notifications: Ember.inject.service(),\n    date_interval_setting: Ember.computed.equal('configs.setting.name', 'date_interval'),\n    showSaveButton: Ember.computed(\n        'internalsetting.value',\n        'internalsetting.hasDirtyAttributes',\n        'date_interval_future',\n        'date_interval_future_check',\n        'isValueCustom',\n        function () {\n            if (\n                this.get('isValueCustom') &&\n                this.get('internalsetting.value') !== '' &&\n                (this.get('internalsetting.value') >= 0 ||\n                    this.get('internalsetting.value') === 'locked')\n            ) {\n                return true;\n            }\n            if (\n                this.get('date_interval_future_check') &&\n                (this.get('date_interval_future') === '' ||\n                    this.get('date_interval_future') === null)\n            ) {\n                return false;\n            } else if (\n                this.get('internalsetting.value') !== '' &&\n                this.get('internalsetting.value') !== null &&\n                (this.get('internalsetting.value') >= 0 ||\n                    this.get('internalsetting.value') === 'locked') &&\n                (this.get('internalsetting.hasDirtyAttributes') || this.get('date_interval_future'))\n            ) {\n                return true;\n            }\n            return false;\n        },\n    ),\n    options: [\n        {\n            value: 'locked',\n            text: 'wizard.onboarding.timetracker.edit_time.same_day',\n        },\n        {\n            value: '2',\n            text: 'wizard.onboarding.timetracker.edit_time.tomorrow',\n        },\n        {\n            value: '3',\n            text: 'wizard.onboarding.timetracker.edit_time.two_days',\n        },\n    ],\n    didReceiveAttrs: function () {\n        var configs;\n        this._super();\n        configs = this.get('configs');\n        this.set('loading', true);\n        return this.get('store')\n            .findAll('form', {\n                reload: true,\n            })\n            .then((forms) => {\n                var arr, field, firstValue, form, ref, secondValue, setting;\n                form = forms.filterBy('external_type', configs.form);\n                field = form.get('firstObject.fields').filterBy('external_type', configs.field);\n                setting = field.get('firstObject.settings').filterBy('name', configs.setting.name);\n                setting.get('firstObject').rollbackAttributes(); // revert all possible changes\n                if (setting.get('firstObject')) {\n                    this.set('internalsetting', setting.get('firstObject'));\n                } else {\n                    configs.setting.field = field.get('firstObject');\n                    this.set(\n                        'internalsetting',\n                        this.get('store').createRecord('form-field-setting', configs.setting),\n                    );\n                }\n                if (this.get('internalsetting').get('value').split(',').length > 1) {\n                    arr = this.get('internalsetting').get('value').split(',');\n                    firstValue = arr[0];\n                    secondValue = arr[1];\n                } else {\n                    firstValue = this.get('internalsetting').get('value');\n                }\n                if (\n                    firstValue !== 'locked' &&\n                    (ref = parseInt(firstValue)) !== 0 &&\n                    ref !== 2 &&\n                    ref !== 3\n                ) {\n                    firstValue--;\n                    this.set('isValueCustom', true);\n                }\n                this.get('internalsetting').set('value', firstValue);\n                if (secondValue) {\n                    this.set('date_interval_future', secondValue);\n                    this.set('date_interval_future_check', true);\n                }\n                //if @get('internalsetting').get('value') is \"locked\"\n                //    @get('internalsetting').set('value', 1)\n                return this.set('loading', false);\n            });\n    },\n    description: Em.computed('configs', function () {\n        var string;\n        string = `settings.${this.get('configs.form')}.${this.get('configs.field')}.${this.get('configs.setting')}`;\n        if (\n            this.get('intl').exists(\n                `settings.${this.get('configs.form')}.${this.get('configs.field')}.${this.get('configs.setting')}`,\n            )\n        ) {\n            return this.get('intl').t(\n                `settings.${this.get('configs.form')}.${this.get('configs.field')}.${this.get('configs.setting')}`,\n            );\n        }\n    }),\n    actions: {\n        changeValue: function (value, isCustom) {\n            if (isCustom && this.get('isValueCustom')) {\n                return;\n            }\n            this.set('isValueCustom', isCustom);\n            if (!this.get('isValueCustom') && !isCustom) {\n                return this.set('internalsetting.value', value);\n            } else {\n                return this.set('internalsetting.value', null);\n            }\n        },\n        save: function () {\n            var old_value, setting, tmp_value, val;\n            setting = this.get('internalsetting');\n            if (setting.get('value')) {\n                this.set('saving', true);\n                if (this.get('isValueCustom')) {\n                    this.set('placeholderValue', setting.get('value'));\n                    setting.set('value', parseInt(setting.get('value')) + 1);\n                } else {\n                    this.set('placeholderValue', null);\n                }\n                old_value = setting.get('value');\n                tmp_value = setting.get('value');\n                if (this.get('configs').setting.name === 'date_interval') {\n                    if (setting.get('value') === '0' || setting.get('value') === '1') {\n                        tmp_value = 'locked';\n                    }\n                    if (\n                        this.get('date_interval_future') &&\n                        this.get('date_interval_future_check')\n                    ) {\n                        val = Math.abs(this.get('date_interval_future'));\n                        tmp_value += ',' + val;\n                    }\n                }\n                setting.set('value', tmp_value);\n                return setting.save().then(() => {\n                    if (this.get('isValueCustom')) {\n                        old_value--;\n                    }\n                    setting.set('value', old_value);\n                    this.set('saving', false);\n                    if (this.get('settingSaved')) {\n                        return this.settingSaved();\n                    }\n                });\n            }\n        },\n    },\n});\n\nexport default CollectorFieldSettingCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"pCI+xSXE\",\"block\":\"{\\\"symbols\\\":[\\\"option\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"options\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"radio-inputs-settings\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\",[23,1,[\\\"value\\\"]],false]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[24,[\\\"internalsetting\\\",\\\"value\\\"]],[23,1,[\\\"value\\\"]]],null],[28,\\\"not\\\",[[24,[\\\"isValueCustom\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"class\\\",\\\"radio-svg-fill\\\"],[10,\\\"id\\\",\\\"Ellipse_30\\\"],[10,\\\"data-name\\\",\\\"Ellipse 30\\\"],[10,\\\"cx\\\",\\\"3\\\"],[10,\\\"cy\\\",\\\"3\\\"],[10,\\\"r\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(3 3)\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-text\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"radio-inputs-settings\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\",null,true]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isValueCustom\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"class\\\",\\\"radio-svg-fill\\\"],[10,\\\"id\\\",\\\"Ellipse_30\\\"],[10,\\\"data-name\\\",\\\"Ellipse 30\\\"],[10,\\\"cx\\\",\\\"3\\\"],[10,\\\"cy\\\",\\\"3\\\"],[10,\\\"r\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(3 3)\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-text-custom\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.edit_time.custom.text_start\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"disabled\\\",\\\"class\\\"],[[24,[\\\"placeholderValue\\\"]],true,\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"isValueCustom\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"class\\\"],[[24,[\\\"internalsetting\\\",\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"disabled\\\",\\\"class\\\"],[null,true,\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.edit_time.custom.text_end\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-inputs-settings\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-icon\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"checked\\\"],[\\\"checkbox\\\",\\\"form-control small-checkbox\\\",[24,[\\\"date_interval_future_check\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-text-relative\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"unless\\\",[[24,[\\\"date_interval_future_check\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overlay\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"settings.date_interval.can_save_to_future\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"date_interval_future\\\"]],[28,\\\"not\\\",[[24,[\\\"date_interval_future_check\\\"]]],null]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"settings.date_interval.can_save_to_future_desc\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"disabled\\\",[28,\\\"not\\\",[[24,[\\\"showSaveButton\\\"]]],null]],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/edit-time-setting/template.hbs\"}});","import Component from '@glimmer/component';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class HolidayComponent extends Component {\n    @service ttapi;\n\n    @tracked dirty = true;\n    @tracked initvalue;\n    @tracked startdate;\n    @tracked isLoading = false;\n    @tracked loadingData = true;\n    @tracked isOn = false;\n\n    constructor() {\n        super(...arguments);\n\n        this.load();\n    }\n\n    async load() {\n        const response = await this.ttapi.request('/api/holidays/settings');\n\n        this.startdate = this.initvalue = response.startdate;\n\n        if (response.startdate) this.isOn = true;\n\n        this.loadingData = false;\n    }\n\n    async saveStartdate(startdate) {\n        return await this.ttapi.request('/api/holidays/settings', {\n            method: 'POST',\n            headers: {\n                'Content-Type': 'application/json',\n            },\n            data: JSON.stringify({ startdate: startdate }),\n        });\n    }\n\n    @action\n    toggle() {\n        this.isOn = !this.isOn;\n\n        if (!this.isOn) {\n            this.startdate = this.initvalue = null;\n            this.saveStartdate(null);\n        }\n    }\n\n    @action\n    async saveSetting() {\n        this.isLoading = true;\n        await this.saveStartdate(this.startdate);\n\n        this.initvalue = this.startdate;\n        this.isLoading = false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"lwzqKei6\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loadingData\\\"]]],null,{\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-component\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[23,0,[\\\"isOn\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggle\\\"],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-setting-header\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"settings.holiday_startdate\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n     \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"isOn\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-component-container\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"settings.holiday_startdate.date\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"form-control add-fields\\\",[23,0,[\\\"startdate\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"disabled\\\",[28,\\\"eq\\\",[[23,0,[\\\"startdate\\\"]],[23,0,[\\\"initvalue\\\"]]],null]],[12,\\\"class\\\",[29,[\\\"btn btn-primary \\\",[28,\\\"if\\\",[[23,0,[\\\"isLoading\\\"]],\\\"is-loading\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/holiday/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class CustomExportComponent extends Component {\n    @service ttapi;\n    @service('collector-service') Collector;\n\n    /**\n     * When salarytypes_v2 used always call ttapi/api/salary/automaticSalarytypes after changing km setting\n     */\n    @action\n    async saved() {\n        if (!this.Collector.testNeeds(['products.salarytype_v2'])) return;\n\n        await this.ttapi.post('api/salary/automaticSalarytypes');\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"e+t91Q6p\",\"block\":\"{\\\"symbols\\\":[\\\"@setting\\\"],\\\"statements\\\":[[5,\\\"settings/general-v2/radio-setting\\\",[],[[\\\"@options\\\",\\\"@saved\\\"],[[23,1,[\\\"optionsForComponent\\\"]],[23,0,[\\\"saved\\\"]]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/km/template.hbs\"}});","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { inject as service } from '@ember/service';\nimport { action, set } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { A } from '@ember/array';\n\nexport default class NotificationCenterComponent extends Component {\n    @service('collector-service') collector;\n    @service intl;\n    @service ttapi;\n    @service customerSettings;\n    @service session;\n\n    @tracked updateThese;\n    @tracked notificationSettings;\n\n    get styleNamespace() {\n        return podNames['settings/general-v2/components/notification-center'];\n    }\n\n    getNotificationChannels(channel) {\n        let channels = A();\n        switch (channel) {\n            case 'notification':\n                channels.pushObject(this.intl.t('widget.anomalities.push'));\n                break;\n            case 'email':\n                channels.pushObject(this.intl.t('widget.anomalities.email'));\n                break;\n            case 'sms':\n                channels.pushObject(this.intl.t('widget.anomalities.sms'));\n                break;\n            case 'tt4':\n                channels.pushObject(this.intl.t('settings.notification-center.in-service-message'));\n                break;\n        }\n        return channels;\n    }\n\n    async getNotificationSettings() {\n        let retArr = A();\n        let splittedChannels = [];\n\n        let settings = await this.ttapi._get('notification/categories');\n\n        let push_time = await this.customerSettings.checkSetting(\n            'push_notification_time_hours_' + this.session.currentUser.company_info.country,\n        );\n\n        let extraSettings = [\n            {\n                type:\n                    'push_notification_time_hours_' + this.session.currentUser.company_info.country,\n                active: push_time ? true : false,\n                translation: 'settings.notifications.use_missing_hours',\n                help:\n                    'notification.' +\n                    'push_notification_time_hours_' +\n                    this.session.currentUser.company_info.country.toLowerCase() +\n                    '.sending-time',\n                channel: 'notification',\n                customTime: push_time ? push_time : '16:00',\n                custom: true,\n            },\n        ];\n\n        settings.pushObjects(extraSettings);\n\n        settings.forEach((setting) => {\n            if (!setting.needs || (setting.needs && this.collector.testNeeds(setting.needs))) {\n                set(\n                    setting,\n                    'help',\n                    'notification.' + setting.type.toLowerCase() + '.sending-time',\n                );\n                splittedChannels = setting.channel.split(',');\n                let channels = [];\n                for (var channel of splittedChannels) {\n                    channels.pushObject(this.getNotificationChannels(channel));\n                }\n                set(setting, 'channel', channels.join(', '));\n                if (setting.customTime) {\n                    set(setting, 'customTime', this.getCustomTime(setting.customTime));\n                    set(setting, 'hasCustomTime', true);\n                }\n                // unapproved_worktimes customer-setting used to be its own customer-setting but now we combine it with this notification-setting\n                if (setting.type == 'unapprovedworktimes') {\n                    set(setting, 'hasCustomTime', true);\n                    let unaprrovedSetting =\n                        this.customerSettings.checkSetting('unapproved_worktimes');\n                    if (!unaprrovedSetting) {\n                        set(setting, 'active', false);\n                        set(setting, 'customTime', '16:00');\n                    } else {\n                        set(setting, 'customTime', this.getCustomTime(unaprrovedSetting));\n                    }\n                }\n                retArr.pushObject(setting);\n            }\n        });\n        return retArr;\n    }\n\n    get isDisabled() {\n        return this.updateThese.length == 0;\n    }\n\n    async setNotificationSettings() {\n        this.notificationSettings = await this.getNotificationSettings();\n    }\n\n    constructor() {\n        super(...arguments);\n        //this.setNotificationSettings();\n        this.notificationSettings = this.getNotificationSettings();\n        this.updateThese = A();\n    }\n\n    @action\n    async save() {\n        for (var setting of this.updateThese) {\n            // we need to update customer-setting also here\n            if (setting.type == 'unapprovedworktimes')\n                await this.customerSettings.setSetting(\n                    'unapproved_worktimes',\n                    setting.active ? this.setCustomTime(setting.customTime) : 'off',\n                );\n            if (setting.custom)\n                await this.customerSettings.setSetting(\n                    setting.type,\n                    setting.active ? this.setCustomTime(setting.customTime) : 'off',\n                );\n            else await this.saveNotification(setting);\n        }\n        this.updateThese = A();\n        this.args.settingSaved();\n    }\n\n    @action\n    setSetting(setting, state) {\n        set(setting, 'active', state);\n        if (!this.updateThese.includes(setting)) {\n            this.updateThese.pushObject(setting);\n        }\n    }\n\n    saveNotification(notification) {\n        let date = moment().format('YYYY-MM-DD');\n        let time = notification.customTime ? notification.customTime : null;\n\n        let customTime = time\n            ? moment(date + ' ' + time + ':00')\n                  .utc()\n                  .format('HH:mm')\n            : null;\n\n        return this.ttapi._post('notification/update', {\n            notification: notification.type,\n            active: notification.active,\n            customTime: customTime,\n        });\n    }\n\n    setCustomTime(customTime) {\n        if (!customTime) return null;\n        const utctime = customTime;\n        const date = moment().format('YYYY-MM-DD');\n        return moment(date + ' ' + utctime + ':00')\n            .utc()\n            .format('HH:mm');\n    }\n\n    getCustomTime(customTime) {\n        if (!customTime) return null;\n        const utctime = customTime;\n        const date = moment().format('YYYY-MM-DD');\n        return moment(date + ' ' + utctime + ':00Z').format('HH:mm');\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"yqORUJh6\",\"block\":\"{\\\"symbols\\\":[\\\"setting\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"notification.notification_name\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"notification.sending_time\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"notification.send_to\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"notification.sending_channels\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"await\\\",[[24,[\\\"notificationSettings\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"toggle-cell\\\"],[8],[0,\\\"\\\\n                    \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@value\\\",\\\"@onToggle\\\",\\\"@size\\\",\\\"@theme\\\"],[[23,1,[\\\"active\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setSetting\\\",[23,1,[]]],null],\\\"large\\\",\\\"light\\\"]]],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"translation\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[[23,1,[\\\"translation\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"notification.\\\",[23,1,[\\\"type\\\"]],\\\".title\\\"],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[[23,1,[\\\"help\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"hasCustomTime\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"change\\\",\\\"disabled\\\"],[\\\"time\\\",[23,1,[\\\"customTime\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setSetting\\\",[23,1,[]],true],null],[28,\\\"not\\\",[[23,1,[\\\"active\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"notification.\\\",[23,1,[\\\"type\\\"]],\\\".send_to\\\"],null]],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[23,1,[\\\"channel\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[12,\\\"disabled\\\",[22,\\\"isDisabled\\\"]],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"save\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/notification-center/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/general-v2/components/number-field/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldSettingCompNumberFieldComponent;\n\nimport Ember from 'ember';\n\nCollectorFieldSettingCompNumberFieldComponent = Ember.Component.extend({\n    customerSettings: Ember.inject.service(),\n    value: Em.computed(function () {\n        return (\n            this.get('customerSettings').checkSetting(this.get('configs.setting')) ||\n            this.get('configs.defaultVal')\n        );\n    }),\n    actions: {\n        save: function () {\n            this.set('loading', true);\n            return this.get('customerSettings')\n                .setSetting(this.get('configs.setting'), this.get('value'))\n                .then(() => {\n                    this.set('loading', false);\n                    if (this.get('settingSaved')) {\n                        return this.settingSaved();\n                    }\n                });\n        },\n        validateInput: function () {\n            if (this.get('configs.value') < this.get('configs.minVal')) {\n                return this.set('configs.value', this.get('configs.minVal'));\n            }\n        },\n    },\n});\n\nexport default CollectorFieldSettingCompNumberFieldComponent;\n","export default Ember.HTMLBars.template({\"id\":\"VlEby9J8\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-inline\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group setting-component-input-group\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"min\\\",\\\"keyUp\\\"],[\\\"number\\\",[24,[\\\"value\\\"]],\\\"form-control\\\",[24,[\\\"configs\\\",\\\"minVal\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validateInput\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"configs\\\",\\\"unit\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[1,[24,[\\\"configs\\\",\\\"unit\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"value\\\"]]],null]],[10,\\\"type\\\",\\\"button\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/number-field/template.hbs\"}});","/* eslint-disable ember/named-functions-in-promises */\nimport Component from '@ember/component';\nimport { set, get, computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { A } from '@ember/array';\nimport EmberObject from '@ember/object';\nimport { typeOf } from '@ember/utils';\n\nexport default Component.extend({\n    Collector: service('collector-service'),\n    session: service(),\n    store: service(),\n    intl: service(),\n    initapp: service(),\n    servicehandler: service(),\n    tools: service(),\n    notifications: service(),\n    capi: service(),\n    flags: service(),\n    ttapi: service(),\n    validationErrorTexts: null,\n\n    settingType: computed('setting.category', function () {\n        if (this.setting.category == 'salaries.overtime') return 'overtime';\n        else if (this.setting.category == 'salaries.calculations') return 'compensations';\n        return;\n    }),\n    //startdate: Em.computed ->\n    //    moment().format('YYYY-MM-DD')\n\n    customDayBased_saturday: computed('customDayBased.[]', function () {\n        return get(this, 'customDayBased').filter((el) => el.name === '_saturday');\n    }),\n    customDayBased_sunday: computed('customDayBased.[]', function () {\n        return get(this, 'customDayBased').filter((el) => el.name === '_sunday');\n    }),\n\n    customDayBased_normal: computed('customDayBased.[]', function () {\n        return get(this, 'customDayBased').filter(\n            (el) => !(el['name'] === '_saturday' || el['name'] === '_sunday'),\n        );\n    }),\n\n    salarytypes: computed(function () {\n        const fields = [];\n        if (\n            get(this, 'Collector').testNeeds(['products.salarytype||products.selectablesalarytype'])\n        ) {\n            return get(this, 'store')\n                .query('salarytype', { type: '(empty)' })\n                .then((salarytypes) => {\n                    salarytypes.forEach((stype) => {\n                        if (get(stype, 'id')) {\n                            return fields.push({ id: get(stype, 'id'), text: get(stype, 'name') });\n                        }\n                    });\n                    return fields;\n                });\n        } else {\n            return fields;\n        }\n    }),\n\n    fields: computed(function () {\n        return get(this, 'Collector')\n            .fieldArray('worktime')\n            .filterBy('type', 'hours')\n            .rejectBy('name', 'work_hours');\n    }),\n    // filter all the overtime_types with needs\n\n    overtime_types: computed('worktimegroup', function () {\n        const types = get(this, '_overtime_types');\n        const keys = Object.keys(types);\n\n        const ret = {};\n        keys.forEach((key) => {\n            // skip types that has needs but needs return false\n            if (types[key].needs && !get(this, 'Collector').testNeeds(types[key].needs)) {\n                return;\n            }\n            // all the other types goes to ret\n            return (ret[key] = types[key]);\n        });\n        return ret;\n    }),\n    init() {\n        this._super(...arguments);\n        set(this, 'validationErrors', 0);\n        set(this, 'validationErrorTexts', []);\n        const useNewOvertimeSettings = this.Collector.testNeeds([\n            'products.salarytype_v2||flag.new-overtime-settings',\n        ]);\n        const _overtime_types = EmberObject.create({\n            daily_overtime: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.daily_overtime',\n                in_use: false,\n                settings: {\n                    _50start: 8,\n                    _100start: 10,\n                    _50multiplier: 0.5,\n                    _100multiplier: 1,\n                    _50saldotype: false,\n                    _100saldotype: false,\n                },\n                product: 'overtime_daily',\n                product_50saldotype: 'overtime_daily_50_saldo',\n                product_100saldotype: 'overtime_daily_100_saldo',\n                rule_creator(settings) {\n                    return [\n                        {\n                            name: '_50',\n                            values: {\n                                from: settings._50start,\n                                to: settings._100start,\n                                multiplier: settings._50multiplier,\n                                saldotype: settings._50saldotype,\n                            },\n                        },\n                        {\n                            name: '_100',\n                            values: {\n                                from: settings._100start,\n                                multiplier: settings._100multiplier,\n                                saldotype: settings._100saldotype,\n                            },\n                        },\n                    ];\n                },\n                rule_parser() {\n                    return {\n                        _50start: '_50.values.from',\n                        _100start: '_100.values.from',\n                        _50multiplier: '_50.values.multiplier',\n                        _100multiplier: '_100.values.multiplier',\n                        _50saldotype: '_50.values.saldotype',\n                        _100saldotype: '_100.values.saldotype',\n                    };\n                },\n            },\n\n            weekly_overtime: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.weekly_overtime',\n                in_use: false,\n                settings: useNewOvertimeSettings\n                    ? {\n                          _week50start: 40,\n                          _week100start: 48,\n                          dailymax: 8,\n                          _week50multiplier: 0.5,\n                          _week100multiplier: 1,\n                          _week50saldotype: false,\n                          _week100saldotype: false,\n                      }\n                    : {\n                          _week50start: 0,\n                          _week100start: 8,\n                          _week50multiplier: 0.5,\n                          _week100multiplier: 1,\n                          _week50saldotype: false,\n                          _week100saldotype: false,\n                      },\n                product: 'overtime_weekly',\n                product_week50saldotype: 'overtime_weekly_50_saldo',\n                product_week100saldotype: 'overtime_weekly_100_saldo',\n                rule_creator: useNewOvertimeSettings\n                    ? function (settings) {\n                          return [\n                              {\n                                  name: '_week50',\n                                  values: {\n                                      from: settings._week50start,\n                                      to: settings._week100start,\n                                      dailymax: settings.dailymax,\n                                      weeklyOverTimeStartsFrom: settings._week50start,\n                                      multiplier: settings._week50multiplier,\n                                      saldotype: settings._week50saldotype,\n                                  },\n                              },\n                              {\n                                  name: '_week100',\n                                  values: {\n                                      from: settings._week100start,\n                                      dailymax: settings.dailymax,\n                                      weeklyOverTimeStartsFrom: settings._week50start,\n                                      multiplier: settings._week100multiplier,\n                                      saldotype: settings._week100saldotype,\n                                  },\n                              },\n                          ];\n                      }\n                    : function (settings) {\n                          return [\n                              {\n                                  name: '_week50',\n                                  values: {\n                                      from: settings._week50start,\n                                      to: settings._week100start,\n                                      multiplier: settings._week50multiplier,\n                                      saldotype: settings._week50saldotype,\n                                  },\n                              },\n                              {\n                                  name: '_week100',\n                                  values: {\n                                      from: settings._week100start,\n                                      multiplier: settings._week100multiplier,\n                                      saldotype: settings._week100saldotype,\n                                  },\n                              },\n                          ];\n                      },\n                rule_parser() {\n                    return useNewOvertimeSettings\n                        ? {\n                              _week50start: '_week50.values.from',\n                              _week100start: '_week100.values.from',\n                              dailymax: '_week100.values.dailymax',\n                              weeklyOverTimeStartsFrom: '_week50.values.from',\n                              _week50multiplier: '_week50.values.multiplier',\n                              _week100multiplier: '_week100.values.multiplier',\n                              _week50saldotype: '_week50.values.saldotype',\n                              _week100saldotype: '_week100.values.saldotype',\n                          }\n                        : {\n                              _week50start: '_week50.values.from',\n                              _week100start: '_week100.values.from',\n                              _week50multiplier: '_week50.values.multiplier',\n                              _week100multiplier: '_week100.values.multiplier',\n                              _week50saldotype: '_week50.values.saldotype',\n                              _week100saldotype: '_week100.values.saldotype',\n                          };\n                },\n            },\n            extrahours_overtime: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.extrahours',\n                in_use: false,\n\n                settings: useNewOvertimeSettings\n                    ? {\n                          _extrahours_start: 7.5,\n                          _extrahours_end: 8,\n                          _extrahours_week_max: 2.5,\n                          multiplier: 1,\n                          saldotype: false,\n                      }\n                    : {\n                          _extrahours_start: 7.5,\n                          _extrahours_end: 8,\n                          multiplier: 1,\n                          saldotype: false,\n                      },\n\n                product: 'overtime_extrahours',\n                productsaldotype: 'overtime_extrahours_saldo',\n                rule_creator: useNewOvertimeSettings\n                    ? function (settings) {\n                          return [\n                              {\n                                  name: '_extrahours',\n                                  values: {\n                                      from: settings._extrahours_start,\n                                      to: settings._extrahours_end,\n                                      week_max: settings._extrahours_week_max,\n                                      multiplier: settings.multiplier,\n                                      saldotype: settings.saldotype,\n                                  },\n                              },\n                          ];\n                      }\n                    : function (settings) {\n                          return [\n                              {\n                                  name: '_extrahours',\n                                  values: {\n                                      from: settings._extrahours_start,\n                                      to: settings._extrahours_end,\n                                      multiplier: settings.multiplier,\n                                      saldotype: settings.saldotype,\n                                  },\n                              },\n                          ];\n                      },\n                rule_parser() {\n                    return useNewOvertimeSettings\n                        ? {\n                              _extrahours_start: '_extrahours.values.from',\n                              _extrahours_end: '_extrahours.values.to',\n                              _extrahours_week_max: '_extrahours.values.week_max',\n                              multiplier: '_extrahours.values.multiplier',\n                              saldotype: '_extrahours.values.saldotype',\n                          }\n                        : {\n                              _extrahours_start: '_extrahours.values.from',\n                              _extrahours_end: '_extrahours.values.to',\n                              multiplier: '_extrahours.values.multiplier',\n                              saldotype: '_extrahours.values.saldotype',\n                          };\n                },\n            },\n            time_based: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.time_based',\n                in_use: false,\n                settings: {\n                    _evening_start: '18:00',\n                    _evening_end: '22:00',\n                    _night_start: '22:00',\n                    _night_end: '06:00',\n                    _eveningmultiplier: null,\n                    _nightmultiplier: null,\n                    _eveningsaldotype: false,\n                    _nightsaldotype: false,\n                },\n                product: 'overtime_time_based',\n                product_eveningsaldotype: 'overtime_time_based_evening_saldo',\n                product_nightsaldotype: 'overtime_time_based_night_saldo',\n                rule_creator(settings) {\n                    return [\n                        {\n                            name: '_evening',\n                            values: {\n                                from: settings._evening_start,\n                                to: settings._evening_end,\n                                do_not_calculate_if_overtime: settings._evening_checked,\n                                calculate_compensations_always:\n                                    settings._evening_calculate_compensations_always,\n                                multiplier: settings._eveningmultiplier,\n                                saldotype: settings._eveningsaldotype,\n                            },\n                        },\n                        {\n                            name: '_night',\n                            values: {\n                                from: settings._night_start,\n                                to: settings._night_end,\n                                do_not_calculate_if_overtime: settings._night_checked,\n                                calculate_compensations_always:\n                                    settings._night_calculate_compensations_always,\n                                multiplier: settings._nightmultiplier,\n                                saldotype: settings._nightsaldotype,\n                            },\n                        },\n                    ];\n                },\n                rule_parser() {\n                    return {\n                        _evening_start: '_evening.values.from',\n                        _evening_end: '_evening.values.to',\n                        _evening_checked: '_evening.values.do_not_calculate_if_overtime',\n                        _evening_calculate_compensations_always:\n                            '_evening.values.calculate_compensations_always',\n                        _night_start: '_night.values.from',\n                        _night_end: '_night.values.to',\n                        _night_checked: '_night.values.do_not_calculate_if_overtime',\n                        _night_calculate_compensations_always:\n                            '_night.values.calculate_compensations_always',\n                        //_calculate_compensations_always: '_night.values.calculate_compensations_always'\n                        _eveningmultiplier: '_evening.values.multiplier',\n                        _nightmultiplier: '_night.values.multiplier',\n                        _eveningsaldotype: '_evening.values.saldotype',\n                        _nightsaldotype: '_night.values.saldotype',\n                    };\n                },\n            },\n            time_based_se: {\n                needs: ['serviceCountry@se'],\n                name: 'overtime.time_based',\n                in_use: false,\n                settings: {},\n                product: 'overtime_time_based_se',\n                alwaysOn: true,\n                rule_creator() {\n                    return [];\n                },\n                rule_parser() {\n                    return {};\n                },\n            },\n            overtime_period: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.period_overtime',\n                in_use: false,\n                settings: {\n                    _periodstart: '2020-01-01',\n                    _periodlength: 14,\n                    _period50calculate_after_hours: 80,\n                    _period100calculate_after_hours: 120,\n                    _period50multiplier: 0.5,\n                    _period100multiplier: 1,\n                    _period50saldotype: false,\n                    _period100saldotype: false,\n                },\n                product: 'overtime_period',\n                product_period50saldotype: 'overtime_period_50_saldo',\n                product_period100saldotype: 'overtime_period_100_saldo',\n                rule_creator(settings) {\n                    return [\n                        {\n                            name: '_period50',\n                            values: {\n                                from: settings._periodstart,\n                                to: settings._period100calculate_after_hours,\n                                period_length: settings._periodlength,\n                                calculate_after_hours: settings._period50calculate_after_hours,\n                                multiplier: settings._period50multiplier,\n                                saldotype: settings._period50saldotype,\n                            },\n                        },\n                        {\n                            name: '_period100',\n                            values: {\n                                from: settings._periodstart,\n                                period_length: settings._periodlength,\n                                calculate_after_hours: settings._period100calculate_after_hours,\n                                multiplier: settings._period100multiplier,\n                                saldotype: settings._period100saldotype,\n                            },\n                        },\n                    ];\n                },\n                rule_parser() {\n                    return {\n                        _periodstart: '_period50.values.from',\n                        _periodlength: '_period50.values.period_length',\n                        _period50calculate_after_hours: '_period50.values.calculate_after_hours',\n                        _period100calculate_after_hours: '_period100.values.calculate_after_hours',\n                        _period50multiplier: '_period50.values._period50multiplier',\n                        _period100multiplier: '_period100.values._period100multiplier',\n                        _period50saldotype: '_period50.values.saldotype',\n                        _period100saldotype: '_period100.values.saldotype',\n                    };\n                },\n            },\n            overtime_splitted: {\n                needs: ['serviceCountry@fi'],\n                name: 'overtime.split_overtimehours',\n                in_use: false,\n                settings: {\n                    multiplier: 1,\n                    saldotype: false,\n                },\n                product: 'overtime_splitted',\n                productsaldotype: 'overtime_splitted_saldo',\n                rule_creator(settings) {\n                    return [\n                        {\n                            name: '_overtimehours',\n                            values: {\n                                multiplier: settings.multiplier,\n                                saldotype: settings.saldotype,\n                            },\n                        },\n                        { name: '_basichours', values: {} },\n                    ];\n                },\n                rule_parser() {\n                    return {\n                        multiplier: '_overtimehours.values.multiplier',\n                        saldotype: '_overtimehours.values.saldotype',\n                    };\n                },\n            },\n        });\n        set(this, '_overtime_types', _overtime_types);\n\n        set(this, 'days', [\n            { id: 'mo', name: get(this, 'intl').t('workday.calendar.week.monday') },\n            { id: 'tu', name: get(this, 'intl').t('workday.calendar.week.tuesday') },\n            { id: 'we', name: get(this, 'intl').t('workday.calendar.week.wednesday') },\n            { id: 'th', name: get(this, 'intl').t('workday.calendar.week.thursday') },\n            { id: 'fr', name: get(this, 'intl').t('workday.calendar.week.friday') },\n            { id: 'sa', name: get(this, 'intl').t('workday.calendar.week.saturday') },\n            { id: 'su', name: get(this, 'intl').t('workday.calendar.week.sunday') },\n        ]);\n\n        set(this, 'period_lengths', [\n            { id: '7', name: '1 ' + get(this, 'intl').t('workday.calendar.week') },\n            { id: '14', name: '2 ' + get(this, 'intl').t('workday.calendar.week') },\n            { id: '21', name: '3 ' + get(this, 'intl').t('workday.calendar.week') },\n            { id: '28', name: '4 ' + get(this, 'intl').t('workday.calendar.week') },\n            { id: '35', name: '5 ' + get(this, 'intl').t('workday.calendar.week') },\n            { id: '42', name: '6 ' + get(this, 'intl').t('workday.calendar.week') },\n        ]);\n    },\n\n    async didReceiveAttrs() {\n        set(this, 'fieldsToBeRemoved', []);\n        set(this, 'loadingData', true);\n\n        //if (get(this,'overtime_types.time_based.settings._evening_start'))\n        if (get(this, 'customrules')) {\n            await this.setRules(this.parseIfString(get(this, 'customrules')));\n        } else {\n            await this.getGeneralRules();\n        }\n\n        this.setAllSettings();\n\n        set(this, '_saturdayEnabled', get(this, 'customDayBased_saturday').length > 0);\n        set(this, '_sundayEnabled', get(this, 'customDayBased_sunday').length > 0);\n\n        set(this, 'loadingData', false);\n\n        if (get(this, 'overtime_types.time_based.in_use')) {\n            if (\n                get(this, 'overtime_types.time_based.settings._evening_start') == '' &&\n                get(this, 'overtime_types.time_based.settings._evening_end') == ''\n            ) {\n                set(this, 'eveningEnabled', false);\n            } else {\n                set(this, 'eveningEnabled', true);\n            }\n\n            if (\n                get(this, 'overtime_types.time_based.settings._night_start') == '' &&\n                get(this, 'overtime_types.time_based.settings._night_end') == ''\n            ) {\n                set(this, 'nightEnabled', false);\n            } else {\n                set(this, 'nightEnabled', true);\n            }\n        } else {\n            set(this, 'nightEnabled', false);\n            set(this, 'eveningEnabled', false);\n        }\n    },\n\n    //_100start: get rules.findBy('name', '_100'), 'values.from'\n\n    actions: {\n        toggleWeekend(day, bool) {\n            if (!bool) {\n                set(\n                    this,\n                    'customDayBased',\n                    get(this, 'customDayBased').filter((el) => el.name !== day),\n                );\n            } else {\n                this['add' + day]();\n            }\n\n            set(this, day + 'Enabled', bool);\n            return true;\n        },\n\n        toggleCompCheck(rulename, value) {\n            if (rulename) {\n                if (value) {\n                    set(this, rulename, false);\n                } else {\n                    set(this, rulename, true);\n                }\n            } else {\n                if (value) {\n                    set(value, 'checked', false);\n                } else {\n                    set(value, 'checked', true);\n                }\n            }\n        },\n        toggleCustomCompCheck(row, value) {\n            if (value) {\n                set(row, 'checked', false);\n            } else {\n                set(row, 'checked', true);\n            }\n        },\n        checkValues(value1, value2) {\n            if (value1.toString() === value2.toString()) {\n                set(this, 'disabled', true);\n            } else {\n                set(this, 'disabled', false);\n            }\n        },\n\n        addTimeBased() {\n            get(this, 'customTimeBased').pushObject({});\n        },\n\n        addDayBased() {\n            get(this, 'customDayBased').pushObject({});\n        },\n\n        removeCustomTimeBased(row) {\n            if (get(row, 'name') && this.onlyOneRuleForField(get(row, 'name'), 'customTimeBased')) {\n                get(this, 'fieldsToBeRemoved').push(get(row, 'name'));\n                if (row.saldotype) this.fieldsToBeRemoved.push(row.name + '_saldo');\n            }\n            get(this, 'customTimeBased').removeObject(row);\n            set(this, 'validationErrors', false);\n        },\n\n        removeCustomDayBased(row) {\n            if (get(row, 'name') && this.onlyOneRuleForField(get(row, 'name'), 'customDayBased')) {\n                get(this, 'fieldsToBeRemoved').push(get(row, 'name'));\n                if (row.saldotype) this.fieldsToBeRemoved.push(row.name + '_saldo');\n            }\n            get(this, 'customDayBased').removeObject(row);\n            set(this, 'validationErrors', false);\n        },\n\n        async createAndSaveRules() {\n            set(this, 'validationErrors', 0);\n            set(this, 'validationErrorTexts', []);\n            //console.info \"types\",Object.keys(@get('overtime_types')), @get 'overtime_types'\n\n            let type;\n            const rules = [];\n            const needed_products = [];\n            const unneeded_products = [];\n            const overtime_types = get(this, 'overtime_types');\n\n            const wtypes = [];\n            let wtypesString = '';\n            if (get(this, 'salarytype')) {\n                for (let wt of Array.from(get(this, 'salarytype'))) {\n                    wtypes.push(wt.id);\n                }\n                wtypesString = wtypes.join();\n            }\n\n            for (type of Array.from(Object.keys(overtime_types))) {\n                const overtime_type = overtime_types[type];\n\n                if (overtime_type.in_use) {\n                    rules.pushObjects(overtime_type.rule_creator(overtime_type.settings));\n                    needed_products.pushObject(overtime_type.product);\n                } else {\n                    unneeded_products.pushObject(overtime_type.product);\n                }\n\n                /*\n                 * Validate overtime settings\n                 */\n                if (\n                    this.Collector.testNeeds(['products.salarytype_v2||flag.new-overtime-settings'])\n                ) {\n                    if (type === 'weekly_overtime' && overtime_type.in_use) {\n                        if (\n                            parseFloat(overtime_type.settings._week50start) >\n                            parseFloat(overtime_type.settings._week100start)\n                        ) {\n                            this.incrementProperty('validationErrors');\n                            this.validationErrorTexts.push(\n                                'overtime.weekly_overtime.validation_error',\n                            );\n                        }\n                    }\n\n                    if (type === 'daily_overtime' && overtime_type.in_use) {\n                        if (\n                            parseFloat(overtime_type.settings._50start) >\n                            parseFloat(overtime_type.settings._100start)\n                        ) {\n                            this.incrementProperty('validationErrors');\n                            this.validationErrorTexts.push(\n                                'overtime.daily_overtime.validation_error',\n                            );\n                        }\n                    }\n\n                    if (type === 'extrahours_overtime' && overtime_type.in_use) {\n                        if (\n                            parseFloat(overtime_type.settings._extrahours_start) >\n                            parseFloat(overtime_type.settings._extrahours_end)\n                        ) {\n                            this.incrementProperty('validationErrors');\n                            this.validationErrorTexts.push(\n                                'overtime.extrahours_overtime.validation_error',\n                            );\n                        }\n                    }\n\n                    if (type === 'overtime_period' && overtime_type.in_use) {\n                        if (\n                            parseFloat(overtime_type.settings._period50calculate_after_hours) >\n                            parseFloat(overtime_type.settings._period100calculate_after_hours)\n                        ) {\n                            this.incrementProperty('validationErrors');\n                            this.validationErrorTexts.push(\n                                'overtime.overtime_period.validation_error',\n                            );\n                        }\n                    }\n                }\n                let saldoProductsNeeds = this.checkSaldoProductsNeeds(overtime_type);\n\n                if (saldoProductsNeeds.needed)\n                    saldoProductsNeeds.needed.map((product) => needed_products.pushObject(product));\n                if (saldoProductsNeeds.unneeded)\n                    saldoProductsNeeds.unneeded.map((product) =>\n                        unneeded_products.pushObject(product),\n                    );\n                /*\n                if ((overtime_type.product === \"overtime_time_based\") && overtime_type.in_use) {\n                    rules.forEach(rule => {\n                        if ((rule.values.from === \"\") && (rule.values.to === \"\")) {\n                            rules.removeObject(rule);\n                        }\n                    });\n                }*/\n            }\n\n            for (let rule of Array.from(rules)) {\n                rule['values']['salarytypes'] = wtypesString;\n            }\n\n            const fields = {};\n\n            get(this, 'customTimeBased').forEach((row) => {\n                row = this.validateInputs(row, 'time');\n                if (!get(row, 'name') && get(row, 'text')) {\n                    const sameField = this.searchFieldWithName(fields, get(row, 'text'));\n                    if (sameField) {\n                        set(row, 'name', sameField);\n                    } else {\n                        set(\n                            row,\n                            'name',\n                            '_' +\n                                get(this, 'tools').computerizeHumanInput(get(row, 'text')) +\n                                Math.floor(1000 + Math.random() * 9000),\n                        );\n                    }\n                }\n\n                const field = get(row, 'name');\n\n                fields['worktime.' + field] = { type: 'hours', name: get(row, 'text') };\n                fields['worktime.' + field + '.@hide'] = 'true';\n\n                if (row.saldotype) {\n                    fields['worktime.' + field + '_saldo'] = {\n                        type: 'hours',\n                        name: get(row, 'text') + ' (saldo)',\n                    };\n                    fields['worktime.' + field + '_saldo' + '.@hide'] = 'true';\n                }\n                rules.pushObject({\n                    name: 'hoursbetween',\n                    field,\n                    text: get(row, 'text'),\n                    values: {\n                        from: get(row, 'start'),\n                        to: get(row, 'end'),\n                        mid_week_holiday:\n                            get(row, 'mid_week_holiday') === undefined\n                            ? false\n                            : get(row, 'mid_week_holiday'),\n                        do_not_calculate_if_overtime:\n                            get(row, 'checked') === undefined ? false : get(row, 'checked'),\n                        calculate_compensations_always:\n                            get(row, 'calculate_compensations_always') === undefined\n                                ? false\n                                : get(row, 'calculate_compensations_always'),\n                        saldotype: row.saldotype === undefined ? false : row.saldotype,\n                        multiplier: row.multiplier === undefined ? null : row.multiplier,\n                    },\n                });\n            });\n\n            get(this, 'customDayBased').forEach((row) => {\n                row = this.validateInputs(row, 'day');\n                if (!get(row, 'name') && get(row, 'text')) {\n                    const sameField = this.searchFieldWithName(fields, get(row, 'text'));\n                    if (sameField) {\n                        set(row, 'name', sameField);\n                    } else {\n                        set(\n                            row,\n                            'name',\n                            '_' +\n                                get(this, 'tools').computerizeHumanInput(get(row, 'text')) +\n                                Math.floor(1000 + Math.random() * 9000),\n                        );\n                    }\n                }\n\n                const field = get(row, 'name');\n\n                fields['worktime.' + field] = { type: 'hours', name: get(row, 'text') };\n                fields['worktime.' + field + '.@hide'] = 'true';\n\n                if (row.saldotype) {\n                    fields['worktime.' + field + '_saldo'] = {\n                        type: 'hours',\n                        name: get(row, 'text') + ' (saldo)',\n                    };\n                    fields['worktime.' + field + '_saldo' + '.@hide'] = 'true';\n                }\n                let customRule = {\n                    name: 'custom_dayrule',\n                    field,\n                    text: get(row, 'text'),\n                    values: {\n                        from: get(row, 'start'),\n                        to: get(row, 'end'),\n                        days: get(row, 'start_day') + '-' + get(row, 'end_day'),\n                        mid_week_holiday:\n                            get(row, 'mid_week_holiday') === undefined\n                                ? false\n                                : get(row, 'mid_week_holiday'),\n                        do_not_calculate_if_overtime:\n                            get(row, 'checked') === undefined ? false : get(row, 'checked'),\n                        //calculate_compensations_always: get(this, 'overtime_types.time_based.settings._calculate_compensations_always') === undefined ? 'false' : get(this, 'overtime_types.time_based.settings._calculate_compensations_always')\n                        calculate_compensations_always:\n                            get(row, 'calculate_compensations_always') === undefined\n                                ? false\n                                : get(row, 'calculate_compensations_always'),\n                        saldotype: row.saldotype === undefined ? false : row.saldotype,\n                        multiplier: row.multiplier === undefined ? null : row.multiplier,\n                    },\n                };\n                if (wtypesString) customRule['values']['salarytypes'] = wtypesString;\n\n                rules.pushObject(customRule);\n            });\n            let foundRule = null;\n            if (!get(this, 'eveningEnabled')) {\n                foundRule = rules.findBy('name', '_evening');\n                if (foundRule) {\n                    foundRule.values.from = '';\n                    foundRule.values.to = '';\n                }\n            }\n            if (!get(this, 'nightEnabled')) {\n                foundRule = rules.findBy('name', '_night');\n                if (foundRule) {\n                    foundRule.values.from = '';\n                    foundRule.values.to = '';\n                }\n            }\n\n            get(this, 'fieldsToBeRemoved').forEach((item) => {\n                fields['!worktime.' + item] = true;\n            });\n            set(this, 'fieldsToBeRemoved', []);\n\n            if (get(this, 'validationErrors') > 0) {\n                if (this.validationErrorTexts.length) {\n                    get(this, 'notifications').error(\n                        this.validationErrorTexts.map((el) => get(this, 'intl').t(el)).join(','),\n                        {\n                            autoClear: true,\n                        },\n                    );\n                }\n                return;\n            }\n\n            if (get(this, 'customrules')) {\n                this.save(rules);\n            } else {\n                this.saveGeneralSettings(fields, rules);\n            }\n\n            // add overtime-setting also to needed_products (no worries, we check later if product.overtime is found already from products so this won't save duplicates!)\n            if (needed_products.length > 0 || rules.length > 0) {\n                needed_products.pushObject('overtime');\n            } else {\n                unneeded_products.pushObject('overtime');\n            }\n\n            this.updateNeededProducts(needed_products, unneeded_products);\n        },\n        validateInputsAction(row, type) {\n            this.validateInputs(row, type);\n        },\n        disableComp(type) {\n            this.toggleProperty(type + 'Enabled');\n            if (this.nightEnabled || this.eveningEnabled) {\n                set(this, 'overtime_types.time_based.in_use', true);\n            } else if (!this.nightEnabled && !this.eveningEnabled) {\n                set(this, 'overtime_types.time_based.in_use', false);\n            }\n\n            // remove validation-errors if turned off\n            if (!get(this, type + 'Enabled')) {\n                let settings = get(this, 'overtime_types.time_based.settings');\n\n                if (settings['_' + type + '_start_validation_error']) {\n                    delete settings['_' + type + '_start_validation_error'];\n                    this.decrementProperty('validationErrors');\n                }\n                if (settings['_' + type + '_end_validation_error']) {\n                    delete settings['_' + type + '_end_validation_error'];\n                    this.decrementProperty('validationErrors');\n                }\n            } else {\n                this.validateInputs(get(this, 'overtime_types.time_based.settings'), type);\n            }\n        },\n    },\n\n    async setAllSettings() {\n        this.allSettings = await get(this, 'Collector').ttapi({\n            url: 'overtime/allSettings',\n            method: 'get',\n        });\n    },\n\n    add_saturday() {\n        get(this, 'customDayBased').pushObject({\n            template: true,\n            name: '_saturday',\n            text: this.intl.t('overtime.time_based.saturday'),\n            start: '00:00',\n            end: '00:00',\n            start_day: 'sa',\n            end_day: 'su',\n            checked: false,\n            calculate_compensations_always: 'false',\n            saldotype: false,\n            multiplier: null,\n        });\n    },\n    add_sunday() {\n        get(this, 'customDayBased').pushObject({\n            template: true,\n            name: '_sunday',\n            text: this.intl.t('overtime.time_based.sunday'),\n            start: '00:00',\n            end: '00:00',\n            start_day: 'su',\n            end_day: 'mo',\n            checked: false,\n            mid_week_holiday: 'false',\n            calculate_compensations_always: 'false',\n            saldotype: false,\n            multiplier: null,\n        });\n    },\n\n    validateInputs(row, /*validationErrors,*/ type) {\n        //let currentValidationErrors = false;\n        let fields = [];\n        if (type == 'day') {\n            fields = ['text', 'start_day', 'end_day', 'start', 'end'];\n        } else if (type == 'evening') {\n            fields = ['_evening_start', '_evening_end'];\n        } else if (type == 'night') {\n            fields = ['_night_start', '_night_end'];\n        } else {\n            fields = ['text', 'start', 'end'];\n        }\n        for (var field of fields) {\n            if (!get(row, field)) {\n                if (!get(row, field + '_validation_error')) {\n                    this.incrementProperty('validationErrors');\n                    set(row, field + '_validation_error', true);\n                }\n            } else if (get(row, field)) {\n                if (get(row, field + '_validation_error')) {\n                    this.decrementProperty('validationErrors');\n                    set(row, field + '_validation_error', false);\n                }\n            }\n        }\n        return row;\n    },\n    searchFieldWithName(fields, name) {\n        const fieldKeys = Object.keys(fields);\n\n        let found = null;\n        fieldKeys.forEach((key) => {\n            if (fields[key].name === name) {\n                return (found = key);\n            }\n        });\n\n        if (found) {\n            return found.split('.')[1];\n        } else {\n            return null;\n        }\n    },\n\n    onlyOneRuleForField(field) {\n        if (!this.allSettings.filter((setting) => setting.field === field).length) return true;\n        return this.allSettings.filter((setting) => setting.field === field).length < 2;\n    },\n    async saveGeneralSettings(fields, rules) {\n        set(this, 'isLoading', true);\n\n        await get(this, 'servicehandler').manipulateService(fields);\n\n        const data = { rules: JSON.stringify(rules) };\n\n        if (get(this, 'worktimegroup')) {\n            data.worktimegroup = get(this, 'worktimegroup');\n        }\n\n        await get(this, 'Collector')\n            .ttapi({\n                url: 'overtime/settings',\n                method: 'post',\n                data,\n            })\n            .then(() => {\n                get(this, 'initapp').clearInit();\n                get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n                    autoClear: true,\n                });\n                set(this, 'isLoading', false);\n            });\n        this.refreshNeeded();\n        this.setAllSettings();\n    },\n    turnOn(type) {\n        set(this, 'overtime_types.' + type + '.in_use', true);\n    },\n\n    turnOff(type) {\n        set(this, 'overtime_types.' + type + '.in_use', false);\n    },\n\n    updateNeededProducts(needed_products, unneeded_products) {\n        const c = get(this, 'Collector');\n\n        needed_products.forEach((needed_product) => {\n            const worktimegroup = get(this, 'worktimegroup') ? get(this, 'worktimegroup') : null;\n            c.addProduct(needed_product, worktimegroup);\n            this.refreshNeeded;\n        });\n\n        unneeded_products.forEach((unneeded_product) => {\n            const worktimegroup = get(this, 'worktimegroup') ? get(this, 'worktimegroup') : null;\n            c.removeProduct(unneeded_product, worktimegroup);\n            this.refreshNeeded;\n        });\n    },\n    parseIfString(mixed) {\n        if (typeOf(mixed) === 'string') {\n            return JSON.parse(mixed);\n        }\n        return mixed;\n    },\n\n    async getGeneralRules() {\n        const data = {};\n\n        if (get(this, 'worktimegroup')) {\n            data.worktimegroup = get(this, 'worktimegroup');\n        }\n\n        let rules = await get(this, 'Collector').ttapi({\n            url:\n                'overtime/settings' +\n                (this.flags.test('new-overtime-settings') ? '?migrate=true' : ''),\n            method: 'get',\n            data,\n        });\n        var i, len, rule, search_rule, stypes, types_arr;\n\n        if (\n            get(this, 'Collector').testNeeds(['products.salarytype||products.selectablesalarytype'])\n        ) {\n            search_rule = false;\n            for (i = 0, len = rules.length; i < len; i++) {\n                rule = rules[i];\n                if (rule.values != null && rule.values.salarytypes) {\n                    search_rule = rule;\n                }\n            }\n            if (search_rule) {\n                types_arr = search_rule.values.salarytypes.split(',');\n                stypes = [];\n                get(this, 'store')\n                    .query('salarytype', {\n                        id: search_rule.values.salarytypes,\n                    })\n                    .then(\n                        (function (_this) {\n                            return function (salarytypes) {\n                                return salarytypes.forEach(function (stype) {\n                                    if (types_arr.indexOf(get(stype, 'id')) > -1) {\n                                        stypes.push({\n                                            id: get(stype, 'id'),\n                                            text: get(stype, 'name'),\n                                        });\n                                    }\n                                    return set(_this, 'salarytype', stypes);\n                                });\n                            };\n                        })(this),\n                    );\n            } else {\n                set(this, 'salarytype', null);\n            }\n        }\n        this.setRules(rules);\n    },\n\n    setRules(rules) {\n        set(this, 'customTimeBased', A([]));\n        set(this, 'customDayBased', A([]));\n        let overtime_types = get(this, 'overtime_types');\n        for (var type of Object.keys(overtime_types)) {\n            if (overtime_types[type].alwaysOn === true) {\n                this.turnOn(type);\n            } else {\n                this.setValuesForOvertimeType(type, rules, overtime_types[type].rule_parser(rules));\n            }\n        }\n        this.getCustomFields('hoursbetween', rules);\n        this.getCustomDayFields('custom_dayrule', rules);\n    },\n\n    getCustomFields(type, rules) {\n        return rules.filterBy('name', type).forEach((item) => {\n            get(this, 'customTimeBased').pushObject({\n                name: get(item, 'field'),\n                text: get(item, 'text'),\n                start: get(item, 'values.from'),\n                end: get(item, 'values.to'),\n                checked:\n                    get(item, 'values.do_not_calculate_if_overtime') === undefined ||\n                    get(item, 'values.do_not_calculate_if_overtime') === true\n                        ? true\n                        : false,\n                mid_week_holiday:\n                    get(item, 'values.mid_week_holiday') === undefined\n                        ? false\n                        : get(item, 'values.mid_week_holiday'),\n                calculate_compensations_always: get(item, 'values.calculate_compensations_always'),\n                saldotype: item.values.saldotype === undefined ? false : item.values.saldotype,\n                multiplier: item.values.multiplier === undefined ? 1 : item.values.multiplier,\n            });\n        });\n    },\n\n    getCustomDayFields(type, rules) {\n        return rules.filterBy('name', type).forEach((item) => {\n            const daysArr = get(item, 'values.days').split('-');\n            get(this, 'customDayBased').pushObject({\n                name: get(item, 'field'),\n                text: get(item, 'text'),\n                start: get(item, 'values.from'),\n                end: get(item, 'values.to'),\n                start_day: daysArr[0],\n                end_day: daysArr[1],\n                checked:\n                    get(item, 'values.do_not_calculate_if_overtime') === undefined ||\n                    get(item, 'values.do_not_calculate_if_overtime') === true\n                        ? true\n                        : false,\n                calculate_compensations_always: get(item, 'values.calculate_compensations_always'),\n                mid_week_holiday: get(item, 'values.mid_week_holiday'),\n                saldotype: item.values.saldotype === undefined ? false : item.values.saldotype,\n                multiplier: item.values.multiplier === undefined ? 1 : item.values.multiplier,\n            });\n        });\n    },\n    //checked: if get(item, 'values.do_not_calculate_if_overtime') == undefined || get(item, 'values.do_not_calculate_if_overtime') == true then true else false\n\n    setValuesForOvertimeType(type, rules, paths) {\n        const values = Object.keys(paths);\n\n        const hasSplittedOvertimeRule = rules.find((rule) => rule.name === '_basichours')\n            ? true\n            : false;\n        set(this, 'overtime_types.overtime_splitted.in_use', hasSplittedOvertimeRule);\n\n        //let time_based_on = false;\n        const timeBasedNoRules = [];\n        for (let value_name of Array.from(values)) {\n            const paths_splitted = paths[value_name].split('.');\n\n            const rule = rules.findBy('name', paths_splitted[0]);\n            if (!rule) {\n                this.turnOff(type);\n                if (type === 'time_based') {\n                    timeBasedNoRules.push(value_name);\n                }\n                continue;\n            }\n\n            const path = paths_splitted.slice(1).join('.');\n            const value = get(rule, path);\n\n            if (value || (!value && type == 'time_based')) {\n                this.turnOn(type);\n                set(this, 'overtime_types.' + type + '.settings.' + value_name, value);\n\n                //if (type === 'time_based') {\n                //    time_based_on = true;\n                //}\n            }\n        }\n        // special check for checkboxes (because old customers do not have these checkboxes saved)\n        //if value_name.indexOf(\"_checked\") >= 0 && value == undefined\n        //    @set 'overtime_types.' + type + '.settings.' + value_name, true\n        //else if value_name.indexOf(\"_checked\") >= 0 && value == false\n        //    @set 'overtime_types.' + type + '.settings.' + value_name, false\n        /*\n        if (time_based_on) {\n            console.log(\"set time on\")\n            this.turnOn('time_based');\n            if (timeBasedNoRules.length > 0) {\n                timeBasedNoRules.forEach(item => {\n                    set(this, 'overtime_types.time_based.settings.' + item, null);\n                });\n            }\n        }*/\n    },\n\n    checkSaldoProductsNeeds(overtime_type) {\n        let needed = [];\n        let unneeded = [];\n        for (const [name, value] of Object.entries(overtime_type.settings)) {\n            if (name.includes('saldotype')) {\n                if (!overtime_type.in_use) {\n                    unneeded.push(get(overtime_type, `product${name}`));\n                } else {\n                    value\n                        ? needed.push(get(overtime_type, `product${name}`))\n                        : unneeded.push(get(overtime_type, `product${name}`));\n                }\n            }\n        }\n        return { needed, unneeded };\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"H5E7hBT9\",\"block\":\"{\\\"symbols\\\":[\\\"salarytype\\\",\\\"salarytype\\\",\\\"dayRow\\\",\\\"dayRow\\\",\\\"dayRow\\\",\\\"row\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loadingData\\\"]]],null,{\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"settingType\\\"]],\\\"compensations\\\"],null]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"day-based-comps\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.time_based.title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-title\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"eveningEnabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"disableComp\\\",\\\"evening\\\"],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"overtime.time_based.evening\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"eveningEnabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"key-up\\\",\\\"value\\\"],[[28,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_start_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\"]],\\\"evening\\\"],null],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_start\\\"]]]]],false],[0,\\\"\\\\n                        \\\"],[9],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.starts\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"key-up\\\",\\\"value\\\"],[[28,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_end_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\"]],\\\"evening\\\"],null],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_end\\\"]]]]],false],[0,\\\"\\\\n                        \\\"],[9],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.ends\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[28,\\\"not\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_checked\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCompCheck\\\",\\\"overtime_types.time_based.settings._evening_checked\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_checked\\\"]]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                        \\\"],[9],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.accumulates_overtime\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.salarytype_v2\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_calculate_compensations_always\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_evening_calculate_compensations_always\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.time_based.calculate_always\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input saldotype-input\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"eveningEnabled\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"eveningEnabled\\\"]],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_eveningsaldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_eveningsaldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_eveningsaldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_eveningmultiplier\\\"]]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.time_based.evening_saldo\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-title\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"nightEnabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"disableComp\\\",\\\"night\\\"],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"overtime.time_based.night\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"nightEnabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"key-up\\\",\\\"value\\\"],[[28,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_start_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\"]],\\\"night\\\"],null],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_start\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.starts\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"key-up\\\",\\\"value\\\"],[[28,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_end_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\"]],\\\"night\\\"],null],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_end\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.ends\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[28,\\\"not\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_checked\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCompCheck\\\",\\\"overtime_types.time_based.settings._night_checked\\\",[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_checked\\\"]]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.accumulates_overtime\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.salarytype_v2\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_calculate_compensations_always\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_night_calculate_compensations_always\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.time_based.calculate_always\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input saldotype-input\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"nightEnabled\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"nightEnabled\\\"]],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_nightsaldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_nightsaldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_nightsaldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"settings\\\",\\\"_nightmultiplier\\\"]]]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.time_based.night_saldo\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customTimeBased\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-title\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[[28,\\\"if\\\",[[23,6,[\\\"text_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],[23,6,[\\\"text\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,6,[]],\\\"time\\\"],null]]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"remove-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeCustomTimeBased\\\",[23,6,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Delete\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,6,[]],\\\"time\\\"],null],[28,\\\"if\\\",[[23,6,[\\\"start_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[23,6,[\\\"start\\\"]]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.starts\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,6,[]],\\\"time\\\"],null],[28,\\\"if\\\",[[23,6,[\\\"end_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[23,6,[\\\"end\\\"]]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.ends\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[28,\\\"not\\\",[[23,6,[\\\"checked\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCustomCompCheck\\\",[23,6,[]],[23,6,[\\\"checked\\\"]]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.accumulates_overtime\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.salarytype_v2\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[23,6,[\\\"calculate_compensations_always\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,6,[\\\"calculate_compensations_always\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.time_based.calculate_always\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input saldotype-input\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[28,\\\"and\\\",[[28,\\\"not\\\",[[24,[\\\"disabled\\\"]]],null],[23,6,[\\\"saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,6,[\\\"saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[23,6,[\\\"saldotype\\\"]],true],null],[23,6,[\\\"multiplier\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.time_based.saldotype\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addTimeBased\\\"]],[8],[1,[28,\\\"t\\\",[\\\"overtime.add_time_based\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"day-based-comps\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.day_based.title\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"day-based-comps1\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-box\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-title\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"size\\\",\\\"theme\\\",\\\"onToggle\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"_saturdayEnabled\\\"]],\\\"large\\\",\\\"light\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggleWeekend\\\",\\\"_saturday\\\"],null]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"overtime.day_based.saturday\\\"],null],false],[0,\\\"  \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customDayBased_saturday\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,5,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,5,[\\\"start_day_validation_error\\\"]],\\\"validation-error\\\"],null],[24,[\\\"days\\\"]],[23,5,[\\\"start_day\\\"]],[28,\\\"t\\\",[\\\"overtime.day_based.choose_start_day\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"key-up\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,5,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,5,[\\\"start_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[23,5,[\\\"start\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.starts\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,5,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,5,[\\\"end_day_validation_error\\\"]],\\\"validation-error\\\"],null],[24,[\\\"days\\\"]],[23,5,[\\\"end_day\\\"]],[28,\\\"t\\\",[\\\"overtime.day_based.choose_end_day\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"key-up\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,5,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,5,[\\\"end_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[23,5,[\\\"end\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.ends\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[28,\\\"not\\\",[[23,5,[\\\"checked\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCustomCompCheck\\\",[23,5,[]],[23,5,[\\\"checked\\\"]]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mini-div\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.accumulates_overtime\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.salarytype_v2\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[23,5,[\\\"calculate_compensations_always\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,5,[\\\"calculate_compensations_always\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mini-div\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.time_based.calculate_always\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"_saturdayEnabled\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"_saturdayEnabled\\\"]],[23,5,[\\\"saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,5,[\\\"saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[23,5,[\\\"saldotype\\\"]],true],null],[23,5,[\\\"multiplier\\\"]]]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mini-div\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.day_based.saturday_saldo\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[5]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-box\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-title\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"   \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"size\\\",\\\"theme\\\",\\\"onToggle\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"_sundayEnabled\\\"]],\\\"large\\\",\\\"light\\\",[28,\\\"action\\\",[[23,0,[]],\\\"toggleWeekend\\\",\\\"_sunday\\\"],null]]]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.day_based.sunday\\\"],null],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customDayBased_sunday\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,4,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,4,[\\\"start_day_validation_error\\\"]],\\\"validation-error\\\"],null],[24,[\\\"days\\\"]],[23,4,[\\\"start_day\\\"]],[28,\\\"t\\\",[\\\"overtime.day_based.choose_start_day\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"key-up\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,4,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,4,[\\\"start_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[23,4,[\\\"start\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.starts\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,4,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,4,[\\\"end_day_validation_error\\\"]],\\\"validation-error\\\"],null],[24,[\\\"days\\\"]],[23,4,[\\\"end_day\\\"]],[28,\\\"t\\\",[\\\"overtime.day_based.choose_end_day\\\"],null]]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"key-up\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,4,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,4,[\\\"end_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[23,4,[\\\"end\\\"]]]]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.ends\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                            \\\"],[2,\\\" mid_week_holiday toggle \\\"],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[23,4,[\\\"mid_week_holiday\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,4,[\\\"mid_week_holiday\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.calculate_mid_week_holiday_as_sunday\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[28,\\\"not\\\",[[23,4,[\\\"checked\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCustomCompCheck\\\",[23,4,[]],[23,4,[\\\"checked\\\"]]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mini-div\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.accumulates_overtime\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.salarytype_v2\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[23,4,[\\\"calculate_compensations_always\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,4,[\\\"calculate_compensations_always\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mini-div\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.time_based.calculate_always\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"_sundayEnabled\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"_sundayEnabled\\\"]],[23,4,[\\\"saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,4,[\\\"saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[23,4,[\\\"saldotype\\\"]],true],null],[23,4,[\\\"multiplier\\\"]]]]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mini-div\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.day_based.sunday_saldo\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"customDayBased_normal\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-title\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[[28,\\\"if\\\",[[23,3,[\\\"text_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],[23,3,[\\\"text\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,3,[]],\\\"day\\\"],null]]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"remove-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeCustomDayBased\\\",[23,3,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Delete\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,3,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,3,[\\\"start_day_validation_error\\\"]],\\\"validation-error\\\"],null],[24,[\\\"days\\\"]],[23,3,[\\\"start_day\\\"]],[28,\\\"t\\\",[\\\"overtime.day_based.choose_start_day\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,3,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,3,[\\\"start_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[23,3,[\\\"start\\\"]]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.starts\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,3,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,3,[\\\"end_day_validation_error\\\"]],\\\"validation-error\\\"],null],[24,[\\\"days\\\"]],[23,3,[\\\"end_day\\\"]],[28,\\\"t\\\",[\\\"overtime.day_based.choose_end_day\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"change\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"validateInputsAction\\\",[23,3,[]],\\\"day\\\"],null],[28,\\\"if\\\",[[23,3,[\\\"end_validation_error\\\"]],\\\"validation-error form-control\\\",\\\"form-control\\\"],null],\\\"time\\\",[23,3,[\\\"end\\\"]]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.ends\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[28,\\\"not\\\",[[23,3,[\\\"checked\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleCustomCompCheck\\\",[23,3,[]],[23,3,[\\\"checked\\\"]]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mini-div\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.accumulates_overtime\\\"],null],false],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.salarytype_v2\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[23,3,[\\\"calculate_compensations_always\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,3,[\\\"calculate_compensations_always\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mini-div\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.time_based.calculate_always\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input saldotype\\\"],[8],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[28,\\\"and\\\",[[28,\\\"not\\\",[[24,[\\\"disabled\\\"]]],null],[23,3,[\\\"saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,3,[\\\"saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[23,3,[\\\"saldotype\\\"]],true],null],[23,3,[\\\"multiplier\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mini-div\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.day_based.saldotype\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addDayBased\\\"]],[8],[1,[28,\\\"t\\\",[\\\"overtime.add_day_based\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.salarytype||products.selectablesalarytype\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"comp-box\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"overtime.select_salarytypes\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"overtime.salarytypes_help\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"padded-multiselect\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"salarytypes\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@options\\\",\\\"@selected\\\",\\\"@placeholder\\\",\\\"@onChange\\\",\\\"@noMatchesMessage\\\"],[[23,0,[\\\"salarytypes\\\"]],[23,0,[\\\"salarytype\\\"]],[28,\\\"t\\\",[\\\"overtime.select_salarytypes\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"salarytype\\\"]]],null]],null],[28,\\\"t\\\",[\\\"overtime.no_salarytypes_found\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[23,2,[\\\"text\\\"]],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"settingType\\\"]],\\\"overtime\\\"],null]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overtime-settings-container\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"name\\\"]]],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"disabled\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.error\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"input\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"action\\\",[[23,0,[]],\\\"checkValues\\\",[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_start\\\"]],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_end\\\"]]],null],[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_start\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.start\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"disabled\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.error\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"input\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"action\\\",[[23,0,[]],\\\"checkValues\\\",[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_start\\\"]],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_end\\\"]]],null],[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_end\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.end\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.salarytype_v2||flag.new-overtime-settings\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"disabled\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.error\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"_extrahours_week_max\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"overtime.extrahours_overtime.max\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"extrahours_overtime\\\",\\\"settings\\\",\\\"multiplier\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.extrahours_overtime_saldo\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"in_use\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"in_use\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_settings.split_overtimehours\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"settings\\\",\\\"saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"settings\\\",\\\"saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"settings\\\",\\\"saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"overtime_splitted\\\",\\\"settings\\\",\\\"multiplier\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.overtime_splitted_saldo\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"name\\\"]]],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_50start\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.daily_overtime._50starts\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_100start\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.daily_overtime._100starts\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_50saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_50saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_50saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_50multiplier\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.daily_overtime_50_saldo\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input  \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_100saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_100saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_100saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"settings\\\",\\\"_100multiplier\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.daily_overtime_100_saldo\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"name\\\"]]],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.salarytype_v2||flag.new-overtime-settings\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week50start\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.weekly_overtime._week50starts\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100start\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.weekly_overtime._week100starts_new\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"dailymax\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.weekly_overtime.dailymax\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week50saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week50saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week50saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week50multiplier\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.weekly_overtime_50_saldo\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100multiplier\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.weekly_overtime_100_saldo\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100start\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"overtime.weekly_overtime._week100starts\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week50saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week50saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week50saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week50multiplier\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.weekly_overtime_50_saldo\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"settings\\\",\\\"_week100multiplier\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.weekly_overtime_100_saldo\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs toggle-input\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.period_overtime\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[0,\\\"        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"disabled\\\",\\\"class\\\",\\\"value\\\",\\\"name\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],true],null],\\\"form-control input-lg small-date\\\",[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_periodstart\\\"]],\\\"period_start\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.period_overtime.first_day\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"disabled\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],true],null],[24,[\\\"period_lengths\\\"]],[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_periodlength\\\"]],[28,\\\"t\\\",[\\\"overtime.period_overtime.period_lengths\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.period_overtime.period_length\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"disabled\\\",\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"value\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],true],null],\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period50calculate_after_hours\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.period_overtime.50_overtime\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"disabled\\\",\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"value\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],true],null],\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period100calculate_after_hours\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime.period_overtime.100_overtime\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period50saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period50saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period50saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period50multiplier\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.overtime_period_50_saldo\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-flex-inputs saldotype-input \\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],\\\"disabled-inputs-group\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],true],null],[28,\\\"and\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period100saldotype\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period100saldotype\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"min\\\",\\\"disabled\\\",\\\"value\\\"],[\\\"form-control\\\",\\\"number\\\",\\\"0\\\",[28,\\\"unless\\\",[[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period100saldotype\\\"]],true],null],[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"settings\\\",\\\"_period100multiplier\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-flex\\\"],[8],[1,[28,\\\"t\\\",[\\\"overtime_types.overtime_period_100_saldo\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"overtime_types\\\",\\\"time_based\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"daily_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"weekly_overtime\\\",\\\"in_use\\\"]],[24,[\\\"overtime_types\\\",\\\"overtime_period\\\",\\\"in_use\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.salarytype||products.selectablesalarytype\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"overtime.select_salarytypes\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-flex-inputs\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"overtime.salarytypes_help\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"padded-multiselect\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[24,[\\\"salarytypes\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"power-select-multiple\\\",[],[[\\\"@options\\\",\\\"@selected\\\",\\\"@placeholder\\\",\\\"@onChange\\\",\\\"@noMatchesMessage\\\"],[[23,0,[\\\"salarytypes\\\"]],[23,0,[\\\"salarytype\\\"]],[28,\\\"t\\\",[\\\"overtime.select_salarytypes\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"salarytype\\\"]]],null]],null],[28,\\\"t\\\",[\\\"overtime.no_salarytypes_found\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[23,1,[\\\"text\\\"]],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"disabled\\\",[28,\\\"or\\\",[[24,[\\\"disabled\\\"]]],null]],[12,\\\"class\\\",[29,[[28,\\\"if\\\",[[23,0,[\\\"isLoading\\\"]],\\\"btn is-loading btn-primary btn-block\\\",\\\"btn btn-primary btn-block\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"createAndSaveRules\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/overtime-comp/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/general-v2/components/pause-setting/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorSettingCompPauseSettingComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../../classes/collector';\n\nCollectorSettingCompPauseSettingComponent = Ember.Component.extend({\n    store: Em.inject.service(),\n    session: Em.inject.service(),\n    notifications: Ember.inject.service(),\n    intl: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    init: function () {\n        if (this.get('Collector').testNeedsOne('products.rfid_pause')) {\n            this.set('nfcPauseOn', true);\n        }\n        this._super();\n        return this.getSetting();\n    },\n    pauseOptions: ['15', '30', '45', '60'],\n    isValueCustom: Em.computed('internalsetting.value', function () {\n        var ref;\n        if (\n            ((ref = this.get('internalsetting.value')),\n            indexOf.call(this.get('pauseOptions'), ref) >= 0)\n        ) {\n            return false;\n        }\n        return true;\n    }),\n    showSaveButton: Ember.computed(\n        'internalsetting.value',\n        'internalsetting.hasDirtyAttributes',\n        function () {\n            if (\n                this.get('internalsetting.value') >= 0 &&\n                this.get('internalsetting.hasDirtyAttributes') &&\n                this.get('internalsetting.value') !== null\n            ) {\n                return true;\n            }\n            return false;\n        },\n    ),\n    getSetting: function () {\n        var configs, setting_params;\n        this.set('loading', true);\n        setting_params = {\n            name: 'default_value',\n            value: 30,\n        };\n        if (this.get('worktimegroup')) {\n            setting_params.condition = '$userProfile->worktimegroup==' + this.get('worktimegroup');\n        }\n        configs = {\n            form: 'worktime',\n            field: 'pause',\n            setting: setting_params,\n        };\n        return this.get('store')\n            .findAll('form', {\n                reload: true,\n            })\n            .then((forms) => {\n                var field, form, setting;\n                form = forms.filterBy('external_type', configs.form);\n                field = form.get('firstObject.fields').filterBy('external_type', configs.field);\n                if (field.get('length') > 0) {\n                    setting = field\n                        .get('firstObject.settings')\n                        .filterBy('name', configs.setting.name);\n                    setting = setting.filter((item) => {\n                        var arr;\n                        if (this.get('worktimegroup')) {\n                            if (!item.get('condition')) {\n                                return false;\n                            }\n                            arr = item.get('condition').split('==');\n                            return arr[1] === this.get('worktimegroup');\n                        } else {\n                            return item.get('condition') === '';\n                        }\n                    });\n                    if (setting.get('firstObject')) {\n                        this.set('internalsetting', setting.get('firstObject'));\n                    } else {\n                        configs.setting.field = field.get('firstObject');\n                        this.set(\n                            'internalsetting',\n                            this.get('store').createRecord('form-field-setting', configs.setting),\n                        );\n                    }\n                } else {\n                    this.set('internalsetting', false);\n                }\n                return this.set('loading', false);\n            });\n    },\n    actions: {\n        saveSetting: function () {\n            this.set('loading', true);\n            return this.get('internalsetting')\n                .save()\n                .then(() => {\n                    var ret;\n                    if (this.get('nfcPauseOn')) {\n                        ret = this.get('Collector').setProducts(['products.rfid_pause']);\n                    } else {\n                        ret = this.get('Collector').setProducts(['!products.rfid_pause']);\n                    }\n                    return Ember.RSVP.Promise.all(ret).then(() => {\n                        this.set('loading', false);\n                        if (this.get('settingSaved')) {\n                            return this.settingSaved('products.pause');\n                        }\n                    });\n                });\n        },\n        changeValue: function (value, isCustom) {\n            this.set('isValueCustom', isCustom);\n            if (!this.get('internalsetting')) {\n                return this.getSetting().then(() => {\n                    return this.set('internalsetting.value', value);\n                });\n            } else {\n                return this.set('internalsetting.value', value);\n            }\n        },\n    },\n});\n\nexport default CollectorSettingCompPauseSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"WaQp1SZs\",\"block\":\"{\\\"symbols\\\":[\\\"option\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.timetracker.default_pause_help\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"pauseOptions\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"radio-inputs-settings\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\",[23,1,[]],false]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"internalsetting\\\",\\\"value\\\"]],[23,1,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"circle\\\",true],[10,\\\"class\\\",\\\"radio-svg-fill\\\"],[10,\\\"id\\\",\\\"Ellipse_30\\\"],[10,\\\"data-name\\\",\\\"Ellipse 30\\\"],[10,\\\"cx\\\",\\\"3\\\"],[10,\\\"cy\\\",\\\"3\\\"],[10,\\\"r\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(3 3)\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-text\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"wizard.onboarding.timetracker.pause.\\\",[23,1,[]]],null]],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"radio-inputs-settings\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\",null,true]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isValueCustom\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"circle\\\",true],[10,\\\"class\\\",\\\"radio-svg-fill\\\"],[10,\\\"id\\\",\\\"Ellipse_30\\\"],[10,\\\"data-name\\\",\\\"Ellipse 30\\\"],[10,\\\"cx\\\",\\\"3\\\"],[10,\\\"cy\\\",\\\"3\\\"],[10,\\\"r\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(3 3)\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-text-custom\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isValueCustom\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"class\\\"],[[24,[\\\"internalsetting\\\",\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"disabled\\\",\\\"class\\\"],[null,true,\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"wizard.onboarding.timetracker.pause.custom.text_end\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"disabled\\\",[28,\\\"not\\\",[[24,[\\\"showSaveButton\\\"]]],null]],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/pause-setting/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class CustomExportComponent extends Component {\n    @service ttapi;\n    @service('collector-service') Collector;\n\n    /**\n     * When salarytypes_v2 used always call ttapi/api/salary/automaticSalarytypes after changing perdiem setting\n     */\n    @action\n    async saved() {\n        if (!this.Collector.testNeeds(['products.salarytype_v2'])) return;\n\n        await this.ttapi.post('api/salary/automaticSalarytypes');\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"WqHfaErd\",\"block\":\"{\\\"symbols\\\":[\\\"@setting\\\"],\\\"statements\\\":[[5,\\\"settings/general-v2/radio-setting\\\",[],[[\\\"@options\\\",\\\"@saved\\\"],[[23,1,[\\\"optionsForComponent\\\"]],[23,0,[\\\"saved\\\"]]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/perdiem/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/general-v2/components/postpopulated-worktimes/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldSettingCompSaldoSettingComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../../classes/collector';\n\nCollectorFieldSettingCompSaldoSettingComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    ttapi: Em.inject.service(),\n    customerSettings: Em.inject.service(),\n    store: Em.inject.service(),\n    notifications: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    loading: true,\n    settingKey: Ember.computed('worktimegroup', function () {\n        return (\n            'postpopulated_worktimes_project' +\n            (this.get('worktimegroup') ? '_' + this.get('worktimegroup') : '')\n        );\n    }),\n    didReceiveAttrs: function () {\n        this.set('loading', true);\n        return this.get('ttapi')\n            ._get('/settings?worktimegroup=' + this.get('worktimegroup'))\n            .then((ret) => {\n                var projectSetting;\n                projectSetting = ret.findBy('key', this.get('settingKey'));\n                if (projectSetting && projectSetting.value) {\n                    this.get('store')\n                        .findRecord('project', projectSetting.value)\n                        .then((project) => {\n                            return this.set('selectedProject', project);\n                        });\n                }\n                return this.set('loading', false);\n            });\n    },\n    projectField: Ember.computed('selectedProject', function () {\n        var field;\n        field = this.get('Collector').field('worktime', 'project');\n        field.value = this.get('selectedProject');\n        return field;\n    }),\n    disabled: Em.computed('selectedProject', function () {\n        if (!this.get('selectedProject') || this.get('selectedProject') === null) {\n            return true;\n        }\n        return false;\n    }),\n    actions: {\n        saveSetting: function () {\n            this.set('loading', true);\n            return this.get('customerSettings')\n                .setSetting(\n                    this.get('settingKey'),\n                    this.get('selectedProject.id'),\n                    this.get('worktimegroup'),\n                )\n                .then(() => {\n                    this.set('loading', false);\n                    if (this.get('settingSaved')) {\n                        return this.settingSaved();\n                    }\n                });\n        },\n        changeProject: function (project) {\n            return this.set('selectedProject', project);\n        },\n    },\n});\n\nexport default CollectorFieldSettingCompSaldoSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"OYfT9mzf\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"postpopulated-dropdown-field\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"worktime.project\\\"],[[\\\"change\\\",\\\"value\\\",\\\"class\\\",\\\"usePowerDropdown\\\"],[\\\"changeProject\\\",[24,[\\\"selectedProject\\\"]],\\\"add-fields form-control\\\",true]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"disabled\\\",[22,\\\"disabled\\\"]],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/postpopulated-worktimes/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\nimport { isEmpty, isPresent } from '@ember/utils';\nimport runAutomaticSalarytypes from '../runAutomaticSalarytypes';\n\nexport default class SalarytypesAbsencetypesComponent extends Component {\n    @service evented;\n    @service store;\n    @service intl;\n    @service('collector-service') Collector;\n    @service ttapi;\n\n    @tracked showPassive;\n    @tracked record;\n    @tracked saving;\n    @tracked error;\n    @tracked selectedWorktimegroups;\n    @tracked showReport = true;\n    @tracked showTooltip = {};\n\n    constructor() {\n        super(...arguments);\n        this.filters = this.args.worktimegroup ? { worktimegroup: this.args.worktimegroup } : {};\n        this.showPassive = false;\n        this.init();\n    }\n\n    async init() {\n        this.showReport = false;\n        await runAutomaticSalarytypes(this.ttapi);\n        this.showReport = true;\n    }\n\n    get disabled() {\n        return isPresent(this.args.worktimegroup);\n    }\n\n    @action\n    closeModal() {\n        if (this.record && this.record.isNew) this.record.deleteRecord();\n        else if (this.record) this.record.rollbackAttributes();\n        this.evented.storeEvent('insert', 'abcensetype', null);\n        this.record = null;\n    }\n\n    @action\n    onFieldChange(field, value) {\n        if (field === 'worktimegroup' && this.record.isNew) {\n            this.selectedWorktimegroups = value;\n            this.selectedWorktimegroups = this.selectedWorktimegroups;\n        } else this.record[field] = value;\n    }\n\n    @action\n    async save() {\n        this.saving = true;\n\n        try {\n            await this.record.validate();\n            if (!isEmpty(this.selectedWorktimegroups) && this.record.isNew) {\n                const absenceTypes = await this.store.query('abcensetype', {\n                    name: this.record.name,\n                });\n                for (let wtgroup of this.selectedWorktimegroups) {\n                    const newRecord = this.Collector.copyRecord(this.record);\n                    newRecord['worktimegroup'] = this.store.peekRecord('worktimegroup', wtgroup);\n                    const found = absenceTypes?.filterBy('worktimegroup', wtgroup);\n                    if (found.length) {\n                        return (this.error = this.intl.t('absencetype.error.unique', {\n                            worktimegroup: wtgroup.name,\n                        }));\n                    }\n\n                    await newRecord.save();\n                }\n            } else await this.record.save();\n            this.closeModal();\n        } catch (e) {\n            this.error = e;\n        } finally {\n            this.saving = false;\n        }\n    }\n\n    @action\n    addAbsencetype() {\n        this.error = null;\n        this.selectedWorktimegroups = this.args.worktimegroup\n            ? [this.args.worktimegroup]\n            : [];\n        this.record = this.store.createRecord('abcensetype');\n    }\n\n    @action\n    editAbsencetype(row) {\n        this.error = null;\n        this.selectedWorktimegroups = row['worktimegroup'] ? [row['worktimegroup']] : [];\n        this.record = row;\n    }\n\n    @action\n    toggleRemoved() {\n        this.showPassive = !this.showPassive;\n        this.evented.storeEvent('toggleRemoved', 'abcensetype', null);\n    }\n\n    @action\n    restoreAbsencetype(row) {\n        this.evented.storeEvent('restore', 'abcensetype', row);\n    }\n\n    @action\n    removeAbsencetype(row) {\n        this.evented.storeEvent('remove', 'abcensetype', row);\n    }\n\n    @action\n    togglePopover(id) {\n        if (!isPresent(this.showTooltip[id])) this.showTooltip[id] = true;\n        else this.showTooltip[id] = !this.showTooltip[id];\n        this.showTooltip = this.showTooltip;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"qxgYMslq\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"@error\\\",\\\"@record\\\",\\\"@disabled\\\",\\\"@selectedWorktimegroups\\\",\\\"@closeModal\\\",\\\"@onFieldChange\\\",\\\"@saving\\\",\\\"@save\\\"],\\\"statements\\\":[[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[23,10,[]],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.add_abcensetype\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"abcensetype\\\",[23,7,[]],[23,11,[]],[23,10,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"worktimegroup\\\"],null],[23,7,[\\\"isNew\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\"],[[28,\\\"t\\\",[\\\"abcensetype.worktimegroup\\\"],null],[23,5,[\\\"features\\\",\\\"mandatory\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[5,\\\"addon/fields/multiselect\\\",[],[[\\\"@form\\\",\\\"@name\\\",\\\"@options\\\",\\\"@value\\\",\\\"@onChange\\\",\\\"@disabled\\\"],[\\\"abcensetype\\\",[23,5,[\\\"name\\\"]],[28,\\\"hash\\\",null,[[\\\"form\\\",\\\"fields\\\"],[[23,5,[\\\"options\\\",\\\"form\\\"]],[23,5,[\\\"options\\\",\\\"fields\\\"]]]]],[23,9,[]],[28,\\\"fn\\\",[[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null],[23,8,[]]]]],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,4,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[28,\\\"get\\\",[[23,7,[]],[23,5,[\\\"name\\\"]]],null],[28,\\\"await\\\",[[23,7,[]]],null],[28,\\\"fn\\\",[[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null],[23,5,[\\\"features\\\",\\\"mandatory\\\"]],[28,\\\"and\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"worktimegroup\\\"],null],[23,8,[]]],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[5]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[3,4]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Buttons\\\"]],[],[[\\\"@saving\\\",\\\"@save\\\",\\\"@cancel\\\"],[[23,12,[]],[23,13,[]],[23,10,[]]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,6,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"addon/form-add/error\\\",[],[[\\\"@error\\\"],[[23,6,[]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/salarytypes/absencetypes/modal/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"wmFdUIzP\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"row\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[23,0,[\\\"showReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"class\\\"],[\\\"loading-icon\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"center-alignment\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showPassive\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.show_passive_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showColumns\\\",\\\"@filter\\\",\\\"@hideCreatedColumn\\\",\\\"@showFilters\\\"],[\\\"abcensetype\\\",\\\"key,name,usesholiday,type,worktimegroup,use_holiday_rules\\\",[23,0,[\\\"filters\\\"]],true,\\\" \\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Add\\\"]],[],[[\\\"@onClick\\\"],[[23,0,[\\\"addAbsencetype\\\"]]]]],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@hideSumRow\\\",\\\"@hideRemovedText\\\"],[true,true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"history\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"not-eq\\\",[[23,3,[\\\"row_info\\\",\\\"status\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Delete\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"removeAbsencetype\\\"]],[23,3,[]]],null]]],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"editAbsencetype\\\"]],[23,3,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[\\\"worktimegroup\\\",\\\"row_info\\\",\\\"status\\\"]],\\\"normal\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-ReuseFilled\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"restoreAbsencetype\\\"]],[23,3,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Info salarytypev2-info-button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"togglePopover\\\"]],[23,3,[\\\"id\\\"]]],null]]],[8],[0,\\\"\\\\n                        \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@text\\\",\\\"@tooltipClass\\\",\\\"@popperContainer\\\",\\\"@event\\\",\\\"@isShown\\\",\\\"@hideOn\\\",\\\"@side\\\"],[[28,\\\"t\\\",[\\\"absencetype.removed_infotext.worktimegroup_removed\\\"],[[\\\"htmlSafe\\\"],[true]]],\\\"help-tooltip\\\",\\\"body\\\",\\\"none\\\",[28,\\\"get\\\",[[23,0,[\\\"showTooltip\\\"]],[23,3,[\\\"id\\\"]]],null],\\\"click\\\",\\\"right\\\"]]],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"center-alignment\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs passive-button\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"toggleRemoved\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showPassive\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"general.hide_passive\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"general.show_passive\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"record\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"settings/general-v2/components/salarytypes/absencetypes/modal\\\",[],[[\\\"@record\\\",\\\"@closeModal\\\",\\\"@onFieldChange\\\",\\\"@selectedWorktimegroups\\\",\\\"@saving\\\",\\\"@save\\\",\\\"@disabled\\\",\\\"@error\\\"],[[23,0,[\\\"record\\\"]],[23,0,[\\\"closeModal\\\"]],[23,0,[\\\"onFieldChange\\\"]],[23,0,[\\\"selectedWorktimegroups\\\"]],[23,0,[\\\"saving\\\"]],[23,0,[\\\"save\\\"]],[23,0,[\\\"disabled\\\"]],[23,0,[\\\"error\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/salarytypes/absencetypes/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\n\nexport default class SalarytypesComponent extends Component {\n    @service store;\n    @service('collector-service') Collector;\n\n    @tracked disabled = false;\n    @tracked loading = false;\n    @tracked preventUsage = false;\n\n    constructor(owner, args) {\n        super(owner, args);\n        if (!this.args.setting.active) this.checkOldSalarytypes();\n    }\n\n    async checkOldSalarytypes() {\n        // new salarytypes can always be used if salarytypes_v2 is on\n        if (this.Collector.testNeeds(['flag.salarytypes_v2'])) return;\n\n        // if salarytype form is not in use no need to check rows from it\n        if (!this.Collector.testNeeds(['salarytype'])) return;\n\n        this.loading = true;\n\n        const oldSalaryTypes = await this.store.query('salarytype', {});\n\n        if (oldSalaryTypes.length > 0) this.preventUsage = true;\n\n        this.loading = false;\n    }\n}\n","let allowrun = true;\nlet ttapiPromise;\n\nexport default (ttapi) => {\n    return new Promise((resolve) => {\n        const onRequestEnd = () => {\n            resolve();\n            allowrun = true;\n        };\n\n        if (allowrun) {\n            ttapiPromise = ttapi.post('/api/salary/automaticSalarytypes');\n            allowrun = false;\n        }\n        ttapiPromise.then(onRequestEnd);\n    });\n};\n","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\nimport { isEmpty, isPresent } from '@ember/utils';\nimport podNames from 'ember-component-css/pod-names';\nimport runAutomaticSalarytypes from '../runAutomaticSalarytypes';\n\nexport default class SalarytypesSalariesComponent extends Component {\n    @service evented;\n    @service store;\n    @service intl;\n    @service('collector-service') Collector;\n    @service ttapi;\n    @service notifications;\n    @tracked showPassive;\n    @tracked record;\n    @tracked saving;\n    @tracked showTooltip;\n    @tracked error;\n    @tracked selectedWorktimegroups;\n    @tracked worktimegroupError;\n    @tracked salaryTypeNameError;\n    @tracked salarytypev2;\n    @tracked showReport = true;\n\n    constructor() {\n        super(...arguments);\n        this.filters = this.args.worktimegroup ? { worktimegroup: this.args.worktimegroup } : {};\n        this.showPassive = false;\n        this.showTooltip = {};\n        this.createTypes();\n        this.init();\n    }\n\n    async init() {\n        this.showReport = false;\n        await runAutomaticSalarytypes(this.ttapi);\n        this.showReport = true;\n    }\n\n    get worktimeGroupLocked() {\n        return isPresent(this.args.worktimegroup);\n    }\n\n    get styleNamespace() {\n        return podNames['settings/general-v2/components/salarytypes/salaries'];\n    }\n\n    async createTypes() {\n        const showTypes = ['hours', 'dropdown_values', 'checkbox', 'number'];\n        const fields = this.Collector.fieldArray('worktime');\n        const cond = (item) => item.name === 'work_hours' || item.name === '_basichours';\n\n        let hours = [];\n        let options = [];\n        for (let item of fields) {\n            if (cond(item)) {\n                hours.push(item);\n            } else {\n                options.push(item);\n            }\n        }\n\n        // always hide all fields that we know shouldn't be visible .. but also fields that has fieldtype: auto (this is to hide custom compensations)\n        const autoSalaryTypes = await this.getAutoSalarytypes();\n        const staticBlackList = [\n            'comp',\n            '_50',\n            '_100',\n            '_period50',\n            '_period100',\n            '_evening',\n            '_night',\n            '_week50',\n            '_week100',\n            '_extrahours',\n            '_overtimehours',\n            'km',\n            '_saturday',\n            '_sunday',\n            '_50_saldo',\n            '_100_saldo',\n            '_extrahours_saldo',\n            '_period50_saldo',\n            '_period100_saldo',\n            '_overtimehours_saldo',\n            '_evening_saldo',\n            '_night_saldo',\n            '_week50_saldo',\n            '_week100_saldo',\n            '_saturday_saldo',\n            '_sunday_saldo',\n        ];\n        const blackList = staticBlackList.concat(autoSalaryTypes);\n        options = options\n            .filter((item) => !blackList.includes(item.name))\n            .filter((item) => showTypes.includes(item.type));\n\n        hours = hours.map((el) => {\n            if (el.name === 'work_hours') {\n                el.translated_name = this.intl.t('salarytypev2.fieldtype.hours.own');\n            }\n            return el;\n        });\n\n        let subcategory = [\n            {\n                translated_name: this.intl.t('salarytypev2.fieldtype.allfields'),\n                options,\n            },\n        ];\n\n        this.types = {\n            hours,\n            subcategory,\n        };\n    }\n    async getAutoSalarytypes() {\n        let typesWithSaldo = [];\n        let types = this.store.peekAll('salarytypev2')?.filterBy('fieldtype', 'auto');\n        if (isEmpty(types))\n            types = await this.store.query('salarytypev2', { fieldtype: 'auto', limit: 'all' });\n        const mappedTypes = types.mapBy('type');\n        // We also need to check that custom compensation's saldo fields are not added to type dropdown (eg. _paivalisa_saldo)\n        if (!isEmpty(mappedTypes)) {\n            mappedTypes.forEach((type) => {\n                typesWithSaldo.push(type);\n                if (!['work_hours', '_basichours'].includes(type))\n                    typesWithSaldo.push(type + '_saldo');\n            });\n            return typesWithSaldo;\n        }\n        return mappedTypes;\n    }\n\n    async runAutomaticSalarytypes() {\n        this.showReport = false;\n        await this.ttapi.post('/api/salary/automaticSalarytypes');\n        this.showReport = true;\n    }\n\n    @action getReportValue(field, value, unformatted, row) {\n        if (field === 'fieldtype') {\n            if (!row.type) return null; // if row has no type at all show user as empty fieldtype\n            // if own custom field\n            if (unformatted === 'hours.own' && !['work_hours', '_basichours'].includes(row.type)) {\n                return this.intl.t('salarytypev2.fieldtype.custom_own_field');\n                // if work hours auto-field\n            } else if (row.type === 'work_hours' && unformatted === 'auto') {\n                return this.intl.t('salarytypev2.fieldtype.auto.hours');\n                // if basichours auto-field\n            } else if (row.type === '_basichours' && unformatted === 'auto') {\n                return this.intl.t('salarytypev2.fieldtype.auto.basic_hours');\n            } else {\n                if (!value) return this.intl.t('salarytypev2.fieldtype.manual');\n                else if (row.type === '_basichours') return this.intl.t('worktime._basichours');\n                else return value;\n            }\n        } else return value;\n    }\n\n    @action\n    toggleRemoved() {\n        this.showPassive = !this.showPassive;\n        this.evented.storeEvent('toggleRemoved', 'salarytypev2', null);\n    }\n\n    @action\n    closeModal() {\n        if (this.record && this.record.isNew) this.record.deleteRecord();\n        else if (this.record) this.record.rollbackAttributes();\n        this.evented.storeEvent('insert', 'salarytypev2', null);\n        this.record = null;\n        this.salaryTypeNameError = null;\n    }\n\n    @action\n    onFieldChange(field, value) {\n        if (field === 'worktimegroup' && this.record.isNew) {\n            this.worktimegroupError = null;\n            this.selectedWorktimegroups = value;\n            this.selectedWorktimegroups = this.selectedWorktimegroups;\n        } else this.record[field] = value;\n    }\n\n    @action\n    async save() {\n        this.saving = true;\n        try {\n            if (!(await this.isValidRecord())) return (this.saving = false);\n\n            if (this.record.isNew) {\n                for (let wtgroup of this.selectedWorktimegroups) {\n                    const newRecord = this.Collector.copyRecord(this.record);\n                    newRecord['worktimegroup'] = this.store.peekRecord('worktimegroup', wtgroup);\n                    newRecord['fieldtype'] = 'hours.own';\n                    await newRecord.save();\n                }\n            } else await this.record.save();\n            this.closeModal();\n        } catch (e) {\n            this.error = e;\n        } finally {\n            this.saving = false;\n        }\n    }\n\n    @action\n    addSalarytype() {\n        this.error = null;\n        this.selectedWorktimegroups = this.args.worktimegroup\n            ? [this.args.worktimegroup]\n            : [];\n        this.record = this.store.createRecord('salarytypev2');\n    }\n\n    @action\n    editSalarytype(row) {\n        this.error = null;\n        this.selectedWorktimegroups = row['worktimegroup'] ? [row['worktimegroup']] : [];\n        this.record = row;\n    }\n\n    @action\n    removeSalarytype(row) {\n        if (row.fieldtype === 'auto.hours')\n            return this.notifications.warning(this.intl.t('salarytypes.warning_remove_automatic'), {\n                autoClear: true,\n            });\n        this.evented.storeEvent('remove', 'salarytypev2', row);\n    }\n\n    @action\n    restoreSalarytype(row) {\n        this.evented.storeEvent('restore', 'salarytypev2', row);\n    }\n\n    @action\n    togglePopover(id) {\n        if (!isPresent(this.showTooltip[id])) this.showTooltip[id] = true;\n        else this.showTooltip[id] = !this.showTooltip[id];\n        this.showTooltip = this.showTooltip;\n    }\n\n    async isValidRecord() {\n        this.salaryTypeNameError = '';\n\n        if (this.record.isNew) {\n            const p1 = await this.store.query('salarytypev2', { name: this.record.name });\n\n            if (p1?.length > 0) {\n                let wortimeGroups = this.selectedWorktimegroups.map((item) => Number(item.id));\n\n                for (let item of p1.toArray()) {\n                    if (wortimeGroups.includes(Number(item.worktimegroup.id))) {\n                        const wg = this.store.peekRecord('worktimegroup', item.worktimegroup.id);\n                        this.salaryTypeNameError +=\n                            this.intl.t('salarytypev2.error_exists_for_worktimegoup', {\n                                worktimegroup: wg.name,\n                                salarytype: this.record.name,\n                            }) + ' ';\n                    }\n                }\n                if (this.salaryTypeNameError !== '') return false;\n            }\n\n            await this.record.validate(['name', 'type', 'key']);\n            if (isEmpty(this.selectedWorktimegroups)) {\n                this.worktimegroupError = this.intl.t('field.error.mandatory');\n                return false;\n            }\n        } else await this.record.validate();\n\n        if (!this.record.isValid) return false;\n\n        return true;\n    }\n}\n","import Component from '@glimmer/component';\n\nexport default class SettingsGeneralV2ComponentsSalarytypesSalariesModalComponent extends Component {\n    /**\n     * 1. when editing auto salarytype: disable all fields except key\n     * 2. when worktimeGroupLocked disable worktimegroup (this used when worktimegroup is selected via settings)\n     * 3. never allow editing worktimegroup\n     */\n    get disabledFields() {\n        const ret = {};\n\n        // 1.\n        if (this.args.record.fieldtype === 'auto' && !this.args.record.isNew) {\n            ret.name = true;\n            ret.worktimegroup = true;\n            ret.type = true;\n        }\n\n        // 2.\n        if (this.args.worktimeGroupLocked) ret.worktimegroup = true;\n\n        // 3.\n        if (!this.args.record.isNew) ret.worktimegroup = true;\n\n        return ret;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"WMvf9y/H\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"type\\\",\\\"opt\\\",\\\"sub_opt\\\",\\\"type\\\",\\\"@error\\\",\\\"@record\\\",\\\"@types\\\",\\\"@salaryTypeNameError\\\",\\\"@worktimegroupError\\\",\\\"@selectedWorktimegroups\\\",\\\"@closeModal\\\",\\\"@onFieldChange\\\",\\\"@saving\\\",\\\"@save\\\"],\\\"statements\\\":[[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[23,16,[]],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.add_salarytypev2\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"salarytypev2\\\",[23,11,[]],[23,17,[]],[23,16,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"worktimegroup\\\"],null],[23,11,[\\\"isNew\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\"],[[28,\\\"t\\\",[\\\"salarytypev2.worktimegroup\\\"],null],[23,5,[\\\"features\\\",\\\"mandatory\\\"]],[23,14,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[5,\\\"addon/fields/multiselect\\\",[],[[\\\"@form\\\",\\\"@name\\\",\\\"@options\\\",\\\"@value\\\",\\\"@onChange\\\",\\\"@disabled\\\"],[\\\"salarytypev2\\\",[23,5,[\\\"name\\\"]],[28,\\\"hash\\\",null,[[\\\"form\\\",\\\"fields\\\"],[[23,5,[\\\"options\\\",\\\"form\\\"]],[23,5,[\\\"options\\\",\\\"fields\\\"]]]]],[23,15,[]],[28,\\\"fn\\\",[[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null],[28,\\\"get\\\",[[23,0,[\\\"disabledFields\\\"]],[23,5,[\\\"name\\\"]]],null]]]],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"name\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\",\\\"@mandatory\\\",\\\"@error\\\"],[[28,\\\"t\\\",[\\\"salarytypev2.name\\\"],null],[23,5,[\\\"features\\\",\\\"mandatory\\\"]],[23,13,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[5,\\\"input\\\",[[12,\\\"class\\\",\\\"form-control\\\"]],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@disabled\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[28,\\\"get\\\",[[23,11,[]],[23,5,[\\\"name\\\"]]],null],[23,11,[]],[28,\\\"get\\\",[[23,0,[\\\"disabledFields\\\"]],[23,5,[\\\"name\\\"]]],null]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"type\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"salarytypev2.type\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[28,\\\"get\\\",[[23,11,[]],\\\"fieldtype\\\"],null],\\\"auto\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"disabled\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[28,\\\"get\\\",[[23,11,[]],\\\"type\\\"],null],\\\"work_hours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"t\\\",[\\\"salarytypev2.fieldtype.auto.hours\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[28,\\\"get\\\",[[23,11,[]],\\\"type\\\"],null],\\\"_basichours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"t\\\",[\\\"salarytypev2.fieldtype.auto.basic_hours\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"t\\\",[\\\"salarytypev2.fieldtype.auto\\\"],null],false],[0,\\\"\\\\n                                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"disabled\\\",[28,\\\"get\\\",[[23,0,[\\\"disabledFields\\\"]],[23,5,[\\\"name\\\"]]],null]],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"fn\\\",[[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.choose\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"sort\\\",[[23,12,[\\\"hours\\\"]]],[[\\\"sortBy\\\"],[\\\"translated_name\\\"]]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,9,[\\\"name\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[28,\\\"get\\\",[[23,11,[]],[23,5,[\\\"name\\\"]]],null],[23,9,[\\\"name\\\"]]],null]],[8],[1,[23,9,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[9]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"sort\\\",[[23,12,[\\\"subcategory\\\"]]],[[\\\"sortBy\\\"],[\\\"translated_name\\\"]]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-empty\\\",[[23,6,[\\\"options\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"optgroup\\\",true],[11,\\\"label\\\",[23,6,[\\\"translated_name\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,6,[\\\"options\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[\\\"type\\\"]],\\\"dropdown_values\\\"],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,7,[\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                                        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[28,\\\"concat\\\",[[23,7,[\\\"name\\\"]],\\\":\\\",[23,8,[\\\"id\\\"]]],null]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[28,\\\"get\\\",[[23,11,[]],[23,5,[\\\"name\\\"]]],null],[28,\\\"concat\\\",[[23,7,[\\\"name\\\"]],\\\":\\\",[23,8,[\\\"id\\\"]]],null]],null]],[8],[1,[23,7,[\\\"translated_name\\\"]],false],[0,\\\": \\\"],[1,[23,8,[\\\"value\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,7,[\\\"name\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[28,\\\"get\\\",[[23,11,[]],[23,5,[\\\"name\\\"]]],null],[23,7,[\\\"name\\\"]]],null]],[8],[1,[23,7,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[7]},null],[0,\\\"                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[6]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,4,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[28,\\\"get\\\",[[23,11,[]],[23,5,[\\\"name\\\"]]],null],[23,11,[]],[28,\\\"fn\\\",[[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null],[23,5,[\\\"features\\\",\\\"mandatory\\\"]],[28,\\\"get\\\",[[23,0,[\\\"disabledFields\\\"]],[23,5,[\\\"name\\\"]]],null]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[5]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[3,4]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Buttons\\\"]],[],[[\\\"@saving\\\",\\\"@save\\\",\\\"@cancel\\\"],[[23,18,[]],[23,19,[]],[23,16,[]]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,10,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"addon/form-add/error\\\",[],[[\\\"@error\\\"],[[23,10,[]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/salarytypes/salaries/modal/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"5jCEQMNZ\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"field\\\",\\\"value\\\",\\\"unformatted\\\",\\\"row\\\",\\\"row\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"center-alignment\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showPassive\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.show_passive_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filter\\\",\\\"@hideCreatedColumn\\\",\\\"@showFilters\\\"],[\\\"salarytypev2\\\",[23,0,[\\\"filters\\\"]],true,\\\"q\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"Add\\\"]],[],[[\\\"@onClick\\\"],[[23,0,[\\\"addSalarytype\\\"]]]]],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@hideSumRow\\\",\\\"@hideRemovedText\\\",\\\"@formatCells\\\",\\\"@classes\\\"],[true,true,true,\\\"hide-horizontal-scrollbar\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"history\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[\\\"fieldtype\\\"]],\\\"auto\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[\\\"row_info\\\",\\\"status\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Info salarytypev2-info-button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"togglePopover\\\"]],[23,7,[\\\"id\\\"]]],null]]],[8],[0,\\\"\\\\n                                \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@text\\\",\\\"@tooltipClass\\\",\\\"@popperContainer\\\",\\\"@event\\\",\\\"@isShown\\\",\\\"@hideOn\\\",\\\"@side\\\"],[[28,\\\"t\\\",[\\\"salarytypev2.removed_infotext\\\"],[[\\\"htmlSafe\\\"],[true]]],\\\"help-tooltip\\\",\\\"body\\\",\\\"none\\\",[28,\\\"get\\\",[[23,0,[\\\"showTooltip\\\"]],[23,7,[\\\"id\\\"]]],null],\\\"click\\\",\\\"right\\\"]]],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"editSalarytype\\\"]],[23,7,[]]],null]]],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Info salarytypev2-info-button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"togglePopover\\\"]],[23,7,[\\\"id\\\"]]],null]]],[8],[0,\\\"\\\\n                                \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@text\\\",\\\"@tooltipClass\\\",\\\"@popperContainer\\\",\\\"@event\\\",\\\"@isShown\\\",\\\"@hideOn\\\",\\\"@side\\\"],[[28,\\\"t\\\",[\\\"salarytypev2.normal_infotext\\\"],[[\\\"htmlSafe\\\"],[true]]],\\\"help-tooltip\\\",\\\"body\\\",\\\"none\\\",[28,\\\"get\\\",[[23,0,[\\\"showTooltip\\\"]],[23,7,[\\\"id\\\"]]],null],\\\"click\\\",\\\"right\\\"]]],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[\\\"row_info\\\",\\\"status\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,7,[\\\"worktimegroup\\\",\\\"row_info\\\",\\\"status\\\"]],\\\"normal\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-ReuseFilled\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"restoreSalarytype\\\"]],[23,7,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Info salarytypev2-info-button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"togglePopover\\\"]],[23,7,[\\\"id\\\"]]],null]]],[8],[0,\\\"\\\\n                                    \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@text\\\",\\\"@tooltipClass\\\",\\\"@popperContainer\\\",\\\"@event\\\",\\\"@isShown\\\",\\\"@hideOn\\\",\\\"@side\\\"],[[28,\\\"t\\\",[\\\"salarytypev2.removed_infotext.worktimegroup_removed\\\"],[[\\\"htmlSafe\\\"],[true]]],\\\"help-tooltip\\\",\\\"body\\\",\\\"none\\\",[28,\\\"get\\\",[[23,0,[\\\"showTooltip\\\"]],[23,7,[\\\"id\\\"]]],null],\\\"click\\\",\\\"right\\\"]]],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Delete\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"removeSalarytype\\\"]],[23,7,[]]],null]]],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"editSalarytype\\\"]],[23,7,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"Cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[1,[28,\\\"call\\\",[[28,\\\"fn\\\",[[23,0,[\\\"getReportValue\\\"]],[23,3,[]],[23,4,[]],[23,5,[]],[23,6,[]]],null]],null],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[3,4,5,6]}],[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"center-alignment\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs passive-button\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"toggleRemoved\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showPassive\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"general.hide_passive\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"general.show_passive\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"class\\\"],[\\\"loading-icon\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"record\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"settings/general-v2/components/salarytypes/salaries/modal\\\",[],[[\\\"@record\\\",\\\"@closeModal\\\",\\\"@onFieldChange\\\",\\\"@selectedWorktimegroups\\\",\\\"@worktimegroupError\\\",\\\"@salaryTypeNameError\\\",\\\"@saving\\\",\\\"@save\\\",\\\"@worktimeGroupLocked\\\",\\\"@error\\\",\\\"@types\\\"],[[23,0,[\\\"record\\\"]],[23,0,[\\\"closeModal\\\"]],[23,0,[\\\"onFieldChange\\\"]],[23,0,[\\\"selectedWorktimegroups\\\"]],[23,0,[\\\"worktimegroupError\\\"]],[23,0,[\\\"salaryTypeNameError\\\"]],[23,0,[\\\"saving\\\"]],[23,0,[\\\"save\\\"]],[23,0,[\\\"worktimeGroupLocked\\\"]],[23,0,[\\\"error\\\"]],[23,0,[\\\"types\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/salarytypes/salaries/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"AMaMYK9q\",\"block\":\"{\\\"symbols\\\":[\\\"@setting\\\",\\\"@onToggle\\\",\\\"@loading\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-component\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-setting-header\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"settings.salarytypes.salarytypesv2\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[23,3,[]],[23,0,[\\\"loading\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"preventUsage\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning my-4 mx-4\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[28,\\\"t\\\",[\\\"salarytypes.settings.warning\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-component\\\"],[8],[0,\\\"\\\\n    \\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[23,1,[\\\"active\\\"]],[28,\\\"fn\\\",[[23,2,[]],[23,1,[]]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-setting-header\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"settings.salarytypes.salarytypesv2\\\"],null],false],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/salarytypes/template.hbs\"}});","import Component from '@glimmer/component';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport runAutomaticSalarytypes from '../runAutomaticSalarytypes';\nimport { isPresent } from '@ember/utils';\nexport default class SalarytypesWorktypesComponent extends Component {\n    @service store;\n    @service ttapi;\n    @service evented;\n    @service intl;\n    @service notifications;\n    @service scroller;\n    @service dialogs;\n\n    @tracked record;\n    @tracked saving;\n    @tracked error;\n    @tracked errors;\n    @tracked calculationTypes;\n    @tracked calculations;\n    @tracked showPassive;\n    @tracked loadingCalculationTypes;\n    @tracked showReport = false;\n    @tracked showTooltip = {};\n    @tracked loadingDefault;\n    @tracked recordToBeSavedAlso;\n\n    constructor() {\n        super(...arguments);\n        this.worktimegroup = this.args.worktimegroup ? this.args.worktimegroup : null;\n        this.filters = this.worktimegroup ? { worktimegroup: this.worktimegroup } : {};\n        this.updateSalaryCalculationTypes(this.worktimegroup);\n        this.showPassive = false;\n        this.worktimeGroupLocked = isPresent(this.args.worktimegroup);\n        this.init();\n    }\n\n    async init() {\n        this.showReport = false;\n        await runAutomaticSalarytypes(this.ttapi);\n        this.showReport = true;\n    }\n\n    @action\n    getTranslatedValue(rawValues) {\n        return rawValues.split(',').length + ' ' + this.intl.t('report.items_checked');\n    }\n\n    @action\n    addWorktype() {\n        this.error = null;\n        this.errors = {};\n        this.calculations = [];\n        let defaults = {};\n        if (this.worktimegroup) {\n            defaults.worktimegroup = this.store.peekRecord('worktimegroup', this.worktimegroup);\n        }\n        this.updateSalaryCalculationTypes(this.worktimegroup);\n        this.record = this.store.createRecord('worktypev2', defaults);\n    }\n\n    @action\n    editWorktype(row) {\n        this.error = null;\n        if (!this.args.worktimegroup)\n            this.updateSalaryCalculationTypes(row.worktimegroup ? row.worktimegroup.id : null);\n        this.calculations = row['calculations'] ? row['calculations'].split(',') : [];\n        this.record = row;\n    }\n\n    @action\n    removeWorktype(row) {\n        const filteredWorktypes = this.store\n            .peekAll('worktypev2')\n            .filterBy('worktimegroup', row.worktimegroup);\n        if (filteredWorktypes.length <= 1)\n            return this.notifications.warning(this.intl.t('worktypes.cannot_remove_last'), {\n                autoClear: true,\n            });\n        this.evented.storeEvent('remove', 'worktypev2', row);\n    }\n\n    @action\n    restoreWorktype(row) {\n        this.evented.storeEvent('restore', 'worktypev2', row);\n    }\n\n    @action\n    closeModal() {\n        if (this.record && this.record.isNew) this.record.deleteRecord();\n        else if (this.record) this.record.rollbackAttributes();\n        this.evented.storeEvent('insert', 'worktypev2', null);\n        this.record = null;\n        // if we are closing modal but we have not persisted changes to other record, just discard those changes\n        if (this.recordToBeSavedAlso) {\n            this.recordToBeSavedAlso.rollbackAttributes();\n            this.recordToBeSavedAlso = null;\n        }\n    }\n\n    @action\n    onFieldChange(field, value) {\n        if (field === 'worktimegroup') this.updateSalaryCalculationTypes(value ? value.id : null);\n        this.record[field] = value;\n    }\n\n    @action\n    toggleCalculationValue(value) {\n        if (!this.calculations.includes(value.name)) {\n            if (this.validateSliders(value)) this.calculations.push(value.name);\n        } else {\n            if (!this.validateSliders(value)) return;\n            const index = this.calculations.indexOf(value.name);\n            if (index >= 0) this.calculations.splice(index, 1);\n        }\n        this.calculations = this.calculations;\n    }\n\n    // used for setting worktimetype as default\n    // When setting default to this record, we unset default on previous record that had default-value\n    // When trying to set default off, we can do it on new record but not on any other record because we cannot know which record we should set as default\n    @action\n    async setForSaveDefault() {\n        this.loadingDefault = true;\n        const found = await this.store.query('worktypev2', {\n            default: 'on',\n            worktimegroup: this.record.worktimegroup.id,\n        });\n        this.loadingDefault = false;\n        let foundRecord = found.firstObject;\n\n        // if this is a new record we can turn default on AND off..\n        if (this.record.default) {\n            if (this.record.isNew) {\n                foundRecord.default = true;\n                this.record.default = false;\n            } else {\n                // ..but if we trying to set default off when editing, we show dialog that you cannot do it\n                this.dialogs.alert(this.intl.t('worktypes.cannot_unset_default'));\n            }\n        } else {\n            // if another worktype has default, set it off (but do not save yet)\n            if (found.length > 0) {\n                const con2 = await this.dialogs.confirm(\n                    this.intl.t('worktypes.confirm_substitue_default', {\n                        from_type: '\"' + foundRecord.name + '\"',\n                    }),\n                );\n                if (!con2) return;\n                foundRecord.default = false;\n                this.recordToBeSavedAlso = foundRecord;\n            }\n            this.record.default = true;\n        }\n    }\n\n    @action\n    async save() {\n        this.saving = true;\n        this.errors = {};\n        try {\n            if (this.record.isNew) {\n                const found = await this.store.query('worktypev2', {\n                    name: this.record.name,\n                    worktimegroup: this.record.worktimegroup.id,\n                });\n                if (found.length) {\n                    this.errors = {\n                        name: this.intl.t('field.error.unique', { field: this.record.name }),\n                    };\n                    const modelContentElement = document.querySelector(\n                        '.worktypev2-custom-modal .ember-movenium-modal-content',\n                    );\n                    const { scrollTop } = modelContentElement;\n                    this.scroller.animateElement(modelContentElement, scrollTop, 0);\n                    return false;\n                }\n            }\n            await this.record.validate();\n            this.calculationTypes = await this.calculationTypes;\n            this.calculations = this.calculations.filter((cal) =>\n                this.calculationTypes.mapBy('name').includes(cal),\n            );\n            this.record['calculations'] = this.calculations.join(',');\n            await this.record.save();\n            // save also the other record that we modified when we set default on this record..\n            if (this.recordToBeSavedAlso) await this.recordToBeSavedAlso.save();\n            await runAutomaticSalarytypes(this.ttapi);\n            this.closeModal();\n        } catch (e) {\n            this.error = e;\n        } finally {\n            this.saving = false;\n        }\n    }\n\n    @action\n    toggleRemoved() {\n        this.showPassive = !this.showPassive;\n        this.evented.storeEvent('toggleRemoved', 'worktypev2', null);\n    }\n\n    @action\n    togglePopover(id) {\n        if (!isPresent(this.showTooltip[id])) this.showTooltip[id] = true;\n        else this.showTooltip[id] = !this.showTooltip[id];\n        this.showTooltip = this.showTooltip;\n    }\n\n    async updateSalaryCalculationTypes(worktimegroup) {\n        this.loadingCalculationTypes = true;\n        this.calculationTypes = await this.ttapi.request(\n            'api/salary/calculations/' + worktimegroup,\n        );\n        this.loadingCalculationTypes = false;\n    }\n\n    validateSliders(value) {\n        let errors = [];\n        let message = this.intl.t('worktypes.calculation_errors.titel') + '<br>';\n        let [fieldName, isSaldoField] = value.name.split(/(?=_)/g);\n\n        if (!this.calculations.includes(value.name)) {\n            //show alarm if trying to turn on overtime saldo calculation but saldo calculation is off\n            if (isSaldoField && !this.calculations.includes('saldo'))\n                errors.push(\n                    '<br>' + this.intl.t('worktypes.calculation_errors.saldo_not_on') + '<br>',\n                );\n            //show alarm if trying to turn on some calculation but saldo or normal version of it is on\n            let overlappingCalculation = isSaldoField ? fieldName : fieldName + '_saldo';\n            if (this.calculations.includes(overlappingCalculation))\n                errors.push(\n                    '<br>' +\n                        this.intl.t('worktypes.calculation_errors.calculation_overlap', {\n                            calculation: this.translateOverlapCalc(overlappingCalculation, value),\n                        }) +\n                        '<br>',\n                );\n        } else {\n            //show alarm if trying to remove saldo calculation but some overtime saldo calculation is on\n            if (\n                this.calculations.includes('saldo') &&\n                fieldName == 'saldo' &&\n                this.calculationsIncludesOvertimeSaldos()\n            )\n                errors.push(\n                    '<br>' +\n                        this.intl.t('worktypes.calculation_errors.OvertimeSaldo_calculation_on') +\n                        '<br>',\n                );\n        }\n\n        if (!errors.length) return true;\n\n        errors.map((error) => (message += error));\n        this.dialogs.alert(message);\n        return false;\n    }\n\n    calculationsIncludesOvertimeSaldos() {\n        return this.calculations.find((calc) => calc.includes('_saldo'));\n    }\n\n    translateOverlapCalc(overlappingCalc, calc) {\n        if (calc.text) {\n            let [fieldName, isSaldoField] = calc.text.split(/(?= )/g);\n            return isSaldoField ? fieldName : fieldName + ' (saldo)';\n        }\n        return this.intl.t('worktime.' + overlappingCalc);\n    }\n}\n","import Component from '@glimmer/component';\n\nexport default class SettingsGeneralV2ComponentsSalarytypesWorktypesModalComponent extends Component {\n    /**\n     * never allow editing worktimegroup\n     */\n    get disabledFields() {\n        const ret = {};\n\n        if (!this.args.record.isNew) ret.worktimegroup = true;\n\n        // Disable worktimegroup when adding worktype in worktimegroup settings\n        if (this.args.worktimeGroupLocked) ret.worktimegroup = true;\n\n        return ret;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"VjZamT1o\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Form\\\",\\\"Fields\\\",\\\"FieldComponent\\\",\\\"Field\\\",\\\"calc\\\",\\\"@error\\\",\\\"@errors\\\",\\\"@record\\\",\\\"@setForSaveDefault\\\",\\\"@loadingDefault\\\",\\\"@calculations\\\",\\\"@toggleCalculationValue\\\",\\\"@calculationTypes\\\",\\\"@loadingCalculationTypes\\\",\\\"@closeModal\\\",\\\"@onFieldChange\\\",\\\"@saving\\\",\\\"@save\\\"],\\\"statements\\\":[[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[23,16,[]],\\\"ember-movenium-form-report-form-add-modal worktypev2-custom-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,9,[\\\"isNew\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"menu.add_worktypev2\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"menu.edit_worktypev2\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"addon/form-add\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@onFieldChange\\\",\\\"@close\\\"],[\\\"worktypev2\\\",[23,9,[]],[23,17,[]],[23,16,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Fields\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"calculations\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,9,[\\\"worktimegroup\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"worktypev2.calculations\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column center\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,15,[]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[5,\\\"loader-icon\\\",[],[[\\\"@slim\\\",\\\"@class\\\"],[\\\"true\\\",\\\"mb-6\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[23,14,[]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-50 calculation-row\\\"],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"calculations-name\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[23,6,[]],\\\"text\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                    \\\"],[1,[28,\\\"get\\\",[[23,6,[]],\\\"text\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                                    \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"worktime.\\\",[28,\\\"get\\\",[[23,6,[]],\\\"name\\\"],null]],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-10 calculation-row\\\"],[8],[0,\\\"\\\\n                                            \\\"],[5,\\\"x-toggle\\\",[],[[\\\"@theme\\\",\\\"@value\\\",\\\"@onToggle\\\"],[\\\"light\\\",[28,\\\"includes\\\",[[28,\\\"get\\\",[[23,6,[]],\\\"name\\\"],null],[23,12,[]]],null],[28,\\\"fn\\\",[[23,13,[]],[23,6,[]]],null]]]],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"salarytype\\\"],null],[28,\\\"not\\\",[[28,\\\"get\\\",[[23,9,[]],\\\"worktimegroup\\\"],null]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"worktypev2.salarytype\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worktypes.select_worktimegroup_first\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"name\\\"]],\\\"default\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,11,[]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"loader-icon\\\",[],[[\\\"@slim\\\",\\\"@class\\\"],[\\\"true\\\",\\\"mb-6\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"not\\\",[[28,\\\"get\\\",[[23,9,[]],\\\"worktimegroup\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@text\\\"],[[28,\\\"t\\\",[\\\"report.worktypev2.default\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worktypes.select_worktimegroup_first\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@error\\\"],[[28,\\\"get\\\",[[23,8,[]],[23,5,[\\\"name\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                                        \\\"],[6,[23,4,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[28,\\\"get\\\",[[23,9,[]],[23,5,[\\\"name\\\"]]],null],[23,9,[]],[28,\\\"fn\\\",[[23,10,[]]],null],[23,5,[\\\"features\\\",\\\"mandatory\\\"]],[28,\\\"or\\\",[[28,\\\"get\\\",[[23,0,[\\\"disabledFields\\\"]],[23,5,[\\\"name\\\"]]],null],[23,11,[]]],null]]]],[0,\\\"\\\\n                                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"  \\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pt-5\\\"],[8],[0,\\\"\\\\n                                    \\\"],[5,\\\"field-info-bubble\\\",[],[[\\\"@side\\\",\\\"@text\\\"],[\\\"right\\\",[28,\\\"t\\\",[\\\"worktypes.default_field_help\\\"],null]]]],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"addon/bootstrap-container\\\",[],[[\\\"@error\\\"],[[28,\\\"get\\\",[[23,8,[]],[23,5,[\\\"name\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[6,[23,4,[]],[],[[\\\"@field\\\",\\\"@form\\\",\\\"@value\\\",\\\"@record\\\",\\\"@onChange\\\",\\\"@mandatory\\\",\\\"@disabled\\\"],[[23,5,[\\\"name\\\"]],[23,5,[\\\"form\\\"]],[28,\\\"get\\\",[[23,9,[]],[23,5,[\\\"name\\\"]]],null],[23,9,[]],[28,\\\"fn\\\",[[23,2,[\\\"OnChange\\\"]],[23,5,[\\\"name\\\"]]],null],[23,5,[\\\"features\\\",\\\"mandatory\\\"]],[28,\\\"get\\\",[[23,0,[\\\"disabledFields\\\"]],[23,5,[\\\"name\\\"]]],null]]]],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[5]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[3,4]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Buttons\\\"]],[],[[\\\"@saving\\\",\\\"@save\\\",\\\"@cancel\\\"],[[23,18,[]],[23,19,[]],[23,16,[]]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,7,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"addon/form-add/error\\\",[],[[\\\"@error\\\"],[[23,7,[]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/salarytypes/worktypes/modal/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"xek0hIxd\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"Field\\\",\\\"Value\\\",\\\"row\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"showReport\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"center-alignment\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showPassive\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.show_passive_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showColumns\\\",\\\"@filter\\\",\\\"@hideCreatedColumn\\\",\\\"@showFilters\\\"],[\\\"worktypev2\\\",\\\"name,salarytype,worktimegroup,calculations,default\\\",[23,0,[\\\"filters\\\"]],true,\\\" \\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Add\\\"]],[],[[\\\"@onClick\\\"],[[23,0,[\\\"addWorktype\\\"]]]]],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@hideSumRow\\\",\\\"@hideRemovedText\\\",\\\"@formatCells\\\",\\\"@classes\\\"],[true,true,true,\\\"worktype-report-table\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"history\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"editWorktype\\\"]],[23,5,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"row_info\\\",\\\"status\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[\\\"worktimegroup\\\",\\\"row_info\\\",\\\"status\\\"]],\\\"normal\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-ReuseFilled\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"restoreWorktype\\\"]],[23,5,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Info salarytypev2-info-button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"togglePopover\\\"]],[23,5,[\\\"id\\\"]]],null]]],[8],[0,\\\"\\\\n                        \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@text\\\",\\\"@tooltipClass\\\",\\\"@popperContainer\\\",\\\"@event\\\",\\\"@isShown\\\",\\\"@hideOn\\\",\\\"@side\\\"],[[28,\\\"t\\\",[\\\"worktype.removed_infotext.worktimegroup_removed\\\"],[[\\\"htmlSafe\\\"],[true]]],\\\"help-tooltip\\\",\\\"body\\\",\\\"none\\\",[28,\\\"get\\\",[[23,0,[\\\"showTooltip\\\"]],[23,5,[\\\"id\\\"]]],null],\\\"click\\\",\\\"right\\\"]]],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Delete\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"removeWorktype\\\"]],[23,5,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[23,3,[]],\\\"calculations\\\"],null],[23,4,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"call\\\",[[28,\\\"fn\\\",[[23,0,[\\\"getTranslatedValue\\\"]],[23,4,[]]],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[3,4]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"center-alignment\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs passive-button\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,0,[\\\"toggleRemoved\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showPassive\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"general.hide_passive\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"general.show_passive\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"class\\\"],[\\\"loading-icon\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[23,0,[\\\"record\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"settings/general-v2/components/salarytypes/worktypes/modal\\\",[],[[\\\"@record\\\",\\\"@worktimeGroupLocked\\\",\\\"@loadingCalculationTypes\\\",\\\"@calculationTypes\\\",\\\"@calculations\\\",\\\"@closeModal\\\",\\\"@onFieldChange\\\",\\\"@toggleCalculationValue\\\",\\\"@saving\\\",\\\"@save\\\",\\\"@error\\\",\\\"@errors\\\",\\\"@setForSaveDefault\\\",\\\"@loadingDefault\\\"],[[23,0,[\\\"record\\\"]],[23,0,[\\\"worktimeGroupLocked\\\"]],[23,0,[\\\"loadingCalculationTypes\\\"]],[23,0,[\\\"calculationTypes\\\"]],[23,0,[\\\"calculations\\\"]],[23,0,[\\\"closeModal\\\"]],[23,0,[\\\"onFieldChange\\\"]],[23,0,[\\\"toggleCalculationValue\\\"]],[23,0,[\\\"saving\\\"]],[23,0,[\\\"save\\\"]],[23,0,[\\\"error\\\"]],[23,0,[\\\"errors\\\"]],[23,0,[\\\"setForSaveDefault\\\"]],[23,0,[\\\"loadingDefault\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/salarytypes/worktypes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/general-v2/components/saldo-setting/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorFieldSettingCompSaldoSettingComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../../classes/collector';\n\nimport config from '../../../../../config/environment';\n\nimport { isArray } from '@ember/array';\n\nCollectorFieldSettingCompSaldoSettingComponent = Ember.Component.extend({\n    Collector: Em.inject.service('collector-service'),\n    session: Em.inject.service(),\n    store: Em.inject.service(),\n    intl: Em.inject.service(),\n    dialogs: Ember.inject.service(),\n    //startdate: Em.computed ->\n    //    moment().format('YYYY-MM-DD')\n    didReceiveAttrs: function () {\n        this.set('loading', true);\n        return this.get('Collector')\n            .ttapi({\n                url: 'saldo/saldoSettings',\n            })\n            .then((back) => {\n                var skip_worktimegroups;\n                // these are the default-values if no saldo-settings are found\n                if (back.length === 0) {\n                    back = {};\n                    back.startdate = moment().format('YYYY-MM-DD');\n                    back.minimum = 20 * 60;\n                    back.maximum = 40 * 60;\n                    back.dailymaximum = 4 * 60;\n                    this.send('saveSetting');\n                }\n                skip_worktimegroups = back.skip_worktimegroups;\n                // sooooo ugly :(\n                this.set('startdate', back.startdate);\n                this.set('minimum_saldo', back.minimum / 60);\n                this.set('maximum_saldo', back.maximum / 60);\n                this.set('dailymaximum_saldo', back.dailymaximum / 60);\n                this.set('old_startdate', back.startdate);\n                this.set('old_minimum_saldo', back.minimum / 60);\n                this.set('old_maximum_saldo', back.maximum / 60);\n                this.set('old_dailymaximum_saldo', back.dailymaximum / 60);\n                this.set('saldo_absence_id', back.saldo_absence_id);\n                this.set('autocut_saldo', back.auto_cut);\n                this.set('old_autocut_saldo', this.get('autocut_saldo'));\n                this.set('skip_worktimegroups', skip_worktimegroups);\n                this.set('old_skip_worktimegroups', skip_worktimegroups);\n                this.set('split_basichours', back.split_basichours);\n                this.set('old_split_basichours', this.get('split_basichours'));\n                return this.set('loading', false);\n            });\n    },\n    isFiService: Ember.computed('session.currentUser', function () {\n        return false;\n        if (this.get('session.currentUser.company_info.country') === 'fi') {\n            return true;\n        }\n    }),\n    dirty: Ember.computed(\n        'startdate',\n        'old_startdate',\n        'minimum_saldo',\n        'old_minimum_saldo',\n        'maximum_saldo',\n        'old_maximum_saldo',\n        'dailymaximum_saldo',\n        'old_dailymaximum_saldo',\n        'autocut_saldo',\n        'old_autocut_saldo',\n        'skip_worktimegroups',\n        'old_skip_worktimegroups',\n        'old_split_basichours',\n        'split_basichours',\n        function () {\n            return (\n                this.get('startdate') !== this.get('old_startdate') ||\n                this.get('minimum_saldo') !== this.get('old_minimum_saldo') ||\n                this.get('maximum_saldo') !== this.get('old_maximum_saldo') ||\n                this.get('dailymaximum_saldo') !== this.get('old_dailymaximum_saldo') ||\n                this.get('autocut_saldo') !== this.get('old_autocut_saldo') ||\n                this.get('skip_worktimegroups') !== this.get('old_skip_worktimegroups') ||\n                this.get('split_basichours') !== this.get('old_split_basichours')\n            );\n        },\n    ),\n    worktimegroupField: Ember.computed('skip_worktimegroups', function () {\n        var field;\n        field = this.get('Collector').field('user', 'worktimegroup');\n        field.type = 'multiselect';\n        return field;\n    }),\n    showAddSaldoAbsenceButton: Ember.computed('saldo_absence_id', function () {\n        if (!this.get('Collector').testNeeds(['abcense'])) {\n            return false;\n        }\n        if (!this.get('startdate')) {\n            return false;\n        }\n        if (this.get('Collector').testNeeds(['products.salarytype_v2'])) {\n            return false;\n        }\n        if (!this.get('saldo_absence_id')) {\n            return true;\n        }\n        if (!this.get('store').peekRecord('abcensetype', this.get('saldo_absence_id'))) {\n            return true;\n        }\n    }),\n    createSaldoAbsence: function () {\n        return new Ember.RSVP.Promise((resolve) => {\n            var record;\n            if (!this.get('Collector').testNeeds(['abcense'])) {\n                resolve(null);\n            }\n            if (this.get('Collector').testNeeds(['products.salarytype_v2'])) {\n                return resolve(null);\n            }\n            if (!this.get('saldo_absence_id')) {\n                // create new absence type\n                record = this.get('store').createRecord('abcensetype', {\n                    name: this.get('intl').t('saldo.saldo_absence'),\n                });\n                return record.save().then(function (saved) {\n                    return resolve(saved.get('id'));\n                });\n            } else if (!this.get('store').peekRecord('abcensetype', this.get('saldo_absence_id'))) {\n                return this.get('store')\n                    .query('abcensetype', {\n                        id: this.get('saldo_absence_id'),\n                    })\n                    .then((rows) => {\n                        if (Ember.isEmpty(rows)) {\n                            // create new absence type\n                            record = this.get('store').createRecord('abcensetype', {\n                                name: this.get('intl').t('saldo.saldo_absence'),\n                            });\n                            return record.save().then(function (saved) {\n                                return resolve(saved.get('id'));\n                            });\n                        } else {\n                            return resolve(this.get('saldo_absence_id'));\n                        }\n                    });\n            } else {\n                return resolve(this.get('saldo_absence_id'));\n            }\n        });\n    },\n    recalculateOldSaldos: function (between) {\n        var startdate;\n        startdate = between.split('_')[0];\n        return this.get('dialogs')\n            .confirm(\n                this.get('intl').t('saldo.calculateHistorySaldo', {\n                    startdate: moment(startdate).format('L'),\n                }),\n            )\n            .then((con) => {\n                if (con) {\n                    return this.get('Collector').ttapi({\n                        method: 'get',\n                        url: 'saldo/calculateSaldos?date=' + between + '&userid=all',\n                    });\n                }\n            });\n    },\n    actions: {\n        moreInfo: function () {\n            return window.open(config.APP.CDN_URL + '/documents/Saldot+ohje.pdf', '_blank');\n        },\n        changeWorktimegroups: function (value) {\n            return this.set('skip_worktimegroups', value);\n        },\n        saveSetting: function () {\n            return this.createSaldoAbsence().then((saldo_absence_id) => {\n                var data, old_startdate, recalculationNeeded;\n                data = {\n                    startdate: this.get('startdate'),\n                    minimum: parseInt(this.get('minimum_saldo'), 10) * 60,\n                    maximum: parseInt(this.get('maximum_saldo'), 10) * 60,\n                    dailymaximum: parseFloat(this.get('dailymaximum_saldo'), 10) * 60,\n                    saldo_absence_id: saldo_absence_id,\n                };\n                if (this.get('skip_worktimegroups')) {\n                    data.skip_worktimegroups = isArray(this.get('skip_worktimegroups'))\n                        ? this.get('skip_worktimegroups').join(',')\n                        : this.get('skip_worktimegroups');\n                } else {\n                    data.skip_worktimegroups = '';\n                }\n                if (this.get('autocut_saldo')) {\n                    data.auto_cut = true;\n                } else {\n                    data.auto_cut = '';\n                }\n                if (this.get('split_basichours')) {\n                    data.split_basichours = true;\n                    this.get('Collector').addProduct('saldo_splitted');\n                } else {\n                    data.split_basichours = '';\n                    this.get('Collector').removeProduct('saldo_splitted');\n                }\n                return this.get('Collector')\n                    .ttapi(\n                        {\n                            method: 'post',\n                            url: 'saldo/saldoSettings',\n                            data: data,\n                        },\n                        (old_startdate =\n                            this.get('old_startdate') || moment().format('YYYY-MM-DD')),\n                        this.get('startdate') < old_startdate\n                            ? (recalculationNeeded =\n                                  this.get('startdate') +\n                                  '_' +\n                                  moment(old_startdate).subtract(1, 'day').format('YYYY-MM-DD'))\n                            : (recalculationNeeded = false),\n                    )\n                    .then((back) => {\n                        this.set('old_startdate', this.get('startdate'));\n                        this.set('old_minimum_saldo', this.get('minimum_saldo'));\n                        this.set('old_maximum_saldo', this.get('maximum_saldo'));\n                        this.set('old_dailymaximum_saldo', this.get('dailymaximum_saldo'));\n                        this.set('old_autocut_saldo', this.get('autocut_saldo'));\n                        this.set('old_skip_worktimegroups', this.get('skip_worktimegroups'));\n                        this.set('old_split_basichours', this.get('split_basichours'));\n                        if (this.get('saldo_absence_id') === saldo_absence_id) {\n                            this.notifyPropertyChange('saldo_absence_id');\n                        } else {\n                            this.set('saldo_absence_id', saldo_absence_id);\n                        }\n                        if (this.get('saveCalled')) {\n                            this.saveCalled();\n                        }\n                        if (recalculationNeeded) {\n                            return this.recalculateOldSaldos(recalculationNeeded);\n                        }\n                    });\n            });\n        },\n        changeSaldotype: function (type) {\n            return this.set('saldotype', type);\n        },\n    },\n});\n\nexport default CollectorFieldSettingCompSaldoSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"eKEBkjZw\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"saldo.start\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"form-control add-fields\\\",[24,[\\\"startdate\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"saldo.minimum\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"minimum_saldo\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"saldo.maximum\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"maximum_saldo\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"saldo.dailymaximum\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"dailymaximum_saldo\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"saldo.autocut\\\"],null],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"autocut_saldo\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"autocut_saldo\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"saldo.split_basichours\\\"],null],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"split_basichours\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"split_basichours\\\"]]],null]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktimegroup\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"saldo.skip_worktimegroups\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"worktimegroupField\\\"]]],[[\\\"change\\\",\\\"value\\\"],[\\\"changeWorktimegroups\\\",[24,[\\\"skip_worktimegroups\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isFiService\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"moreInfo\\\"]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"info-button-md col-xs-2\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[1,[28,\\\"t\\\",[\\\"saldo.more_info_link\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"disabled\\\",[28,\\\"not\\\",[[24,[\\\"dirty\\\"]]],null]],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddSaldoAbsenceButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"saldo.add_saldo_absence\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/saldo-setting/template.hbs\"}});","import { inject as service } from '@ember/service';\nimport Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\n\nexport default Component.extend({\n    loadTranslations: service(),\n    intl: service(),\n\n    loading: true,\n\n    terms: computed(function () {\n        const terms = get(this, 'intl').t('terms.project');\n        const changesArr = terms.split(/\\n/g);\n        const termList = changesArr[0].split(/,/g);\n\n        return termList.map((item, key) => {\n            return { id: '' + key, text: item };\n        });\n    }),\n\n    didReceiveAttrs() {\n        set(this, 'selectedTerm', get(this, 'loadTranslations').getTermsIndex());\n        set(this, 'loading', false);\n    },\n\n    actions: {\n        termsChanged(index) {\n            get(this, 'loadTranslations').saveTermsIndex(index);\n            get(this, 'loadTranslations').fetch();\n\n            set(this, 'selectedTerm', index);\n\n            get(this, 'loadTranslations').saveTermsIndex(index);\n            this.saveCalled();\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"zdbzSLWi\",\"block\":\"{\\\"symbols\\\":[\\\"term\\\"],\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"settings.general.terms_desc\\\"],null],false],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"termsChanged\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"terms\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,1,[\\\"id\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"selectedTerm\\\"]]],null]],[8],[1,[23,1,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/terms-setting/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/general-v2/components/time-setting/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CollectorSettingCompTimeSettingComponent;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../../classes/collector';\n\nCollectorSettingCompTimeSettingComponent = Ember.Component.extend({\n    store: Em.inject.service(),\n    session: Em.inject.service(),\n    intl: Em.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    notifications: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    setting_default: '16:00',\n    time: Em.computed(function () {\n        return (\n            this.get('customerSettings').checkSetting(this.get('configs.name')) ||\n            this.setting_default\n        );\n    }),\n    second_time: Em.computed(function () {\n        return this.get('customerSettings').checkSetting(\n            this.get('configs.secondary_setting_name'),\n        );\n    }),\n    field1Translation: Em.computed(function () {\n        if (\n            this.get('configs.name').indexOf('_fi') > 0 ||\n            this.get('configs.name').indexOf('_se') > 0\n        ) {\n            return this.get('intl').t(\n                'settings.' + this.get('configs.name').slice(0, -3) + '.field',\n            );\n        } else {\n            return this.get('intl').t('settings.' + this.get('configs.name') + '.field');\n        }\n    }),\n    field2Translation: Em.computed(function () {\n        if (\n            this.get('configs.secondary_setting_name').indexOf('_fi') > 0 ||\n            this.get('configs.secondary_setting_name').indexOf('_se') > 0\n        ) {\n            return this.get('intl').t(\n                'settings.' + this.get('configs.secondary_setting_name').slice(0, -3) + '.field',\n            );\n        } else {\n            return this.get('intl').t('settings.' + this.get('configs.name') + '.field');\n        }\n    }),\n    /*\n  is_dirty: Em.computed 'setting', ->\n      if @get('setting')  != @get('setting_default')\n          return true\n      else\n          return false\n  */\n    actions: {\n        saveSetting: function () {\n            return this.get('customerSettings')\n                .setSetting(this.get('configs.name'), this.get('time'))\n                .then(() => {\n                    var promise;\n                    promise = new Em.RSVP.Promise((resolve, reject) => {\n                        if (this.get('configs.secondary_setting_name')) {\n                            return this.get('customerSettings')\n                                .setSetting(\n                                    this.get('configs.secondary_setting_name'),\n                                    this.get('second_time'),\n                                )\n                                .then(() => {\n                                    return resolve();\n                                });\n                        } else {\n                            return resolve();\n                        }\n                    });\n                    return promise.then(() => {\n                        if (this.get('settingSaved')) {\n                            return this.settingSaved();\n                        }\n                    });\n                });\n        },\n    },\n});\n\nexport default CollectorSettingCompTimeSettingComponent;\n","export default Ember.HTMLBars.template({\"id\":\"nHDBfw2V\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"configs\\\",\\\"secondary_setting_name\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-horizontal\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-6 control-label\\\"],[8],[1,[22,\\\"field1Translation\\\"],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"time\\\",[24,[\\\"time\\\"]],\\\"form-control\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-6 control-label\\\"],[8],[1,[22,\\\"field2Translation\\\"],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"time\\\",[24,[\\\"second_time\\\"]],\\\"form-control\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"time\\\",[24,[\\\"time\\\"]],\\\"form-control\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSetting\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/time-setting/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\nimport { isPresent } from '@ember/utils';\n\nexport default class WorktimeGroupSettingsComponent extends Component {\n    @service evented;\n    @service store;\n    @service analytics;\n    @service capi;\n    @service('collector-service') Collector;\n    @tracked showRemovingModal;\n    @tracked usersStillInGroup;\n    @tracked showPassive;\n    @tracked selectedWorktimegroup;\n\n    @action\n    toggleRemoved() {\n        this.showPassive = !this.showPassive;\n        this.evented.storeEvent('toggleRemoved', 'worktimegroup', null);\n    }\n\n    @action\n    tryToRemoveRow(row) {\n        let users = this.store.query('user', { worktimegroup: row.id, limit: 10 });\n        this.selectedWorktimegroup = row;\n        this.usersStillInGroup = users;\n        this.showRemovingModal = true;\n        this.analytics.trackEvent({ category: 'delete row', action: 'worktimegroup' });\n    }\n\n    @action\n    closeModal() {\n        this.showRemovingModal = false;\n    }\n\n    @action\n    async removeWorktimegroup(row) {\n        await this.removeWorktimegroupProducts(row.id);\n        await row.destroyRecord();\n        await row.unloadRecord();\n        this.showRemovingModal = false;\n        this.evented.storeEvent('update', null, null); // updates ALL form-reports on this page but lucky for us, there is no other reports on this page\n    }\n\n    @action\n    restoreRow(row) {\n        this.evented.storeEvent('restore', 'worktimegroup', row);\n    }\n\n    async removeWorktimegroupProducts(worktimegroup) {\n        const worktimegroupProducts = await this.capi.request(\n            'service/productsByWorktimegroup?only=true&worktimegroups=' + worktimegroup,\n        );\n        const products = worktimegroupProducts?.products;\n        if (!products) return;\n\n        if (isPresent(products[worktimegroup])) {\n            products[worktimegroup].forEach((product) => {\n                this.Collector.removeProduct(product, worktimegroup);\n            });\n        }\n    }\n}\n","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\n\nexport default class SettingsGeneralV2ComponentsWorktimeGroupModalComponent extends Component {\n    get moreUsers() {\n        return this.args.users.meta.count - this.args.users.length;\n    }\n    get styleNamespace() {\n        return podNames['settings/general-v2/components/worktimegroups/modal'];\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"Ichn1GrI\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"user\\\",\\\"@row\\\",\\\"@closeModal\\\",\\\"@removeWorktimegroup\\\",\\\"@users\\\"],\\\"statements\\\":[[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[23,4,[]],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[23,6,[]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"settings.worktimegroups.checking_users\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,6,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"menu.cannot_remove_worktimegroup\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.remove_row\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[23,6,[]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,6,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pb-5\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"settings.worktimegroups.cannot_delete_text\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-60\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pb-1\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"settings.worktimegroups.contains_users\\\"],[[\\\"users\\\"],[[23,6,[\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\":\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,6,[]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[4,\\\"link-to\\\",null,[[\\\"route\\\",\\\"model\\\"],[\\\"users.edit\\\",[23,2,[\\\"id\\\"]]]],{\\\"statements\\\":[[1,[23,2,[\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"lastname\\\"]],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"moreUsers\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"settings.worktimegroups.more_users\\\"],[[\\\"users\\\"],[[23,0,[\\\"moreUsers\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-40\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Error\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pt-5 pb-5\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"settings.worktimegroups.link_to_user\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-worktimegroup-text\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"settings.worktimegroups.are_you_sure\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-worktimegroup-name\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"b\\\",true],[8],[1,[23,3,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"small-worktimegroup-text\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"settings.worktimegroups.can_restore_text\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"on\\\",[\\\"click\\\",[23,4,[]]]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\",\\\"@name\\\"],[[22,\\\"isSaving\\\"],[28,\\\"fn\\\",[[23,5,[]],[23,3,[]]],null],\\\"btn btn-m-delete btn-block btn-lg\\\",\\\"delete-button\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"general.delete\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/worktimegroups/modal/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"cK7ZkHnl\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"row\\\",\\\"@setting\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"not\\\",[[23,4,[\\\"loading\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"center-alignment\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showPassive\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.show_passive_rows\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@showFilters\\\",\\\"@form\\\",\\\"@hideCreatedColumn\\\"],[\\\" \\\",\\\"worktimegroup\\\",true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Add\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@hideSumRow\\\",\\\"@hideRemovedText\\\",\\\"@classes\\\"],[true,true,\\\"hide-horizontal-scrollbar\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"edit\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[\\\"row_info\\\",\\\"status\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-ReuseFilled\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"restoreRow\\\"]],[23,3,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",false],[12,\\\"role\\\",\\\"button\\\"],[12,\\\"class\\\",\\\"move move-Delete\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"tryToRemoveRow\\\"]],[23,3,[]]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"center-alignment\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs passive-button\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"toggleRemoved\\\"]]],null]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showPassive\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.hide_passive\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.show_passive\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showRemovingModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"settings/general-v2/components/worktimegroups/modal\\\",[],[[\\\"@users\\\",\\\"@closeModal\\\",\\\"@removeWorktimegroup\\\",\\\"@row\\\"],[[23,0,[\\\"usersStillInGroup\\\"]],[23,0,[\\\"closeModal\\\"]],[23,0,[\\\"removeWorktimegroup\\\"]],[23,0,[\\\"selectedWorktimegroup\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/components/worktimegroups/template.hbs\"}});","/* eslint-disable ember/no-side-effects */\nimport Component from '@ember/component';\nimport { computed, set, get } from '@ember/object';\nimport settingsJSON from './settings';\nimport { inject as service } from '@ember/service';\nimport EmberObject from '@ember/object';\nimport { Promise } from 'rsvp';\nimport { htmlSafe } from '@ember/string';\n\nexport default Component.extend({\n    customerSettings: service(),\n    intl: service(),\n    ttapi: service(),\n    session: service(),\n    store: service(),\n    notifications: service(),\n    router: service(),\n    autopauseChecker: service(),\n    isHelpContainerVisible: false,\n    shouldHideHelp: computed('worktimegroup', 'currentSettingsPage', function () {\n        return ['notifications.sending'].includes(this.currentSettingsPage);\n    }),\n    settingGroups: computed('worktimegroup', function () {\n        let removedSettings = [];\n        let filteredGroups = [];\n        let filteredSettings = [];\n        let currentSettings = [];\n        let mainGroups = [\n            {\n                name: 'general',\n                subsettings: ['settings'],\n                icon: 'Settings',\n                translation: get(this, 'intl').t('settings.general-settings'),\n            },\n            {\n                name: 'integrations',\n                subsettings: ['settings'],\n                icon: 'move move-puzzle',\n                translation: get(this, 'intl').t('settings.general-integrations'),\n            },\n            {\n                name: 'notifications',\n                subsettings: ['settings', 'sending'],\n                icon: 'Comments',\n                translation: get(this, 'intl').t('settings.notifications'),\n            },\n            {\n                name: 'salaries',\n                subsettings: [\n                    'settings',\n                    'calculations',\n                    'salarytypes',\n                    'salaryperiods',\n                    /*\"worktimebanks\",*/ 'overtime',\n                    'saldo_banks',\n                ],\n                icon: 'Money',\n                translation: get(this, 'intl').t('settings.salaries'),\n            },\n            {\n                name: 'absences',\n                subsettings: ['settings'],\n                icon: 'Cup',\n                translation: get(this, 'intl').t('settings.absences'),\n            },\n            {\n                name: 'project-management',\n                subsettings: [\n                    'settings',\n                    'customers',\n                    'projects',\n                    'materials',\n                    'measurements',\n                    'orientations',\n                    'construction_notices',\n                    'groups',\n                    'tasks',\n                    'worktasks',\n                ],\n                icon: 'Route',\n                translation: get(this, 'intl').t('settings.project-management'),\n            },\n            {\n                name: 'worktimes',\n                subsettings: ['settings', 'limitations'],\n                icon: 'Time',\n                translation: get(this, 'intl').t('settings.worktimes'),\n            },\n            {\n                name: 'drivinglog',\n                subsettings: ['settings'],\n                icon: 'Mileage',\n                translation: get(this, 'intl').t('settings.drivinglog'),\n                needs: ['products.drivinglog'],\n            },\n            {\n                name: 'companyProfile',\n                subsettings: ['info'],\n                icon: 'AdministratorFilled',\n                translation: get(this, 'intl').t('settings.company-profile'),\n                needs: ['userlevel=5'],\n            },\n        ];\n        if (this.worktimegroup) {\n            filteredSettings = settingsJSON.settings.filterBy('groupEditable');\n            //console.log(filteredSettings);\n        } else {\n            filteredSettings = settingsJSON.settings;\n        }\n        for (var group of mainGroups) {\n            if (group.needs && !this.Collector.testNeeds(group.needs)) continue;\n            var addGroup = {\n                name: group.name,\n                subsettings: [],\n                icon: group.icon,\n                translation: group.translation,\n                subsettingTranslations: [],\n            };\n            for (var subgroupIndex of group.subsettings) {\n                currentSettings = filteredSettings.filterBy(\n                    'category',\n                    group.name + '.' + subgroupIndex,\n                );\n\n                for (var setting of currentSettings) {\n                    if (setting.needs && !this.Collector.testNeeds(setting.needs)) {\n                        removedSettings.pushObject(setting);\n                    }\n                }\n\n                let difference = currentSettings.filter((x) => !removedSettings.includes(x));\n\n                if (\n                    difference.length > 0 &&\n                    (addGroup.subsettings.indexOf(subgroupIndex) == -1 ||\n                        !addGroup.subsettings.indexOf(subgroupIndex))\n                )\n                    addGroup.subsettings.pushObject(subgroupIndex);\n            }\n\n            if (addGroup.subsettings.length > 0) {\n                filteredGroups.pushObject(addGroup);\n            }\n        }\n\n        for (var maingroup of filteredGroups) {\n            maingroup['subsettingTranslations'] = [];\n            for (var subsetting of maingroup.subsettings) {\n                maingroup['subsettingTranslations'].pushObject({\n                    name: subsetting,\n                    translation: get(this, 'intl').t('settings.' + subsetting),\n                });\n            }\n            maingroup['subsettingTranslations'] =\n                maingroup['subsettingTranslations'].sortBy('translation');\n        }\n        //console.log(filteredGroups);\n        return filteredGroups;\n    }),\n    settingsPageSettings: computed('currentSettingsPage', 'worktimegroup', function () {\n        if (this.currentSettingsPage) {\n            let allSettingsForThisPage = settingsJSON.settings.filterBy(\n                'category',\n                this.currentSettingsPage,\n            );\n            if (this.worktimegroup)\n                allSettingsForThisPage = allSettingsForThisPage.filterBy('groupEditable');\n\n            let settings = allSettingsForThisPage.filter((setting) => {\n                var isActive = this.checkIfSettingIsOn(setting);\n                set(setting, 'active', isActive);\n                if (this.Collector.testNeeds(setting.needs)) {\n                    if (\n                        setting.disable &&\n                        setting.disable.length > 0 &&\n                        !this.isThisSettingAvailable(setting)\n                    )\n                        set(setting, 'disabled', true);\n                    else set(setting, 'disabled', false);\n                    set(setting, 'editingDisabled', this.isEditingDisabled(setting));\n                    return true;\n                }\n            });\n            return settings;\n        }\n        return [];\n    }),\n    translatedSettings: computed(function () {\n        let retArr = [];\n        let cat = [];\n        for (var setting of settingsJSON.settings) {\n            if (\n                setting.category &&\n                setting.category != 'no-category' &&\n                this.Collector.testNeeds(setting.needs)\n            ) {\n                cat = setting.category.split('.');\n                retArr.pushObject({\n                    category: setting.category,\n                    title: setting.title,\n                    translation:\n                        this.intl.t('settings.' + cat[0]) +\n                        ' > ' +\n                        this.intl.t('settings.' + cat[1]) +\n                        ' > ' +\n                        this.intl.t(setting.title),\n                });\n            }\n        }\n        return retArr;\n    }),\n    neededHelpTexts: computed('settingsPageSettings', function () {\n        return this.settingsPageSettings.mapBy('title');\n    }),\n\n    worktimeGroupsOn: computed('settingsPageSettings', function () {\n        return this.Collector.testNeedsOne('worktimegroup');\n    }),\n\n    init() {\n        this._super(...arguments);\n        this.disableOnlyText = {\n            key: '!products.mini_entry',\n            text: htmlSafe(this.intl.t('settings.mini_entry_disable_text')),\n        }; // +\" <a href=''>\"+this.intl.t(\"settings.mini_entry_disable_link\")+\"</a>\"\n        if (this.queryParams) {\n            set(this, 'currentSettingsPage', this.queryParams);\n            this.send('gotoSetting', this.queryParams);\n        } else {\n            this.send(\n                'gotoSetting',\n                this.settingGroups[0]['name'] + '.' + this.settingGroups[0]['subsettings'][0],\n            );\n            set(this, 'openSettings', [this.settingGroups[0]['name']]);\n        }\n    },\n    didUpdateAttrs() {\n        if (this.queryParams) {\n            set(this, 'currentSettingsPage', this.queryParams);\n        }\n    },\n\n    actions: {\n        gotoSetting(setting) {\n            let arr = setting.split('.');\n            set(this, 'openSettings', [arr[0]]);\n            set(this, 'currentSettingsPage', setting);\n        },\n        toggleHelpContainerVisibility(value) {\n            if (value === 'showHelpContainer') {\n                set(this, 'isHelpContainerVisible', true);\n            } else if (value === 'hideHelpContainer') {\n                set(this, 'isHelpContainerVisible', false);\n            }\n        },\n        refreshNeeded() {\n            this.refreshSettings();\n        },\n        saveCalled() {\n            this.showSavedNotice();\n            this.refreshSettings();\n        },\n        async toggleActive(setting) {\n            let active = false;\n\n            set(setting, 'loading', true);\n            var products, value;\n            if (setting.active) {\n                active = false;\n            } else {\n                active = true;\n            }\n            set(setting, 'active', active);\n            if (get(setting, 'productsOn')) {\n                if (get(setting, 'productsOn').includes('products.midweek_holiday_pay'))\n                    this.handleMidweekHolidayPaySalarytype(setting.active);\n                products = active ? get(setting, 'productsOn') : get(setting, 'productsOff');\n                let promises = await this.setSetting(\n                    setting,\n                    EmberObject.create({ products: products }),\n                    true,\n                );\n                await Promise.all(promises);\n            } else {\n                value = active ? 'on' : 'off';\n                if (get(setting, 'secondary_setting') && value === 'off') {\n                    await get(this, 'customerSettings').setSetting(\n                        get(setting, 'secondary_setting'),\n                        value,\n                    );\n                }\n                await get(this, 'customerSettings').setSetting(\n                    get(setting, 'name'),\n                    value,\n                    get(this, 'worktimegroup'),\n                );\n            }\n            // basic support for setting multiple secondary products on/off\n            if (get(setting, 'secondary_setting_on') && active) {\n                await this.Collector.setProducts(get(setting, 'secondary_setting_on'));\n            }\n            await this.refreshSettings();\n\n            // Call automatic salarytypes if saldo setting is toggled to create/remove saldo absences for worktimegroups\n            if (\n                get(setting, 'productsOn')?.includes('products.saldo') ||\n                get(setting, 'productsOff')?.includes('!products.saldo')\n            )\n                this.callAutomaticSalarytypes();\n\n            // When enabling autopause setting for worktimegroup, sets old pause field to 0.\n            get(setting, 'productsOn')?.includes('products.autopause')\n                ? this.autopauseChecker.checkAndSetAutopause()\n                : null;\n\n            this.notifyPropertyChange('settingsPageSettings');\n            this.showSavedNotice();\n            set(setting, 'loading', false);\n        },\n\n        async setSetting(setting, option, donotRefreshAgain) {\n            return this.setSetting(setting, option, donotRefreshAgain);\n        },\n\n        searchSettings(term) {\n            let results = [];\n            if (!term) set(this, 'searchResults', null);\n            else if (typeof term == 'string') {\n                let matches = this.translatedSettings.filter((setting) => {\n                    if (setting.translation.toLowerCase().indexOf(term.toLowerCase()) != -1) {\n                        return true;\n                    }\n                });\n                for (var match of matches) {\n                    results.pushObject({\n                        category: match.category,\n                        translation: match.translation,\n                    });\n                }\n                if (results.length == 0) set(this, 'searchResults', 'noresults');\n                else set(this, 'searchResults', results);\n            }\n        },\n        setOpenSettingsPage(name) {\n            //this.setQParams(name);\n            set(this, 'currentSettingsPage', name);\n        },\n        async worktimegroupChanged(group) {\n            set(this, 'settingsloading', true);\n            if (group && group != 'default') {\n                set(this, 'worktimegroup', group);\n                let worktimegroupsettings = await get(this, 'ttapi')._get(\n                    '/settings?worktimegroup=' + group,\n                );\n                //await this.loadForms(group);\n                set(this, 'worktimegroupCustomerSettings', worktimegroupsettings);\n            } else {\n                set(this, 'worktimegroup', null);\n                set(this, 'worktimegroupforms', null);\n                set(this, 'worktimegroupCustomerSettings', null);\n                await this.refreshSettings();\n                return set(this, 'settingsloading', false);\n            }\n            await this.refreshSettings();\n            this.notifyPropertyChange('settingsPageSettings');\n            set(this, 'settingsloading', false);\n            this.send(\n                'gotoSetting',\n                this.settingGroups[0]['name'] + '.' + this.settingGroups[0]['subsettings'][0],\n            );\n            set(this, 'openSettings', [this.settingGroups[0]['name']]);\n        },\n        setCustomerSetting(setting, value, worktimegroup) {\n            get(this, 'customerSettings').setSetting(setting, value, worktimegroup);\n        },\n    },\n\n    checkIfSettingIsOn(setting) {\n        if (get(setting, 'dummySetting')) return true;\n        if (get(setting, 'name')) {\n            return this.isCustomerSettingOn(setting.name);\n        } else if (setting.productsOn) {\n            return this.testNeeds(setting.productsOn);\n        } else if (setting.options) {\n            let options = [];\n            //Loop through options and mark options that have all needs satisfied as active\n            for (var option of get(setting, 'options')) {\n                option = EmberObject.create(option);\n                set(option, 'active', this.testNeeds(get(option, 'products')));\n                options.push(option);\n            }\n\n            set(setting, 'options', options);\n            return true;\n        } else if (setting.needs) return this.testNeeds(setting.needs);\n    },\n    isThisSettingAvailable(setting) {\n        let available = true;\n        if (setting.disable) {\n            for (var disable of setting.disable) {\n                if (!this.Collector.testNeeds([disable.key])) {\n                    available = false;\n                    break;\n                }\n            }\n        }\n        return available;\n    },\n\n    isCustomerSettingOn(settingName) {\n        if (get(this, 'worktimegroupCustomerSettings')) {\n            let setting = get(this, 'worktimegroupCustomerSettings').findBy('key', settingName);\n            if (!setting) return false;\n            if (!setting.worktimegroups) return false;\n            return true;\n        }\n        let active = false;\n        try {\n            active = JSON.parse(get(this, 'customerSettings').checkSetting(settingName));\n        } catch {\n            active = !!get(this, 'customerSettings').checkSetting(settingName);\n        }\n        return active;\n    },\n    testNeeds(needs) {\n        if (get(this, 'worktimegroupforms')) {\n            return this.customTestNeeds(needs);\n        } else {\n            return get(this, 'Collector').testNeeds(needs);\n        }\n    },\n    async loadForms(worktimegroup) {\n        let forms = await get(this, 'Collector').ajax({\n            url: 'forms?user.worktimegroup=' + worktimegroup,\n        });\n        set(this, 'worktimegroupforms', forms);\n    },\n    showSavedNotice() {\n        get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n            autoClear: true,\n        });\n    },\n    async setSetting(setting, option, donotRefreshAgain) {\n        set(setting, 'loading', true);\n        if (setting.options) {\n            for (var opt of setting.options) {\n                set(opt, 'active', false);\n            }\n            set(option, 'active', true);\n        }\n        let is_addition_type = false;\n        if (setting.addition && get(this, 'worktimegroup')) is_addition_type = true;\n        else is_addition_type = false;\n        let promises = get(this, 'Collector').setProducts(\n            option.products,\n            get(this, 'worktimegroup'),\n            true,\n            is_addition_type,\n        );\n\n        if (!donotRefreshAgain) {\n            await Promise.all(promises);\n            await this.refreshSettings();\n            this.notifyPropertyChange('settingsPageSettings');\n            this.showSavedNotice();\n            set(setting, 'loading', false);\n        } else {\n            return promises;\n        }\n    },\n    customTestNeeds(needs) {\n        let forms = get(this, 'worktimegroupforms');\n        let allok = true;\n        let negation = false;\n        let isok = false;\n        needs.forEach((need) => {\n            negation = false;\n            if (need.startsWith('!')) {\n                need = need.substring(1);\n                negation = true;\n            }\n            isok = true;\n            if (need.startsWith('products.')) {\n                if (forms.updater.products.indexOf(need.substring(9)) == -1) isok = false;\n            } else {\n                if (!get(this, 'Collector').testNeeds([need])) isok = false;\n            }\n            if (negation) isok = !isok;\n            if (isok === false) allok = false;\n        });\n        return allok;\n    },\n    async refreshSettings() {\n        await this.clearMemcache();\n        if (this.worktimegroup) {\n            let worktimegroupsettings = await get(this, 'ttapi')._get(\n                '/settings?worktimegroup=' + this.worktimegroup,\n            );\n            set(this, 'worktimegroupCustomerSettings', worktimegroupsettings);\n            await this.loadForms(this.worktimegroup);\n        }\n        return await this.refreshAll(this.worktimegroup);\n        //this.notifyPropertyChange('settingsPageSettings');\n    },\n    async clearMemcache() {\n        await this.Collector.ajax({\n            url: 'system/clear_memcache?partnerid=' + get(this, 'session.currentUser.partnerid'),\n        });\n    },\n    async handleMidweekHolidayPaySalarytype(active) {\n        let salarytype = await this.store.query('salarytype', { control: '_midweek_holiday_pay' });\n        salarytype = get(salarytype, 'firstObject');\n        if (active && salarytype) return; //we are turning setting on but we also already have the salary type, so do nothing\n        //if we are activating the setting, create the salarytype\n        if (!salarytype && active) {\n            this.store\n                .createRecord('salarytype', {\n                    name: get(this, 'intl').t('worktime.midweek_holiday_pay'),\n                    control: '_midweek_holiday_pay',\n                    type: 'product',\n                    inuse: true,\n                })\n                .save();\n        } else if (salarytype && !active) salarytype.destroyRecord(); //if deactivating destroy it..\n\n        // If salarytypes_v2 in use handle Mid week holiday pay salarytype by calling ttapi/api/salary/automaticSalarytypes\n        if (!this.Collector.testNeeds(['products.salarytype_v2'])) return;\n        this.ttapi.post('api/salary/automaticSalarytypes');\n    },\n\n    callAutomaticSalarytypes() {\n        if (!this.Collector.testNeeds(['products.salarytype_v2'])) return;\n        this.ttapi.post('api/salary/automaticSalarytypes');\n    },\n\n    isEditingDisabled(setting) {\n        let disabled = false;\n        if (setting.editingDisabledRules) {\n            for (var rule of setting.editingDisabledRules) {\n                if (!this.Collector.testNeeds([rule.key])) {\n                    disabled = true;\n                    break;\n                }\n            }\n        }\n        return disabled;\n    },\n});\n","export default {\n    settings: [\n        {\n            name: 'new_messageboard',\n            title: 'settings.general.new_messageboard',\n            needs: ['!customersetting.new_messageboard'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'general.settings',\n        },\n        {\n            title: 'settings.general.terms',\n            needs: ['modules.timetracker'],\n            component: 'settings/general-v2/components/terms-setting',\n            category: 'project-management.projects',\n        },\n        {\n            title: 'settings.general.recipients',\n            productsOn: ['products.recipients'],\n            productsOff: ['!products.recipients'],\n            needs: ['products.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'notifications.settings',\n        },\n        {\n            name: 'orientations_check_all',\n            title: 'settings.general.orientations',\n            needs: ['modules.orientations'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.orientations',\n        },\n        {\n            title: 'settings.general.self_orientation',\n            productsOn: ['products.orientations_self'],\n            productsOff: ['!products.orientations_self'],\n            needs: ['modules.orientations'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.orientations',\n        },\n        {\n            title: 'settings.general.orientations_parent',\n            productsOn: ['products.orientations_parent'],\n            productsOff: ['!products.orientations_parent'],\n            needs: ['modules.orientations'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.orientations',\n        },\n        {\n            title: 'settings.worksitediary.state',\n            productsOn: ['products.worksitediary_state'],\n            productsOff: ['!products.worksitediary_state'],\n            needs: ['products.worksitediary'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'no-category',\n        },\n        {\n            title: 'settings.phasetitle',\n            form: 'phasetitle',\n            productsOn: ['products.worksitediary_phasetitle'],\n            productsOff: ['!products.worksitediary_phasetitle'],\n            needs: ['products.worksitediary'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'no-category',\n        },\n        {\n            title: 'settings.general.superior_for_user',\n            productsOn: ['products.superior_for_user'],\n            productsOff: ['!products.superior_for_user'],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            editingDisabledRules: [\n                { key: '!products.super_superior', text: 'general.super_superior' },\n            ],\n            category: 'general.settings',\n        },\n        {\n            title: 'settings.general.superior_replacement',\n            productsOn: ['products.superior_replacement'],\n            productsOff: ['!products.superior_replacement'],\n            needs: ['modules.timetracker'],\n            disable: [\n                { key: '!products.mini_entry', text: 'general.mini_entry' },\n                { key: 'products.superior_for_user', text: 'settings.general.superior_for_user' },\n            ],\n            category: 'general.settings',\n        },\n        {\n            title: 'settings.general.worktimegroup_changes',\n            productsOn: ['products.worktimegroup_changes'],\n            productsOff: ['!products.worktimegroup_changes'],\n            needs: [\n                'modules.timetracker',\n                'products.worktimegroup',\n                'products.salarytype_v2',\n                'flag.worktimegroup-changes-setting',\n            ],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'general.settings',\n        },\n        {\n            title: 'settings.super_superior',\n            productsOn: ['products.super_superior'],\n            productsOff: ['!products.super_superior'],\n            needs: ['products.groups||products.multigroups', 'products.superior_for_user'],\n            disable: [],\n            category: 'general.settings',\n        },\n        {\n            title: 'settings.general.employer',\n            productsOn: ['products.employer_standalone'],\n            productsOff: ['!products.employer_standalone'],\n            needs: ['products.timetracker', '!products.rakentajanpaketti'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'general.settings',\n        },\n\n        {\n            name: 'push_notification_time',\n            setting: {\n                name: 'push_notification_time',\n            },\n            title: 'settings.general.push_notifications_fixed_time',\n            component: 'collector/field-setting-comp/push-setting',\n            needs: ['modules.timetracker', 'serviceCountry@fi', '!flag.notification-settings-v2'],\n            secondary_setting: 'push_notification_time_hours_fi',\n            category: 'notifications.settings',\n        },\n        {\n            name: 'push_notification_time',\n            setting: {\n                name: 'push_notification_time',\n            },\n            title: 'settings.general.push_notifications_fixed_time',\n            component: 'collector/field-setting-comp/push-setting',\n            needs: ['modules.timetracker', 'serviceCountry@se', '!flag.notification-settings-v2'],\n            secondary_setting: 'push_notification_time_hours_se',\n            category: 'notifications.settings',\n        },\n\n        {\n            name: 'push_notification_time',\n            setting: {\n                name: 'push_notification_time',\n            },\n            title: 'settings.general.push_notifications_fixed_time',\n            component: 'collector/field-setting-comp/push-setting',\n            needs: ['modules.timetracker', 'serviceCountry@fi', 'flag.notification-settings-v2'],\n            category: 'notifications.settings',\n        },\n        {\n            name: 'push_notification_time',\n            setting: {\n                name: 'push_notification_time',\n            },\n            title: 'settings.general.push_notifications_fixed_time',\n            component: 'collector/field-setting-comp/push-setting',\n            needs: ['modules.timetracker', 'serviceCountry@se', 'flag.notification-settings-v2'],\n            category: 'notifications.settings',\n        },\n\n        {\n            name: 'email_approval_for_all',\n            title: 'settings.general.email_approval_for_all',\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'notifications.settings',\n        },\n        {\n            title: 'settings.tasks',\n            options: [\n                {\n                    products: ['!products.tasks', '!products.multitasking', '!products.subtasks'],\n                    title: 'general.off',\n                },\n                {\n                    products: ['products.tasks', '!products.multitasking'],\n                    title: 'settings.tasks.single',\n                },\n                {\n                    products: ['!products.tasks', 'products.multitasking'],\n                    title: 'settings.tasks.multitasking',\n                },\n                {\n                    products: ['products.tasks', 'products.multitasking'],\n                    title: 'settings.tasks.both',\n                },\n            ],\n            form: 'task',\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            groupEditable: true,\n            category: 'project-management.tasks',\n        },\n        {\n            title: 'settings.subtasks',\n            productsOn: ['products.subtasks'],\n            productsOff: ['!products.subtasks'],\n            form: 'subtask',\n            needs: ['modules.timetracker'],\n            disable: [\n                {\n                    key: 'products.tasks||products.multitasking',\n                    text: 'report.projects.tasks_or_multitasks',\n                },\n            ],\n            category: 'project-management.tasks',\n        },\n        {\n            title: 'settings.timetracker.time_adding_type',\n            options: [\n                {\n                    products: [\n                        '!products.timetracker_hybrid',\n                        '!products.timetracker_hours',\n                        '!products.timetracker_clockcard',\n                    ],\n                    title: 'settings.timetracker.startandend',\n                },\n                {\n                    products: [\n                        '!products.timetracker_hybrid',\n                        'products.timetracker_hours',\n                        '!products.timetracker_clockcard',\n                    ],\n                    title: 'settings.timetracker.hours',\n                    notGroupEditable: true,\n                },\n                {\n                    products: [\n                        'products.timetracker_hybrid',\n                        '!products.timetracker_hours',\n                        '!products.timetracker_clockcard',\n                    ],\n                    title: 'settings.timetracker.hybrid',\n                },\n                {\n                    products: [\n                        '!products.timetracker_hybrid',\n                        '!products.timetracker_hours',\n                        'products.timetracker_clockcard',\n                    ],\n                    title: 'settings.timetracker.clockcard',\n                },\n            ],\n            needs: ['modules.timetracker'],\n            groupEditable: true,\n            groupEditableSettings: true,\n            groupEditableIf: {\n                needs: [\n                    '!products.timetracker_hybrid',\n                    '!products.timetracker_hours',\n                    '!products.timetracker_clockcard',\n                ],\n                title: 'settings.timetracker.startandend.worktimegroup_needs',\n            },\n            addition: true,\n            category: 'worktimes.settings',\n        },\n        {\n            title: 'settings.timetracker.edit_time',\n            component: 'settings/general-v2/components/edit-time-setting',\n            setting: {\n                form: 'worktime',\n                field: 'date',\n                setting: { name: 'date_interval', userlevel: '1', value: 'locked' },\n                type: 'number',\n            },\n            needs: ['modules.timetracker'],\n            category: 'worktimes.settings',\n        },\n        {\n            title: 'settings.timetracker.pause',\n            label: 'split',\n            productsOn: ['products.pause'],\n            productsOff: ['!products.pause'],\n            component: 'settings/general-v2/components/pause-setting',\n            setting: {\n                form: 'worktime',\n                field: 'pause',\n                setting: { title: 'default_value', value: 30 },\n            },\n            needs: ['modules.timetracker'],\n            disable: [],\n            groupEditable: true,\n            groupEditableSettings: true,\n            checkWorktimegroupWarnings:  { products: ['pause'] },\n            category: 'worktimes.settings',\n        },\n        {\n            title: \"settings.timetracker.autopause\",\n            label: \"split\",\n            productsOn: [\"products.autopause\"],\n            productsOff: [\"!products.autopause\"],\n            component: \"settings/general-v2/components/auto-pause-setting\",\n            needs: [\"modules.timetracker\", \"flag.autopause\"],\n            disable: [],\n            groupEditable: true,\n            groupEditableSettings: true,\n            category: \"worktimes.settings\",\n        },\n        {\n            title: 'settings.timetracker.multipause',\n            label: 'split',\n            productsOn: ['products.multipause'],\n            productsOff: ['!products.multipause'],\n            needs: ['modules.timetracker', 'flag.new-clockcard'],\n            disable: [],\n            groupEditable: false,\n            groupEditableSettings: false,\n            category: 'worktimes.settings',\n        },\n        {\n            title: 'settings.timetracker.force_clockcard_dialog',\n            productsOn: ['products.force_clockcard_dialog'],\n            productsOff: ['!products.force_clockcard_dialog'],\n            needs: ['modules.timetracker', 'flag.new-clockcard'],\n            disable: [],\n            groupEditable: false,\n            groupEditableSettings: false,\n            category: 'worktimes.settings',\n        },\n        {\n            title: 'settings.timetracker.timeclean',\n            label: 'split',\n            component: 'collector/nfc-comp',\n            productsOn: ['products.rfid'],\n            productsOff: ['!products.rfid'],\n            needs: ['modules.timetracker||products.personalliggareandid06', 'debug'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'worktimes.settings',\n        },\n        {\n            title: 'settings.materials',\n            productsOn: ['products.materiallog'],\n            productsOff: ['!products.materiallog'],\n            form: 'materialtype',\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.materials',\n        },\n        {\n            title: 'settings.materialgroups',\n            productsOn: ['products.materialgroups'],\n            productsOff: ['!products.materialgroups'],\n            needs: ['modules.timetracker'],\n            disable: [{ key: 'products.materiallog', text: 'settings.materials' }],\n            category: 'project-management.materials',\n        },\n        {\n            title: 'settings.absences',\n            productsOn: ['products.absences'],\n            productsOff: ['!products.absences'],\n            form: 'abcensetype',\n            needs: ['modules.timetracker||products.mini_entry', '!products.salarytype_v2'],\n            groupEditable: true,\n            fields: 'key,name,type,usesholiday,worktimegroup',\n            category: 'absences.settings',\n        },\n        {\n            title: 'settings.absences',\n            productsOn: ['products.absences'],\n            productsOff: ['!products.absences'],\n            needs: ['modules.timetracker||products.mini_entry', 'products.salarytype_v2'],\n            groupEditable: true,\n            component: 'settings/general-v2/components/salarytypes/absencetypes',\n            category: 'absences.settings',\n        },\n        {\n            title: 'settings.holiday_startdate',\n            needs: [],\n            disable: [{ key: 'products.absences', text: 'general.absences' }],\n            component: 'settings/general-v2/components/holiday',\n            custom: true,\n            category: 'absences.settings',\n        },\n        {\n            title: 'settings.absencetype',\n            productsOn: ['products.absences_hours'],\n            productsOff: ['!products.absences_startandend', '!products.absences_hours'],\n            needs: ['modules.timetracker||products.mini_entry'],\n            disable: [{ key: 'products.absences', text: 'general.absences' }],\n            category: 'absences.settings',\n        },\n        {\n            title: 'settings.absence_projects',\n            productsOn: ['products.absence_projects'],\n            productsOff: ['!products.absence_projects'],\n            needs: [],\n            disable: [\n                { key: '!products.mini_entry', text: 'general.mini_entry' },\n                { key: 'products.absences', text: 'general.absences' },\n            ],\n            category: 'absences.settings',\n        },\n        {\n            name: 'hide_holidays',\n            setting: {\n                name: 'hide_holidays',\n            },\n            title: 'settings.general.hide_holidays',\n            needs: [],\n            disable: [\n                { key: '!products.mini_entry', text: 'general.mini_entry' },\n                { key: 'products.absences', text: 'general.absences' },\n            ],\n            category: 'absences.settings',\n        },\n        {\n            name: 'vacation_week_length',\n            title: 'settings.vacation_week_length5',\n            needs: ['serviceCountry@fi'],\n            groupEditable: true,\n            groupEditableIf: {\n                needs: ['!customersetting.vacation_week_length'],\n                title: 'settings.general.vacation_week_length.worktimegroup_needs',\n            },\n            disable: [\n                { key: '!products.mini_entry', text: 'general.mini_entry' },\n                { key: 'products.absences', text: 'general.absences' },\n            ],\n            category: 'absences.settings',\n        },\n        {\n            title: 'settings.holiday_pay',\n            productsOn: ['products.holiday_pay'],\n            productsOff: ['!products.holiday_pay'],\n            needs: [],\n            disable: [{ key: 'modules.absences', text: 'general.absences' }],\n            category: 'absences.settings',\n        },\n        {\n            title: 'settings.team_calendar',\n            productsOn: ['products.team_calendar'],\n            productsOff: ['!products.team_calendar'],\n            needs: [],\n            disable: [{ key: 'modules.absences', text: 'general.absences' }],\n            category: 'absences.settings',\n        },\n        {\n            title: 'settings.skip_holiday_check',\n            productsOn: ['products.skip_holiday_check'],\n            productsOff: ['!products.skip_holiday_check'],\n            needs: ['flag.holiday-checker'],\n            disable: [{ key: 'modules.absences', text: 'general.absences' }],\n            category: 'absences.settings',\n        },\n        {\n            title: 'settings.skip_holidaypay_check',\n            productsOn: ['products.skip_holidaypay_check'],\n            productsOff: ['!products.skip_holidaypay_check'],\n            needs: ['flag.holiday-checker'],\n            disable: [{ key: 'products.holiday_pay', text: 'settings.holiday_pay' }],\n            category: 'absences.settings',\n        },\n        {\n            name: 'stampout_worktime_fi',\n            setting: {\n                name: 'stampout_worktime_fi',\n                secondary_setting_name: 'stampout_worktime_time_fi',\n            },\n            title: 'settings.general.stampout_worktime',\n            component: 'settings/general-v2/components/time-setting',\n            needs: ['modules.timetracker', 'serviceCountry@fi'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'worktimes.limitations',\n        },\n        {\n            name: 'stampout_worktime_se',\n            setting: {\n                name: 'stampout_worktime_se',\n                secondary_setting_name: 'stampout_worktime_time_se',\n            },\n            title: 'settings.general.stampout_worktime',\n            component: 'settings/general-v2/components/time-setting',\n            needs: ['modules.timetracker', 'serviceCountry@se'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'worktimes.limitations',\n        },\n        {\n            name: 'stampout_presence_fi',\n            setting: {\n                name: 'stampout_presence_fi',\n                secondary_setting_name: 'stampout_presence_time_fi',\n            },\n            title: 'settings.general.stampout_presence',\n            component: 'settings/general-v2/components/time-setting',\n            needs: ['presence', 'serviceCountry@fi'],\n            category: 'worktimes.limitations',\n        },\n        {\n            title: 'settings.round_times',\n            form: 'rounding_rule',\n            needs: ['modules.timetracker', 'worktime.formFeature.round_times;10'],\n            //disable: [{key: \"worktime.formFeature.round_times;10\", text: \"dummy1\"}],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'worktimes.limitations',\n        },\n        {\n            title: 'settings.round_times',\n            productsOn: ['products.rounding_rule_v2'],\n            productsOff: ['!products.rounding_rule_v2'],\n            form: 'rounding_rule_v2',\n            needs: ['modules.timetracker', '!worktime.formFeature.round_times;10'],\n            //disable: [{key: \"!worktime.formFeature.round_times;10\", text: \"dummy2\"}],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'worktimes.limitations',\n        },\n        {\n            title: 'settings.prevent_multiple_worktimes',\n            productsOn: ['products.timetracker_prevent_multiple'],\n            productsOff: ['!products.timetracker_prevent_multiple'],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'worktimes.limitations',\n        },\n        {\n            title: 'settings.overlapping_worktimes',\n            productsOn: ['products.timetracker_disable_overlapping'],\n            productsOff: [\n                '!products.timetracker_overlap',\n                '!products.timetracker_disable_overlapping',\n            ],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'worktimes.limitations',\n        },\n        {\n            title: 'settings.groups',\n            options: [\n                {\n                    products: ['!products.groups', '!products.multigroups'],\n                    title: 'settings.timetracker.nogroups',\n                },\n                {\n                    products: ['products.groups', '!products.multigroups'],\n                    title: 'settings.timetracker.groups',\n                },\n                {\n                    products: ['!products.groups', 'products.multigroups'],\n                    title: 'settings.timetracker.multigroups',\n                },\n            ],\n            form: 'group',\n            needs: ['products.timetracker||products.generic_timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            editingDisabledRules: [\n                { key: '!products.super_superior', text: 'general.super_superior' },\n            ],\n            category: 'project-management.groups',\n        },\n        {\n            title: 'settings.super_superior',\n            productsOn: ['products.super_superior'],\n            productsOff: ['!products.super_superior'],\n            needs: ['products.groups||products.multigroups', 'products.superior_for_user'],\n            disable: [],\n            category: 'project-management.groups',\n        },\n        {\n            title: 'settings.groups',\n            options: [\n                {\n                    products: ['!products.groups', '!products.multigroups'],\n                    title: 'settings.timetracker.nogroups',\n                },\n                {\n                    products: ['products.groups', '!products.multigroups'],\n                    title: 'settings.timetracker.groups',\n                },\n                {\n                    products: ['!products.groups', 'products.multigroups'],\n                    title: 'settings.timetracker.multigroups',\n                },\n            ],\n            form: 'group',\n            needs: ['!products.timetracker', '!products.generic_timetracker'],\n            disable: [\n                { key: '!products.mini_entry', text: 'general.mini_entry' },\n                { key: 'presence', text: 'header.path.add.presence' },\n            ],\n            category: 'project-management.groups',\n        },\n        {\n            title: 'settings.mainproject',\n            productsOn: ['products.mainproject'],\n            productsOff: ['!products.mainproject'],\n            form: 'mainproject',\n            needs: ['modules.timetracker', '!products.base_basic', '!products.mini_entry'],\n            disable: [\n                {\n                    key: 'products.projects_by_customer',\n                    text: 'settings.timetracker.customer.projects',\n                },\n            ],\n            category: 'project-management.projects',\n        },\n        {\n            title: 'settings.subprojects',\n            options: [\n                {\n                    products: ['!products.subprojects', '!products.subprojectsmulti'],\n                    title: 'general.off',\n                },\n                {\n                    products: ['products.subprojects', '!products.subprojectsmulti'],\n                    title: 'settings.timetracker.subprojects',\n                },\n                {\n                    products: ['!products.subprojects', 'products.subprojectsmulti'],\n                    title: 'settings.timetracker.subprojectsmulti',\n                },\n            ],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.projects',\n        },\n\n        {\n            title: 'settings.customers',\n            productsOn: ['products.customer'],\n            productsOff: ['!products.customer'],\n            form: 'customer',\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.customers',\n        },\n        {\n            title: 'settings.customers',\n            productsOn: ['products.customer'],\n            productsOff: ['!products.customer'],\n            form: 'customer',\n            needs: ['presence', '!products.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.customers',\n        },\n        /*\n        {\n            title: \"settings.customers\",\n            tt3valueOn: \"customers.none\",\n            tt3valueOff: \"customers.on\",\n            productsOn: [\"customer\"],\n            productsOff: [\"!customer\"],\n            form: 'customer',\n            needs: [\"!modules.timetracker\"],\n            disable: [, {key: \"worktime\", text: \"general.worktime\"}],\n            category: \"project-management.customers\"\n        },\n        */\n        {\n            title: 'settings.timetracker.customer.projects',\n            productsOn: ['products.projects_by_customer'],\n            productsOff: ['!products.projects_by_customer'],\n            needs: ['modules.timetracker'],\n            disable: [{ key: 'products.customer', text: 'settings.customers' }],\n            category: 'project-management.customers',\n        },\n        {\n            title: 'settings.timetracker.saldo',\n            productsOn: ['products.saldo'],\n            productsOff: ['!products.saldo'],\n            component: 'settings/general-v2/components/saldo-setting',\n            hideSettingsFromWorktimegroups: true,\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            groupEditable: true,\n            checkWorktimegroupWarnings:  { products: ['saldo'] },\n            category: 'salaries.saldo_banks',\n        },\n        {\n            name: 'saldo_skip_weekends',\n            title: 'settings.saldo.skip_weekends',\n            label: 'split',\n            needs: ['modules.timetracker'],\n            disable: [{ key: 'products.saldo', text: 'settings.timetracker.saldo' }],\n            category: 'salaries.saldo_banks',\n        },\n        {\n            title: 'settings.saldo.pay_saldos',\n            label: 'split',\n            productsOn: ['products.pay_saldos'],\n            productsOff: ['!products.pay_saldos'],\n            needs: ['modules.timetracker', 'flag.pay_saldos'],\n            disable: [{ key: 'products.saldo', text: 'settings.timetracker.saldo' }],\n            category: 'salaries.saldo_banks',\n        },\n        {\n            name: 'saldo_skip_pieceworkdays',\n            title: 'settings.saldo.skip_pieceworkdays',\n            label: 'split',\n            needs: ['modules.timetracker'],\n            disable: [\n                { key: 'products.saldo', text: 'settings.timetracker.saldo' },\n                { key: 'worktime.typeofwork', text: 'field.typeofwork' },\n            ],\n            category: 'salaries.saldo_banks',\n        },\n        {\n            title: 'settings.timetracker.overtime',\n            productsOn: ['products.overtime'],\n            productsOff: ['!products.overtime'],\n            //component: \"collector/field-setting-comp/overtime-setting\",\n            component: 'settings/general-v2/components/overtime-comp',\n            needs: ['modules.timetracker', '!serviceCountry@se'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            groupEditableSettings: true,\n            groupEditable: true,\n            checkWorktimegroupWarnings:  {\n                products: ['overtime', 'overtime_extrahours', 'overtime_daily', 'overtime_weekly', 'overtime_period', 'overtime_splitted']\n            },\n            category: 'salaries.overtime',\n            dummySetting: true,\n            hideHeader: true,\n        },\n        {\n            title: 'settings.project_owner',\n            productsOn: ['products.project_owner'],\n            productsOff: ['!products.project_owner'],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.settings',\n        },\n        {\n            title: 'settings.worktimegroup',\n            needs: ['modules.timetracker'],\n            productsOn: ['products.worktimegroup'],\n            productsOff: ['!products.worktimegroup'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'general.settings',\n            component: 'settings/general-v2/components/worktimegroups',\n            hasReport: true,\n        },\n        {\n            title: 'settings.disable_login',\n            needs: [],\n            productsOn: ['products.user_disable_login'],\n            productsOff: ['!products.user_disable_login'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'general.settings',\n        },\n        {\n            title: 'settings.timetracker_allow_nfc_edit',\n            productsOn: ['products.timetracker_allow_nfc_edit'],\n            productsOff: ['!products.timetracker_allow_nfc_edit'],\n            needs: ['!products.generic_timetracker', '!products.mini_entry'],\n            disable: [{ key: 'products.rfid', text: 'settings.timetracker.timeclean' }],\n            category: 'worktimes.settings',\n        },\n        {\n            name: 'postpopulated_worktimes',\n            title: 'settings.general.postpopulated_worktimes',\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            groupEditable: true,\n            groupEditableSettings: true,\n            groupEditableIf: {\n                needs: ['!customersetting.postpopulated_worktimes'],\n                title: 'settings.general.postpopulated_worktimes.worktimegroup_needs',\n            },\n            component: 'settings/general-v2/components/postpopulated-worktimes',\n            category: 'worktimes.settings',\n        },\n        {\n            title: 'settings.timetracker.worktype',\n            options: [\n                {\n                    products: [\n                        '!products.timetracker_worktype',\n                        '!products.timetracker_worktype_extra',\n                    ],\n                    title: 'settings.timetracker.worktype_none',\n                },\n                {\n                    products: [\n                        'products.timetracker_worktype',\n                        '!products.timetracker_worktype_extra',\n                    ],\n                    title: 'settings.timetracker.worktype_def',\n                },\n                {\n                    products: [\n                        '!products.timetracker_worktype',\n                        'products.timetracker_worktype_extra',\n                    ],\n                    title: 'settings.timetracker.worktype_extra',\n                },\n            ],\n            needs: ['modules.timetracker', '!products.generic_timetracker'],\n            disable: [\n                {\n                    key: 'products.timetracker_worktype||products.timetracker_worktype_extra',\n                    text: 'dummy',\n                },\n            ],\n            category: 'no-category',\n        },\n        {\n            title: 'settings.timetracker.salarytype',\n            productsOn: ['products.salarytype', 'products.selectablesalarytype'],\n            productsOff: ['!products.salarytype', '!products.selectablesalarytype'],\n            needs: ['modules.timetracker', '!products.salarytype_v2'],\n            disable: [\n                { key: '!products.mini_entry', text: 'general.mini_entry' },\n                { key: '!products.timetracker_worktype', text: 'settings.timetracker.worktype' },\n                {\n                    key: '!products.timetracker_worktype_extra',\n                    text: 'settings.timetracker.worktype_extra',\n                },\n            ],\n            category: 'salaries.settings',\n        },\n        {\n            title: 'settings.timetracker.perdiem',\n            optionsForComponent: [\n                {\n                    products: [\n                        '!products.timetracker_perdiem',\n                        '!products.timetracker_perdiem_meal',\n                    ],\n                    title: 'settings.timetracker.perdiem_none',\n                },\n                {\n                    products: [\n                        'products.timetracker_perdiem',\n                        '!products.timetracker_perdiem_meal',\n                    ],\n                    title: 'settings.timetracker.perdiem_def',\n                },\n                {\n                    products: [\n                        '!products.timetracker_perdiem',\n                        'products.timetracker_perdiem_meal',\n                    ],\n                    title: 'settings.timetracker.perdiem_meal',\n                },\n            ],\n            needs: ['modules.timetracker', 'serviceCountry@fi'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            component: 'settings/general-v2/components/perdiem',\n            category: 'salaries.settings',\n        },\n        {\n            title: 'settings.timetracker.km_type',\n            optionsForComponent: [\n                {\n                    products: [\n                        '!products.timetracker_km',\n                        '!products.timetracker_kmsade',\n                        '!products.timetracker_kmandsade',\n                    ],\n                    title: 'settings.timetracker.km_none',\n                },\n                {\n                    products: [\n                        'products.timetracker_km',\n                        '!products.timetracker_kmsade',\n                        '!products.timetracker_kmandsade',\n                    ],\n                    title: 'settings.timetracker.km',\n                },\n                {\n                    products: [\n                        'products.timetracker_kmsade',\n                        '!products.timetracker_km',\n                        '!products.timetracker_kmandsade',\n                    ],\n                    title: 'settings.timetracker.kmsade',\n                },\n                {\n                    products: ['products.timetracker_kmsade', 'products.timetracker_km'],\n                    title: 'settings.timetracker.kmandsade',\n                },\n            ],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            component: 'settings/general-v2/components/km',\n            category: 'salaries.settings',\n        },\n        {\n            title: 'settings.timetracker.km_automatic',\n            label: 'split',\n            productsOn: ['products.timetracker_km_automatic', 'products.timetracker_km'],\n            productsOff: ['!products.timetracker_km_automatic', '!products.timetracker_km'],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            component: 'settings/general-v2/components/autokm-setting',\n            groupEditable: true,\n            groupEditableSettings: true,\n            category: 'salaries.settings',\n        },\n        {\n            title: 'settings.timetracker.traveltime_automatic',\n            productsOn: ['products.timetracker_traveltime'],\n            productsOff: ['!products.timetracker_traveltime'],\n            needs: ['modules.timetracker', 'serviceCountry@fi', '!products.generic_timetracker'],\n            disable: [\n                {\n                    key: 'products.timetracker_km_automatic',\n                    text: 'settings.timetracker.km_automatic',\n                },\n            ],\n            category: 'salaries.settings',\n        },\n        {\n            title: 'settings.general.midweek_holiday_pay',\n            productsOn: ['products.midweek_holiday_pay'],\n            productsOff: ['!products.midweek_holiday_pay'],\n            needs: ['worktime'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'salaries.settings',\n        },\n        {\n            title: 'settings.salarytypes.salarytypesv2onoff',\n            productsOn: ['products.salarytype_v2'],\n            productsOff: ['!products.salarytype_v2'],\n            custom: true,\n            component: 'settings/general-v2/components/salarytypes',\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'salaries.salarytypes',\n            secondary_setting_on: [\n                '!products.selectablesalarytype',\n                '!products.salarytype',\n                'products.worktimegroup',\n            ],\n            groupEditable: false,\n        },\n        {\n            title: 'settings.salarytypes.salarytypesv2',\n            component: 'settings/general-v2/components/salarytypes/salaries',\n            needs: ['modules.timetracker', 'products.salarytype_v2'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'salaries.salarytypes',\n            groupEditable: true,\n        },\n        {\n            title: 'settings.salarytypes.absencetypes',\n            component: 'settings/general-v2/components/salarytypes/absencetypes',\n            needs: ['modules.timetracker', 'products.salarytype_v2'],\n            disable: [\n                { key: '!products.mini_entry', text: 'general.mini_entry' },\n                { key: 'products.absences', text: 'general.absences' },\n            ],\n            category: 'salaries.salarytypes',\n            groupEditable: true,\n        },\n        {\n            title: 'settings.salarytypes.worktypes',\n            component: 'settings/general-v2/components/salarytypes/worktypes',\n            needs: ['modules.timetracker', 'products.salarytype_v2'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'salaries.salarytypes',\n            groupEditable: true,\n        },\n        {\n            title: 'settings.gps',\n            options: [\n                {\n                    products: ['!products.gps', '!products.gps_force'],\n                    title: 'settings.gps_none',\n                },\n                {\n                    products: ['products.gps', '!products.gps_force'],\n                    title: 'settings.gps_def',\n                },\n                {\n                    products: ['!products.gps', 'products.gps_force'],\n                    title: 'settings.gps_force',\n                },\n            ],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.settings',\n        },\n        {\n            title: 'settings.general.gps_distance_value',\n            component: 'settings/general-v2/components/number-field',\n            setting: {\n                setting: 'gps_distance',\n                minVal: 0,\n                defaultVal: 700,\n                unit: 'm',\n            },\n            disable: [{ key: 'products.gps_force', text: 'settings.gps_force' }],\n            needs: [],\n            category: 'project-management.settings',\n        },\n        {\n            title: 'settings.eventtitle',\n            form: 'eventtitle',\n            needs: [],\n            disable: [\n                { key: '!products.mini_entry', text: 'general.mini_entry' },\n                { key: 'eventtitle', text: 'settings.eventtitle' },\n            ],\n            category: 'no-category',\n        },\n        {\n            title: 'settings.wage_period',\n            form: 'wage_period',\n            component: 'salary-period-adder',\n            needs: ['worktime', 'wage_period'],\n            fields: 'period_name,period_start_date,period_end_date,worktimegroup',\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'salaries.salaryperiods',\n            groupEditable: true,\n        },\n        {\n            title: 'settings.export_contact_person',\n            form: 'export_contact_person',\n            needs: ['export_contact_person'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.construction_notices',\n        },\n        {\n            title: 'settings.timetracker.multiple_companies',\n            productsOn: ['products.multiple_companies'],\n            productsOff: ['!products.multiple_companies'],\n            needs: ['project', 'products.rakentajanpaketti'],\n            category: 'project-management.construction_notices',\n        },\n        {\n            title: 'settings.timetracker.founder',\n            productsOn: ['products.taxman_founder'],\n            productsOff: ['!products.taxman_founder'],\n            needs: ['project', 'products.rakentajanpaketti'],\n            category: 'project-management.construction_notices',\n        },\n        {\n            title: 'settings.vg_customer_id',\n            form: 'vastuugroupsetting',\n            needs: ['vastuugroupsetting'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'integrations.settings',\n        },\n        {\n            title: 'settings.vg_reliable_partner',\n            productsOn: ['!products.vg_reliable_partner_disabled'],\n            productsOff: ['products.vg_reliable_partner_disabled'],\n            needs: ['vastuugroupsetting'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'integrations.settings',\n        },\n        {\n            title: 'settings.megaflex_tenant',\n            form: 'megaflex_tenant',\n            needs: ['products.megaflex'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'integrations.settings',\n        },       \n        {\n            title: 'settings.timetracker.banks',\n            label: 'split',\n            productsOn: ['products.worktimebank'],\n            productsOff: ['!products.worktimebank'],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'salaries.saldo_banks',\n        },\n\n        {\n            title: 'settings.timetracker.hourprice',\n            label: 'split',\n            options: [\n                {\n                    //tt3value: \"hourly_rates.none\"\n                    products: ['!products.hourprice_user', '!products.hourprice_project'],\n                    title: 'settings.timetracker.hourprice_none',\n                },\n                {\n                    //tt3value: \"hourly_rates.user\"\n                    products: ['products.hourprice_user', '!products.hourprice_project'],\n                    title: 'settings.timetracker.hourprice_user',\n                },\n                {\n                    //tt3value: \"hourly_rates.project\"\n                    products: ['!products.hourprice_user', 'products.hourprice_project'],\n                    title: 'settings.timetracker.hourprice_project',\n                },\n            ],\n            needs: ['modules.timetracker'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.settings',\n        },\n        {\n            name: 'unapproved_worktimes',\n            setting: {\n                name: 'unapproved_worktimes',\n            },\n            title: 'settings.general.unapproved_worktimes',\n            component: 'settings/general-v2/components/time-setting',\n            needs: ['worktime', 'serviceCountry@fi', '!flag.notification-settings-v2'],\n            category: 'notifications.settings',\n        },\n        {\n            title: 'settings.taskmanagement.worktask_involved',\n            productsOn: ['products.worktask_involved'],\n            productsOff: ['!products.worktask_involved'],\n            needs: ['products.taskmanagement'],\n            category: 'project-management.worktasks',\n        },\n        {\n            title: 'settings.taskmanagement.worktask_signature',\n            productsOn: ['products.worktask_signature'],\n            productsOff: ['!products.worktask_signature'],\n            needs: ['products.taskmanagement'],\n            category: 'project-management.worktasks',\n        },\n        {\n            title: 'settings.taskmanagement.worktask_enddate',\n            productsOn: ['products.worktask_enddate'],\n            productsOff: ['!products.worktask_enddate'],\n            needs: ['products.taskmanagement'],\n            category: 'project-management.worktasks',\n        },\n        {\n            title: 'settings.taskmanagement.worktask_starttime',\n            productsOn: ['products.worktask_starttime'],\n            productsOff: ['!products.worktask_starttime'],\n            needs: ['products.taskmanagement'],\n            disable: [],\n            category: 'project-management.worktasks',\n        },\n\n        {\n            title: 'settings.general.drivinglog.gauge',\n            productsOn: ['products.drivinglog_gauge'],\n            productsOff: ['!products.drivinglog_gauge'],\n            needs: ['products.drivinglog'],\n            category: 'drivinglog.settings',\n        },\n        {\n            title: 'settings.general.drivinglog.project',\n            productsOn: ['products.drivinglog_project'],\n            productsOff: ['!products.drivinglog_project'],\n            needs: ['products.drivinglog'],\n            category: 'drivinglog.settings',\n        },\n        {\n            title: 'settings.general.drivinglog.date',\n            productsOn: ['products.drivinglog_date'],\n            productsOff: ['!products.drivinglog_date'],\n            needs: ['products.drivinglog'],\n            category: 'drivinglog.settings',\n        },\n        {\n            title: 'settings.general.drivinglog.private',\n            productsOn: ['products.drivinglog_private'],\n            productsOff: ['!products.drivinglog_private'],\n            needs: ['products.drivinglog'],\n            category: 'drivinglog.settings',\n        },\n        {\n            title: 'settings.general.drivinglog.plate',\n            productsOn: ['products.drivinglog_plate'],\n            productsOff: ['!products.drivinglog_plate'],\n            needs: ['products.drivinglog'],\n            category: 'drivinglog.settings',\n        },\n        {\n            title: 'settings.general.drivinglog.desc',\n            productsOn: ['products.drivinglog_desc'],\n            productsOff: ['!products.drivinglog_desc'],\n            needs: ['products.drivinglog'],\n            category: 'drivinglog.settings',\n        },\n\n        {\n            name: 'hide_measurement_index',\n            title: 'settings.general.hide_measurement_index',\n            needs: ['products.measurement_tr||products.measurement_mvr'],\n            category: 'project-management.measurements',\n        },\n        {\n            title: 'settings.general.measurement_mandatory_signatures',\n            productsOn: ['products.measurement_mandatory_signatures'],\n            productsOff: ['!products.measurement_mandatory_signatures'],\n            needs: ['products.measurement_tr||products.measurement_mvr'],\n            category: 'project-management.measurements',\n        },\n        {\n            title: 'settings.general.measurement_status',\n            productsOn: ['products.measurement_status'],\n            productsOff: ['!products.measurement_status'],\n            needs: ['products.measurement_tr||products.measurement_mvr'],\n            category: 'project-management.measurements',\n        },\n\n        {\n            title: 'settings.plgps',\n            options: [\n                {\n                    products: ['!products.plgps_off', '!products.plgps_end'],\n                    title: 'settings.plgps_on',\n                },\n                {\n                    products: ['!products.plgps_off', 'products.plgps_end'],\n                    title: 'settings.plgps_also_end',\n                },\n                {\n                    products: ['products.plgps_off', '!products.plgps_end'],\n                    title: 'settings.plgps_off',\n                },\n            ],\n            needs: ['products.personalliggareandid06||products.personalliggare'],\n            category: 'project-management.settings',\n        },\n        {\n            title: 'settings.export_contact_person',\n            form: 'export_contact_person',\n            needs: ['export_contact_person', '!worktime'],\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            category: 'project-management.construction_notices',\n        },\n        {\n            title: 'settings.groups',\n            form: 'group',\n            needs: ['products.admintool', 'group'],\n            disable: [],\n            category: 'project-management.groups',\n        },\n        {\n            title: 'settings.toolgroups',\n            productsOn: ['products.toolgroups'],\n            productsOff: ['!products.toolgroups'],\n            needs: ['products.machine'],\n            form: 'toolgroup',\n            category: 'project-management.settings',\n        },\n        {\n            title: 'settings.compensations',\n            needs: ['modules.timetracker'],\n            /*disable: [{key: \"products.overtime\", text: \"settings.overtime\"}],*/\n            category: 'salaries.calculations',\n            component: 'settings/general-v2/components/overtime-comp',\n            disable: [{ key: '!products.mini_entry', text: 'general.mini_entry' }],\n            dummySetting: true,\n            hideHeader: true,\n            groupEditable: true,\n            //component: \"collector/field-setting-comp/overtime-setting\",\n        },\n        {\n            title: 'company_profile.billing_info_header',\n            needs: [],\n            component: 'settings/general-v2/components/company-info/billing-comp',\n            category: 'companyProfile.info',\n            groupEditable: true,\n        },\n        {\n            title: 'company_profile.company_info',\n            needs: [],\n            component: 'settings/general-v2/components/company-info/info-comp',\n            category: 'companyProfile.info',\n            groupEditable: true,\n        },\n        {\n            title: 'company_profile.address_info_header',\n            needs: [],\n            component: 'settings/general-v2/components/company-info/address-comp',\n            category: 'companyProfile.info',\n            groupEditable: true,\n        },\n        {\n            title: 'company_profile.logo_header',\n            needs: [],\n            component: 'settings/general-v2/components/company-info/logo-comp',\n            category: 'companyProfile.info',\n            groupEditable: true,\n        },\n        {\n            title: 'settings.notification_center',\n            needs: ['modules.timetracker', 'flag.notification-settings-v2'],\n            /*disable: [{key: \"products.overtime\", text: \"settings.overtime\"}],*/\n            category: 'notifications.sending',\n            component: 'settings/general-v2/components/notification-center',\n            dummySetting: true,\n            hideHeader: true,\n            //component: \"collector/field-setting-comp/overtime-setting\",\n        },\n    ],\n};\n","export default Ember.HTMLBars.template({\"id\":\"jta4WlnK\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"settings-container\\\"],[8],[0,\\\"\\\\n    \\\"],[5,\\\"settings/general-v2/main-settings\\\",[],[[\\\"@openSettings\\\",\\\"@searchvalue\\\",\\\"@gotoSetting\\\",\\\"@translatedSettings\\\",\\\"@searchResults\\\",\\\"@settingsLoading\\\",\\\"@searchSettings\\\",\\\"@setOpenSettingsPage\\\",\\\"@settingsPage\\\",\\\"@settingGroups\\\",\\\"@worktimegroupChanged\\\",\\\"@worktimeGroupsOn\\\",\\\"@toggleHelpContainerVisibility\\\"],[[22,\\\"openSettings\\\"],[22,\\\"searchvalue\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"gotoSetting\\\"],null],[22,\\\"translatedSettings\\\"],[22,\\\"searchResults\\\"],[22,\\\"settingsloading\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"searchSettings\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setOpenSettingsPage\\\"],null],[22,\\\"currentSettingsPage\\\"],[22,\\\"settingGroups\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"worktimegroupChanged\\\"],null],[22,\\\"worktimeGroupsOn\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"toggleHelpContainerVisibility\\\"],null]]]],[0,\\\"\\\\n    \\\"],[5,\\\"settings/general-v2/sub-settings\\\",[],[[\\\"@worktimegroup\\\",\\\"@searchvalue\\\",\\\"@refreshNeeded\\\",\\\"@settingsLoading\\\",\\\"@toggleActive\\\",\\\"@setSetting\\\",\\\"@loadingEditor\\\",\\\"@saveCalled\\\",\\\"@settingsPageSettings\\\",\\\"@settingsPage\\\",\\\"@setCustomerSetting\\\",\\\"@disableOnlyText\\\",\\\"@neededHelpTexts\\\",\\\"@toggleHelpContainerVisibility\\\"],[[22,\\\"worktimegroup\\\"],[22,\\\"searchvalue\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"refreshNeeded\\\"],null],[22,\\\"settingsloading\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"toggleActive\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setSetting\\\"],null],[22,\\\"loadingEditor\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"saveCalled\\\"],null],[22,\\\"settingsPageSettings\\\"],[22,\\\"currentSettingsPage\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"setCustomerSetting\\\"],null],[23,0,[\\\"disableOnlyText\\\"]],[22,\\\"neededHelpTexts\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"toggleHelpContainerVisibility\\\"],null]]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isHelpContainerVisible\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"shouldHideHelp\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"settings/general-v2/helps\\\",[],[[\\\"@settingsLoading\\\",\\\"@settingsPage\\\",\\\"@neededHelpTexts\\\",\\\"@toggleHelpContainerVisibility\\\"],[[22,\\\"settingsloading\\\"],[22,\\\"currentSettingsPage\\\"],[22,\\\"neededHelpTexts\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"toggleHelpContainerVisibility\\\"],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/container/template.hbs\"}});","/* eslint-disable ember/alias-model-in-controller */\nimport Controller from '@ember/controller';\nimport { get, computed } from '@ember/object';\nimport { inject as controller } from '@ember/controller';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    application: controller(),\n    settingsController: controller('settings'),\n    modelCreator: service('model-creator'),\n    queryParams: ['main', 'sub'],\n\n    qParams: computed('main', 'sub', function () {\n        if (get(this, 'main') && get(this, 'sub')) {\n            return get(this, 'main') + '.' + get(this, 'sub');\n        }\n        return false;\n    }),\n\n    actions: {\n        async refreshAll(worktimegroup) {\n            get(this, 'settingsController').refreshNeeded();\n            if (!worktimegroup) await get(this, 'modelCreator').createEmberModels();\n            this.toggleProperty('application.refreshMenus');\n        },\n        setQParams(params) {\n            if (params) {\n                let split = params.split('.');\n                this.transitionToRoute({ queryParams: { main: split[0], sub: split[1] } });\n            }\n        },\n    },\n});\n","import Component from '@ember/component';\nimport { set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { htmlSafe } from '@ember/string';\n\nexport default Component.extend({\n    ajax: service(),\n    loading: false,\n\n    async didReceiveAttrs() {\n        if (this.settingsPage) {\n            set(this, 'loading', true);\n            let data = await this.getFileData();\n            set(this, 'documentData', data);\n            set(this, 'loading', false);\n        }\n    },\n    actions: {\n        toggleHelp() {\n            this.toggleHelpContainerVisibility('hideHelpContainer');\n        },\n    },\n    async getFileData() {\n        let settings = this.neededHelpTexts;\n        let key = '';\n        let fileUrl = '';\n        let helpTexts = [];\n        for (var setting of settings) {\n            //key = setting.replace(\".\", \"-\") + \"-\" + moment.locale()\n            var splittedTextArr = setting.split('.');\n            const lastKeyOfArray = splittedTextArr[splittedTextArr.length - 1];\n            key = 'split-settings-' + lastKeyOfArray.replace(/\\./g, '-') + '-' + moment.locale();\n            // Show custom help text for new overtime settings\n            key =\n                lastKeyOfArray === 'overtime' &&\n                this.Collector.testNeeds(['products.salarytype_v2||flag.new-overtime-settings'])\n                    ? 'split-settings-overtime-new-' + moment.locale()\n                    : key;\n            fileUrl = `https://cloud-writer-prod.s3.amazonaws.com/${key}.html`;\n            try {\n                helpTexts.pushObject({\n                    help: htmlSafe(await this.ajax.request(fileUrl, { dataType: 'text' })),\n                    name: setting?.replace(/\\./g, '-'),\n                    key: key,\n                });\n            } catch (e) {\n                if (this.Collector.testNeeds(['development'])) {\n                    helpTexts.pushObject({\n                        help: htmlSafe('<br><br>'),\n                        name: setting?.replace(/\\./g, '-'),\n                        key: `cannot find help for ${key}`,\n                    });\n                }\n            }\n        }\n        return helpTexts;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"BJHXmLZ/\",\"block\":\"{\\\"symbols\\\":[\\\"helpObj\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"settingsPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"help-container\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross close-help-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleHelp\\\"]],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"documentData\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"needs\\\",[\\\"development\\\"],null],[23,1,[\\\"key\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dev-key\\\"],[8],[0,\\\"(\\\"],[1,[23,1,[\\\"key\\\"]],false],[0,\\\")\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"div\\\",true],[11,\\\"name\\\",[23,1,[\\\"name\\\"]]],[8],[1,[23,1,[\\\"help\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"close-help\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleHelp\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"settings.no-helps-selected\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/helps/template.hbs\"}});","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { computed, get, set } from '@ember/object';\nimport { A } from '@ember/array';\nimport { later } from '@ember/runloop';\n\nexport default Component.extend({\n    capi: service(),\n    intl: service(),\n    evented: service(),\n    activeSetting: 'general',\n    openSettings: A(),\n    worktimegroupfield: computed('worktimegroup', function () {\n        let field = get(this, 'Collector').field('user', 'worktimegroup');\n        field.value = get(this, 'worktimegroup');\n        return field;\n    }),\n    dropdownSettings: computed('settingGroups', function () {\n        let options = [];\n        this.settingGroups.forEach((group) => {\n            let optionGroupOptions = [\n                {\n                    id: `${group.name}.settings`,\n                    name: group.translation,\n                },\n            ];\n\n            group.subsettingTranslations.forEach((subsetting) => {\n                if (subsetting.name !== 'settings' && subsetting.name !== 'info') {\n                    optionGroupOptions.push({\n                        id: `${group.name}.${subsetting.name}`,\n                        name: subsetting.translation,\n                    });\n                }\n            });\n\n            options.push({\n                label: '---',\n                options: optionGroupOptions,\n            });\n        });\n        return options;\n    }),\n\n    worktimegroups: computed(async function () {\n        let wtgroups = [];\n        let groups = await get(this, 'capi').request('user/worktimegroups');\n        wtgroups.pushObject({\n            id: 'default',\n            name: get(this, 'intl').t('settings.no-worktimegroup-selection'),\n        });\n        groups.worktimegroups.forEach((wtgroup) => {\n            wtgroups.pushObject({ id: wtgroup.id, name: wtgroup.text });\n        });\n        return wtgroups;\n    }),\n\n    didInsertElement() {\n        this._super(...arguments);\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n\n        //Open all settings by default\n        let settings = this.settingGroups.mapBy('name');\n        set(this, 'openSettings', A(settings));\n    },\n    willDestroyElement() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n    },\n    actions: {\n        async changeWorktimegroup(group) {\n            await this.worktimegroupChanged(group);\n            if (group && group == 'default') {\n                let settings = this.settingGroups.mapBy('name');\n                set(this, 'openSettings', A(settings));\n            }\n            this.send('changeDropdownSetting', this.settingGroups[0].name);\n        },\n\n        changeDropdownSetting(value) {\n            // Extract main setting and sub-setting from the value\n            let [mainSetting, subSetting] = value.split('.');\n            // Set the active main setting and sub-setting\n            set(this, 'activeSetting', mainSetting);\n\n            this.setOpenSettingsPage(value);\n\n            // If it's the main setting being selected, open the default sub-setting\n            if (!subSetting || subSetting === 'settings') {\n                this.send('openSubSettingsPage', mainSetting, 'settings');\n            } else {\n                // If a specific sub-setting is selected, open it\n                this.send('openSubSettingsPage', mainSetting, subSetting);\n            }\n        },\n        searchChanged(term) {\n            if (term.length >= 3) this.searchSettings(term);\n        },\n        clearSearch() {\n            set(this, 'searchvalue', null);\n            this.searchSettings(null);\n        },\n        gotoSetting(setting) {\n            this.gotoSetting(setting.category);\n            //let arr = setting.category.split(\".\");\n            //set(this,'openSettings', [arr[0]]);\n            this.send('closeSearchResults');\n        },\n        resumeSearch() {\n            if (this.searchvalue) {\n                this.send('searchChanged', this.searchvalue);\n            }\n        },\n        closeSearchResults() {\n            later(\n                this,\n                () => {\n                    this.searchSettings(null);\n                },\n                250,\n            );\n        },\n\n        toggleSetting(settingname) {\n            // Check if the setting is already open\n            if (this.openSettings.indexOf(settingname) > -1) {\n                this.openSettings.removeObject(settingname);\n                // Do nothing\n            } else {\n                // Open the setting by adding it to the array of open settings.\n                this.openSettings.pushObject(settingname);\n            }\n        },\n        openSubSettingsPage(settingsName, subsettingsName) {\n            this.toggleHelpContainerVisibility('hideHelpContainer');\n            if (settingsName == 'companyProfile') {\n                subsettingsName = 'info';\n            }\n            this.setOpenSettingsPage(settingsName + '.' + subsettingsName);\n\n            set(this, 'activeSetting', settingsName);\n            settingsName;\n            if (subsettingsName !== 'settings' && subsettingsName !== 'info') {\n                set(this, 'activeSetting', subsettingsName);\n            }\n        },\n    },\n\n    onStoreEvent(params) {\n        if (params.type == 'worktimegroup') {\n            this.notifyPropertyChange('worktimegroups');\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"CsMClEy2\",\"block\":\"{\\\"symbols\\\":[\\\"result\\\",\\\"settings\\\",\\\"subsetting\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"worktimeGroupsOn\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worktimegroup-container\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.worktimegroup\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[5,\\\"drop-down\\\",[],[[\\\"@options\\\",\\\"@bubbleChange\\\",\\\"@value\\\"],[[28,\\\"await\\\",[[24,[\\\"worktimegroups\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"changeWorktimegroup\\\"],null],\\\"default\\\"]]],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"main-settings-desktop\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"settingGroups\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"main-setting \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,2,[\\\"name\\\"]],[24,[\\\"activeSetting\\\"]]],null],\\\"active\\\"],null]]]],[12,\\\"name\\\",[23,2,[\\\"name\\\"]]],[3,\\\"action\\\",[[23,0,[]],\\\"openSubSettingsPage\\\",[23,2,[\\\"name\\\"]],\\\"settings\\\"]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move move-\\\",[23,2,[\\\"icon\\\"]],\\\" setting-icon setting-icon-\\\",[23,2,[\\\"icon\\\"]]]]],[8],[9],[0,\\\"\\\\n        \\\"],[1,[23,2,[\\\"translation\\\"]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[[23,2,[\\\"name\\\"]],[24,[\\\"openSettings\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,2,[\\\"subsettingTranslations\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"or\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"name\\\"]],\\\"settings\\\"],null],[28,\\\"is-equal\\\",[[23,3,[\\\"name\\\"]],\\\"info\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",false],[12,\\\"name\\\",[28,\\\"concat\\\",[[23,2,[\\\"name\\\"]],\\\"-\\\",[23,3,[\\\"name\\\"]]],null]],[12,\\\"class\\\",[29,[\\\"sub-setting \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"settingsPage\\\"]],[28,\\\"concat\\\",[[23,2,[\\\"name\\\"]],\\\".\\\",[23,3,[\\\"name\\\"]]],null]],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"openSubSettingsPage\\\",[23,2,[\\\"name\\\"]],[23,3,[\\\"name\\\"]]]],[8],[0,\\\"\\\\n        \\\"],[1,[23,3,[\\\"translation\\\"]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"setting-separator\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"main-settings-mobile\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.settings-groups\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[5,\\\"drop-down\\\",[],[[\\\"@optionGroups\\\",\\\"@bubbleChange\\\"],[[22,\\\"dropdownSettings\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"changeDropdownSetting\\\"],null]]]],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"settings-search-box\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeSearchResults\\\"],[[\\\"on\\\"],[\\\"focusOut\\\"]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.search-settings\\\"],null],false],[0,\\\" (\\\"],[1,[28,\\\"t\\\",[\\\"settings.min_search_length\\\"],null],false],[0,\\\")\\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"input-group search-box\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"resumeSearch\\\"]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocomplete\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocorrect\\\",\\\"class\\\",\\\"type\\\"],[\\\"off\\\",[24,[\\\"searchvalue\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"searchChanged\\\"],null],\\\"off\\\",\\\"form-control add-field\\\",\\\"text\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"input-group-addon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clearSearch\\\"]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"i\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"searchvalue\\\"]],\\\"move move-Cross\\\",\\\"move move-Search\\\"],null]]]],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"searchResults\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"search-results\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"noresults\\\",[24,[\\\"searchResults\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"no-search-results\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.no-results\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"searchResults\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"gotoSetting\\\",[23,1,[]]]],[8],[1,[28,\\\"highlight-helper\\\",[[23,1,[\\\"translation\\\"]],[24,[\\\"searchvalue\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/main-settings/template.hbs\"}});","import Component from '@glimmer/component';\nimport { tracked } from '@glimmer/tracking';\nimport { action } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default class CustomExportComponent extends Component {\n    @service('collector-service') Collector;\n    @service notifications;\n    @service settings;\n    @service intl;\n\n    @tracked selected;\n    @tracked isLoading;\n\n    constructor() {\n        super(...arguments);\n\n        this.args.options.forEach((option) => {\n            if (this.Collector.testNeeds(option.products)) this.selected = option;\n        });\n    }\n\n    @action\n    async save(opt) {\n        this.selected = opt;\n        this.isLoading = true;\n\n        await this.settings.setProducts(opt.products);\n\n        if (this.args.saved) await this.args.saved(opt);\n\n        this.notifications.success(this.intl.t('general.saved'), { autoClear: true });\n        this.isLoading = false;\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"DwDgPgYV\",\"block\":\"{\\\"symbols\\\":[\\\"@selected\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"circle\\\",true],[10,\\\"class\\\",\\\"radio-svg-fill\\\"],[10,\\\"id\\\",\\\"Ellipse_30\\\"],[10,\\\"data-name\\\",\\\"Ellipse 30\\\"],[10,\\\"cx\\\",\\\"3\\\"],[10,\\\"cy\\\",\\\"3\\\"],[10,\\\"r\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(3 3)\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/radio-setting/radio-button/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"IPIdT5XB\",\"block\":\"{\\\"symbols\\\":[\\\"opt\\\",\\\"@options\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"isLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"radio-inputs-settings\\\"],[12,\\\"role\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[23,0,[\\\"save\\\"]],[23,1,[]]],null]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-icon\\\"],[8],[0,\\\"\\\\n                \\\"],[5,\\\"settings/general-v2/radio-setting/radio-button\\\",[],[[\\\"@selected\\\"],[[28,\\\"eq\\\",[[23,1,[]],[23,0,[\\\"selected\\\"]]],null]]]],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-text\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[[23,1,[\\\"title\\\"]]],[[\\\"htmlSafe\\\"],[true]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/radio-setting/template.hbs\"}});","import Component from '@ember/component';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Component.extend({\n    ttapi: service(),\n    analytics: service(),\n\n    attributeBindings: ['name'],\n\n    debug: false,\n    refreshWarnings: false,\n    /*\n    showRowEditor: computed('setting.form', function() {\n        if (this.worktimegroupAndNotEditableSetting || (get(this, 'setting.options') && get(this, 'setting.options.firstObject.active'))) return false;\n        return get(this,'setting.form');\n    }),*/\n\n    name: computed('setting.title', function () {\n        return this.setting.title;\n    }),\n\n    settingIsLoading: computed('setting.loading', function () {\n        if (\n            this.setting.loading &&\n            (this.setting.productsOn || this.setting.name || this.setting.options)\n        )\n            return true;\n        return false;\n    }),\n\n    filterByWorktimegroup: computed('worktimegroup', function () {\n        if (this.worktimegroup) {\n            return { worktimegroup: this.worktimegroup };\n        }\n        return {};\n    }),\n\n    showSettingOptions: computed(\n        'setting.{component,form,options,active,hideSettingsFromWorktimegroups}',\n        'loadingState',\n        'worktimegroup',\n        function () {\n            if (this.setting.hasReport && !this.setting.active) return false;\n            if (this.loadingState) return false;\n            if (this.worktimegroup && this.setting.hideSettingsFromWorktimegroups) return false;\n            else if (this.setting.component || this.setting.options) return true;\n            else if (!this.setting.active) return false;\n            else if (this.setting.form) return true;\n\n            //if (!this.setting.form && !this.setting.options) return true; // show component-type always\n\n            //if (this.setting.component || this.setting.form || this.setting.options) return true;\n            return false;\n        },\n    ),\n    showPlaceholder: computed(\n        'setting.{component,form,options,active}',\n        'loadingState',\n        function () {\n            return false;\n            //if (!this.loadingState && !this.setting.active && this.setting.form) return true;\n            //return false;\n        },\n    ),\n\n    showOverlay: computed('setting.active', function () {\n        if (!this.setting.active && this.showSettingOptions) return true;\n        return false;\n    }),\n\n    showFormReport: computed(\n        'setting.{form,options.@each.active,loading,groupEditableSettings}',\n        'settingIsLoading',\n        'worktimegroup',\n        function () {\n            if (\n                get(this, 'worktimegroup') &&\n                !this.Collector.testNeeds([this.setting.form + '.worktimegroup'])\n            )\n                return false;\n            if (this.settingIsLoading) return false;\n            if (this.setting.options && this.setting.options.firstObject.active) return false;\n            else if (this.setting.form) return true;\n            return false;\n        },\n    ),\n\n    showDisabledNotification: computed('setting.groupEditableIf', 'worktimegroup', function () {\n        if (this.worktimegroup && this.setting.groupEditableIf) {\n            return !this.Collector.testNeeds(this.setting.groupEditableIf.needs);\n        } else {\n            return false;\n        }\n    }),\n\n    shouldShowOnlyDisable: computed('disableOnlyText', function () {\n        if (\n            this.setting.disable.findBy('key', this.disableOnlyText.key) &&\n            !this.Collector.testNeeds([this.disableOnlyText.key])\n        )\n            return true;\n        return false;\n    }),\n\n    showInfo: computed(\n        'setting.editingDisabled',\n        'showPlaceholder',\n        'showSettingOptions',\n        'showDisabledNotification',\n        function () {\n            if (this.setting.editingDisabled) return true;\n            if (this.showPlaceholder || this.showSettingOptions || !this.showDisabledNotification)\n                return false;\n            return true;\n        },\n    ),\n\n    shouldCheckWarnings: computed('setting.checkWorktimegroupWarnings', 'worktimegroup', function () {\n        return this.worktimegroup && this.setting.checkWorktimegroupWarnings;\n    }),\n\n    getWarnings: computed('shouldCheckWarnings', 'refreshWarnings', async function () {\n        if (this.shouldCheckWarnings) return await this.fetchWarnings();\n        return false;\n    }),\n\n    actions: {\n        filterSettingNeeds(negativeNeeds, setting) {\n            if (negativeNeeds)\n                return setting.key.includes('!') && !this.Collector.testNeeds([setting.key]);\n            else return !setting.key.includes('!') && !this.Collector.testNeeds([setting.key]);\n        },\n        refreshNeeded() {\n            set(this, 'refreshWarnings', true);\n            this.refreshNeeded();\n        },\n        async toggleActive(setting) {\n            set(this, 'refreshWarnings', true);\n            this.toggleActive(setting);\n            this.trackAnalyticsEvent(setting);\n\n        },\n        saveCalled() {\n            this.saveCalled();\n        },\n        setSetting(setting, options) {\n            this.setSetting(setting, options);\n        },\n        async save(setting) {\n            //const setting = get(this,'setting');\n            if (get(setting, 'value')) {\n                const old_value = get(setting, 'value');\n                let tmp_value = get(setting, 'value');\n                if (get(this, 'configs').setting.name === 'date_interval') {\n                    if (get(setting, 'value') === '0' || get(setting, 'value') === '1') {\n                        tmp_value = 'locked';\n                    }\n                    if (\n                        get(this, 'date_interval_future') &&\n                        get(this, 'date_interval_future_check')\n                    ) {\n                        const val = Math.abs(get(this, 'date_interval_future'));\n                        tmp_value += ',' + val;\n                    }\n                }\n                set(setting, 'value', tmp_value);\n                await setting.save();\n                set(setting, 'value', old_value);\n                get(this, 'notifications').success(get(this, 'intl').t('general.saved'), {\n                    autoClear: true,\n                });\n            }\n        },\n    },\n\n    async fetchWarnings() {\n        set(this, 'refreshWarnings', false);\n        return this.ttapi._get('/api/checkSettingWarnings', {\n            worktimegroup: this.worktimegroup,\n            products: this.setting.checkWorktimegroupWarnings.products.join(','),\n        });\n    },\n\n    trackAnalyticsEvent(setting) {\n        // Format example:\n        // category: 'settings',\n        // action: 'enabled_setting',\n        // label: 'timetracker.auto_pause'\n        let originalTitle = setting.title;\n        let partString = originalTitle.split('.', 3);\n        let title = partString.slice(1).join('.');\n        let status = '';\n        setting.active === true ? status = 'enabled' : status = 'disabled';\n\n        this.analytics.trackEvent({\n            category: 'Settings',\n            action: status + '_setting',\n            label: title,\n        });\n    },\n\n});\n","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\n\n\nexport default class WarningsComponent extends Component {\n    @tracked hideAlertContent = false;\n\n    get styleNamespace() {\n        return podNames['settings/general-v2/setting-comp/components/warnings'];\n    }\n\n    @action\n    toggleAlertContent() {\n        this.hideAlertContent = !this.hideAlertContent;\n    }\n\n}\n","export default Ember.HTMLBars.template({\"id\":\"wD4Qfeo5\",\"block\":\"{\\\"symbols\\\":[\\\"products\\\",\\\"worktimegroup\\\",\\\"product\\\",\\\"@warnings\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[23,0,[\\\"styleNamespace\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-pending\\\",[[23,4,[]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[10,\\\"data-anchor\\\",\\\"worktimegroup-warning-loader\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"await\\\",[[23,4,[]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"data-anchor\\\",\\\"worktimegroup-product-missing-warning\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"warning-header\\\"],[11,\\\"onClick\\\",[28,\\\"fn\\\",[[23,0,[\\\"toggleAlertContent\\\"]]],null]],[10,\\\"data-anchor\\\",\\\"worktimegroup-warning-header\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"glyphicon \\\",[28,\\\"if\\\",[[23,0,[\\\"hideAlertContent\\\"]],\\\"glyphicon-chevron-down\\\",\\\"glyphicon-chevron-up\\\"],null]]]],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"alert-heading\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"settings.worktimegroup_settings.warnings.header\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[23,0,[\\\"hideAlertContent\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"warning-content\\\"],[10,\\\"data-anchor\\\",\\\"worktimegroup-warning-content\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"settings.worktimegroup_settings.warnings.main_text\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"warnings-list-container\\\"],[10,\\\"data-anchor\\\",\\\"worktimegroup-warning-list-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[28,\\\"await\\\",[[23,4,[]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"p\\\",true],[10,\\\"data-anchor\\\",\\\"worktimegroup-warning-list-header\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[23,2,[]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"li\\\",true],[10,\\\"data-anchor\\\",\\\"worktimegroup-warning-list-item\\\"],[8],[0,\\\"\\\\n                                        \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"general.product.\\\",[23,3,[]]],null]],null],false],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/setting-comp/components/warnings/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"+oW3Z/vQ\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"opt\\\",\\\"rule\\\",\\\"negativeNeeds\\\",\\\"need\\\",\\\"positiveNeeds\\\",\\\"need\\\",\\\"@title\\\",\\\"@disableOnlyText\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"shouldCheckWarnings\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"settings/general-v2/setting-comp/components/warnings\\\",[],[[\\\"@warnings\\\"],[[23,0,[\\\"getWarnings\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"setting\\\",\\\"disabled\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-component\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-setting-header disabled-setting\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"searchvalue\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"highlight-helper\\\",[[28,\\\"t\\\",[[24,[\\\"setting\\\",\\\"title\\\"]]],null],[24,[\\\"searchvalue\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[[24,[\\\"setting\\\",\\\"title\\\"]]],null],false],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"debug\\\"]]],null,{\\\"statements\\\":[[0,\\\"(\\\"],[1,[24,[\\\"setting\\\",\\\"title\\\"]],false],[0,\\\")\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"move move-Info disabled-icon\\\"],[8],[0,\\\"\\\\n    \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@delay\\\",\\\"@tooltipClass\\\",\\\"@side\\\"],[\\\"400\\\",\\\"help-tooltip\\\",\\\"right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"shouldShowOnlyDisable\\\"]]],null,{\\\"statements\\\":[[4,\\\"with\\\",[[28,\\\"filter\\\",[[28,\\\"action\\\",[[23,0,[]],\\\"filterSettingNeeds\\\",false],null],[24,[\\\"setting\\\",\\\"disable\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-needs-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.needs_more\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"setting-needs-values\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,7,[]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[[23,8,[\\\"text\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[4,\\\"with\\\",[[28,\\\"filter\\\",[[28,\\\"action\\\",[[23,0,[]],\\\"filterSettingNeeds\\\",true],null],[24,[\\\"setting\\\",\\\"disable\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-needs-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.not_needs_more\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"setting-needs-values\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,5,[]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[[23,6,[\\\"text\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[1,[23,10,[\\\"text\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"setting\\\",\\\"custom\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[1,[28,\\\"component\\\",[[24,[\\\"setting\\\",\\\"component\\\"]]],[[\\\"class\\\",\\\"refreshNeeded\\\",\\\"worktimegroup\\\",\\\"setting\\\",\\\"configs\\\",\\\"saveCalled\\\",\\\"settingSaved\\\",\\\"save\\\",\\\"onToggle\\\",\\\"loading\\\",\\\"title\\\"],[\\\"relative-positioned-setting-component\\\",[28,\\\"action\\\",[[23,0,[]],\\\"refreshNeeded\\\"],null],[24,[\\\"worktimegroup\\\"]],[24,[\\\"setting\\\"]],[24,[\\\"setting\\\",\\\"setting\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveCalled\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"saveCalled\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleActive\\\",[24,[\\\"setting\\\"]]],null],[24,[\\\"settingIsLoading\\\"]],[23,9,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"settingIsLoading\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"loader-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"slim\\\",\\\"class\\\"],[true,\\\"setting-loader\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-component \\\",[28,\\\"if\\\",[[24,[\\\"setting\\\",\\\"hideHeader\\\"]],\\\"hide-header\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[4,\\\"if\\\",[[24,[\\\"setting\\\",\\\"editingDisabled\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overlay\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"not\\\",[[24,[\\\"showDisabledNotification\\\"]]],null],[28,\\\"or\\\",[[24,[\\\"setting\\\",\\\"productsOn\\\"]],[24,[\\\"setting\\\",\\\"name\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"theme\\\"],[[24,[\\\"disabled\\\"]],[24,[\\\"setting\\\",\\\"active\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleActive\\\",[24,[\\\"setting\\\"]]],null],\\\"large\\\",\\\"light\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"setting\\\",\\\"hideHeader\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"actual-setting-header\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"searchvalue\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"highlight-helper\\\",[[28,\\\"t\\\",[[24,[\\\"setting\\\",\\\"title\\\"]]],null],[24,[\\\"searchvalue\\\"]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[[24,[\\\"setting\\\",\\\"title\\\"]]],null],false],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"debug\\\"]]],null,{\\\"statements\\\":[[0,\\\"(\\\"],[1,[24,[\\\"setting\\\",\\\"title\\\"]],false],[0,\\\")\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showInfo\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"move move-Info disabled-icon\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@delay\\\",\\\"@tooltipClass\\\",\\\"@side\\\"],[\\\"400\\\",\\\"help-tooltip\\\",\\\"right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"setting\\\",\\\"editingDisabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-needs-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.edit_disabled\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"setting-needs-values\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"setting\\\",\\\"editingDisabledRules\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",null,[[\\\"need\\\"],[[23,4,[\\\"key\\\"]]]]]],null,{\\\"statements\\\":[[0,\\\" \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[[23,4,[\\\"text\\\"]]],null],false],[9],[0,\\\" \\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[8],[1,[24,[\\\"setting\\\",\\\"groupEditableIf\\\",\\\"title\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showPlaceholder\\\"]]],null,{\\\"statements\\\":[[5,\\\"skeleton-component\\\",[],[[\\\"@rows\\\"],[6]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSettingOptions\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"setting-component-container \\\",[28,\\\"if\\\",[[24,[\\\"setting\\\",\\\"hideHeader\\\"]],\\\"hide-border\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"showOverlay\\\"]],[28,\\\"not\\\",[[24,[\\\"showDisabledNotification\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overlay\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"setting\\\",\\\"component\\\"]],[28,\\\"not\\\",[[24,[\\\"setting\\\",\\\"form\\\"]]],null]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showDisabledNotification\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"settings.group_setting_disabled\\\"],[[\\\"title\\\"],[[28,\\\"t\\\",[[24,[\\\"setting\\\",\\\"groupEditableIf\\\",\\\"title\\\"]]],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"component\\\",[[24,[\\\"setting\\\",\\\"component\\\"]]],[[\\\"class\\\",\\\"refreshNeeded\\\",\\\"worktimegroup\\\",\\\"setting\\\",\\\"configs\\\",\\\"saveCalled\\\",\\\"settingSaved\\\",\\\"save\\\"],[\\\"relative-positioned-setting-component\\\",[28,\\\"action\\\",[[23,0,[]],\\\"refreshNeeded\\\"],null],[24,[\\\"worktimegroup\\\"]],[24,[\\\"setting\\\"]],[24,[\\\"setting\\\",\\\"setting\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"saveCalled\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"saveCalled\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"setting\\\",\\\"options\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showDisabledNotification\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"settings.group_setting_disabled\\\"],[[\\\"title\\\"],[[28,\\\"t\\\",[[24,[\\\"setting\\\",\\\"groupEditableIf\\\",\\\"title\\\"]]],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-container\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"if\\\",[[24,[\\\"setting\\\",\\\"editingDisabled\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overlay\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"setting\\\",\\\"options\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"and\\\",[[24,[\\\"worktimegroup\\\"]],[24,[\\\"option\\\",\\\"notGroupEditable\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"radio-inputs-settings\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setSetting\\\",[24,[\\\"setting\\\"]],[23,3,[]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"active\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"circle\\\",true],[10,\\\"class\\\",\\\"radio-svg-fill\\\"],[10,\\\"id\\\",\\\"Ellipse_30\\\"],[10,\\\"data-name\\\",\\\"Ellipse 30\\\"],[10,\\\"cx\\\",\\\"3\\\"],[10,\\\"cy\\\",\\\"3\\\"],[10,\\\"r\\\",\\\"3\\\"],[10,\\\"transform\\\",\\\"translate(3 3)\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"svg\\\",true],[10,\\\"xmlns\\\",\\\"http://www.w3.org/2000/svg\\\",\\\"http://www.w3.org/2000/xmlns/\\\"],[10,\\\"width\\\",\\\"12\\\"],[10,\\\"height\\\",\\\"12\\\"],[10,\\\"viewBox\\\",\\\"0 0 12 12\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"g\\\",true],[10,\\\"class\\\",\\\"radio-svg-stroke\\\"],[10,\\\"id\\\",\\\"Ellipse_29\\\"],[10,\\\"data-name\\\",\\\"Ellipse 29\\\"],[10,\\\"fill\\\",\\\"#fff\\\"],[10,\\\"stroke-width\\\",\\\"1\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"6\\\"],[10,\\\"stroke\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"circle\\\",true],[10,\\\"cx\\\",\\\"6\\\"],[10,\\\"cy\\\",\\\"6\\\"],[10,\\\"r\\\",\\\"5.5\\\"],[10,\\\"fill\\\",\\\"none\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"radio-input-text\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[[23,3,[\\\"title\\\"]]],[[\\\"htmlSafe\\\"],[true]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showFormReport\\\"]]],null,{\\\"statements\\\":[[4,\\\"collector/form-report\\\",null,[[\\\"filter\\\",\\\"hideSumRow\\\",\\\"hideCreatedColumn\\\",\\\"showColumns\\\",\\\"form\\\",\\\"defaultSort\\\"],[[24,[\\\"filterByWorktimegroup\\\"]],true,true,[24,[\\\"setting\\\",\\\"fields\\\"]],[24,[\\\"setting\\\",\\\"form\\\"]],[24,[\\\"order\\\"]]]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[23,1,[\\\"add\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"table\\\"]],\\\"expected `report.table` to be a contextual component but found a string. Did you mean `(component report.table)`? ('tt4/pods/settings/general-v2/setting-comp/template.hbs' @ L184:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"rowActions\\\"]],\\\"expected `table.rowActions` to be a contextual component but found a string. Did you mean `(component table.rowActions)`? ('tt4/pods/settings/general-v2/setting-comp/template.hbs' @ L185:C22) \\\"],null]],[[\\\"showActions\\\"],[\\\"edit,remove\\\"]]],false],[0,\\\"\\\\n                    \\\"],[1,[23,2,[\\\"no-content\\\"]],false],[0,\\\"\\\\n                    \\\"],[1,[23,2,[\\\"cell\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[2,\\\"FormReport @filter={{filterByWorktimegroup}} @hideCreatedColumn={{true}} @showFilters=' ' @showColumns={{setting.fields}} @form={{setting.form}} as |Report|>\\\\n            <Report.Add />\\\\n            <Report.Table @hideSumRow={{true}} as |Table|>\\\\n                <Table.RowActions @showActions=\\\\\\\"edit,remove\\\\\\\" />\\\\n                <Table.NoContent />\\\\n            </Report.Table>\\\\n        </FormReport\\\"],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/setting-comp/template.hbs\"}});","import Component from '@ember/component';\nimport { computed } from '@ember/object';\n\nexport default Component.extend({\n    hasSplitLabel: computed('settingsPageSettings.@each.label', function () {\n        return this.settingsPageSettings.some((setting) => setting.label === 'split');\n    }),\n\n    hasNonSplitLabel: computed('settingsPageSettings.@each.label', function () {\n        return this.settingsPageSettings.some((setting) => setting.label !== 'split');\n    }),\n\n    settingsTitle: computed('settingsPage', function () {\n        let arr = this.settingsPage.split('.');\n        // Hide \"settings\" title if using top level setting.\n        if (arr[0] === 'general') {\n            return 'settings.general-settings';\n        }\n        if (arr[1] === 'settings') {\n            return 'settings.' + arr[0];\n        } else {\n            return 'settings.' + arr[1];\n        }\n    }),\n\n    actions: {\n        refreshNeeded() {\n            this.refreshNeeded();\n        },\n        toggleHelp() {\n            this.toggleHelpContainerVisibility('showHelpContainer');\n        },\n        toggleActive(setting) {\n            this.toggleActive(setting);\n        },\n        saveCalled(setting, donotreload) {\n            this.saveCalled(setting, donotreload);\n        },\n        setCustomerSetting(setting, value, worktimegroup) {\n            this.setCustomerSetting(setting, value, worktimegroup);\n        },\n        async setSetting(setting, option) {\n            this.setSetting(setting, option);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"u0nyVIAJ\",\"block\":\"{\\\"symbols\\\":[\\\"setting\\\",\\\"setting\\\",\\\"@settingsloading\\\",\\\"@settingsPage\\\",\\\"@neededHelpTexts\\\",\\\"@disableOnlyText\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"settingsLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"settingsPage\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,0,[\\\"hasNonSplitLabel\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sub-settings-container\\\"],[8],[0,\\\"\\\\n                 \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sub-settings-header\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[[24,[\\\"settingsTitle\\\"]]],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Info mobile-info\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showHelp\\\"]]],null],true]],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Info desktop-info\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleHelp\\\"]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"settingsPageSettings\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,2,[\\\"label\\\"]],\\\"split\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sub-setting\\\"],[8],[0,\\\"\\\\n                        \\\"],[2,\\\" Settings Component for 'Non-Labeled' settings \\\"],[0,\\\"\\\\n                        \\\"],[5,\\\"settings/general-v2/setting-comp\\\",[],[[\\\"@worktimegroup\\\",\\\"@searchvalue\\\",\\\"@refreshNeeded\\\",\\\"@toggleActive\\\",\\\"@loadingEditor\\\",\\\"@setting\\\",\\\"@saveCalled\\\",\\\"@setSetting\\\",\\\"@setCustomerSetting\\\",\\\"@disableOnlyText\\\"],[[22,\\\"worktimegroup\\\"],[22,\\\"searchvalue\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"refreshNeeded\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleActive\\\"],null],[22,\\\"loadingEditor\\\"],[23,2,[]],[28,\\\"action\\\",[[23,0,[]],\\\"saveCalled\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setSetting\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setCustomerSetting\\\"],null],[23,6,[]]]]],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"hasSplitLabel\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sub-settings-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sub-settings-header\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Info desktop-info\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleHelp\\\"]],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"settingsPageSettings\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,1,[\\\"label\\\"]],\\\"split\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sub-setting\\\"],[8],[0,\\\"\\\\n                        \\\"],[2,\\\" Settings Component for Labelel-'split' settings \\\"],[0,\\\"\\\\n                        \\\"],[5,\\\"settings/general-v2/setting-comp\\\",[],[[\\\"@worktimegroup\\\",\\\"@searchvalue\\\",\\\"@refreshNeeded\\\",\\\"@toggleActive\\\",\\\"@loadingEditor\\\",\\\"@setting\\\",\\\"@saveCalled\\\",\\\"@setSetting\\\",\\\"@setCustomerSetting\\\",\\\"@disableOnlyText\\\"],[[22,\\\"worktimegroup\\\"],[22,\\\"searchvalue\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"refreshNeeded\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleActive\\\"],null],[22,\\\"loadingEditor\\\"],[23,1,[]],[28,\\\"action\\\",[[23,0,[]],\\\"saveCalled\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setSetting\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setCustomerSetting\\\"],null],[23,6,[]]]]],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"or\\\",[[23,0,[\\\"hasSplitLabel\\\"]],[23,0,[\\\"hasNonSplitLabel\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"no-settings-found\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"report-placeholder\\\",null,[[\\\"customHeader\\\",\\\"searchIcon\\\"],[[28,\\\"t\\\",[\\\"settings.no-settings-found\\\"],null],true]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sub-settings-no-content\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"settings.no-content\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showHelp\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@header\\\",\\\"@close\\\"],[[28,\\\"t\\\",[[24,[\\\"settingsTitle\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"showHelp\\\"]]],[[\\\"value\\\"],[null]]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"settings/general-v2/helps\\\",[],[[\\\"@settingsLoading\\\",\\\"@settingsPage\\\",\\\"@neededHelpTexts\\\"],[[23,3,[]],[23,4,[]],[23,5,[]]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/sub-settings/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"pAUlZZRH\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"settings/general-v2/container\\\",[],[[\\\"@refreshAll\\\",\\\"@queryParams\\\",\\\"@setQParams\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"refreshAll\\\"],null],[23,0,[\\\"qParams\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setQParams\\\"],null]]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/general-v2/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/history/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Controller;\n\nimport Ember from 'ember';\n\nimport productSettings from '../../../config/settings';\n\nController = Ember.Controller.extend({\n    queryParams: 'page',\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    formattedModel: Ember.computed('model', function () {\n        return this.get('model.products').map((row) => {\n            row.product = this.getProductName(row.product);\n            row.type =\n                row.type === 'add'\n                    ? this.get('intl').t('general.on')\n                    : this.get('intl').t('general.off');\n            row.date = moment(row.date + ' UTC').format('LLL');\n            return row;\n        });\n    }),\n    rowCount: Ember.computed.alias('model.count'),\n    pageCount: Ember.computed('rowCount', function () {\n        return Math.ceil(this.get('rowCount') / 25);\n    }),\n    getProductName: function (product) {\n        var formList, list;\n        list = this.getListOfProducts();\n        formList = list.findBy('product', product);\n        if (formList) {\n            return {\n                header: this.get('intl').t(formList.header),\n                subheader: this.get('intl').t(formList.subheader),\n            };\n        } else {\n            return {\n                name: product,\n            };\n        }\n    },\n    getListOfProducts: function () {\n        var k, list, productSetting;\n        if (this.get('listOfProducts')) {\n            return this.get('listOfProducts');\n        }\n        list = [];\n        for (k in productSettings) {\n            productSetting = productSettings[k];\n            productSetting.forEach((item) => {\n                var form, productName, setting_name;\n                setting_name = item.title;\n                form = item.form;\n                if (!item.options) {\n                    productName = Ember.isArray(item.productsOn)\n                        ? item.productsOn[0].substring(0, 9) === 'products.'\n                            ? item.productsOn[0].slice(9)\n                            : item.productsOn[0]\n                        : form;\n                    list.push({\n                        header: setting_name,\n                        subheader: null,\n                        product: productName,\n                    });\n                    return;\n                }\n                return item.options.forEach((option) => {\n                    var option_name;\n                    option_name = option.title;\n                    return option.products.forEach((product) => {\n                        if (product.substring(0, 9) === 'products.') {\n                            return list.push({\n                                header: form ? setting_name : option_name,\n                                subheader: form ? null : setting_name,\n                                product: product.substring(9),\n                            });\n                        }\n                    });\n                });\n            });\n        }\n        this.set('listOfProducts', list);\n        return list;\n    },\n});\n\nexport default Controller;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Route;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n    },\n    Collector: Ember.inject.service('collector-service'),\n    model: function (params) {\n        return this.get('Collector').ajax({\n            url:\n                'service/productHistory' + (params.page ? '?offset=' + (params.page - 1) * 25 : ''),\n        });\n    },\n});\n\nexport default Route;\n","export default Ember.HTMLBars.template({\"id\":\"aK3EzYQd\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table settings-history-table\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"formattedModel\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"product\\\",\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"product\\\",[[23,1,[\\\"product\\\",\\\"name\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"product\\\",\\\"header\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"product\\\",\\\"subheader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"small\\\",true],[8],[1,[23,1,[\\\"product\\\",\\\"subheader\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"type\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"user\\\",[[23,1,[\\\"user\\\"]],\\\"icon\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"currentPage\\\",\\\"pageCount\\\",\\\"rowsPerPage\\\"],[[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]],25]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/history/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsIndexRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSettingsIndexRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default SettingsIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"7GNJdqRl\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"settings.you_dont_have_any_settings\\\"],null],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/integrationcontroller/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar IntegrationcontrollerController;\n\nimport Ember from 'ember';\n\nIntegrationcontrollerController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    worktime_fields: Ember.computed(function () {\n        var fields;\n        fields = this.get('Collector').fieldArray('worktime');\n        return fields.filter(function (field) {\n            var ref;\n            return (ref = field.type) === 'hours' || ref === 'number' || ref === 'currency';\n        });\n    }),\n    control_values: Ember.computed(function () {\n        var dropdowns, fields, values;\n        fields = this.get('Collector').fieldArray('worktime');\n        dropdowns = fields.filter(function (field) {\n            var ref;\n            return (ref = field.type) === 'dropdown_values';\n        });\n        values = [\n            {\n                name: this.get('intl').t('general.choose'),\n                value: '',\n            },\n        ];\n        dropdowns.forEach((field) => {\n            return field.options.forEach((option) => {\n                return values.push({\n                    name:\n                        field.translated_name.string +\n                        ' is ' +\n                        this.get('intl').t('worktime.' + field.name + '.' + option.value),\n                    value: field.name + '=' + option.value,\n                });\n            });\n        });\n        return values;\n    }),\n    actions: {\n        save: function () {\n            return this.get('model').forEach((row) => {\n                if (row.get('hasDirtyAttributes')) {\n                    return row.save();\n                }\n            });\n        },\n        remove: function (row) {\n            return row.destroyRecord();\n        },\n        addrow: function () {\n            return this.store.createRecord('integrationcontroller');\n        },\n        change: function (value) {\n            return console.log('change', value);\n        },\n    },\n});\n\nexport default IntegrationcontrollerController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/integrationcontroller/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar IntegrationcontrollerRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nIntegrationcontrollerRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    model: function () {\n        return this.store.findAll('integrationcontroller');\n    },\n});\n\nexport default IntegrationcontrollerRoute;\n","export default Ember.HTMLBars.template({\"id\":\"4Hm+aJZ7\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"field\\\",\\\"field\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Salarycode\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Field\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[0,\\\"Conditions\\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,1,[\\\"salarycode\\\"]],\\\"form-control\\\"]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onChange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,1,[\\\"field\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"option\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"worktime_fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,3,[\\\"name\\\"]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"field\\\"]],[23,3,[\\\"name\\\"]]],null]],[8],[1,[23,3,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[11,\\\"onChange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,1,[\\\"control\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"control_values\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,2,[\\\"value\\\"]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"field\\\"]],[23,2,[\\\"value\\\"]]],null]],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,1,[]]]],[8],[0,\\\"X\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addrow\\\"]],[8],[0,\\\"Add salarytype\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[0,\\\"Save\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/integrationcontroller/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/integrations/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsIntegrationsController;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nSettingsIntegrationsController = Ember.Controller.extend({\n    collectorService: Ember.inject.service(),\n    sending: false,\n    callIntegration: function (data) {\n        return this.get('collectorService').ccapi({\n            url: 'at2unpaidservices',\n            method: 'post',\n            data: {\n                post: data,\n            },\n        });\n    },\n    actions: {\n        closeModal: function () {\n            return this.set('backFromCC', null);\n        },\n        sendFile: function () {\n            return $('input.sendAdmintoolIntegrationFile').click();\n        },\n        upload: function (evt) {\n            var input, reader;\n            input = evt.target;\n            if (input.files && input.files[0]) {\n                this.set('sending', true);\n                reader = new FileReader();\n                reader.onload = (e) => {\n                    var data;\n                    data = e.target.result;\n                    this.callIntegration(atob(data.split('base64,')[1])).then((back) => {\n                        this.set('backFromCC', 'Response: ' + JSON.stringify(back));\n                        return this.set('sending', false);\n                    });\n                    //console.log atob data.substring(13)\n                    return this.set('selectedFile', null);\n                };\n                return reader.readAsDataURL(input.files[0]);\n            }\n        },\n    },\n});\n\nexport default SettingsIntegrationsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/integrations/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsIntegrationsRoute;\n\nimport Ember from 'ember';\n\nSettingsIntegrationsRoute = Ember.Route.extend();\n\nexport default SettingsIntegrationsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"ZZe1OZky\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"admintool.integrations.unpaid_services_header\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"admintool.integrations.unpaid_services_help\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"input\\\",true],[10,\\\"class\\\",\\\"hide sendAdmintoolIntegrationFile\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"upload\\\"],null]],[11,\\\"value\\\",[22,\\\"selectedFile\\\"]],[10,\\\"type\\\",\\\"file\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendFile\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.select_file\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"sending\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"backFromCC\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[\\\"response\\\",[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"backFromCC\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/integrations/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/measurement_custom/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsMeasurementCustomController;\n\nimport Ember from 'ember';\n\nSettingsMeasurementCustomController = Ember.Controller.extend({\n    application: Ember.inject.controller(),\n    settingsController: Em.inject.controller('settings'),\n    actions: {\n        saved: function () {\n            this.get('settingsController').refreshNeeded();\n            this.get('application').notifyPropertyChange('sideMenus');\n            return false;\n        },\n        removedMeasurement: function () {\n            this.get('settingsController').refreshNeeded();\n            this.get('application').notifyPropertyChange('sideMenus');\n            return false;\n        },\n    },\n});\n\nexport default SettingsMeasurementCustomController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/measurement_custom/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsMeasurementCustomRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSettingsMeasurementCustomRoute = Ember.Route.extend(AuthenticatedRouteMixin, {});\n\nexport default SettingsMeasurementCustomRoute;\n","export default Ember.HTMLBars.template({\"id\":\"crf3mIq1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"form-wizard\\\",null,[[\\\"form\\\",\\\"saved\\\",\\\"removedMeasurement\\\"],[\\\"measurement_custom\\\",[28,\\\"action\\\",[[23,0,[]],\\\"saved\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removedMeasurement\\\"],null]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/measurement_custom/template.hbs\"}});","import Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { computed, get } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    collector: service('collector-service'),\n    notificationpanel: alias('model'),\n    // [{title: \"test\", notifications: [{title:\"Card expired\", active: true}, {title: \"Worktime not added\", active: true}]}]\n    notificationGroups: computed('model', function () {\n        const filtered = get(this, 'model').filter((item) => {\n            if (!item.needs) return true;\n            return get(this, 'collector').testNeeds(item.needs);\n        });\n\n        const groups = filtered.mapBy('group').filter(function (x, i, a) {\n            return a.indexOf(x) == i;\n        });\n\n        const ret = [];\n        groups.forEach((group) => {\n            ret.push({\n                title: group,\n                notifications: filtered.filterBy('group', group).map((notification) => {\n                    return {\n                        title: notification.type,\n                        type: notification.type,\n                        active: notification.active,\n                        customTime: notification.customTime,\n                    };\n                }),\n            });\n        });\n        return ret;\n    }),\n});\n","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { get, set, computed } from '@ember/object';\n//import moment from 'moment-timezone';\n\nexport default Component.extend({\n    ttapi: service(),\n    notifications: service(),\n    intl: service(),\n\n    show: false,\n\n    customTime: computed('notification.customTime', function () {\n        if (!get(this, 'notification.customTime')) return null;\n        const utctime = get(this, 'notification.customTime');\n        const date = moment().format('YYYY-MM-DD');\n        return moment(date + ' ' + utctime + ':00Z').format('HH:mm');\n    }),\n\n    actions: {\n        toggleActive(value, onoff) {\n            set(this, 'notification.active', onoff);\n            let date = moment().format('YYYY-MM-DD');\n            let time = get(this, 'notification.customTime')\n                ? get(this, 'notification.customTime')\n                : null;\n\n            let customTime = time\n                ? moment(date + ' ' + time + ':00')\n                      .utc()\n                      .format('HH:mm')\n                : null;\n\n            get(this, 'ttapi')._post('notification/update', {\n                notification: get(this, 'notification.type'),\n                active: onoff,\n                customTime: customTime,\n            });\n        },\n\n        async saveCustomTime(value) {\n            let date = moment().format('YYYY-MM-DD');\n            let customTime = moment(date + ' ' + value + ':00')\n                .utc()\n                .format('HH:mm');\n            await get(this, 'ttapi')._post('notification/update', {\n                notification: get(this, 'notification.type'),\n                active: get(this, 'notification.active'),\n                customTime: customTime,\n            });\n            this.notifications.success(this.intl.t('general.saved'), {\n                autoClear: true,\n            });\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"u/TnhKKt\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-6 setting-panel\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"panel-title general-settings-title\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"theme\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"onLabel\\\",\\\"offLabel\\\"],[\\\"flip\\\",[24,[\\\"notification\\\",\\\"active\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleActive\\\",[24,[\\\"notification\\\"]]],null],\\\"large\\\",[28,\\\"t\\\",[\\\"settings.on\\\"],null],[28,\\\"t\\\",[\\\"settings.off\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"notification.\\\",[24,[\\\"notification\\\",\\\"title\\\"]],\\\".title\\\"],null]],null],false],[0,\\\"\\\\n            \\\"],[1,[28,\\\"standard-icon-popover\\\",null,[[\\\"icon\\\",\\\"text\\\"],[\\\"info\\\",[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"notification.\\\",[24,[\\\"notification\\\",\\\"title\\\"]],\\\".desc\\\"],null]],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"notification\\\",\\\"active\\\"]],[24,[\\\"notification\\\",\\\"customTime\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"time\\\",[23,0,[\\\"customTime\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-sm\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveCustomTime\\\",[23,0,[\\\"customTime\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"img\\\",true],[10,\\\"style\\\",\\\"margin-left: 50%;\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"settings-dropdown-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"input\\\",true],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\" Rivin omistajalle\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"input\\\",true],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\" Rivin omistajan esimiehelle\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"input\\\",true],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\" Kaikille käyttäjäryhmässä: \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"input\\\",true],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\" Seuraaville käyttäjille: \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/notificationpanel/notification-component/template.hbs\"}});","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Route.extend({\n    ttapi: service(),\n\n    model() {\n        return get(this, 'ttapi')._get('notification/categories');\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"CZW4insR\",\"block\":\"{\\\"symbols\\\":[\\\"notificationGroup\\\",\\\"notification\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"notificationGroups\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"settings-container\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"setting-group-header\\\"],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"notifications.groups.\\\",[23,1,[\\\"title\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"notifications\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"settings/notificationpanel/notification-component\\\",null,[[\\\"notification\\\"],[[23,2,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/notificationpanel/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/pl/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsPlController;\n\nimport Ember from 'ember';\n\nimport productSettings from '../../../config/pl_settings';\n\nSettingsPlController = Ember.Controller.extend({\n    Collector: Em.inject.service('collector-service'),\n    session: Em.inject.service(),\n    intl: Em.inject.service(),\n    application: Em.inject.controller(),\n    settingsController: Em.inject.controller('settings'),\n    modelCreator: Ember.inject.service('model-creator'),\n    record: null,\n    // Settings that have somekind of settings form to add records to\n    formSettings: Em.computed('allSettings', function () {\n        var all_settings;\n        all_settings = this.get('allSettings');\n        if (!all_settings) {\n            return;\n        }\n        return this.get('allSettings').filterBy('form');\n    }),\n    // All settings fetched from config/settings and parsed to needed formats\n    allSettings: Em.computed('session.currentUser', 'updateSettings', function () {\n        var c, i, j, len, len1, option, options, pl_settings, ref, service_has_products, setting;\n        c = this.get('Collector');\n        pl_settings = [];\n        service_has_products = c.testNeeds(['products']);\n        if (!this.get('session.currentUser')) {\n            return;\n        }\n        // Loop trough the settings from config/settings\n        for (i = 0, len = productSettings.length; i < len; i++) {\n            setting = productSettings[i];\n            // Need to make them an ember object or updating won't work\n            setting = Em.Object.create(setting);\n            // We save the last opened setting in own variable so\n            // we can set the right setting open when settings are refreshed\n            if (this.get('openSetting') === setting.get('name')) {\n                // If they match, set the setting to open\n                setting.set('show', true);\n            }\n            // We test if the service have everything that is in it's needs array\n            // If not then we won't push it into settings\n            if (c.testNeeds(setting.get('needs'))) {\n                options = [];\n                if (setting.get('name') && this.get('intl').exists(setting.get('name') + '.desc')) {\n                    setting.set('desc', setting.get('name') + '.desc');\n                }\n                // If we don't have options the setting is always on\n                if (!setting.get('options') || !service_has_products) {\n                    setting.set('options', null);\n                    setting.set('active', true);\n                } else {\n                    ref = setting.get('options');\n                    // Loop through options and mark options that have all needs satisfied as active\n                    for (j = 0, len1 = ref.length; j < len1; j++) {\n                        option = ref[j];\n                        option = Em.Object.create(option);\n                        if (c.testNeeds(option.get('products'))) {\n                            option.set('active', true);\n                            // If settings have form and option value is \"on\" we mark the setting as active\n                            if (option.get('value') === 'on' && setting.get('form')) {\n                                setting.set('active', true);\n                            }\n                        }\n                        options.push(option);\n                    }\n                    setting.set('options', options);\n                }\n                pl_settings.push(setting);\n            }\n        }\n        return pl_settings;\n    }),\n    // All settings that don't have somekind of form\n    settings: Em.computed('allSettings', function () {\n        var all_settings;\n        all_settings = this.get('allSettings');\n        if (!all_settings) {\n            return;\n        }\n        return this.get('allSettings').filterBy('form', void 0);\n    }),\n    actions: {\n        addRecord: function (report) {\n            report.set('editorMode', true);\n            return false;\n        },\n        closeEditor: function (report) {\n            report.set('editorMode', false);\n            if (this.get('record')) {\n                this.set('record', null);\n            }\n            return false;\n        },\n        editRow: function (row, report) {\n            Em.assert('editRow action needs row id', row.id);\n            this.set('record', row.id);\n            report.set('editorMode', true);\n            return false;\n        },\n        removeRow: function (row, report) {\n            Em.assert('removeRow action needs row id', row.id);\n            return this.store.findRecord(report.get('form'), row.id).then(function (record) {\n                return record.destroyRecord();\n            });\n        },\n        // Add the options products and update the settings\n        setSetting: function (setting, option) {\n            var c, products, promises;\n            c = this.get('Collector');\n            // If we have a form we inverse the products else we just return the products\n            // The inversing needs to be done because forms only toggle on and off - could maybe fix in template\n            products = setting.get('form') ? c.inverseNeeds(option.products) : option.products;\n            this.get('settingsController').refreshNeeded();\n            // Use collector service to add the products to service\n            promises = c.setProducts(products);\n            return Em.RSVP.Promise.all(promises).then((data) => {\n                return this.send('saveCalled');\n            });\n        },\n        // Toggle setting in accordion to be open or closed\n        toggleSettingShow: function (clicked) {\n            var i, len, ref, results, setting;\n            ref = this.get('settings');\n            results = [];\n            for (i = 0, len = ref.length; i < len; i++) {\n                setting = ref[i];\n                if (setting.get('name') === clicked.get('name')) {\n                    setting.toggleProperty('show');\n                    results.push(this.set('openSetting', setting.get('name')));\n                } else {\n                    results.push(void 0);\n                }\n            }\n            return results;\n        },\n        saveCalled: function () {\n            // Get new /forms and update models\n            return this.get('modelCreator')\n                .createEmberModels()\n                .then(() => {\n                    this.toggleProperty('application.refreshMenus');\n                    // Force settings to update\n                    return this.toggleProperty('updateSettings');\n                });\n        },\n    },\n});\n\nexport default SettingsPlController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/pl/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsPlRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSettingsPlRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\n//    resetController: (controller, isExiting, transition) ->\n//        @_super.apply(this, arguments);\n\n//        if isExiting\n//            @transitionTo transition.targetName\n//            location.reload()\nexport default SettingsPlRoute;\n","export default Ember.HTMLBars.template({\"id\":\"oLHQxtMN\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"opt\\\",\\\"setting\\\",\\\"opt\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"settings\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"panel-heading\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleSettingShow\\\",[23,3,[]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[[23,3,[\\\"name\\\"]]],null],false],[9],[0,\\\" \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"icon-big pull-right text-report-muted \\\",[28,\\\"if\\\",[[23,3,[\\\"show\\\"]],\\\"move move-SortUp\\\",\\\"move move-SortDown\\\"],null]]]],[8],[9],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"show\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"blockquote\\\",true],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[[23,3,[\\\"name\\\"]],\\\".desc\\\"],null]],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,3,[\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",[29,[\\\"list-group-item \\\",[28,\\\"if\\\",[[23,4,[\\\"active\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"setSetting\\\",[23,3,[]],[23,4,[]]]],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"list-group-item-heading\\\"],[8],[1,[28,\\\"t\\\",[[23,4,[\\\"name\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"option\\\",\\\"desc\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"list-group-item-text\\\"],[8],[1,[28,\\\"t\\\",[[23,4,[\\\"desc\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,3,[\\\"component\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"component\\\",[[23,3,[\\\"component\\\"]]],[[\\\"configs\\\"],[[23,3,[\\\"setting\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"formSettings\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-xs-12\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-8\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[[23,1,[\\\"name\\\"]]],null],false],[9],[0,\\\"\\\\n                                \\\"],[4,\\\"if\\\",[[23,1,[\\\"desc\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"t\\\",[[23,1,[\\\"desc\\\"]]],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2 text-right\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"options\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[\\\"active\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"value\\\"]],\\\"on\\\"],null],\\\"btn-m-action\\\",\\\"btn-m-link\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"setSetting\\\",[23,1,[]],[23,2,[]]]],[8],[1,[28,\\\"t\\\",[[23,2,[\\\"name\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"active\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[23,1,[\\\"editorMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2 text-right\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addRecord\\\",[23,1,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"active\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"editorMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"component\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"component\\\",[[23,1,[\\\"component\\\"]]],[[\\\"settings\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\",\\\"closeEditor\\\"],[[23,1,[]],[24,[\\\"record\\\"]],\\\"closeEditor\\\",\\\"closeEditor\\\",[28,\\\"action\\\",[[23,0,[]],\\\"closeEditor\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"settings\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[23,1,[]],[24,[\\\"record\\\"]],\\\"closeEditor\\\",\\\"closeEditor\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"settings\\\",\\\"editRow\\\",\\\"removeRow\\\"],[[23,1,[]],\\\"editRow\\\",\\\"removeRow\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/pl/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/products/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsProductsController;\n\nimport Ember from 'ember';\n\nimport { t } from 'ember-intl';\n\nimport config from 'tt4/config/environment';\n\nimport tt4config from '../../../config';\n\nimport productPostAddMixin from '../../../mixins/product-post-add';\n\nimport { htmlSafe } from '@ember/string';\n\nSettingsProductsController = Ember.Controller.extend(productPostAddMixin, {\n    intl: Ember.inject.service(),\n    admintool: Ember.inject.service(),\n    cdn: Ember.inject.service(),\n    session: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    application: Em.inject.controller(),\n    settings: Em.inject.controller(),\n    dialogs: Em.inject.service(),\n    modelCreator: Ember.inject.service('model-creator'),\n    notifications: Ember.inject.service(),\n    errors: Em.Object.create({\n        number_of_boxes: false,\n        delivery_street: false,\n        delivery_city: false,\n        delivery_zip: false,\n        name: false,\n        phone: false,\n        email: false,\n    }),\n    orderButtonArray: ['rfid', 'famoco'],\n    integrations: [\n        'fivaldi_salary_soap',\n        'lon600_salary_xml',\n        'netvisor_salary_rest',\n        'nova_salary_csv',\n        'nova_web_service',\n        'custom_export',\n    ],\n    buyrent_options_rfid: Ember.computed(function () {\n        return [\n            {\n                id: 'buy',\n                name: this.get('intl').t('settings.products.order_modal.buy'),\n            },\n            {\n                id: 'rent',\n                name: this.get('intl').t('settings.products.order_modal.rent'),\n            },\n        ];\n    }),\n    buyrent_options_famoco: Ember.computed(function () {\n        return [\n            {\n                id: 'famocobuy',\n                name: this.get('intl').t('settings.products.order_modal.famocobuy'),\n            },\n            {\n                id: 'famocorent',\n                name: this.get('intl').t('settings.products.order_modal.famocorent'),\n            },\n        ];\n    }),\n    levels: Ember.computed('intl', function () {\n        var country, intl;\n        intl = this.get('intl');\n        country = this.get('store').peekAll('companyInfo').get('firstObject.country');\n        return Em.A([\n            {\n                name: 'base_basic',\n                header: intl.t('products.header.basic'),\n                text: intl.t('products.text.basic'),\n                image: config.APP.CDN_URL + '/images/produts/basic.png',\n                price: intl.t('products.price.basic_' + country),\n                currency: intl.t('products.currency.basic_' + country),\n                pricetype_text: intl.t('products.pricetype.basic_' + country),\n                needs: 'products.base_basic',\n            },\n            {\n                name: 'base_pro',\n                header: intl.t('products.header.pro'),\n                text: intl.t('products.text.pro'),\n                image: config.APP.CDN_URL + '/images/produts/pro.png',\n                price: intl.t('products.price.pro_' + country),\n                currency: intl.t('products.currency.pro_' + country),\n                pricetype_text: intl.t('products.pricetype.pro_' + country),\n                needs: 'products.base_basic||products.base_pro',\n            },\n        ]);\n    }),\n    //{\n    //        name: \"base_enterprise\"\n    //        header: intl.t(\"products.header.enterprise\")\n    //        text: intl.t(\"products.text.enterprise\")\n    //        image: config.APP.CDN_URL+\"/images/produts/enterprise.png\"\n    //        price: intl.t(\"products.price.enterprise_\"+country)\n    //        currency: intl.t(\"products.currency.enterprise_\"+country)\n    //        pricetype_text: intl.t(\"products.pricetype.enterprise_\"+country)\n    //        needs: \"products.base_basic||products.base_pro||products.base_enterprise\"\n    //}\n    activeLevel: Ember.computed(function () {\n        var i, len, product, ref, version;\n        ref = this.get('Collector.products');\n        for (i = 0, len = ref.length; i < len; i++) {\n            product = ref[i];\n            if (\n                product === 'base_basic' ||\n                product === 'base_pro' ||\n                product === 'base_enterprise'\n            ) {\n                version = product;\n                break;\n            }\n        }\n        return this.get('levels').filterBy('name', version).get('firstObject');\n    }),\n    isSweService: Ember.computed('session.currentUser.company_info.country', function () {\n        if (this.get('session.currentUser.company_info.country') === 'se') {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n    _products: Ember.on(\n        'init',\n        Ember.observer('session.currentUser.company_info.country', function () {\n            var c, cdn, intl, params, servicetype;\n            if (!this.get('session.currentUser.company_info.country')) {\n                return;\n            }\n            intl = this.get('intl');\n            cdn = this.get('cdn');\n            c = this.get('Collector');\n            if (c.testNeedsOne('products.mini_entry')) {\n                servicetype = 'mini_entry';\n            } else if (c.testNeedsOne('products.generic_timetracker')) {\n                servicetype = 'entry';\n            } else {\n                servicetype = 'movenium';\n            }\n            params = {\n                data: {\n                    country: this.get('session.currentUser.company_info.country'),\n                    lang: moment.locale(),\n                    servicetype: servicetype,\n                },\n                headers: {\n                    Authorization:\n                        'Bearer ' + this.get('session.session.authenticated.access_token'),\n                },\n            };\n            return this.get('admintool')\n                .get('products', params)\n                .then((products) => {\n                    products = products.map((item) => {\n                        item.pricetype_text = (function () {\n                            switch (item.pricetype) {\n                                case 'peruser':\n                                    return intl.t('register.price_type_peruser');\n                                case 'perproject':\n                                    return intl.t('register.price_type_perproject');\n                                case 'permonth':\n                                    return intl.t('register.price_type_permonth');\n                                case 'monthlyperproject':\n                                    return intl.t('register.price_type_monthlyperproject');\n                            }\n                        })();\n                        item.image = item.image ? cdn.url('images/products/' + item.image) : void 0;\n                        item = Ember.Object.create(item);\n                        // if client has old xml-version of this product\n                        // select it but disable it also so user cannot unselect it\n                        if (this.get('productNeedsArr')[item.name]) {\n                            if (c.testNeeds(this.get('productNeedsArr')[item.name])) {\n                                item.set('disabled_and_selected', true);\n                            }\n                        }\n\n                        // if product has disabled needs set disabled\n                        const productCanBeTurnedOnNeeds = this.get(\n                            'productCanBeTurnedOn.' + item.name,\n                        );\n                        const allProductNeedsAreMet =\n                            !productCanBeTurnedOnNeeds ||\n                            c.testNeeds(productCanBeTurnedOnNeeds.map((a) => a.key));\n\n                        item.set(\n                            'disabled',\n                            allProductNeedsAreMet ? false : productCanBeTurnedOnNeeds,\n                        );\n\n                        //@set 'old_products_found', true\n                        //item.set('selected', true)\n                        if (c.testNeeds(['products.' + item.get('name')])) {\n                            item.set('selected', true);\n                        }\n                        return item;\n                    });\n                    return this.set('products', products);\n                });\n        }),\n    ),\n    // list here all products that cannot be turned on/off when customer has old xml-packet for that product\n    productNeedsArr: {\n        timetracker: ['worktime', '!products.timetracker', 'task'],\n        orientations: ['orientation', '!modules.orientations'],\n        rakentajanpaketti: [\n            'urakkaraportointi',\n            '!products.rakentajanpaketti',\n            '!products.timetracker',\n        ],\n        rfid: ['project.rfid_device_id', '!products.rfid'],\n    },\n\n    productCanBeTurnedOn: {\n        fondion: [\n            {\n                key: 'products.salarytype_v2',\n                text: 'settings.salarytypes.salarytypesv2',\n            },\n            {\n                key: '!products.timetracker_hours',\n                text: 'settings.timetracker.startandend',\n            },\n        ],\n    },\n\n    // i didn't add these because if client has site-safety xml it also has tr and mvr json-products so there is nothing to compare\n    // measurement_tr: ['tr']\n    // measurement_mvr: ['mvr']\n    isDirty: Em.computed('products.@each.selected', 'productsSaved', function () {\n        var c, dirty, i, len, product, products;\n        products = this.get('products');\n        if (!products) {\n            return false;\n        }\n        c = this.get('Collector');\n        dirty = false;\n        for (i = 0, len = products.length; i < len; i++) {\n            product = products[i];\n            if (product.get('selected') && !c.testNeeds(['products.' + product.get('name')])) {\n                dirty = true;\n            } else if (\n                !product.get('selected') &&\n                c.testNeeds(['products.' + product.get('name')])\n            ) {\n                dirty = true;\n            }\n        }\n        return dirty;\n    }),\n    rfid_modal_title: Em.computed(function () {\n        return htmlSafe(this.get('intl').t('register.products.rfid_order_title'));\n    }),\n    showRfidModal: false,\n    showIntegrationModal: false,\n    sendInfoToCustomerService: function (needs) {\n        var c, content, products;\n        if (this.get('session.currentUser.company_info.country') !== 'se') {\n            return;\n        }\n        c = this.get('Collector');\n        products = needs.filter(function (item) {\n            return item.get('selected') && !c.productExists('products.' + item.get('name'));\n        });\n        if (Ember.get(products, 'length') > 0) {\n            content =\n                'Customer ' +\n                this.get('session.currentUser.company_info.company_name') +\n                ' ' +\n                this.get('session.currentUser.partnerid') +\n                ' has added products to their service<br>';\n            content += 'Products: <br>' + products.mapBy('header').join('<br>');\n            return this.Collector.ttapi({\n                url: 'sendEmail',\n                data: {\n                    email: 'customerservice_se',\n                    title:\n                        'Customer ' +\n                        this.get('session.currentUser.company_info.company_name') +\n                        ' ' +\n                        this.get('session.currentUser.partnerid') +\n                        ' added products',\n                    content: content,\n                },\n                method: 'post',\n            });\n        }\n    },\n    updateExternal: function (needs) {\n        var c, data, i, len, product, products, results, url;\n        if (\n            !config.APP.PRODUCT_UPDATES_URL ||\n            this.get('session.session.content.authenticated.scope')\n        ) {\n            return;\n        }\n        c = this.get('Collector');\n        products = needs.filter(function (item) {\n            return item.get('selected') && !c.productExists('products.' + item.get('name'));\n        });\n        url = config.APP.PRODUCT_UPDATES_URL;\n        results = [];\n        for (i = 0, len = products.length; i < len; i++) {\n            product = products[i];\n            data = {\n                date: moment().format('YYYY-MM-DD'),\n                product: product['name'],\n                name:\n                    this.get('session.currentUser.firstname') +\n                    ' ' +\n                    this.get('session.currentUser.lastname'),\n                email: this.get('session.currentUser.email'),\n                phone: this.get('session.currentUser.phone'),\n                company: this.get('session.currentUser.company_info.company_name'),\n                businessid: this.get('session.currentUser.company_info.company_vatin'),\n                serviceid: this.get('session.currentUser.partnerid'),\n                userid: this.get('session.currentUser.id'),\n                lang: this.get('intl.primaryLocale'),\n                country: this.get('session.currentUser.company_info.country'),\n            };\n            results.push(\n                $.ajax({\n                    url: url,\n                    data: JSON.stringify({\n                        data: data,\n                    }),\n                    method: 'POST',\n                }),\n            );\n        }\n        return results;\n    },\n    actions: {\n        change: function (field, value) {\n            if (this.get('rfid_info.' + field)) {\n                this.set('rfid_info.' + field, value);\n            }\n            return this.set('errors.' + field, false);\n        },\n        click: function (object) {\n            var self;\n            self = this;\n            if (object.get('disabled')) {\n                return false;\n            }\n            if (object.get('selected')) {\n                this.get('dialogs')\n                    .confirm(this.get('intl').t('settings.confirm.remove_product'))\n                    .then(function (ret) {\n                        if (ret) {\n                            object.set('selected', false);\n                            return self.send('save');\n                        }\n                    });\n            } else {\n                object.toggleProperty('selected');\n                if (this.get('integrations').includes(object.name)) {\n                    this.set('showIntegrationModal', true);\n                    this.set('integrationName', object.name);\n                }\n                this.send('save');\n            }\n            return false;\n        },\n        moreInfo: function (link) {\n            return window.open(link, '_blank');\n        },\n        orderButton: function (product) {\n            return this.get('admintool')\n                .ajax({\n                    url: 'customer_info',\n                })\n                .then((c_info) => {\n                    this.set('rfid_info', {\n                        company_name: this.get('session.currentUser.company_info.company_name'),\n                        name:\n                            this.get('session.currentUser.firstname') +\n                            ' ' +\n                            this.get('session.currentUser.lastname'),\n                        phone: this.get('session.currentUser.phone'),\n                        email: this.get('session.currentUser.email'),\n                        delivery_street: c_info['street'],\n                        delivery_city: c_info['town'],\n                        delivery_zip: c_info['zip'],\n                        number_of_boxes: 1,\n                        vatin: c_info['vatin'],\n                        partnerid: c_info['partnerid'],\n                        country: c_info['country'],\n                        rental: product === 'famoco' ? 'famocobuy' : 'buy',\n                    });\n                    this.set('showRfidModal', product);\n                    return false;\n                });\n        },\n        closeModal: function () {\n            return this.set('showRfidModal', false);\n        },\n        saveRfidData: function () {\n            var address,\n                basicContent,\n                contentRow,\n                customer_address,\n                emailContent,\n                emailContentForCustomer,\n                field,\n                hasError,\n                i,\n                j,\n                len,\n                len1,\n                ref,\n                self,\n                type;\n            hasError = false;\n            ref = [\n                'number_of_boxes',\n                'delivery_street',\n                'delivery_city',\n                'delivery_zip',\n                'name',\n                'phone',\n                'email',\n            ];\n            for (i = 0, len = ref.length; i < len; i++) {\n                field = ref[i];\n                if (!this.get('rfid_info.' + field) || this.get('rfid_info.' + field) === '') {\n                    this.set('errors.' + field, true);\n                    hasError = true;\n                } else {\n                    this.set('errors.' + field, false);\n                }\n            }\n            if (!hasError) {\n                type = this.get('showRfidModal');\n                this.set('showRfidModal', false);\n                self = this;\n                emailContent = [];\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_company_name'),\n                    this.get('session.currentUser.partnerid') +\n                        ' ' +\n                        this.get('rfid_info.company_name'),\n                ]);\n                emailContent.push(['Product type:', type]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_number_of_boxes'),\n                    this.get('rfid_info.number_of_boxes'),\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_rental'),\n                    this.get('intl').t(\n                        'settings.products.order_modal.' + this.get('rfid_info.rental'),\n                    ),\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_number_of_tags'),\n                    this.get('rfid_info.number_of_tags') > 0\n                        ? this.get('rfid_info.number_of_tags')\n                        : 0,\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_delivery_street'),\n                    this.get('rfid_info.delivery_street'),\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_delivery_city'),\n                    this.get('rfid_info.delivery_city'),\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_delivery_zip'),\n                    this.get('rfid_info.delivery_zip'),\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_name'),\n                    this.get('rfid_info.name'),\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_phone'),\n                    this.get('rfid_info.phone'),\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_email'),\n                    this.get('rfid_info.email'),\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_vatin'),\n                    this.get('rfid_info.vatin'),\n                ]);\n                emailContent.push([\n                    this.get('intl').t('settings.products.rfid_partnerid'),\n                    this.get('rfid_info.partnerid'),\n                ]);\n                if (this.get('rfid_info.order_ref')) {\n                    emailContent.push([\n                        this.get('intl').t('settings.products.rfid_order_ref'),\n                        this.get('rfid_info.order_ref'),\n                    ]);\n                }\n                //emailContent = \"<hr><br/><center>\"+\"<table>\"\n                //emailContent += \"<tr><td>\"+@get('intl').t('settings.products.rfid_company_name')+\":</td><td> \"+@get('session.currentUser.partnerid')+\" \"+@get('rfid_info.company_name')+\"</td></tr>\"\n                //emailContent += \"<tr><td>\"+\"Product type:</td><td> \"+type+\"</td></tr>\"\n                //emailContent += \"<tr><td>\"+@get('intl').t('settings.products.rfid_number_of_boxes')+\":</td><td> \"+@get('rfid_info.number_of_boxes')+\"</td></tr>\"\n                //emailContent += \"<tr><td>\"++\"</td></tr>\"\n                //emailContent += \"<tr><td>\"+</td></tr>\"\n                //emailContent += \"<tr><td>\"+@get('intl').t('settings.products.rfid_delivery_street')+\":</td><td> \"+@get('rfid_info.delivery_street')+\"</td></tr>\"\n                //emailContent += \"<tr><td>\"++\"</td></tr>\"\n                //emailContent += \"<tr><td>\"++\"</td></tr>\"\n                //emailContent += \"<tr><td>\"++\"</td></tr>\"\n                //emailContent += \"<tr><td>\"++\"</td></tr>\"\n                //emailContent += \"<tr><td>\"++\"</td></tr>\"\n                //emailContent += \"<tr><td>\"++\"</td></tr>\"\n                //emailContent += \"<tr><td>\"++\"</td></tr>\"\n                // why was this here and below also? Should this be only inside if?\n                // emailContent += @get('intl').t('settings.products.order_ref')+\": \"+@get('rfid_info.order_ref')+\"<br>\"\n                //emailContent += \"<tr><td>\"++\"</td></tr>\"\n                //if @get('rfid_info.order_ref')\n                //    emailContent += \"<tr><td>\"++\"</td></tr>\"\n\n                //emailContent += \"</table></center>\"\n                address = 'customerservice_fi';\n                if (this.get('rfid_info.country') === 'se') {\n                    address = 'customerservice_se';\n                }\n                // send this information also to customer (in html-format)\n                if (\n                    this.get('rfid_info.email') !==\n                        this.get('session.currentUser.company_info.company_email') &&\n                    this.get('session.currentUser.company_info.company_email')\n                ) {\n                    customer_address = [];\n                    customer_address.push(this.get('rfid_info.email'));\n                    customer_address.push(\n                        this.get('session.currentUser.company_info.company_email'),\n                    );\n                } else {\n                    customer_address = this.get('rfid_info.email');\n                }\n                basicContent = '\\r\\n';\n                for (j = 0, len1 = emailContent.length; j < len1; j++) {\n                    contentRow = emailContent[j];\n                    //console.log contentRow\n                    basicContent += contentRow[0] + ': ' + contentRow[1] + '\\r\\n';\n                }\n                emailContentForCustomer =\n                    this.get('intl').t('settings.products.rfid_order_received') +\n                    '\\r\\n' +\n                    basicContent;\n                this.Collector.ttapi({\n                    url: 'sendEmail',\n                    data: {\n                        email: address,\n                        title:\n                            self.get('session.currentUser.company') +\n                            ' - ' +\n                            self.get('intl').t('register.products.rfid_info'),\n                        content: basicContent,\n                    },\n                    method: 'post',\n                });\n                return this.Collector.ttapi({\n                    url: 'sendEmail',\n                    data: {\n                        email: customer_address,\n                        title: this.get('intl')\n                            .t('settings.products.rfid_order_received_header')\n                            .toString(),\n                        content: emailContentForCustomer,\n                    },\n                    method: 'post',\n                });\n            }\n        },\n        selectLevel: function (level) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('settings.products.confirm.upgrade'))\n                .then((con) => {\n                    var needs, promises;\n                    if (con) {\n                        needs = [];\n                        this.get('levels').forEach(function (item) {\n                            if (item.name === level.name) {\n                                return needs.push('products.' + level.name);\n                            } else {\n                                return needs.push('!products.' + item.name);\n                            }\n                        });\n                        promises = this.get('Collector').setProducts(needs);\n                        return Em.RSVP.Promise.all(promises).then(() => {\n                            return location.reload();\n                        });\n                    }\n                });\n        },\n        save: function () {\n            var c,\n                i,\n                len,\n                needs,\n                post_add_actions,\n                product,\n                products,\n                promises,\n                selectedProducts,\n                self,\n                some_old_xml_products,\n                type;\n            self = this;\n            products = this.get('products');\n            some_old_xml_products = false;\n            selectedProducts = products.filterBy('selected');\n            // check if user has some old xml-products\n            // if has, then it is ok to remove all products added from tt4\n            if (\n                selectedProducts.get('length') === 0 &&\n                this.get('Collector').testNeedsOne('products.generic_timetracker') === false\n            ) {\n                this.get('dialogs').alert(\n                    this.get('intl').t('settings.products.no_products_selected'),\n                );\n                return;\n            }\n            this.get('settings').refreshNeeded();\n            c = this.get('Collector');\n            needs = [];\n            post_add_actions = [];\n            for (i = 0, len = products.length; i < len; i++) {\n                product = products[i];\n                if (product.get('selected')) {\n                    if (\n                        !c.productExists('products.' + product.get('name')) &&\n                        typeof this['adding_' + product.get('name')] === 'function'\n                    ) {\n                        post_add_actions.push(product.get('name'));\n                    }\n                    if (\n                        !c.productExists('products.' + product.get('name')) &&\n                        (product.get('name') === 'rfid' || product.get('name') === 'famoco')\n                    ) {\n                        type = product.get('name');\n                        this.get('admintool')\n                            .ajax({\n                                url: 'customer_info',\n                            })\n                            .then((c_info) => {\n                                this.set('rfid_info', {\n                                    company_name: this.get(\n                                        'session.currentUser.company_info.company_name',\n                                    ),\n                                    name:\n                                        this.get('session.currentUser.firstname') +\n                                        ' ' +\n                                        this.get('session.currentUser.lastname'),\n                                    phone: this.get('session.currentUser.phone'),\n                                    email: this.get('session.currentUser.email'),\n                                    delivery_street: c_info['street'],\n                                    delivery_city: c_info['town'],\n                                    delivery_zip: c_info['zip'],\n                                    number_of_boxes: 1,\n                                    vatin: c_info['vatin'],\n                                    partnerid: c_info['partnerid'],\n                                    country: c_info['country'],\n                                });\n                                return self.set('showRfidModal', type);\n                            });\n                    }\n                    needs.push('products.' + product.get('name'));\n                } else {\n                    needs.push('!products.' + product.get('name'));\n                }\n            }\n            this.sendInfoToCustomerService(products);\n            this.updateExternal(products);\n            promises = c.setProducts(needs);\n            return Em.RSVP.Promise.all(promises).then((data) => {\n                this.get('notifications').success(\n                    this.get('intl').t('settings.products.productsSaved'),\n                    {\n                        autoClear: true,\n                    },\n                );\n                // Get new /forms and update models\n                return this.get('modelCreator')\n                    .createEmberModels()\n                    .then(() => {\n                        // check if we need to do some post-adding stuff\n                        post_add_actions.forEach((action) => {\n                            if (c.productExists('products.' + action)) {\n                                return this['adding_' + action]();\n                            }\n                        });\n                        this.toggleProperty('application.refreshMenus');\n                        return this.get('application').notifyPropertyChange('subMenus');\n                    });\n            });\n        },\n        infoButton: function (product) {\n            this.set('showIntegrationModal', true);\n            return this.set('integrationName', product);\n        },\n    },\n});\n\nexport default SettingsProductsController;\n","import Component from '@glimmer/component';\nimport podNames from 'ember-component-css/pod-names';\nimport { inject as service } from '@ember/service';\n\nexport default class DisabledComponent extends Component {\n    @service('collector-service') collector;\n\n    constructor() {\n        super(...arguments);\n        this.errors = [];\n        for (let need of this.args.needs) {\n            if (!this.collector.testNeeds([need.key])) {\n                this.errors.push(need.text);\n            }\n        }\n    }\n    get styleNamespace() {\n        return podNames['settings/products/disabled'];\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"bSwBs5n0\",\"block\":\"{\\\"symbols\\\":[\\\"error\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[23,0,[\\\"styleNamespace\\\"]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"move move-Info disabled-icon\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"ember-popover\\\",[],[[\\\"@delay\\\",\\\"@tooltipClass\\\",\\\"@side\\\"],[\\\"400\\\",\\\"help-tooltip\\\",\\\"right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"setting-needs-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"products.needs_more\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"setting-needs-values\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,0,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[[23,1,[]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/products/disabled/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/products/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsProductsRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSettingsProductsRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    beforeModel: function (transition) {\n        if (this.get('Collector').testNeedsOne('products.mini_entry')) {\n            transition.abort();\n            return this.transitionTo('dashboard');\n        }\n    },\n});\n\nexport default SettingsProductsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"koMHVxbD\",\"block\":\"{\\\"symbols\\\":[\\\"product\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"settings.products.title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"promo-component\\\",null,[[\\\"start\\\",\\\"end\\\"],[\\\"2016-11-23\\\",\\\"2016-11-27\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"promomessage.current_header\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"promomessage.current_text\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row product_card_row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"products\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"class\\\"],[\\\"loading-icon\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"products\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"col-xs-12 col-sm-6 col-md-4 \\\",[28,\\\"if\\\",[[23,1,[\\\"disabled_and_selected\\\"]],\\\"product_card_holder_disabled\\\",\\\"product_card_holder\\\"],null],\\\" \\\"]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"product_card \\\",[28,\\\"if\\\",[[23,1,[\\\"selected\\\"]],\\\"selected\\\"],null],\\\" \\\",[28,\\\"if\\\",[[23,1,[\\\"disabled_and_selected\\\"]],\\\"selected\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-1\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"icon\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move \\\",[23,1,[\\\"icon\\\"]],\\\" right-menu menu-icon\\\"]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"h3\\\",true],[8],[1,[23,1,[\\\"header\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-7 col-md-6\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"texts\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"purify-dom\\\",[[23,1,[\\\"text\\\"]]],null],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-sm-5 col-md-6 product_image\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"image\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"img\\\",true],[11,\\\"src\\\",[29,[[23,1,[\\\"image\\\"]]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"serviceCountry@fi\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"price\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"price_text\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"price_container\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"p\\\",true],[8],[1,[23,1,[\\\"price_text\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"not-eq\\\",[[23,1,[\\\"price\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"currency\\\",[[23,1,[\\\"price\\\"]],[23,1,[\\\"currency\\\"]]],null],false],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"price_type\\\"],[8],[1,[23,1,[\\\"pricetype_text\\\"]],false],[9],[0,\\\"\\\\n                                \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,1,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"select_container\\\"],[8],[0,\\\"\\\\n                            \\\"],[5,\\\"settings/products/disabled\\\",[],[[\\\"@needs\\\"],[[23,1,[\\\"disabled\\\"]]]]],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"disabled_and_selected\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"select_container\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"checkbox \\\",[28,\\\"if\\\",[[23,1,[\\\"selected\\\"]],\\\"checked\\\"],null]]]],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"selected\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.product_selected\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"select_container\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"click\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"checkbox \\\",[28,\\\"if\\\",[[23,1,[\\\"selected\\\"]],\\\"checked\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"selected\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"selected\\\"],[8],[1,[28,\\\"if\\\",[[23,1,[\\\"selected\\\"]],[28,\\\"t\\\",[\\\"register.product_selected\\\"],null],[28,\\\"t\\\",[\\\"register.select_product\\\"],null]],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"isSweService\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"in-array\\\",[[23,1,[\\\"name\\\"]],[24,[\\\"orderButtonArray\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"selected\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"select-container order-button pull-right\\\"],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"orderButton\\\",[23,1,[\\\"name\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"settings.products.order\\\"],null],false],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"and\\\",[[23,1,[\\\"selected\\\"]],[28,\\\"in-array\\\",[[23,1,[\\\"name\\\"]],[24,[\\\"integrations\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"select-container order-button pull-right\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"infoButton\\\",[23,1,[\\\"name\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"settings.products.integration_info_button\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"integration-info-popup\\\",null,[[\\\"product\\\",\\\"triggerShowModal\\\"],[[24,[\\\"integrationName\\\"]],[24,[\\\"showIntegrationModal\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,1,[\\\"link\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"info-button\\\"],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Info\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moreInfo\\\",[23,1,[\\\"link\\\"]]]],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRfidModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"rfid_modal_title\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_company_name\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\",\\\"autocapitalize\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"rfid_info\\\",\\\"company_name\\\"]],[24,[\\\"disabled\\\"]],\\\"off\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_number_of_boxes\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"number_of_boxes\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocapitalize\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"rfid_info\\\",\\\"number_of_boxes\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"number_of_boxes\\\",[24,[\\\"rfid_info\\\",\\\"number_of_boxes\\\"]]],null],\\\"off\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showRfidModal\\\"]],\\\"famoco\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_number_of_tags\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocapitalize\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"rfid_info\\\",\\\"number_of_tags\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"number_of_tags\\\",[24,[\\\"rfid_info\\\",\\\"number_of_tags\\\"]]],null],\\\"off\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showRfidModal\\\"]],\\\"rfid\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_rental\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showRfidModal\\\"]],\\\"famoco\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"settings.products.famoco_rental\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showRfidModal\\\"]],\\\"rfid\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\"],[\\\"form-control add-fields\\\",[24,[\\\"buyrent_options_rfid\\\"]],[24,[\\\"rfid_info\\\",\\\"rental\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\"],[\\\"form-control add-fields\\\",[24,[\\\"buyrent_options_famoco\\\"]],[24,[\\\"rfid_info\\\",\\\"rental\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[2,\\\" address-info \\\"],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_delivery_street\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"delivery_street\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocapitalize\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"rfid_info\\\",\\\"delivery_street\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"delivery_street\\\",[24,[\\\"rfid_info\\\",\\\"delivery_street\\\"]]],null],\\\"off\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_delivery_city\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"delivery_city\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocapitalize\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"rfid_info\\\",\\\"delivery_city\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"delivery_city\\\",[24,[\\\"rfid_info\\\",\\\"delivery_city\\\"]]],null],\\\"off\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_delivery_zip\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"delivery_zip\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocapitalize\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"rfid_info\\\",\\\"delivery_zip\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"delivery_zip\\\",[24,[\\\"rfid_info\\\",\\\"delivery_zip\\\"]]],null],\\\"off\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[2,\\\" /address-info \\\"],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_name\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocapitalize\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"rfid_info\\\",\\\"name\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"name\\\",[24,[\\\"rfid_info\\\",\\\"name\\\"]]],null],\\\"off\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_phone\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"phone\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocapitalize\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"rfid_info\\\",\\\"phone\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"phone\\\",[24,[\\\"rfid_info\\\",\\\"phone\\\"]]],null],\\\"off\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"settings.products.rfid_email\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"email\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"key-up\\\",\\\"autocapitalize\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",\\\"field\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"rfid_info\\\",\\\"email\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"email\\\",[24,[\\\"rfid_info\\\",\\\"email\\\"]]],null],\\\"off\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveRfidData\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/products/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/settings/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SettingsRoute,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSettingsRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    Collector: Em.inject.service('collector-service'),\n    settings: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    intl: Em.inject.service(),\n    initapp: Em.inject.service(),\n    flags: Ember.inject.service(),\n    transitionToRightPage: function () {\n        return this.transitionTo('settings.general-v2');\n    },\n    beforeModel: function (transition) {\n        var target_arr;\n        target_arr = transition.targetName.split('.');\n        if (target_arr[0] === 'settings' && !this.get('Collector').testNeedsOne('userlevel=5')) {\n            transition.abort();\n            return this.transitionTo('my-sites.index');\n        } else if (target_arr[0] === 'settings' && target_arr[1] && target_arr[1] !== 'index') {\n        } else {\n            return this.transitionToRightPage();\n        }\n    },\n    actions: {\n        willTransition: function (transition) {\n            var force_refresh, ref;\n            force_refresh = ['salary.salarytypes'];\n            if (\n                transition.targetName.substring(0, 8) !== 'settings' ||\n                ((ref = transition.targetName), indexOf.call(force_refresh, ref) >= 0)\n            ) {\n                return transition.finally(() => {\n                    if (\n                        this.controller.get('_refreshNeeded') ||\n                        this.get('settings').refreshNeeded()\n                    ) {\n                        this.get('initapp').clearInit();\n                        return this.get('dialogs')\n                            .alert(this.get('intl').t('general.settings_refresh_needed'))\n                            .then(function () {\n                                return location.reload();\n                            });\n                    }\n                });\n            } else if (transition.targetName === 'settings.index') {\n                return this.transitionToRightPage();\n            }\n        },\n    },\n});\n\nexport default SettingsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Z+qVvSHK\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/settings/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"u84qli3r\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.shift_planning\\\",\\\"userlevel=5,3,6\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"react\\\",[],[[\\\"@comp\\\"],[\\\"ShiftPlanningViewV2\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/shift-planning/gantt/template.hbs\"}});","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { action } from '@ember/object';\n\nexport default class resourcePlanningRoute extends Route {\n    @service('collector-service') Collector;\n    @service router;\n\n    beforeModel(transition) {\n        this.transitionToRightPage(transition);\n    }\n\n    transitionToRightPage(transition) {\n        if (\n            transition.targetName === 'shift-planning.gantt' &&\n            this.Collector.testNeeds(['!userfieldcheck.resourcePlanner'])\n        ) {\n            this.router.transitionTo('shift-planning.week');\n        }\n    }\n\n    @action\n    willTransition(transition) {\n        this.transitionToRightPage(transition);\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"Snec2m5U\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"react\\\",[],[[\\\"@comp\\\"],[\\\"MobileView\\\"]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/shift-planning/week/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/addnotice/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyAddNoticeIndexController;\n\nimport Ember from 'ember';\n\nSiteSafetyAddNoticeIndexController = Ember.Controller.extend();\n\nexport default SiteSafetyAddNoticeIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/addnotice/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyAddNoticeIndexRoute;\n\nimport Ember from 'ember';\n\nSiteSafetyAddNoticeIndexRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    beforeModel: function () {\n        var c;\n        c = this.get('Collector');\n        if (c.testNeedsOne('tr@add') && !c.testNeedsOne('mvr@add')) {\n            this.transitionTo('site_safety.addnotice.tr');\n        }\n        if (c.testNeedsOne('mvr@add') && !c.testNeedsOne('tr@add')) {\n            this.transitionTo('site_safety.addnotice.mvr');\n        }\n        if (!c.testNeedsOne('tr') && c.testNeedsOne('mvr')) {\n            this.transitionTo('site_safety.addnotice.mvr');\n        }\n        if (!c.testNeedsOne('mvr') && c.testNeedsOne('tr')) {\n            return this.transitionTo('site_safety.addnotice.tr');\n        }\n    },\n});\n\nexport default SiteSafetyAddNoticeIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"YB4kluSQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"site_safety.addnotice.tr\\\"]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Length\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.add_notice.tr\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"site_safety.addnotice.mvr\\\"]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Humidity\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.add_notice.mvr\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/addnotice/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/addnotice/mvr/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyAddnoticeMvrController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nSiteSafetyAddnoticeMvrController = GeneralAddController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    intl: Em.inject.service(),\n    customization: {\n        type: {\n            hide: true,\n            features: {\n                default_value: 'tr',\n            },\n        },\n        date: {\n            translation: 'site_safety.notice.fixdate',\n            features: {\n                default_value: moment().add(3, 'days').format('YYYY-MM-DD'),\n            },\n        },\n        user: {\n            translation: 'site_safety.notice.person',\n        },\n        email: {\n            translation: 'site_safety.notice.send_email',\n        },\n    },\n    actions: {\n        save: function () {\n            var record;\n            record = this.get('model');\n            return record.validate().then(() => {\n                var email, projectString, userString;\n                if (!record.get('isValid')) {\n                    this.set('submitted', true);\n                    this.set('spinIsLoading', false);\n                    return;\n                }\n                if (record.get('email')) {\n                    userString = '';\n                    if (this.get('session.currentUser.firstname')) {\n                        userString += this.get('session.currentUser.firstname') + ' ';\n                    }\n                    if (this.get('session.currentUser.lastname')) {\n                        userString += this.get('session.currentUser.lastname') + '\\n';\n                    }\n                    if (this.get('session.currentUser.email')) {\n                        userString += this.get('session.currentUser.email') + '\\n';\n                    }\n                    if (this.get('session.currentUser.phone')) {\n                        userString += this.get('session.currentUser.phone') + '\\n';\n                    }\n                    projectString = '';\n                    if (record.get('project.number')) {\n                        projectString += record.get('project.number') + ' ';\n                    }\n                    projectString += record.get('project.name');\n                    email = {\n                        email: record.get('email'),\n                        title:\n                            this.get('session.currentUser.company') +\n                            ' - ' +\n                            this.get('intl').t('site_safety.notice.email_content.title'),\n                        lang: this.get('intl.primaryLocale'),\n                        content:\n                            this.get('intl').t('site_safety.notice.email_content.content') +\n                            '\\n' +\n                            this.get('intl').t('site_safety.notice.project') +\n                            ': ' +\n                            projectString +\n                            '\\n' +\n                            this.get('intl').t('site_safety.notice.desc') +\n                            ': ' +\n                            record.get('desc') +\n                            '\\n' +\n                            this.get('intl').t('site_safety.notice.noticedesc') +\n                            ': ' +\n                            record.get('noticedesc') +\n                            '\\n' +\n                            this.get('intl').t('site_safety.notice.person') +\n                            ': ' +\n                            record.get('user.firstname') +\n                            ' ' +\n                            record.get('user.lastname') +\n                            '\\n' +\n                            this.get('intl').t('site_safety.notice.fixdate') +\n                            ': ' +\n                            moment(record.get('date')).format('L') +\n                            '\\n\\n' +\n                            userString,\n                    };\n                    if (record.get('pic')) {\n                        email.pic = {\n                            name: record.get('pic').name,\n                            data: record.get('pic').data,\n                        };\n                    }\n                    record.set('email_content', email);\n                }\n                record.set('creator', this.get('session.currentUser'));\n                record.set('type', 'mvr');\n                return record\n                    .save()\n                    .then(() => {\n                        return this.transitionToRoute('site_safety.report.mvr.notices');\n                    })\n                    .catch((back) => {\n                        this.set('submitted', true);\n                        this.set('spinIsLoading', false);\n                        return this.set('validationMessageData', back.errors);\n                    });\n            });\n        },\n    },\n});\n\nexport default SiteSafetyAddnoticeMvrController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/addnotice/mvr/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyAddnoticeTrRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nSiteSafetyAddnoticeTrRoute = GeneralAddRoute.extend({\n    modelName: 'trnotice',\n    controllerName: 'site_safety.addnotice.mvr',\n    savedRoute: 'site_safety.report.mvr.notices',\n});\n\nexport default SiteSafetyAddnoticeTrRoute;\n","export default Ember.HTMLBars.template({\"id\":\"mqs4xVed\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/addnotice/mvr/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"s1DzPTj7\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/addnotice/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/addnotice/tr/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyAddnoticeTrController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nSiteSafetyAddnoticeTrController = GeneralAddController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    intl: Em.inject.service(),\n    customization: {\n        type: {\n            hide: true,\n            features: {\n                default_value: 'tr',\n            },\n        },\n        date: {\n            translation: 'site_safety.notice.fixdate',\n            features: {\n                default_value: moment().add(3, 'days').format('YYYY-MM-DD'),\n            },\n        },\n        email: {\n            translation: 'site_safety.notice.send_email',\n        },\n    },\n    actions: {\n        save: function () {\n            var record;\n            record = this.get('model');\n            return record.validate().then(() => {\n                var email, projectString, userString;\n                if (!record.get('isValid')) {\n                    this.set('submitted', true);\n                    this.set('spinIsLoading', false);\n                    return;\n                }\n                //if record.get('email')\n                userString = '';\n                if (this.get('session.currentUser.firstname')) {\n                    userString += this.get('session.currentUser.firstname') + ' ';\n                }\n                if (this.get('session.currentUser.lastname')) {\n                    userString += this.get('session.currentUser.lastname') + '\\n';\n                }\n                if (this.get('session.currentUser.email')) {\n                    userString += this.get('session.currentUser.email') + '\\n';\n                }\n                if (this.get('session.currentUser.phone')) {\n                    userString += this.get('session.currentUser.phone') + '\\n';\n                }\n                projectString = '';\n                if (record.get('project.number')) {\n                    projectString += record.get('project.number') + ' ';\n                }\n                projectString += record.get('project.name');\n                email = {\n                    email: record.get('email'),\n                    title:\n                        this.get('session.currentUser.company') +\n                        ' - ' +\n                        this.get('intl').t('site_safety.notice.email_content.title'),\n                    lang: this.get('intl.primaryLocale'),\n                    content:\n                        this.get('intl').t('site_safety.notice.email_content.content') +\n                        '\\n' +\n                        this.get('intl').t('site_safety.notice.project') +\n                        ': ' +\n                        projectString +\n                        '\\n' +\n                        this.get('intl').t('site_safety.notice.desc') +\n                        ': ' +\n                        record.get('desc') +\n                        '\\n' +\n                        this.get('intl').t('site_safety.notice.noticedesc') +\n                        ': ' +\n                        record.get('noticedesc') +\n                        '\\n' +\n                        this.get('intl').t('site_safety.notice.person') +\n                        ': ' +\n                        record.get('user.firstname') +\n                        ' ' +\n                        record.get('user.lastname') +\n                        '\\n' +\n                        this.get('intl').t('site_safety.notice.fixdate') +\n                        ': ' +\n                        moment(record.get('date')).format('L') +\n                        '\\n\\n' +\n                        userString,\n                };\n                if (record.get('pic')) {\n                    email.pic = {\n                        name: record.get('pic').name,\n                        data: record.get('pic').data,\n                    };\n                }\n                record.set('email_content', email);\n                record.set('creator', this.get('session.currentUser'));\n                return record\n                    .save()\n                    .then(() => {\n                        return this.transitionToRoute('site_safety.report.tr.notices');\n                    })\n                    .catch((back) => {\n                        this.set('submitted', true);\n                        this.set('spinIsLoading', false);\n                        return this.set('validationMessageData', back.errors);\n                    });\n            });\n        },\n    },\n});\n\nexport default SiteSafetyAddnoticeTrController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/addnotice/tr/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyAddnoticeTrRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nSiteSafetyAddnoticeTrRoute = GeneralAddRoute.extend({\n    modelName: 'trnotice',\n    controllerName: 'site_safety.addnotice.tr',\n    savedRoute: 'site_safety.report.tr.notices',\n});\n\nexport default SiteSafetyAddnoticeTrRoute;\n","export default Ember.HTMLBars.template({\"id\":\"RkW9aWfO\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/addnotice/tr/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyController;\n\nimport Ember from 'ember';\n\nSiteSafetyController = Ember.Controller.extend();\n\nexport default SiteSafetyController;\n","export default Ember.HTMLBars.template({\"id\":\"XahcgWn7\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/loading/template.hbs\"}});","import Controller from '@ember/controller';\nimport { computed, set, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { Promise as EmberPromise } from 'rsvp';\nimport PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\nimport ObjectProxy from '@ember/object/proxy';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    store: service(),\n    collector: service('collector-service'),\n    addMeasurement: alias('model'),\n    project_obj: computed('model', function () {\n        if (get(this, 'collector').fieldExists(get(this, 'model'), 'project')) {\n            return get(this, 'model') + '.project';\n        }\n        return 'measurement_' + get(this, 'model') + '.project';\n    }),\n    oldMeasurement: computed('project', function () {\n        let measurementName = get(this, 'model');\n        if (!get(this, 'collector').fieldExists(get(this, 'model'), 'project')) {\n            measurementName = 'measurement_' + get(this, 'model');\n        }\n        return ObjectProxy.extend(PromiseProxyMixin).create({\n            //eslint-disable-line\n            promise: new EmberPromise((resolve) => {\n                get(this, 'store')\n                    .query(measurementName, {\n                        date: moment().format('YYYY-MM-DD'),\n                        project: get(this, 'project.id'),\n                    })\n                    .then((measurements) => this._resolveMeasurement(measurements, resolve));\n            }),\n        });\n    }),\n    actions: {\n        projectChanged(project) {\n            set(this, 'project', project);\n        },\n    },\n\n    _resolveMeasurement(measurements, resolve) {\n        if (get(measurements, 'firstObject')) {\n            resolve({ id: get(measurements, 'firstObject').id });\n        } else {\n            resolve();\n        }\n    },\n});\n","import Route from '@ember/routing/route';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Route.extend({\n    session: service(),\n    model() {\n        return this.modelFor('site-safety.measurement.add');\n    },\n    setupController(controller) {\n        this._super(...arguments);\n        if (get(this, 'session.currentUser.currentMySite')) {\n            set(controller, 'project', get(this, 'session.currentUser.currentMySite'));\n        }\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"KoXIG/dQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-md-6 col-lg-4 col-lg-offset-4 col-md-offset-3 col-sm-offset-2\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.site\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"project_obj\\\"]]],[[\\\"_class\\\",\\\"change\\\",\\\"value\\\"],[\\\"form-control input-lg\\\",\\\"projectChanged\\\",[24,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"oldMeasurement\\\",\\\"isFulfilled\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"oldMeasurement\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\\\"],[8],[0,\\\"\\\\n                    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"models\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"site_safety.measurement.add.measurement\\\",[28,\\\"array\\\",[[24,[\\\"oldMeasurement\\\",\\\"id\\\"]],[24,[\\\"model\\\"]],[24,[\\\"project\\\",\\\"id\\\"]]],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"tr.site.goto_oldmeasurement\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-8 col-sm-offset-2 col-md-6 col-md-offset-3 col-lg-4 col-lg-offset-4\\\"],[8],[0,\\\"\\\\n                \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"models\\\"],[[28,\\\"concat\\\",[\\\"btn btn-block btn-lg\\\",\\\" \\\",[28,\\\"if\\\",[[24,[\\\"oldMeasurement\\\"]],\\\"btn-default\\\",\\\"btn-primary\\\"],null],\\\" \\\"],null],\\\"site_safety.measurement.add.measurement\\\",[28,\\\"array\\\",[[24,[\\\"model\\\"]],[24,[\\\"project\\\",\\\"id\\\"]]],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"tr.site.goto_measurement\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/add/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/add/measurement/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrAddMeasurementController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../../classes/collector';\n\nimport RSVP from 'rsvp';\n\nSiteSafetyTrAddMeasurementController = Ember.Controller.extend({\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    applicationController: Ember.inject.controller('application'),\n    saved: Ember.inject.controller('site-safety/saved'),\n    measurementController: Ember.inject.controller('site-safety/measurement'),\n    session: Em.inject.service(),\n    dialogs: Ember.inject.service(),\n    intl: Em.inject.service(),\n    plus: 0,\n    minus: 0,\n    savedNotices: [],\n    disableAutosave: false,\n    saveText: Ember.computed(function () {\n        return (\n            '<span class=\"glyphicon glyphicon-floppy-disk\"></span> ' +\n            this.get('intl').t('measurement.save')\n        );\n    }),\n    //    measurementController: Ember.computed.alias 'controllers.site-safety/measurement'\n    init: function () {\n        this._super(...arguments);\n        return document.addEventListener(\n            'deviceready',\n            () => {\n                document.addEventListener(\n                    'pause',\n                    () => {\n                        return this.eventListener('pause');\n                    },\n                    false,\n                );\n                return document.addEventListener(\n                    'resume',\n                    () => {\n                        return this.eventListener('resume');\n                    },\n                    false,\n                );\n            },\n            false,\n        );\n    },\n    eventListener: function (event) {\n        if (event === 'pause') {\n            return this.set('disableAutosave', true);\n        } else if (event === 'resume') {\n            this.set('disableAutosave', false);\n            return this.autosave();\n        }\n    },\n    fields: Em.computed('model.form', function () {\n        var fields, form, mc, self;\n        self = this;\n        mc = this.get('measurementController');\n        form = this.get('model.form');\n        fields = mc.parseFields(form);\n        fields.forEach(function (item) {\n            item.notices = Em.A([]);\n            self.addObserver('model.record.' + item.ext + '_plus', self, 'recalculateTotal');\n            return self.addObserver(\n                'model.record.' + item.ext + '_minus',\n                self,\n                'recalculateTotal',\n            );\n        });\n        Ember.run.later(() => {\n            return self.recalculateTotal();\n        }, 1);\n        return fields;\n    }),\n    signatureFields: Ember.computed('model.form', function () {\n        return this.get('Collector')\n            .fieldArray(this.get('model.form'))\n            .filter((field) => {\n                return field.type === 'signature' || field.name.slice(-4) === 'sign';\n            });\n    }),\n    extrafields: Em.computed(function () {\n        var field, fieldname, fields, form, return_fields, skip_these;\n        form = this.get('model.form');\n        fields = this.Collector.fields(form);\n        return_fields = [];\n        skip_these = ['date', 'project', 'user', 'tr_rating', 'mvr_rating'].concat(\n            this.get('signatureFields').mapBy('name'),\n        );\n        for (fieldname in fields) {\n            field = fields[fieldname];\n            if (\n                !(indexOf.call(skip_these, fieldname) >= 0) &&\n                fieldname.indexOf('_plus') < 0 &&\n                fieldname.indexOf('_notice') < 0 &&\n                fieldname.indexOf('_minus') < 0\n            ) {\n                if (!Ember.get(field, 'features.hide')) {\n                    return_fields.push(fieldname);\n                }\n            }\n        }\n        return return_fields;\n    }),\n    textClass: Em.computed('model.record.mvr_rating', 'model.record.tr_rating', function () {\n        if (this.get('model.record.' + this.get('model.form') + '_rating') >= 95) {\n            return 'alert-success';\n        } else if (this.get('model.record.' + this.get('model.form') + '_rating') >= 90) {\n            return 'alert-warning';\n        } else {\n            return 'alert-danger';\n        }\n    }),\n    /*\n  ratingClass: (->\n      if @get('model.record.tr_rating') >= 95\n          @set('textClass', \"alert-success\")\n      else if @get('model.record.tr_rating') >= 90\n          @set('textClass', \"alert-warning\")\n      else\n          @set('textClass', \"alert-danger\")\n  ).observes('model.record.tr_rating')\n\n  */\n    // observers are added in 'fields' property\n    recalculateTotal: function () {\n        var arr, i, item, len, m, mval, p, pval, rating, self;\n        self = this;\n        arr = this.get('fields');\n        pval = 0;\n        mval = 0;\n        rating = 0;\n        for (i = 0, len = arr.length; i < len; i++) {\n            item = arr[i];\n            p = self.get('model.record.' + item.ext + '_plus');\n            m = self.get('model.record.' + item.ext + '_minus');\n            if (p !== null && !isNaN(p) && p !== '') {\n                pval += parseInt(p, 10);\n            }\n            if (m !== null && !isNaN(m) && m !== '') {\n                mval += parseInt(m, 10);\n            }\n        }\n        if (pval !== 0 || mval !== 0) {\n            rating = ((pval / (pval + mval)) * 100).toFixed(2);\n        }\n        if (this.get('model.form') === 'mvr') {\n            this.set('model.record.mvr_rating', rating);\n        } else {\n            this.set('model.record.tr_rating', rating);\n        }\n        this.set('plus', pval);\n        return this.set('minus', mval);\n    },\n    saveNotice: function (notice) {\n        var email, projectString, promise, record, self, userString;\n        record = notice;\n        //if !@get('error')\n        self = this;\n        userString = '';\n        if (this.get('session.currentUser.firstname')) {\n            userString += this.get('session.currentUser.firstname') + ' ';\n        }\n        if (this.get('session.currentUser.lastname')) {\n            userString += this.get('session.currentUser.lastname') + '\\n';\n        }\n        if (this.get('session.currentUser.email')) {\n            userString += this.get('session.currentUser.email') + '\\n';\n        }\n        if (this.get('session.currentUser.phone')) {\n            userString += this.get('session.currentUser.phone') + '\\n';\n        }\n        projectString = '';\n        if (record.get('project.number')) {\n            projectString += record.get('project.number') + ' ';\n        }\n        projectString += record.get('project.name');\n        email = {\n            title:\n                this.get('session.currentUser.company') +\n                ' - ' +\n                this.get('intl').t('site_safety.notice.email_content.title'),\n            content:\n                this.get('intl').t('site_safety.notice.email_content.content') +\n                '\\n' +\n                this.get('intl').t('site_safety.notice.project') +\n                ': ' +\n                projectString +\n                '\\n' +\n                this.get('intl').t('site_safety.notice.place') +\n                ': ' +\n                record.get('place') +\n                '\\n' +\n                this.get('intl').t('site_safety.notice.desc') +\n                ': ' +\n                record.get('desc') +\n                '\\n' +\n                this.get('intl').t('site_safety.notice.noticedesc') +\n                ': ' +\n                record.get('noticedesc') +\n                '\\n' +\n                this.get('intl').t('site_safety.notice.person') +\n                ': ' +\n                record.get('user.firstname') +\n                ' ' +\n                record.get('user.lastname') +\n                '\\n' +\n                this.get('intl').t('site_safety.notice.fixdate') +\n                ': ' +\n                moment(record.get('date')).format('L') +\n                '\\n\\n' +\n                userString,\n        };\n        if (record.get('pic') && record.get('pic').length > 0) {\n            email.pic = {\n                name: record.get('pic')[0].name,\n                data: record.get('pic')[0].data,\n            };\n        }\n        record.set('email_content', email);\n        record.set('project', this.get('model.record.project'));\n        record.set('type', this.get('model.record.constructor.modelName'));\n        record.set('creator', this.get('session.currentUser'));\n        promise = record.save();\n        promise.then(function () {\n            if (self.get('model.record.' + notice.get('name') + '_notices')) {\n                return self\n                    .get('model.record.' + notice.get('name') + '_notices')\n                    .pushObject(record.get('id'));\n            } else {\n                return self.set(\n                    'model.record.' + notice.get('name') + '_notices',\n                    Em.A([record.get('id')]),\n                );\n            }\n        });\n        return promise;\n    },\n    errors: Em.A([]),\n    handleRequestError: function (e) {\n        var d;\n        d = this.get('dialogs');\n        return d.alert(\n            this.get('intl').t('site-safety.request.error') + '<hr>' + JSON.stringify(e.errors),\n        );\n    },\n    autosave: function () {\n        var timer;\n        if (!Ember.testing) {\n            timer = Ember.run.later(\n                this,\n                () => {\n                    if (!this.get('disableAutosave')) {\n                        this.send('add', true);\n                        return this.autosave();\n                    }\n                },\n                this.get('Collector').testNeedsOne('development') ? 10000 : 300000,\n            );\n            return this.set('timer', timer);\n        }\n    },\n    actions: {\n        add: function (autosave = false) {\n            var c, errors, field, i, len, promises, req_fields, row, valid;\n            row = this.get('model.record');\n            row.set('project', this.store.peekRecord('project', this.get('model.projectid')));\n            c = this.get('Collector');\n            req_fields = [c.field(this.get('model.form'), 'project')].concat(\n                c.fieldArray(this.get('model.form')).filterBy('features.mandatory', true),\n            );\n            valid = true;\n            errors = Em.A([]);\n            for (i = 0, len = req_fields.length; i < len; i++) {\n                field = req_fields[i];\n                if (!row.get(field.name)) {\n                    errors.pushObject(field.translated_name);\n                    valid = false;\n                }\n            }\n            promises = [];\n            if (!valid && autosave) {\n                return;\n            }\n            if (autosave) {\n                this.get('savedNotices').forEach((notice) => {\n                    if (notice.get('hasDirtyAttributes')) {\n                        return promises.push(this.saveNotice(notice));\n                    }\n                });\n            } else {\n                this.get('fields').forEach((field) => {\n                    return field.notices.forEach((notice) => {\n                        if (notice.get('hasDirtyAttributes')) {\n                            return promises.push(this.saveNotice(notice));\n                        }\n                    });\n                });\n            }\n            return Promise.all(promises)\n                .then(() => {\n                    var autoSavePromise;\n                    this.set('errors', errors);\n                    if (valid) {\n                        row.set('date', moment().format('YYYY-MM-DD'));\n                        if (autosave) {\n                            autoSavePromise = row.save();\n                            this.set('autosaved', moment());\n                            this.set('autoSavePromise', autoSavePromise);\n                            return autoSavePromise\n                                .then(() => {\n                                    return this.set('autosaved', moment());\n                                })\n                                .catch((e) => {\n                                    console.log(e);\n                                    return this.handleRequestError(e);\n                                })\n                                .finally(() => {\n                                    return this.set('spinIsLoading', false);\n                                });\n                        } else {\n                            autoSavePromise = this.get('autoSavePromise');\n                            if (!autoSavePromise) {\n                                autoSavePromise = RSVP.Promise.resolve();\n                            }\n                            return autoSavePromise.then(() => {\n                                return row\n                                    .save()\n                                    .then(() => {\n                                        return this.transitionToRoute(\n                                            'site_safety.saved',\n                                            row.get('constructor.modelName'),\n                                            row.get('id'),\n                                        );\n                                    })\n                                    .catch((e) => {\n                                        console.log(e);\n                                        return this.handleRequestError(e);\n                                    })\n                                    .finally(() => {\n                                        return this.set('spinIsLoading', false);\n                                    });\n                            });\n                        }\n                    } else {\n                        return this.set('spinIsLoading', false);\n                    }\n                })\n                .catch((e) => {\n                    console.log(e);\n                    this.handleRequestError(e);\n                    this.set('spinIsLoading', false);\n                    return this.set('approvedSpinIsLoading', false);\n                });\n        },\n\n        empty: function (field) {\n            return this.set('model.record.' + field, null);\n        },\n        setSignature: function (value, field) {\n            return this.get('model.record').set(field, value);\n        },\n        markAsApproved: function () {\n            this.set('model.record.status', 'approved');\n            return this.send('save');\n        },\n        addToSavedNotices: function (notice) {\n            return this.get('savedNotices').push(notice);\n        },\n        //console.log notice\n        cancelExtrainfoModal: function () {\n            return this.set('showExtrainfoModal', false);\n        },\n        saveExtrainfoModal: function () {\n            this.set('showExtrainfoModal', false);\n            return this.send('add');\n        },\n        save: function () {\n            if (this.get('extrafields.length') === 0) {\n                return this.send('add');\n            } else {\n                return this.set('showExtrainfoModal', true);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyTrAddMeasurementController;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { hash } from 'rsvp';\nimport { set, get } from '@ember/object';\nimport { cancel } from '@ember/runloop';\n\nexport default Route.extend({\n    dialogs: service(),\n    collector: service('collector-service'),\n    store: service(),\n    intl: service(),\n    model(params) {\n        let form = ('measurement_' + this.modelFor('site-safety.measurement.add')).camelize();\n\n        if (get(this, 'collector').formExists(this.modelFor('site-safety.measurement.add'))) {\n            form = this.modelFor('site-safety.measurement.add');\n        }\n        const addParams = this.paramsFor('site-safety.measurement.add');\n\n        let record = null;\n        if (addParams.id != 'add') {\n            record = get(this, 'store').findRecord(form, addParams.id);\n        } else {\n            record = get(this, 'store').createRecord(form);\n            let project = get(this, 'store').peekRecord('project', params.project);\n            if (!project) {\n                project = get(this, 'store').findRecord('project', params.project);\n            }\n            set(record, 'project', project);\n        }\n\n        return hash({\n            record: record,\n            form: form,\n            projectid: params.project,\n        });\n    },\n    setupController(controller) {\n        this._super(...arguments);\n        controller.autosave();\n    },\n\n    resetController(controller, isExiting) {\n        if (isExiting && get(controller, 'timer')) {\n            cancel(get(controller, 'timer'));\n        }\n    },\n\n    actions: {\n        willTransition(transition) {\n            if (get(this, 'controller.model.record.isNew') && !get(this, 'allowTransition')) {\n                transition.abort();\n            } else {\n                return true;\n            }\n            if (document.querySelector('.dialog') === null) {\n                get(this, 'dialogs')\n                    .confirm(get(this, 'intl').t('site_safety.measurement.confirm_leave'))\n                    .then((con) => this._setTransition(con, transition));\n            }\n        },\n    },\n\n    _setTransition(con, transition) {\n        if (con) {\n            set(this, 'allowTransition', true);\n            transition.retry();\n        }\n        set(this, 'allowTransition', false);\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"PDwnIB6w\",\"block\":\"{\\\"symbols\\\":[\\\"extrafield\\\",\\\"error\\\",\\\"signatureField\\\",\\\"field\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"site-safety/measurement/row-component\\\",null,[[\\\"name\\\",\\\"title\\\",\\\"noticesArr\\\",\\\"notices_on\\\",\\\"model\\\",\\\"options\\\",\\\"addToSavedNotices\\\"],[[23,4,[\\\"ext\\\"]],[23,4,[\\\"title\\\"]],[23,4,[\\\"notices\\\"]],true,[24,[\\\"model\\\",\\\"record\\\"]],[23,4,[\\\"options\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addToSavedNotices\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.plus\\\"],null],false],[0,\\\": \\\"],[1,[22,\\\"plus\\\"],false],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.minus\\\"],null],false],[0,\\\": \\\"],[1,[22,\\\"minus\\\"],false],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"customersetting.hide_measurement_index\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"alert \\\",[22,\\\"textClass\\\"]]]],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"measurement.rating\\\"],null],false],[0,\\\": \\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"model\\\",\\\"form\\\"]],\\\"mvr\\\"],null]],null,{\\\"statements\\\":[[1,[24,[\\\"model\\\",\\\"record\\\",\\\"mvr_rating\\\"]],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[24,[\\\"model\\\",\\\"record\\\",\\\"tr_rating\\\"]],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"signatureFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"signatureFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6 col-lg-4\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[8],[1,[23,3,[\\\"translated_name\\\"]],false],[0,\\\":\\\"],[9],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"glyphicon glyphicon-remove-circle pull-right tr-icon l-gray\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"empty\\\",[23,3,[\\\"name\\\"]]]],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"features\\\",\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"sup\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"collector/fields/signature-field\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"model\\\",\\\"bubbleChange\\\"],[[23,3,[]],\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"record\\\"]],\\\"setSignature\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.missing_fields\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"p\\\",true],[8],[1,[23,2,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"autosaved\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"i\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site-safety.autosaved\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"moment-from\\\",[[24,[\\\"autosaved\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[5,\\\"spin-button\\\",[],[[\\\"@spinIsLoading\\\",\\\"@action\\\",\\\"@classes\\\"],[[23,0,[\\\"spinIsLoading\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-block btn-warning btn-lg\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-floppy-disk\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"measurement.save\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.measurement_status\\\",[28,\\\"concat\\\",[[24,[\\\"model\\\",\\\"form\\\"]],\\\".status\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"saveButtonText\\\"],[[24,[\\\"approvedSpinIsLoading\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"markAsApproved\\\"],null],\\\"btn btn-block btn-warning btn-lg\\\",[24,[\\\"markAsApprovedText\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showExtrainfoModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"measurement.extra_info\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"cancelExtrainfoModal\\\"],null]]],{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"extrafields\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[8],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],\\\"description\\\"],null]],null,{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"site_safety.measurement.description\\\"],null],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[23,1,[]],[24,[\\\"model\\\",\\\"form\\\"]]]]],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[[28,\\\"concat\\\",[[24,[\\\"model\\\",\\\"form\\\"]],\\\".\\\",[23,1,[]]],null]],[[\\\"_class\\\",\\\"model\\\"],[\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"record\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg\\\"],[12,\\\"name\\\",\\\"saveExtraInfo\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveExtrainfoModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/add/measurement/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrAddRoute;\n\nimport Ember from 'ember';\n\nSiteSafetyTrAddRoute = Ember.Route.extend({\n    store: Ember.inject.service(),\n    model: function (params) {\n        if (params.id !== 'add') {\n            this.transitionTo('site_safety.measurement.add.measurement');\n        }\n        return params.measurement;\n    },\n});\n\nexport default SiteSafetyTrAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"bhsBdDnZ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/add/template.hbs\"}});","import Controller from '@ember/controller';\nimport moment from 'moment';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\nimport { A } from '@ember/array';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    collector: service('collector-service'),\n    intl: service(),\n    project: null,\n    init() {\n        this._super(...arguments);\n        const intl = get(this, 'intl');\n        set(this, 'options', {\n            tr: {\n                working: {\n                    options: [\n                        intl.t('tr.notice.desc.helmet'),\n                        intl.t('tr.notice.desc.glasses'),\n                        intl.t('tr.notice.desc.vest'),\n                        intl.t('tr.notice.desc.shoes'),\n                        intl.t('tr.notice.desc.harness'),\n                        intl.t('tr.notice.desc.idcard'),\n                        intl.t('tr.notice.desc.extinguish'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                scaffolding: {\n                    options: [\n                        intl.t('tr.notice.desc.ladder'),\n                        intl.t('tr.notice.desc.stool'),\n                        intl.t('tr.notice.desc.ramp'),\n                        intl.t('tr.notice.desc.rail'),\n                        intl.t('tr.notice.desc.guide'),\n                        intl.t('tr.notice.desc.footboard'),\n                        intl.t('tr.notice.desc.scaffoldingcard'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                tools: {\n                    options: [\n                        intl.t('tr.notice.desc.circular_saw_cover'),\n                        intl.t('tr.notice.desc.circular_saw_stick'),\n                        intl.t('tr.notice.desc.moonwalker'),\n                        intl.t('tr.notice.desc.personlifter'),\n                        intl.t('tr.notice.desc.scissor_lifter'),\n                        intl.t('tr.notice.desc.gasbottles'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                fall: {\n                    options: [\n                        intl.t('tr.notice.desc.gapcover_missing'),\n                        intl.t('tr.notice.desc.gapcover_unmarked'),\n                        intl.t('tr.notice.desc.rail_missing'),\n                        intl.t('tr.notice.desc.handguide_missing'),\n                        intl.t('tr.notice.desc.guide_missing'),\n                        intl.t('tr.notice.desc.footboard'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                electricity: {\n                    options: [\n                        intl.t('tr.notice.desc.electricitybox'),\n                        intl.t('tr.notice.desc.general_lighting'),\n                        intl.t('tr.notice.desc.cabels'),\n                        intl.t('tr.notice.desc.cabels_broken'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                garbage: {\n                    options: [\n                        intl.t('tr.notice.desc.area_orderliness'),\n                        intl.t('tr.notice.desc.garbage_bin_full'),\n                        intl.t('tr.notice.desc.garbage_contains_wood'),\n                        intl.t('tr.notice.desc.wood_garbage'),\n                        intl.t('tr.notice.desc.material_moving'),\n                        intl.t('tr.notice.desc.chisel_garbage'),\n                        intl.t('tr.notice.desc.masonry_garbage'),\n                        intl.t('tr.notice.desc.drywall_garbage'),\n                        intl.t('tr.notice.desc.plumber_garbage'),\n                        intl.t('tr.notice.desc.electrician_garbage'),\n                        intl.t('tr.notice.desc.IV_garbage'),\n                        intl.t('tr.notice.desc.vacuuming'),\n                        intl.t('tr.notice.desc.chisel_job'),\n                        intl.t('tr.notice.desc.clearing_job'),\n                        intl.t('tr.notice.desc.moving_job'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                dust: {\n                    options: [\n                        intl.t('tr.notice.desc.sanddust'),\n                        intl.t('tr.notice.desc.sawdust'),\n                        intl.t('tr.notice.desc.drywalldust'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n            },\n            mvr: {\n                working: {\n                    options: [\n                        intl.t('mvr.notice.desc.helmet'),\n                        intl.t('mvr.notice.desc.glasses'),\n                        intl.t('mvr.notice.desc.vest'),\n                        intl.t('mvr.notice.desc.shoes'),\n                        intl.t('mvr.notice.desc.harness'),\n                        intl.t('mvr.notice.desc.idcard'),\n                        intl.t('mvr.notice.desc.extinguish'),\n                        intl.t('mvr.notice.desc.risk'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n\n                equipment: {\n                    options: [\n                        intl.t('mvr.notice.desc.machines'),\n                        intl.t('mvr.notice.desc.tools'),\n                        intl.t('mvr.notice.desc.electricity'),\n                        intl.t('mvr.notice.desc.lighting'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                protection: {\n                    options: [\n                        intl.t('mvr.notice.desc.fall'),\n                        intl.t('mvr.notice.desc.collapse'),\n                        intl.t('mvr.notice.desc.safety_zone'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                road: {\n                    options: [\n                        intl.t('mvr.notice.desc.trafic'),\n                        intl.t('mvr.notice.desc.walking'),\n                        intl.t('mvr.notice.desc.worksite_road'),\n                        intl.t('mvr.notice.desc.passage'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n                order: {\n                    options: [\n                        intl.t('mvr.notice.desc.general_order'),\n                        intl.t('mvr.notice.desc.garbage_bins'),\n                        intl.t('mvr.notice.desc.dangerous_materials'),\n                        intl.t('site_safety.notice.desc.other'),\n                    ],\n                },\n            },\n        });\n    },\n    form: alias('model'),\n    parseFields(form) {\n        const fields = get(this, 'collector').fieldArray(form);\n        let temp = A([]);\n        let counter = 1;\n        const options = get(this, 'options');\n        // make helper array for fields with notices\n        let helper_notices = {};\n        fields.forEach((item) => {\n            const key_arr = get(item, 'name').split('_');\n            if (key_arr[1] === 'notices') {\n                helper_notices[key_arr[0]] = true;\n            }\n        });\n\n        fields.forEach((item) => {\n            const key_arr = get(item, 'name').split('_');\n            if (key_arr[1] === 'plus') {\n                const ext = key_arr[0];\n                counter++;\n                const title = get(this, 'intl').exists(form + '.title.' + ext)\n                    ? get(this, 'intl').t(form + '.title.' + ext)\n                    : counter + '. ' + item.translated_name;\n                temp.push({\n                    ext: ext,\n                    title: title,\n                    notices: helper_notices[ext] == true,\n                    options: options[form] ? options[form][ext].options : false,\n                });\n            }\n        });\n        return temp;\n    },\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/data/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMeasurementDataController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nimport formattedMixin from 'tt4/mixins/sitesafety-formatted-export';\n\nimport { computed } from '@ember/object';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyMeasurementDataController = GeneralReportController.extend(formattedMixin, {\n    //    needs: 'site-safety/measurement'\n    flags: service(),\n    measurementController: Ember.inject.controller('site-safety/measurement'),\n    queryParams: ['project', 'date', 'page', 'groupBy'],\n    project: null,\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    form: Ember.computed.alias('measurementController.form'),\n    init: function () {\n        this._super();\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            return this.addRowActions();\n        }\n    },\n    filters: computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n        ]);\n    }),\n    // Em.Object.create({field: \"groupBy\", type: \"groupByFilter\"})\n    formatter: function (column, value) {\n        if (column === 'tr_rating') {\n            if (value > 95) {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-approved\">' + value + ' %</span>',\n                );\n            } else if (value > 90) {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-warning\">' + value + ' %</span>',\n                );\n            } else {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-open\">' + value + ' %</span>',\n                );\n            }\n        }\n        return false;\n    },\n    showColumns: Ember.computed(function () {\n        var columns, fields, key;\n        fields = this.Collector.fields(this.get('form'));\n        columns = [];\n        for (key in fields) {\n            if (key.substring(key.length - 6) !== '_minus') {\n                columns.push(key);\n            }\n        }\n        return columns;\n    }),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideEdit: true,\n            hideHistory: true,\n        }),\n        sortByColumn: 'date-',\n    }),\n    addRowActions: function () {\n        if (this.Collector == null) {\n            return;\n        }\n        return this.set('settings.rowActions', [\n            {\n                text: 'site_safety.formatted_pdf_export',\n                action: (self, items) => {\n                    var fields;\n                    fields = this.Collector.fields(this.get('form'));\n                    return this.createMeasurementPdf(fields, items);\n                },\n            },\n        ]);\n    },\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        createSpecialPdf: function (selected) {\n            var fields;\n            fields = this.Collector.fields(this.get('form'));\n            return this.createMeasurementPdf(fields, selected);\n        },\n    },\n});\n\nexport default SiteSafetyMeasurementDataController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/data/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrDataRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyTrDataRoute = GeneralReportRoute.extend({\n    capi: service(),\n    flags: service(),\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var form;\n        form = this.modelFor('site-safety.measurement');\n        this.set('form', form);\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            params.sideload = true;\n            if (Ember.isPresent(params.groupBy)) {\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll(form, params);\n            } else {\n                return this.store.query(form, params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.measurement.data').set('qParams', params);\n        }\n    },\n});\n\n//    setupController: (controller, model) ->\n//#        controller.set 'form', @get 'form'\n//        @_super controller, model\nexport default SiteSafetyTrDataRoute;\n","export default Ember.HTMLBars.template({\"id\":\"4C4iEpOj\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[[23,0,[\\\"form\\\"]],[22,\\\"qParams\\\"],\\\"user.employer,user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"date\\\",\\\"order\\\"],[[23,0,[\\\"date\\\"]],\\\"date\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"createSpecialPdf\\\",[23,2,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.formatted_pdf_export\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[[28,\\\"concat\\\",[\\\"/site_safety/report/tr/data?modal=\\\",[23,0,[\\\"form\\\"]],\\\"%2C\\\"],null]]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"remove,overview,edit,history\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"formatter\\\",\\\"settings\\\",\\\"summableFieldTypes\\\",\\\"count\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"showColumns\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"formatter\\\"]],[24,[\\\"settings\\\"]],false,[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/data/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/graphs/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMeasurementGraphsController;\n\nimport Ember from 'ember';\n\nimport formattedMixin from '../../../../mixins/sitesafety-formatted-export';\n\nSiteSafetyMeasurementGraphsController = Ember.Controller.extend(formattedMixin, {\n    //    needs: 'site-safety/measurement'\n    measurementController: Ember.inject.controller('site-safety/measurement'),\n    queryParams: ['project', 'date'],\n    project_filter: Em.computed('project', 'form', function () {\n        return {\n            form: this.get('form'),\n            name: 'project',\n            type: 'database',\n            value: this.get('project'),\n        };\n    }),\n    measurementController: Ember.inject.controller('site-safety/measurement'),\n    project: Ember.computed.alias('measurementController.project'),\n    date: Ember.computed.alias('measurementController.date'),\n    form: Ember.computed.alias('measurementController.form'),\n    dialogs: Ember.inject.service(),\n    intl: Em.inject.service(),\n    arrangedContent: Ember.computed('content', function () {\n        return this.get('content').sortBy('date');\n    }),\n    dataSetter: function () {\n        var data, data_rating, fields, form, headers, mc, measurements, self;\n        self = this;\n        mc = this.get('measurementController');\n        form = mc.get('model');\n        fields = mc.parseFields(form);\n        headers = [this.get('intl').t('date')];\n        fields.forEach(function (item) {\n            return headers.push(item.title);\n        });\n        data = Em.A([headers]);\n        data_rating = Em.A([[this.get('intl').t('date'), this.get('intl').t('tr.rating')]]);\n        measurements = this.get('arrangedContent');\n        measurements.forEach(function (measurement) {\n            var date, field, field_object, i, len, minus, plus, row;\n            if (moment(measurement.get('date')).isAfter(moment().subtract(1, 'years'))) {\n                row = [moment(measurement.get('date')).format('L')];\n                for (i = 0, len = fields.length; i < len; i++) {\n                    field_object = fields[i];\n                    field = field_object.ext;\n                    plus = measurement.get(field + '_plus');\n                    minus = measurement.get(field + '_minus');\n                    if (plus && minus) {\n                        row.push(parseInt(plus, 10) - parseInt(minus, 10));\n                    } else if (plus) {\n                        row.push(parseInt(plus, 10));\n                    } else if (minus) {\n                        row.push(parseInt(minus, 10) * -1);\n                    } else {\n                        row.push(0);\n                    }\n                }\n                data.push(row);\n                date = moment(measurement.get('date')).format('L');\n                if (!isNaN(measurement.get('tr_rating')) && measurement.get('tr_rating') !== null) {\n                    return data_rating.push([date, parseFloat(measurement.get('tr_rating'))]);\n                } else {\n                    return data_rating.push([date, 0]);\n                }\n            }\n        });\n        self.set('data', data);\n        return self.set('data_rating', data_rating);\n    }.observes('arrangedContent.[]', 'content.[]'),\n    actions: {\n        exportNewestPdf: function (project) {\n            var customMeasurement, fields, newest;\n            customMeasurement = this.get('form');\n            newest = this.store\n                .peekAll(customMeasurement)\n                .filter((record) => {\n                    return record.get('project.id') === project;\n                })\n                .sortBy('date')\n                .reverse()\n                .get('firstObject');\n            if (!newest) {\n                this.get('dialogs').alert(\n                    this.get('intl').t('tr.chart.export_newest_pdf_not_found'),\n                );\n            }\n            // export as measurement pdf\n            fields = this.get('Collector').fields(customMeasurement);\n            return this.createMeasurementPdf(fields, [newest]);\n        },\n        filterChanged: function (value, fieldName) {\n            if (fieldName === 'project') {\n                if (value == null) {\n                    return this.set('project', '');\n                } else {\n                    return this.set('project', value.id);\n                }\n            }\n        },\n    },\n});\n\nexport default SiteSafetyMeasurementGraphsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/graphs/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMeasurementGraphsRoute;\n\nimport Ember from 'ember';\n\nSiteSafetyMeasurementGraphsRoute = Ember.Route.extend({\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var parentParams;\n        //        form = @modelFor 'site-safety.measurement'\n        parentParams = this.paramsFor('site-safety.measurement');\n        if (params.project === 'undefined') {\n            delete params.project;\n        }\n        params.sideload = true;\n        return this.store.query('measurement_' + parentParams.measurement, params);\n    },\n});\n\nexport default SiteSafetyMeasurementGraphsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"NyjY9gkn\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"project_filter\\\"]]],[[\\\"change\\\",\\\"useAsFilter\\\",\\\"_class\\\"],[\\\"filterChanged\\\",true,\\\"form-control\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"range-picker\\\",null,[[\\\"autoApply\\\",\\\"ranges\\\",\\\"opens\\\",\\\"value\\\"],[true,false,\\\"right\\\",[24,[\\\"date\\\"]]]]],false],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"content\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row col-xs-12 export-pdf-button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary btn-large\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"exportNewestPdf\\\",[24,[\\\"project\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.export_newest_pdf\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary btn-large\\\"],[10,\\\"disabled\\\",\\\"\\\"],[11,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"tr.chart.select_project\\\"],null]]]],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.export_newest_pdf\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data_rating\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"measurement.chart.rating\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"export\\\",\\\"Xmax\\\",\\\"Xmin\\\"],[[24,[\\\"data_rating\\\"]],true,100,0]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"measurement.chart.individual_ratings\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"export\\\"],[[24,[\\\"data\\\"]],true]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/graphs/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"z/Q6p8x9\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/notice-component/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyNoticeComponent;\n\nimport Ember from 'ember';\n\nSiteSafetyNoticeComponent = Ember.Component.extend({\n    store: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    intl: Em.inject.service(),\n    isSaved: false,\n    didReceiveAttrs: function () {\n        var found, i, len, option, ref;\n        if (this.get('model.desc') && this.get('options')) {\n            found = false;\n            ref = this.get('options');\n            for (i = 0, len = ref.length; i < len; i++) {\n                option = ref[i];\n                if (option.string === this.get('model.desc')) {\n                    found = true;\n                    break;\n                }\n            }\n            if (!found) {\n                return this.set(\n                    'selectedDesc',\n                    this.get('intl').t('site_safety.notice.desc.other'),\n                );\n            } else {\n                return this.set('selectedDesc', this.get('model.desc'));\n            }\n        }\n    },\n    showDropdown: Ember.computed.gt('options.length', 0),\n    showDesc: Em.computed('selectedDesc', 'showDropdown', function () {\n        if (!this.get('showDropdown')) {\n            return true;\n        }\n        if (this.get('selectedDesc') === this.get('intl').t('site_safety.notice.desc.other')) {\n            return true;\n        }\n    }),\n    /*\n  descObserver: Em.observer 'selectedDesc', ->\n      desc = @get 'selectedDesc'\n      if desc != @get('intl').t(\"site_safety.notice.desc.other\")\n          @set 'model.desc', @get 'selectedDesc'\n      else\n          @set 'model.desc', \"\"\n\n  descObserver: Em.on('init', Em.observer('selectedDesc','showDropdown', ->\n      desc =  @get 'selectedDesc'\n      if @get('showDropdown')\n          if desc == @get('intl').t(\"site_safety.notice.desc.other\").string\n              @set 'showDesc', true\n              @set 'model.desc', \"\"\n          else\n              @set 'showDesc',false\n              @set 'model.desc', desc\n  ))\n  */\n    fields: Em.computed(function () {\n        var fields, fieldsObject, key, value;\n        fieldsObject = this.Collector.fields('trnotice');\n        fields = [];\n        for (key in fieldsObject) {\n            value = fieldsObject[key];\n            if ((!value.features.hide && key !== 'project') || key === 'noticedesc') {\n                Em.set(value, 'ext', key);\n                //Em.set value, 'label', value.name || @get('intl').t('trnotice.' + value.ext)\n                switch (key) {\n                    case 'desc':\n                        Em.set(value, 'sortOrder', 0);\n                        break;\n                    case 'employer':\n                        Em.set(value, 'sortOrder', 1);\n                        break;\n                    case 'user':\n                        Em.set(value, 'sortOrder', 2);\n                        break;\n                    case 'date':\n                        Em.set(value, 'sortOrder', 3);\n                        break;\n                    case 'place':\n                        Em.set(value, 'sortOrder', 4);\n                        break;\n                    case 'noticedesc':\n                        Em.set(value, 'sortOrder', 5);\n                        break;\n                    case 'email':\n                        Em.set(value, 'sortOrder', 6);\n                        break;\n                    case 'pic':\n                        Em.set(value, 'sortOrder', 7);\n                        break;\n                    default:\n                        Em.set(value, 'sortOrder', 8);\n                }\n                fields.push(value);\n            }\n        }\n        return fields.sortBy('sortOrder');\n    }),\n    setProject: Em.on(\n        'init',\n        Em.observer('measurement.project', function () {\n            return this.set('model.project', this.get('measurement.project'));\n        }),\n    ),\n    start: Ember.computed('model', function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n    saveText: Ember.computed(function () {\n        return this.get('intl').t('site_safety.notice.save');\n    }),\n    fieldRoute: Em.computed('model.pic', function () {\n        return {\n            form: this.get('model.constructor.modelName'),\n            type: 'hdfile',\n            value: this.get('model.pic'),\n            features: this.get('Collector').field(this.get('model.constructor.modelName'), 'pic')\n                .features,\n            name: 'pic',\n        };\n    }),\n    actions: {\n        customChangeValue: function (value, fieldName) {\n            return this.set('model.pic', value);\n        },\n        changeValue: function (value, field, set = true) {\n            if (field === 'email') {\n                this.send('validateEmail');\n            } else if (field === 'user' && this.get('model').get('user.id')) {\n                this.get('store')\n                    .query('user', {\n                        id: this.get('model').get('user.id'),\n                    })\n                    .then((user) => {\n                        return this.get('model').set('email', user.get('firstObject.email'));\n                    });\n            }\n            if (set && !this.get('model.isDeleted')) {\n                return this.get('model').set(field, value);\n            }\n        },\n        validateDesc: function () {\n            if (this.get('model.desc')) {\n                this.set('error', false);\n                return this.set('disabled', false);\n            } else {\n                this.set('error', this.get('intl').t('site_safety.notice.desc_missing'));\n                return this.set('disabled', true);\n            }\n        },\n        validateEmail: function () {\n            var re, valid;\n            this.set('error', false);\n            if (this.get('model.email')) {\n                re =\n                    /^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$/i;\n                valid = re.test(this.get('model.email'));\n                if (!valid) {\n                    this.set('error', this.get('intl').t('site_safety.notice.email.not_valid'));\n                }\n                return this.set('saveText', this.get('intl').t('site_safety.notice.save_and_send'));\n            } else {\n                return this.set('saveText', this.get('intl').t('site_safety.notice.save'));\n            }\n        },\n        saveNotice: function () {\n            if (!this.get('showDesc')) {\n                this.set('model.desc', this.get('selectedDesc'));\n            }\n            this.send('validateDesc');\n            if (this.get('error')) {\n                return;\n            }\n            this.set('isSaved', true);\n            this.set('show_add_notice', true);\n            this.set('notice', false);\n            if (this.get('addToSavedNotices')) {\n                return this.addToSavedNotices(this.get('model'));\n            }\n        },\n        removeNotice: function () {\n            var record, self;\n            record = this.get('model');\n            self = this;\n            this.get('noticesArr').removeObject(record);\n            record.rollbackAttributes();\n            if (this.get('noticesArr.length') === 0) {\n                self.set('notice', false);\n                return self.set('edit', false);\n            } else {\n                return self.set('show_add_notice', true);\n            }\n        },\n        setUser: function (user) {\n            this.set('model.user', user);\n            if (user.get('email')) {\n                return this.set('model.email', user.get('email'));\n            } else {\n                return this.set('model.email', void 0);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyNoticeComponent;\n","export default Ember.HTMLBars.template({\"id\":\"FwFhE/M7\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"isSaved\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"header.path.addnotice\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeNotice\\\"],null]]],{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"ext\\\"]],\\\"desc\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-margin-top\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showDropdown\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"fast-select\\\",null,[[\\\"value\\\",\\\"content\\\",\\\"class\\\",\\\"name\\\"],[[24,[\\\"selectedDesc\\\"]],[24,[\\\"options\\\"]],\\\"form-control add-fields\\\",\\\"description\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showDesc\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"key-up\\\",\\\"placeholder\\\",\\\"name\\\"],[\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"desc\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validateDesc\\\"],null],[28,\\\"t\\\",[\\\"site_safety.notice.desc.placeholder\\\"],null],\\\"OtherDesc\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"ext\\\"]],\\\"pic\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-margin-top\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"remove\\\",\\\"change\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"fieldRoute\\\"]],\\\"removeFile\\\",\\\"customChangeValue\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"ext\\\"]],\\\"location\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-margin-top\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"gps-location\\\",null,[[\\\"value\\\",\\\"model\\\"],[[24,[\\\"model\\\",\\\"location\\\"]],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-margin-top\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/field-container\\\",null,[[\\\"field\\\",\\\"change\\\",\\\"_class\\\",\\\"model\\\"],[[28,\\\"concat\\\",[\\\"trnotice.\\\",[23,1,[\\\"ext\\\"]]],null],\\\"changeValue\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-margin-top\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[23,0,[\\\"error\\\"]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg\\\"],[12,\\\"disabled\\\",[22,\\\"disabled\\\"]],[12,\\\"name\\\",\\\"saveNotice\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveNotice\\\"]],[8],[1,[22,\\\"saveText\\\"],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/notice-component/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/notices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMeasurementNoticesController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nimport { computed } from '@ember/object';\n\nSiteSafetyMeasurementNoticesController = GeneralReportController.extend({\n    //    needs: 'site-safety/measurement'\n    measurementController: Ember.inject.controller('site-safety/measurement'),\n    project: Ember.computed.alias('measurementController.project'),\n    date: Ember.computed.alias('measurementController.date'),\n    queryParams: ['status', 'project', 'date', 'page', 'employer', 'groupBy'],\n    filters: computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    arrangedContent: Ember.computed('model.[]', function () {\n        return this.get('content').sortBy('date');\n    }),\n    statusSelector: Ember.computed.alias('measurementController.statusSelector'),\n    search: false,\n    status: Ember.computed.alias('measurementController.status'),\n    form: 'trnotice',\n    showColumns: ['date', 'status', 'desc', 'user', 'project', 'pic'],\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyMeasurementNoticesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/notices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrNoticesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyTrNoticesRoute = GeneralReportRoute.extend({\n    capi: service(),\n    flags: service(),\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var form;\n        form = this.modelFor('site-safety.measurement');\n        params = this._super(params);\n        params.type = form.replace('_', '-');\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            if (params.date) {\n                params.created = params.date;\n                delete params.date;\n            }\n            params.sideload = true;\n            if (params.status === 'all') {\n                delete params.status;\n            }\n            if (Ember.isPresent(params.groupBy)) {\n                params.sideload = true;\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll('trnotice', params);\n            } else {\n                return this.store.query('trnotice', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.measurement.notices').set('qParams', params);\n        }\n    },\n    actions: {\n        didTransition: function () {\n            return this.set('controller.statusSelector', true);\n        },\n    },\n});\n\nexport default SiteSafetyTrNoticesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"s7o3aj5j\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"trnotice\\\",[23,0,[\\\"qParams\\\"]],\\\"user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"created\\\",\\\"type\\\"],[[23,0,[\\\"date\\\"]],[23,0,[\\\"qParams\\\",\\\"type\\\"]]]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],\\\"trnotice\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"status\\\",\\\"count\\\"],[\\\"bubbleTransition\\\",\\\"trnotice\\\",[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/notices/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/person-in-charge/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMeasurementPersonInChargeComponent;\n\nimport Ember from 'ember';\n\nimport DatabaseField from '../../../collector/fields/database-field/component';\n\nSiteSafetyMeasurementPersonInChargeComponent = DatabaseField.extend({\n    layout: 'collector/fields/database-field',\n    _class: 'form-control',\n    ObservePrompt: '',\n    field: Em.computed(function () {\n        var arr;\n        return (arr = {\n            form: 'tr',\n            name: 'user',\n            placeholder: 'site_safety.notice.person.placeholder',\n        });\n    }),\n    actions: {\n        focusIn: function () {\n            return this.set('showOptions', true);\n        },\n        focusOut: function () {\n            return this.set('showOptions', false);\n        },\n        select: function (option) {\n            if (!option) {\n                option = {};\n            }\n            return this._super(option);\n        },\n    },\n});\n\nexport default SiteSafetyMeasurementPersonInChargeComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMeasurementRoute;\n\nimport Ember from 'ember';\n\nSiteSafetyMeasurementRoute = Ember.Route.extend({\n    dialogs: Ember.inject.service(),\n    model: function (params) {\n        return 'measurement_' + params.measurement;\n    },\n    actions: {\n        delete: function (row) {\n            return this.get('dialogs')\n                .confirm('Haluatko varmasti poistaa rivin')\n                .then((con) => {\n                    if (con) {\n                        return row.destroyRecord();\n                    }\n                });\n        },\n        edit: function (row) {\n            row.set('editClass', 'TrEditText');\n            return row.set('edit', true);\n        },\n        save: function (row) {\n            var self;\n            self = this;\n            //            row.set('user', @get('controller.controllers.application.current_user'))\n            //            row.set('date', moment().format('YYYY-MM-DD'))\n            return row.save().then(function () {\n                row.set('edit', false);\n                return row.set('editClass', '');\n            });\n        },\n        //                self.get('controller').dataSetter()\n        cancel: function (row) {\n            row.rollbackAttributes();\n            row.set('edit', false);\n            return row.set('editClass', '');\n        },\n        didTransition: function () {\n            return this.set('controller.statusSelector', false);\n        },\n    },\n});\n\nexport default SiteSafetyMeasurementRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/measurement/row-component/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyRowComponent;\n\nimport Ember from 'ember';\n\nSiteSafetyRowComponent = Ember.Component.extend({\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    store: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    didReceiveAttrs: function () {\n        if (this.get('model.' + this.get('name') + '_plus')) {\n            this.set('plus', this.get('model.' + this.get('name') + '_plus'));\n        }\n        if (this.get('model.' + this.get('name') + '_minus')) {\n            return this.set('minus', this.get('model.' + this.get('name') + '_minus'));\n        }\n    },\n    hasInfo: Em.computed('name', function () {\n        return this.get('intl').exists('measurement.info.' + this.get('name'));\n    }),\n    plus: 0,\n    minus: 0,\n    minusObserver: function () {\n        var value;\n        this.set('model.' + this.get('name') + '_minus', this.get('minus'));\n        // HTML input type=\"number\" component is poorly implemented so: Limit value to max 9999 && do not accept decimal values && clean number..\n        if (this.get('minus').length > 4) {\n            this.set('minus', this.get('minus').substring(0, 4));\n        }\n        if (this.get('minus') > 9999) {\n            this.set('minus', 9999);\n        }\n        value = this.get('minus').toString();\n        if (value.indexOf('.') > -1) {\n            this.set('minus', 0);\n        }\n        value = parseInt(this.get('minus'), 10);\n        if (isNaN(value)) {\n            return this.set('minus', 0);\n        } else {\n            return this.set('minus', value);\n        }\n    }.observes('minus'),\n    plusObserver: function () {\n        var value;\n        this.set('model.' + this.get('name') + '_plus', this.get('plus'));\n        // HTML input type=\"number\" component is poorly implemented so: Limit value to max 9999 && do not accept decimal values && clean number..\n        if (this.get('plus').length > 4) {\n            this.set('plus', this.get('plus').substring(0, 4));\n        }\n        if (this.get('plus') > 9999) {\n            this.set('plus', 9999);\n        }\n        value = this.get('plus').toString();\n        if (value.indexOf('.') > -1) {\n            this.set('plus', 0);\n        }\n        value = parseInt(this.get('plus'), 10);\n        if (isNaN(value)) {\n            return this.set('plus', 0);\n        } else {\n            return this.set('plus', value);\n        }\n    }.observes('plus'),\n    actions: {\n        toggleNotice: function () {\n            if (this.get('edit') || this.get('notice')) {\n                this.set('edit', false);\n                return this.set('notice', false);\n            } else {\n                this.set('notice', true);\n                this.set('edit', true);\n                return this.set('show_add_notice', true);\n            }\n        },\n        plus: function () {\n            return this.set('plus', 1 + this.get('plus'));\n        },\n        minus: function () {\n            if (!this.get('notice')) {\n                this.set('unsavedNotices', true);\n                this.set('minus', 1 + this.get('minus'));\n                this.set('model.' + this.get('name') + '_minus', this.get('minus'));\n                if (this.get('notices_on')) {\n                    this.send('addNotice');\n                    return this.set('notice', true);\n                }\n            } else {\n                return this.get('notifications').warning(\n                    this.get('intl').t('site_safety.notice.unsaved_notification'),\n                    {\n                        autoClear: true,\n                    },\n                );\n            }\n        },\n        addNotice: function () {\n            var add, row, tmpRows;\n            add = true;\n            this.get('noticesArr').forEach(function (ntc) {\n                if (ntc.get('isDirty')) {\n                    return (add = false);\n                }\n            });\n            if (add) {\n                this.set('show_add_notice', false);\n                row = this.get('store').createRecord('trnotice', {\n                    date: moment().add(3, 'days').format('YYYY-MM-DD'),\n                    name: this.get('name'),\n                });\n                // noticesArr is query-result from server, so we cannot add directly to it..\n                // this is a bit ugly piece of code, but it works\n                if (this.get('noticesArr')) {\n                    tmpRows = [];\n                    tmpRows.push(row);\n                    this.get('noticesArr').forEach((notice) => {\n                        return tmpRows.push(notice);\n                    });\n                    return this.set('noticesArr', tmpRows);\n                } else {\n                    //@get('noticesArr').pushObject(row)\n                    return this.get('noticesArr').pushObject(row);\n                }\n            }\n        },\n        openInfo: function (row) {\n            return this.get('dialogs').alert(this.get('intl').t('measurement.info.' + row));\n        },\n    },\n});\n\nexport default SiteSafetyRowComponent;\n","export default Ember.HTMLBars.template({\"id\":\"OzuUo5Q/\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\",\\\"item\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading clearfix\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"hasInfo\\\"]]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs btn-default pull-left\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openInfo\\\",[24,[\\\"name\\\"]]]],[8],[1,[28,\\\"standard-icon\\\",[\\\"info\\\"],null],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[22,\\\"title\\\"],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"notices_on\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs btn-success pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleNotice\\\",[24,[\\\"name\\\"]]]],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-xs btn-warning pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleNotice\\\",[24,[\\\"name\\\"]]]],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"standard-icon\\\",[\\\"edit\\\"],null],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"hidden-xs hidden-sm\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.edit\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group btn-group-justified\\\"],[10,\\\"role\\\",\\\"group\\\"],[10,\\\"aria-label\\\",\\\"...\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[10,\\\"role\\\",\\\"group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success btn-sm\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"plus\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-thumbs-up\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.plus\\\"],null],false],[0,\\\"\\\\n                    : \\\"],[1,[22,\\\"plus\\\"],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[10,\\\"role\\\",\\\"group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger btn-sm\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"minus\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-thumbs-down\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.minus\\\"],null],false],[0,\\\"\\\\n                    : \\\"],[1,[22,\\\"minus\\\"],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[10,\\\"role\\\",\\\"group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row-success\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"min\\\",\\\"max\\\",\\\"step\\\",\\\"size\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"0\\\",\\\"10000\\\",\\\"1\\\",\\\"5\\\",\\\"noinherit-color form-control\\\",[24,[\\\"plus\\\"]]]]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[10,\\\"role\\\",\\\"group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row-danger\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"min\\\",\\\"max\\\",\\\"step\\\",\\\"size\\\",\\\"class\\\",\\\"value\\\"],[\\\"number\\\",\\\"0\\\",\\\"10000\\\",\\\"1\\\",\\\"5\\\",\\\"noinherit-color form-control\\\",[24,[\\\"minus\\\"]]]]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"noticesArr\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-notice\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"outer\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive-sm table-striped \\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.notice.desc\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.notice.person\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.notice.fixdate\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"noticesArr\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"desc\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"user\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"user\\\",\\\"trnotice\\\",[23,2,[\\\"user\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                    \\\"],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"noticesArr\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"site-safety/measurement/notice-component\\\",null,[[\\\"model\\\",\\\"measurement\\\",\\\"name\\\",\\\"options\\\",\\\"notice\\\",\\\"show_add_notice\\\",\\\"noticesArr\\\",\\\"edit\\\",\\\"addToSavedNotices\\\"],[[23,1,[]],[24,[\\\"model\\\"]],[24,[\\\"name\\\"]],[24,[\\\"options\\\"]],[24,[\\\"notice\\\"]],[24,[\\\"show_add_notice\\\"]],[24,[\\\"noticesArr\\\"]],[24,[\\\"edit\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"addToSavedNotices\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"show_add_notice\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-block btn-warning\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addNotice\\\"]],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.notice.add\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/row-component/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"/+Klt1a6\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/measurement/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/observation/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyObservationAddController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nSiteSafetyObservationAddController = GeneralAddController.extend();\n\nexport default SiteSafetyObservationAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/observation/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyObservationAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nSiteSafetyObservationAddRoute = GeneralAddRoute.extend({\n    modelName: 'site_safety_observation',\n    controllerName: 'site_safety.observation.add',\n    afterSave: 'site_safety.report.observation',\n});\n\nexport default SiteSafetyObservationAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"PwTuiN43\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/observation/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/observation/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyObservationEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nSiteSafetyObservationEditController = GeneralAddController.extend({\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n});\n\nexport default SiteSafetyObservationEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/observation/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyObservationEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nSiteSafetyObservationEditRoute = GeneralAddRoute.extend({\n    modelName: 'site_safety_observation',\n    controllerName: 'site_safety.observation.edit',\n    //savedRoute: 'site_safety.observation.index'\n    afterSave: 'site_safety.report.observation',\n    edit: true,\n});\n\nexport default SiteSafetyObservationEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"4hb+5H0H\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/observation/edit/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"eMRpE9Ao\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/observation/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/event/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyEventController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nSiteSafetyEventController = GeneralReportController.extend({\n    form: 'site_safety_event',\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    queryParams: ['status', 'page', 'employer', 'creator', 'groupBy', 'project'],\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'employer',\n            }),\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'creator',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    //        Em.Object.create({field: \"user-group\"})\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            //            hideEdit: true\n            //            hideHistory: true\n            editRoute: {\n                modal: true,\n            },\n        }),\n        massedit: true,\n        rowActions: [],\n        sortByColumn: 'created-',\n    }),\n    search: false,\n    status: 'all',\n    limit: 25,\n    groupBy: null,\n    project: null,\n    user: null,\n    q: null,\n    showColumns: ['created', 'creator', 'status', 'desc', 'project', 'pic'],\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyEventController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/event/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyEventRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyEventRoute = GeneralReportRoute.extend({\n    form: 'site_safety_event',\n    capi: service(),\n    flags: service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        creator: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            params.sideload = true;\n            if (params.status === 'all') {\n                delete params.status;\n            }\n            if (Ember.isPresent(params.groupBy)) {\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll('site_safety_event', params);\n            } else {\n                return this.store.query('site_safety_event', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.report.event').set('qParams', params);\n        }\n    },\n});\n\nexport default SiteSafetyEventRoute;\n","export default Ember.HTMLBars.template({\"id\":\"sUcspYLN\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"site_safety_event\\\",[22,\\\"qParams\\\"],[28,\\\"hash\\\",null,[[\\\"order\\\"],[\\\"created\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/site_safety/report/event?modal=site-safety-event%2C\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"status\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"site_safety_event\\\",[24,[\\\"status\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"limit\\\",\\\"offset\\\",\\\"count\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",\\\"site_safety_event\\\",[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/event/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyReportController;\n\nimport Ember from 'ember';\n\nSiteSafetyReportController = Ember.Controller.extend({\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    project: null,\n    group: null,\n});\n\nexport default SiteSafetyReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/data/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMvrDataController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from 'tt4/controllers/general-report';\n\nimport formattedMixin from 'tt4/mixins/sitesafety-formatted-export';\n\nimport { computed } from '@ember/object';\n\nSiteSafetyMvrDataController = GeneralReportController.extend(formattedMixin, {\n    intl: Em.inject.service(),\n    flags: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    queryParams: ['project', 'date', 'page', 'groupBy'],\n    arrangedContent: Ember.computed('model.[]', function () {\n        return this.get('content').sortBy('date');\n    }),\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    form: 'mvr',\n    filters: computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    init: function () {\n        this._super();\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            return this.addRowActions();\n        }\n    },\n    formatter: function (column, value) {\n        if (column === 'mvr_rating') {\n            if (value > 95) {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-approved\">' + value + ' %</span>',\n                );\n            } else if (value > 90) {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-warning\">' + value + ' %</span>',\n                );\n            } else {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-open\">' + value + ' %</span>',\n                );\n            }\n        }\n        return false;\n    },\n    showColumns: [\n        'status',\n        'project',\n        'user',\n        'date',\n        'mvr_rating',\n        'equipment_plus',\n        'order_plus',\n        'protection_plus',\n        'road_plus',\n        'working_plus',\n        'foreman_sign',\n        'worker_sign',\n    ],\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: {\n                dynamic: true,\n                route: 'site_safety.measurement.add.measurement',\n                fields: ['id', 'constructor.modelName', 'project.id'],\n            },\n            historyRoute: 'site_safety.mvr.history',\n            //hideEdit: true\n            hideHistory: true,\n            disableStatus: 'approved',\n        }),\n        sortByColumn: 'date-',\n    }),\n    addRowActions: function () {\n        var fields, intl;\n        intl = this.get('intl');\n        if (this.Collector == null) {\n            return;\n        }\n        fields = this.Collector.fields('mvr');\n        return this.set('settings.rowActions', [\n            {\n                text: 'site_safety.formatted_pdf_export',\n                action: (self, items) => {\n                    return this.createMeasurementPdf(fields, items);\n                },\n            },\n        ]);\n    },\n    actions: {\n        transitionToEditRoute: function (row) {\n            return this.transitionToRoute(\n                'site_safety.measurement.add.measurement',\n                row.id,\n                'mvr',\n                row.project.id,\n            );\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        createSpecialPdf: function (selected) {\n            // if selected is not defined, use dialogs-service to show the user that they need to select something\n            if (selected == null || selected.length === 0) {\n                return this.get('dialogs').alert(\n                    this.intl.t('site_safety.formatted_pdf_export_select'),\n                );\n            } else {\n                let fields;\n                fields = this.Collector.fields('mvr');\n                return this.createMeasurementPdf(fields, selected);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyMvrDataController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/data/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMvrDataRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from 'tt4/routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyMvrDataRoute = GeneralReportRoute.extend({\n    Collector: Ember.inject.service('collector-service'),\n    capi: service(),\n    flags: service(),\n    beforeModel: function (transition) {\n        var c;\n        this._super(transition);\n        c = this.get('Collector');\n        if (transition.targetName !== 'site_safety.mvr.notices' && !c.testNeedsOne('mvr@add')) {\n            transition.abort();\n            return this.transitionTo('site_safety.mvr.notices');\n        }\n    },\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            params.sideload = true;\n            //        params.order = \"date-\"\n            if (Ember.isPresent(params.groupBy)) {\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll('mvr', params);\n            } else {\n                return this.store.query('mvr', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.report.mvr.data').set('qParams', params);\n        }\n    },\n});\n\nexport default SiteSafetyMvrDataRoute;\n","export default Ember.HTMLBars.template({\"id\":\"sukCFb+x\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"mvr\\\",[22,\\\"qParams\\\"],\\\"date,user,project,group,q\\\",\\\"user.employer,user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"date\\\",\\\"order\\\"],[[23,0,[\\\"date\\\"]],\\\"date-\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"createSpecialPdf\\\",[23,2,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.formatted_pdf_export\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/site_safety/report/tr/data?modal=mvr%2C\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[\\\"@exportPdf\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"createSpecialPdf\\\",[23,2,[\\\"selected\\\"]]],null]]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[\\\"@customPdfExport\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"createSpecialPdf\\\",[23,2,[\\\"selected\\\"]]],null]]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\",\\\"@hideEditStatus\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"transitionToEditRoute\\\"],null],\\\"remove,overview,edit\\\",\\\"approved\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"formatter\\\",\\\"settings\\\",\\\"summableFieldTypes\\\",\\\"showPdfExport\\\",\\\"count\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"showColumns\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"formatter\\\"]],[24,[\\\"settings\\\"]],false,false,[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/mvr/data/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/graphs/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMvrGraphsController;\n\nimport Ember from 'ember';\n\nimport formattedMixin from 'tt4/mixins/sitesafety-formatted-export';\n\nimport chartComp from 'tt4/components/chart-comp';\n\nSiteSafetyMvrGraphsController = Ember.Controller.extend(formattedMixin, {\n    mvrController: Ember.inject.controller('site_safety/report/mvr'),\n    queryParams: ['project', 'date', 'group'],\n    project: Ember.computed.alias('mvrController.project'),\n    date: Ember.computed.alias('mvrController.date'),\n    group: Ember.computed.alias('mvrController.group'),\n    intl: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n                form: 'mvr',\n                type: 'database',\n                value: this.get('project'),\n                singleselect: true,\n            }),\n            Em.Object.create({\n                field: 'date',\n                form: 'mvr',\n                type: 'date',\n                value: this.get('date'),\n            }),\n            Em.Object.create({\n                field: 'group',\n                form: 'mvr',\n                type: 'database',\n                value: this.get('group'),\n                singleselect: true,\n            }),\n        ]);\n    }),\n    pie_options: {\n        pieHole: 0.9,\n        chartArea: {\n            width: '90%',\n            height: '95%',\n        },\n        height: 200,\n        width: 350,\n        pieSliceTextStyle: {\n            color: 'black',\n            fontSize: 20,\n        },\n    },\n    //        slices: {\n    //            1: {offset: 0.02}\n    //            2: {offset: 0.02}\n    //            3: {offset: 0.02}\n    //        }\n    dataSetter: function () {\n        var data,\n            data_rating,\n            data_rating_pie,\n            pie_over90under95,\n            pie_over95,\n            pie_under90,\n            self,\n            trs;\n        self = this;\n        data = Em.A([\n            [\n                this.get('intl').t('date'),\n                this.get('intl').t('mvr.title.working'),\n                this.get('intl').t('mvr.title.equipment'),\n                this.get('intl').t('mvr.title.protection'),\n                this.get('intl').t('mvr.title.road'),\n                this.get('intl').t('mvr.title.order'),\n            ],\n        ]);\n        data_rating = Em.A([[this.get('intl').t('date'), this.get('intl').t('mvr.rating')]]);\n        data_rating_pie = Em.A([\n            [this.get('intl').t('mvr.rating'), this.get('intl').t('mvr.rating')],\n        ]);\n        pie_under90 = 0;\n        pie_over90under95 = 0;\n        pie_over95 = 0;\n        trs = this.get('model.mvr');\n        if (!trs) {\n            return;\n        }\n        trs.forEach(function (tr, idx) {\n            var field, fields, i, len, minus, plus, row, tr_minus, tr_plus;\n            row = [moment(tr.get('date')).format('L')];\n            tr_plus = tr.getProperties(\n                'working_plus',\n                'equipment_plus',\n                'protection_plus',\n                'road_plus',\n                'order_plus',\n            );\n            tr_minus = tr.getProperties(\n                'working_minus',\n                'equipment_minus',\n                'protection_minus',\n                'road_minus',\n                'order_minus',\n            );\n            fields = ['working', 'equipment', 'protection', 'road', 'order'];\n            for (i = 0, len = fields.length; i < len; i++) {\n                field = fields[i];\n                plus = 0;\n                minus = 0;\n                if (tr_plus[field + '_plus']) {\n                    plus = parseInt(tr_plus[field + '_plus'], 10);\n                }\n                if (tr_minus[field + '_minus']) {\n                    minus = parseInt(tr_minus[field + '_minus'], 10);\n                }\n                row.push(parseFloat(((plus / (plus + minus)) * 100).toFixed(2)));\n            }\n            if (Ember.isEmpty(self.get('selectedIndex')) || self.get('selectedIndex') === idx) {\n                data.push(row);\n            }\n            if (!isNaN(tr.get('mvr_rating')) && tr.get('mvr_rating') !== null) {\n                data_rating.push([\n                    moment(tr.get('date')).format('L'),\n                    parseFloat(tr.get('mvr_rating')),\n                ]);\n                if (tr.get('mvr_rating') < 90) {\n                    pie_under90++;\n                }\n                if (tr.get('mvr_rating') >= 90 && tr.get('mvr_rating') < 95) {\n                    pie_over90under95++;\n                }\n                if (tr.get('mvr_rating') >= 95) {\n                    return pie_over95++;\n                }\n            } else {\n                return data_rating.push([moment(tr.get('date')).format('L'), 0]);\n            }\n        });\n        data_rating_pie.push([this.get('intl').t('mvr_rating_pie_under90'), pie_under90]);\n        data_rating_pie.push([\n            this.get('intl').t('mvr_rating_pie_over90under95'),\n            pie_over90under95,\n        ]);\n        data_rating_pie.push([this.get('intl').t('mvr_rating_pie_over95'), pie_over95]);\n        self.set('data', data);\n        self.set('data_rating', data_rating);\n        return self.set('data_rating_pie', data_rating_pie);\n    }.observes('model.mvr.[]', 'intl.primaryLocale', 'selectedIndex'),\n    actions: {\n        handleSelection: function (sel) {\n            if (this.get('selectedIndex') === sel[0].row) {\n                return this.set('selectedIndex', null);\n            } else {\n                return this.set('selectedIndex', sel[0].row);\n            }\n        },\n        filterChanged: function (value, field) {\n            if (value == null) {\n                return this.set(field, '');\n            } else if (field === 'date') {\n                return this.set(field, value);\n            } else {\n                return this.set(field, value.id);\n            }\n        },\n        exportNewestPdf: function (project) {\n            var charts, fields, newest;\n            // get newest mvr record\n            newest = this.store\n                .peekAll('mvr')\n                .filter((record) => {\n                    return record.get('project.id') === project;\n                })\n                .sortBy('date')\n                .reverse()\n                .get('firstObject');\n            if (!newest) {\n                this.get('dialogs').alert(\n                    this.get('intl').t('tr.chart.export_newest_pdf_not_found'),\n                );\n            }\n            // export as measurement pdf\n            fields = this.get('Collector').fields('mvr');\n            charts = [\n                {\n                    url: this.get('piechart').getImageURI(),\n                    width: 300,\n                    title: this.get('intl').t('mvr.chart.mvr_rating_pie'),\n                },\n                {\n                    url: this.get('datachart').getImageURI(),\n                    title: this.get('intl').t('mvr.chart.measurement_ratings'),\n                },\n                {\n                    url: this.get('dataratingchart').getImageURI(),\n                    title: this.get('intl').t('mvr.chart.mvr_rating'),\n                },\n            ];\n            return this.createMeasurementPdf(fields, [newest], 'download', charts);\n        },\n    },\n});\n\nexport default SiteSafetyMvrGraphsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/graphs/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMvrGraphsRoute;\n\nimport Ember from 'ember';\n\nSiteSafetyMvrGraphsRoute = Ember.Route.extend({\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    beforeModel: function (transition) {\n        var c;\n        this._super(transition);\n        c = this.get('Collector');\n        if (transition.targetName !== 'site_safety.mvr.notices' && !c.testNeedsOne('mvr@add')) {\n            transition.abort();\n            return this.transitionTo('site_safety.report.mvr.notices');\n        }\n    },\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var date, monthAgo, store;\n        if (params.project === 'undefined') {\n            delete params.project;\n        }\n        if (!params.group) {\n            delete params.group;\n        }\n        params.sideload = true;\n        params.order = 'date';\n        store = this.get('store');\n        monthAgo = moment().subtract(1, 'month').format('YYYY-MM-DD_');\n        date = moment().format('YYYY-MM-DD');\n        return Ember.RSVP.hash({\n            mvr: store.query('mvr', params),\n            noticesSelected: store.query('trnotice', {\n                type: 'mvr',\n                limit: 100,\n                created: monthAgo.concat(date),\n                sideload: params.sideload,\n                project: params.project,\n                group: params.group,\n            }),\n            notices: store.query('trnotice', {\n                type: 'mvr',\n                limit: 1,\n                created: params.date,\n                project: params.project,\n                group: params.group,\n            }),\n            not_solved: store.query('trnotice', {\n                type: 'mvr',\n                limit: 1,\n                created: params.date,\n                status: 'open',\n                project: params.project,\n                group: params.group,\n            }),\n            overdue: store.query('trnotice', {\n                type: 'mvr',\n                created: params.date,\n                date: params.date,\n                status: 'open',\n                limit: 1,\n                project: params.project,\n                group: params.group,\n            }),\n        });\n    },\n});\n\nexport default SiteSafetyMvrGraphsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"U/7x4N/G\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\",\\\"hideClearFilters\\\"],[[24,[\\\"filters\\\"]],\\\"mvr\\\",\\\"filterChanged\\\",true]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row col-xs-12 export-pdf-button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary btn-large\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"exportNewestPdf\\\",[24,[\\\"project\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.export_newest_pdf\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary btn-large\\\"],[10,\\\"disabled\\\",\\\"\\\"],[11,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"tr.chart.select_project\\\"],null]]]],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.export_newest_pdf\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row site-safety-measurement-row-container\\\"],[8],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-container col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"site_safety.report.mvr.notices\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"notices-graph\\\",null,[[\\\"all\\\",\\\"overdue\\\",\\\"not_solved\\\"],[[24,[\\\"model\\\",\\\"notices\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"model\\\",\\\"overdue\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"model\\\",\\\"not_solved\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"site_safety.report.mvr.data\\\"]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"chart-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"mvr.chart.mvr_rating_pie\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"mvr\\\",\\\"meta\\\",\\\"count\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notices-graph-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"notices-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\",\\\"chart\\\"],[[24,[\\\"data_rating_pie\\\"]],\\\"pie\\\",\\\"#D9534F,#FFC56C,#5CB85C\\\",[24,[\\\"pie_options\\\"]],[24,[\\\"piechart\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"mvr\\\",\\\"meta\\\",\\\"count\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"mvr.chart.measurement_ratings\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"type\\\",\\\"data\\\",\\\"export\\\",\\\"chart\\\"],[\\\"column\\\",[24,[\\\"data\\\"]],true,[24,[\\\"datachart\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data_rating\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"mvr.chart.mvr_rating\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"selectionHandler\\\",\\\"export\\\",\\\"Xmax\\\",\\\"Xmin\\\",\\\"chart\\\"],[[24,[\\\"data_rating\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"handleSelection\\\"],null],true,100,0,[24,[\\\"dataratingchart\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/mvr/graphs/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/notices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMvrNoticesController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from 'tt4/controllers/general-report';\n\nimport { computed } from '@ember/object';\n\nSiteSafetyMvrNoticesController = GeneralReportController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    intl: Em.inject.service(),\n    flags: Em.inject.service(),\n    mvrController: Ember.inject.controller('site_safety/report/mvr'),\n    queryParams: ['status', 'page', 'employer', 'user', 'groupBy', 'project'],\n    filters: computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                field: 'employer',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    arrangedContent: Ember.computed('model.[]', function () {\n        return this.get('content').sortBy('date');\n    }),\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({}),\n        //            editRoute: 'site_safety.mvr.edit'\n        //            historyRoute: 'site_safety.mvr.history'\n        //            hideEdit: true\n        //            hideHistory: true\n        massedit: true,\n        rowActions: [],\n    }),\n    statusSelector: Ember.computed.alias('mvrController.statusSelector'),\n    search: false,\n    status: 'all',\n    form: 'trnotice',\n    showColumns: ['date', 'status', 'desc', 'user', 'project', 'pic'],\n    emailValid: Em.A([]),\n    emailNotValid: Em.A([]),\n    sentToEmails: Em.A([]),\n    extraData: {\n        type: 'mvr',\n    },\n    init_functions: function () {\n        this._super();\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            return this.addRowActions();\n        }\n    },\n    addRowActions: function () {\n        var c, fields, intl, self2;\n        self2 = this;\n        intl = this.get('intl');\n        if (this.Collector == null) {\n            return;\n        }\n        c = this.get('Collector');\n        fields = c.fields('trnotice');\n        return this.get('settings.rowActions').push({\n            text: this.get('intl').t('site_safety.action.send_notice_email'),\n            action: function (self, notifications) {\n                return self2.emailAction(self, self2, notifications);\n            },\n        });\n    },\n    emailAction: function (self, self2, notifications) {\n        var c, emailNotValid, emailsArr, fields, intl;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        fields = c.fields('trnotice');\n        emailNotValid = self2.get('emailNotValid');\n        notifications.forEach(function (notification) {\n            var user, username;\n            if (!notification.get('email')) {\n                user = notification.get('user');\n                username = user.get('lastname') + ' ' + user.get('firstname');\n                if (emailNotValid.indexOf(username) < 0) {\n                    return emailNotValid.push(username);\n                }\n            } else {\n                //if emailNotValid.indexOf(notification.get('email')) < 0\n                //    emailNotValid.push(notification.get('user'))\n                return self2.get('emailValid').push(notification);\n            }\n        });\n        self2.set('emailModalTitle', intl.t('site_safety.action.email.modal_title'));\n        //if nothing selected\n        if (self2.get('emailNotValid.length') === 0 && self2.get('emailValid.length') === 0) {\n            self2.set('emailModalText', intl.t('site_safety.action.email.nothing_found'));\n            self2.set('showEmailModal', true);\n            return;\n        }\n        //if only not valid emails\n        if (self2.get('emailValid.length') === 0) {\n            self2.set('emailModalSent', true);\n            self2.set('showEmailModal', true);\n            return;\n        }\n        //send credentials to valid email\n        emailsArr = self2.get('sentToEmails');\n        self2.get('emailValid').forEach(function (notification) {\n            var email,\n                emailContent,\n                field,\n                file,\n                i,\n                len,\n                linebreak,\n                obj,\n                pics,\n                ref,\n                tmp_file,\n                user,\n                userString,\n                username,\n                value;\n            user = notification.get('user');\n            username =\n                user.get('lastname') +\n                ' ' +\n                user.get('firstname') +\n                ' (' +\n                notification.get('email') +\n                ')';\n            if (emailsArr.indexOf(username) < 0) {\n                emailsArr.push(username);\n            }\n            emailContent = [];\n            emailContent.push(self2.get('intl').t('site_safety.notice.email_content.content'));\n            pics = [];\n            linebreak = '<br>';\n            for (field in fields) {\n                obj = fields[field];\n                if (\n                    obj['features'] != null &&\n                    (obj['features']['hide'] || obj['features']['hide_column'])\n                ) {\n                    continue;\n                }\n                if (obj['type'] === 'hdfile' && notification.get(field)[0]['name']) {\n                    ref = notification.get(field);\n                    for (i = 0, len = ref.length; i < len; i++) {\n                        file = ref[i];\n                        tmp_file = {};\n                        tmp_file['name'] = file['name'];\n                        //tmp_file['url'] = notification.get(field)[0]['url']\n                        tmp_file['s3url'] = file['s3url'];\n                        tmp_file['type'] = file['type'];\n                        pics.push(tmp_file);\n                    }\n                } else {\n                    value = c.format(notification.get(field), obj, null, null, true);\n                    emailContent.push(\n                        self2.get('intl').t('report.trnotice.' + field) + ': ' + value,\n                    );\n                }\n            }\n            if (pics.length > 0) {\n                linebreak = '\\r\\n';\n            }\n            userString = '';\n            if (self2.get('session.currentUser.firstname')) {\n                userString += self2.get('session.currentUser.firstname') + ' ';\n            }\n            if (self2.get('session.currentUser.lastname')) {\n                userString += self2.get('session.currentUser.lastname') + '\\n';\n            }\n            if (self2.get('session.currentUser.email')) {\n                userString += self2.get('session.currentUser.email') + '\\n';\n            }\n            if (self2.get('session.currentUser.phone')) {\n                userString += self2.get('session.currentUser.phone') + '\\n';\n            }\n            if (userString !== '') {\n                userString = '\\r\\n' + userString;\n                emailContent.push(userString);\n            }\n            email = emailContent.join(linebreak);\n            return self2.Collector.ttapi({\n                url: 'sendEmailWithImages',\n                data: {\n                    email: notification.get('email'),\n                    title:\n                        self2.get('session.currentUser.company') +\n                        ' - ' +\n                        self2.get('intl').t('site_safety.notice.email_content.title'),\n                    content: email,\n                    attachments: JSON.stringify(pics),\n                    rowid: notification.get('id'),\n                    add_link: true,\n                },\n                method: 'post',\n            });\n        });\n        self2.set('emailModalSent', true);\n        return self2.set('showEmailModal', true);\n    },\n    actions: {\n        removeEmailModal: function () {\n            this.set('emailModalText', null);\n            this.set('showEmailModal', false);\n            this.set('emailModalSent', false);\n            this.set('emailValid', Em.A([]));\n            this.set('emailNotValid', Em.A([]));\n            return this.set('sentToEmails', Em.A([]));\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        sendEmailAction: function (selected) {\n            return this.emailAction(this, this, selected);\n        },\n    },\n});\n\nexport default SiteSafetyMvrNoticesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/mvr/notices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyMvrNoticesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from 'tt4/routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyMvrNoticesRoute = GeneralReportRoute.extend({\n    capi: service(),\n    flags: service(),\n    form: 'trnotice',\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            params.type = 'mvr';\n            if (params.date) {\n                params.created = params.date;\n                delete params.date;\n            }\n            params.sideload = true;\n            if (params.status === 'all') {\n                delete params.status;\n            }\n            if (Ember.isPresent(params.groupBy)) {\n                params.sideload = true;\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll(this.get('form'), params);\n            } else {\n                return this.store.query('trnotice', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.report.mvr.notices').set('qParams', params);\n        }\n    },\n    actions: {\n        didTransition: function () {\n            return this.set('controller.statusSelector', true);\n        },\n    },\n});\n\nexport default SiteSafetyMvrNoticesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Rx2JcgGi\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\",\\\"user\\\",\\\"user\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"trnotice\\\",[22,\\\"qParams\\\"],\\\"user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"created\\\",\\\"type\\\"],[[23,0,[\\\"date\\\"]],\\\"mvr\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,4,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"sendEmailAction\\\",[23,5,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.action.send_notice_email\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/notices/edit/\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],\\\"trnotice\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"status\\\",\\\"settings\\\",\\\"count\\\",\\\"extraData\\\"],[\\\"bubbleTransition\\\",\\\"trnotice\\\",[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"extraData\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHidden\\\"],[[23,0,[\\\"showEmailModal\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showEmailModal\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"modal-title\\\"],[8],[1,[23,0,[\\\"emailModalTitle\\\"]],false],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[22,\\\"emailModalText\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailModalSent\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailNotValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.action.sendemail.these_were_not_sent\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"emailNotValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item list-group-item-warning\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[23,3,[]],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ban-circle pull-right\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.action.sendemail.these_were_sent\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sentToEmails\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item list-group-item-success\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[23,2,[]],false],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok-circle pull-right\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/mvr/notices/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/observation/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyObservationController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nSiteSafetyObservationController = GeneralReportController.extend({\n    form: 'site_safety_observation',\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    queryParams: ['status', 'page', 'employer', 'creator', 'groupBy', 'project'],\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'employer',\n            }),\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'creator',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    //        Em.Object.create({field: \"user-group\"})\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            //            hideEdit: true\n            //            hideHistory: true\n            editRoute: 'site_safety.observation.edit',\n        }),\n        massedit: true,\n        showGpsButton: true,\n        rowActions: [],\n    }),\n    search: false,\n    status: 'all',\n    limit: 25,\n    groupBy: null,\n    project: null,\n    user: null,\n    q: null,\n    showColumns: ['created', 'creator', 'status', 'desc', 'project', 'pic'],\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyObservationController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/observation/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyObservationRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyObservationRoute = GeneralReportRoute.extend({\n    form: 'site_safety_observation',\n    capi: service(),\n    flags: service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        creator: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            if (params.status === 'all') {\n                delete params.status;\n            }\n            if (Ember.isPresent(params.groupBy)) {\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll('site_safety_observation', params);\n            } else {\n                return this.store.query('site_safety_observation', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.report.observation').set('qParams', params);\n        }\n    },\n});\n\nexport default SiteSafetyObservationRoute;\n","export default Ember.HTMLBars.template({\"id\":\"nRiXoX6O\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@filterChangeAction\\\"],[\\\"site_safety_observation\\\",[22,\\\"qParams\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/site_safety/observation/edit/\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"status\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"site_safety_observation\\\",[24,[\\\"status\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"limit\\\",\\\"offset\\\",\\\"count\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",\\\"site_safety_observation\\\",[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/observation/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyReportController;\n\nimport Ember from 'ember';\n\nSiteSafetyReportController = Ember.Controller.extend({\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    project: null,\n    group: null,\n});\n\nexport default SiteSafetyReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/data/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrDataController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from 'tt4/controllers/general-report';\n\nimport formattedMixin from 'tt4/mixins/sitesafety-formatted-export';\n\nimport { computed } from '@ember/object';\n\nSiteSafetyTrDataController = GeneralReportController.extend(formattedMixin, {\n    intl: Em.inject.service(),\n    flags: Em.inject.service(),\n    queryParams: ['project', 'date', 'page', 'groupBy'],\n    Collector: Ember.inject.service('collector-service'),\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    project: null,\n    form: 'tr',\n    filters: computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    init: function () {\n        this._super();\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            return this.addRowActions();\n        }\n    },\n    formatter: function (column, value) {\n        if (column === 'tr_rating') {\n            if (value > 95) {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-approved\">' + value + ' %</span>',\n                );\n            } else if (value > 90) {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-warning\">' + value + ' %</span>',\n                );\n            } else {\n                return new Ember.String.htmlSafe(\n                    '<span class=\"label-m label-m-open\">' + value + ' %</span>',\n                );\n            }\n        }\n        return false;\n    },\n    showColumns: [\n        'status',\n        'project',\n        'user',\n        'date',\n        'tr_rating',\n        'working_plus',\n        'dust_plus',\n        'electricity_plus',\n        'fall_plus',\n        'garbage_plus',\n        'scaffolding_plus',\n        'tools_plus',\n        'foreman_sign',\n        'worker_sign',\n    ],\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: {\n                dynamic: true,\n                route: 'site_safety.measurement.add.measurement',\n                fields: ['id', 'constructor.modelName', 'project.id'],\n            },\n            historyRoute: 'site_safety.tr.history',\n            //hideEdit: true\n            hideHistory: true,\n            disableStatus: 'approved',\n        }),\n        sortByColumn: 'date-',\n    }),\n    addRowActions: function () {\n        var fields, intl;\n        intl = this.get('intl');\n        if (this.Collector == null) {\n            return;\n        }\n        fields = this.Collector.fields('tr');\n        return this.set('settings.rowActions', [\n            {\n                text: 'site_safety.formatted_pdf_export',\n                action: (self, items) => {\n                    return this.createMeasurementPdf(fields, items);\n                },\n            },\n        ]);\n    },\n    actions: {\n        transitionToEditRoute: function (row) {\n            return this.transitionToRoute(\n                'site_safety.measurement.add.measurement',\n                row.id,\n                'tr',\n                row.project.id,\n            );\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        createSpecialPdf: function (selected) {\n            var fields;\n            fields = this.Collector.fields('tr');\n            return this.createMeasurementPdf(fields, selected);\n        },\n    },\n});\n\nexport default SiteSafetyTrDataController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/data/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrDataRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from 'tt4/routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyTrDataRoute = GeneralReportRoute.extend({\n    form: 'tr',\n    Collector: Ember.inject.service('collector-service'),\n    capi: service(),\n    flags: service(),\n    beforeModel: function (transition) {\n        var c;\n        this._super(transition);\n        c = this.get('Collector');\n        if (transition.targetName !== 'site_safety.tr.notices' && !c.testNeedsOne('tr@add')) {\n            transition.abort();\n            return this.transitionTo('site_safety.tr.notices');\n        }\n    },\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            params.sideload = true;\n            if (Ember.isPresent(params.groupBy)) {\n                params.sideload = true;\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll('tr', params);\n            } else {\n                //        params.order = \"date-\"\n                return this.store.query('tr', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.report.tr.data').set('qParams', params);\n        }\n    },\n});\n\nexport default SiteSafetyTrDataRoute;\n","export default Ember.HTMLBars.template({\"id\":\"C9gOj8Ls\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"tr\\\",[22,\\\"qParams\\\"],\\\"date,user,project,group,q\\\",\\\"user.employer,user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"date\\\",\\\"order\\\"],[[23,0,[\\\"date\\\"]],\\\"date-\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"createSpecialPdf\\\",[23,2,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.formatted_pdf_export\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/site_safety/report/tr/data?modal=tr%2C\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\",\\\"@hideEditStatus\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"transitionToEditRoute\\\"],null],\\\"remove,overview,edit\\\",\\\"approved\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"formatter\\\",\\\"settings\\\",\\\"summableFieldTypes\\\",\\\"showPdfExport\\\",\\\"ownExports\\\",\\\"ownExportAction\\\",\\\"status\\\",\\\"count\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"showColumns\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"formatter\\\"]],[24,[\\\"settings\\\"]],false,false,[24,[\\\"ownExports\\\"]],\\\"ownExportAction\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/tr/data/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/graphs/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrGraphsController;\n\nimport Ember from 'ember';\n\nimport formattedMixin from 'tt4/mixins/sitesafety-formatted-export';\n\nSiteSafetyTrGraphsController = Ember.Controller.extend(formattedMixin, {\n    trController: Ember.inject.controller('site_safety/report/tr'),\n    queryParams: ['project', 'date'],\n    project: Ember.computed.alias('trController.project'),\n    date: Ember.computed.alias('trController.date'),\n    group: Ember.computed.alias('trController.group'),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n                form: 'tr',\n                type: 'database',\n                value: this.get('project'),\n                singleselect: true,\n            }),\n            Em.Object.create({\n                field: 'date',\n                form: 'tr',\n                type: 'date',\n                value: this.get('date'),\n            }),\n            Em.Object.create({\n                field: 'group',\n                form: 'tr',\n                type: 'database',\n                value: this.get('group'),\n                singleselect: true,\n            }),\n        ]);\n    }),\n    pie_options: {\n        pieHole: 0.9,\n        chartArea: {\n            width: '90%',\n            height: '95%',\n        },\n        height: 200,\n        width: 350,\n        pieSliceTextStyle: {\n            color: 'black',\n            fontSize: 20,\n        },\n    },\n    //        slices: {\n    //            1: {offset: 0.02}\n    //            2: {offset: 0.02}\n    //            3: {offset: 0.02}\n    //        }\n    dataSetter: function () {\n        var amount,\n            average_rating,\n            data,\n            data_rating,\n            data_rating_pie,\n            field_rating,\n            fields,\n            pie_over90under95,\n            pie_over95,\n            pie_under90,\n            self,\n            total,\n            totrating,\n            trs;\n        self = this;\n        data = Em.A([\n            [\n                '',\n                this.get('intl').t('tr.title.working'),\n                this.get('intl').t('tr.title.scaffolding'),\n                this.get('intl').t('tr.title.tools'),\n                this.get('intl').t('tr.title.fall'),\n                this.get('intl').t('tr.title.electricity'),\n                this.get('intl').t('tr.title.garbage'),\n                this.get('intl').t('tr.title.dust'),\n            ],\n        ]);\n        data_rating = Em.A([[this.get('intl').t('date'), this.get('intl').t('tr.rating')]]);\n        data_rating_pie = Em.A([\n            [this.get('intl').t('tr.rating'), this.get('intl').t('tr.rating')],\n        ]);\n        pie_under90 = 0;\n        pie_over90under95 = 0;\n        pie_over95 = 0;\n        average_rating = 0;\n        amount = 0;\n        total = 0;\n        trs = this.get('model.tr');\n        if (!trs) {\n            return;\n        }\n        field_rating = [0, 0, 0, 0, 0, 0, 0];\n        fields = ['working', 'scaffolding', 'tools', 'fall', 'electricity', 'garbage', 'dust'];\n        trs.forEach(function (tr, idx) {\n            var field, i, index, len, minus, plus, row, tr_minus, tr_plus;\n            row = [moment(tr.get('date')).format('L')];\n            tr_plus = tr.getProperties(\n                'working_plus',\n                'scaffolding_plus',\n                'tools_plus',\n                'fall_plus',\n                'electricity_plus',\n                'garbage_plus',\n                'dust_plus',\n            );\n            tr_minus = tr.getProperties(\n                'working_minus',\n                'scaffolding_minus',\n                'tools_minus',\n                'fall_minus',\n                'electricity_minus',\n                'garbage_minus',\n                'dust_minus',\n            );\n            for (index = i = 0, len = fields.length; i < len; index = ++i) {\n                field = fields[index];\n                plus = 0;\n                minus = 0;\n                if (tr_plus[field + '_plus']) {\n                    plus = parseInt(tr_plus[field + '_plus'], 10);\n                }\n                if (tr_minus[field + '_minus']) {\n                    minus = parseInt(tr_minus[field + '_minus'], 10);\n                }\n                if (!isNaN((plus / (plus + minus)) * 100)) {\n                    field_rating[index] += parseFloat((plus / (plus + minus)) * 100);\n                }\n                row.push(parseFloat(((plus / (plus + minus)) * 100).toFixed(2)));\n            }\n            if (!isNaN(tr.get('tr_rating')) && tr.get('tr_rating') !== null) {\n                data_rating.push([\n                    moment(tr.get('date')).format('L'),\n                    parseFloat(tr.get('tr_rating')),\n                ]);\n                total += parseFloat(tr.get('tr_rating'));\n                amount++;\n                if (tr.get('tr_rating') < 90) {\n                    pie_under90++;\n                }\n                if (tr.get('tr_rating') >= 90 && tr.get('tr_rating') < 95) {\n                    pie_over90under95++;\n                }\n                if (tr.get('tr_rating') >= 95) {\n                    return pie_over95++;\n                }\n            } else {\n                return data_rating.push([moment(tr.get('date')).format('L'), 0]);\n            }\n        });\n        totrating = [''];\n        field_rating.forEach((rating) => {\n            return totrating.push(Math.round(rating / trs.get('length'), 2));\n        });\n        data.push(totrating);\n        average_rating = Math.round(total / amount) + '%';\n        data_rating_pie.push([this.get('intl').t('tr_rating_pie_under90'), pie_under90]);\n        data_rating_pie.push([\n            this.get('intl').t('tr_rating_pie_over90under95'),\n            pie_over90under95,\n        ]);\n        data_rating_pie.push([this.get('intl').t('tr_rating_pie_over95'), pie_over95]);\n        self.set('data', data);\n        self.set('data_rating', data_rating);\n        self.set('data_rating_pie', data_rating_pie);\n        return self.set('average_rating', average_rating);\n    }.observes('model.tr.[]', 'intl.primaryLocale', 'selectedIndex'),\n    actions: {\n        handleSelection: function (sel) {\n            if (sel.length > 0 && sel[0].row !== null) {\n                if (this.get('selectedIndex') === sel[0].row) {\n                    return this.set('selectedIndex', null);\n                } else {\n                    return this.set('selectedIndex', sel[0].row);\n                }\n            }\n        },\n        exportNewestPdf: function (project) {\n            var charts, fields, newest;\n            // get newest tr record\n            newest = this.store\n                .peekAll('tr')\n                .filter((record) => {\n                    return record.get('project.id') === project;\n                })\n                .sortBy('date')\n                .reverse()\n                .get('firstObject');\n            if (!newest) {\n                this.get('dialogs').alert(\n                    this.get('intl').t('tr.chart.export_newest_pdf_not_found'),\n                );\n            }\n            // export as measurement pdf\n            fields = this.get('Collector').fields('tr');\n            charts = [\n                {\n                    url: this.get('piechart').getImageURI(),\n                    width: 300,\n                    title: this.get('intl').t('tr.chart.tr_rating_pie'),\n                },\n                {\n                    url: this.get('datachart').getImageURI(),\n                    title: this.get('intl').t('tr.chart.measurement_ratings'),\n                },\n                {\n                    url: this.get('dataratingchart').getImageURI(),\n                    title: this.get('intl').t('tr.chart.tr_rating'),\n                },\n            ];\n            return this.createMeasurementPdf(fields, [newest], 'download', charts);\n        },\n        filterChanged: function (value, field) {\n            if (value == null) {\n                return this.set(field, '');\n            } else if (field === 'date') {\n                return this.set(field, value);\n            } else {\n                return this.set(field, value.id);\n            }\n        },\n    },\n});\n\nexport default SiteSafetyTrGraphsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/graphs/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrGraphsRoute;\n\nimport Ember from 'ember';\n\nSiteSafetyTrGraphsRoute = Ember.Route.extend({\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    beforeModel: function (transition) {\n        var c;\n        this._super(transition);\n        c = this.get('Collector');\n        if (transition.targetName !== 'site_safety.tr.notices' && !c.testNeedsOne('tr@add')) {\n            transition.abort();\n            return this.transitionTo('site_safety.report.tr.notices');\n        }\n    },\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var cols, date, monthAgo, store, trfieldkeys, trfields;\n        params.sideload = true;\n        if (params.project === 'undefined') {\n            delete params.project;\n        }\n        if (!params.group) {\n            delete params.group;\n        }\n        params.order = 'date';\n        store = this.get('store');\n        monthAgo = moment().subtract(1, 'month').format('YYYY-MM-DD_');\n        date = moment().format('YYYY-MM-DD');\n        trfields = this.get('Collector').fields('tr');\n        trfieldkeys = Object.keys(trfields);\n        cols = [];\n        trfieldkeys.forEach(function (field) {\n            if (trfields[field].type !== 'multiselect') {\n                return cols.push(field);\n            }\n        });\n        params.cols = cols.join(',');\n        return Ember.RSVP.hash({\n            tr: store.query('tr', params),\n            noticesSelected: store.query('trnotice', {\n                type: 'tr',\n                limit: 100,\n                created: monthAgo.concat(date),\n                sideload: params.sideload,\n                project: params.project,\n                group: params.group,\n            }),\n            notices: store.query('trnotice', {\n                type: 'tr',\n                limit: 1,\n                created: params.date,\n                project: params.project,\n                group: params.group,\n            }),\n            not_solved: store.query('trnotice', {\n                type: 'tr',\n                limit: 1,\n                created: params.date,\n                status: 'open',\n                project: params.project,\n                group: params.group,\n            }),\n            overdue: store.query('trnotice', {\n                type: 'tr',\n                created: params.date,\n                date: params.date,\n                status: 'open',\n                limit: 1,\n                project: params.project,\n                group: params.group,\n            }),\n        });\n    },\n});\n\nexport default SiteSafetyTrGraphsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"xm+HHklx\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\",\\\"hideClearFilters\\\"],[[24,[\\\"filters\\\"]],\\\"tr\\\",\\\"filterChanged\\\",true]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row col-xs-12 export-pdf-button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary btn-large\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"exportNewestPdf\\\",[24,[\\\"project\\\"]]],null]],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.export_newest_pdf\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-primary btn-large\\\"],[10,\\\"disabled\\\",\\\"\\\"],[11,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"tr.chart.select_project\\\"],null]]]],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.export_newest_pdf\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row site-safety-measurement-row-container\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-container col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"site_safety.report.tr.notices\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"notices-graph\\\",null,[[\\\"all\\\",\\\"overdue\\\",\\\"not_solved\\\"],[[24,[\\\"model\\\",\\\"notices\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"model\\\",\\\"overdue\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"model\\\",\\\"not_solved\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"site_safety.report.tr.data\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"tr\\\",\\\"meta\\\",\\\"count\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notices-graph-container\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"notices-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.tr_rating_pie\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"average_rating\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            , \\\"],[1,[28,\\\"t\\\",[\\\"tr.chart.average\\\"],null],false],[0,\\\": \\\"],[1,[22,\\\"average_rating\\\"],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\",\\\"chart\\\"],[[24,[\\\"data_rating_pie\\\"]],\\\"pie\\\",\\\"#D9534F,#FFC56C,#5CB85C\\\",[24,[\\\"pie_options\\\"]],[24,[\\\"piechart\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"tr\\\",\\\"meta\\\",\\\"count\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.measurement_ratings\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"type\\\",\\\"data\\\",\\\"export\\\",\\\"chart\\\",\\\"Ymax\\\",\\\"Ymin\\\"],[\\\"column\\\",[24,[\\\"data\\\"]],true,[24,[\\\"datachart\\\"]],100,0]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"data_rating\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"tr.chart.tr_rating\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"selectionHandler\\\",\\\"export\\\",\\\"Xmax\\\",\\\"Xmin\\\",\\\"chart\\\"],[[24,[\\\"data_rating\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"handleSelection\\\"],null],true,100,0,[24,[\\\"dataratingchart\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/tr/graphs/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/notices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrNoticesController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from 'tt4/controllers/general-report';\n\nimport { computed } from '@ember/object';\n\nSiteSafetyTrNoticesController = GeneralReportController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    flags: Ember.inject.service(),\n    intl: Em.inject.service(),\n    queryParams: ['project', 'status', 'page', 'employer', 'user', 'date', 'groupBy'],\n    filters: computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'date',\n            }),\n            Em.Object.create({\n                field: 'employer',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n        ]);\n    }),\n    arrangedContent: Ember.computed('model.[]', function () {\n        return this.get('content').sortBy('date');\n    }),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({}),\n        //            hideEdit: true\n        //            hideHistory: true\n        massedit: true,\n        rowActions: [],\n    }),\n    date: moment().subtract(3, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    search: false,\n    status: 'all',\n    form: 'trnotice',\n    showColumns: ['date', 'status', 'desc', 'user', 'project', 'pic'],\n    extraData: {\n        type: 'tr',\n    },\n    emailValid: Em.A([]),\n    emailNotValid: Em.A([]),\n    sentToEmails: Em.A([]),\n    init_functions: function () {\n        this._super();\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            return this.addRowActions();\n        }\n    },\n    addRowActions: function () {\n        var self2;\n        self2 = this;\n        if (this.Collector == null) {\n            return;\n        }\n        return this.get('settings.rowActions').push({\n            text: this.get('intl').t('site_safety.action.send_notice_email'),\n            action: function (self, notifications) {\n                return self2.emailAction(self, self2, notifications);\n            },\n        });\n    },\n    emailAction: function (self, self2, notifications) {\n        var c, emailNotValid, emailsArr, fields, intl;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        fields = c.fields('trnotice');\n        emailNotValid = self2.get('emailNotValid');\n        notifications.forEach(function (notification) {\n            var user, username;\n            if (!notification.get('email')) {\n                user = notification.get('user');\n                username = user.get('lastname') + ' ' + user.get('firstname');\n                if (emailNotValid.indexOf(username) < 0) {\n                    return emailNotValid.push(username);\n                }\n            } else {\n                //if emailNotValid.indexOf(notification.get('email')) < 0\n                //    emailNotValid.push(notification.get('user'))\n                return self2.get('emailValid').push(notification);\n            }\n        });\n        self2.set('emailModalTitle', intl.t('site_safety.action.email.modal_title'));\n        //if nothing selected\n        if (self2.get('emailNotValid.length') === 0 && self2.get('emailValid.length') === 0) {\n            self2.set('emailModalText', intl.t('site_safety.action.email.nothing_found'));\n            self2.set('showEmailModal', true);\n            return;\n        }\n        //if only not valid emails\n        if (self2.get('emailValid.length') === 0) {\n            self2.set('emailModalSent', true);\n            self2.set('showEmailModal', true);\n            return;\n        }\n        //send credentials to valid email\n        emailsArr = self2.get('sentToEmails');\n        self2.get('emailValid').forEach(function (notification) {\n            var email,\n                emailContent,\n                field,\n                file,\n                i,\n                len,\n                linebreak,\n                obj,\n                pics,\n                ref,\n                tmp_file,\n                user,\n                userString,\n                username,\n                value;\n            user = notification.get('user');\n            username =\n                user.get('lastname') +\n                ' ' +\n                user.get('firstname') +\n                ' (' +\n                notification.get('email') +\n                ')';\n            if (emailsArr.indexOf(username) < 0) {\n                emailsArr.push(username);\n            }\n            emailContent = [];\n            emailContent.push(self2.get('intl').t('site_safety.notice.email_content.content'));\n            pics = [];\n            linebreak = '<br>';\n            for (field in fields) {\n                obj = fields[field];\n                if (\n                    obj['features'] != null &&\n                    (obj['features']['hide'] || obj['features']['hide_column'])\n                ) {\n                    continue;\n                }\n                if (obj['type'] === 'hdfile' && notification.get(field)[0]['name']) {\n                    ref = notification.get(field);\n                    for (i = 0, len = ref.length; i < len; i++) {\n                        file = ref[i];\n                        tmp_file = {};\n                        tmp_file['name'] = file['name'];\n                        //tmp_file['url'] = notification.get(field)[0]['url']\n                        tmp_file['s3url'] = file['s3url'];\n                        tmp_file['type'] = file['type'];\n                        pics.push(tmp_file);\n                    }\n                } else {\n                    value = c.format(notification.get(field), obj, null, null, true);\n                    emailContent.push(\n                        self2.get('intl').t('report.trnotice.' + field) + ': ' + value,\n                    );\n                }\n            }\n            if (pics.length > 0) {\n                linebreak = '\\r\\n';\n            }\n            userString = '';\n            if (self2.get('session.currentUser.firstname')) {\n                userString += self2.get('session.currentUser.firstname') + ' ';\n            }\n            if (self2.get('session.currentUser.lastname')) {\n                userString += self2.get('session.currentUser.lastname') + '\\n';\n            }\n            if (self2.get('session.currentUser.email')) {\n                userString += self2.get('session.currentUser.email') + '\\n';\n            }\n            if (self2.get('session.currentUser.phone')) {\n                userString += self2.get('session.currentUser.phone') + '\\n';\n            }\n            if (userString !== '') {\n                userString = '\\r\\n' + userString;\n                emailContent.push(userString);\n            }\n            email = emailContent.join(linebreak);\n            return self2.Collector.ttapi({\n                url: 'sendEmailWithImages',\n                data: {\n                    email: notification.get('email'),\n                    title:\n                        self2.get('session.currentUser.company') +\n                        ' - ' +\n                        self2.get('intl').t('site_safety.notice.email_content.title'),\n                    content: email,\n                    attachments: JSON.stringify(pics),\n                    rowid: notification.get('id'),\n                    add_link: true,\n                },\n                method: 'post',\n            });\n        });\n        self2.set('emailModalSent', true);\n        return self2.set('showEmailModal', true);\n    },\n    actions: {\n        removeEmailModal: function () {\n            this.set('emailModalText', null);\n            this.set('showEmailModal', false);\n            this.set('emailModalSent', false);\n            this.set('emailValid', Em.A([]));\n            this.set('emailNotValid', Em.A([]));\n            return this.set('sentToEmails', Em.A([]));\n        },\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        sendEmailAction: function (selected) {\n            return this.emailAction(this, this, selected);\n        },\n    },\n});\n\nexport default SiteSafetyTrNoticesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/report/tr/notices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyTrNoticesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from 'tt4/routes/general-report';\n\nimport { inject as service } from '@ember/service';\n\nSiteSafetyTrNoticesRoute = GeneralReportRoute.extend({\n    capi: service(),\n    flags: service(),\n    form: 'trnotice',\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    actions: {\n        didTransition: function () {\n            return this.set('controller.statusSelector', true);\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('ember-movenium-form-report-measurements')) {\n            params.type = 'tr';\n            if (params.date) {\n                params.created = params.date;\n                delete params.date;\n            }\n            params.sideload = true;\n            if (params.status === 'all') {\n                delete params.status;\n            }\n            if (Ember.isPresent(params.groupBy)) {\n                params.sideload = true;\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll(this.get('form'), params);\n            } else {\n                return this.store.query('trnotice', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('site-safety.report.tr.notices').set('qParams', params);\n        }\n    },\n});\n\nexport default SiteSafetyTrNoticesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"xOJG3hOW\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\",\\\"user\\\",\\\"user\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-measurements\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"trnotice\\\",[22,\\\"qParams\\\"],\\\"user.worktimegroup\\\",[28,\\\"hash\\\",null,[[\\\"created\\\",\\\"type\\\"],[[23,0,[\\\"date\\\"]],\\\"tr\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,4,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\\n                    \\\"],[6,[23,7,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"sendEmailAction\\\",[23,5,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"site_safety.action.send_notice_email\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,7,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/notices/edit/\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,6,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,5,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],\\\"trnotice\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"status\\\",\\\"settings\\\",\\\"count\\\",\\\"extraData\\\"],[\\\"bubbleTransition\\\",\\\"trnotice\\\",[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"extraData\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHidden\\\"],[[23,0,[\\\"showEmailModal\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showEmailModal\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"modal-title\\\"],[8],[1,[23,0,[\\\"emailModalTitle\\\"]],false],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[1,[22,\\\"emailModalText\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailModalSent\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailNotValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.action.sendemail.these_were_not_sent\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"emailNotValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item list-group-item-warning\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[23,3,[]],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ban-circle pull-right\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"emailValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site_safety.action.sendemail.these_were_sent\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sentToEmails\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item list-group-item-success\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[23,2,[]],false],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok-circle pull-right\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/report/tr/notices/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetyRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSiteSafetyRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default SiteSafetyRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/saved/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetySavedController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport pdf_measurement_mixin from '../../../mixins/sitesafety-export';\n\nimport formatted_pdf_measurement_mixin from '../../../mixins/sitesafety-formatted-export';\n\nSiteSafetySavedController = Ember.Controller.extend(\n    pdf_measurement_mixin,\n    formatted_pdf_measurement_mixin,\n    {\n        Collector: Ember.inject.service('collector-service'),\n        intl: Ember.inject.service(),\n        queryParams: ['email'],\n        email: false,\n        form: Ember.computed('model', function () {\n            return this.get('model.constructor.modelName');\n        }),\n        fields: Ember.computed('model', function () {\n            var fields;\n            fields = this.get('Collector').fieldArray(this.get('model.constructor.modelName'));\n            return fields.reject(function (item) {\n                item.ext = item.name;\n                if (item.name.slice(-6) === '_minus') {\n                    return true;\n                }\n            });\n        }),\n        afterSave: Ember.computed('model', function () {\n            if (['tr', 'mvr'].includes(this.get('model.constructor.modelName'))) {\n                return 'site_safety.report.' + this.get('model.constructor.modelName') + '.graphs';\n            }\n            return [\n                'site_safety.measurement.graphs',\n                this.get('model.constructor.modelName').substring(12).toLowerCase(),\n            ];\n        }),\n        showApprovalLinkSelection: Ember.computed(function () {\n            var field, fields, found;\n            fields = this.get('fields');\n            found = false;\n            for (field in fields) {\n                if (\n                    fields[field].type === 'status' &&\n                    !fields[field].features.readonly &&\n                    indexOf.call(fields[field].options, 'approved') >= 0\n                ) {\n                    found = true;\n                }\n            }\n            return found;\n        }),\n        actions: {\n            //        setEmail: (value) ->\n            //            @get('store').findRecord('user', value.get('id'), {reload: true}).then (user) =>\n            //                user.validate(['email']).then =>\n            //                    error = user.get('errors').errorsFor('email')\n            //                    email = user.get('email')\n            //                    if error.length > 0\n            //                        @set 'email_error', error\n            //                    else if email\n            //                        @set 'email', email\n            send_email: function (recipient, title, content, params) {\n                var fields;\n                fields = this.get('Collector').fields(this.get('model.constructor.modelName'));\n                this.set('loading', true);\n                return this.createMeasurementPdf(fields, [this.get('model')], 'base64').then(\n                    (pdf) => {\n                        var c, intl;\n                        c = this.get('Collector');\n                        intl = this.get('intl');\n                        return c\n                            .ttapi({\n                                method: 'post',\n                                url: 'sendReportAsEmail',\n                                data: {\n                                    to_address: recipient,\n                                    email: pdf,\n                                    header: title,\n                                    content: content,\n                                    lang: intl.primaryLocale,\n                                    includeApproval: params.approvalLink,\n                                    form: this.get('form'),\n                                    form_name: 'tr',\n                                    rowids: [this.get('model.id')],\n                                },\n                            })\n                            .then((ret) => {\n                                this.set('emailSent', true);\n                                return this.set('loading', false);\n                            })\n                            .catch((e) => {\n                                this.set('email', false);\n                                this.set('loading', false);\n                                throw new Ember.Error(e);\n                            });\n                    },\n                );\n            },\n            removeModal: function () {\n                return this.set('email', false);\n            },\n        },\n    },\n);\n\nexport default SiteSafetySavedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/site-safety/saved/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetySavedRoute;\n\nimport Ember from 'ember';\n\nimport toTop from '../../../mixins/reset-scroll';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSiteSafetySavedRoute = Ember.Route.extend(toTop, AuthenticatedRouteMixin, {\n    store: Ember.inject.service(),\n    model: function (params) {\n        return this.get('store').findRecord(params.type, params.id, {\n            include: true,\n        });\n    },\n});\n\n//    actions:\n//        willTransition: ->\n//            @get('store').unloadAll('tr')\nexport default SiteSafetySavedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"86ZtV5tT\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saved.title\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[23,1,[\\\"name\\\"]],[23,1,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n                    : \\\"],[9],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[[23,1,[]],[23,1,[\\\"form\\\"]],[24,[\\\"model\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"afterSave\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[4,\\\"link-to\\\",null,[[\\\"params\\\",\\\"tagName\\\",\\\"classNames\\\"],[[24,[\\\"afterSave\\\"]],\\\"a\\\",\\\"btn btn-m-link btn-lg btn-block\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\"],[\\\"a\\\",\\\"btn btn-m-link btn-lg btn-block\\\",[24,[\\\"afterSave\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"query\\\"],[\\\"a\\\",\\\"btn btn-m-link btn-lg btn-block\\\",[28,\\\"hash\\\",null,[[\\\"email\\\"],[true]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"site_safety.saved.send_email\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"email\\\"]],true],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"export-modal\\\",null,[[\\\"sendEmailAction\\\",\\\"showEmailModal\\\",\\\"initType\\\",\\\"form\\\",\\\"showApprovalLinkSelection\\\",\\\"includeApprovalLink\\\",\\\"emailSent\\\",\\\"loading\\\",\\\"currentTemplate\\\",\\\"action\\\",\\\"count\\\"],[\\\"send_email\\\",[24,[\\\"email\\\"]],\\\"email\\\",[24,[\\\"form\\\"]],[24,[\\\"showApprovalLinkSelection\\\"]],[24,[\\\"includeApprovalLink\\\"]],[24,[\\\"emailSent\\\"]],[24,[\\\"loading\\\"]],[24,[\\\"currentTemplate\\\"]],[24,[\\\"action\\\"]],1]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/saved/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"MNBM1Qx+\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/site-safety/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ProjectsAddController;\n\nimport Ember from 'ember';\n\nProjectsAddController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    session: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    intl: Em.inject.service(),\n    projectField: Em.computed('model', function () {\n        return this.get('Collector').field('skyddsrond', 'project');\n    }),\n    setDefaultValue: function (field) {\n        if (field.name === 'project') {\n            field.features.hide = true;\n        }\n        return field;\n    },\n    sendNoticeEmail: function (notification) {\n        var c,\n            email,\n            emailContent,\n            field,\n            fields,\n            file,\n            i,\n            len,\n            linebreak,\n            obj,\n            pics,\n            projectString,\n            ref,\n            tmp_file,\n            userString,\n            value;\n        c = this.get('Collector');\n        fields = c.fields('notice');\n        pics = [];\n        emailContent = [];\n        emailContent.push(this.get('intl').t('site_safety.notice.email_content.content'));\n        for (field in fields) {\n            obj = fields[field];\n            if (field === 'status') {\n                continue;\n            }\n            if (obj['type'] === 'hdfile') {\n                ref = notification.get(field);\n                for (i = 0, len = ref.length; i < len; i++) {\n                    file = ref[i];\n                    console.log(file);\n                    tmp_file = {};\n                    tmp_file['name'] = file.name;\n                    tmp_file['url'] = file.url;\n                    tmp_file['s3url'] = file.s3url;\n                    tmp_file['type'] = file.type;\n                    pics.push(tmp_file);\n                }\n            } else {\n                value = c._format_(notification.get(field), 'notice', field);\n                emailContent.push(this.get('intl').t('report.notice.' + field) + ': ' + value);\n            }\n        }\n        userString = '';\n        if (this.get('session.currentUser.firstname')) {\n            userString += this.get('session.currentUser.firstname') + ' ';\n        }\n        if (this.get('session.currentUser.lastname')) {\n            userString += this.get('session.currentUser.lastname') + '\\n';\n        }\n        if (this.get('session.currentUser.email')) {\n            userString += this.get('session.currentUser.email') + '\\n';\n        }\n        if (this.get('session.currentUser.phone')) {\n            userString += this.get('session.currentUser.phone') + '\\n';\n        }\n        projectString = '';\n        if (notification.get('project.number')) {\n            projectString += notification.get('project.number') + ' ';\n        }\n        projectString += notification.get('project.name');\n        linebreak = '\\n';\n        email = emailContent.join(linebreak);\n        // get email for assigned user\n        return this.get('store')\n            .findRecord('user', notification.get('user.id'), {\n                reload: true,\n            })\n            .then((userRecord) => {\n                var emailAddress;\n                emailAddress = userRecord.get('email');\n                return this.get('Collector').ttapi({\n                    dataType: 'text',\n                    url: 'sendEmailWithImages',\n                    data: {\n                        form: 'notice',\n                        email: emailAddress,\n                        title:\n                            this.get('session.currentUser.company') +\n                            ' - ' +\n                            this.get('intl').t('site_safety.notice.email_content.title'),\n                        content: email,\n                        link_text: this.get('intl').t('site_safety.notice.fix_link')['string'],\n                        attachments: JSON.stringify(pics),\n                        rowid: notification.get('id'),\n                        add_link: true,\n                        userid: userRecord.get('id'),\n                    },\n                    method: 'post',\n                });\n            });\n    },\n    actions: {\n        setValue: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n        addNotice: function (value, field) {\n            var c, object;\n            c = this.get('Collector');\n            object = c.field('skyddsrond', field);\n            if (object.type === 'radio' && value === '$med_anm') {\n                this.set('openNotice', field);\n                return this.set(\n                    'noticeRecord',\n                    this.get('store').createRecord('notice', {\n                        project: this.get('model.project'),\n                        creator: this.get('session.currentUser'),\n                        fixbydate: moment().add(7, 'days').format('YYYY-MM-DD'),\n                    }),\n                );\n            } else if (object.type === 'radio') {\n                return this.send('closeNotice');\n            }\n        },\n        addToNoticeArray: function (settings, record) {\n            var field;\n            field = this.get('model.' + this.get('openNotice') + '_notices');\n            if (Ember.isArray(field)) {\n                field.pushObject(record);\n            } else {\n                this.set('model.' + this.get('openNotice') + '_notices', Em.A([record]));\n            }\n            this.sendNoticeEmail(record);\n            return this.send('closeNotice', false);\n        },\n        closeNotice: function (destroy = true) {\n            this.set('openNotice', false);\n            if (destroy && this.get('noticeRecord')) {\n                this.get('noticeRecord').destroyRecord();\n            }\n            return this.set('noticeRecord', false);\n        },\n        cancel: function () {\n            return this.transitionToRoute('skyddsrond.report');\n        },\n        saved: function (settings, record) {\n            return this.send('transitionToSaved', record);\n        },\n        openInfo: function (field) {\n            return this.get('dialogs').alert(this.get('intl').t('skyddsrond.info.' + field));\n        },\n    },\n});\n\nexport default ProjectsAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondAddRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport toTop from '../../../mixins/reset-scroll';\n\nSkyddsrondAddRoute = Ember.Route.extend(AuthenticatedRouteMixin, toTop, {\n    Collector: Ember.inject.service('collector-service'),\n    model: function () {\n        var default_values, fields;\n        fields = this.get('Collector').fieldArray('skyddsrond');\n        default_values = {};\n        fields.forEach(function (item) {\n            if (item.type === 'radio') {\n                return (default_values[item.name] = '$ej_akt');\n            }\n        });\n        return this.get('store').createRecord('skyddsrond', default_values);\n    },\n    actions: {\n        transitionToSaved: function (record) {\n            return this.transitionTo('skyddsronds.saved', record);\n        },\n    },\n});\n\nexport default SkyddsrondAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"mNU4f1D0\",\"block\":\"{\\\"symbols\\\":[\\\"component\\\",\\\"field\\\",\\\"record\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.skyddsrond\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"tagName\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"span\\\",\\\"skyddsronds.report\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"skyddsrond-container\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"projectField\\\"]]],[[\\\"change\\\",\\\"model\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\"],null],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"mini text-muted\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"collector/record-custom-comp\\\",null,[[\\\"record\\\",\\\"form\\\",\\\"returnField\\\",\\\"bubbleChange\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"model\\\"]],\\\"skyddsrond\\\",[24,[\\\"setDefaultValue\\\"]],\\\"addNotice\\\",\\\"saved\\\",\\\"cancel\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"type\\\"]],\\\"radio\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default btn-sm pull-left\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openInfo\\\",[23,2,[\\\"name\\\"]]]],[8],[1,[28,\\\"standard-icon\\\",[\\\"info\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"collector/field-container\\\",[[23,2,[]]],[[\\\"change\\\",\\\"model\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\"],[[\\\"target\\\"],[[23,1,[]]]]],[23,3,[]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[[28,\\\"concat\\\",[[23,2,[\\\"form\\\"]],\\\".\\\",[23,2,[\\\"name\\\"]],\\\"_notices\\\"],null]],null]],null,{\\\"statements\\\":[[4,\\\"skyddsronds/notice-array\\\",null,[[\\\"field\\\",\\\"model\\\",\\\"addNotice\\\",\\\"noticeAdded\\\"],[[23,2,[]],[23,3,[]],[28,\\\"action\\\",[[23,0,[]],\\\"addNotice\\\"],null],\\\"closeNotice\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"openNotice\\\"]],[23,2,[\\\"name\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"glyphicon glyphicon-remove-circle icon-big pull-right\\\"],[12,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"skyddsrond.notice.remove\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"closeNotice\\\"]],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector/record-custom-comp\\\",null,[[\\\"record\\\",\\\"form\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"noticeRecord\\\"]],\\\"notice\\\",\\\"addToNoticeArray\\\",\\\"closeNotice\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"mini text-muted\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2,3]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.select_project_first\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/skyddsronds/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/dashboard/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondDashboardController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nSkyddsrondDashboardController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    queryParams: ['project', 'date'],\n    form: 'skyddsrond',\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({}),\n    }),\n    filters: Em.A([]),\n    date: moment().subtract(1, 'month').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    pie_options: {\n        pieHole: 0.9,\n        chartArea: {\n            width: '90%',\n            height: '95%',\n        },\n        height: 200,\n        width: 350,\n        pieSliceTextStyle: {\n            color: 'black',\n            fontSize: 20,\n        },\n    },\n    //        slices: {\n    //            1: {offset: 0.02}\n    //            2: {offset: 0.02}\n    //            3: {offset: 0.02}\n    //        }\n    data: Ember.computed('model.skyddsrond', function () {\n        var arr, by_date, date_obj, intl, key, obj, value;\n        obj = {\n            $utan_anm: 0,\n            $med_anm: 0,\n            $ej_akt: 0,\n        };\n        date_obj = {};\n        //        projects = Em.A([])\n        this.get('model.skyddsrond').forEach(function (item) {\n            var date;\n            //            projects.pushObject item.get('project.id')\n            date = item.get('date');\n            if (date_obj[date] == null) {\n                date_obj[date] = {\n                    $utan_anm: 0,\n                    $med_anm: 0,\n                    $ej_akt: 0,\n                };\n            }\n            return item.eachAttribute(function (name, meta) {\n                var value;\n                value = item.get(name);\n                if (value === '$utan_anm' || value === '$med_anm' || value === '$ej_akt') {\n                    ++date_obj[date][value];\n                    return ++obj[value];\n                }\n            });\n        });\n        intl = this.get('intl');\n        arr = Em.A([\n            ['Rating', 'Value'],\n            [intl.t('skyddsrond.option.utan_anm'), obj['$utan_anm']],\n            [intl.t('skyddsrond.option.med_anm'), obj['$med_anm']],\n            [intl.t('skyddsrond.option.ej_akt'), obj['$ej_akt']],\n        ]);\n        by_date = [\n            [\n                'Date',\n                intl.t('skyddsrond.option.utan_anm'),\n                intl.t('skyddsrond.option.med_anm'),\n                intl.t('skyddsrond.option.ej_akt'),\n            ],\n        ];\n        //        by_date_normalized = [[\"Date\", \"Utan\",\"Med\",\"Ej akt\"]]\n        //        projects_amount = projects.uniq().get('length')\n        for (key in date_obj) {\n            value = date_obj[key];\n            by_date.push([\n                moment(key).format('L'),\n                value['$utan_anm'],\n                value['$med_anm'],\n                value['$ej_akt'],\n            ]);\n        }\n        return {\n            //            by_date_normalized.push [moment(key).format('L'), value[\"$utan_anm\"]/projects_amount, value[\"$med_anm\"]/projects_amount, value[\"$ej_akt\"]/projects_amount]\n            total: arr,\n            by_date: by_date, //, by_date_normalized: by_date_normalized}\n        };\n    }),\n    pie_colors: '#086E3D,#C51017,#B3B3B3',\n    chart_options: {\n        height: 350,\n        width: '100%',\n        colors: ['#086E3D', '#C51017', '#B3B3B3'],\n    },\n});\n\nexport default SkyddsrondDashboardController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/dashboard/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondDashboardRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nSkyddsrondDashboardRoute = GeneralReportRoute.extend({\n    store: Ember.inject.service(),\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var store;\n        params = this._super(params);\n        params.sideload = true;\n        store = this.get('store');\n        return Ember.RSVP.hash({\n            skyddsrond: store.query('skyddsrond', params),\n            notices: store.query('notice', {\n                limit: 1,\n                project: params.project,\n            }),\n            not_solved: store.query('notice', {\n                limit: 1,\n                status: 'open',\n                project: params.project,\n            }),\n            overdue: store.query('notice', {\n                fixbydate: params.date,\n                status: 'open',\n                limit: 1,\n                project: params.project,\n            }),\n        });\n    },\n});\n\nexport default SkyddsrondDashboardRoute;\n","export default Ember.HTMLBars.template({\"id\":\"CQfBWscd\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-container\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"notices-graph\\\",null,[[\\\"all\\\",\\\"overdue\\\",\\\"not_solved\\\"],[[24,[\\\"model\\\",\\\"notices\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"model\\\",\\\"overdue\\\",\\\"meta\\\",\\\"count\\\"]],[24,[\\\"model\\\",\\\"not_solved\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"site-safety-overview-item\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.dashboard.pie_all\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"skyddsrond\\\",\\\"meta\\\",\\\"count\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notices-graph-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"notices-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\"],[[24,[\\\"data\\\",\\\"total\\\"]],\\\"pie\\\",[24,[\\\"pie_colors\\\"]],[24,[\\\"pie_options\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.dashboard.timeline\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[24,[\\\"model\\\",\\\"skyddsrond\\\",\\\"meta\\\",\\\"count\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"export\\\",\\\"options\\\"],[[24,[\\\"data\\\",\\\"by_date\\\"]],true,[24,[\\\"chart_options\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.dashboard.no_info\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/skyddsronds/dashboard/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/notice-array/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondsNoticeArrayComponent;\n\nimport Ember from 'ember';\n\nSkyddsrondsNoticeArrayComponent = Ember.Component.extend({\n    notices: Em.computed('model', 'refresh', function () {\n        var field, model;\n        model = this.get('model');\n        field = this.get('field');\n        return model.get(field.name + '_notices');\n    }),\n    columns: Ember.computed('form', function () {\n        var c, form;\n        c = this.get('Collector');\n        form = c.field(this.get('field.form'), this.get('field.name') + '_notices').options.form;\n        return c.fieldArray(form).mapBy('name');\n    }),\n    showNotices: false,\n    actions: {\n        add: function () {\n            if (this.get('addNotice')) {\n                return this.addNotice('$med_anm', this.get('field.name'));\n            }\n        },\n        showNotices: function () {\n            return this.toggleProperty('showNotices');\n        },\n    },\n});\n\nexport default SkyddsrondsNoticeArrayComponent;\n","export default Ember.HTMLBars.template({\"id\":\"n/ZpG2S7\",\"block\":\"{\\\"symbols\\\":[\\\"notice\\\",\\\"column\\\",\\\"column\\\",\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notice-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"notices\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"b\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"showNotices\\\"]],[8],[1,[28,\\\"t\\\",[\\\"notice_array.show_notices\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move \\\",[28,\\\"if\\\",[[24,[\\\"showNotices\\\"]],\\\"move-CollapseArrow\\\",\\\"move-ExpandArrow\\\"],null]]]],[8],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Plus pull-right text-success icon-big\\\"],[12,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"notice_array.add_notice\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"add\\\"]],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showNotices\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"notice-table-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive table-hover\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"report.notice.\\\",[23,3,[]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"notices\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"notice\\\",[23,2,[]],[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[14,4],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/skyddsronds/notice-array/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/notices/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondReportController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nSkyddsrondReportController = GeneralReportController.extend({\n    form: 'notice',\n    showColumns: ['fixbydate', 'project', 'title', 'desc', 'status', 'pic', 'user'],\n    queryParams: ['fixbydate', 'status', 'user', 'project'],\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideEdit: true,\n        }),\n        sortByColumn: 'fixbydate',\n    }),\n    filters: Em.A([]),\n    status: 'all',\n});\n\nexport default SkyddsrondReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/notices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondReportRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nSkyddsrondReportRoute = GeneralReportRoute.extend({\n    form: 'notice',\n    queryParams: {\n        fixbydate: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('notice', params);\n    },\n});\n\nexport default SkyddsrondReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"XEEw5X7Z\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/skyddsronds/notices/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondReportController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nSkyddsrondReportController = GeneralReportController.extend({\n    form: 'skyddsrond',\n    showColumns: ['date', 'project', 'user', 'foreman_sign', 'safety_officer_sign'],\n    queryParams: ['date', 'status', 'user', 'project'],\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideEdit: true,\n            hideHistory: true,\n        }),\n        sortByColumn: 'project',\n    }),\n    filters: Em.A([]),\n});\n\nexport default SkyddsrondReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondReportRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nSkyddsrondReportRoute = GeneralReportRoute.extend({\n    form: 'skyddsrond',\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('skyddsrond', params);\n    },\n});\n\nexport default SkyddsrondReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"2Oclos1I\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/skyddsronds/report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondsRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSkyddsrondsRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default SkyddsrondsRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/saved/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SiteSafetySavedController;\n\nimport Ember from 'ember';\n\nimport pdf_mixin from '../../../mixins/pdf-export';\n\nSiteSafetySavedController = Ember.Controller.extend(pdf_mixin, {\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    queryParams: ['email'],\n    email: false,\n    fields: Ember.computed('model', function () {\n        var fields;\n        fields = this.get('Collector').fieldArray(this.get('model.constructor.modelName'));\n        return fields.reject(function (item) {\n            item.ext = item.name;\n            return false;\n        });\n    }),\n    afterSave: Ember.computed('model', function () {\n        return 'site_safety.' + this.get('model.constructor.modelName') + '.graphs';\n    }),\n    actions: {\n        //        setEmail: (value) ->\n        //            @get('store').findRecord('user', value.get('id'), {reload: true}).then (user) =>\n        //                user.validate(['email']).then =>\n        //                    error = user.get('errors').errorsFor('email')\n        //                    email = user.get('email')\n        //                    if error.length > 0\n        //                        @set 'email_error', error\n        //                    else if email\n        //                        @set 'email', email\n        send_email: function () {\n            var email, fields;\n            email = this.get('address');\n            if (!email) {\n                return this.set('email_error', this.get('intl').t('validation.errors.mandatory'));\n            } else if (\n                email &&\n                !/^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i.test(\n                    email,\n                )\n            ) {\n                return this.set('email_error', this.get('intl').t('validation.errors.email'));\n            } else {\n                this.set('loading', true);\n                fields = this.get('fields').reject(function (item) {\n                    if (item.type === 'databasearray') {\n                        return true;\n                    }\n                });\n                return this.formatCollectorFieldsToPdfArray(fields, this.get('model')).then(\n                    (data) => {\n                        var element;\n                        element = this.createPdfTableElement(['name', 'value'], data, ['', '']);\n                        return this.createPdfFromElements([element], 'base64').then((pdf) => {\n                            var c, intl;\n                            c = this.get('Collector');\n                            intl = this.get('intl');\n                            return c\n                                .ttapi({\n                                    method: 'post',\n                                    url: 'sendReportAsEmail',\n                                    data: {\n                                        to_address: this.get('address'),\n                                        email: pdf,\n                                        header: intl.t('skyddsrond.email.title', {\n                                            date: moment(this.get('model.date')).format('L'),\n                                        }),\n                                        content: this.get('email_content'),\n                                    },\n                                })\n                                .then((ret) => {\n                                    this.set('email', false);\n                                    return this.set('loading', false);\n                                });\n                        });\n                    },\n                );\n            }\n        },\n        removeModal: function () {\n            return this.set('email', false);\n        },\n    },\n});\n\nexport default SiteSafetySavedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/skyddsronds/saved/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SkyddsrondSavedRoute;\n\nimport Ember from 'ember';\n\nimport toTop from '../../../mixins/reset-scroll';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSkyddsrondSavedRoute = Ember.Route.extend(toTop, AuthenticatedRouteMixin, {\n    store: Ember.inject.service(),\n    model: function (params) {\n        return this.get('store').findRecord('skyddsrond', params.id, {\n            include: true,\n        });\n    },\n});\n\nexport default SkyddsrondSavedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"qfXFWs3H\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saved.title\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[23,1,[\\\"name\\\"]],[23,1,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n                    : \\\"],[9],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[[23,1,[]],[23,1,[\\\"form\\\"]],[24,[\\\"model\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\"],[\\\"a\\\",\\\"btn btn-m-link btn-lg btn-block\\\",\\\"skyddsronds.dashboard\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"query\\\"],[\\\"a\\\",\\\"btn btn-m-link btn-lg btn-block\\\",[28,\\\"hash\\\",null,[[\\\"email\\\"],[true]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"skyddsrond.saved.send_email\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"email\\\"]],true],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-container\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup-header\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.saved.modal.title\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross add-modal-cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup-content\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[24,[\\\"email_error\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.saved.modal.email_address\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"email_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[22,\\\"email_error\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"placeholder\\\"],[\\\"text\\\",\\\"form-control\\\",[24,[\\\"address\\\"]],[28,\\\"t\\\",[\\\"skyddsrond.saved.modal.address.placeholder\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"email_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"skyddsrond.saved.modal.text\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"class\\\",\\\"rows\\\",\\\"value\\\",\\\"placeholder\\\"],[\\\"form-control\\\",6,[24,[\\\"email_content\\\"]],[28,\\\"t\\\",[\\\"skyddsrond.saved.modal.content.placeholder\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send_email\\\"]],[8],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"skyddsrond.saved.modal.send_email\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n                \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-overlay\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/skyddsronds/saved/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/archive/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportListController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport pdfmixin from '../../../mixins/worksitediary_pdf';\n\nTaxmanTaxreportListController = GeneralReportController.extend(pdfmixin, {\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    mappedFilters: Em.computed('filter_value', function () {\n        var arr;\n        arr = [];\n        arr.push({\n            name: 'export_month',\n            value: this.get('filter_value'),\n        });\n        return arr;\n    }),\n    //get 36 previous months\n    months: Ember.computed(function () {\n        var count, montharr, obj;\n        count = 0;\n        montharr = [];\n        while (count < 36) {\n            obj = {\n                id: moment().subtract(count, 'months').format('YYYY-MM'),\n                name: moment().subtract(count++, 'months').format('MMMM YYYY'),\n            };\n            montharr.push(obj);\n        }\n        return montharr;\n    }),\n});\n\nexport default TaxmanTaxreportListController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/archive/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportListRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nTaxmanTaxreportListRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    queryParams: {\n        export_month: {\n            refreshModel: true,\n        },\n    },\n});\n\nexport default TaxmanTaxreportListRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Jx9N3D6D\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[\\\"form-control\\\",[24,[\\\"months\\\"]],[24,[\\\"filter_value\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.taxman_reports\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"form\\\",\\\"order\\\",\\\"query\\\"],[\\\"export_taxman\\\",\\\"date-\\\",[24,[\\\"mappedFilters\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.taxman_contract_reports\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"form\\\",\\\"order\\\",\\\"query\\\"],[\\\"export_taxman_urakka\\\",\\\"date-\\\",[24,[\\\"mappedFilters\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/archive/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListAddController;\n\nimport Ember from 'ember';\n\nTaxmanContractListAddController = Ember.Controller.extend({\n    launchProjectUpdate: false,\n    Collector: Em.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    employers: Ember.computed(function () {\n        return this.store.findAll('employer');\n    }),\n    selectedMonth: 0,\n    contracts: Em.A([]),\n    mandatoryFields: Em.computed(function () {\n        var field, field_obj, fields, tmp_fields;\n        tmp_fields = [];\n        fields = this.get('Collector').fields('urakkaraportointi');\n        for (field in fields) {\n            field_obj = fields[field];\n            if (\n                field !== 'contract_month' &&\n                field_obj.features != null &&\n                field_obj.features.mandatory\n            ) {\n                tmp_fields.push(field);\n            }\n        }\n        return tmp_fields;\n    }),\n    //get 36 previous months\n    months: Ember.computed(function () {\n        var count, montharr, obj;\n        count = 0;\n        montharr = [];\n        while (count < 36) {\n            obj = {\n                id: count,\n                name: moment().subtract(count++, 'months').format('MMMM YYYY'),\n            };\n            montharr.push(obj);\n        }\n        return montharr;\n    }),\n    flipped_options: Ember.computed(function () {\n        var values;\n        values = Em.A([]);\n        values.push({\n            id: '1',\n            name: this.get('intl').t('general.yes'),\n        });\n        values.push({\n            id: '2',\n            name: this.get('intl').t('general.no'),\n        });\n        return values;\n    }),\n    contract_type_options: Ember.computed(function () {\n        var values;\n        values = Em.A([]);\n        values.push({\n            id: '1',\n            name: this.get('intl').t('taxman.contract.add.contract_type.1'),\n        });\n        values.push({\n            id: '2',\n            name: this.get('intl').t('taxman.contract.add.contract_type.2'),\n        });\n        //values.push( {id:'4', name:@get('intl').t(\"taxman.contract.add.contract_type.4\")} ) Not supported properly currently\n        return values;\n    }),\n    okToAdd: Ember.computed('selectedMonth', 'selectedProject', 'contract_number', function () {\n        var contractNumberSet, monthSet, projectSet;\n        monthSet = this.get('selectedMonth') != null && this.get('selectedMonth') !== '';\n        projectSet = this.get('selectedProject') != null && this.get('selectedProject') !== '';\n        contractNumberSet =\n            this.get('contract_number') != null && this.get('contract_number') !== '';\n        if (!monthSet) {\n            return false;\n        }\n        if (!projectSet) {\n            return false;\n        }\n        if (contractNumberSet && !projectSet) {\n            return false;\n        }\n        return true;\n    }),\n    updateContract: function (contract) {\n        var contract_number, params, project;\n        project = this.get('selectedProject');\n        contract_number = this.get('contract_number');\n        if ((!project && !contract_number) || !contract.contract_employer) {\n            return;\n        }\n        params = {\n            contract_employer: contract.contract_employer.get('id'),\n        };\n        if (project) {\n            params.contract_project = project.get('id');\n        } else if (contract_number) {\n            params.contract_number = contract_number;\n        }\n        params.order = 'contract_month-';\n        params.limit = 12;\n        return this.store.query('urakkaraportointi', params).then((all_records) => {\n            var getLatestRecordEndDate, records;\n            // EP-8664 change logic to use previous data instead of previous month\n            // filter the latest contract end date\n            getLatestRecordEndDate = all_records.mapBy('contract_end_date').sort().reverse();\n            records = all_records.filterBy('contract_end_date', getLatestRecordEndDate[0]);\n            Em.set(contract, 'old_contracts', all_records); // show old contracts\n            // if yhere are no records, display empty values\n            if (records.get('length') === 0) {\n                Em.set(contract, 'contract_billed', null);\n                Em.set(contract, 'contract_total_price', null);\n                Em.set(contract, 'contract_start_date', null);\n                return Em.set(contract, 'contract_end_date', null);\n            } else {\n                // if there are records, use the latest by contract_end_date\n                Em.set(contract, 'contract_billed', records.get('firstObject.contract_billed'));\n                Em.set(\n                    contract,\n                    'contract_total_price',\n                    records.get('firstObject.contract_total_price'),\n                );\n                Em.set(\n                    contract,\n                    'contract_start_date',\n                    records.get('firstObject.contract_start_date'),\n                );\n                Em.set(contract, 'contract_end_date', records.get('firstObject.contract_end_date'));\n                Em.set(contract, 'contract_flipped', records.get('firstObject.contract_flipped'));\n                Em.set(contract, 'contract_type', records.get('firstObject.contract_type'));\n                return this.set('contract_number', records.get('firstObject.contract_number'));\n            }\n        });\n    },\n    actions: {\n        addNewContract: function () {\n            var obj;\n            obj = {\n                employer: this.get('model.contract_employer'),\n                flipped_tax: this.get('model.contract_flipped'),\n                contract_type: this.get('model.contract_type'),\n                first_worker: this.get('model.contract_first_worker'),\n                total_price: this.get('model.contract_total_price'),\n                contract_start: this.get('model.contract_start_date'),\n                contract_end: this.get('model.contract_end_date'),\n                billed: this.get('model.contract_billed'),\n                description: this.get('model.contract_description'),\n            };\n            return this.get('contracts').pushObject(obj);\n        },\n        save: function () {\n            var i, missingFields, records, self, validated;\n            self = this;\n            this.set('spinIsLoading', true);\n            this.set('disabled', true);\n            this.set('errorMessage', null);\n            records = [];\n            missingFields = [];\n            i = 0;\n            this.get('contracts').forEach((contract) => {\n                var contract_record, currentContractMissingFields, field, j, len, ref;\n                currentContractMissingFields = [];\n                ref = this.get('mandatoryFields');\n                // try to validate\n                for (j = 0, len = ref.length; j < len; j++) {\n                    field = ref[j];\n                    if (\n                        field === 'contract_first_worker' &&\n                        contract['contract_type'] === '2' &&\n                        contract[field] === void 0\n                    ) {\n                        currentContractMissingFields.push(field);\n                    } else if (field !== 'contract_first_worker' && contract[field] === void 0) {\n                        currentContractMissingFields.push(field);\n                    }\n                }\n                missingFields[i] = currentContractMissingFields;\n                contract_record = self.store.createRecord('urakkaraportointi', {\n                    contract_employer: contract.contract_employer,\n                    contract_end_date: contract.contract_end_date,\n                    contract_first_worker: contract.contract_first_worker,\n                    contract_flipped: contract.contract_flipped,\n                    contract_month: moment()\n                        .subtract(self.get('selectedMonth'), 'months')\n                        .format('YYYY-MM'),\n                    contract_project: self.get('selectedProject'),\n                    contract_number: this.get('contract_number'),\n                    contract_total_price: contract.contract_total_price,\n                    contract_billed: contract.contract_billed,\n                    contract_start_date: contract.contract_start_date,\n                    contract_type: contract.contract_type,\n                    contract_description: contract.contract_description,\n                });\n                records.push(contract_record);\n                return i++;\n            });\n            this.set('missingFields', missingFields);\n            validated = records.invoke('validate');\n            return Em.RSVP.Promise.all(validated).then(() => {\n                var saved_records;\n                if (records.filterBy('isValid', false).length > 0) {\n                    this.set('errorMessage', this.get('intl').t('general_add.error'));\n                    this.set('spinIsLoading', false);\n                    this.set('disabled', false);\n                    return;\n                }\n                saved_records = records.invoke('save');\n                return Em.RSVP.Promise.all(saved_records)\n                    .then(() => {\n                        this.set('spinIsLoading', false);\n                        this.set('disabled', false);\n                        this.set('contracts', Em.A([]));\n                        return this.transitionToRoute('taxman.contract-list.index');\n                    })\n                    .catch((reason) => {\n                        this.set('errorMessage', reason.errors[0].error_msg);\n                        self.set('spinIsLoading', false);\n                        return self.set('disabled', false);\n                    });\n            });\n        },\n        removeContract: function (contract) {\n            return this.get('contracts').removeObject(contract);\n        },\n        setEmployer: function (contract, value) {\n            if (Ember.typeOf(value) === 'instance') {\n                Em.set(contract, 'contract_employer', value);\n                return this.updateContract(contract);\n            }\n        },\n        setProject: function (value) {\n            return this.set('selectedProject', value);\n        },\n    },\n});\n\nexport default TaxmanContractListAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nTaxmanContractListAddRoute = GeneralAddRoute.extend({\n    modelName: 'urakkaraportointi',\n    controllerName: 'taxman/contract-list/add',\n    //    model: ->\n    //        self = @\n    //        params = {}\n    //        params.sideload = true\n    //        newest = @.store.query('urakkaraportointi', params)\n    //        newest.then ->\n    //            return newest.get(\"firstObject\")\n    actions: {\n        willTransition: function (transition) {\n            this.controller.set('selectedProject', null);\n            this.controller.set('contracts', Em.A([]));\n            return this.controller.toggleProperty('launchProjectUpdate');\n        },\n    },\n});\n\nexport default TaxmanContractListAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"uq3Itezd\",\"block\":\"{\\\"symbols\\\":[\\\"contract\\\",\\\"index\\\",\\\"field\\\",\\\"contract\\\",\\\"old_contract\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.contract-list\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"taxman.contract-list\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.project\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"urakkaraportointi.contract_project\\\"],[[\\\"change\\\"],[\\\"setProject\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.contract_number\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"value\\\"],[\\\"form-control input-lg\\\",\\\"contract_number\\\",[24,[\\\"contract_number\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.month\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"name\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[\\\"form-control input-lg\\\",\\\"contract_month\\\",[24,[\\\"months\\\"]],[24,[\\\"selectedMonth\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"okToAdd\\\"]]],null,{\\\"statements\\\":[[7,\\\"h3\\\",true],[10,\\\"id\\\",\\\"taxman-contract-not-enough-info\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.please_select_project_and_month\\\"],null],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"okToAdd\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"contracts\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"close\\\"],[12,\\\"aria-label\\\",[28,\\\"t\\\",[\\\"general.close\\\"],null]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeContract\\\",[23,4,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.employer\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_employer\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"change\\\",\\\"disabled\\\"],[\\\"urakkaraportointi.contract_employer\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setEmployer\\\",[23,4,[]]],null],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.flipped_tax\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_flipped\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"name\\\",\\\"options\\\",\\\"value\\\",\\\"disabled\\\",\\\"prompt\\\"],[\\\"form-control\\\",\\\"contract_flipped\\\",[24,[\\\"flipped_options\\\"]],[23,4,[\\\"contract_flipped\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.contract_type\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_type\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"name\\\",\\\"options\\\",\\\"value\\\",\\\"disabled\\\",\\\"prompt\\\"],[\\\"form-control\\\",\\\"contract_type\\\",[24,[\\\"contract_type_options\\\"]],[23,4,[\\\"contract_type\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.total_price\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_total_price\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"number\\\",\\\"contract_total_price\\\",\\\"form-control\\\",[23,4,[\\\"contract_total_price\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"contract_type\\\"]],\\\"2\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.first_worker\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_first_worker\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"form-control\\\",\\\"contract_first_worker\\\",[23,4,[\\\"contract_first_worker\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.contract_start\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_start_date\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"form-control\\\",\\\"contract_start_date\\\",[23,4,[\\\"contract_start_date\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.contract_end\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_end_date\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"form-control\\\",\\\"contract_end_date\\\",[23,4,[\\\"contract_end_date\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.billed\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_billed\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"number\\\",\\\"contract_billed\\\",\\\"form-control\\\",[23,4,[\\\"contract_billed\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.description\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"contract_description\\\",[24,[\\\"mandatoryFields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"name\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"text\\\",\\\"contract_description\\\",\\\"form-control\\\",[23,4,[\\\"contract_description\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,4,[\\\"old_contracts\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.previous_rows\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.month\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.billed\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.total_price\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,4,[\\\"old_contracts\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[\\\"contract_month\\\",\\\"urakkaraportointi\\\",[23,5,[\\\"contract_month\\\"]]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,5,[\\\"contract_billed\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,5,[\\\"contract_total_price\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"name\\\",\\\"add_new_contract\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addNewContract\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"taxman.contract.add.add_new\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"missingFields\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"missingFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"formeditor.form\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"add\\\",[[23,2,[]],1],null],false],[0,\\\", \\\"],[1,[28,\\\"t\\\",[\\\"worktime.validation.mandatory\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"urakkaraportointi.\\\",[23,3,[]]],null]],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[22,\\\"errorMessage\\\"],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"spinIsLoading\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/contract-list/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nTaxmanContractListEditController = GeneralAddController.extend({\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n});\n\nexport default TaxmanContractListEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nTaxmanContractListEditRoute = GeneralAddRoute.extend({\n    modelName: 'urakkaraportointi',\n    controllerName: 'taxman/contract-list/edit',\n    edit: true,\n    afterSave: 'taxman.contract-list.index',\n});\n\nexport default TaxmanContractListEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"tJ2jVDb3\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/contract-list/edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListHistoryRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nTaxmanContractListHistoryRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default TaxmanContractListHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"j+Rs3KlI\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"project\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/contract-list/history/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nTaxmanContractListIndexController = GeneralReportController.extend({\n    form: 'urakkaraportointi',\n    showColumns: ['contract_project', 'contract_month', 'contract_employer'],\n    queryParams: ['page', 'contract_project', 'contract_month', 'contract_employer'],\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'contract_employer',\n            }),\n            Em.Object.create({\n                field: 'contract_project',\n            }),\n            Em.Object.create({\n                field: 'contract_month',\n            }),\n        ]);\n    }),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: 'taxman.contract-list.edit',\n            historyRoute: 'taxman.contract-list.history',\n        }),\n    }),\n});\n\nexport default TaxmanContractListIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/contract-list/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanContractListIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nTaxmanContractListIndexRoute = GeneralReportRoute.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        contract_employer: {\n            refreshModel: true,\n        },\n        contract_project: {\n            refreshModel: true,\n        },\n        contract_month: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('urakkaraportointi', params);\n    },\n});\n\nexport default TaxmanContractListIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"soN1csZ7\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"settings\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/contract-list/index/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"iFgGTfEy\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/contract-list/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nTaxmanRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default TaxmanRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-component/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxreportComponent;\n\nimport Ember from 'ember';\n\nimport ccrep from '../../../components/cc-report';\n\nTaxreportComponent = ccrep.extend({\n    gui: Ember.inject.service(),\n    rowsOnPage: 25,\n    errorPage: 1,\n    dataPage: 1,\n    _error: Ember.computed('error', function () {\n        if (\n            this.startswith(\n                this.get('error_description'),\n                \"Exception: Contact person must be given in buffer['contact_person']\",\n            )\n        ) {\n            return 'contact_missing';\n        }\n        return this.get('error');\n    }),\n    startswith: function (str, startsas) {\n        if (Ember.typeOf(str) !== 'string') {\n            return false;\n        }\n        return str.substring(0, startsas.length) === startsas;\n    },\n    validations: Ember.computed('chartData', function () {\n        var data;\n        this.set('errorPage', 1);\n        this.set('dataPage', 1);\n        if (!this.get('chartData.validations')) {\n            return;\n        }\n        data = this.get('chartData.validations');\n        data.forEach(function (item) {\n            item.message = JSON.parse(item.message);\n            return (item.message.text = new Ember.String.htmlSafe(item.message.text));\n        });\n        return data;\n    }),\n    chartDataOnPage: Ember.computed('dataPage', 'chartData.data', function () {\n        if (!this.get('chartData.data')) {\n            return;\n        }\n        return this.get('chartData.data').slice(\n            (this.get('dataPage') - 1) * this.get('rowsOnPage'),\n            this.get('dataPage') * this.get('rowsOnPage'),\n        );\n    }),\n    validationsOnPage: Ember.computed('errorPage', 'validations', function () {\n        if (!this.get('validations')) {\n            return;\n        }\n        return this.get('validations').slice(\n            (this.get('errorPage') - 1) * this.get('rowsOnPage'),\n            this.get('errorPage') * this.get('rowsOnPage'),\n        );\n    }),\n    datapages: Ember.computed('chartData.data.length', function () {\n        return Math.ceil(this.get('chartData.data.length') / this.get('rowsOnPage'));\n    }),\n    errorpages: Ember.computed('validations.length', function () {\n        return Math.ceil(this.get('validations.length') / this.get('rowsOnPage'));\n    }),\n    tzOffset: Ember.computed.alias('gui.tzOffset'),\n});\n\nexport default TaxreportComponent;\n","export default Ember.HTMLBars.template({\"id\":\"TRHbwloz\",\"block\":\"{\\\"symbols\\\":[\\\"vstyonte\\\",\\\"user\\\",\\\"error\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxman.taxreport.error.title\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"_error\\\"]],\\\"contact_missing\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"taxman.contactnotset\\\"],null],false],[0,\\\"\\\\n                    \\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"settings.general\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"taxman.set_contact\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"taxman.taxreport.error.type.\\\",[24,[\\\"error\\\"]]],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"validationsOnPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[23,3,[\\\"message\\\",\\\"text\\\"]],false],[0,\\\" \\\"],[4,\\\"link-to\\\",null,[[\\\"query\\\"],[[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[28,\\\"concat\\\",[[23,3,[\\\"message\\\",\\\"form\\\"]],\\\",\\\",[23,3,[\\\"message\\\",\\\"id\\\"]]],null]]]]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"report.taxman.fix_here\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"onlyErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxreport.no_errors\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"rowsOnPage\\\"]],[24,[\\\"errorPage\\\"]],[24,[\\\"errorpages\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"onlyErrors\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"chartDataOnPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.worksite\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"h_worksite_name\\\"]],false],[9],[0,\\\" - \\\"],[1,[23,1,[\\\"h_worksite_number\\\"]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"i\\\",true],[8],[1,[23,1,[\\\"h_worksite_address\\\"]],false],[0,\\\", \\\"],[1,[23,1,[\\\"h_worksite_zip\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"h_worksite_city\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.employer\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"h_employer_name\\\"]],false],[9],[0,\\\" - \\\"],[1,[23,1,[\\\"h_employer_id\\\"]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"i\\\",true],[8],[0,\\\"(\\\"],[1,[23,1,[\\\"h_employer_contact_lastname\\\"]],false],[0,\\\"    \\\"],[1,[23,1,[\\\"h_employer_contact_firstname\\\"]],false],[0,\\\"   \\\"],[1,[23,1,[\\\"h_employer_contact_phone\\\"]],false],[0,\\\"\\\\n                        )\\\"],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"h_relation\\\"]],\\\"2\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.rental\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"h_leasing_name\\\"]],false],[9],[0,\\\" - \\\"],[1,[23,1,[\\\"h_leasing_id\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-striped\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.worker\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.taxnumber\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.birthdate\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.taxman.work_period\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"data\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"firstname\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"taxnumber\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"moment-format\\\",[[28,\\\"concat\\\",[[23,2,[\\\"birthdate\\\"]],\\\" 00Z\\\"],null]],[[\\\"format\\\"],[\\\"d.m.YYYY\\\"]]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"moment-format\\\",[[28,\\\"concat\\\",[[23,2,[\\\"startdate\\\"]],\\\" 00Z\\\"],null]],[[\\\"format\\\"],[\\\"d.m.YYYY\\\"]]],false],[0,\\\" -\\\\n                                    \\\"],[1,[28,\\\"moment-format\\\",[[28,\\\"concat\\\",[[23,2,[\\\"enddate\\\"]],\\\" 00Z\\\"],null]],[[\\\"format\\\"],[\\\"d.m.YYYY\\\"]]],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                   \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"taxreport.add.no_data\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"rowsOnPage\\\"]],[24,[\\\"dataPage\\\"]],[24,[\\\"datapages\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport-component/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-contract/add/add-taxreport-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportAddAddTaxreportCompComponent;\n\nimport Ember from 'ember';\n\nimport recordComp from '../../../../collector/record-comp/component';\n\nTaxmanTaxreportAddAddTaxreportCompComponent = recordComp.extend({\n    layoutName: 'collector/record-comp',\n    Collector: Em.inject.service('collector-service'),\n    intl: Em.inject.service(),\n    cc: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    setValues: Em.on('init', function () {\n        var values;\n        values = [];\n        this.set('record', this.get('store').createRecord(this.get('form').dasherize(), values));\n        this.set('record.export_month', this.get('month') + '-01');\n        this.set('record.etype', 'P');\n        return this.set('record_id', 'new');\n    }),\n    save_record: function () {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var c, date, filename, month, promise, record, url;\n            record = this.get('record');\n            month = record.get('export_month');\n            date = moment(month).startOf('month').format('YYYY-MM');\n            c = this.get('Collector');\n            filename = record.get('export_name').replace(/[^A-Za-z0-9]/g, '') || 'verottaja';\n            url =\n                this.get('key') +\n                '?contract_month=' +\n                date +\n                '&format=verottaja&type=' +\n                record.get('etype') +\n                '&code=' +\n                record.get('etype_code');\n            if (record.get('maincontractor')) {\n                url += '&maincontractor=' + record.get('maincontractor.id');\n            }\n            promise = c.ccapi({\n                url: url,\n            });\n            return promise.then((back) => {\n                if (back === '') {\n                    alert(this.get('intl').t('taxman.no_data'));\n                    reject();\n                    return;\n                }\n                /*\n        a = document.createElement 'a'\n        a.href = 'data:attachment/csv;,' + back\n        a.target = '_blank'\n        a.download = filename + '.txt'\n        document.body.appendChild(a)\n        a.click()\n        */\n                record.set('export_period_file', [\n                    {\n                        name: filename + '.txt',\n                        file: 'data:text/plain;base64,' + btoa(back),\n                    },\n                ]);\n                return record.save().then((back) => {\n                    var a, file_url, files;\n                    if (c.testNeeds(['products.autotaxman'])) {\n                        return this.sendTaxmanFile(record, resolve, reject);\n                    }\n                    files = back.get('export_period_file');\n                    file_url = files[0].url;\n                    a = document.createElement('a');\n                    a.href = this.get('Collector').getApiUrl() + file_url;\n                    a.target = '_blank';\n                    a.download = filename + '.txt';\n                    document.body.appendChild(a);\n                    a.click();\n                    return resolve();\n                });\n            });\n        });\n    },\n    sendTaxmanFile: function (record, resolve, reject) {\n        var promise;\n        promise = this.get('cc').request('taxmanurakkasend?id=' + record.get('id'));\n        return promise.then(\n            (result) => {\n                if (result.response.errors.length > 0) {\n                    record.set('status', 'error');\n                    record.set('statusfile', [\n                        {\n                            name: 'response.html',\n                            file: 'data:text/plain;base64,' + btoa(result.html),\n                        },\n                    ]);\n                    return record.save().then(() => {\n                        this.downloadFile(\n                            'response.html',\n                            record.get('statusfile.firstObject.s3url'),\n                        );\n                        this.get('dialogs').alert(this.get('intl').t('taxman.send_failed'));\n                        return reject();\n                    });\n                } else {\n                    record.set('status', 'approved');\n                    if (result.response.deliveryId) {\n                        record.set('etype_code', result.response.deliveryId);\n                    }\n                    record.save();\n                    this.get('dialogs').alert(this.get('intl').t('taxman.send_success'));\n                    return resolve();\n                }\n            },\n            (e) => {\n                return reject(e);\n            },\n        );\n    },\n    downloadFile: function (filename, url) {\n        var a;\n        a = document.createElement('a');\n        a.href = url;\n        a.target = '_blank';\n        a.download = filename + '.txt';\n        document.body.appendChild(a);\n        return a.click();\n    },\n});\n\nexport default TaxmanTaxreportAddAddTaxreportCompComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-contract/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportIndexController;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportIndexController = Ember.Controller.extend({\n    indexController: Ember.inject.controller('taxman.taxreport-contract.index'),\n    key: Ember.computed.alias('indexController.key'),\n});\n\nexport default TaxmanTaxreportIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-contract/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportAddRoute;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportAddRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n    actions: {\n        fileCreated: function () {\n            return this.transitionTo('taxman.taxreport-contract');\n        },\n        cancel: function () {\n            return this.transitionTo('taxman.taxreport-contract');\n        },\n    },\n});\n\nexport default TaxmanTaxreportAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"ZJE+krKQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export.create_new_taxman_contract\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"taxman/taxreport-contract/add/add-taxreport-comp\\\",null,[[\\\"form\\\",\\\"month\\\",\\\"maincontractor\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\",\\\"key\\\"],[\\\"export_taxman_urakka\\\",[24,[\\\"model\\\",\\\"month\\\"]],[24,[\\\"model\\\",\\\"maincontractor\\\"]],\\\"fileCreated\\\",\\\"cancel\\\",[24,[\\\"key\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport-contract/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-contract/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportIndexController;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportIndexController = Ember.Controller.extend({\n    intl: Ember.inject.service(),\n    selectedMonth: 0,\n    maincontractor: null,\n    projectFilter: null,\n    key: 'vsurakka',\n    contacts: Ember.computed('maincontractor', function () {\n        if (this.get('maincontractor')) {\n            return this.store.query('exportContactPerson', {\n                employer: this.get('maincontractor.id'),\n            });\n        } else {\n            return this.store.findAll('exportContactPerson');\n        }\n    }),\n    contactNotSet: Em.computed('contacts.[]', function () {\n        var contacts;\n        contacts = this.get('contacts').filter((contact) => {\n            return contact.get('isNew') === false;\n        });\n        return contacts.length <= 0;\n    }),\n    settings: Em.Object.create({\n        form: 'export_contact_person',\n    }),\n    //get 36 previous months\n    months: Ember.computed(function () {\n        var count, montharr, obj;\n        count = 0;\n        montharr = [];\n        while (count < 36) {\n            obj = {\n                id: count,\n                name: moment().subtract(count++, 'months').format('MMMM YYYY'),\n            };\n            montharr.push(obj);\n        }\n        return montharr;\n    }),\n    values: Ember.computed('selectedMonth', 'maincontractor', 'projectFilter', function () {\n        var arr, moment_month, month;\n        month = this.get('selectedMonth');\n        moment_month = moment().subtract(month, 'months');\n        arr = [\n            {\n                name: 'contract_month',\n                value: moment_month.format('YYYY-MM'),\n            },\n        ];\n        if (this.get('projectFilter')) {\n            arr.push({\n                name: 'contract_project',\n                value: this.get('projectFilter.id'),\n            });\n        }\n        if (this.get('maincontractor') && !this.get('projectFilter')) {\n            arr.push({\n                name: 'maincontractor',\n                value: this.get('maincontractor.id'),\n            });\n        }\n        return arr;\n    }),\n    employerField: Ember.computed(function () {\n        if (this.get('Collector').testNeedsOne('worktime')) {\n            return 'worktime.employer';\n        } else {\n            return 'presence.employer';\n        }\n    }),\n    projectField: Ember.computed(function () {\n        if (this.get('Collector').testNeedsOne('worktime')) {\n            return 'worktime.project';\n        } else {\n            return 'presence.project';\n        }\n    }),\n    actions: {\n        maincontractorChanged: function (value) {\n            return this.set('maincontractor', value);\n        },\n        refreshPreview: function () {\n            return this.notifyPropertyChange('selectedMonth');\n        },\n        projectChanged: function (value) {\n            return this.set('projectFilter', value);\n        },\n        toggleModal: function (settings, record) {\n            if (record) {\n                this.notifyPropertyChange('contacts');\n            }\n            this.toggleProperty('showModal');\n            return false;\n        },\n    },\n});\n\nexport default TaxmanTaxreportIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-contract/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportIndexRoute;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportIndexRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    actions: {\n        getTaxmanFile: function (filters) {\n            var date_between, date_start;\n            date_between = filters.findBy('name', 'contract_month').value;\n            date_start = date_between.split('_')[0];\n            return this.transitionTo('taxman.taxreport-contract.add', date_start);\n        },\n    },\n});\n\nexport default TaxmanTaxreportIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"llSlygz1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.export_taxman.export_month\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[\\\"form-control add-fields\\\",[24,[\\\"months\\\"]],[24,[\\\"selectedMonth\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"modules.multiple_companies\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"employerField\\\"]]],[[\\\"change\\\"],[\\\"maincontractorChanged\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"projectField\\\"]]],[[\\\"change\\\",\\\"value\\\"],[\\\"projectChanged\\\",[24,[\\\"projectFilter\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"contactNotSet\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"taxman.contactnotset\\\"],null],false],[0,\\\"\\\\n    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"taxman.set_contact\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"getTaxmanFile\\\",[24,[\\\"values\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.get_taxman_file\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"refreshPreview\\\"]],[8],[1,[28,\\\"t\\\",[\\\"taxman.report.preview.refresh\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"taxman/taxreport-component\\\",null,[[\\\"key\\\",\\\"query\\\",\\\"onlyErrors\\\",\\\"requestMethod\\\"],[[24,[\\\"key\\\"]],[24,[\\\"values\\\"]],true,\\\"POST\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"taxman.add_contact\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"settings\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"settings\\\"]],\\\"toggleModal\\\",\\\"toggleModal\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport-contract/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport-contract/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportContractRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nTaxmanTaxreportContractRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default TaxmanTaxreportContractRoute;\n","export default Ember.HTMLBars.template({\"id\":\"2EIAHxVQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport-contract/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport/add/add-taxreport-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportAddAddTaxreportCompComponent;\n\nimport Ember from 'ember';\n\nimport recordComp from '../../../../collector/record-comp/component';\n\nTaxmanTaxreportAddAddTaxreportCompComponent = recordComp.extend({\n    layoutName: 'collector/record-comp',\n    Collector: Em.inject.service('collector-service'),\n    cc: Em.inject.service(),\n    dialogs: Em.inject.service(),\n    intl: Em.inject.service(),\n    didReceiveAttrs: function () {\n        var values;\n        values = [];\n        this.set('record', this.get('store').createRecord(this.get('form').dasherize(), values));\n        this.set('record.export_month', this.get('month'));\n        this.set('record.etype', 'P');\n        return this.set('record_id', 'new');\n    },\n    save_record: function () {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var c, date, filename, month, promise, record, url;\n            record = this.get('record');\n            month = record.get('export_month');\n            date =\n                moment(month).startOf('month').format('YYYY-MM-DD') +\n                '_' +\n                moment(month).endOf('month').format('YYYY-MM-DD');\n            c = this.get('Collector');\n            filename = record.get('export_name').replace(/[^A-Za-z0-9]/g, '') || 'verottaja';\n            url =\n                this.get('key') +\n                '?date=' +\n                date +\n                '&format=verottaja&type=' +\n                record.get('etype') +\n                '&code=' +\n                record.get('etype_code');\n            if (record.get('maincontractor')) {\n                url += '&maincontractor=' + record.get('maincontractor.id');\n            }\n            promise = c.ccapi({\n                url: url,\n            });\n            return promise.then((back) => {\n                if (back === '') {\n                    alert(this.get('intl').t('taxman.no_data'));\n                    reject();\n                    return;\n                }\n                /*\n        a = document.createElement 'a'\n        a.href = 'data:attachment/csv;,' + back\n        a.target = '_blank'\n        a.download = filename + '.txt'\n        document.body.appendChild(a)\n        a.click()\n        */\n                record.set('export_period_file', [\n                    {\n                        name: filename + '.txt',\n                        file: 'data:text/plain;base64,' + btoa(back),\n                    },\n                ]);\n                return record.save().then((back) => {\n                    var a, file_url, files;\n                    if (c.testNeeds(['products.autotaxman'])) {\n                        return this.sendTaxmanFile(record, resolve, reject);\n                    }\n                    files = back.get('export_period_file');\n                    file_url = files[0].url;\n                    a = document.createElement('a');\n                    a.href = this.get('Collector').getApiUrl() + file_url;\n                    a.target = '_blank';\n                    a.download = filename + '.txt';\n                    document.body.appendChild(a);\n                    a.click();\n                    return resolve();\n                });\n            });\n        });\n    },\n    sendTaxmanFile: function (record, resolve, reject) {\n        var promise;\n        promise = this.get('cc').request('taxmansend?id=' + record.get('id'));\n        return promise.then(\n            (result) => {\n                if (result.response.errors.length > 0) {\n                    record.set('status', 'error');\n                    record.set('statusfile', [\n                        {\n                            name: 'response.html',\n                            file: 'data:text/plain;base64,' + btoa(result.html),\n                        },\n                    ]);\n                    return record.save().then(() => {\n                        this.downloadFile(\n                            'response.html',\n                            record.get('statusfile.firstObject.s3url'),\n                        );\n                        this.get('dialogs').alert(this.get('intl').t('taxman.send_failed'));\n                        return reject();\n                    });\n                } else {\n                    record.set('status', 'approved');\n                    if (result.response.deliveryId) {\n                        record.set('etype_code', result.response.deliveryId);\n                    }\n                    record.save();\n                    this.get('dialogs').alert(this.get('intl').t('taxman.send_success'));\n                    return resolve();\n                }\n            },\n            (e) => {\n                return reject(e);\n            },\n        );\n    },\n    downloadFile: function (filename, url) {\n        var a;\n        a = document.createElement('a');\n        a.href = url;\n        a.target = '_blank';\n        a.download = filename + '.txt';\n        document.body.appendChild(a);\n        return a.click();\n    },\n});\n\nexport default TaxmanTaxreportAddAddTaxreportCompComponent;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportAddController;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportAddController = Ember.Controller.extend({\n    indexController: Ember.inject.controller('taxman.taxreport.index'),\n    key: Ember.computed.alias('indexController.key'),\n});\n\nexport default TaxmanTaxreportAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportAddRoute;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportAddRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n    actions: {\n        fileCreated: function () {\n            return this.transitionTo('taxman.taxreport');\n        },\n        cancel: function () {\n            return this.transitionTo('taxman.taxreport');\n        },\n    },\n});\n\nexport default TaxmanTaxreportAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"oAUz5yj9\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"export.create_new_taxman\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"taxman/taxreport/add/add-taxreport-comp\\\",null,[[\\\"form\\\",\\\"month\\\",\\\"maincontractor\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\",\\\"key\\\"],[\\\"export_taxman\\\",[24,[\\\"model\\\",\\\"month\\\"]],[24,[\\\"model\\\",\\\"maincontractor\\\"]],\\\"fileCreated\\\",\\\"cancel\\\",[24,[\\\"key\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportIndexController;\n\nimport Ember from 'ember';\n\nimport config from '../../../../config/environment';\n\nTaxmanTaxreportIndexController = Ember.Controller.extend({\n    session: Em.inject.service(),\n    exportFile: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    selectedMonth: 0,\n    maincontractor: null,\n    projectFilter: null,\n    generatingPdf: false,\n    key: 'vstyonte',\n    contacts: Em.computed('maincontractor', function () {\n        if (this.get('maincontractor')) {\n            return this.store.query('exportContactPerson', {\n                employer: this.get('maincontractor.id'),\n            });\n        } else {\n            return this.store.findAll('exportContactPerson');\n        }\n    }),\n    contactNotSet: Em.computed('contacts.[]', function () {\n        var contacts;\n        contacts = this.get('contacts').filter((contact) => {\n            return contact.get('isNew') === false;\n        });\n        return contacts.length <= 0;\n    }),\n    //get 36 previous months\n    months: Ember.computed(function () {\n        var count, montharr, obj;\n        count = 0;\n        montharr = [];\n        while (count < 36) {\n            obj = {\n                id: count,\n                name: moment().subtract(count++, 'months').format('MMMM YYYY'),\n            };\n            montharr.push(obj);\n        }\n        return montharr;\n    }),\n    settings: Em.Object.create({\n        form: 'export_contact_person',\n    }),\n    values: Ember.computed(\n        'selectedMonth',\n        'maincontractor',\n        'projectFilter',\n        'ownerFilter',\n        function () {\n            var arr, moment_month, month;\n            month = this.get('selectedMonth');\n            moment_month = moment().subtract(month, 'months');\n            arr = [\n                {\n                    name: 'date',\n                    value:\n                        moment_month.startOf('month').format('YYYY-MM-DD') +\n                        '_' +\n                        moment_month.endOf('month').format('YYYY-MM-DD'),\n                },\n            ];\n            if (this.get('projectFilter')) {\n                arr.push({\n                    name: 'project',\n                    value: this.get('projectFilter.id'),\n                });\n            }\n            if (this.get('maincontractor') && !this.get('projectFilter')) {\n                arr.push({\n                    name: 'maincontractor',\n                    value: this.get('maincontractor.id'),\n                });\n            }\n            if (this.get('ownerFilter')) {\n                arr.push({\n                    name: 'owner',\n                    value: this.get('ownerFilter.id'),\n                });\n            }\n            return arr;\n        },\n    ),\n    employerField: Ember.computed(function () {\n        if (this.get('Collector').testNeedsOne('worktime')) {\n            return 'worktime.employer';\n        } else {\n            return 'presence.employer';\n        }\n    }),\n    projectField: Ember.computed(function () {\n        if (this.get('Collector').testNeedsOne('worktime')) {\n            return 'worktime.project';\n        } else {\n            return 'presence.project';\n        }\n    }),\n    actions: {\n        refreshPreview: function () {\n            // Kikka miljoona is NO HAX\n            return this.notifyPropertyChange('selectedMonth');\n        },\n        maincontractorChanged: function (value) {\n            return this.set('maincontractor', value);\n        },\n        projectChanged: function (value) {\n            return this.set('projectFilter', value);\n        },\n        ownerChanged: function (value) {\n            return this.set('ownerFilter', value);\n        },\n        toggleModal: function (settings, record) {\n            if (record) {\n                this.notifyPropertyChange('contacts');\n            }\n            this.toggleProperty('showModal');\n            return false;\n        },\n        exportPdf: function () {\n            var data, filter, filters, i, len, promise, url;\n            this.set('generatingPdf', true);\n            filters = this.get('values');\n            data = {};\n            for (i = 0, len = filters.length; i < len; i++) {\n                filter = filters[i];\n                data[filter['name']] = filter['value'];\n            }\n            if (config.environment === 'development') {\n                data.capi_url = 'http://capi/';\n                data.ttapi_url = 'http://ttapi/';\n            } else {\n                data.capi_url = config.APP.COLLECTOR_API_URL + '/';\n                data.ttapi_url = this.get('ttapi').host + '/';\n            }\n            data.dataType = 'text';\n            data.type = 'base64';\n            data.key = this.get('key');\n            url = 'pdf/taxman';\n            promise = this.get('Collector').ttapi({\n                dataType: 'text',\n                url: url,\n                data: data,\n                type: 'POST',\n            });\n            return promise.then((data) => {\n                this.set('generatingPdf', false);\n                return this.get('exportFile').exportFile(data, 'export', 'pdf', true);\n            });\n        },\n    },\n});\n\nexport default TaxmanTaxreportIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportIndexRoute;\n\nimport Ember from 'ember';\n\nTaxmanTaxreportIndexRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    actions: {\n        getTaxmanFile: function (filters) {\n            var date_between, date_start;\n            date_between = filters.findBy('name', 'date').value;\n            date_start = date_between.split('_')[0];\n            return this.transitionTo('taxman.taxreport.add', date_start);\n        },\n    },\n});\n\nexport default TaxmanTaxreportIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"xbHxZcpZ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.export_taxman.export_month\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"classes\\\",\\\"options\\\",\\\"value\\\",\\\"prompt\\\"],[\\\"form-control add-fields\\\",[24,[\\\"months\\\"]],[24,[\\\"selectedMonth\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"modules.multiple_companies\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"employerField\\\"]]],[[\\\"change\\\"],[\\\"maincontractorChanged\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"projectField\\\"]]],[[\\\"change\\\",\\\"value\\\"],[\\\"projectChanged\\\",[24,[\\\"projectFilter\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"project.owner\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-4\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"project.owner\\\"],[[\\\"change\\\",\\\"value\\\"],[\\\"ownerChanged\\\",[24,[\\\"ownerFilter\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"help-dialog\\\",null,[[\\\"translation_key\\\",\\\"title\\\",\\\"classNames\\\"],[\\\"taxman.help_dialog\\\",[28,\\\"t\\\",[\\\"taxman.help_title\\\"],null],\\\"inline-block\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"contactNotSet\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"taxman.contactnotset\\\"],null],false],[0,\\\"\\\\n    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"taxman.set_contact\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"getTaxmanFile\\\",[24,[\\\"values\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.get_taxman_file\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"refreshPreview\\\"]],[8],[1,[28,\\\"t\\\",[\\\"taxman.report.preview.refresh\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"disabled\\\",[22,\\\"generatingPdf\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"exportPdf\\\"]],[8],[1,[28,\\\"t\\\",[\\\"taxman.report.export_pdf\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"taxman/taxreport-component\\\",null,[[\\\"key\\\",\\\"query\\\",\\\"requestMethod\\\"],[[24,[\\\"key\\\"]],[24,[\\\"values\\\"]],\\\"POST\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"taxman.add_contact\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"toggleModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"settings\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"settings\\\"]],\\\"toggleModal\\\",\\\"toggleModal\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/taxman/taxreport/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TaxmanTaxreportRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nTaxmanTaxreportRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default TaxmanTaxreportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"+F6eWNlE\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/taxreport/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"q3PgIn2J\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/taxman/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ThereportController;\n\nimport Ember from 'ember';\n\nThereportController = Ember.Controller.extend({\n    intl: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    subMenus: Em.computed('model', function () {\n        var menus;\n        menus = Em.A([]);\n        this.get('model').forEach((item, index) => {\n            return menus.pushObject({\n                text: item.name,\n                link: ['thereport.page', index],\n            });\n        });\n        menus.pushObject({\n            text: this.get('intl').t('thereport.settings'),\n            link: ['thereport.settings'],\n        });\n        return menus;\n    }),\n    saveReport: function (id, name, settings) {\n        return this.get('Collector').ttapi({\n            method: 'post',\n            url: 'comboreport',\n            data: {\n                id: id,\n                name: name,\n                settings: JSON.stringify(settings),\n            },\n        });\n    },\n    removeReport: function (id) {\n        return this.get('Collector').ttapi({\n            method: 'delete',\n            url: 'comboreport/' + id,\n        });\n    },\n});\n\nexport default ThereportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/form-reporteditor/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormReporteditorComponent,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nFormReporteditorComponent = Ember.Component.extend({\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    showSaveButton: Ember.computed.or('settings.form', 'settings.custom'),\n    rowsPerPageOptions: Em.computed('settings.form', function () {\n        return Em.A([\n            Em.Object.create({\n                id: 25,\n                name: '25',\n            }),\n            Em.Object.create({\n                id: 50,\n                name: '50',\n            }),\n            Em.Object.create({\n                id: 100,\n                name: '100',\n            }),\n        ]);\n    }),\n    forms: Ember.computed(function () {\n        var c, forms, intl, ret, supportedForms;\n        supportedForms = ['worktime', 'abcense', 'bill', 'presence', 'materiallog','orientation'];\n        c = this.get('Collector');\n        intl = this.get('intl');\n        forms = c.forms();\n        ret = Em.A([]);\n        $.each(forms, (key, item) => {\n            if (!(indexOf.call(supportedForms, key) >= 0 || item.name)) {\n                return;\n            }\n            if (item.name) {\n                return ret.pushObject(\n                    Ember.Object.create({\n                        id: key,\n                        name: intl.t(item.name),\n                    }),\n                );\n            } else {\n                return ret.pushObject(\n                    Ember.Object.create({\n                        id: key,\n                        name: intl.t('forms.' + key),\n                    }),\n                );\n            }\n        });\n        return ret;\n    }),\n    columns: Ember.computed('settings.form', 'groupingIsOn', function () {\n        var c, columns, form, groupableColumnsList, groupingIsOn, intl, ret;\n        groupableColumnsList = [\n            'date',\n            'number',\n            'hours',\n            'price',\n            'big_price',\n            'dropdown_values',\n            'dropdown_options',\n        ];\n        c = this.get('Collector');\n        form = this.get('settings.form');\n        intl = this.get('intl');\n        groupingIsOn = this.get('groupingIsOn');\n        if (!form || !c.formExists(form)) {\n            return Em.A([]);\n        }\n        columns = c.fields(form);\n        ret = Em.A([]);\n        ret.push(\n            Ember.Object.create({\n                id: 'id',\n                name: 'id',\n            }),\n        );\n        $.each(columns, (key, item) => {\n            var ref;\n            if (\n                groupingIsOn &&\n                !((ref = item.type), indexOf.call(groupableColumnsList, ref) >= 0)\n            ) {\n                return;\n            }\n            return ret.pushObject(\n                Ember.Object.create({\n                    id: key,\n                    name: c.getTranslationForColumn(form, key),\n                }),\n            );\n        });\n        return ret;\n    }),\n    groupingIsOn: Ember.computed.gt('group_columns.length', 0),\n    groupByColumns: Ember.computed('settings.form', function () {\n        var c, columns, form, groupByColumnsList, ret_arr;\n        groupByColumnsList = ['database', 'dropdown_values', 'dropdown_options', 'date'];\n        c = this.get('Collector');\n        form = this.get('settings.form');\n        if (!form || !c.formExists(form)) {\n            return [];\n        }\n        columns = c.fields(form);\n        ret_arr = Em.A([]);\n        $.each(columns, function (key, item) {\n            var ref;\n            if (((ref = item.type), indexOf.call(groupByColumnsList, ref) >= 0)) {\n                return ret_arr.pushObject(\n                    Ember.Object.create({\n                        id: key,\n                        name: c.getTranslationForColumn(form, key),\n                    }),\n                );\n            }\n        });\n        ret_arr.pushObject(\n            Ember.Object.create({\n                id: 'all',\n                name: this.get('intl').t('general.sum_all'),\n            }),\n        );\n        return ret_arr;\n    }),\n    saveValues: Em.on('init', function () {\n        var settings;\n        settings = Em.Object.create({\n            calendar: this.get('settings.calendar'),\n            editorMode: false,\n            form: this.get('settings.form'),\n            group: this.get('settings.group'),\n            half: this.get('settings.half'),\n            header: this.get('settings.header'),\n            show_columns: this.get('settings.show_columns'),\n            rowsPerPage: this.get('settings.rowsPerPage'),\n        });\n        return this.set('originalSettings', settings);\n    }),\n    columnsObserver: Ember.observer('show_columns', function () {\n        var columns;\n        columns = this.get('show_columns');\n        return this.set('settings.show_columns', columns.join(','));\n    }),\n    groupObserver: Ember.observer('group_columns', function () {\n        var columns;\n        columns = this.get('group_columns');\n        return this.set('settings.group', columns.join(','));\n    }),\n    rowsPerPageObserver: Ember.observer('rowsPerPage', function () {\n        var rowsPerPage;\n        rowsPerPage = this.get('rowsPerPage.firstObject');\n        return this.set('settings.rowsPerPage', rowsPerPage);\n    }),\n    show_columns: Ember.computed('settings.show_columns', function () {\n        var show_columns;\n        show_columns = this.get('settings.show_columns');\n        if (show_columns) {\n            return show_columns.split(',');\n        } else {\n            return [];\n        }\n    }),\n    group_columns: Ember.computed('settings.group', function () {\n        var group;\n        group = this.get('settings.group');\n        if (group) {\n            return group.split(',');\n        } else {\n            return [];\n        }\n    }),\n    rowsPerPage: Ember.computed('settings.rowsPerPage', function () {\n        var rowsPerPage;\n        rowsPerPage = this.get('settings.rowsPerPage');\n        if (rowsPerPage) {\n            return [rowsPerPage];\n        } else {\n            return [25];\n        }\n    }),\n    actions: {\n        save: function () {\n            var settings;\n            settings = this.get('settings');\n            if (!settings.show_columns) {\n                settings.show_columns = 'empty';\n            }\n            if (this.get('save')) {\n                return this.save(settings);\n            }\n        },\n        remove: function () {\n            if (this.get('remove')) {\n                return this.remove(this.get('settings'));\n            }\n        },\n        cancel: function () {\n            var settings;\n            if (this.get('cancel')) {\n                this.cancel(this.get('settings'));\n            }\n            settings = this.get('originalSettings');\n            if (settings) {\n                this.set('settings.calendar', settings.calendar);\n                this.set('settings.form', settings.form);\n                this.set('settings.group', settings.group);\n                this.set('settings.half', settings.half);\n                this.set('settings.header', settings.header);\n                this.set('settings.show_columns', settings.show_columns);\n                return this.set('settings.rowsPerPage', settings.rowsPerPage);\n            }\n        },\n    },\n});\n\nexport default FormReporteditorComponent;\n","export default Ember.HTMLBars.template({\"id\":\"i4oUYqUT\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-horizontal\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"formeditor.header\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"value\\\"],[\\\"form-control\\\",[24,[\\\"settings\\\",\\\"header\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"settings\\\",\\\"custom\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"formeditor.form\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"select-comp\\\",null,[[\\\"classes\\\",\\\"value\\\",\\\"content\\\",\\\"promptTranslation\\\"],[\\\"form-control\\\",[24,[\\\"settings\\\",\\\"form\\\"]],[24,[\\\"forms\\\"]],\\\"general.select_choose\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"settings\\\",\\\"form\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"settings\\\",\\\"calendar\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"formeditor.group\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"multi-buttons\\\",null,[[\\\"content\\\",\\\"values\\\",\\\"orderable\\\"],[[24,[\\\"groupByColumns\\\"]],[24,[\\\"group_columns\\\"]],true]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"formeditor.columns\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"multi-buttons\\\",null,[[\\\"content\\\",\\\"values\\\",\\\"orderable\\\"],[[24,[\\\"columns\\\"]],[24,[\\\"show_columns\\\"]],true]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.columns.limit\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"multi-buttons\\\",null,[[\\\"content\\\",\\\"values\\\",\\\"orderable\\\",\\\"singleSelectMode\\\"],[[24,[\\\"rowsPerPageOptions\\\"]],[24,[\\\"rowsPerPage\\\"]],false,true]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"formeditor.width\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\"],[\\\"checkbox\\\",[24,[\\\"settings\\\",\\\"half\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"groupingIsOn\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"col-sm-2 control-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"formeditor.calendar\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\"],[\\\"checkbox\\\",[24,[\\\"settings\\\",\\\"calendar\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSaveButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"formeditor.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\"]],[8],[1,[28,\\\"t\\\",[\\\"formeditor.remove\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn report-cancel\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"formeditor.cancel\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/thereport/form-reporteditor/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/page/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ThereportController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport pdfExport from '../../../mixins/pdf-export';\n\nimport csvExport from '../../../mixins/csv-export';\n\nimport formReport from '../../collector/report-comp/component';\n\nimport ccReport from '../../../components/cc-report';\n\nThereportController = Ember.Controller.extend(pdfExport, csvExport, {\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    sessionGlobals: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    session: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    checked_rows: [],\n    // contains current values of report filters\n    filterValues: null,\n    rowActions: Ember.computed('intl', function () {\n        var arr;\n        arr = [\n            {\n                action: 'editRow',\n                icon: 'move move-Pencil',\n                text: this.get('intl').t('general.edit'),\n            },\n            {\n                action: 'rowHistory',\n                icon: 'move move-Search',\n                text: this.get('intl').t('report.customer.history'),\n            },\n            {\n                action: 'removeRow',\n                icon: 'move move-Delete',\n                text: this.get('intl').t('report.delete_rows'),\n            },\n        ];\n        return arr;\n    }),\n    isMobile: Em.computed(function () {\n        return typeof cordova !== 'undefined' && cordova !== null;\n    }),\n    // these field types can be used as filters\n    filterFieldTypes: ['database', 'status', 'dropdown_options', 'dropdown_values', 'multiselect'],\n    allowedMoreFilters: ['user.worktimegroup'],\n    // this needs to be set for filters to work .. we must use filters for SOME form\n    baseForm: Em.computed(function () {\n        if (this.get('Collector').testNeeds(['bill'])) {\n            return 'bill';\n        } else {\n            return 'worktime';\n        }\n    }),\n    settings: Em.computed.alias('model.settings'),\n    pageid: Em.computed.alias('model.pageid'),\n    selectableFilters: Ember.computed('pageid', function () {\n        var c,\n            field,\n            fields,\n            filterFieldTypes,\n            form,\n            i,\n            len,\n            moreFilter,\n            moreFilterArr,\n            name,\n            ref,\n            ref1,\n            ret;\n        c = this.get('Collector');\n        filterFieldTypes = this.get('filterFieldTypes');\n        form = this.get('baseForm');\n        fields = c.fields(form);\n        ret = Em.A([]);\n        for (name in fields) {\n            field = fields[name];\n            if (((ref = field.type), indexOf.call(filterFieldTypes, ref) >= 0)) {\n                ret.pushObject(\n                    Ember.Object.create({\n                        id: name,\n                        name: c.getTranslationForColumn(form, name),\n                    }),\n                );\n            }\n        }\n        if (this.get('allowedMoreFilters')) {\n            ref1 = this.get('allowedMoreFilters');\n            for (i = 0, len = ref1.length; i < len; i++) {\n                moreFilter = ref1[i];\n                moreFilterArr = moreFilter.split('.');\n                if (c.fieldExists(moreFilterArr[0], moreFilterArr[1])) {\n                    ret.pushObject(\n                        Ember.Object.create({\n                            id: moreFilterArr[0] + '.' + moreFilterArr[1],\n                            name: c.getTranslationForColumn(moreFilterArr[0], moreFilterArr[1]),\n                        }),\n                    );\n                }\n            }\n        }\n        return ret;\n    }),\n    refreshQueries: Ember.on(\n        'init',\n        Ember.observer('filterValues', function () {\n            var reports;\n            reports = this.get('reports');\n            return reports.forEach((item) => {\n                return this.refreshReport(item);\n            });\n        }),\n    ),\n    refreshReport: function (report) {\n        var c, fields, filterValues, form, query, showFiltersArr;\n        filterValues = this.get('filterValues');\n        if (!filterValues) {\n            return;\n        }\n        c = this.get('Collector');\n        form = report.get('form');\n        showFiltersArr = this.get('showFilters').split(',');\n        fields = c.fields(form);\n        query = [];\n        $.each(showFiltersArr, (key, item) => {\n            var field_key, i, len, ref, useField, value;\n            if (fields) {\n                ref = Object.keys(fields);\n                for (i = 0, len = ref.length; i < len; i++) {\n                    field_key = ref[i];\n                    if (fields[field_key].options && fields[field_key].options.form === item) {\n                        useField = this.queryDefinitions(form, fields[field_key].ext);\n                        break;\n                    }\n                }\n            }\n            if (!useField) {\n                useField = this.queryDefinitions(form, item);\n            }\n            if (!fields && report.get('type') !== 'cc') {\n                // this means that report is some broken or empty\n                return;\n            }\n            if (report.get('type') !== 'cc' && !(useField in fields) && item.indexOf('.') === -1) {\n                return;\n            }\n            value = filterValues.findBy('name', item).value;\n            if (!value) {\n                return;\n            }\n            return query.pushObject({\n                name: useField,\n                value: value,\n            });\n        });\n        return report.set('query', query);\n    },\n    // list for special definitions for query parameters .. ie. abcenses has startdate not date field\n    queryDefinitions: function (form, field) {\n        if (form === 'abcense' && field === 'date') {\n            return 'startdate';\n        }\n        return field;\n    },\n    saveSettings: function () {\n        var addReport,\n            c,\n            date_field_found,\n            field,\n            field_name,\n            field_obj,\n            form_fields,\n            i,\n            j,\n            k,\n            len,\n            len1,\n            len2,\n            report,\n            report_field,\n            report_fields,\n            reports,\n            save,\n            saveFields,\n            tmp_field;\n        c = this.get('Collector');\n        reports = this.get('reports');\n        saveFields = [\n            'header',\n            'group',\n            'show_columns',\n            'form',\n            'half',\n            'custom',\n            'type',\n            'key',\n            'calendar',\n            'rowsPerPage',\n        ];\n        save = [];\n        for (i = 0, len = reports.length; i < len; i++) {\n            report = reports[i];\n            // this is calendar-report so make sure that date-column is selected\n            if (report['calendar']) {\n                date_field_found = false;\n                if (report['show_columns']) {\n                    report_fields = report['show_columns'].split(',');\n                } else if (report['group']) {\n                    report_fields = report['group'].split(',');\n                }\n                for (j = 0, len1 = report_fields.length; j < len1; j++) {\n                    report_field = report_fields[j];\n                    tmp_field = c.formField(report['form'], report_field);\n                    if (tmp_field && tmp_field['type'] === 'date') {\n                        date_field_found = true;\n                        break;\n                    }\n                }\n                if (!date_field_found) {\n                    // no datefield was found, iterate through form and get first date-field\n                    form_fields = c.fields(report['form']);\n                    for (field_name in form_fields) {\n                        field_obj = form_fields[field_name];\n                        if (field_obj['type'] === 'date') {\n                            if (report['show_columns']) {\n                                Ember.set(\n                                    report,\n                                    'show_columns',\n                                    report['show_columns'] + ',' + field_name,\n                                );\n                            } else if (report['group']) {\n                                Ember.set(report, 'group', report['group'] + ',' + field_name);\n                            }\n                        }\n                    }\n                }\n            }\n            if (this.Collector.fieldExists(report['form'], 'status')) {\n                Ember.set(report, 'canChangeStatus', true);\n            } else {\n                Ember.set(report, 'canChangeStatus', false);\n            }\n            addReport = {};\n            for (k = 0, len2 = saveFields.length; k < len2; k++) {\n                field = saveFields[k];\n                addReport[field] = report.get(field);\n            }\n            save.push(addReport);\n        }\n        return c.ttapi({\n            method: 'post',\n            url: 'comboreport',\n            data: {\n                id: this.get('pageid'),\n                settings: JSON.stringify({\n                    filters: this.get('showFilters'),\n                    reports: save,\n                }),\n            },\n        });\n    },\n    showAddReportButton: Ember.computed('reports.length', function () {\n        if (this.get('reports.length') <= 6 && this.get('session.currentUser.userlevel') !== '1') {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n    reports: Ember.computed('settings.reports', function () {\n        var reports, ret;\n        ret = Em.A([]);\n        reports = this.get('settings.reports');\n        if (!reports) {\n            return ret;\n        }\n        $.each(reports, (key, item) => {\n            var field, i, len, ref, showcolumns;\n            item['index'] = key;\n            if (Ember.isPresent(item['form']) && !this.get('Collector').formExists(item['form'])) {\n                item.error_in_report = 'Form ' + item.form + ' does not exist in service';\n            }\n            //check group items\n            if (item['group']) {\n                ref = item['group'].split(',');\n                for (i = 0, len = ref.length; i < len; i++) {\n                    field = ref[i];\n                    if (field === 'all') {\n                        continue;\n                    }\n                    if (this.Collector.fieldExists(item.form, field) === false) {\n                        item.error_in_report = 'missing ' + field + ' in ' + item.form + ' form';\n                    }\n                }\n            }\n            if (item.type === 'cc') {\n                item.hideFullExportLink = true;\n            }\n            showcolumns = item['show_columns'] ? item['show_columns'].split(',') : [];\n            if (!item['group'] && this.Collector.fieldExists(item.form, 'status')) {\n                item.useRowInfo = true;\n            }\n            // we need checkbox on grouped report also\n            if (this.Collector.fieldExists(item.form, 'status')) {\n                item.canChangeStatus = true;\n            }\n            return ret.pushObject(Ember.Object.create(item));\n        });\n        return ret;\n    }),\n    showFilters: 'date,project,user',\n    loadFilters: Ember.observer('settings.filters', function () {\n        var _showFilters, filters, i, len, ref, val;\n        filters = this.get('settings.filters');\n        if (!filters) {\n            return 'date,project,user';\n        }\n        _showFilters = Em.A([]);\n        ref = filters.split(',');\n        for (i = 0, len = ref.length; i < len; i++) {\n            val = ref[i];\n            _showFilters.pushObject(val);\n        }\n        this.set('_showFilters', _showFilters);\n        return this.set('showFilters', filters);\n    }),\n    updateShowFilters: Ember.observer('_showFilters.[]', function () {\n        return this.set(\n            'showFilters',\n            Em.A(['date']).addObjects(this.get('_showFilters')).join(','),\n        );\n    }),\n    // default date-range for calendar\n    dateRange: Em.computed(function () {\n        return (\n            moment().startOf('month').format('YYYY-MM-DD') +\n            '_' +\n            moment().endOf('month').format('YYYY-MM-DD')\n        );\n    }),\n    actions: {\n        fullScreen: function () {\n            this.get('gui').togglefullScreen();\n            return false;\n        },\n        editorOn: function (report) {\n            report.set('editorMode', true);\n            return false;\n        },\n        editorOff: function (report) {\n            report.set('editorMode', false);\n            this.saveSettings();\n            this.refreshReport(report);\n            return false;\n        },\n        editRow: function (row, report) {\n            var record;\n            record = this.get('store').peekRecord(report.get('form'), row.get('id'));\n            record.one('didUpdate', () => {\n                return report.notifyPropertyChange('refreshRows');\n            });\n            return this.transitionToRoute({\n                queryParams: {\n                    modal: [report.get('form'), row.get('id')],\n                },\n            });\n        },\n        addNewReport: function () {\n            return this.get('reports').pushObject(\n                Ember.Object.create({\n                    editorMode: true,\n                }),\n            );\n        },\n        removeReport: function (report) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('thereport.remove'))\n                .then((con) => {\n                    if (con) {\n                        this.get('reports').removeObject(report);\n                        this.refreshReport(report);\n                        this.saveSettings();\n                    }\n                    return false;\n                });\n        },\n        editFilters: function (state) {\n            this.set('editFiltersMode', state);\n            if (state === false) {\n                this.saveSettings();\n            }\n            return false;\n        },\n        cancelEdit: function (report) {\n            report.set('editorMode', false);\n            return false;\n        },\n        export_csv: function (report) {\n            var component, csv_str, promise, self;\n            if (this.get('showLoader')) {\n                return;\n            }\n            this.set('showLoader', true);\n            // pretty much copy & paste code from export_pdf\n            csv_str = [];\n            component = this.createComponent(report);\n            component.set('settings', report);\n            promise = component.get('asCsvArray');\n            self = this;\n            return promise.then((array) => {\n                this.set('showLoader', false);\n                if (!array) {\n                    return;\n                }\n                return this.createCsvFromElements(array, false);\n            });\n        },\n        export_pdf_full: function (report = false) {\n            this.set('full_pdf_export', true);\n            return this.send('export_pdf', report);\n        },\n        export_excel: function (report) {\n            var component, promise;\n            if (this.get('showLoader')) {\n                return;\n            }\n            this.set('showLoader', true);\n            component = this.createComponent(report);\n            component.set('settings', report);\n            promise = component.get('asCsvArray');\n            return promise\n                .then((array) => {\n                    var excelArray;\n                    if (!array) {\n                        return;\n                    }\n                    excelArray = array.map((arr) => {\n                        return arr.map((item) => {\n                            if (typeof item === 'object' && item !== null) {\n                                return item.string;\n                            }\n                            return item;\n                        });\n                    });\n                    return this.get('excel').export(excelArray, 'sheet1', 'export.xlsx');\n                })\n                .finally(() => {\n                    return this.set('showLoader', false);\n                });\n        },\n        export_excel_page: function () {\n            var getReportData, promises, reports;\n            if (this.get('showLoader')) {\n                return;\n            }\n            this.set('showLoader', true);\n            reports = this.get('reports');\n            promises = [];\n            getReportData = (report, index) => {\n                var component, promise;\n                component = this.createComponent(report);\n                component.set('settings', report);\n                promise = component.get('asCsvArray');\n                return promise.then((array) => {\n                    if (!array) {\n                        return;\n                    }\n                    return array.map((arr) => {\n                        return arr.map((item) => {\n                            if (typeof item === 'object' && item !== null) {\n                                return item.string;\n                            }\n                            return item;\n                        });\n                    });\n                });\n            };\n            reports.forEach((report, index) => {\n                return promises.push(getReportData(report, index));\n            });\n            return Ember.RSVP.Promise.all(promises).then((data) => {\n                var excelArray;\n                excelArray = [];\n                data.forEach(function (rep) {\n                    rep.forEach(function (row) {\n                        return excelArray.push(row);\n                    });\n                    excelArray.push([]);\n                    return excelArray.push([]);\n                });\n                this.get('excel').export(excelArray, 'sheet1', 'export.xlsx');\n                return this.set('showLoader', false);\n            });\n        },\n        export_pdf: function (report = false) {\n            var column,\n                component,\n                counter,\n                getReportData,\n                headers,\n                i,\n                len,\n                pdfElements,\n                promises,\n                reports,\n                self;\n            if (this.get('showLoader')) {\n                return;\n            }\n            this.set('showLoader', true);\n            self = this;\n            reports = this.get('reports');\n            // If report is given we just want to export that\n            if (report) {\n                reports = reports.filter(function (rep) {\n                    if (rep.get('header') === report.get('header')) {\n                        //report_index =\n                        return true;\n                    }\n                });\n            }\n            promises = [];\n            pdfElements = Em.A([]);\n            headers = this.createAdditionalPdfHeaders();\n            getReportData = (report, counter, column) => {\n                var promise;\n                if (this.get('full_pdf_export')) {\n                    promise = report.get('asPdfElementFull');\n                    return promise.then(function (element) {\n                        return self.createPdfFromElements([element]);\n                    });\n                } else {\n                    promise = report.get('asPdfElement');\n                    promises.push(promise);\n                    return promise.then((element) => {\n                        var headerElement;\n                        if (!element) {\n                            return;\n                        }\n                        if (report.settings.header) {\n                            headerElement = this.createPdfHeaderElement(report.settings.header);\n                            headerElement.index = counter;\n                            headerElement.column = column;\n                            pdfElements.pushObject(headerElement);\n                        }\n                        element.index = counter + 1;\n                        element.column = column;\n                        return pdfElements.pushObject(element);\n                    });\n                }\n            };\n            column = null;\n            for (counter = i = 0, len = reports.length; i < len; counter = ++i) {\n                report = reports[counter];\n                component = this.createComponent(report);\n                component.set('settings', report);\n                if (report.half) {\n                    column = column === 1 ? 2 : 1;\n                } else {\n                    column = null;\n                }\n                getReportData(component, counter * 2, column);\n            }\n            if (this.get('full_pdf_export')) {\n                // remove property so next export doesn't use this\n                this.set('full_pdf_export', false);\n                this.set('showLoader', false);\n                return;\n            }\n            return Em.RSVP.Promise.all(promises).then(() => {\n                if (this.get('signature')) {\n                    pdfElements.pushObject({\n                        index: Number.MAX_SAFE_INTEGER - 1,\n                        style: 'marginTop',\n                        table: {\n                            widths: ['auto', 140, 30, 'auto', 140],\n                            body: [\n                                [\n                                    {\n                                        border: [false, false, false, false],\n                                        text: this.get('intl').t('report.worktask.signature') + ':',\n                                    },\n                                    {\n                                        border: [false, false, false, true],\n                                        text: '',\n                                    },\n                                    {\n                                        border: [false, false, false, false],\n                                        text: '',\n                                    },\n                                    {\n                                        border: [false, false, false, false],\n                                        text: this.get('intl').t('thereport.print_name') + ':',\n                                    },\n                                    {\n                                        border: [false, false, false, true],\n                                        text: '',\n                                    },\n                                ],\n                            ],\n                        },\n                    });\n                }\n                if (this.get('datePlace')) {\n                    pdfElements.pushObject({\n                        index: Number.MAX_SAFE_INTEGER,\n                        style: 'marginTop',\n                        table: {\n                            widths: ['auto', 140, 30, 'auto', 140],\n                            body: [\n                                [\n                                    {\n                                        border: [false, false, false, false],\n                                        text: this.get('intl').t('thereport.date') + ':',\n                                    },\n                                    {\n                                        border: [false, false, false, true],\n                                        text: '',\n                                    },\n                                    {\n                                        border: [false, false, false, false],\n                                        text: '',\n                                    },\n                                    {\n                                        border: [false, false, false, false],\n                                        text: this.get('intl').t('thereport.place') + ':',\n                                    },\n                                    {\n                                        border: [false, false, false, true],\n                                        text: '',\n                                    },\n                                ],\n                            ],\n                        },\n                    });\n                }\n                return this.createPdfFromElements(\n                    pdfElements.sortBy('index'),\n                    'download',\n                    headers,\n                ).finally(() => {\n                    return this.set('showLoader', false);\n                });\n            });\n        },\n        addDefaultReport: function (defaultReport) {\n            var header, key, newReport, ref, value;\n            header =\n                'header' in defaultReport.settings\n                    ? defaultReport.settings.header\n                    : defaultReport.name;\n            newReport = Ember.Object.create({\n                custom: true,\n                header: header,\n            });\n            ref = defaultReport.settings;\n            for (key in ref) {\n                value = ref[key];\n                newReport[key] = value;\n            }\n            this.get('reports').pushObject(newReport);\n            return this.saveSettings();\n        },\n        checkedRowsChanged: function (report_index, rows) {\n            return this.set('checked_rows_' + report_index, rows);\n        },\n        removeFieldFromOrder: function (field) {\n            var cols;\n            cols = this.get('settings.order').split(',');\n            if (cols.length === 1) {\n                this.set('settings.order', this.get('settings.defaultOrder'));\n                this.set('manuallyOrdered', false);\n                return;\n            }\n            if (cols.includes(field + '-')) {\n                field = field + '-';\n            }\n            cols.splice(cols.indexOf(field), 1);\n            if (cols.length > 0) {\n                this.set('manuallyOrdered', true);\n                this.set('order', cols.join(','));\n                return this.set('settings.order', cols.join(','));\n            }\n        },\n    },\n    createComponent: function (report) {\n        if (report.type === 'cc') {\n            return ccReport.create({\n                renderer: this,\n                store: this.get('store'),\n                Collector: this.get('Collector'),\n                intl: this.get('intl'),\n                rowsPerPage: 'all',\n                sessionGlobals: this.get('sessionGlobals'),\n                settings: report,\n                key: report.key,\n            });\n        } else {\n            return formReport.create({\n                renderer: this,\n                store: this.get('store'),\n                Collector: this.get('Collector'),\n                intl: this.get('intl'),\n                rowsPerPage: 'all',\n                sessionGlobals: this.get('sessionGlobals'),\n                checked_rows: this.get('checked_rows_' + report.index),\n                settings: report,\n            });\n        }\n    },\n    createAdditionalPdfHeaders: function () {\n        var baseForm, c, field, filter, filterValues, filtername, formName, i, len, rows, tmpFilter;\n        c = this.get('Collector');\n        filterValues = this.get('filterValues');\n        if (!filterValues) {\n            // ugly hack to get empty filters to work in pdf headers\n            filterValues = [\n                {\n                    name: 'date',\n                    value:\n                        moment().startOf('week').format('YYYY-MM-DD') +\n                        '_' +\n                        moment().endOf('week').format('YYYY-MM-DD'),\n                },\n            ];\n        }\n        rows = [];\n        baseForm = this.get('baseForm');\n        for (i = 0, len = filterValues.length; i < len; i++) {\n            filter = filterValues[i];\n            if (!filter.value) {\n                continue;\n            }\n            if (filter.name.indexOf('.') > -1) {\n                tmpFilter = filter.name.split('.');\n                formName = tmpFilter[0];\n                filtername = tmpFilter[1];\n            } else {\n                formName = baseForm;\n                filtername = filter.name;\n            }\n            field = c.field(formName, filtername);\n            if (\n                field.type === 'database' &&\n                Ember.typeOf(filter.value) === 'string' &&\n                !isNaN(filter.value)\n            ) {\n                filter.value = parseInt(filter.value);\n            }\n            rows.push(\n                c.getTranslationForColumn(formName, filtername) +\n                    ': ' +\n                    c._format_(filter.value, formName, filtername, 'pdf'),\n            );\n        }\n        return rows.join('\\n');\n    },\n    defaultReports: Ember.computed(function () {\n        var c, intl, promise;\n        intl = this.get('intl');\n        c = this.get('Collector');\n        promise = c.ttapi({\n            url: 'defaultReports',\n        });\n        promise.then((data) => {\n            var i, key, len, report;\n            for (key = i = 0, len = data.length; i < len; key = ++i) {\n                report = data[key];\n                if ('translatedName' in report) {\n                    data[key].name = intl.t(report.translatedName);\n                }\n            }\n            data = c.needsOfArray(data);\n            return this.set('defaultReports', data);\n        });\n        return null;\n    }),\n});\n\nexport default ThereportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/page/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ThereportRoute;\n\nimport Ember from 'ember';\n\nimport $ from 'jquery';\n\nThereportRoute = Ember.Route.extend({\n    model: function (params) {\n        var pages;\n        pages = this.modelFor('thereport');\n        return new Ember.RSVP.hash({\n            settings: params.page in pages ? pages[params.page].settings : [],\n            pageid: params.page in pages ? pages[params.page].id : null,\n        });\n    },\n    actions: {\n        didTransition: function () {\n            return Ember.run.schedule('afterRender', this, function () {\n                $('.dropdown-toggler').on('click', function (event) {\n                    $('input.checkbox-button').prop('checked', false);\n                    return $(this).parent().toggleClass('open');\n                });\n                return $('body').on('click', function (e) {\n                    if (\n                        !$('.dropdown-toggler').is(e.target) &&\n                        $('.dropdown-menu').has(e.target).length === 0 &&\n                        $('.open').has(e.target).length === 0\n                    ) {\n                        $('input.checkbox-button').prop('checked', false);\n                        return $('div.dropdown').removeClass('open');\n                    }\n                });\n            });\n        },\n    },\n});\n\nexport default ThereportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"qK2odIhw\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\",\\\"defaultReport\\\",\\\"report\\\",\\\"idx\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-10\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"editFiltersMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"multi-buttons\\\",[[24,[\\\"multi-buttons\\\"]]],[[\\\"content\\\",\\\"values\\\"],[[24,[\\\"selectableFilters\\\"]],[24,[\\\"_showFilters\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/filters-comp\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"values\\\"],[[24,[\\\"showFilters\\\"]],[24,[\\\"baseForm\\\"]],[24,[\\\"filterValues\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-2\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"not\\\",[[24,[\\\"editFiltersMode\\\"]]],null],[28,\\\"has-permission\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],[24,[\\\"settings\\\",\\\"userlevels\\\",\\\"edit\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"editFilters\\\",true]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-pencil\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"editFiltersMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"editFilters\\\",false]],[8],[1,[28,\\\"t\\\",[\\\"formeditor.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dropdown btn-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"btn btn-default dropdown-toggler\\\"],[10,\\\"role\\\",\\\"button\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"dropdown-menu dropdown-menu-right\\\"],[10,\\\"role\\\",\\\"menu\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"checkbox-margins\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"signature\\\"]],\\\"sig\\\"]]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"sig\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"report.worktask.signature\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"checkbox-margins\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"datePlace\\\"]],\\\"dateplace\\\"]]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"dateplace\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"thereport.date_and_place\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"divider\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_excel_page\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_excel\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"fullScreen\\\"]],\\\"report-main-zoomed\\\"],null],\\\" report-main-content report-thereport\\\"]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"reports\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"unless\\\",[[23,4,[\\\"editorMode\\\"]],[23,4,[\\\"half\\\"]]],null],\\\"col-sm-6\\\",\\\"col-sm-12\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-10 col-xs-5\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,4,[\\\"header\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"h3\\\",true],[8],[1,[23,4,[\\\"header\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-2 col-xs-7 text-right\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[23,4,[\\\"editorMode\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"has-permission\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],[24,[\\\"settings\\\",\\\"userlevels\\\",\\\"edit\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"editorOn\\\",[23,4,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-pencil\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\",[23,4,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PDF-2Filled\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dropdown btn-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"a\\\",true],[10,\\\"role\\\",\\\"button\\\"],[10,\\\"class\\\",\\\"btn btn-default dropdown-toggler\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"dropdown-menu dropdown dropdown-menu-right\\\"],[10,\\\"role\\\",\\\"menu\\\"],[10,\\\"aria-labelledby\\\",\\\"dropdownMenu\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"isMobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_csv\\\",[23,4,[]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_csv\\\"],null],false],[9],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_excel\\\",[23,4,[]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_excel\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-submenu\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"input\\\",true],[11,\\\"id\\\",[29,[[28,\\\"concat\\\",[[23,5,[]],\\\"-toggle\\\"],null]]]],[10,\\\"class\\\",\\\"checkbox-button\\\"],[10,\\\"href\\\",\\\"javascript:void(0)\\\"],[10,\\\"type\\\",\\\"checkbox\\\"],[8],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[11,\\\"for\\\",[29,[[28,\\\"concat\\\",[[23,5,[]],\\\"-toggle\\\"],null]]]],[10,\\\"class\\\",\\\"label-checkbox\\\"],[8],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-left\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"dropdown-menu\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"checkbox-margins\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"signature\\\"]],[28,\\\"concat\\\",[[23,5,[]],\\\"-signature\\\"],null]]]],false],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[11,\\\"for\\\",[29,[[28,\\\"concat\\\",[[23,5,[]],\\\"-signature\\\"],null]]]],[8],[0,\\\"\\\\n                                            \\\"],[1,[28,\\\"t\\\",[\\\"report.worktask.signature\\\"],null],false],[0,\\\"\\\\n                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"checkbox-margins\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"checkbox\\\",[24,[\\\"datePlace\\\"]],[28,\\\"concat\\\",[[23,5,[]],\\\"-dateplace\\\"],null]]]],false],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[11,\\\"for\\\",[29,[[28,\\\"concat\\\",[[23,5,[]],\\\"-dateplace\\\"],null]]]],[8],[0,\\\"\\\\n                                            \\\"],[1,[28,\\\"t\\\",[\\\"thereport.date_and_place\\\"],null],false],[0,\\\"\\\\n                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"divider\\\"],[8],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\",[23,4,[]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[23,4,[\\\"hideFullExportLink\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf_full\\\",[23,4,[]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf_full\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"fullScreen\\\"]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"fullScreen\\\"]],\\\"move move-Cross\\\",\\\"move move-FitWidth report-fullscreen\\\"],null]],[8],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,4,[\\\"editorMode\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"thereport/form-reporteditor\\\",null,[[\\\"settings\\\",\\\"save\\\",\\\"remove\\\",\\\"cancel\\\"],[[23,4,[]],[28,\\\"action\\\",[[23,0,[]],\\\"editorOff\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeReport\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"cancelEdit\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,4,[\\\"error_in_report\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-exclamation-sign\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"comboreport.error_in_report\\\"],null],false],[0,\\\" (\\\"],[1,[23,4,[\\\"error_in_report\\\"]],false],[0,\\\")\\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"type\\\"]],\\\"cc\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"cc-report\\\",null,[[\\\"settings\\\"],[[23,4,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[23,4,[\\\"group\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"settings\\\",\\\"action\\\",\\\"useSpecialQueryParams\\\",\\\"checkedRowsChanged\\\",\\\"rowActions\\\",\\\"checkable\\\",\\\"hideCheckedActions\\\"],[[23,4,[]],\\\"editorOn\\\",true,[28,\\\"action\\\",[[23,0,[]],\\\"checkedRowsChanged\\\",[23,4,[\\\"index\\\"]]],null],false,false,true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"settings\\\",\\\"action\\\",\\\"useSpecialQueryParams\\\",\\\"checkedRowsChanged\\\",\\\"rowActions\\\",\\\"editRow\\\",\\\"checkable\\\"],[[23,4,[]],\\\"editorOn\\\",true,[28,\\\"action\\\",[[23,0,[]],\\\"checkedRowsChanged\\\",[23,4,[\\\"index\\\"]]],null],[24,[\\\"rowActions\\\"]],\\\"editRow\\\",[23,4,[\\\"canChangeStatus\\\"]]]]],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4,5]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"has-permission\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],[24,[\\\"settings\\\",\\\"userlevels\\\",\\\"edit\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showAddReportButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group dropup\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addNewReport\\\"]],[8],[1,[28,\\\"t\\\",[\\\"formeditor.add_report\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"defaultReports\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[5,\\\"bs-dropdown\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,1,[\\\"button\\\"]],[],[[\\\"@class\\\"],[\\\"btn-primary dropdown-toggle\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"caret\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"sr-only\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.thereport.toggle_dropdown\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"defaultReports\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"addDefaultReport\\\",[23,3,[]]]],[8],[1,[23,3,[\\\"name\\\"]],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/thereport/page/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ThereportRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nThereportRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    model: function (params) {\n        var c, report_prefix;\n        c = this.get('Collector');\n        report_prefix = this.get('intl').t('thereport.report_prefix');\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise;\n            promise = c.ttapi({\n                url: 'comboreports',\n            });\n            return promise.then((data) => {\n                data.forEach((item, index) => {\n                    if (!item.name) {\n                        return (item.name = report_prefix + ' ' + (index + 1));\n                    }\n                });\n                while (data.length < 4) {\n                    data.pushObject({\n                        name: report_prefix + ' ' + (data.length + 1),\n                    });\n                }\n                return resolve(data);\n            });\n        });\n    },\n    redirect: function (model, transition) {\n        if (transition.targetName === 'thereport.index') {\n            return this.transitionTo('thereport.page', 0);\n        }\n    },\n    actions: {\n        willTransition: function () {\n            return this.refresh();\n        },\n        reload: function () {\n            return this.refresh();\n        },\n    },\n});\n\nexport default ThereportRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/settings/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ThereportSettingsController;\n\nimport Ember from 'ember';\n\nThereportSettingsController = Ember.Controller.extend({\n    parent: Em.inject.controller('thereport'),\n    dialogs: Em.inject.service(),\n    intl: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    reports: Em.computed.alias('parent.model'),\n    _reports: Em.computed('reports', function () {}),\n    allInUse: Em.computed('reports', function () {\n        var allInUse;\n        allInUse = true;\n        if (this.get('session.currentUser.userlevel') === '1') {\n            //hide \"Add report\" from settings page for worker if worker has been given edit permissions for some report...\n            allInUse = false;\n        }\n        this.get('model').forEach(function (item) {\n            if (!item.id) {\n                return (allInUse = false);\n            }\n        });\n        return allInUse;\n    }),\n    _userlevels: Em.computed('currentReport', function () {\n        var c, lvls;\n        c = this.get('Collector');\n        lvls = c.getUserlevels([]);\n        return lvls;\n    }),\n    onlyIcanSee: Em.computed('currentReport', function () {\n        if (this.get('currentReport.id')) {\n            if (this.get('currentReport.settings.only_creator_can_see')) {\n                return true;\n            }\n        }\n        return false;\n    }),\n    createdByCurrentuser: Em.computed('currentReport', function () {\n        if (this.get('currentReport.created_by_currentuser') === true) {\n            return true;\n        }\n        return false;\n    }),\n    userlevels: Em.computed('_userlevels', function () {\n        var i, len, lvl, lvls, savedUserlevels, tmp_lvls;\n        tmp_lvls = this.get('_userlevels');\n        savedUserlevels = this.get('currentReport.settings.userlevels');\n        if (this.get('session.currentUser.userlevel') !== '5') {\n            lvls = tmp_lvls.filter((lvl) => {\n                if (lvl['id'] === '5') {\n                    return false;\n                } else {\n                    return true;\n                }\n            });\n        } else {\n            lvls = tmp_lvls;\n        }\n        for (i = 0, len = lvls.length; i < len; i++) {\n            lvl = lvls[i];\n            if (\n                (savedUserlevels && savedUserlevels['view'].indexOf(parseInt(lvl['id'])) > -1) ||\n                lvl['id'] === this.get('session.currentUser.userlevel')\n            ) {\n                //console.log \"userlevel \"+lvl['id']+\" has view permission\"\n                lvl['view'] = true;\n            }\n            if (\n                (savedUserlevels && savedUserlevels['edit'].indexOf(parseInt(lvl['id'])) > -1) ||\n                lvl['id'] === this.get('session.currentUser.userlevel')\n            ) {\n                //console.log \"userlevel \"+lvl['id']+\" has edit permission\"\n                lvl['edit'] = true;\n            }\n        }\n        return lvls;\n    }),\n    actions: {\n        saveComboSettings: function () {\n            var editPermissions, i, len, lvl, ref, report, viewPermissions;\n            report = this.get('currentReport');\n            viewPermissions = [];\n            editPermissions = [];\n            ref = this.get('userlevels');\n            for (i = 0, len = ref.length; i < len; i++) {\n                lvl = ref[i];\n                if (lvl['edit']) {\n                    editPermissions.push(parseInt(lvl['id']));\n                }\n                if (lvl['view']) {\n                    viewPermissions.push(parseInt(lvl['id']));\n                }\n            }\n            if (this.get('onlyIcanSee')) {\n                Em.set(report, 'settings.only_creator_can_see', true);\n            } else {\n                delete report['settings']['only_creator_can_see'];\n                //Em.set report,'settings.userid', null\n                if (viewPermissions.length > 0 && editPermissions.length > 0) {\n                    // if this is not personal report-page, set permissions\n                    // also set permissions only if user has checked some boxes\n                    // ALSO admin has always permissions to edit & view\n                    if (viewPermissions.indexOf(5) === -1) {\n                        viewPermissions.push(5);\n                    }\n                    if (editPermissions.indexOf(5) === -1) {\n                        editPermissions.push(5);\n                    }\n                    Em.set(report, 'settings.userlevels', {\n                        view: viewPermissions,\n                        edit: editPermissions,\n                    });\n                } else {\n                    delete report['settings']['userlevels'];\n                }\n            }\n            this.get('parent').saveReport(report['id'], report['name'], report['settings']);\n            this.set('showComboDialog', false);\n            return this.get('parent').send('reload');\n        },\n        edit: function (report) {\n            this.set('currentReport', report);\n            if (\n                this.get('currentReport.settings.userid') &&\n                parseInt(this.get('currentReport.settings.userid')) ===\n                    parseInt(this.get('session.currentUser.id'))\n            ) {\n                this.set('ownReportPage', true);\n            }\n            this.set('showComboDialog', true);\n            return false;\n        },\n        rename: function (report) {\n            var promise;\n            promise = this.get('dialogs').prompt(\n                this.get('intl').t('thereport.report_name'),\n                report.name,\n            );\n            return promise.then((val) => {\n                if (val !== false) {\n                    return this.get('parent')\n                        .saveReport(report.id, val)\n                        .then(() => {\n                            return this.get('parent').send('reload');\n                        });\n                }\n            });\n        },\n        addNew: function () {\n            this.set('ownReportPage', true);\n            this.set(\n                'currentReport',\n                Em.Object.create({\n                    settings: {\n                        userid: this.get('session.currentUser.id'),\n                    },\n                    created_by_currentuser: true,\n                }),\n            );\n            this.set('showComboDialog', true);\n            //@set 'currentReport', report\n            return false;\n        },\n        /*\n    promise = @get('dialogs').prompt @get('intl').t \"thereport.report_new_name\"\n\n    promise.then (val) =>\n        if val isnt false\n            @get('parent').saveReport(null, val).then =>\n                @get('parent').send 'reload'\n\n    */\n        remove: function (report) {\n            var promise;\n            promise = this.get('dialogs').confirm(this.get('intl').t('thereport.remove'));\n            return promise.then((val) => {\n                if (val === true) {\n                    return this.get('parent')\n                        .removeReport(report.id)\n                        .then(() => {\n                            return this.get('parent').send('reload');\n                        });\n                }\n            });\n        },\n        removeModal: function () {\n            return this.set('showComboDialog', false);\n        },\n    },\n});\n\nexport default ThereportSettingsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/thereport/settings/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ThereportSettingsRoute;\n\nimport Ember from 'ember';\n\nThereportSettingsRoute = Ember.Route.extend();\n\nexport default ThereportSettingsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"9WJUTJvS\",\"block\":\"{\\\"symbols\\\":[\\\"userlevel\\\",\\\"rep\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"reports\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n        \\\"],[2,\\\"div class=\\\\\\\"input-group-btn\\\\\\\">\\\\n            <div class=\\\\\\\"btn-group-vertical\\\\\\\" role=\\\\\\\"group\\\\\\\" aria-label=\\\\\\\"...\\\\\\\">\\\\n                <button class=\\\\\\\"btn btn-m-default\\\\\\\" data-ember-action=\\\\\\\"1875\\\\\\\"><span class=\\\\\\\"move move-SortUp\\\\\\\"></span></button>\\\\n                <button class=\\\\\\\"btn btn-m-default\\\\\\\" data-ember-action=\\\\\\\"1876\\\\\\\"><span class=\\\\\\\"move move-SortDown\\\\\\\"></span></button>\\\\n            </div>\\\\n        </div\\\"],[0,\\\"\\\\n        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item form-editor-field  \\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-btn form-editor\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group-vertical\\\"],[10,\\\"role\\\",\\\"group\\\"],[10,\\\"aria-label\\\",\\\"...\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"has-permission\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],[23,2,[\\\"settings\\\",\\\"userlevels\\\",\\\"edit\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"btn btn-m-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"edit\\\",[23,2,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[0,\\\"                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-action\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,2,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Delete\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showComboDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"thereport.edit_page\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"thereport.report_name\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"currentReport\\\",\\\"name\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"thereport.permissions\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"createdByCurrentuser\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"thereport.only_i_can_see\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"class\\\"],[\\\"checkbox\\\",[24,[\\\"onlyIcanSee\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"onlyIcanSee\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive table-hover general-report\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"thereport.can_edit\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"thereport.can_view\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.user.userlevel\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"userlevels\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"disabled\\\",\\\"type\\\",\\\"checked\\\",\\\"class\\\"],[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]]],null],true],null],\\\"checkbox\\\",[23,1,[\\\"edit\\\"]],\\\"form-control add-fields\\\"]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"input\\\",null,[[\\\"disabled\\\",\\\"type\\\",\\\"checked\\\",\\\"class\\\"],[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]]],null],true],null],\\\"checkbox\\\",[23,1,[\\\"view\\\"]],\\\"form-control add-fields\\\"]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"td\\\",true],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"thereport.cannot_hide_own_report\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"name\\\",\\\"save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveComboSettings\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"allInUse\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"]],[8],[1,[28,\\\"t\\\",[\\\"thereport.add_report_page\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/thereport/settings/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"nxPLqLND\",\"block\":\"{\\\"symbols\\\":[\\\"sublink\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subMenus\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[4,\\\"link-to\\\",null,[[\\\"params\\\",\\\"class\\\",\\\"tagName\\\"],[[23,1,[\\\"link\\\"]],\\\"submenu-item\\\",\\\"div\\\"]],{\\\"statements\\\":[[1,[23,1,[\\\"text\\\"]],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/thereport/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerAddController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nimport collector from '../../../classes/collector';\n\nimport config from '../../../config/environment';\n\nTimetrackerAddController = GeneralAddController.extend({\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    flags: Ember.inject.service(),\n    useFormAdd: Ember.computed(function () {\n        return (\n            this.get('flags').test('form-add') ||\n            this.get('flags').test('ember-movenium-form-add-worktime')\n        );\n    }),\n    useNewVersion: Ember.computed(function () {\n        return (\n            this.get('Collector').testNeeds(['products.multitasking']) ||\n            this.get('flags').test('form-add') ||\n            this.get('flags').test('ember-movenium-form-add-worktime')\n        );\n    }),\n    init: function () {\n        var cust, fields;\n        this._super();\n        fields = collector.getFormObjects('worktime');\n        cust = {};\n        if (\n            !fields.starttime.features.hide &&\n            !fields.endtime.features.hide &&\n            !fields.work_hours.features.mandatory\n        ) {\n            cust = {\n                starttime: {\n                    defaultValue: '07:00',\n                },\n                endtime: {\n                    defaultValue: moment().format('HH:mm'),\n                },\n                date: {\n                    defaultValue: moment().format('YYYY-MM-DD'),\n                },\n                pause: {\n                    minValue: 0,\n                },\n            };\n            this.set('customization', cust);\n        }\n        if (fields.starttime.features.hide && fields.endtime.features.hide) {\n            cust = {\n                date: {\n                    defaultValue: moment().format('YYYY-MM-DD'),\n                },\n            };\n            this.set('customization', cust);\n        }\n        // IF SERVICE THROWS ERROR HERE ABOUT \"Can't set project of undefined\" THEN THE SERVICE IS B-R-O-K-E-N\n        // Don't fix this code, rather check what is wrong with the service, usually work_hours is set to mandatory\n        // when using clockcard or something else\n        // It pretty much means that the above two ifs didn't trigger so something wrong with the fields starttime, endtime or work_hours\n        //if collector.getFormObject(\"project.force_location\") && @get('session.currentUser.userlevel') != \"5\"\n        //    cust = @get \"customization\"\n        //    cust.project =\n        //        template: \"timetracker/add/gpsprojects\"\n        //else\n        cust = this.get('customization');\n        cust.project = {\n            template: 'timetracker/add/project',\n        };\n        if (this.get('Collector').testNeedsOne('products.timetracker_km_automatic')) {\n            return (cust.km = {\n                template: 'timetracker/add/km_auto',\n            });\n        }\n    },\n    addNewLink: 'timetracker.add',\n    editNewLink: 'timetracker.edit',\n    date_newer_warning: false,\n    getStarttime: function () {\n        // get starttime by using magic aka fuzzy logic\n        return this.get('Collector').ttapi({\n            method: 'get',\n            dataType: 'text',\n            url: 'get_starttime',\n        });\n    },\n    model_observer: Em.observer('model', function () {\n        var fields, records;\n        if (this.get('useNewVersion')) {\n            return;\n        }\n        fields = collector.getFormObjects('worktime');\n        if (this.get('session.currentUser.currentMySite')) {\n            this.set('model.project', this.get('session.currentUser.currentMySite'));\n        }\n        if (\n            !fields.starttime.features.hide &&\n            !fields.endtime.features.hide &&\n            !fields.work_hours.features.mandatory &&\n            this.get('model.isNew') &&\n            !this.get('model.starttime')\n        ) {\n            records = this.store\n                .peekAll('worktime')\n                .filterBy('date', moment().format('YYYY-MM-DD'))\n                .sortBy('endtime');\n            if (records.get('lastObject.endtime')) {\n                return this.set('model.starttime', records.get('lastObject.endtime'));\n            } else {\n                return this.getStarttime().then((start) => {\n                    if (start) {\n                        return this.set('model.starttime', start);\n                    }\n                });\n            }\n        }\n    }),\n    date_observer: Em.observer('model.date', function () {\n        var date, next_month_date, selected_date;\n        if (this.get('useNewVersion')) {\n            return;\n        }\n        date = this.get('model.date');\n        if (date == null) {\n            return;\n        }\n        if (!moment(new Date(date)).isValid()) {\n            return;\n        }\n        selected_date = moment(new Date(date)).format('YYYY-MM-DD');\n        next_month_date = moment().add(1, 'months').format('YYYY-MM-DD');\n        if (selected_date > next_month_date) {\n            return this.set('date_newer_warning', true);\n        } else {\n            return this.set('date_newer_warning', false);\n        }\n    }),\n    actions: {\n        goBack: () => {\n            return window.history.back(-1);\n        },\n    },\n});\n\nexport default TimetrackerAddController;\n","export default Ember.HTMLBars.template({\"id\":\"rparQZTA\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"gps-forced-dropdown\\\",null,[[\\\"model\\\",\\\"custom_projects\\\",\\\"change\\\",\\\"classes\\\"],[[24,[\\\"model\\\"]],[24,[\\\"custom_projects\\\"]],\\\"changeValue\\\",\\\"form-control add-fields\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/add/gpsprojects/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Ok/24ZQk\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"gps-auto-km\\\",null,[[\\\"model\\\",\\\"field\\\",\\\"classes\\\"],[[24,[\\\"model\\\"]],[24,[\\\"fieldRoute\\\"]],\\\"form-control add-fields\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/add/km_auto/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"foq9ZkN9\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"change\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"fieldRoute\\\"]],\\\"customChangeValue\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"project-help\\\",null,[[\\\"projectid\\\"],[[24,[\\\"model\\\",\\\"project\\\",\\\"id\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/add/project/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nimport config from '../../../config/environment';\n\nTimetrackerAddRoute = GeneralAddRoute.extend({\n    Collector: Ember.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    store: Ember.inject.service(),\n    session: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    flags: Ember.inject.service(),\n    modelName: 'worktime',\n    controllerName: 'timetracker/add',\n    afterSave: Em.computed(function () {\n        if (this.get('Collector').testNeeds(['mobileView', 'userlevel=1'])) {\n            return 'timetracker.week-report';\n        } else {\n            return 'timetracker.worktime-list';\n        }\n    }),\n    savedRoute: 'timetracker.addsaved',\n    rowSaved: function (row) {\n        var project, user;\n        // save worktime adding to ttapi\n        this.get('ttapi').request('/worktimeAdded', {\n            method: 'post',\n            data: {\n                username: row.get('user.username'),\n                userid: row.get('user.id'),\n                starttime: row.get('starttime'),\n                date: row.get('date'),\n            },\n        });\n        // Alert for missing orientation or outdated pass\n        if (\n            this.get('Collector').testNeedsOne('modules.orientations') &&\n            this.get('session.currentUser.userlevel') === '1' &&\n            !this.get('session.currentUser.no_orientation')\n        ) {\n            project = row.get('project.id');\n            if (this.get('Collector').testNeedsOne('products.rakentajanpaketti')) {\n                if (row.get('project.proj_type') === '2' || row.get('project.proj_type') === null) {\n                    return;\n                }\n            }\n            user = row.get('user.id');\n            return this.get('store')\n                .query('orientation', {\n                    ori_site: project,\n                    ori_user: user,\n                    limit: 1,\n                })\n                .then((data) => {\n                    if (\n                        this.get('Collector').testNeedsOne('products.orientations_self') &&\n                        data.get('meta.count') === 0\n                    ) {\n                        return this.get('dialogs')\n                            .alert(\n                                this.get('intl').t(\n                                    'worktime.after_save.orientation.self_orientation',\n                                ),\n                            )\n                            .then(() => {\n                                return this.transitionTo(\n                                    'orientations.own-orientation',\n                                    row.get('project.id'),\n                                );\n                            });\n                    } else if (data.get('meta.count') === 0) {\n                        if (this.flags.test('disable-worktime-orientations-missing-warning')) {\n                            return;\n                        }\n                        \n                        return this.get('dialogs').alert(\n                            this.get('intl').t('worktime.after_save.orientation.not_found'),\n                        );\n                    } else if (\n                        data.get('firstObject.pass_end') &&\n                        moment().isAfter(moment(data.get('firstObject.pass_end')))\n                    ) {\n                        return this.get('dialogs').alert(\n                            this.get('intl').t('worktime.after_save.orientation.outdated'),\n                        );\n                    }\n                });\n        }\n    },\n    actions: {\n        afterSave: function (settings, record) {\n            return this.transitionTo('timetracker.addsaved').then((newRoute) => {\n                newRoute.controller.set('model', record);\n                newRoute.controller.set('afterSave', this.get('afterSave'));\n                newRoute.controller.set('addPageLink', this.get('controller.addNewLink'));\n                return newRoute.controller.set('editPageLink', this.get('controller.editNewLink'));\n            });\n        },\n        cancelClicked: function () {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('general.confirm.cancel'))\n                .then((con) => {\n                    if (con) {\n                        this.get('controller.model').rollbackAttributes();\n                        return window.history.back(-1);\n                    }\n                });\n        },\n    },\n});\n\nexport default TimetrackerAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"27qSG9y0\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"useNewVersion\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"gps-icon\\\",null,[[\\\"position\\\"],[\\\"left\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"header.path.add.worktime\\\"],null],false],[9],[9],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"timetracker.week-report\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"useFormAdd\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/form-add/forms/worktime\\\",null,[[\\\"close\\\",\\\"showSaved\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"goBack\\\"],null],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/add-modal/worktime\\\",null,[[\\\"form\\\",\\\"record\\\",\\\"record_id\\\",\\\"cancelClicked\\\",\\\"recordSaved\\\"],[\\\"worktime\\\",[24,[\\\"model\\\"]],\\\"new\\\",\\\"cancelClicked\\\",\\\"afterSave\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"date_newer_warning\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[28,\\\"t\\\",[\\\"timetracker.add_date_for_future_warning\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/addsaved/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerAddSavedController;\n\nimport Ember from 'ember';\n\nimport savedController from '../../../controllers/saved';\n\nTimetrackerAddSavedController = savedController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    customerSettings: Ember.inject.service(),\n    session: Ember.inject.service(),\n    showSelfOrientationLink: Em.computed('model.project.id', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                if (\n                    this.get('customerSettings').checkSetting('self_orientation') &&\n                    !this.get('model.user.no_orientation') &&\n                    parseInt(this.get('session.currentUser.userlevel')) === 1\n                ) {\n                    return this.get('store')\n                        .query('orientation', {\n                            ori_user: this.get('model.user.id'),\n                            ori_site: this.get('model.project.id'),\n                        })\n                        .then((orientations) => {\n                            if (orientations.get('meta.count') === 0) {\n                                return resolve(true);\n                            } else {\n                                return resolve(false);\n                            }\n                        });\n                } else {\n                    return resolve(false);\n                }\n            }),\n        });\n    }),\n    currentSaldo: Ember.computed('model', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                return this.get('Collector')\n                    .ttapi({\n                        url: 'saldo/get_saldo?userid=' + this.get('model.user.id'),\n                    })\n                    .then((back) => {\n                        return resolve({\n                            value: back['saldo'] / 60,\n                            from: back['from'],\n                            to: back['to'],\n                        });\n                    });\n            }),\n        });\n    }),\n});\n\nexport default TimetrackerAddSavedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/addsaved/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerAddSavedRoute;\n\nimport Ember from 'ember';\n\nimport SavedRoute from '../../../routes/saved';\n\nTimetrackerAddSavedRoute = SavedRoute.extend({\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.notifyPropertyChange('currentSaldo');\n    },\n});\n\nexport default TimetrackerAddSavedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"9Kt9hjP3\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/saved\\\",[]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.your_saldo_now\\\"],null],false],[0,\\\":\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentSaldo\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"currentSaldo\\\",\\\"value\\\"]]],null],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/addsaved/template.hbs\"}});","import { alias } from '@ember/object/computed';\nimport EmberPromise, { hash } from 'rsvp';\nimport Controller from '@ember/controller';\nimport EmberObject, { get, set, computed } from '@ember/object';\nimport { A } from '@ember/array';\nimport { typeOf } from '@ember/utils';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    Collector: service('collector-service'),\n    dialogs: service(),\n    intl: service(),\n    analytics: service(),\n    store: service(),\n    capi: service(),\n    ttapi: service(),\n    error: service(),\n    form: 'worktime',\n    user: null,\n    employer: null,\n\n    init() {\n        this._super(...arguments);\n        this.queryParams = ['user', 'date', 'status', 'project', 'employer'];\n        this.shownColumns = ['project', 'starttime', 'endtime', 'work_hours', 'task'];\n        this.absenceColorFrom = ['abcensetype.id', 'user.firstname', 'user.lastname'];\n        this.worktimeFields = ['work_hours'];\n        this.absenceFields = ['hours'];\n    },\n\n    dailyWorktimeSums: alias('model.dailyWorktimeSums.content'),\n    worktimeSums: alias('model.worktimeSums.content'),\n    absences: alias('model.absences.abcenses'),\n    absenceTypes: alias('model.absences.abcensetypes'),\n    settings: EmberObject.create({\n        massedit: true,\n        hideExports: true,\n        rowSettings: EmberObject.create({\n            editRoute: 'timetracker.edit',\n            historyRoute: 'timetracker.history',\n        }),\n    }),\n    absence_settings: EmberObject.create({\n        massedit: true,\n        hideExports: true,\n        rowSettings: EmberObject.create({\n            editRoute: 'abcenses.edit',\n            historyRoute: 'abcenses.history',\n        }),\n    }),\n    filters: computed('status', 'user', 'date', function () {\n        const c = get(this, 'Collector');\n\n        let fields = c.fieldArray('worktime', ['date', 'user', 'status', 'project', 'employer']);\n\n        // https://jira.visma.com/browse/SUP-3159 can't filter by worktimes as box users don't show then\n        // if (c.testNeeds(['user.module_controls'])) {\n        //     fields.findBy('name', 'user').filterOptions = {module_controls: \"worktimes\"}\n        // }\n        const filters = A([]);\n        fields.forEach((field) => {\n            let filter = EmberObject.create({...field, value: get(this, get(field, 'name')), field: field.name});\n            filters.pushObject(filter);\n        });\n\n        return filters;\n    }),\n\n    showWarning: computed('dailyWorktimeSums', 'absences', function () {\n        if (get(this, 'dailyWorktimeSums.length') >= 100 || get(this, 'absences.length') >= 100) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n\n    statusTypes: computed('form', function () {\n        if (!get(this, 'form')) {\n            return [];\n        }\n        const c = get(this, 'Collector');\n        const intl = get(this, 'intl');\n        const field = c.field(get(this, 'form'), 'status');\n        let options = [];\n        field.options.forEach((option) => {\n            options.push(\n                intl.exists('status.' + option)\n                    ? {\n                          id: option,\n                          name: intl.t('calendar.' + option + '_all_rows'),\n                      }\n                    : { id: option, name: intl.t('calendar.change_status') + option },\n            );\n        });\n        return options;\n    }),\n\n    actions: {\n        addNew(day, type) {\n            window.scrollTo(0, 0);\n            let params = {};\n            if (type == 'abcense') {\n                params.startdate = day;\n                params.enddate = day;\n            } else {\n                params.date = day;\n            }\n\n            if (get(this, 'user')) {\n                params.user = get(this, 'store').peekRecord('user', get(this, 'user'));\n            }\n            if (get(this, 'project')) {\n                params.project = get(this, 'store').peekRecord('project', get(this, 'project'));\n            }\n            const record = get(this, 'store').createRecord(type, params);\n\n            ['didDelete', 'didCreate', 'didUpdate'].forEach((eventName) => {\n                record.on(eventName, () => {\n                    this.send('refreshModel', record);\n                });\n            });\n\n            this.transitionToRoute({ queryParams: { modal: [type, 'new'] } });\n        },\n        openEditor(row) {\n            if (get(row, 'row_info.privilege_remove') != undefined && !get(row, 'isEditable')) {\n                return;\n            }\n            window.scrollTo(0, 0);\n            row.on('didUpdate', () => {\n                this.send('refreshModel', row);\n            });\n            this.transitionToRoute({\n                queryParams: { modal: [get(row, 'constructor.modelName'), get(row, 'id')] },\n            });\n        },\n        remove(record) {\n            get(this, 'dialogs')\n                .confirm(get(this, 'intl').t('general.remove_row'))\n                .then((con) => this._removeRecord(con, record));\n        },\n\n        filterChanged(value, field) {\n            if (['object', 'instance'].includes(typeOf(value))) {\n                value = get(value, 'id');\n            }\n            if (!field) {\n                set(this, 'date', value);\n            } else {\n                set(this, field, value);\n            }\n        },\n\n        showRows(date) {\n            this.transitionToRoute('timetracker.aggregated.rows', date);\n        },\n\n        showAllRows() {\n            this.toggleProperty('showAllRows');\n            if (get(this, 'showAllRows')) {\n                this.transitionToRoute('timetracker.aggregated.rows', 'all');\n            } else {\n                this.transitionToRoute('timetracker.aggregated');\n            }\n        },\n\n        print() {\n            get(this, 'analytics').trackEvent({\n                category: 'Aggregated report',\n                action: 'Print report',\n            });\n            print();\n        },\n\n        async printAll() {\n            get(this, 'analytics').trackEvent({\n                category: 'Aggregated report',\n                action: 'Print all data',\n            });\n            if (get(this, 'showAllRows')) {\n                this.transitionToRoute('timetracker.aggregated');\n                set(this, 'showAllRowsByUser', true);\n            } else {\n                set(this, 'showAllRowsByUser', false);\n            }\n            set(this, 'printLoading', true);\n\n            this.Collector.ajax({\n                url:\n                    'system/clear_memcache?partnerid=' +\n                    get(this, 'session.currentUser.partnerid') +\n                    '&username=' +\n                    get(this, 'session.currentUser.username'),\n            });\n            let users = await this.store.query('user', { limit: 'all' });\n            let mappedData = [];\n\n            mappedData = users.map(async (user) => {\n                try {\n                    return hash({\n                        user: user,\n                        dailyWorktimeSums: await this.capi.findAll('worktime', {\n                            user: user.id,\n                            date: get(this, 'date'),\n                            groupBy: 'date',\n                            status: this.status,\n                        }),\n                        absences: await this.ttapi._get('/api/absences/splitted', {\n                            user: user.id,\n                            status: this.status,\n                            startdate: get(this, 'date').split('_')[0],\n                            enddate: get(this, 'date').split('_')[1],\n                            sideload: this.Collector.getSideloads('abcense'),\n                            raw: true,\n                        }),\n                        worktimeSums: await this.capi.findAll('worktime', {\n                            user: user.id,\n                            date: get(this, 'date'),\n                            groupBy: 'user',\n                            status: this.status,\n                        }),\n                        rows: hash({\n                            worktimeRows: this.showAllRowsByUser\n                                ? get(this, 'store').query('worktime', {\n                                      user: user.id,\n                                      date: get(this, 'date'),\n                                      status: this.status,\n                                  })\n                                : [],\n                            absenceRows: this.showAllRowsByUser\n                                ? get(this, 'store').query('abcense', {\n                                      user: user.id,\n                                      startdate: get(this, 'date'),\n                                      status: this.status,\n                                  })\n                                : [],\n                        }),\n                    });\n                } catch (e) {\n                    this.error.notify(e);\n                    set(this, 'printLoading', false);\n                    return [];\n                }\n            });\n\n            let data = await EmberPromise.all(mappedData);\n            await set(this, 'printableData', data);\n            set(this, 'printLoading', false);\n            await this.printableData;\n            print();\n            set(this, 'printableData', []);\n        },\n\n        setRowsPerPage(form, limit) {\n            set(this, form + '_page', 1);\n            set(this, form + '_limit', limit);\n        },\n    },\n    _removerecord(con, record) {\n        if (con) {\n            record.destroyRecord();\n        }\n    },\n\n    canAdd(type, date) {\n        if (type == 'worktime') {\n            const c = get(this, 'Collector');\n            return c.canAddWorktime(date);\n        }\n        return true;\n    },\n\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n});\n","import { hash } from 'rsvp';\nimport Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport collector from '../../../classes/collector';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\nimport { isPresent } from '@ember/utils';\n\nexport default Route.extend({\n    Collector: service('collector-service'),\n    capi: service(),\n    ttapi: service(),\n    gui: service(),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n    },\n    AuthenticatedRouteMixin,\n\n    beforeModel() {\n        this._super(...arguments);\n        set(this, 'gui.sidebar', true);\n    },\n    model(params) {\n        const c = get(this, 'Collector');\n        const capi = get(this, 'capi');\n        const ttapi = get(this, 'ttapi');\n        if (!c.testNeedsOne('employer')) delete params.employer;\n        if (!params.user) delete params.user;\n        delete params.page;\n        params.sideload = true;\n        params.order = 'date';\n\n        let aparams = Object.assign({}, params);\n        if (c.testNeedsOne('abcense')) {\n            const split_date = params.date.split('_');\n            delete aparams.date;\n            aparams.startdate = split_date[0];\n            aparams.enddate = split_date[1];\n            aparams.order = 'startdate';\n            aparams.tt3flag = get(collector, 'tt3flag');\n            aparams.sideload = c.getSideloads('abcense');\n            aparams.raw = true;\n        }\n\n        return hash({\n            dailyWorktimeSums: c.testNeedsOne('worktime')\n                ? capi.findAll('worktime', Object.assign(params, { groupBy: 'date' }))\n                : [],\n            absences: c.testNeedsOne('abcense')\n                ? ttapi\n                      ._get('/api/absences/splitted', aparams)\n                      .then((data) => this._returnData(data, c))\n                : [],\n            worktimeSums: c.testNeedsOne('worktime')\n                ? capi.findAll('worktime', Object.assign(params, { groupBy: 'user' }))\n                : [],\n        });\n    },\n    resetController(controller, isExiting) {\n        if (isExiting) {\n            get(this, 'gui').resetSidebar();\n        }\n    },\n    actions: {\n        refreshModel(record) {\n            this.refresh();\n            record.off('didUpdate');\n        },\n    },\n\n    _returnData(data, c) {\n        if (isPresent(data.abcenses)) {\n            c.pushToStore(data);\n            return data;\n        } else {\n            return { abcenses: [] };\n        }\n    },\n});\n","import GeneralReportController from '../../../../controllers/general-report';\nimport { inject as service } from '@ember/service';\nimport EmberObject, { set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nexport default GeneralReportController.extend({\n    collector: service('collector-service'),\n    gui: service(),\n    queryParams: ['worktime_page', 'absence_page', 'worktime_limit', 'absence_limit'],\n    worktime_page: 1,\n    absence_page: 1,\n    worktime_limit: 25,\n    absence_limit: 25,\n    status: 'all',\n    aggregatedrows: alias('model'),\n    form_status: alias('status'),\n    absence_order: alias('absence_settings.sortByColumn'),\n    settings: EmberObject.create({\n        massedit: true,\n        hideExports: true,\n        rowSettings: EmberObject.create({\n            editRoute: 'timetracker.edit',\n            historyRoute: 'timetracker.history',\n        }),\n    }),\n    absence_settings: EmberObject.create({\n        massedit: true,\n        hideExports: true,\n        rowSettings: EmberObject.create({\n            editRoute: 'abcenses.edit',\n            historyRoute: 'abcenses.history',\n        }),\n    }),\n    actions: {\n        setRowsPerPage(form, limit) {\n            set(this, form + '_page', 1);\n            set(this, form + '_limit', limit);\n        },\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"PIMMpEPY\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/aggregated/rows/loading/template.hbs\"}});","import { hash } from 'rsvp';\nimport GeneralReportRoute from '../../../../routes/general-report';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\n\nexport default GeneralReportRoute.extend({\n    store: service(),\n    collector: service('collector-service'),\n    queryParams: {\n        worktime_limit: {\n            refreshModel: true,\n        },\n        absence_limit: {\n            refreshModel: true,\n        },\n        worktime_page: {\n            refreshModel: true,\n        },\n        absence_page: {\n            refreshModel: true,\n        },\n        order: {\n            refreshModel: true,\n        },\n        absence_order: {\n            refreshModel: true,\n        },\n        form_status: {\n            refreshModel: true,\n        },\n    },\n    beforeModel(transition) {\n        this._super(...arguments);\n        if (\n            transition.targetName === 'timetracker.aggregated.rows' &&\n            transition.to.params.date === 'all'\n        ) {\n            set(this.controllerFor('timetracker.aggregated'), 'showAllRows', true);\n        }\n    },\n    model(params) {\n        let parentParams = this.paramsFor('timetracker.aggregated');\n        parentParams.sideload = true;\n        if (!this.collector.testNeedsOne('employer')) delete parentParams.employer;\n        if (!parentParams.user) delete parentParams.user;\n        let worktimeParams = parentParams;\n\n        let absenceParams = {\n            startdate: parentParams.date,\n            user: parentParams.user,\n            status: parentParams.status,\n            limit: parentParams.limit,\n            sideload: true,\n        };\n        if (params.date != 'all') {\n            parentParams.date = params.date;\n        }\n        if (params.form_status === 'all') {\n            delete params.form_status;\n        }\n\n        worktimeParams.limit = params.worktime_limit;\n        worktimeParams.order = params.order;\n        worktimeParams.status = parentParams.status;\n        worktimeParams.offset = (params.worktime_page - 1) * params.worktime_limit;\n\n        absenceParams.limit = params.absence_limit;\n        absenceParams.order = params.absence_order;\n        absenceParams.status = parentParams.status;\n        absenceParams.offset = (params.absence_page - 1) * params.absence_limit;\n\n        const c = get(this, 'collector');\n\n        return hash({\n            worktimeRows: c.testNeedsOne('worktime')\n                ? get(this, 'store').query('worktime', worktimeParams)\n                : [],\n            absenceRows: c.testNeedsOne('abcense')\n                ? get(this, 'store').query('abcense', absenceParams)\n                : [],\n            params: parentParams,\n        });\n    },\n    setupController(controller) {\n        this._super(...arguments);\n        // set filters for rows controllers settings object from parent controller, so they can be used in the general-report component\n        const parentFilters = this.controllerFor('timetracker.aggregated').filters;\n        set(controller, 'settings.filters', parentFilters);\n    },\n    actions: {\n        willTransition(transition) {\n            set(this.controllerFor('timetracker.aggregated'), 'showAllRows', false);\n\n            if (\n                transition.targetName === 'abcenses.edit' ||\n                transition.targetName === 'timetracker.edit'\n            ) {\n                transition.queryParams.afterSave = 'timetracker.aggregated';\n                this.transitionTo(transition.targetName).then((newRoute) =>\n                    this.setAfterSave(newRoute),\n                );\n            }\n        },\n    },\n    setAfterSave(newRoute) {\n        newRoute.controller.afterSave = 'timetracker.aggregated';\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"sQ0ltQWM\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"aggre-gated/rows\\\",null,[[\\\"model\\\",\\\"worktime_page\\\",\\\"absence_page\\\",\\\"settings\\\",\\\"absence_settings\\\",\\\"status\\\",\\\"setRowsPerPage\\\"],[[24,[\\\"aggregatedrows\\\"]],[24,[\\\"worktime_page\\\"]],[24,[\\\"absence_page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"absence_settings\\\"]],[24,[\\\"form_status\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\"],null]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/aggregated/rows/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"RIixOOe3\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"printLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"printableData\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"printableData\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"print-all-data\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"concat\\\",[[23,1,[\\\"user\\\",\\\"lastname\\\"]],\\\" \\\",[23,1,[\\\"user\\\",\\\"firstname\\\"]]],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"aggre-gated\\\",null,[[\\\"filters\\\",\\\"absenceTypes\\\",\\\"absences\\\",\\\"worktimeSums\\\",\\\"dailyWorktimeSums\\\",\\\"date\\\",\\\"showAllRows\\\",\\\"showWarning\\\",\\\"addNew\\\",\\\"showRows\\\",\\\"print\\\",\\\"printAll\\\",\\\"toggleAllRows\\\",\\\"filterChanged\\\"],[[24,[\\\"filters\\\"]],[23,1,[\\\"absences\\\",\\\"abcensetypes\\\"]],[23,1,[\\\"absences\\\",\\\"abcenses\\\"]],[23,1,[\\\"worktimeSums\\\",\\\"content\\\"]],[23,1,[\\\"dailyWorktimeSums\\\",\\\"content\\\"]],[24,[\\\"date\\\"]],[24,[\\\"showAllRows\\\"]],[24,[\\\"showWarning\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showRows\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"print\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"printAll\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showAllRows\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"filterChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAllRowsByUser\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"aggre-gated/rows\\\",null,[[\\\"model\\\",\\\"worktime_page\\\",\\\"absence_page\\\",\\\"settings\\\",\\\"absence_settings\\\",\\\"status\\\",\\\"setRowsPerPage\\\"],[[23,1,[\\\"rows\\\"]],1,1,[24,[\\\"settings\\\"]],[24,[\\\"absence_settings\\\"]],\\\"all\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"aggre-gated\\\",null,[[\\\"filters\\\",\\\"absenceTypes\\\",\\\"absences\\\",\\\"worktimeSums\\\",\\\"dailyWorktimeSums\\\",\\\"date\\\",\\\"showAllRows\\\",\\\"showWarning\\\",\\\"addNew\\\",\\\"showRows\\\",\\\"print\\\",\\\"printAll\\\",\\\"toggleAllRows\\\",\\\"filterChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"absenceTypes\\\"]],[24,[\\\"absences\\\"]],[24,[\\\"worktimeSums\\\"]],[24,[\\\"dailyWorktimeSums\\\"]],[24,[\\\"date\\\"]],[24,[\\\"showAllRows\\\"]],[24,[\\\"showWarning\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showRows\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"print\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"printAll\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"showAllRows\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"filterChanged\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/aggregated/template.hbs\"}});","import Controller from '@ember/controller';\nimport { computed } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { A } from '@ember/array';\nimport EmberObject, { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    ttapi: service(),\n\n    queryParams: ['date', 'user'],\n    user: null,\n    tests: null,\n    tolerance: 15,\n    anomalies: alias('model'),\n\n    filters: computed(function () {\n        return A([\n            EmberObject.create({\n                field: 'date',\n                type: 'date',\n                form: 'worktime',\n                value: get(this, 'date'),\n            }),\n            EmberObject.create({\n                field: 'user',\n                type: 'database',\n                form: 'worktime',\n                value: get(this, 'user'),\n            }),\n        ]);\n    }),\n\n    actions: {\n        filterChanged(value, field) {\n            set(this, field, value);\n        },\n\n        showAddModal(type, day, user) {\n            set(this, 'type', type);\n            let params = {};\n\n            if (type === 'abcense') {\n                params.startdate = day;\n                params.enddate = day;\n            } else {\n                params.date = day;\n            }\n\n            if (user) {\n                params.user = get(this, 'store').peekRecord('user', user);\n            }\n\n            get(this, 'store').createRecord(type, params);\n\n            this.transitionToRoute({ queryParams: { modal: [type, 'new'] } });\n        },\n\n        showEditModal(type, rows) {\n            let row = get(rows, 'firstObject');\n            let params = [type, get(row, 'id')];\n            this.transitionToRoute({ queryParams: { modal: params } });\n        },\n\n        updateTests(tests) {\n            //need to convert over from emberobject to normal json\n            tests = JSON.parse(JSON.stringify(tests));\n\n            new Promise((resolve) => {\n                let params = {};\n\n                params['date'] = get(this, 'date');\n                params['user'] = get(this, 'user');\n                params['page'] = get(this, 'page');\n                params['anomalies'] = tests;\n                get(this, 'ttapi')\n                    ._post('/api/anomalyReport', params)\n                    .then(this._reloadModel.bind(this)) //eslint: Use named functions defined on objects to handle promises\n                    .then(resolve());\n            });\n        },\n\n        toggleSettingsPanel() {\n            this.toggleProperty('showSettings');\n        },\n    },\n\n    _reloadModel(anomalies) {\n        set(this, 'model', anomalies);\n    },\n\n    date:\n        moment().startOf('isoweek').subtract(1, 'week').format('YYYY-MM-DD') +\n        '_' +\n        moment().format('YYYY-MM-DD'),\n});\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport EmberObject, { get, set } from '@ember/object';\n\nexport default Route.extend({\n    ttapi: service(),\n    localStorageWrapper: service(),\n\n    queryParams: {\n        date: { refreshModel: true },\n        page: { refreshModel: true },\n        user: { refreshModel: true },\n    },\n\n    model: function (params) {\n        let anomalies = [];\n        let controller = this.controllerFor('timetracker/anomalies');\n        return new Promise((resolve) => {\n            new Promise((resolve) => {\n                let tests = get(this, 'ttapi')._get('/api/anomalyReport/anomalies');\n                resolve(tests);\n            }).then((tests) => {\n                tests.forEach((anomaly) => {\n                    let testParams = {\n                        test: anomaly,\n                        active: true,\n                        translatedName: 'anomaly.' + anomaly,\n                        tolerance: get(controller, 'tolerance'),\n                    };\n                    anomalies.push(EmberObject.create(testParams));\n                });\n\n                set(controller, 'anomalyTests', anomalies);\n                params['anomalies'] = JSON.parse(JSON.stringify(anomalies));\n\n                resolve(get(this, 'ttapi')._post('/api/anomalyReport', params));\n            });\n        });\n    },\n});\n","import Component from '@ember/component';\nimport { get, set } from '@ember/object';\nimport { debounce } from '@ember/runloop';\n\nexport default Component.extend({\n    actions: {\n        toggleActive(test) {\n            test.toggleProperty('active');\n            this.update(); //calls the updateTests action passed from anomalies controller (check template)\n        },\n\n        setTolerance(test, tolerance) {\n            set(test, 'tolerance', tolerance);\n            debounce(this, this.update, 500); //calls the updateTests action passed from anomalies controller (check template)\n        },\n    },\n\n    update() {\n        this.updateTests(get(this, 'anomalyTests'));\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"+M3cVU8q\",\"block\":\"{\\\"symbols\\\":[\\\"test\\\"],\\\"statements\\\":[[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-default btn-toggleAnomalies\\\"],[10,\\\"data-toggle\\\",\\\"collapse\\\"],[10,\\\"data-target\\\",\\\"#anomaly_settings_panel\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"anomaly.settings\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Settings\\\"],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"id\\\",\\\"anomaly_settings_panel\\\"],[10,\\\"class\\\",\\\"collapse container-fluid\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"anomalyTests\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-md-3 col-lg-2 col-xl-1\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"ruleName\\\"],[8],[1,[28,\\\"t\\\",[[23,1,[\\\"translatedName\\\"]]],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-3 col-md-3 col-lg-2 col-xl-1\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"theme\\\",\\\"disabled\\\",\\\"value\\\",\\\"onToggle\\\",\\\"size\\\",\\\"onLabel\\\",\\\"offLabel\\\",\\\"showLabes\\\"],[\\\"light\\\",[24,[\\\"disabled\\\"]],[23,1,[\\\"active\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleActive\\\",[23,1,[]]],null],\\\"medium\\\",\\\"on\\\",\\\"off\\\",true]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row settings-row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"active\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-fluid\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[1,[28,\\\"t\\\",[\\\"anomaly.tolerance\\\"],null],false],[0,\\\" : \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"value\\\",\\\"input\\\"],[\\\"toleranceInput\\\",\\\"number\\\",[23,1,[\\\"tolerance\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setTolerance\\\",[23,1,[]],[23,1,[\\\"tolerance\\\"]]],null]]]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/anomalies/settings-panel/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"v81bGMd0\",\"block\":\"{\\\"symbols\\\":[\\\"anomaly\\\",\\\"index\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"worktime\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"timetracker/anomalies/settings-panel\\\",null,[[\\\"anomalyTests\\\",\\\"updateTests\\\"],[[24,[\\\"anomalyTests\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"updateTests\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"await\\\",[[24,[\\\"anomalies\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"anomalies\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"date\\\"]],\\\"L\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"user\\\",[[23,1,[\\\"user\\\"]]],null],false],[0,\\\" - \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"anomaly.names.\\\",[23,1,[\\\"name\\\"]]],null]],null],false],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-info pull-right\\\"],[10,\\\"data-toggle\\\",\\\"collapse\\\"],[11,\\\"data-target\\\",[29,[\\\"#fix_actions_\\\",[23,2,[]]]]],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"anomaly.fix_here\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"anomaly.values.given\\\"],null],false],[0,\\\": \\\"],[1,[23,1,[\\\"values\\\",\\\"given\\\"]],false],[0,\\\" - \\\"],[1,[28,\\\"t\\\",[\\\"anomaly.values.expected\\\"],null],false],[0,\\\": \\\"],[1,[23,1,[\\\"values\\\",\\\"expected\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"id\\\",[29,[\\\"fix_actions_\\\",[23,2,[]]]]],[10,\\\"class\\\",\\\"collapse\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-fluid\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link add-card-btn pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showAddModal\\\",\\\"abcense\\\",[23,1,[\\\"date\\\"]],[23,1,[\\\"user\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"anomaly.add_abcense\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link add-card-btn pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showAddModal\\\",\\\"worktime\\\",[23,1,[\\\"date\\\"]],[23,1,[\\\"user\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"anomaly.add_worktime\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"meta\\\",\\\"absences\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link add-card-btn pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showEditModal\\\",\\\"abcense\\\",[23,1,[\\\"meta\\\",\\\"absences\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"anomaly.edit_abcense\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,1,[\\\"meta\\\",\\\"worktimes\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link add-card-btn pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showEditModal\\\",\\\"worktime\\\",[23,1,[\\\"meta\\\",\\\"worktimes\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"anomaly.edit_worktime\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"anomaly.no_anomalies\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/anomalies/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalController;\n\nimport Ember from 'ember';\n\nTimetrackerApprovalController = Ember.Controller.extend({\n    intl: Ember.inject.service(),\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    queryParams: ['date', 'employer'],\n    userSelector2: true,\n    employer: null,\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'employer',\n                type: 'database',\n                form: 'worktime',\n                name: 'employer',\n                singleselect: 'true',\n            }),\n            Em.Object.create({\n                field: 'date',\n                type: 'date',\n                form: 'worktime',\n                name: 'date',\n                value: this.get('date'),\n                wagePeriods: true,\n            }),\n        ]);\n    }),\n    dateRange: Ember.computed('intl.primaryLocale', function () {\n        return Em.A([\n            Em.Object.create({\n                id:\n                    moment().startOf('week').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('week').format('YYYY-MM-DD'),\n                name:\n                    this.get('intl').t('timetracker.approval.this_week') +\n                    ': ' +\n                    moment().startOf('week').format('L') +\n                    '-' +\n                    moment().endOf('week').format('L'),\n            }),\n            Em.Object.create({\n                id:\n                    moment().subtract(1, 'week').startOf('week').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().subtract(1, 'week').endOf('week').format('YYYY-MM-DD'),\n                name:\n                    this.get('intl').t('timetracker.approval.last_week') +\n                    ': ' +\n                    moment().subtract(1, 'week').startOf('week').format('L') +\n                    '-' +\n                    moment().subtract(1, 'week').endOf('week').format('L'),\n            }),\n            Em.Object.create({\n                id:\n                    moment().startOf('week').subtract(2, 'week').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('week').subtract(1, 'week').format('YYYY-MM-DD'),\n                name:\n                    this.get('intl').t('timetracker.approval.last_two_weeks') +\n                    ': ' +\n                    moment().startOf('week').subtract(2, 'week').format('L') +\n                    '-' +\n                    moment().endOf('week').subtract(1, 'week').format('L'),\n            }),\n            Em.Object.create({\n                id:\n                    moment().subtract(1, 'months').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD'),\n                name:\n                    this.get('intl').t('timetracker.approval.last_month') +\n                    ': ' +\n                    moment().subtract(1, 'months').format('L') +\n                    '-' +\n                    moment().format('L'),\n            }),\n        ]);\n    }),\n    actions: {\n        filterChanged: function (value, fieldName) {\n            if (fieldName === 'employer') {\n                if (value == null) {\n                    return this.set('employer', '');\n                } else {\n                    return this.set('employer', value.id);\n                }\n            } else {\n                return this.set(fieldName, value);\n            }\n        },\n    },\n});\n\nexport default TimetrackerApprovalController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalIndexController;\n\nimport Ember from 'ember';\n\nTimetrackerApprovalIndexController = Ember.Controller.extend({\n    approvalController: Em.inject.controller('timetracker/approval'),\n    model: Em.computed.alias('approvalController.model'),\n    date: Em.computed.alias('approvalController.date'),\n    dateinterval: Em.computed('date', function () {\n        var dates, format;\n        dates = this.get('date').split('_');\n        format = moment.localeData().longDateFormat('L');\n        return moment(dates[0]).format(format) + ' - ' + moment(dates[1]).format(format);\n    }),\n    sites: Ember.computed('model.[]', function () {\n        var k, ret, site, sites, worktimes;\n        worktimes = this.get('model');\n        sites = {};\n        worktimes.forEach(function (time) {\n            var project_id;\n            project_id = time.get('project.id');\n            if (sites[project_id]) {\n                return sites[project_id].amount++;\n            } else {\n                return (sites[project_id] = {\n                    id: project_id,\n                    amount: 1,\n                    name: time.get('project.name'),\n                });\n            }\n        });\n        ret = Em.A([]);\n        for (k in sites) {\n            site = sites[k];\n            ret.pushObject(site);\n        }\n        return ret;\n    }),\n});\n\nexport default TimetrackerApprovalIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalIndexRoute;\n\nimport Ember from 'ember';\n\nTimetrackerApprovalIndexRoute = Ember.Route.extend();\n\n//    model: (params) ->\n//        params.status = 'open'\n//        params.sideload = true\n//#        params.date = moment().startOf('week').format('YYYY-MM-DD')+'_'+moment().endOf('week').format('YYYY-MM-DD')\n//        @store.query('worktime', params)\nexport default TimetrackerApprovalIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"OIgpSU3t\",\"block\":\"{\\\"symbols\\\":[\\\"site\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"approval.worktimes\\\"],[[\\\"dateinterval\\\"],[[24,[\\\"dateinterval\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sites\\\"]]],[[\\\"key\\\"],[\\\"id\\\"]],{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\",\\\"model\\\"],[\\\"a\\\",\\\"list-group-item\\\",\\\"timetracker.approval.site\\\",[23,1,[\\\"id\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge\\\"],[8],[1,[23,1,[\\\"amount\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/approval/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nTimetrackerApprovalRoute = Ember.Route.extend({\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params.status = 'open||system_edited';\n        params.sideload = true;\n        params.limit = 'all';\n        //        params.date = moment().startOf('week').format('YYYY-MM-DD')+'_'+moment().endOf('week').format('YYYY-MM-DD')\n        params.employer = this.controllerFor('timetracker.approval').get('employer');\n        if (!this.get('Collector').testNeedsOne('worktime.employer')) {\n            delete params.employer;\n        }\n        return this.store.query('worktime', params);\n    },\n    beforeModel: function () {\n        if ('readonly' in collector.forms.worktime.objects.status.features) {\n            return this.transitionTo('timetracker.timecard');\n        }\n    },\n    setupController: function (controller, model) {\n        return this._super(controller, model);\n    },\n});\n\nexport default TimetrackerApprovalRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/site/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalSiteController;\n\nimport Ember from 'ember';\n\nTimetrackerApprovalSiteController = Ember.Controller.extend({\n    //    needs: [\"timetracker/approval/site/user\"]\n    //    queryParams: [\"date\": {as: 'other-date'}]\n    userController: Ember.inject.controller('timetracker/approval/site/user'),\n    approvalIndexController: Ember.inject.controller('timetracker/approval/index'),\n    sites: Ember.computed('model.worktimes.firstObject.project.id', function () {\n        return this.get('approvalIndexController.sites');\n    }),\n    users: Ember.computed('model.worktimes.[]', function () {\n        var k, ret, user, users, worktimes;\n        worktimes = this.get('model.worktimes');\n        users = Em.A({});\n        worktimes.forEach(function (time) {\n            var user_id;\n            user_id = time.get('user.id');\n            if (!users[user_id]) {\n                return (users[user_id] = time.get('user'));\n            }\n        });\n        ret = Em.A([]);\n        for (k in users) {\n            user = users[k];\n            ret.pushObject(user);\n        }\n        return ret;\n    }),\n    currentUser: Ember.computed('users', 'userController.model.firstObject.user', function () {\n        if (this.get('userController.model.firstObject.user')) {\n            return this.get('userController.model.firstObject.user');\n        } else {\n            return this.get('users.firstObject');\n        }\n    }),\n    nextUser: Ember.computed('users', 'userController.model.firstObject.user', function () {\n        var found, i, len, ref, self, user;\n        self = this;\n        found = false;\n        ref = this.get('users');\n        for (i = 0, len = ref.length; i < len; i++) {\n            user = ref[i];\n            if (found) {\n                return user;\n            }\n            if (user.get('id') === self.get('currentUser.id')) {\n                found = true;\n            }\n        }\n    }),\n    previousUser: Ember.computed('users', 'userController.model.firstObject.user', function () {\n        var i, last, len, ref, self, user;\n        self = this;\n        last = void 0;\n        ref = this.get('users');\n        for (i = 0, len = ref.length; i < len; i++) {\n            user = ref[i];\n            if (user.get('id') === self.get('currentUser.id')) {\n                return last;\n            }\n            last = user;\n        }\n    }),\n    currentSite: Ember.computed('sites', 'model.firstObject.project', function () {\n        return this.get('model.worktimes.firstObject.project');\n    }),\n    previousSite: Ember.computed('sites', function () {\n        var i, last, len, ref, self, site;\n        self = this;\n        last = void 0;\n        ref = this.get('sites');\n        for (i = 0, len = ref.length; i < len; i++) {\n            site = ref[i];\n            if (site['id'] === self.get('currentSite.id')) {\n                return last;\n            }\n            last = site;\n        }\n    }),\n    nextSite: Ember.computed('sites', function () {\n        var found, i, len, ref, self, site;\n        self = this;\n        found = false;\n        ref = this.get('sites');\n        for (i = 0, len = ref.length; i < len; i++) {\n            site = ref[i];\n            if (found) {\n                return site;\n            }\n            if (site['id'] === self.get('currentSite.id')) {\n                found = true;\n            }\n        }\n    }),\n});\n\nexport default TimetrackerApprovalSiteController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/site/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalSiteRoute;\n\nimport Ember from 'ember';\n\nTimetrackerApprovalSiteRoute = Ember.Route.extend({\n    model: function (params) {\n        //        params.status = 'open'\n        params.sideload = true;\n        params.date = this.controllerFor('timetracker.approval').get('date');\n        params.employer = this.controllerFor('timetracker.approval').get('employer');\n        if (!this.get('Collector').testNeedsOne('worktime.employer')) {\n            delete params.employer;\n        }\n        return Em.RSVP.hash({\n            project: this.store.findRecord('project', params.project),\n            worktimes: this.store.query('worktime', params),\n        });\n    },\n    afterModel: function (model, transition) {\n        var first, worktimes;\n        worktimes = model.worktimes;\n        if (worktimes.get('length') > 0) {\n            first = worktimes.get('firstObject.user.id');\n            return this.transitionTo('timetracker.approval.site.user', first);\n        }\n    },\n});\n\nexport default TimetrackerApprovalSiteRoute;\n","export default Ember.HTMLBars.template({\"id\":\"7oeFJplA\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"currentSite\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 col-margin-top\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"previousSite\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"classNames\\\",\\\"tagName\\\",\\\"route\\\",\\\"models\\\"],[\\\"btn btn-m-default pull-left\\\",\\\"a\\\",\\\"timetracker.approval.site.user\\\",[28,\\\"array\\\",[[24,[\\\"previousSite\\\",\\\"id\\\"]],[24,[\\\"currentUser\\\",\\\"id\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"standard-icon\\\",[\\\"previous\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"approval-menu pull-right hidden-xs\\\"],[8],[1,[24,[\\\"previousSite\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h2\\\",true],[8],[1,[24,[\\\"currentSite\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 col-margin-top\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"nextSite\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"pull-left approval-menu hidden-xs\\\"],[8],[1,[24,[\\\"nextSite\\\",\\\"name\\\"]],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"classNames\\\",\\\"tagName\\\",\\\"route\\\",\\\"models\\\"],[\\\"btn btn-m-default pull-right\\\",\\\"a\\\",\\\"timetracker.approval.site.user\\\",[28,\\\"array\\\",[[24,[\\\"nextSite\\\",\\\"id\\\"]],[24,[\\\"currentUser\\\",\\\"id\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"standard-icon\\\",[\\\"next\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentUser\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 col-margin-top\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"previousUser\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"classNames\\\",\\\"tagName\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-m-default pull-left\\\",\\\"a\\\",\\\"timetracker.approval.site.user\\\",[24,[\\\"previousUser\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"standard-icon\\\",[\\\"previous\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"approval-menu pull-right hidden-xs\\\"],[8],[1,[24,[\\\"previousUser\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"previousUser\\\",\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[24,[\\\"currentUser\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"currentUser\\\",\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 col-margin-top\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"nextUser\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"pull-left approval-menu hidden-xs\\\"],[8],[1,[24,[\\\"nextUser\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"nextUser\\\",\\\"lastname\\\"]],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"classNames\\\",\\\"tagName\\\",\\\"route\\\",\\\"model\\\"],[\\\"btn btn-m-default pull-right\\\",\\\"a\\\",\\\"timetracker.approval.site.user\\\",[24,[\\\"nextUser\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"standard-icon\\\",[\\\"next\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n         \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well text-center\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timetracker.approval.site.no_worktimes\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/approval/site/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/site/user/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalSiteUserController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../../controllers/general-report';\n\nimport collector from '../../../../../classes/collector';\n\nTimetrackerApprovalSiteUserController = GeneralReportController.extend({\n    //    status: 'all'\n    queryParams: ['status', 'page'],\n    form: 'worktime',\n    localStorageKey: 'Tt4.WorktimeApproval',\n    showColumns: ['task', 'status', 'starttime', 'endtime', 'work_hours', 'pause', 'description'],\n    sortByDates: true,\n    status: 'all',\n    statusSelector: true,\n    user: null,\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    project: null,\n    date: Em.computed(function () {\n        return this.get('model').get('query.date');\n    }),\n    setData: function (params) {\n        this.set('user', params.user);\n        this.set('project', params.project);\n        return this.set('date', params.date);\n    },\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n                form: 'worktime',\n                value: this.get('project'),\n            }),\n            Em.Object.create({\n                field: 'user',\n                form: 'worktime',\n                value: this.get('user'),\n            }),\n            Em.Object.create({\n                field: 'date',\n                start: '',\n                end: '',\n                form: 'worktime',\n                type: 'date',\n                value: this.get('date'),\n            }),\n        ]);\n    }),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: {\n                modal: true,\n            },\n            historyRoute: 'timetracker.history',\n        }),\n    }),\n    hideColumns: Em.on('init', function () {\n        var fields;\n        fields = collector.getFormObjects('worktime');\n        if (\n            fields &&\n            fields.starttime.features.hide &&\n            fields.endtime.features.hide &&\n            fields.work_hours.features.mandatory\n        ) {\n            return this.set('settings.hideColumns', ['starttime', 'endtime']);\n        }\n    }),\n});\n\nexport default TimetrackerApprovalSiteUserController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/approval/site/user/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerApprovalSiteUserRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../../routes/general-report';\n\nTimetrackerApprovalSiteUserRoute = GeneralReportRoute.extend({\n    queryParams: {\n        status: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n    },\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.setData(model.query);\n    },\n    model: function (params) {\n        var parentModel;\n        params = this._super(params);\n        if (params.status === 'all') {\n            delete params.status;\n        }\n        parentModel = this.modelFor('timetracker.approval.site');\n        params.project = parentModel.project.get('id');\n        params.date = this.controllerFor('timetracker.approval').get('date');\n        params.employer = this.controllerFor('timetracker.approval').get('employer');\n        if (!this.get('Collector').testNeedsOne('worktime.employer')) {\n            delete params.employer;\n        }\n        params.sideload = true;\n        //        params.status = 'open'\n        return this.store.query('worktime', params);\n    },\n});\n\nexport default TimetrackerApprovalSiteUserRoute;\n","export default Ember.HTMLBars.template({\"id\":\"cATHirzQ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"settings\\\",\\\"page\\\",\\\"showColumns\\\",\\\"status\\\",\\\"sortByDates\\\",\\\"localStorageKey\\\"],[\\\"bubbleTransition\\\",\\\"worktime\\\",[24,[\\\"model\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"page\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"status\\\"]],true,\\\"worktime.approval\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/approval/site/user/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"aSvPSN8F\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-employer\\\"],[8],[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"classes\\\",\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[\\\"form-control\\\",[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/approval/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/avi/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsAviController;\n\nimport Ember from 'ember';\n\nimport pdfExport from '../../../mixins/pdf-export';\n\nimport csvExport from '../../../mixins/csv-export';\n\nimport avi from '../../../mixins/avi';\n\nimport initController from '../../../mixins/init-controller';\n\nimport $ from 'jquery';\n\nOrientationsAviController = Ember.Controller.extend(pdfExport, csvExport, avi, initController, {\n    intl: Ember.inject.service(),\n    collector: Ember.inject.service('collector-service'),\n    limit: 25,\n    page: 1,\n    project: null,\n    country: null,\n    queryParams: ['project', 'country', 'page', 'showWorkingNow'],\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n                form: 'worktime',\n                singleselect: 'true',\n                value: this.project,\n            }),\n            Em.Object.create({\n                field: 'homecountry',\n                form: 'user',\n                type: 'dropdown_country',\n                value: this.country,\n            }),\n        ]);\n    }),\n    rowActions: [],\n    pages: Em.computed('model.count', function () {\n        if (this.get('showWorkingNow') === 'true') {\n            return 1;\n        } else {\n            return Math.ceil(this.get('model.count') / this.get('limit'));\n        }\n    }),\n    showColumns: [\n        'firstname',\n        'lastname',\n        'birthdate',\n        'taxnumber',\n        'employer',\n        'startdate',\n        'enddate',\n        'orientation_ori_date',\n        'orientation_pass_end',\n        'homecountry',\n        'sent_contact_person',\n        'sent_contact_address',\n        'workpass',\n    ],\n    init_functions: function () {\n        if(this.collector.testNeedsOne('products.workPermit')) {\n            // if the user has the workPermit product,\n            // we need to add the workpermit columns to the showColumns array after the homecountry column\n            const pushIndex = this.showColumns.indexOf('homecountry') + 1;\n            this.showColumns.replace(pushIndex, 0, ['nationality', 'work_permit_type', 'workpermit']);\n        }\n\n        return this._super();\n    },\n    data: Em.computed('model.users.[]', function () {\n        var data;\n        data = this.get('model.users');\n        if (!data) {\n            return null;\n        }\n        return this.format_data(data);\n    }),\n    format_data: function (data, formatExport = false) {\n        var columns, formatted_data, intl;\n        intl = this.get('intl');\n        columns = this.get('showColumns');\n        formatted_data = Em.A([]);\n        data.forEach((unformatted_row) => {\n            var row;\n            row = Ember.Object.create();\n            if (unformatted_row.id) {\n                row.id = unformatted_row.id;\n            }\n            $.each(columns, (key, column) => {\n                var cell;\n                cell = unformatted_row[column];\n                if (column === 'birthdate' || column === 'startdate' || column === 'enddate') {\n                    if (cell != null) {\n                        cell = moment(cell).format('L');\n                    }\n                }\n                if (column === 'employer') {\n                    if (cell) {\n                        cell = cell.emp_id + ' ' + cell.name;\n                    }\n                }\n                if (column === 'orientation_ori_date') {\n                    if (unformatted_row.orientation != null) {\n                        cell = moment(unformatted_row.orientation.ori_date).format('L');\n                    }\n                }\n                if (column === 'orientation_pass_end') {\n                    if (unformatted_row.orientation != null) {\n                        cell = moment(unformatted_row.orientation.pass_end).format('L');\n                    }\n                }\n                if (column === 'workpass') {\n                    if (cell === false) {\n                        cell = intl.t('general.no');\n                    }\n                    if (cell === true) {\n                        cell = intl.t('general.yes');\n                    }\n                }\n                if (column === 'workpermit' && formatExport) {\n                    if (cell) {\n                        data = Ember.A(cell);\n                        cell = this.collector._format_(data, \"user\", 'workpermit', formatExport); \n                    }\n                }\n                return (row[column] = cell);\n            });\n            return formatted_data.pushObjects([row]);\n        });\n        return formatted_data;\n    },\n    // get translation for every column\n    translated_columns: Em.computed('showColumns', function () {\n        var c, columns, intl, translated_columns;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        columns = this.get('showColumns');\n        translated_columns = [];\n        $.each(columns, (key, item) => {\n            return translated_columns.push(intl.t('report.avi.' + item));\n        });\n        return translated_columns;\n    }),\n    make_pdf_export: function (data) {\n        var addHeader, element, intl, project;\n        intl = this.get('intl');\n        element = this.createPdfTableElement(\n            this.get('showColumns'),\n            data,\n            this.get('translated_columns'),\n        );\n        project = this.get('store').peekRecord('project', this.get('project'));\n        addHeader = intl.t('report.orientations.avi') + ' - ' + project.get('name');\n        return this.createPdfFromElements([element], 'download', addHeader.toString(), 16).then(\n            (file) => {\n                if (typeof cordova !== 'undefined' && cordova !== null) {\n                    return this.get('cordova').openFile(file, 'application/pdf');\n                }\n            },\n        );\n    },\n    make_csv_export: function (data) {\n        var element;\n        element = this.createCsvElement(\n            this.get('showColumns'),\n            data,\n            this.get('translated_columns'),\n        );\n        return this.createCsvFromElements(element, false);\n    },\n    actions: {\n        catchActions: function (action, params) {\n            if (action === 'columnClicked') {\n                return;\n            }\n            return this.send(action, params);\n        },\n        filterChanged: function (value, fieldName) {\n            if (fieldName === 'project') {\n                if (value == null) {\n                    this.set('project', '');\n                } else {\n                    this.set('project', value.id);\n                }\n            }\n            if (fieldName === 'homecountry') {\n                return this.set('country', value);\n            }\n        },\n        showWorkingNowRows: function () {\n            //stupid way to find out if its true, sometimes it's string and sometimes boolean\n            if (this.get('showWorkingNow') === true || this.get('showWorkingNow') === 'true') {\n                this.set('showWorkingNow', false);\n            } else {\n                this.set('showWorkingNow', true);\n                this.set('page', 1);\n            }\n            return false;\n        },\n        export_csv: function () {\n            var checked_data, data, params, use_checked_rows;\n            data = this.get('data');\n            use_checked_rows = false;\n            checked_data = Em.A([]);\n            data.forEach((row) => {\n                if (row.checkedClass === 'checked') {\n                    use_checked_rows = true;\n                    return checked_data.push(row);\n                }\n            });\n            if (use_checked_rows) {\n                data = checked_data;\n                return this.make_csv_export(data);\n            } else {\n                params = {\n                    project: this.get('project'),\n                    order: this.get('order'),\n                    limit: 'all',\n                };\n                if (this.get('showWorkingNow')) {\n                    params.showWorkingNow = 'true';\n                }\n                return this.getAviData(params).then((avidata) => {\n                    data = this.format_data(avidata.users, 'csv');\n                    return this.make_csv_export(data);\n                });\n            }\n        },\n        export_pdf: function () {\n            var checked_data, data, params, use_checked_rows;\n            data = this.get('data');\n            use_checked_rows = false;\n            checked_data = Em.A([]);\n            data.forEach((row) => {\n                if (row.checkedClass === 'checked') {\n                    use_checked_rows = true;\n                    return checked_data.push(row);\n                }\n            });\n            if (use_checked_rows) {\n                data = checked_data;\n                return this.make_pdf_export(data);\n            } else {\n                params = {\n                    project: this.get('project'),\n                    order: this.get('order'),\n                    limit: 'all',\n                };\n                if (this.get('showWorkingNow')) {\n                    params.showWorkingNow = 'true';\n                }\n                return this.getAviData(params).then((avidata) => {\n                    data = this.format_data(avidata.users, 'pdf');\n                    return this.make_pdf_export(data);\n                });\n            }\n        },\n    },\n});\n\nexport default OrientationsAviController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/avi/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OrientationsAviRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nimport avi from '../../../mixins/avi';\n\nOrientationsAviRoute = GeneralReportRoute.extend(avi, {\n    queryParams: {\n        project: {\n            refreshModel: true,\n            replace: true,\n        },\n        country: {\n            refreshModel: true,\n            replace: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        showWorkingNow: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        return this.getAviData(params);\n    },\n});\n\nexport default OrientationsAviRoute;\n","export default Ember.HTMLBars.template({\"id\":\"6H5HWOH2\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"columns\\\",\\\"column\\\",\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 text-right\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showWorkingNowRows\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showWorkingNow\\\"]],\\\"true\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"report.avi.show_all\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"report.avi.show_working_now\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[6,[23,5,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\",[24,[\\\"data\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_csv\\\",[24,[\\\"data\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_csv\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"checkable\\\",\\\"hideSort\\\"],[[24,[\\\"showColumns\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"data\\\"]],[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",false,true]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"tr\\\",true],[11,\\\"class\\\",[29,[[23,1,[\\\"class\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"eq\\\",[[23,3,[]],\\\"workpermit\\\"],null],[28,\\\"eq\\\",[[23,3,[]],\\\"work_permit_type\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n                    \\\"],[5,\\\"addon/value-format\\\",[],[[\\\"@form\\\",\\\"@field\\\",\\\"@value\\\",\\\"@record\\\"],[\\\"user\\\",[23,3,[]],[28,\\\"get\\\",[[23,1,[]],[23,3,[]]],null],[23,1,[]]]]],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"get\\\",[[23,1,[]],[23,3,[]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[3]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null],[0,\\\"\\\\n\\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pages\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/avi/template.hbs\"}});","/* eslint-disable ember/named-functions-in-promises */\nimport { htmlSafe } from '@ember/string';\nimport { A } from '@ember/array';\nimport EmberObject, { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport Controller from '@ember/controller';\nimport initController from '../../../mixins/init-controller';\nimport FormatUtil from 'tt4/utils/format';\nconst format = FormatUtil.create(); // because reasons\n\nconst { alias } = computed;\n\nexport default Controller.extend(initController, {\n    store: service(),\n    collector: service('collector-service'),\n    intl: service(),\n    capi: service(),\n    ttapi: service(),\n    dialogs: service(),\n    gui: service(),\n    session: service(),\n    fileExports: service('file-exports'),\n    flags: service(),\n    evented: service(),\n    router: service(),\n    queryParams: ['date', 'page', 'user', 'employer', 'hideEmptyRows'],\n    date: null,\n    page: 1,\n    user: null,\n    employer: null,\n    limit: 25,\n    hideEmptyRows: false,\n    historyDataLoading: false,\n    historyFilters: null,\n    newDeducterRecord: null,\n    bankfields: null,\n    historyOldestDate: null,\n    historyAllLoaded: false,\n    loadOlderHistory: false,\n\n    accounts: alias('model.accounts'),\n    userRows: alias('model.users'),\n\n    usersWithBanks: computed('userRows.users', function () {\n        return get(this, 'userRows.users').map(this.reformatUserRow.bind(this));\n    }),\n\n    columnList: computed('accounts', function () {\n        const list = ['user'];\n\n        get(this, 'accounts').forEach((account) => {\n            let column = get(account, 'column');\n            if (!column) {\n                column = 'bank_' + get(account, 'id');\n            }\n\n            list.push(column);\n        });\n\n        return list;\n    }),\n\n    banks: computed(function () {\n        return get(this, 'store').peekAll('bank');\n    }),\n\n    translated_columns: computed('year', function () {\n        return get(this, 'columnList').map((column) => {\n            if (column === 'user') {\n                return get(this, 'intl').t('defaults.field.' + column);\n            } else {\n                let account = get(this, 'accounts').findBy('column', column);\n                if (!account) {\n                    account = get(this, 'accounts').findBy('id', column.replace('bank_', ''));\n                }\n                return get(account, 'name');\n            }\n        });\n    }),\n\n    translated_columns2: computed('year', function () {\n        return get(this, 'showHistoryColumns').map((column) => {\n            if (column === 'date') {\n                return get(this, 'intl').t('report.worktime.date');\n            } else if (column === 'bank') {\n                return get(this, 'intl').t('settings.timetracker.banks');\n            } else if (column === 'absencetype') {\n                return get(this, 'intl').t('abcense.abcensetype');\n            } else if (column === 'description') {\n                return get(this, 'intl').t('worktime.description');\n            } else if (column === 'hours') {\n                return get(this, 'intl').t('report.worktime.work_hours');\n            } else if (column === 'addhours') {\n                return get(this, 'intl').t('report.bankdeducter.addhours');\n            } else {\n                return column;\n            }\n        });\n    }),\n\n    filters: computed('date', function () {\n        let filters = A([\n            EmberObject.create({\n                field: 'date',\n                type: 'date',\n                form: 'worktime',\n                value: get(this, 'date'),\n                defaultValue: get(this, 'default_date'),\n            }),\n            EmberObject.create({\n                field: 'user',\n                type: 'database',\n                form: 'worktime',\n                value: get(this, 'user'),\n            }),\n            EmberObject.create({\n                field: 'employer',\n                type: 'database',\n                form: 'worktime',\n                value: get(this, 'employer'),\n            }),\n        ]);\n\n        return filters;\n    }),\n\n    isCordova: computed(function () {\n        return get(this, 'gui.isCordova');\n    }),\n\n    earliestDate: computed('model.firstDate', function () {\n        // If model.firstDate is empty or undefined, fallback to 6 years ago to match old logic, etc.\n        return get(this, 'model.firstDate') || moment().subtract(6, 'years').format('YYYY-MM-DD');\n    }),\n\n    currentDate: computed(function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n\n    actions: {\n        clearAllFilters() {\n            // Reset the query param properties\n            set(this, 'date', null);\n            set(this, 'user', null);\n            set(this, 'employer', null);\n            set(this, 'page', 1);\n\n            // Transition to the same route with an empty queryParams object\n            this.router.transitionTo('timetracker.bank', { queryParams: {} });\n          },\n        deducterAdded(rec) {\n            if (this.checkedRows) {\n                let promises = [];\n                for (let i = 1; i < this.checkedRows.length; i++) {\n                    promises.push(\n                        get(this, 'store')\n                            .createRecord('bankdeducter', {\n                                date: get(rec, 'date'),\n                                user: this.checkedRows[i],\n                                hours: get(rec, 'hours'),\n                                column: rec.column,\n                                addhours: get(rec, 'addhours'),\n                                description: get(rec, 'description'),\n                            })\n                            .save(),\n                    );\n                }\n\n                Promise.all(promises).then(() => {\n                    set(this, 'checkedRows', false);\n                    this.send('refreshReport');\n                });\n            } else {\n                this.send('refreshReport');\n            }\n        },\n\n        filterChanged(value, field) {\n            // only way to empty date-filter\n            if (field == 'date' && value == get(this, 'default_date')) {\n                set(this, 'filters.0.value', null);\n                this.notifyPropertyChange('filters');\n            }\n            set(this, field, value);\n            if (field == 'user') {\n                set(this, 'filters.1.value', value);\n                this.router.transitionTo({ queryParams: {\n                    [field]: value,\n                    page: 1, // Reset page to 1 when changing user\n                 } });\n            }\n            if (field == 'employer') {\n                set(this, 'filters.2.value', value);\n                this.router.transitionTo({ queryParams: {\n                    [field]: value,\n                    page: 1, // Reset page to 1 when changing employer\n                 } });\n            }\n        },\n\n        closeEditManualEntry() {\n            set(this, 'showFormDeducter', null);\n            this.send('refreshReport');\n            this.send('showWorkBankHistoryModal', get(this, 'selectedUserObj'));\n        },\n\n        historyRowAction(action, row) {\n            if (action === 'remove') {\n                get(this, 'dialogs')\n                    .confirm(get(this, 'intl').t('report.confirm_delete'))\n                    .then(this.removeOrNot.bind(this, row));\n            }\n            if (action === 'edit') {\n                let found = get(this, 'store').peekRecord('bankdeducter', row.id);\n                if (found) {\n                    set(this, 'showFormDeducter', found);\n                } else {\n                    get(this, 'store')\n                        .peekRecord('bankdeducter', row.id)\n                        .then((data) => set(this, 'showFormDeducter', data));\n                }\n            }\n        },\n\n        onFilterHistoryChange(name, e) {\n            this.filterHistory(name, e.target.value);\n        },\n\n        showDeducterModal(on) {\n            if (this.banks.length === 0) {\n                return get(this, 'dialogs').alert(\n                    get(this, 'intl').t('worktimebank.notice.no_worktimebanks_found'),\n                );\n            }\n\n            set(this, 'newDeducterRecord', this.store.createRecord('bankdeducter'));\n            set(this, 'values', { user: null, hours: 0, addhours: false, description: null });\n            set(this, 'showDeducter', on);\n        },\n\n        setBankDate(date) {\n            set(this, 'values.date', date);\n        },\n\n        selectUser(record) {\n            set(this, 'values.user', record);\n        },\n\n        setHours(hours) {\n            set(this, 'values.hours', hours);\n        },\n        setAddhours(check) {\n            set(this, 'values.addhours', check);\n        },\n\n        changeColumn(column) {\n            set(this, 'values.column', column);\n        },\n\n        setDesc(desc) {\n            set(this, 'values.description', desc);\n        },\n\n        async showWorkBankHistoryModal(user) {\n            const userid = user.userid;\n            let absencetypes_ids = [];\n            let banks = [];\n\n            const existingHistoryData = this.loadOlderHistory ? get(this, 'historyData') || [] : [];\n            let historyData = [];\n\n            // Only set historyData to null if we're NOT loading older history\n            if (!this.loadOlderHistory) {\n                set(this, 'historyDataLoading', true);\n                set(this, 'historyData', null);\n                set(this, 'selectedUser', null);\n                set(this, 'historyData_filtered', null);\n                set(this, 'historyFilters.type', 'both');\n                set(this, 'historyFilters.bank', 'all');\n            } else {\n                set(this, 'historyDataLoading', true);\n            }\n\n            let endDate;\n            let startDate;\n\n            if (this.loadOlderHistory) {\n                endDate = this.historyOldestDate;\n                startDate = '2019-01-01';\n            } else {\n                endDate = moment().format('YYYY-MM-DD');\n                startDate = moment().subtract(6, 'years').format('YYYY-MM-DD');\n            }\n\n            // Set the initial date range - last 6 years\n            set(this, 'historyOldestDate', startDate);\n            set(this, 'historyAllLoaded', startDate <= '2019-01-01');\n\n            set(this, 'selectedUserObj', user);\n\n            this.store\n                .query('user', { id: userid })\n                .then((data) => set(this, 'selectedUser', data.objectAt(0)));\n\n            const getAbsences = async (fromDate, toDate) => {\n                const dateRange = `${fromDate}_${toDate}`;\n                return get(this, 'capi')\n                    .request(\n                        '/abcenses?user=' +\n                            userid +\n                            '&startdate=' +\n                            dateRange +\n                            '&limit=100&abcensetype=' +\n                            absencetypes_ids.map((el) => el.id) +\n                            '&sideload=true' +\n                            '&order=startdate-',\n                    )\n                    .then((data) => {\n                        data.abcenses.forEach((row) => {\n                            let bank = '';\n                            let bankf = banks.filter(\n                                (el) => parseInt(el.absencetype) === parseInt(row.abcensetype),\n                            );\n\n                            if (bankf.length) {\n                                bank = bankf[0].name;\n                            }\n\n                            let absencetype = '';\n\n                            let absencetype_f = absencetypes_ids.filter(\n                                (el) => parseInt(el.id) === parseInt(row.abcensetype),\n                            );\n                            if (absencetype_f.length) {\n                                absencetype = absencetype_f[0].name;\n                                var abcenserow = {\n                                    hours: format.hours(row.absence_hours),\n                                    user: data.users[0].firstname + ' ' + data.users[0].lastname,\n                                    date: row.startdate,\n                                    description: row.description,\n                                    bank: bank,\n                                    absencetype: absencetype,\n                                    absencetype_id: absencetype_f[0].id,\n                                    type: 'absence',\n                                    addhours: false,\n                                };\n                                historyData.push(abcenserow);\n                            }\n                        });\n                    });\n            };\n\n            const getBankdeducter = async (fromDate, toDate) => {\n                return this.store.query('bankdeducter', {\n                    user: user.userid,\n                    date: `${fromDate}_${toDate}`\n                }).then((data) => {\n                    data.map((historyrow) => {\n                        historyData.push({\n                            id: get(historyrow, 'id'),\n                            date: get(historyrow, 'date'),\n                            addhours: get(historyrow, 'addhours'),\n                            user:\n                                get(historyrow, 'user.firstname') +\n                                ' ' +\n                                get(historyrow, 'user.lastname'),\n                            description: get(historyrow, 'description'),\n                            hours: format.hours(get(historyrow, 'hours')),\n                            bank: getBankName(banks, get(historyrow, 'column')),\n                            type: 'manual',\n                        });\n                    });\n                });\n            };\n\n            const getBankName = (ar, columnName) => {\n                if (columnName === null) return '';\n\n                let found = ar.filter((el) => el.column === columnName);\n\n                // no bank with column\n                if (!found.length) {\n                    let name = columnName.replace('bank_', '');\n                    found = ar.filter((el) => el.row_info === name);\n                }\n\n                if (found.length) {\n                    found = found[0].name;\n                } else {\n                    found = '';\n                }\n                return found;\n            };\n\n            const getWorkTime = async (column, fromDate, toDate) => {\n                let queryObj = {\n                    date: `${fromDate}_${toDate}`,\n                    sideload: true,\n                    user: user.userid,\n                    limit: 'all',\n                };\n\n                // Make sure we only get work entries that\n                // actually have something filled in\n                queryObj[column] = '!(empty)';\n\n                return this.store.query('worktime', queryObj).then((worktimerows) => {\n                    this.accounts.forEach((el) => {\n                        const accountcolumn = el.column;\n                        if (!accountcolumn) return;\n                        const bankName = getBankName(banks, column);\n                        worktimerows.forEach((workrow) => {\n                            let hoursInAccount = get(workrow, accountcolumn);\n                            if (hoursInAccount && get(el, 'name') === bankName) {\n                                var bankrow = {\n                                    hours: format.hours(hoursInAccount),\n                                    user:\n                                        get(workrow, 'user.firstname') +\n                                        ' ' +\n                                        get(workrow, 'user.lastname'),\n                                    date: get(workrow, 'date'),\n                                    bank: bankName,\n                                    type: 'entry',\n                                    addhours: true,\n                                };\n                                historyData.push(bankrow);\n                            }\n                        });\n                    });\n                });\n            };\n\n            const getbanks = async () => {\n                return this.store.query('bank', {}).then((data) => {\n                    data.forEach((row) => {\n                        // only push if get(row, \"absencetype.id\") is something\n                        let id = get(row, 'absencetype.id');\n                        let name = get(row, 'absencetype.name');\n                        if (id !== undefined) {\n                            absencetypes_ids.push({\n                                id,\n                                name,\n                            });\n                        }\n\n                        banks.push(JSON.parse(JSON.stringify(row)));\n                    });\n                });\n            };\n\n            set(this, 'historyModal', true);\n\n            try {\n                await getbanks();\n                await getBankdeducter(startDate, endDate);\n\n                // We need make request for each bank, becaus we cant use\n                // column_name=!(empty) with multiple values\n                for (const bank of banks) {\n                    if (bank.column) {\n                        await getWorkTime(bank.column, startDate, endDate);\n                    }\n                }\n\n                await getAbsences(startDate, endDate);\n            } catch (e) {\n                let message = e.message || 'Server error';\n                get(this, 'dialogs').alert(message);\n            }\n\n            set(this, 'historyDataLoading', false);\n\n            // Sort the newly loaded data\n            const sortedNewData = historyData.sort((el1, el2) => (el1.date < el2.date ? 1 : -1));\n\n            if (this.loadOlderHistory) {\n                // Combine new data with existing data when loading older history\n                const combinedData = [...existingHistoryData, ...sortedNewData];\n                set(\n                    this,\n                    'historyData',\n                    combinedData.sort((el1, el2) => (el1.date < el2.date ? 1 : -1))\n                );\n            } else {\n                // Original behavior for initial load\n                set(this,'historyData', sortedNewData);\n            }\n\n            set(this, 'historyData_filtered', get(this, 'historyData'));\n            this.filterHistory('type', 'both');\n\n            if (this.loadOlderHistory) {\n                set(this, 'loadOlderHistory', false);\n            }\n        },\n\n        async loadOlderHistory() {\n            try {\n                set(this, 'historyDataLoading', true);\n                set(this, 'loadOlderHistory', true);\n\n                this.send('showWorkBankHistoryModal', get(this, 'selectedUserObj'));\n\n            } catch (error) {\n                get(this, 'dialogs').alert(`Error loading older history: ${error.message || 'Unknown error'}`);\n                // Only reset loading state if there was an error\n                set(this, 'historyDataLoading', false);\n            }\n        },\n\n        action(action, row) {\n            if (action === 'showHistory') {\n                this.send('showWorkBankHistoryModal', row);\n            }\n            if (action === 'checkedRows') {\n                let users = row.map((item) => get(this, 'store').peekRecord('user', item.userid));\n                set(this, 'checkedRows', users);\n            }\n        },\n\n        closeHistoryModal() {\n            set(this, 'historyModal', false);\n            this.send('refreshModel');\n        },\n\n        refreshReport() {\n            this.notifyPropertyChange('rows');\n            this.notifyPropertyChange('deducters');\n        },\n\n        // Update report after saved page\n        updateReport() {\n            this.send('refreshModel');\n            set(this, 'showDeducter', null);\n        },\n\n        showSettings() {\n            let self = this;\n            this.store\n                .findAll('bank', { include: 'absencetype', reload: true })\n                .then(function (data) {\n                    set(self, 'settingsModel', data);\n                    set(self, 'showSettingsDialog', true);\n                });\n        },\n        deleteBank(row) {\n            let self = this;\n            get(this, 'store')\n                .peekRecord('bank', row.id)\n                .destroyRecord()\n                .then(function () {\n                    self.send('refreshModel');\n                });\n        },\n        createNewBank(values) {\n            let self = this;\n            get(this, 'store')\n                .createRecord('bank', values)\n                .save()\n                .then(function () {\n                    self.send('refreshModel');\n                });\n        },\n\n        editBank(row) {\n            return get(this, 'store').findRecord('bank', row.id);\n        },\n        saveBank(record) {\n            return record.save().then(() => {\n                this.send('refreshModel');\n            });\n        },\n        async exportExcel() {\n            let excelHeaders = [];\n            get(this, 'translated_columns').forEach((col, index) => {\n                excelHeaders.pushObject({ name: col, key: get(this, 'columnList')[index] });\n            });\n\n            const exportRows = await this.newExportRows();\n\n            const rows = exportRows?.users.map((user) => {\n                let banks = user._banks;\n                banks['user'] = get(user, 'lastname') + ' ' + get(user, 'firstname');\n                return banks;\n            });\n            get(this, 'fileExports').createExcelFromJSON({ rows: rows, columns: excelHeaders });\n        },\n\n        async reMigrateBanks() {\n            if (!this.checkedRows || this.checkedRows.length === 0) return;\n\n            let selectedUsers = this.checkedRows.map(obj => {\n                return {\n                    userid: obj.id\n                };\n            });\n\n            // Combine all user IDs into a comma-separated string\n            let userids = selectedUsers.map(u => u.userid).join(',');\n\n            if (!userids) {\n                return;\n            }\n\n            let url = `api/reMigrateBanks?users=${userids}`;\n            await this.ttapi.request(url);\n            // Reset checkedRows after migration\n            set(this, 'checkedRows', undefined);\n            this.send('refreshModel');\n        },\n\n        toggleHideEmptyRows(value) {\n            set(this, 'hideEmptyRows', value);\n            this.router.transitionTo({ queryParams: {\n                hideEmptyRows: value,\n                page: 1 // Reset page to 1 when toggling filter\n            }});\n        },\n    },\n\n    async init_functions() {\n        this.evented.on('storeEvent', this, 'onStoreEvent');\n\n        set(this, 'default_date', this.earliestDate + '_' + this.currentDate);\n\n        this._super(...arguments);\n        this.rowActions = [{ action: 'showHistory', icon: 'move move-Search' }];\n\n        this.historyRowActions = [\n            { action: 'remove', icon: 'move move-Delete' },\n            { action: 'edit', icon: 'move move-Pencil' },\n        ];\n\n        set(this, 'showHistoryColumns', [\n            'date',\n            'bank',\n            'absencetype',\n            'description',\n            'hours',\n            'addhours',\n        ]);\n\n        set(this, 'historyFilters', {\n            type: 'both',\n            bank: 'all',\n        });\n\n        const banks = await this.store.findAll('bank');\n        let options = [];\n        banks.forEach((bank) => {\n            options.push({ value: get(bank, 'name'), id: get(bank, 'column') });\n        });\n        this.bankfields = {\n            name: 'Bank',\n            options,\n        };\n    },\n\n    willDestroy() {\n        this.evented.off('storeEvent', this, 'onStoreEvent');\n    },\n\n    onStoreEvent(params) {\n        const updateOnForms = ['worktime', 'abcense'];\n        if (params.action === 'insert' && updateOnForms.includes(params.type)) {\n            if (this.router.currentRouteName == 'timetracker.bank') this.send('refreshModel');\n        }\n    },\n\n    filterHistory(name, value) {\n        this.historyFilters[name] = value;\n\n        let historydata = get(this, 'historyData');\n\n        // filter by type\n        if (this.historyFilters.type !== 'both') {\n            historydata = historydata.filter((el) => {\n                let ret = true;\n                if (this.historyFilters.type === 'automatic') {\n                    ret = el.type === 'entry' || el.type === 'absence';\n                }\n\n                if (this.historyFilters.type === 'manual') {\n                    ret = el.type === 'manual';\n                }\n                return ret;\n            });\n        }\n\n        // filter by bank\n        if (this.historyFilters.bank !== 'all') {\n            historydata = historydata.filter((el) => {\n                let ret = true;\n                ret = el.bank === this.historyFilters.bank;\n\n                if (\n                    el.absencetype &&\n                    this.checkIfAbsenceTypeBelongsToBank(\n                        el.absencetype_id,\n                        this.historyFilters.bank,\n                    )\n                ) {\n                    ret = true;\n                }\n                return ret;\n            });\n        }\n\n        // finally remove any empty banks\n        historydata = historydata.filter((el) => !(el.bank === '' && !el.absencetype));\n\n        set(this, 'historyData_filtered', historydata);\n    },\n\n    checkIfAbsenceTypeBelongsToBank(absensetype_id, bank) {\n        let bankwithAbsenceType = this.banks.toArray().filter((el) => {\n            return bank === get(el, 'name');\n        });\n\n        if (bankwithAbsenceType.length) {\n            bankwithAbsenceType = bankwithAbsenceType[0];\n            if (parseInt(get(bankwithAbsenceType, 'absencetype.id')) === parseInt(absensetype_id)) {\n                return true;\n            }\n        }\n        return false;\n    },\n\n    reformatUserRow(row) {\n        const ret = {\n            user: row.firstname\n                ? row.lastname + ' ' + row.firstname\n                : row.values.lastname + ' ' + row.values.firstname,\n            userid: row.id,\n        };\n\n        const banks = Object.keys(row._banks);\n\n        banks.forEach(\n            (bank) => (ret[bank] = htmlSafe(this.formatHours(row._banks[bank] / 60).string)),\n        );\n\n        return ret;\n    },\n\n    removeOrNot(row, answer) {\n        if (!answer) return;\n        this.store.query('bankdeducter', { id: row.id }).then(this.removeRow.bind(this, row));\n    },\n\n    removeRow(row, rows) {\n        get(rows, 'firstObject').destroyRecord();\n        set(\n            this,\n            'historyData_filtered',\n            get(this, 'historyData_filtered').filter((el) => el.id !== row.id),\n        );\n    },\n\n    formatHours(hours) {\n        if (hours === 0) return htmlSafe('<span class=\"move move-Time\"></span> 0:00h');\n        else return get(this, 'collector')._format_(hours, 'worktime', 'work_hours');\n    },\n\n    async newExportRows() {\n        const query = ['limit=all', 'hoursFormat=true'];\n        if (get(this, 'date')) query.push('date=' + get(this, 'date'));\n        if (get(this, 'user')) query.push('id=' + get(this, 'user'));\n        if (get(this, 'employer')) query.push('employer=' + get(this, 'employer'));\n\n        let url = 'api/usersWithBanks' + (query.length ? '?' + query.join('&') : '');\n        return await get(this, 'ttapi').request(url);\n    },\n\n});\n","import { hash } from 'rsvp';\nimport Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport moment from 'moment';\nimport initRoute from '../../../mixins/init-route';\n\nconst PAGE_SIZE = 25;\n\nexport default Route.extend(initRoute, {\n    ttapi: service(),\n\n    queryParams: {\n        date: { refreshModel: true },\n        page: { refreshModel: true },\n        user: { refreshModel: true },\n        employer: { refreshModel: true },\n        hideEmptyRows: { refreshModel: true }\n    },\n\n    async model(params) {\n        return this._loadModel(params);\n    },\n\n    actions: {\n        refreshModel() {\n            this.refresh();\n        }\n    },\n\n    /**\n     * Loads users with bank data.\n     * If no date range is provided but backend returns firstDate,\n     * sets date query param to firstDate_today and reloads.\n     */\n    async _loadModel(rawParams) {\n        // Do not mutate the original params object Ember passes around\n        const params = { ...rawParams };\n\n        const hasFilter = params.user || params.employer;\n\n        let page = params.page || 1;\n\n        if (hasFilter) {\n            page = 1; // reset to first page when filtering\n        }\n\n        const offset = (params.page ? (params.page - 1) * PAGE_SIZE : 0);\n\n        const queryParts = [\n            `limit=${PAGE_SIZE}`,\n            `offset=${offset}`\n        ];\n\n        if (params.date) queryParts.push(`date=${encodeURIComponent(params.date)}`);\n        if (params.user) queryParts.push(`id=${encodeURIComponent(params.user)}`);\n        if (params.employer) queryParts.push(`employer=${encodeURIComponent(params.employer)}`);\n        if (params.hideEmptyRows) queryParts.push(`hideEmptyRows=${encodeURIComponent(params.hideEmptyRows)}`);\n\n        const url = `api/usersWithBanks?${queryParts.join('&')}`;\n\n        const data = await get(this, 'ttapi').request(url);\n\n        if (!params.date && data.firstDate) {\n            const startDate = data.firstDate;\n            const endDate = moment().format('YYYY-MM-DD');\n            const newDate = `${startDate}_${endDate}`;\n\n            this.transitionTo({\n                queryParams: {\n                    ...params,\n                    page, // ensure page consistency\n                    date: newDate\n                }\n            });\n            return;\n        }\n\n        const banks = await this.store.findAll('bank', { include: true });\n\n        return hash({\n            users: data,\n            accounts: banks,\n            pageCount: Math.ceil((data.count || 0) / PAGE_SIZE),\n            firstDate: data.firstDate\n        });\n    }\n});\n","/* eslint-disable ember/named-functions-in-promises */\nimport { computed } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport Component from '@ember/component';\nimport { get, set } from '@ember/object';\n\nexport default Component.extend({\n    collector: service('collector-service'),\n    dialogs: service(),\n    intl: service(),\n\n    banks: alias('model'),\n\n    translated_columns: computed(function () {\n        return get(this, 'columnList').map((column) => {\n            return get(this, 'intl').t('defaults.field.' + column);\n        });\n    }),\n\n    absencetypefield: computed('record.[]', function () {\n        let c = get(this, 'Collector');\n        let field = c.field('bank', 'absencetype');\n        field.value = get(this, 'record.absencetype.id');\n        return field;\n    }),\n\n    rows: computed('model.[]', function () {\n        return get(this, 'banks').map((row) => {\n            const column =\n                get(row, 'column') &&\n                get(this, 'collector').fieldExists('worktime', get(row, 'column'))\n                    ? get(this, 'collector').getTranslationForColumn('worktime', get(row, 'column'))\n                    : '-';\n            return {\n                id: get(row, 'id'),\n                name: get(row, 'name'),\n                column: column,\n                absencetype: get(this, 'collector').testNeedsOne('abcense')\n                    ? get(this, 'collector')._format_(\n                          get(row, 'absencetype'),\n                          'bank',\n                          'absencetype',\n                      )\n                    : null,\n                skipsaldo: get(this, 'collector').testNeedsOne('products.saldo')\n                    ? get(this, 'collector')._format_(get(row, 'skipsaldo'), 'bank', 'skipsaldo')\n                    : null,\n            };\n        });\n    }),\n\n    columns: computed(function () {\n        const collector = get(this, 'collector');\n        let worktimes = collector.fieldArray('worktime').filter((item) => {\n            return item.type === 'hours';\n        });\n\n        worktimes = worktimes.map((item) => {\n            const column = collector.fieldExists('worktime', item.name)\n                ? collector.getTranslationForColumn('worktime', item.name)\n                : '-';\n            return { id: item.name, name: column };\n        });\n\n        worktimes.unshift({ id: '', name: get(this, 'intl').t('general.select_choose') });\n\n        return worktimes;\n    }),\n\n    didReceiveAttrs() {\n        this._super(...arguments);\n        let c = get(this, 'collector');\n        let columns = ['name', 'column'];\n        if (get(this, 'collector').testNeedsOne('bank.skipsaldo')) {\n            columns.push('skipsaldo');\n        }\n        if (get(this, 'collector').testNeedsOne('abcense')) {\n            columns.push('absencetype');\n        }\n\n        set(this, 'rowActions', []);\n        set(this, 'columnList', columns);\n\n        if (c.testNeedsOne('bank@remove')) {\n            this.rowActions.pushObject({ action: 'removeRow', icon: 'move move-Delete' });\n        }\n        if (c.testNeedsOne('bank@edit')) {\n            this.rowActions.pushObject({ action: 'editRow', icon: 'move move-Pencil' });\n        }\n    },\n\n    actions: {\n        showAdder(on) {\n            set(this, 'record', null);\n            set(this, 'values', { name: null, column: null });\n            set(this, 'showAdder', on);\n        },\n\n        changeName(value) {\n            set(this, 'values.name', value);\n        },\n\n        changeColumn(value) {\n            if (this.columnAlreadyInUse(value)) return;\n            set(this, 'values.column', value);\n            if (get(this, 'record')) {\n                set(this, 'record.column', value);\n            }\n        },\n        change(value, field) {\n            set(this, `values.${field}`, value);\n            if (get(this, 'record')) {\n                set(this, `record.${field}`, value);\n            }\n        },\n        save(record) {\n            if (get(this, 'columnError')) return;\n\n            if (record) {\n                this.saveBank(record).then(() => {\n                    set(this, 'showAdder', false);\n                });\n            } else {\n                let obj = {\n                    name: get(this, 'values.name') || '---',\n                    column: get(this, 'values.column') || null,\n                    absencetype: get(this, 'values.absencetype'),\n                    skipsaldo: get(this, 'values.skipsaldo'),\n                };\n                this.createNewBank(obj);\n                set(this, 'showAdder', false);\n            }\n        },\n\n        action(type, row) {\n            if (type === 'removeRow') {\n                get(this, 'dialogs')\n                    .confirm(get(this, 'intl').t('report.confirm_delete'))\n                    .then((con) => {\n                        if (con) {\n                            this.deleteBank(row);\n                        }\n                    });\n            } else if (type === 'editRow') {\n                set(this, 'values', { name: null, column: null });\n                this.editBank(row).then((editableBank) => {\n                    set(this, 'record', editableBank);\n                    set(this, 'showAdder', true);\n                });\n            }\n        },\n    },\n    columnAlreadyInUse(value) {\n        let columnFound = get(this, 'banks').filter((bank) => bank.column === value);\n        set(this, 'columnError', columnFound.length > 0);\n        return this.columnError;\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"OhrRVq8F\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row report-main-content\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"bubbleActions\\\"],[[24,[\\\"columnList\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"rows\\\"]],[24,[\\\"rowActions\\\"]],\\\"action\\\"]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"bank@add\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"showAdder\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"name\\\",\\\"create-bank\\\"],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showAdder\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.create\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"record\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"worktimebank.edit_bank\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"worktimebank.add_bank\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"bank.name\\\"],[[\\\"change\\\",\\\"model\\\"],[\\\"changeName\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"columnError\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.column\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"columnError\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"field.error.column_in_use\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"name\\\",\\\"bubbleChange\\\",\\\"value\\\"],[[24,[\\\"columns\\\"]],\\\"form-control add-fields\\\",\\\"column\\\",\\\"changeColumn\\\",[28,\\\"if\\\",[[24,[\\\"record\\\"]],[24,[\\\"record\\\",\\\"column\\\"]]],null]]]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"columnError\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.saldo\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"bank.skipsaldo\\\"],[[\\\"name\\\",\\\"change\\\",\\\"model\\\"],[\\\"skip-saldo\\\",\\\"change\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"absencetypefield\\\"]]],[[\\\"name\\\",\\\"change\\\",\\\"model\\\",\\\"usePowerDropdown\\\"],[\\\"absence-type\\\",\\\"change\\\",[24,[\\\"record\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"name\\\",\\\"save-button\\\"],[12,\\\"class\\\",\\\"btn btn-primary pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\",[24,[\\\"record\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"name\\\",\\\"cancel-button\\\"],[12,\\\"class\\\",\\\"btn pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showAdder\\\",false]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/bank/settings-component/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"n8WQ3KMj\",\"block\":\"{\\\"symbols\\\":[\\\"form\\\",\\\"fields\\\",\\\"record\\\",\\\"field\\\",\\\"row\\\",\\\"columns\\\",\\\"rowActions\\\",\\\"button\\\",\\\"column\\\",\\\"value\\\",\\\"form\\\",\\\"fields\\\",\\\"fieldcomp\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"start\\\",\\\"end\\\",\\\"form\\\",\\\"filterValueChanged\\\",\\\"onClearFilters\\\"],[[24,[\\\"filters\\\"]],[23,0,[\\\"earliestDate\\\"]],[23,0,[\\\"currentDate\\\"]],\\\"worktime\\\",\\\"filterChanged\\\",[28,\\\"action\\\",[[23,0,[]],\\\"clearAllFilters\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"bankdeducter@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"name\\\",\\\"bankdeducter-add\\\"],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showDeducterModal\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.modify\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showDeducter\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"class\\\",\\\"close\\\",\\\"header\\\"],[\\\"bankdeducter-modal\\\",[28,\\\"action\\\",[[23,0,[]],\\\"showDeducterModal\\\",false],null],[28,\\\"t\\\",[\\\"worktimebank.add\\\"],null]]],{\\\"statements\\\":[[4,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"close\\\",\\\"rowAdded\\\",\\\"record\\\"],[\\\"bankdeducter\\\",[28,\\\"action\\\",[[23,0,[]],\\\"showDeducterModal\\\",false],null],[28,\\\"action\\\",[[23,0,[]],\\\"deducterAdded\\\"],null],[24,[\\\"newDeducterRecord\\\"]]]],{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,11,[\\\"fields\\\"]],\\\"expected `form.fields` to be a contextual component but found a string. Did you mean `(component form.fields)`? ('tt4/pods/timetracker/bank/template.hbs' @ L18:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"collector/form-add/forms/bankdeducter\\\",null,[[\\\"record\\\",\\\"checkedRows\\\",\\\"from\\\",\\\"bankfields\\\",\\\"showSaved\\\",\\\"fields\\\",\\\"fieldcomp\\\"],[[24,[\\\"newDeducterRecord\\\"]],[24,[\\\"checkedRows\\\"]],[23,11,[]],[24,[\\\"bankfields\\\"]],true,[23,12,[]],[23,13,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[12,13]},null],[0,\\\"                \\\"],[1,[23,11,[\\\"buttons\\\"]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,11,[\\\"saved\\\"]],\\\"expected `form.saved` to be a contextual component but found a string. Did you mean `(component form.saved)`? ('tt4/pods/timetracker/bank/template.hbs' @ L22:C18) \\\"],null]],[[\\\"close\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"updateReport\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[11]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"historyModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"worktimebank.history\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeHistoryModal\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"historyDataLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"historyDataLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"defaults.field.user\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[24,[\\\"selectedUser\\\",\\\"firstname\\\"]],false],[0,\\\"  \\\"],[1,[24,[\\\"selectedUser\\\",\\\"lastname\\\"]],false],[9],[0,\\\"  \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"history.action.show_data\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[10,\\\"name\\\",\\\"worktimebank-entry-filter\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"onFilterHistoryChange\\\",\\\"type\\\"],null]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"both\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.entry_type.both\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"manual\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.entry_type.manual\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"automatic\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.entry_type.automatic\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.worktime_bank\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control\\\"],[10,\\\"name\\\",\\\"worktimebank-bank-filter\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"onFilterHistoryChange\\\",\\\"bank\\\"],null]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"all\\\"],[8],[1,[28,\\\"t\\\",[\\\"select.all\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"banks\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[29,[[23,10,[\\\"name\\\"]]]]],[8],[1,[23,10,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[10]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"data\\\",\\\"rowActions\\\",\\\"translated_columns\\\",\\\"hideSort\\\"],[[24,[\\\"showHistoryColumns\\\"]],[24,[\\\"historyData_filtered\\\"]],[24,[\\\"historyRowActions\\\"]],[24,[\\\"translated_columns2\\\"]],true]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[11,\\\"class\\\",[29,[[23,5,[\\\"class\\\"]]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,6,[]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,9,[]],\\\"addhours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,9,[]],\\\"date\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"moment-format\\\",[[28,\\\"get\\\",[[23,5,[]],[23,9,[]]],null],\\\"DD.MM.YYYY\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"get\\\",[[23,5,[]],[23,9,[]]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"if\\\",[[28,\\\"eq\\\",[[28,\\\"get\\\",[[23,5,[]],[23,9,[]]],null],true],null],[28,\\\"t\\\",[\\\"worktimebank.option.adds\\\"],null],[28,\\\"t\\\",[\\\"worktimebank.option.deducts\\\"],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[9]},null],[4,\\\"if\\\",[[23,7,[\\\"length\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"type\\\"]],\\\"manual\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-row-icon invisible\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,7,[]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[[23,8,[\\\"icon\\\"]]]]],[3,\\\"action\\\",[[23,0,[]],\\\"historyRowAction\\\",[23,8,[\\\"action\\\"]],[23,5,[]]]],[8],[4,\\\"if\\\",[[23,8,[\\\"text\\\"]]],null,{\\\"statements\\\":[[0,\\\" \\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"text\\\"],[[23,8,[\\\"text\\\"]]]]],false],[0,\\\" \\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5,6,7]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"historyAllLoaded\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center mt-3\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"loadOlderHistory\\\",[24,[\\\"selectedUser\\\"]]]],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"worktimebank.load_older_history\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showFormDeducter\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"collector-form-name\\\",[[24,[\\\"form\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeEditManualEntry\\\"],null]]],{\\\"statements\\\":[[4,\\\"collector/form-add\\\",null,[[\\\"form\\\",\\\"close\\\",\\\"record\\\"],[\\\"bankdeducter\\\",[28,\\\"action\\\",[[23,0,[]],\\\"closeEditManualEntry\\\"],null],[24,[\\\"showFormDeducter\\\"]]]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"fields\\\"]],\\\"expected `form.fields` to be a contextual component but found a string. Did you mean `(component form.fields)`? ('tt4/pods/timetracker/bank/template.hbs' @ L111:C14) \\\"],null]],[[\\\"only\\\"],[\\\"addhours,date,description,hours\\\"]]],false],[0,\\\"\\\\n            \\\"],[1,[23,1,[\\\"buttons\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"saved\\\"]],\\\"expected `form.saved` to be a contextual component but found a string. Did you mean `(component form.saved)`? ('tt4/pods/timetracker/bank/template.hbs' @ L113:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,4,[\\\"name\\\"]],\\\"column\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"translate-column\\\",null,[[\\\"form\\\",\\\"field\\\"],[[23,4,[\\\"form\\\"]],[23,4,[\\\"name\\\"]]]]],false],[0,\\\": \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,4,[\\\"name\\\"]],\\\"addhours\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"if\\\",[[28,\\\"eq\\\",[[23,4,[\\\"value\\\"]],true],null],[28,\\\"t\\\",[\\\"worktimebank.option.adds\\\"],null],[28,\\\"t\\\",[\\\"worktimebank.option.deducts\\\"],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"collector/value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[[23,4,[\\\"form\\\"]],[23,4,[\\\"name\\\"]],[28,\\\"get\\\",[[23,3,[]],[23,4,[\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[2,3]},null]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"userlevel=1\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"name\\\",\\\"bank-add-edit\\\"],[12,\\\"class\\\",\\\"btn btn-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showSettings\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worktimebank.addAndEdit\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"isCordova\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"exportExcel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_excel\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"company_info\\\",\\\"country\\\"]],\\\"fi\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.generic_timetracker\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[28,\\\"t\\\",[\\\"click.help_workday_bank_otta\\\"],null]],[10,\\\"target\\\",\\\"_blank\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"settings.products.integration_info_button\\\"],null]],[10,\\\"class\\\",\\\"info-button-row move move-Info workday-calendar-info-button\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"https://ohjeet.visma.fi/articles/#!visma-movenium/ty-aikapankki\\\"],[10,\\\"target\\\",\\\"_blank\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"settings.products.integration_info_button\\\"],null]],[10,\\\"class\\\",\\\"info-button-row move move-Info workday-calendar-info-button\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"eq\\\",[[23,0,[\\\"checkedRows\\\",\\\"length\\\"]],0],null],[28,\\\"eq\\\",[[23,0,[\\\"checkedRows\\\"]],[27]],null]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-default disabled\\\"],[10,\\\"style\\\",\\\"float: right; margin-right: 30px;\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"worktimebank.reMigrate\\\"],null],false],[0,\\\"\\\\n            \\\"],[5,\\\"ember-popover\\\",[[12,\\\"class\\\",\\\"test-popover-example\\\"]],[[\\\"@popperContainer\\\",\\\"@side\\\",\\\"@event\\\"],[\\\"body\\\",\\\"bottom\\\",\\\"hover\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"worktimebank.reMigrateDisabledText\\\"],null],false],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"style\\\",\\\"float: right; margin-right: 30px;\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"reMigrateBanks\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"worktimebank.reMigrate\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"style\\\",\\\"margin: 15px 0px; justify-content: flex-start; display: flex;\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"onToggle\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"theme\\\",\\\"label\\\"],[[24,[\\\"hideEmptyRows\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"toggleHideEmptyRows\\\"],null],[28,\\\"t\\\",[\\\"worktimebank.button.hideEmptyRows\\\"],null],\\\"\\\",true,\\\"light\\\",[28,\\\"t\\\",[\\\"worktimebank.hideEmptyRows\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSettingsDialog\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"close\\\",\\\"header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showSettingsDialog\\\"]]],null]],null],[28,\\\"t\\\",[\\\"worktimebank.settings\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"timetracker/bank/settings-component\\\",null,[[\\\"model\\\",\\\"deleteBank\\\",\\\"createNewBank\\\",\\\"editBank\\\",\\\"saveBank\\\"],[[24,[\\\"settingsModel\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"deleteBank\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"createNewBank\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"editBank\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"saveBank\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row report-main-content\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"checkable\\\",\\\"columns\\\",\\\"translated_columns\\\",\\\"rowActions\\\",\\\"data\\\",\\\"bubbleActions\\\",\\\"hideSort\\\"],[true,[24,[\\\"columnList\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"rowActions\\\"]],[24,[\\\"usersWithBanks\\\"]],\\\"action\\\",true]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"model\\\",\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/bank/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"AmbqxhPp\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"promo-ad\\\",[],[[\\\"@background\\\",\\\"@promoClass\\\",\\\"@product\\\"],[\\\"banks\\\",\\\"left-align\\\",\\\"worktimebank\\\"]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/bank_ad/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/calendar/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerCalendarController;\n\nimport Ember from 'ember';\n\nimport filterModel from '../../../mixins/filter-model';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport DS from 'ember-data';\n\nimport saveTheChildren from 'tt4/mixins/save-the-children';\n\nTimetrackerCalendarController = GeneralReportController.extend(filterModel, saveTheChildren, {\n    Collector: Ember.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    error: Ember.inject.service(),\n    surveys: Ember.inject.service(),\n    form: 'worktime',\n    queryParams: ['project', 'user', 'date', 'status', 'employer', 'gantt', 'page'],\n    shownColumns: ['project', 'starttime', 'endtime', 'work_hours', 'task'],\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    project: null,\n    user: null,\n    employer: null,\n    userSelectorLimit: 200,\n    // do not use limiting with calender\n    limit: null,\n    gantt: false,\n    pageCount: Ember.computed('model.response.count', function () {\n        return Math.ceil(Ember.get(this, 'model.response.count') / 15);\n    }),\n    init_functions: function () {\n        this._super();\n        if (this.get('Collector').testNeeds(['worktime.user@hide_filter'])) {\n            this.set('user', this.session.currentUser.id);\n            return this.set('do_not_show_user_selector', true);\n        } else {\n            // pre select 1st user\n            return this.get('store')\n                .query('user', {\n                    form: 'worktime',\n                    field: 'user',\n                    order: 'lastname,firstname',\n                    limit: 1,\n                    offset: this.get('offset'),\n                })\n                .then((ret) => {\n                    return Ember.run.next(this, () => {\n                        if (this.get('user')) return this.set('user', this.get('user'));\n\n                        if (\n                            Ember.get(ret, 'meta.count') >= 10 &&\n                            Ember.get(ret, 'meta.count') <= this.get('userSelectorLimit') &&\n                            !this.get('user')\n                        ) {\n                            return this.set('user', Ember.get(ret, 'firstObject.id'));\n                        } else {\n                            return this.set('do_not_show_user_selector', true);\n                        }\n                    });\n                });\n        }\n    },\n    //hideMoreFilters: true\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create(\n                {\n                    field: 'date',\n                },\n                {\n                    wagePeriods: true,\n                },\n            ),\n            Em.Object.create({\n                field: 'project',\n            }),\n            Em.Object.create({\n                field: 'user',\n                singleselect: true,\n            }),\n            Em.Object.create({\n                field: 'employer',\n            }),\n        ]);\n    }),\n    addOptions: Ember.computed(function () {\n        var c, options;\n        options = [];\n        c = this.get('Collector');\n        // show worktime-adding always to users that can add worktime to other users\n        if (\n            c.testNeeds([\n                'worktime',\n                '!products.gps_force||!worktime.user@hide',\n                '!worktime.starttime@disabled',\n                '!worktime@errors',\n            ])\n        ) {\n            options.push('worktime');\n        }\n        if (c.testNeeds(['abcense', '!abcense@errors'])) {\n            options.push('abcense');\n        }\n        return options;\n    }),\n    absenceColorFrom: ['abcensetype.id', 'user.firstname', 'user.lastname'],\n    multiDayAbsenceFields: Ember.computed(function () {\n        return this.get('Collector').fieldArray('abcense', ['user', 'abcensetype', 'description']);\n    }),\n    oneDayAbsenceFields: Ember.computed(function () {\n        var c, col_arr, fields;\n        c = this.get('Collector');\n        col_arr = ['abcensetype', 'user', 'starttime', 'endtime', 'absence_hours', 'description'];\n        fields = c.fieldArray('abcense', col_arr);\n        return fields;\n    }),\n    allAbsences: Ember.computed(function () {\n        if (!this.get('Collector').testNeedsOne('abcense')) {\n            return [];\n        }\n        return this.get('store').peekAll('abcense');\n    }),\n    filteredAbsences: Ember.computed('allAbsences.[]', 'filters.@each.value', function () {\n        var filterArr;\n        if (\n            !this.get('Collector').testNeedsOne('abcense.project') &&\n            Ember.isPresent(this.get('project'))\n        ) {\n            return [];\n        }\n        filterArr = ['page', 'order', 'date'];\n        if (!this.get('Collector').testNeedsOne('abcense.project')) {\n            filterArr.push('project');\n        }\n        return this._filterThese(this.get('allAbsences'), filterArr);\n    }),\n    filteredAbsencesOneDay: Ember.computed(\n        'filteredAbsences.[]',\n        'filteredAbsences.@each.startdate',\n        'filteredAbsences.@each.enddate',\n        function () {\n            var model;\n            model = this.get('filteredAbsences');\n            return model.filter(function (item) {\n                if (item.get('enddate') === null || item.get('enddate') === item.get('startdate')) {\n                    return true;\n                }\n                return false;\n            });\n        },\n    ),\n    filteredAbsencesManyDays: Ember.computed(\n        'filteredAbsences.[]',\n        'filteredAbsences.@each.startdate',\n        'filteredAbsences.@each.enddate',\n        function () {\n            var model;\n            model = this.get('filteredAbsences').sortBy('startdate');\n            return model.filter(function (item) {\n                if (item.get('enddate') !== null && item.get('enddate') !== item.get('startdate')) {\n                    return true;\n                }\n                return false;\n            });\n        },\n    ),\n    sumsByUser: Ember.computed(\n        'date',\n        'filteredModel.@each.isNew',\n        'filteredAbsences.@each.isNew',\n        function () {\n            var absences,\n                absentDays,\n                c,\n                enddate,\n                startdate,\n                store,\n                sum,\n                sumArray,\n                sums,\n                userId,\n                workDays,\n                worktimes;\n            if (Ember.isPresent(this.get('user'))) {\n                return;\n            }\n            worktimes = this.get('filteredModel');\n            absences = this.get('filteredAbsences');\n            c = this.get('Collector');\n            [startdate, enddate] = this.get('date').split('_');\n            store = this.get('store');\n            sums = {};\n            if (c.testNeedsOne('worktime')) {\n                workDays = worktimes.reduce(\n                    (obj, worktime) => {\n                        var isWorkDateAdded, workLog;\n                        if (worktime.get('isNew')) {\n                            return obj;\n                        }\n                        if (!moment(worktime.get('date')).isBetween(startdate, enddate, null, [])) {\n                            return obj;\n                        }\n                        if (sums[worktime.get('user.id')] != null) {\n                            sums[worktime.get('user.id')].wt += worktime.get('work_hours');\n                        } else {\n                            sums[worktime.get('user.id')] = {\n                                wt: worktime.get('work_hours'),\n                                ab: 0,\n                            };\n                        }\n                        workLog = {\n                            id: worktime.get('user.id'),\n                            date: worktime.get('date'),\n                        };\n                        isWorkDateAdded = obj.elementsIterated.find((item) => {\n                            return item.id === workLog.id && item.date === workLog.date;\n                        });\n                        if (isWorkDateAdded) {\n                            return obj;\n                        } else {\n                            obj.elementsIterated.push(workLog);\n                            obj[worktime.get('user.id')] = obj[worktime.get('user.id')]\n                                ? ++obj[worktime.get('user.id')]\n                                : 1;\n                            return obj;\n                        }\n                    },\n                    {\n                        elementsIterated: [],\n                    },\n                );\n            }\n            if (c.testNeedsOne('abcense')) {\n                absentDays = absences.reduce(\n                    (obj, absence) => {\n                        var absenceLog, isAbsenceAdded;\n                        if (absence.get('isNew')) {\n                            return obj;\n                        }\n                        if (\n                            !moment(absence.get('startdate')).isBetween(\n                                startdate,\n                                enddate,\n                                null,\n                                [],\n                            )\n                        ) {\n                            return obj;\n                        }\n                        if (sums[absence.get('user.id')] != null) {\n                            sums[absence.get('user.id')].ab += absence.get('absence_hours');\n                        } else {\n                            sums[absence.get('user.id')] = {\n                                ab: absence.get('absence_hours'),\n                                wt: 0,\n                            };\n                        }\n                        absenceLog = {\n                            id: absence.get('user.id'),\n                            startdate: absence.get('startdate'),\n                            enddate: absence.get('enddate'),\n                        };\n                        isAbsenceAdded = obj.elementsIterated.find((item) => {\n                            return item.id === absenceLog.id && item.enddate === absenceLog.enddate;\n                        });\n                        if (isAbsenceAdded) {\n                            return obj;\n                        } else {\n                            obj.elementsIterated.push(absenceLog);\n                            if (obj[absence.get('user.id')] != null) {\n                                obj[absence.get('user.id')] += absence.get('dayamount') || 1;\n                            } else {\n                                obj[absence.get('user.id')] = absence.get('dayamount') || 1;\n                            }\n                            return obj;\n                        }\n                    },\n                    {\n                        elementsIterated: [],\n                    },\n                );\n            }\n            sumArray = [];\n            for (userId in sums) {\n                sum = sums[userId];\n                sumArray.push({\n                    user: store.peekRecord('user', userId),\n                    worktime: sum.wt,\n                    absence: sum.ab,\n                    workdays: workDays ? workDays[userId] : null,\n                    absentdays: absentDays ? absentDays[userId] : null,\n                });\n            }\n            return Ember.A(sumArray);\n        },\n    ),\n    userSums: Em.computed(\n        'date',\n        'filteredModel.@each.isSaving',\n        'filteredAbsences.@each.isSaving',\n        function () {\n            var absences, worktimes;\n            worktimes = this.get('filteredModel');\n            absences = this.get('filteredAbsences');\n            if (\n                worktimes.any((item) => {\n                    return item.get('isSaving') || item.get('isNew');\n                }) ||\n                absences.any((item) => {\n                    return item.get('isSaving') || item.get('isNew');\n                })\n            ) {\n                return;\n            }\n            if (Em.isPresent(this.get('user'))) {\n                //return @fetchSums()\n                return DS.PromiseObject.create({\n                    promise: this.fetchSums(),\n                });\n            }\n        },\n    ),\n    showWarning: Ember.computed('filteredModel', 'filteredAbsences', function () {\n        if (this.get('filteredModel.length') >= 100 || this.get('filteredAbsences.length') >= 100) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n    fetchSums: function () {\n        var abparams, c, filters, params;\n        c = this.get('Collector');\n        filters = this.get('filters');\n        params = {\n            groupBy: 'user',\n        };\n        abparams = {\n            groupBy: 'user',\n        };\n        filters.forEach((filter) => {\n            var split, v;\n            v = Ember.get(filter, 'value');\n            if (Ember.isPresent(v)) {\n                if (Ember.get(filter, 'field').includes('-')) {\n                    split = Ember.get(filter, 'field').split('-');\n                    if (Ember.isEmpty(params[split[0]])) {\n                        return (params[split[0]] = {\n                            [`${split[1]}`]: v,\n                        });\n                    }\n                } else {\n                    if (Ember.get(filter, 'field') === 'date') {\n                        abparams.startdate = v;\n                    } else if (c.fieldExists('abcense', Ember.get(filter, 'field'))) {\n                        abparams[Ember.get(filter, 'field')] = v;\n                    }\n                    if (c.fieldExists('worktime', Ember.get(filter, 'field'))) {\n                        return (params[Ember.get(filter, 'field')] = v);\n                    }\n                }\n            }\n        });\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var absences, worktimes;\n            if (c.testNeedsOne('worktime')) {\n                worktimes = this.get('Collector').ajax({\n                    url: 'worktimes',\n                    data: params,\n                });\n            }\n            if (\n                c.testNeedsOne('abcense') &&\n                (Ember.isEmpty(this.get('project')) || c.testNeedsOne('abcense.project'))\n            ) {\n                absences = this.get('Collector').ajax({\n                    url: 'abcenses',\n                    data: abparams,\n                });\n            }\n            return Ember.RSVP.Promise.all([worktimes, absences]).then((data) => {\n                var ret;\n                ret = {};\n                if (data[0]) {\n                    ret['worktimes'] = data[0]['worktimes'][0];\n                }\n                if (data[1]) {\n                    ret['absences'] = data[1]['abcenses'][0];\n                }\n                return resolve(ret);\n            });\n        });\n    },\n    skipSumFieldsWorktimes: ['id', 'user'],\n    skipSumFieldsAbsences: ['startdate', 'enddate', 'id', 'user'],\n    canAdd: function (type, date) {\n        /*\n         * If a month ends mid-week, the calendar will display empty\n         * squares with no date to fill out the rest of the row.\n         * The user is able to drag and drop worktime/absence records to these squares,\n         * which causes an error when attempting to save the record due to the missing date.\n         * Return early if the date is empty.\n         */\n        if (!date) return false;\n\n        var c;\n        if (type === 'worktime') {\n            c = this.get('Collector');\n            return c.canAddWorktime(date);\n        } else {\n            return true;\n        }\n    },\n    statusTypes: Em.computed('form', function () {\n        var c, field, intl, option, options;\n        if (!this.get('form')) {\n            return [];\n        }\n        c = this.get('Collector');\n        intl = this.get('intl');\n        field = c.field(this.get('form'), 'status');\n        options = (function () {\n            var i, len, ref, results;\n            ref = field.options;\n            results = [];\n            for (i = 0, len = ref.length; i < len; i++) {\n                option = ref[i];\n                if (intl.exists('status.' + option)) {\n                    results.push({\n                        id: option,\n                        name: intl.t('calendar.' + option + '_all_rows'),\n                    });\n                } else {\n                    results.push({\n                        id: option,\n                        name: intl.t('calendar.change_status') + option,\n                    });\n                }\n            }\n            return results;\n        })();\n        return options;\n    }),\n    saldosInUse: Ember.computed(function () {\n        return this.get('Collector').testNeeds(['products.saldo']);\n    }),\n    currentSaldo: Ember.computed(\n        'filteredModel.@each.isSaving',\n        'filteredAbsences.@each.isSaving',\n        function () {\n            return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n                promise: new Ember.RSVP.Promise((resolve) => {\n                    return this.get('Collector')\n                        .ttapi({\n                            url: 'saldo/get_saldo?userid=' + this.get('user'),\n                        })\n                        .then((back) => {\n                            return resolve({\n                                value: back['saldo'] / 60,\n                                from: back['from'],\n                                to: back['to'],\n                            });\n                        });\n                }),\n            });\n        },\n    ),\n    saldoList: Em.computed(\n        'date',\n        'filteredModel.@each.isSaving',\n        'filteredAbsences.@each.isSaving',\n        function () {\n            var saldoEnddate, saldoStartdate;\n            if (!this.get('Collector').testNeeds(['products.saldo'])) {\n                return;\n            }\n            saldoStartdate = this.get('date').split('_')[0];\n            saldoEnddate = this.get('date').split('_')[1];\n            return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n                promise: new Ember.RSVP.Promise((resolve) => {\n                    return this.get('Collector')\n                        .ttapi({\n                            url:\n                                'saldo/get_saldo_list?startdate=' +\n                                saldoStartdate +\n                                '&enddate=' +\n                                saldoEnddate +\n                                '&userid=' +\n                                this.get('user'),\n                        })\n                        .then((back) => {\n                            return resolve(back);\n                        });\n                }),\n            });\n        },\n    ),\n    actions: {\n        //filterChanged: (value, field) ->\n        //    return unless field\n        //    if field != 'date' && value && typeof(value) == \"object\"\n        //        value = value.get('id')\n        //    @set field, value\n        addNew: function (day, type) {\n            var params;\n            window.scrollTo(0, 0);\n            params = {};\n            if (type === 'abcense') {\n                params.startdate = day;\n                params.enddate = day;\n            } else {\n                params.date = day;\n            }\n            if (this.get('user')) {\n                params.user = this.get('store').peekRecord('user', this.get('user'));\n            }\n            if (this.get('project')) {\n                params.project = this.get('store').peekRecord('project', this.get('project'));\n            }\n            this.get('store').createRecord(type, params);\n            return this.transitionToRoute({\n                queryParams: {\n                    modal: [type, 'new'],\n                },\n            });\n        },\n        eventDropped: function (day, event) {\n            var c, dropped_record, id, model, record;\n            c = this.get('Collector');\n            [id, model] = event.split(':');\n            dropped_record = this.get('store').peekRecord(model, id);\n            if (dropped_record.get('date') === day || dropped_record.get('startdate') === day) {\n                return;\n            }\n            if (!this.canAdd(model, day)) {\n                this.get('dialogs').alert(this.get('intl').t('calendar.add.error.' + model));\n                return;\n            }\n            record = c.copyRecord(dropped_record);\n            Ember.set(record, 'row_info', {\n                privilege_edit: true,\n                privilege_remove: true,\n            });\n            if (model === 'abcense') {\n                record.set('startdate', day);\n                record.set('enddate', day);\n            } else {\n                record.set('date', day);\n            }\n            return this.save_record(record)\n                .then((row) => {\n                    return row.reload();\n                })\n                .catch((error) => {\n                    record.destroyRecord();\n                    return this.get('error').notify(error);\n                });\n        },\n        openEditor: function (row) {\n            var params;\n            window.scrollTo(0, 0);\n            params = [row.get('constructor.modelName'), row.get('id')];\n            if (row.get('row_info.privilege_remove') !== void 0 && !row.get('isEditable')) {\n                params.push('show');\n            }\n            return this.transitionToRoute({\n                queryParams: {\n                    modal: params,\n                },\n            });\n        },\n        remove: function (record) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('general.remove_row'))\n                .then(function (con) {\n                    if (con) {\n                        return record.destroyRecord();\n                    }\n                });\n        },\n        catchActions: function (action, params) {\n            var c, cols, fields;\n            if (action === 'fieldsUpdate') {\n                c = this.get('Collector');\n                cols = [];\n                params.forEach((col) => {\n                    return cols.push(col.ext);\n                });\n                fields = c.fieldArray(this.get('form'), cols);\n                return this.set('worktimeFields', fields);\n            }\n        },\n        userChanged: function (userid) {\n            return this.set('user', userid);\n        },\n        changeStatus: function (status) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('calendar.change_' + status + '_all_confirm'))\n                .then((con) => {\n                    var absences, filteredStartDate, intl, worktimes;\n                    if (con) {\n                        worktimes = this.get('filteredModel');\n                        absences = this.get('filteredAbsences');\n                        filteredStartDate = this.get('date').split('_')[0];\n                        absences = absences.filter((item) => {\n                            var endDate;\n                            endDate = item.enddate;\n                            return endDate >= filteredStartDate;\n                        });\n                        intl = this.get('intl');\n                        worktimes.forEach((worktime) => {\n                            worktime.set('status', status);\n                            return worktime.save().catch((e) => {\n                                var error_string;\n                                console.log(e);\n                                if (worktime.get('isError')) {\n                                    error_string = e.errors[0].error_msg;\n                                    if (\n                                        intl.exists(\n                                            'validation_error.' +\n                                                Ember.String.underscore(error_string),\n                                        )\n                                    ) {\n                                        error_string = intl.t(\n                                            'validation_error.' +\n                                                Ember.String.underscore(error_string),\n                                        );\n                                    } else if (\n                                        intl.exists('validation_error.' + e.errors[0].error)\n                                    ) {\n                                        error_string = intl.t(\n                                            'validation_error.' + e.errors[0].error,\n                                        );\n                                    }\n                                    this.get('notifications').error(error_string, {\n                                        autoClear: true,\n                                    });\n                                    return worktime.rollbackAttributes();\n                                }\n                            });\n                        });\n                        absences.forEach((absence) => {\n                            absence.set('status', status);\n                            return absence.save().catch((e) => {\n                                var error_string;\n                                if (absence.get('isError')) {\n                                    error_string = e.errors[0].error_msg;\n                                    if (\n                                        intl.exists(\n                                            'validation_error.' +\n                                                Ember.String.underscore(error_string),\n                                        )\n                                    ) {\n                                        error_string = intl.t(\n                                            'validation_error.' +\n                                                Ember.String.underscore(error_string),\n                                        );\n                                    } else if (\n                                        intl.exists('validation_error.' + e.errors[0].error)\n                                    ) {\n                                        error_string = intl.t(\n                                            'validation_error.' + e.errors[0].error,\n                                        );\n                                    }\n                                    this.get('notifications').error(error_string, {\n                                        autoClear: true,\n                                    });\n                                    return absence.rollbackAttributes();\n                                }\n                            });\n                        });\n                        if (\n                            status === 'approved' &&\n                            this.get('Collector').testNeeds(['products.vismanet||products.severa'])\n                        ) {\n                            return this.set('showFastExporter', true);\n                        }\n\n                        if (status === 'approved') this.surveys.initializeAndRun('row_approved'); // show wootric CES-survey after row approved\n                    }\n                });\n        },\n    },\n});\n\nexport default TimetrackerCalendarController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/calendar/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerCalendarRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport initRoute from '../../../mixins/init-route';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nimport { perDate } from 'tt4/utils/date-util';\n\nTimetrackerCalendarRoute = Ember.Route.extend(AuthenticatedRouteMixin, initRoute, {\n    Collector: Ember.inject.service('collector-service'),\n    ttapi: Ember.inject.service(),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        gantt: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        more: {\n            refreshModel: true,\n        },\n    },\n    more: null,\n    _getSideloadsWithExtras: function (form) {\n        var c = this.get('Collector');\n        var sideloads = c.getSideloads(form);\n        sideloads.push('user.image');\n        if (c.testNeedsOne('worktimegroup')) {\n            sideloads.push('user.worktimegroup');\n        }\n        return sideloads;\n    },\n    model: function (params) {\n        var abparams, c, param, split_date;\n        for (param in params) {\n            if (params[param] === null) {\n                delete params[param];\n            }\n        }\n        if (params.gantt) {\n            delete params.gantt;\n            if (!params.project) {\n                return [];\n            }\n            c = this.get('Collector');\n            params.sideload = this._getSideloadsWithExtras('worktime');\n            params.limit = 15;\n            if (params.page) {\n                params.offset = params.limit * (params.page - 1);\n                delete params.page;\n            }\n            return this.get('ttapi')\n                .request('api/project/users', {\n                    data: params,\n                })\n                .then((data) => {\n                    var promises;\n                    promises = [];\n                    this.get('store').pushPayload();\n                    delete params.limit;\n                    data.users.forEach((user) => {\n                        return promises.push(\n                            this.get('store')\n                                .query(\n                                    'worktime',\n                                    Object.assign(\n                                        {\n                                            user: Ember.get(user, 'id'),\n                                        },\n                                        params,\n                                    ),\n                                )\n                                .then((worktimes) => {\n                                    return Ember.Object.create({\n                                        main: user,\n                                        rows: perDate(worktimes),\n                                    });\n                                }),\n                        );\n                    });\n                    return Ember.RSVP.hash({\n                        response: data,\n                        data: Ember.RSVP.Promise.all(promises),\n                    });\n                });\n        } else {\n            delete params.gantt;\n            delete params.page;\n            c = this.get('Collector');\n            params.sideload = this._getSideloadsWithExtras('worktime');\n            if (params.startdate) {\n                params.order = 'startdate';\n            } else {\n                params.order = 'date';\n            }\n            //params.date = moment(split_date[0]).subtract(2, 'weeks').format('YYYY-MM-DD') + '_' + split_date[1]\n\n            //if service doesn't have employers, do not use it as query param\n            if (!this.get('Collector').testNeedsOne('worktime.employer')) {\n                delete params.employer;\n            }\n            // check if more-param is present, parse it correctly and finally remove it from params\n            if (params.more != null) {\n                params.more.split('|').forEach(function (param) {\n                    var split, splitted;\n                    splitted = param.split(':');\n                    if (splitted[0].includes('-')) {\n                        if (Ember.isPresent(splitted[1])) {\n                            split = splitted[0].split('-');\n                            if (Ember.isEmpty(params[split[0]])) {\n                                return (params[split[0]] = {\n                                    [`${split[1]}`]: splitted[1],\n                                });\n                            }\n                        }\n                    } else {\n                        return (params[splitted[0]] = splitted[1]);\n                    }\n                });\n                this.set('more', params.more);\n            } else {\n                this.set('more', null);\n            }\n            if (params != null && params['more']) {\n                delete params['more'];\n            }\n            this.store.query('worktime', params);\n            if (\n                this.get('Collector').testNeedsOne('abcense') &&\n                (Ember.isEmpty(params.project) ||\n                    this.get('Collector').testNeedsOne('abcense.project'))\n            ) {\n                abparams = Object.assign({}, params);\n                split_date = abparams.date.split('_');\n                for (param in abparams) {\n                    if (!c.fieldExists('abcense', param)) {\n                        delete abparams[param];\n                    }\n                }\n                abparams.startdate_enddate = split_date[0] + '_' + split_date[1];\n                abparams.sideload = this._getSideloadsWithExtras('abcense');\n                this.get('store').query('abcense', abparams);\n            }\n            return this.store.peekAll('worktime');\n        }\n    },\n    setupController: function (controller, model) {\n        this._super(controller, model);\n\n        // Ensure date parameter is set on controller\n        var currentParams = this.paramsFor('timetracker.calendar');\n        if (currentParams.date && !controller.get('date')) {\n            controller.set('date', currentParams.date);\n        }\n\n        if (this.get('more')) {\n            return this.get('more')\n                .split('|')\n                .forEach(function (param) {\n                    var splitted;\n                    splitted = param.split(':');\n                    return controller.set(splitted[0], splitted[1]);\n                });\n        }\n    },\n});\n\nexport default TimetrackerCalendarRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/calendar/saldo-info/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar timetrackerCalendarSaldoInfoComponent;\n\nimport Ember from 'ember';\n\ntimetrackerCalendarSaldoInfoComponent = Ember.Component.extend({\n    plus: Ember.computed('day_saldo', function () {\n        if (this.get('day_saldo') > 0) {\n            return '+';\n        }\n    }),\n    positiveornegative: Ember.computed('day_saldo', function () {\n        if (this.get('day_saldo') > 0) {\n            return 'positive';\n        }\n        if (this.get('day_saldo') < 0) {\n            return 'negative';\n        }\n        return '';\n    }),\n    day_saldo: Ember.computed('saldo', function () {\n        var saldo, saldoHours;\n        saldo = this.get('saldo');\n        saldoHours = saldo.saldo / 60;\n        if (saldo.cut) {\n            saldoHours -= saldo.cut / 60;\n        }\n        return saldoHours;\n    }),\n});\n\nexport default timetrackerCalendarSaldoInfoComponent;\n","export default Ember.HTMLBars.template({\"id\":\"kH+jYcdx\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n(\\\"],[1,[28,\\\"t\\\",[\\\"saldo.usersaldo\\\"],null],false],[0,\\\": \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[22,\\\"positiveornegative\\\"]],[8],[1,[22,\\\"plus\\\"],false],[1,[28,\\\"format-hours\\\",[[24,[\\\"day_saldo\\\"]]],null],false],[9],[0,\\\")\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/calendar/saldo-info/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"SaVWo3Cx\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\",\\\"index\\\",\\\"specialDay\\\",\\\"row\\\",\\\"row\\\",\\\"absenceSum\\\",\\\"worktimeSum\\\",\\\"calendar\\\",\\\"row\\\",\\\"cell\\\",\\\"title\\\",\\\"sum\\\",\\\"value\\\",\\\"key\\\",\\\"value\\\",\\\"key\\\",\\\"dd\\\",\\\"ddm\\\",\\\"type\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.rakentajanpaketti\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"x-toggle\\\",null,[[\\\"value\\\",\\\"theme\\\",\\\"onToggle\\\",\\\"offLabel\\\",\\\"onLabel\\\",\\\"showLabels\\\",\\\"size\\\"],[[24,[\\\"gantt\\\"]],\\\"light\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"gantt\\\"]]],null]],null],[28,\\\"concat\\\",[[28,\\\"t\\\",[\\\"timetracker.calendar.gantt.toggle\\\"],null],\\\"\\\"],null],\\\"\\\",true,\\\"large\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"gantt\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showWarning\\\"]]],null,{\\\"statements\\\":[[0,\\\"         \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.too_many_rows\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row calendar-user-selector-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!mobileView\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"user\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"not\\\",[[24,[\\\"do_not_show_user_selector\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"user-selector\\\",null,[[\\\"userid\\\",\\\"employerid\\\",\\\"userChanged\\\",\\\"limit\\\"],[[24,[\\\"user\\\"]],[24,[\\\"employer\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"userChanged\\\"],null],[24,[\\\"userSelectorLimit\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!worktime.status@readonly\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"calendar-singleuser-buttons\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group pull-left report-more\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\",\\\"approved\\\"]],[8],[1,[28,\\\"t\\\",[\\\"calendar.approve_all\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\\n                            \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[6,[23,17,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"  \\\"],[1,[28,\\\"t\\\",[\\\"report.more_button\\\"],null],false],[0,\\\"\\\\n                                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"],[6,[23,17,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"statusTypes\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[6,[23,18,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\",[23,19,[\\\"id\\\"]]]],[8],[1,[23,19,[\\\"name\\\"]],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[19]},null],[0,\\\"                                \\\"]],\\\"parameters\\\":[18]}],[0,\\\"\\\\n                            \\\"]],\\\"parameters\\\":[17]}],[0,\\\"\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-sm-offset-6\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"form-column-selector\\\",null,[[\\\"form\\\",\\\"shownColumns\\\",\\\"localStorageKey\\\",\\\"bubbleActions\\\"],[[24,[\\\"form\\\"]],[24,[\\\"shownColumns\\\"]],\\\"worktimecalendar_defaultColumns\\\",\\\"catchActions\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"gantt\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!mobileView\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"user\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"userSums\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"class\\\"],[\\\"loading-icon\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"calendar-sums-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.worktimes.sums\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"calendar-singleuser-sums worktime\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[24,[\\\"userSums\\\",\\\"worktimes\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,16,[]],[24,[\\\"skipSumFieldsWorktimes\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"singleuser-sum-col\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"h5\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"form\\\",\\\"field\\\"],[\\\"worktime\\\",[23,16,[]]]]],false],[9],[0,\\\": \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"worktime\\\",[23,16,[]],[23,15,[]]]]],false],[7,\\\"br\\\",true],[8],[9],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[15,16]},null],[4,\\\"if\\\",[[24,[\\\"saldosInUse\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"singleuser-sum-col\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"h5\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.usersaldo\\\"],null],false],[9],[0,\\\":\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentSaldo\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"currentSaldo\\\",\\\"value\\\"]]],null],false],[0,\\\" (\\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"currentSaldo\\\",\\\"from\\\"]],\\\"L\\\"],null],false],[0,\\\"-\\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"currentSaldo\\\",\\\"to\\\"]],\\\"L\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"calendar.absences.sums\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"calendar-singleuser-sums absence\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[24,[\\\"userSums\\\",\\\"absences\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,14,[]],[24,[\\\"skipSumFieldsAbsences\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"singleuser-sum-col\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"h5\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"form\\\",\\\"field\\\"],[\\\"abcense\\\",[23,14,[]]]]],false],[9],[0,\\\": \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"abcense\\\",[23,14,[]],[23,13,[]]]]],false],[7,\\\"br\\\",true],[8],[9],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[13,14]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"calendar-user-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sumsByUser\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"user-sum\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"user-icon2\\\",null,[[\\\"image\\\",\\\"user\\\"],[[23,12,[\\\"user\\\",\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]],[23,12,[\\\"user\\\"]]]]],false],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sum-amounts\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,12,[\\\"worktime\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"work_hours\\\",\\\"worktime\\\",[23,12,[\\\"worktime\\\"]]]]],false],[0,\\\"\\\\n                                            (\\\"],[1,[23,12,[\\\"workdays\\\"]],false],[1,[28,\\\"t\\\",[\\\"general.days\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                            -\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cup\\\"],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,12,[\\\"absence\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"absence_hours\\\",\\\"abcense\\\",[23,12,[\\\"absence\\\"]]]]],false],[0,\\\"\\\\n                                            (\\\"],[1,[23,12,[\\\"absentdays\\\"]],false],[1,[28,\\\"t\\\",[\\\"general.days\\\"],null],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                            -\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[12]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"gantt\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"timetracker.calendar.gantt.select_project\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"calendar-compact\\\",null,[[\\\"data\\\",\\\"range\\\"],[[24,[\\\"model\\\",\\\"data\\\"]],[24,[\\\"date\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[23,8,[\\\"months-header\\\"]],false],[0,\\\"\\\\n        \\\"],[1,[23,8,[\\\"weeks-header\\\"]],false],[0,\\\"\\\\n        \\\"],[1,[23,8,[\\\"days-header\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,8,[\\\"row\\\"]],\\\"expected `calendar.row` to be a contextual component but found a string. Did you mean `(component calendar.row)`? ('tt4/pods/timetracker/calendar/template.hbs' @ L157:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"title\\\"]],\\\"expected `row.title` to be a contextual component but found a string. Did you mean `(component row.title)`? ('tt4/pods/timetracker/calendar/template.hbs' @ L158:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"user-icon\\\",[[23,11,[\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],[[\\\"size\\\",\\\"inline\\\"],[\\\"sm\\\",true]]],false],[0,\\\" \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"user\\\",\\\"worktime\\\",[23,11,[\\\"id\\\"]]]]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[11]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,9,[\\\"cell\\\"]],\\\"expected `row.cell` to be a contextual component but found a string. Did you mean `(component row.cell)`? ('tt4/pods/timetracker/calendar/template.hbs' @ L161:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[23,10,[\\\"bar\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[10]},null]],\\\"parameters\\\":[9]},null]],\\\"parameters\\\":[8]},null],[0,\\\"\\\\n    \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"calendar-report\\\",null,[[\\\"hideDateRangePicker\\\",\\\"date\\\",\\\"user\\\"],[true,[24,[\\\"date\\\"]],[24,[\\\"user\\\"]]]],{\\\"statements\\\":[[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\",\\\"class\\\",\\\"tagName\\\",\\\"data-field\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"eventDropped\\\",[23,1,[]]],null],\\\"draggable-calendar-day\\\",\\\"div\\\",[23,1,[\\\"date\\\"]]]],{\\\"statements\\\":[[4,\\\"calendar-report-day\\\",null,[[\\\"day\\\",\\\"specialDay\\\"],[[23,1,[]],[23,3,[]]]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"calendar-report-add-options\\\",null,[[\\\"options\\\",\\\"date\\\",\\\"add\\\"],[[24,[\\\"addOptions\\\"]],[23,1,[]],[28,\\\"action\\\",[[23,0,[]],\\\"addNew\\\",[23,1,[]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"user\\\"]],[23,1,[]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime\\\"],null]],null,{\\\"statements\\\":[[4,\\\"calendar-card-sum\\\",null,[[\\\"model\\\",\\\"date\\\",\\\"fields\\\"],[[24,[\\\"filteredModel\\\"]],[23,1,[]],[28,\\\"hash\\\",null,[[\\\"hours\\\",\\\"date\\\"],[\\\"work_hours\\\",\\\"date\\\"]]]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"calendar-card-sum\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card-sum-col\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"format-hours\\\",[[23,7,[]],\\\"-\\\"],null],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"saldoList\\\"]],[23,1,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card-sum-col\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"timetracker/calendar/saldo-info\\\",null,[[\\\"saldo\\\"],[[28,\\\"get\\\",[[24,[\\\"saldoList\\\"]],[23,1,[]]],null]]]],false],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[4,\\\"calendar-card-sum\\\",null,[[\\\"model\\\",\\\"date\\\",\\\"fields\\\"],[[24,[\\\"filteredAbsencesOneDay\\\"]],[23,1,[]],[28,\\\"hash\\\",null,[[\\\"hours\\\",\\\"date\\\"],[\\\"absence_hours\\\",\\\"startdate\\\"]]]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cup\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"format-hours\\\",[[23,6,[]],\\\"-\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"calendar-card-multi-day\\\",null,[[\\\"index\\\",\\\"date\\\",\\\"data\\\",\\\"day\\\",\\\"fields\\\",\\\"date_field\\\",\\\"classNames\\\",\\\"randomColor\\\",\\\"onclick\\\",\\\"remove\\\"],[[23,2,[]],[24,[\\\"date\\\"]],[24,[\\\"filteredAbsencesManyDays\\\"]],[23,1,[]],[24,[\\\"multiDayAbsenceFields\\\"]],\\\"startdate\\\",\\\"multi-absence-calendar-card\\\",[24,[\\\"absenceColorFrom\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"openEditor\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"remove\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"calendar-card-v2\\\",null,[[\\\"boldFields\\\",\\\"data\\\",\\\"day\\\",\\\"date_field\\\",\\\"fields\\\",\\\"classNames\\\",\\\"topImage\\\",\\\"onclick\\\",\\\"remove\\\"],[\\\"work_hours\\\",[24,[\\\"filteredModel\\\"]],[23,1,[]],\\\"date\\\",[24,[\\\"worktimeFields\\\"]],\\\"worktime-calendar-card\\\",\\\"user-image\\\",[28,\\\"action\\\",[[23,0,[]],\\\"openEditor\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"remove\\\"],null]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[28,\\\"concat\\\",[[23,5,[\\\"id\\\"]],\\\":\\\",[23,5,[\\\"_internalModel\\\",\\\"modelName\\\"]]],null],\\\"draggable-calendar-day-item\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,5,[\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[5]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[4,\\\"calendar-card-v2\\\",null,[[\\\"boldFields\\\",\\\"data\\\",\\\"day\\\",\\\"fields\\\",\\\"date_field\\\",\\\"classNames\\\",\\\"topImage\\\",\\\"onclick\\\",\\\"remove\\\"],[\\\"absence_hours\\\",[24,[\\\"filteredAbsencesOneDay\\\"]],[23,1,[]],[24,[\\\"oneDayAbsenceFields\\\"]],\\\"startdate\\\",\\\"absence-calendar-card\\\",\\\"user-image\\\",[28,\\\"action\\\",[[23,0,[]],\\\"openEditor\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"remove\\\"],null]]],{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[28,\\\"concat\\\",[[23,4,[\\\"id\\\"]],\\\":\\\",[23,4,[\\\"_internalModel\\\",\\\"modelName\\\"]]],null],\\\"draggable-calendar-day-item\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,4,[\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2,3]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showFastExporter\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"fastexport.header\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showFastExporter\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"fast-exporter\\\",null,[[\\\"form\\\",\\\"date\\\",\\\"close\\\"],[[24,[\\\"form\\\"]],[24,[\\\"date\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showFastExporter\\\"]]],null],false],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/calendar/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/comp-report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CompReportController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport collector from '../../../classes/collector';\n\nCompReportController = GeneralReportController.extend({\n    queryParams: [\n        'user',\n        'employer',\n        'worktime_page',\n        'absence_page',\n        'project',\n        'group',\n        'status',\n        'absence_limit',\n        'worktime_limit',\n        'aborder',\n        'row_info_status',\n        'ab_row_info_status',\n    ],\n    gui: Ember.inject.service(),\n    exportFile: Ember.inject.service(),\n    worktime_page: 1,\n    absence_page: 1,\n    aborder: Ember.computed.alias('abcenseSettings.sortByColumn'),\n    row_info_status: Ember.computed.alias('settings.showStatus'),\n    ab_row_info_status: Ember.computed.alias('abcenseSettings.showStatus'),\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create(\n                {\n                    field: 'date',\n                    type: 'date',\n                    form: 'worktime',\n                },\n                {\n                    wagePeriods: true,\n                },\n            ),\n            Em.Object.create({\n                field: 'project',\n                form: 'worktime',\n            }),\n            Em.Object.create({\n                field: 'employer',\n                form: 'worktime',\n            }),\n            Em.Object.create({\n                field: 'user',\n                form: 'worktime',\n            }),\n            Em.Object.create({\n                field: 'group',\n                form: 'worktime',\n            }),\n        ]);\n    }),\n    date:\n        moment().startOf('month').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('month').format('YYYY-MM-DD'),\n    project: null,\n    employer: null,\n    settings: Em.Object.create({\n        massedit: true,\n        rowSettings: Em.Object.create({\n            editRoute: 'timetracker.edit',\n            historyRoute: 'timetracker.history',\n        }),\n    }),\n    init_functions: function () {\n        this._super();\n        return this.hideColumns();\n    },\n    abcenseSettings: Ember.computed('filters.@each.value', function () {\n        var abFilters, c, filters;\n        c = this.get('Collector');\n        filters = this.get('filters');\n        abFilters = Em.A([]);\n        filters.forEach(function (filter) {\n            var copy_filter;\n            if (filter.get('field') === 'date') {\n                copy_filter = Ember.Object.create({\n                    field: 'startdate',\n                    form: 'abcense',\n                    name: 'startdate',\n                    value: filter.get('value'),\n                });\n                return abFilters.pushObject(copy_filter);\n            } else if (c.fieldExists('abcense', filter.get('name'))) {\n                copy_filter = Ember.Object.create({\n                    field: filter.get('field'),\n                    form: 'abcense',\n                    name: filter.get('name'),\n                    value: filter.get('value'),\n                });\n                return abFilters.pushObject(copy_filter);\n            }\n        });\n        return Em.Object.create({\n            massedit: true,\n            limit: this.get('abcense_limit') || 25,\n            rowSettings: Em.Object.create({\n                editRoute: 'abcenses.edit',\n                historyRoute: {\n                    modal: true,\n                },\n            }),\n            filters: abFilters,\n        });\n    }),\n    hideColumns: function () {\n        var fields;\n        fields = collector.getFormObjects('worktime');\n        if (\n            fields.starttime.features.hide &&\n            fields.endtime.features.hide &&\n            fields.work_hours.features.mandatory\n        ) {\n            return this.set('settings.hideColumns', ['starttime', 'endtime']);\n        }\n    },\n    showColumnsWorktimes: ['project', 'user', 'date', 'status'],\n    showColumnsAbsences: ['abcensetype', 'user', 'startdate', 'status'],\n    users: Ember.computed('userSelector', 'userSelector2', function () {\n        var params, tmp_users;\n        tmp_users = Ember.A([\n            Ember.Object.create({\n                fullname: '',\n            }),\n        ]);\n        params = {};\n        params.sideload = true;\n        if (this.get('employer')) {\n            params.employer = this.get('employer');\n        }\n        params.form = 'worktime';\n        params.field = 'user';\n        params.limit = 'all'; // just get all users, this is only used for user-select in filter so we need to get all users, not just 100 first\n        this.store.query('user', params).then((users) => {\n            var userid;\n            users.forEach(function (user) {\n                user.set('fullname', user.get('firstname') + ' ' + user.get('lastname'));\n                return tmp_users.pushObject(user);\n            });\n            //use first user as query parameter\n            userid = tmp_users.objectAt(0)['id'];\n            return this.set('user', userid);\n        });\n        return tmp_users;\n    }),\n    // filters\n    userSelector2: true, // show custom user-selector\n    //userSelector: true # show custom user-selector\n    //    employerSelector: true\n    //dateSelector: true\n    filterToggler: true, // show button to toggle filters visibility on/off\n    status: 'all',\n    filterValues: Ember.computed('filters.@each.value', function () {\n        var filterVals, filters;\n        filters = this.get('filters');\n        filterVals = [];\n        filters.forEach(function (filter) {\n            if (filter.get('value')) {\n                return filterVals.push(filter.get('name') + '=' + filter.get('value'));\n            }\n        });\n        return filterVals;\n    }),\n    pdfColumns: Ember.computed('absencePdfColumns.[]', 'worktimePdfColumns.[]', function () {\n        var absence, worktime;\n        worktime = [];\n        if (this.get('worktimePdfColumns')) {\n            this.get('worktimePdfColumns').forEach(function (column) {\n                return worktime.push(column.ext);\n            });\n        }\n        absence = [];\n        if (this.get('absencePdfColumns')) {\n            this.get('absencePdfColumns').forEach(function (column) {\n                return absence.push(column.ext);\n            });\n        }\n        return { worktime, absence };\n    }),\n    actions: {\n        export_pdf: function () {\n            var columns, params;\n            params = this.get('filterValues');\n            columns = this.get('pdfColumns');\n            this.set('showPDFLoader', true);\n            return this.get('Collector')\n                .ttapi({\n                    dataType: 'text',\n                    data: {\n                        absenceColumns: JSON.stringify(columns.absence),\n                        worktimeColumns: JSON.stringify(columns.worktime),\n                        lang: moment.locale(),\n                    },\n                    url:\n                        'pdf/comboreport?type=base64&limit=all&__paper=A4-L' +\n                        (params.length > 0 ? '&' + params.join('&') : ''),\n                })\n                .then((data) => {\n                    this.set('showPDFLoader', false);\n                    return this.get('exportFile').exportFile(data, 'export', 'pdf', true);\n                });\n        },\n        filterChanged: function () {\n            this.set('worktime_page', 1);\n            return this.set('absence_page', 1);\n        },\n        setRowsPerPage: function (form, limit) {\n            //key = @get('defaultLimitKey')\n            this.set(form + '_page', 1);\n            return this.set(form + '_limit', limit);\n        },\n        //@get('localStorageWrapper').setUserSetting key, limit\n        setNewColumns: function (columns, form) {\n            if (form === 'worktime') {\n                return this.set('worktimePdfColumns', columns);\n            } else {\n                return this.set('absencePdfColumns', columns);\n            }\n        },\n    },\n});\n\nexport default CompReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/comp-report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CompReportRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nimport $ from 'jquery';\n\nCompReportRoute = GeneralReportRoute.extend({\n    localStorageWrapper: Ember.inject.service(),\n    // add new query-params if needed\n    queryParams: {\n        user: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        worktime_page: {\n            refreshModel: true,\n        },\n        absence_page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        worktime_limit: {\n            refreshModel: true,\n        },\n        absence_limit: {\n            refreshModel: true,\n        },\n        aborder: {\n            refreshModel: true,\n        },\n        row_info_status: {\n            refreshModel: true,\n        },\n        ab_row_info_status: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var ab_params, general_params, param, worktime_params;\n        params = this._super(params);\n        //params.sideload = true\n        //params.limit = 25\n        general_params = {};\n        // used by both reports\n        //general_params.limit = params.limit\n        //general_params.offset = params.offset\n        if (params) {\n            for (param in params) {\n                if (params[param] === 'null' || params[param] === 'undefined') {\n                    delete params[param];\n                }\n            }\n        }\n        worktime_params = {};\n        ab_params = {};\n        if (params.wage_period) {\n            params.date = params.wage_period;\n        }\n        if (!params.worktime_limit) {\n            params.worktime_limit = this.get('localStorageWrapper').getUserSetting(\n                'comp-report.worktime_defaultLimit',\n            );\n        }\n        if (Array.isArray(params.worktime_limit)) {\n            params.worktime_limit = 25; // sometimes ls contains [] ... and it causes an error that offset is always 0\n        }\n        worktime_params.date = params.date;\n        worktime_params.user = params.user;\n        worktime_params.group = params.group;\n        worktime_params.status = params.status;\n        worktime_params.order = params.order;\n        worktime_params.limit = params.worktime_limit || params.limit;\n        if (params.employer) {\n            worktime_params.employer = params.employer;\n        }\n        worktime_params.sideload = true;\n        worktime_params.offset =\n            (params.worktime_page - 1) * (params.worktime_limit || params.limit);\n        if (params.project) {\n            worktime_params.project = params.project;\n        }\n        //worktime_params.offset = true\n        worktime_params.row_info_status = params.row_info_status;\n        worktime_params = $.extend({}, worktime_params, general_params);\n        if (!params.absence_limit) {\n            params.absence_limit = this.get('localStorageWrapper').getUserSetting(\n                'comp-report.absences_defaultLimit',\n            );\n        }\n        if (Array.isArray(params.absence_limit)) {\n            params.absence_limit = 25; // sometimes ls contains [] ... and it causes an error that offset is always 0\n        }\n        ab_params['startdate_enddate'] = params.date;\n        ab_params.user = params.user;\n        ab_params.sideload = true;\n        ab_params.offset = (params.absence_page - 1) * (params.absence_limit || params.limit);\n        ab_params.group = params.group;\n        ab_params.status = params.status;\n        ab_params.limit = params.absence_limit || params.limit;\n        if (params.employer && this.get('Collector').fieldExists('abcense', 'employer')) {\n            ab_params.employer = params.employer;\n        }\n        if (params.project && this.get('Collector').fieldExists('abcense', 'project')) {\n            ab_params.project = params.project;\n        }\n        ab_params.order = params.aborder;\n        ab_params.row_info_status = params.ab_row_info_status;\n        ab_params = $.extend({}, ab_params, general_params);\n        return Ember.RSVP.hash({\n            worktimes: this.store.query('worktime', worktime_params),\n            absences: this.store.query('abcense', ab_params),\n        });\n    },\n    actions: {\n        willTransition: function (transition) {\n            if (\n                transition.targetName === 'timetracker.edit' ||\n                transition.targetName === 'abcenses.edit'\n            ) {\n                return this.transitionTo(transition.targetName).then((newRoute) => {\n                    return newRoute.controller.set('afterSave', 'timetracker.comp-report');\n                });\n            }\n        },\n    },\n});\n\nexport default CompReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Imi2cB6p\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"userSelector2\\\",\\\"users\\\",\\\"user\\\",\\\"employer\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"worktime\\\",true,[24,[\\\"users\\\"]],[24,[\\\"user\\\"]],[24,[\\\"employer\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dropdown btn-group pull-right\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"btn btn-secondary dropdown-toggler btn-secondary\\\"],[12,\\\"role\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showPDFLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PDF-2Filled\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"customFullScreen\\\"]],\\\"report-main-zoomed\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.worktimes\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\",\\\"localStorageKey\\\",\\\"fullscreenmode\\\",\\\"bubbleSetRowsPerPage\\\",\\\"showColumnsChanged\\\"],[\\\"bubbleTransition\\\",\\\"worktime\\\",[24,[\\\"model\\\",\\\"worktimes\\\"]],[24,[\\\"showColumnsWorktimes\\\"]],[24,[\\\"worktime_page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]],\\\"comp-report.worktime\\\",\\\"custom\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",\\\"worktime\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setNewColumns\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"h1\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.absences\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\",\\\"localStorageKey\\\",\\\"fullscreenmode\\\",\\\"bubbleSetRowsPerPage\\\",\\\"showColumnsChanged\\\"],[\\\"bubbleTransition\\\",\\\"abcense\\\",[24,[\\\"model\\\",\\\"absences\\\"]],[24,[\\\"showColumnsAbsences\\\"]],[24,[\\\"absence_page\\\"]],[24,[\\\"abcenseSettings\\\"]],[24,[\\\"status\\\"]],\\\"comp-report.absences\\\",\\\"custom\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",\\\"absence\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setNewColumns\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/comp-report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorktimeEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nimport collector from '../../../classes/collector';\n\nWorktimeEditController = GeneralAddController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    flags: Ember.inject.service(),\n    useFormAdd: Ember.computed(function () {\n        return this.get('flags').test('form-add');\n    }),\n    useNewVersion: Ember.computed(function () {\n        return this.get('Collector').testNeeds(['products.multitasking']) || this.get('useFormAdd');\n    }),\n    editNewLink: 'timetracker.edit',\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n    init: function () {\n        var cust;\n        this._super();\n        cust = {};\n        if (this.get('Collector').testNeedsOne('products.timetracker_km_automatic')) {\n            cust.km = {\n                template: 'timetracker/add/km_auto',\n            };\n            return this.set('customization', cust);\n        }\n    },\n    actions: {\n        goBack: () => {\n            return window.history.back(-1);\n        },\n    },\n});\n\nexport default WorktimeEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorktimeEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nWorktimeEditRoute = GeneralAddRoute.extend({\n    modelName: 'worktime',\n    controllerName: 'timetracker/edit',\n    edit: true,\n    //    model: (params) ->\n    //        @store.findRecord(@get('modelName'), params.id)\n    savedRoute: 'timetracker.addsaved',\n    beforeModel: function (transition) {\n        this._super();\n        if (transition.from && transition.from.name === 'timetracker.comp-report') {\n            return this.set('afterSave', 'timetracker.comp-report');\n        } else if (transition.from && transition.from.name === 'timetracker.aggregated.rows') {\n            return this.set('afterSave', {\n                route: 'timetracker.aggregated.rows',\n                params: transition.from.params.date,\n            });\n        } else {\n            if (this.get('Collector').testNeeds(['mobileView', 'userlevel=1'])) {\n                return this.set('afterSave', 'timetracker.week-report');\n            } else {\n                return this.set('afterSave', 'timetracker.worktime-list');\n            }\n        }\n    },\n    actions: {\n        afterSave: function () {\n            return this.transitionTo(this.get('afterSave'));\n        },\n    },\n});\n\nexport default WorktimeEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"C/5sf3/4\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"useNewVersion\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"gps-icon\\\",null,[[\\\"position\\\"],[\\\"left\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.worktime\\\"],null],false],[9],[9],[0,\\\"\\\\n        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"timetracker.week-report\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"useFormAdd\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/form-add/forms/worktime\\\",null,[[\\\"record\\\",\\\"close\\\"],[[24,[\\\"model\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"goBack\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/add-modal/worktime\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"cancelClicked\\\",\\\"recordSaved\\\"],[\\\"worktime\\\",[24,[\\\"model\\\",\\\"id\\\"]],\\\"afterSave\\\",\\\"afterSave\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/employer-sums/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerEmployerSumsController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nTimetrackerEmployerSumsController = GeneralReportController.extend({\n    showColumns: ['employer', 'work_hours'],\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'date',\n                form: 'worktime',\n                type: 'date',\n                value: this.get('date'),\n                wagePeriods: true,\n            }),\n            Em.Object.create({\n                field: 'project',\n                form: 'worktime',\n                value: this.get('project'),\n            }),\n        ]);\n    }),\n    form: 'worktime',\n    date:\n        moment().startOf('month').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    queryParams: ['project', 'page', 'date'],\n    project: null,\n    page: null,\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n            hideCheckbox: true,\n        }),\n    }),\n    actions: {\n        filterChanged: function (value, field) {\n            return this.set(field, value);\n        },\n    },\n});\n\nexport default TimetrackerEmployerSumsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/employer-sums/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerEmployerSumsRoute;\n\nimport Ember from 'ember';\n\nTimetrackerEmployerSumsRoute = Ember.Route.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n            replace: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var self;\n        //params = @._super(params)\n        self = this;\n        //params.sideload = true\n        //params.user='self' # get only own worktimes\n        delete params.page;\n        if (params.project === null) {\n            delete params.project;\n        }\n        //        params.date =\n        params.groupBy = 'employer';\n        return this.Collector.cget('worktime', params, true);\n    },\n});\n\nexport default TimetrackerEmployerSumsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"G12DJgPf\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"worktime\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"type\\\",\\\"localStorageKey\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",\\\"worktime\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],\\\"group\\\",\\\"employer_sums\\\",[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/employer-sums/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerHistoryRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nTimetrackerHistoryRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default TimetrackerHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"ASUrvr1n\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"worktime\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/history/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"kb7P3Zo5\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/realtime/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerRealtimeController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport collector from '../../../classes/collector';\n\nTimetrackerRealtimeController = GeneralReportController.extend({\n    showColumns: ['user', 'user.taxnumber', 'user.personid', 'project', 'starttime', 'date'],\n    filters: Em.A([\n        Em.Object.create({\n            field: 'project',\n        }),\n    ]),\n    form: 'worktime',\n    queryParams: ['page', 'project', 'user', 'employer'],\n    project: null,\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: 'timetracker.edit',\n            historyRoute: 'timetracker.history',\n            hideCheckbox: true,\n        }),\n    }),\n    init_functions: function () {\n        this._super();\n        return this.hideColumns();\n    },\n    hideColumns: function () {\n        var fields;\n        fields = collector.getFormObjects('worktime');\n        if (\n            fields.starttime.features.hide &&\n            fields.endtime.features.hide &&\n            fields.work_hours.features.mandatory\n        ) {\n            return this.set('settings.hideColumns', ['starttime', 'endtime']);\n        }\n    },\n});\n\nexport default TimetrackerRealtimeController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/realtime/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerRealtimeRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nimport collector from '../../../classes/collector';\n\nTimetrackerRealtimeRoute = GeneralReportRoute.extend({\n    form: 'worktime',\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n            replace: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        params.endtime = '(empty)';\n        params.date =\n            moment().subtract(1, 'days').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD');\n        if (!params.order) {\n            params.order = 'date-,starttime-';\n        }\n        return this.store.query('worktime', params);\n    },\n});\n\nexport default TimetrackerRealtimeRoute;\n","export default Ember.HTMLBars.template({\"id\":\"qSWHkbuf\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"worktime\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"localStorageKey\\\"],[\\\"bubbleTransition\\\",\\\"worktime\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],\\\"worktime-realtime\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/realtime/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nTimetrackerRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    Collector: Ember.inject.service('collector-service'),\n    beforeModel: function (transition) {\n        if (\n            transition.targetName === 'timetracker.worktime-list' &&\n            this.get('Collector').testNeeds(['mobileView', 'userlevel=1'])\n        ) {\n            this.transitionTo('timetracker.week-report');\n        }\n        return this._super(transition);\n    },\n});\n\nexport default TimetrackerRoute;\n","import Controller from '@ember/controller';\nimport { get, set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    queryParams: ['user', 'date'],\n\n    user: null,\n    date: null,\n\n    init() {\n        this._super(...arguments);\n        if (!get(this, 'date')) {\n            set(\n                this,\n                'date',\n                moment().startOf('isoWeek').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().endOf('isoWeek').format('YYYY-MM-DD'),\n            );\n        }\n    },\n\n    dummy: alias('model'),\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"w+MbBD+3\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"route-worktime-salary-category\\\",null,[[\\\"user\\\",\\\"date\\\"],[[28,\\\"mut\\\",[[24,[\\\"user\\\"]]],null],[28,\\\"mut\\\",[[24,[\\\"date\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/salary-category/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/saved/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar savedController;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nsavedController = Ember.Controller.extend({\n    //    needs: ['timetracker/timecard']\n    timecardController: Ember.inject.controller('timetracker/timecard'),\n    commentSaved: false,\n    actions: {\n        saveComment: function () {\n            var self, worktime;\n            self = this;\n            worktime = this.get('model');\n            return worktime.save().then(function () {\n                return self.set('commentSaved', true);\n            });\n        },\n    },\n});\n\nexport default savedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/saved/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SavedRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSavedRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    actions: {\n        willTransition: function () {\n            this.controllerFor('timetracker/timecard').set('isTogglerVisible', false);\n            this.controllerFor('timetracker/timecard').set('started_worktime', false);\n            return this.controllerFor('timetracker/timecard').set('worktimeDuration', '00:00:00');\n        },\n    },\n});\n\nexport default SavedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Jr1Ggrc7\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.saved.title\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.project\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"content\\\",\\\"project\\\",\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[24,[\\\"content\\\",\\\"project\\\",\\\"name\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"timecard.no_project\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.work_hours\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"content\\\",\\\"work_hours\\\"]]],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.starttime\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"content\\\",\\\"starttime\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.endtime\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"content\\\",\\\"endtime\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"commentSaved\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.description\\\"],null],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[24,[\\\"content\\\",\\\"description\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"commentSaved\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.description\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\",\\\"placeholderTranslation\\\"],[\\\"3\\\",\\\"form-control\\\",[24,[\\\"description\\\"]],[24,[\\\"content\\\",\\\"description\\\"]],\\\"workday.field.comment\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"commentSaved\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveComment\\\"]],[8],[1,[28,\\\"t\\\",[\\\"timecard.save_comment\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"timetracker.timecard\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"timecard.start_new\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/saved/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/timecard/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimecardAddController;\n\nimport Ember from 'ember';\n\nimport collector from '../../../../classes/collector';\n\nimport FormatUtil from '../../../../utils/format';\n\nimport config from '../../../../config/environment';\n\nimport { copy } from 'ember-copy';\n\nimport $ from 'jquery';\n\nimport { captureException } from '@sentry/browser';\n\nTimecardAddController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    sessionhelper: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    Google: Ember.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    gps: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    notifications: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    clock: Ember.inject.service('timecard-clock'),\n    currentDate: null,\n    currentTime: null,\n    isTogglerVisible: false,\n    validForm: true,\n    refreshing: false,\n    dayStart: '---',\n    custom_projects: Em.A([]),\n    force_location: Ember.computed('openWorktime.project.force_location', function () {\n        if (!this.get('Collector').fieldExists('project', 'force_location')) {\n            return false;\n        }\n        if (this.get('openWorktime.project.force_location') === void 0) {\n            // The project hasn't loaded this field at all so we keep it as 'forced' until everything is loaded\n            return true;\n        }\n        return (\n            this.get('openWorktime.project.force_location') &&\n            Ember.isPresent(this.get('openWorktime.project.location_map'))\n        );\n    }),\n    totalWorkHours: '00:00',\n    totalWorkRaw: 0,\n    init: function () {\n        this._super(...arguments);\n        this.checkMandatoryFields();\n        this.resume();\n        //@updateTimeProperty()\n        if (collector.forms.worktime.objects.project.features.mandatory) {\n            this.set('projectIsMandatory', true);\n        }\n        return this.clock; //ember lazily loads injections, so this needs to be called somehow somewhere to get the clock ticking\n    },\n    resume: function () {\n        return this.get('sessionhelper').on('resumed', () => {\n            return this.onresume();\n        });\n    },\n    onresume: function () {\n        var create_new, self;\n        self = this;\n        create_new = true;\n        this.set('refreshing', true);\n        return this.get('store')\n            .query('worktime', {\n                date:\n                    moment().subtract(1, 'day').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD'),\n                user: 'self',\n                sideload: true,\n                order: 'date-,endtime-',\n            })\n            .then(function (data) {\n                var project, task, unsavedRecords, worktime;\n                self.set('refreshing', false);\n                if (data.get('firstObject')) {\n                    data.forEach(function (worktime) {\n                        if (!worktime.get('endtime')) {\n                            create_new = false;\n                            self.get('store').findRecord('project', worktime.get('project.id'), {\n                                reload: true,\n                            });\n                            self.set('openWorktime', worktime);\n                            return self.notifyPropertyChange('isForcedAndNotCloseEnough');\n                        }\n                    });\n                }\n                if (create_new) {\n                    unsavedRecords = self.get('store').peekAll('worktime').filterBy('isNew');\n                    if (unsavedRecords.length > 0) {\n                        worktime = unsavedRecords[0];\n                    } else {\n                        worktime = self.store.createRecord('worktime', {\n                            on_worksite: true,\n                        });\n                    }\n                    project = self.get('localStorageWrapper').getUserSetting('project');\n                    if (self.get('session.currentUser.currentMySite')) {\n                        project = self.get('session.currentUser.currentMySite.id');\n                    }\n                    if (project && Ember.typeOf(project) !== 'array') {\n                        self.store.findRecord('project', project).then(function (record) {\n                            return worktime.set('project', record);\n                        });\n                    }\n                    if (self.get('Collector').testNeeds(['worktime.task'])) {\n                        task = self.get('localStorageWrapper').getUserSetting('task');\n                        if (task && Ember.typeOf(task) !== 'array') {\n                            self.store.findRecord('task', task).then(function (record) {\n                                return worktime.set('task', record);\n                            });\n                        }\n                    }\n                    self.set('openWorktime', worktime);\n                    self.set('newWorktime', worktime);\n                    return self.set('started_worktime', false);\n                }\n            });\n    },\n    //data.get('content').push(worktime)\n    worktimeDuration: Ember.computed('clock.time', function () {\n        var clockedTime, diff, h, m, s, start;\n        if (\n            this.get('started_worktime') ||\n            (this.get('openWorktime') != null && this.get('openWorktime').get('starttime'))\n        ) {\n            if (this.get('started_worktime')) {\n                start = moment(this.get('started_worktime'));\n            } else {\n                start = moment(\n                    this.get('openWorktime').get('date') +\n                        ' ' +\n                        this.get('openWorktime').get('starttime'),\n                );\n            }\n            diff = moment().diff(start, 'seconds');\n            //if diff < 0 then return \"00:00:00\"\n            h = parseInt(diff / 3600) % 24;\n            m = parseInt(diff / 60) % 60;\n            s = diff % 60;\n            if (diff < 0) {\n                m = Math.abs(m);\n                s = Math.abs(s);\n                h = Math.abs(h);\n            }\n            if (h < 10) {\n                h = '0' + h;\n            }\n            if (m < 10) {\n                m = '0' + m;\n            }\n            if (s < 10) {\n                s = '0' + s;\n            }\n            clockedTime = diff < 0 ? '-' + h + ':' + m + ':' + s : h + ':' + m + ':' + s;\n            this.calculateTotalWorkingTime(diff);\n            return clockedTime;\n        } else {\n            return '00:00:00';\n        }\n    }),\n    calculateTotalWorkingTime: function (seconds) {\n        var tmp_totalwork, tmp_totalwork_hours, tmp_totalwork_mins, totalWorkHours;\n        //calculate total workingtime\n        tmp_totalwork = seconds / 3600 + this.get('totalWorkRaw'); // as hours\n        tmp_totalwork_hours = Math.floor(tmp_totalwork);\n        tmp_totalwork_mins = Math.floor((tmp_totalwork - tmp_totalwork_hours) * 60);\n        if (tmp_totalwork < 0) {\n            tmp_totalwork_hours = Math.abs(tmp_totalwork_hours);\n            tmp_totalwork_mins = Math.abs(tmp_totalwork_mins);\n        }\n        if (tmp_totalwork_hours < 10) {\n            tmp_totalwork_hours = '0' + tmp_totalwork_hours;\n        }\n        if (tmp_totalwork_mins < 10) {\n            tmp_totalwork_mins = '0' + tmp_totalwork_mins;\n        }\n        totalWorkHours =\n            tmp_totalwork < 0\n                ? '-' + tmp_totalwork_hours + ':' + tmp_totalwork_mins\n                : tmp_totalwork_hours + ':' + tmp_totalwork_mins;\n        return this.set('totalWorkHours', totalWorkHours);\n    },\n    setMySitesProject: function () {\n        if (this.get('session.currentUser.currentMySite') && !this.get('openWorktime.id')) {\n            return this.set('openWorktime.project', this.get('session.currentUser.currentMySite'));\n        } else if (\n            this.get('session.currentUser.currentMySite') &&\n            this.get('session.currentUser.currentMySite') !== this.get('openWorktime.project')\n        ) {\n            return this.get('notifications').warning(\n                this.get('intl').t('timetracker.timecard.already_started_other_project'),\n                {\n                    autoClear: true,\n                },\n            );\n        }\n    },\n    projectField: Ember.computed('openWorktime.project', function () {\n        var field;\n        field = this.get('Collector').fieldArray('worktime', ['project'])[0];\n        field.value = this.get('openWorktime.project.id');\n        return field;\n    }),\n    currentMySiteTooFar: Ember.computed(\n        'gps.lockedLatitude',\n        'gps.lockedLongitude',\n        'session.currentUser.currentMySite.location_map',\n        'session.currentUser.currentMySite.force_location',\n        function () {\n            var loc, projLoc;\n            if (\n                !this.get('session.currentUser.currentMySite') ||\n                !this.get('session.currentUser.currentMySite.location_map') ||\n                !this.get('session.currentUser.currentMySite.force_location')\n            ) {\n                return;\n            }\n            loc = this.get('session.currentUser.currentMySite.location_map');\n            projLoc = JSON.parse(loc);\n            if (\n                !this.get('gps').withinAcceptedDistance(\n                    {\n                        lat: projLoc.latitude,\n                        lon: projLoc.longitude,\n                    },\n                    {\n                        lat: this.get('gps.lockedLatitude'),\n                        lon: this.get('gps.lockedLongitude'),\n                    },\n                )\n            ) {\n                Ember.run.next(this, () => {\n                    return this.set('openWorktime.project', null);\n                });\n                return true;\n            }\n        },\n    ),\n    sortProperties: ['date:desc', 'starttime:asc'],\n    sortedModel: Ember.computed.sort('model', 'sortProperties'),\n    WorkHoursObs: function () {\n        var hours, mins, sorted_model, total;\n        if (this.get('model').get('firstObject')) {\n            sorted_model = this.get('sortedModel');\n            if (sorted_model.get('firstObject').get('starttime')) {\n                this.set('dayStart', sorted_model.get('firstObject').get('starttime'));\n            }\n            total = 0;\n            this.get('model').forEach(function (worktime) {\n                if (\n                    worktime.get('work_hours') &&\n                    worktime.get('date') === moment().format('YYYY-MM-DD')\n                ) {\n                    return (total = total + worktime.get('work_hours'));\n                }\n            });\n            if (total > 0) {\n                hours = parseInt(total);\n                mins = Math.round((total - hours) * 60);\n                if (mins < 10) {\n                    mins = '0' + mins;\n                }\n                if (hours < 10) {\n                    hours = '0' + hours;\n                }\n                this.set('totalWorkRaw', total);\n                return this.set('totalWorkHours', hours + ':' + mins);\n            }\n        }\n    }.observes('model'),\n    isForcedAndNotCloseEnough: Ember.computed(\n        'openWorktime.project',\n        'force_location',\n        'gps.lockedLongitude',\n        'gps.lockedLatitude',\n        function () {\n            var gps, projLoc, project;\n            project = this.get('openWorktime.project');\n            if (!project) {\n                return;\n            }\n            if (this.get('force_location') && project.get('location_map')) {\n                gps = this.get('gps');\n                projLoc = JSON.parse(project.get('location_map'));\n                if (\n                    gps.withinAcceptedDistance(\n                        {\n                            lat: projLoc.latitude,\n                            lon: projLoc.longitude,\n                        },\n                        {\n                            lat: gps.get('lockedLatitude'),\n                            lon: gps.get('lockedLongitude'),\n                        },\n                    )\n                ) {\n                    return false;\n                }\n                return true;\n            } else if (this.get('force_location') && !project.get('location_map')) {\n                return true;\n            }\n            return false;\n        },\n    ),\n    latlng: Ember.computed(\n        'gps.lockedLatitude',\n        'gps.lockedLongitude',\n        'gps.currentAccuracy',\n        function () {\n            return {\n                lat: this.get('gps.lockedLatitude'),\n                lng: this.get('gps.lockedLongitude'),\n                accuracy: this.get('gps.currentAccuracy'),\n            };\n        },\n    ),\n    projectMarker: Ember.computed('openWorktime.project.location_map', function () {\n        var projLoc;\n        if (this.get('openWorktime.project.location_map')) {\n            projLoc = JSON.parse(this.get('openWorktime.project.location_map'));\n            return [\n                {\n                    position: {\n                        lat: projLoc.latitude,\n                        lng: projLoc.longitude,\n                        accuracy: this.get('customerSettings').checkSetting('gps_distance') || 700,\n                    },\n                    title: this.get('openWorktime.project.name'),\n                },\n            ];\n        } else {\n            return [];\n        }\n    }),\n    projectMissing: Ember.computed('openWorktime.project', function () {\n        var project;\n        project = this.get('openWorktime.project');\n        if (\n            collector.forms.worktime.objects.project.features.mandatory &&\n            !this.get('openWorktime.project.id')\n        ) {\n            return true;\n        } else {\n            return false;\n        }\n    }),\n    loading: true,\n    validation: null,\n    checkMandatoryFields: function () {\n        var self;\n        self = this;\n        return $.each(collector.forms.worktime.objects, function (field, settings) {\n            if (settings.features.mandatory && field !== 'project' && field !== 'user') {\n                return self.set('validForm', false);\n            }\n        });\n    },\n    location: Ember.computed(function () {\n        return this.get('Collector').fieldExists('worktime', 'location');\n    }),\n    hasError: Ember.computed(function () {\n        var error_types, errors;\n        errors = collector.getErrors('worktime');\n        error_types = this.Collector.parseFormErrors(errors);\n        this.set('errorMessages', error_types);\n        if (errors) {\n            return true;\n        }\n        return false;\n    }),\n    calcAutoKm: Em.computed(function () {\n        if (this.get('Collector').testNeedsOne('products.timetracker_km_automatic')) {\n            return true;\n        }\n    }),\n    showEndLocation: Em.computed(function () {\n        return this.get('Collector').fieldExists('worktime', 'end_location');\n    }),\n    showTasks: Em.computed(function () {\n        return (\n            this.get('Collector').fieldExists('worktime', 'task') &&\n            !this.get('taskField.features.hide')\n        );\n    }),\n    taskField: Ember.computed('openWorktime.project', function () {\n        var field;\n        //return if !@get('showTasks')\n        field = this.get('Collector').fieldArray('worktime', ['task'])[0];\n        field.value = this.get('openWorktime.task.id');\n        return field;\n    }),\n    commentField: Ember.computed('openWorktime.description', function () {\n        var field;\n        field = this.get('Collector').fieldArray('worktime', ['description'])[0];\n        field.value = this.get('openWorktime.description');\n        return field;\n    }),\n    showExtrainfoModal: false,\n    modalFields: Em.computed('openWorktime', function () {\n        var c, fields, form, record, retFields;\n        c = this.get('Collector');\n        form = 'worktime';\n        record = this.get('openWorktime');\n        if (!record) {\n            return;\n        }\n        fields = c.fieldArray(form);\n        retFields = [];\n        // Fetch form fields with collector service\n        fields.forEach((field) => {\n            var db_record, ref, ref1, user_address, value_from_ls;\n            if (field.features.stashed) {\n                return false;\n            }\n            if (\n                (ref = field.name) === 'group' ||\n                ref === 'endtime' ||\n                ref === 'description' ||\n                ref === 'employer' ||\n                ref === 'location' ||\n                ref === 'work_hours' ||\n                ref === 'customer'\n            ) {\n                return;\n            }\n            if (\n                !Em.isEmpty(record.get(field.name)) &&\n                record.get(field.name) !== 0 &&\n                field.type !== 'checkbox'\n            ) {\n                return;\n            }\n            if ((ref1 = field.type) === 'dropdown_values' || ref1 === 'dropdown_options') {\n                value_from_ls = this.get('localStorageWrapper').getUserSetting(\n                    'select_' + field.name,\n                );\n                if (value_from_ls && Ember.isPresent(value_from_ls)) {\n                    Ember.set(field, 'value', value_from_ls);\n                    record.set(field.name, value_from_ls);\n                }\n            }\n            if (field.type === 'database') {\n                value_from_ls = this.get('localStorageWrapper').getUserSetting(field.name);\n                //fetch that record\n                if (value_from_ls && Ember.isPresent(value_from_ls)) {\n                    db_record = this.get('store').peekRecord(\n                        field.options.form,\n                        parseInt(value_from_ls, 10),\n                    );\n                    record.set(field.name, db_record);\n                    field.value = parseInt(value_from_ls, 10);\n                }\n            }\n            if (\n                field.name === 'pause' &&\n                Ember.get(field, 'features.default_value') &&\n                !this.get('openWorktime.pause')\n            ) {\n                if (typeof Ember.get(field, 'features.default_value') === 'object') {\n                    this.set(\n                        'openWorktime.pause',\n                        Ember.get(field, 'features.default_value.value'),\n                    );\n                } else {\n                    this.set('openWorktime.pause', Ember.get(field, 'features.default_value'));\n                }\n            }\n            if (\n                field.name === 'affects_overtime' &&\n                Ember.get(field, 'features.default_value') &&\n                !this.get('openWorktime.affects_overtime')\n            ) {\n                this.set(\n                    'openWorktime.affects_overtime',\n                    Ember.get(field, 'features.default_value'),\n                );\n            }\n            if (field.name === 'km' && this.get('calcAutoKm')) {\n                if (\n                    !this.get('session.currentUser.address') ||\n                    !this.get('session.currentUser.city')\n                )\n                    return;\n\n                user_address =\n                    this.get('session.currentUser.address') +\n                    ', ' +\n                    this.get('session.currentUser.city');\n                if (this.get('session.currentUser.fin_address')) {\n                    user_address =\n                        this.get('session.currentUser.fin_address') +\n                        ', ' +\n                        this.get('session.currentUser.fin_city');\n                }\n                this.get('store')\n                    .findRecord('project', record.get('project.id'), {\n                        reload: true,\n                    })\n                    .then((project) => {\n                        var project_address;\n                        if (!project.get('address') || !project.get('city')) {\n                            return this.set('openWorktime.km', null);\n                        }\n                        project_address = project.get('address') + ', ' + project.get('city');\n                        return this.get('Google')\n                            .routeDistance(user_address, project_address)\n                            .then((dist) => {\n                                if (dist) {\n                                    return this.set('openWorktime.km', dist);\n                                } else {\n                                    return this.set('openWorktime.km', null);\n                                }\n                            });\n                    });\n            }\n            return retFields.push(copy(field));\n        });\n        return retFields;\n    }),\n    currentSaldo: function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                return this.get('Collector')\n                    .ttapi({\n                        url: 'saldo/get_saldo?userid=' + this.session.currentUser.id,\n                    })\n                    .then((back) => {\n                        return resolve({\n                            value: back['saldo'] / 60,\n                            from: back['from'],\n                            to: back['to'],\n                        });\n                    });\n            }),\n        });\n    },\n    actions: {\n        startWork: function () {\n            var date, row, self, starttime, store;\n            if (this.get('hasError')) {\n                return;\n            }\n            self = this;\n            row = this.get('openWorktime');\n            store = this.get('store');\n            date = moment().format('YYYY-MM-DD');\n            starttime = moment().format('HH:mm');\n            if (this.get('model.length') === 0) {\n                this.set('dayStart', starttime);\n            }\n            row.set('starttime', starttime);\n            row.set('date', date);\n            row.set('validation', 'off');\n            this.set('apiError', null);\n            return row.save().then(\n                () => {\n                    self.set('started_worktime', moment());\n                    this.set('startWasClicked', true);\n                    Em.run.later(() => {\n                        return this.set('startWasClicked', false);\n                    }, 3500);\n                    this.get('notifications').success(\n                        this.get('intl').t('timetracker.timecard.started'),\n                        {\n                            autoClear: true,\n                        },\n                    );\n                    return this.WorkHoursObs(); // calculate workhours again\n                },\n                (error) => {\n                    var errorObj;\n                    if (error.errors[0].error) {\n                        errorObj = error.errors[0];\n                    } else {\n                        errorObj = error.errors;\n                    }\n                    // overlapping worktimes, give user option to start this worktime at the last worktime endtime\n                    if (errorObj.error === 'overlap') {\n                        this.set('started_worktime', false);\n                        this.set('openWorktime.starttime', false);\n                        if (errorObj.errorMeta.hits === 'absence') {\n                            return this.get('dialogs').alert(\n                                this.get('intl').t('timetracker.timecard.overlap_absence'),\n                            );\n                        } else {\n                            //@set 'startWasClicked', false\n                            return this.get('dialogs')\n                                .confirm(this.get('intl').t('timetracker.timecard.confirm_overlap'))\n                                .then((con) => {\n                                    if (con) {\n                                        // model has worktimes sorted by date and endtime, so first element has always the latest endtime\n                                        row.set('starttime', this.get('model.firstObject.endtime'));\n                                        return row.save().then(() => {\n                                            this.set('startWasClicked', true);\n                                            Em.run.later(() => {\n                                                return this.set('startWasClicked', false);\n                                            }, 3500);\n                                            return this.get('notifications').success(\n                                                this.get('intl').t('timetracker.timecard.started'),\n                                                {\n                                                    autoClear: true,\n                                                },\n                                            );\n                                        });\n                                    }\n                                });\n                        }\n                    } else {\n                        //@WorkHoursObs() # calculate workhours again\n                        captureException(error);\n                        this.set(\n                            'apiError',\n                            JSON.stringify(error.errors != null ? error.errors : error),\n                        );\n                        if (error.errors != null) {\n                            this.set('started_worktime', false);\n                            row.set('starttime', void 0);\n                            row.set('date', void 0);\n                            return row.set('isError', false);\n                        }\n                    }\n                },\n            );\n        },\n        //                    self.set('openWorktime', self.store.createRecord('worktime', {}))\n        endWork: function () {\n            if (this.get('modalFields.length') === 0) {\n                return this.send('stopWorkAndSave');\n            } else {\n                return this.set('showExtrainfoModal', true);\n            }\n        },\n        stopWorkAndSave: function (type) {\n            var field, fieldValue, i, len, ref, self, worktime;\n            this.set('apiError', null);\n            self = this;\n            worktime = this.get('openWorktime');\n            worktime.set('endtime', moment().format('HH:mm'));\n            ref = this.get('Collector').fieldArray('worktime');\n            //get all database fields and save them to LS\n            for (i = 0, len = ref.length; i < len; i++) {\n                field = ref[i];\n                if (field.type === 'database') {\n                    fieldValue = worktime.get(field.name);\n                    this.get('localStorageWrapper').setUserSetting(\n                        field.name,\n                        fieldValue ? fieldValue.id : '',\n                    );\n                }\n            }\n            // a bit of a gimmick\n            // if startdate is same as current date..\n            // and starttime is in future..\n            // ..then set endtime same as starttime\n            if (\n                worktime.get('date') === moment().format('YYYY-MM-DD') &&\n                worktime.get('starttime') > moment().format('HH:mm')\n            ) {\n                worktime.set('endtime', worktime.get('starttime'));\n            }\n            return worktime.save().then(\n                (saved) => {\n                    var new_rec, new_worktime;\n                    this.get('notifications').success(this.get('intl').t('general.saved'), {\n                        autoClear: true,\n                    });\n                    if (this.get('Collector').testNeeds(['products.saldo'])) {\n                        this.currentSaldo().then((saldo) => {\n                            var format;\n                            format = FormatUtil.create();\n                            return this.get('notifications').success(\n                                this.get('intl').t('saldo.your_saldo_now') +\n                                    ' ' +\n                                    format.hours(saldo.value),\n                                {\n                                    autoClear: true,\n                                },\n                            );\n                        });\n                    }\n                    new_rec = {\n                        on_worksite: true,\n                    };\n                    if (type === 'task') {\n                        new_rec.project = worktime.get('project');\n                    }\n                    if (type === 'project' && this.get('showTasks')) {\n                        new_rec.task = worktime.get('task');\n                    }\n                    if (!type) {\n                        new_rec.project = worktime.get('project');\n                        if (this.get('Collector').testNeeds(['worktime.task'])) {\n                            new_rec.task = worktime.get('task');\n                        }\n                    }\n                    new_worktime = this.store.createRecord('worktime', new_rec);\n                    this.set('newWorktime', new_worktime);\n                    this.set('openWorktime', new_worktime);\n                    //@set(\"model\", new_worktime)\n                    this.set('started_worktime', null);\n                    //@WorkHoursObs()\n                    return this.send('refreshModel');\n                },\n                (error) => {\n                    captureException(error);\n                    this.set(\n                        'apiError',\n                        JSON.stringify(error.errors != null ? error.errors : error),\n                    );\n                    if (error.errors != null) {\n                        if (error.errors[0].errorMeta.hits === 'absence') {\n                            this.get('dialogs').alert(\n                                this.get('intl').t('timetracker.timecard.overlap_absence'),\n                            );\n                        }\n                        return worktime.set('endtime', null);\n                    }\n                },\n            );\n        },\n        change_task: function (value) {\n            return this.set('openWorktime.task', value);\n        },\n        cancelExtrainfoModal: function () {\n            return this.set('showExtrainfoModal', false);\n        },\n        saveExtrainfoModal: function () {\n            this.set('showExtrainfoModal', false);\n            return this.send('stopWorkAndSave');\n        },\n        emptyMySites: function (value) {\n            if (value && value.get('id') !== this.get('session.currentUser.currentMySite')) {\n                return this.set('session.currentUser.currentMySite', null);\n            } else if (!value) {\n                return this.set('session.currentUser.currentMySite', null);\n            }\n        },\n    },\n});\n\n//)\nexport default TimecardAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/timecard/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimecardAddRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nTimecardAddRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    store: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    date: null,\n    localStorageWrapper: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    openWorktime: false,\n    newWorktime: false,\n    beforeModel: function () {\n        this._super(...arguments);\n        return this.set('gui.hideMobileHeader', true);\n    },\n    model: function (params) {\n        var create_new, self;\n        self = this;\n        create_new = true;\n        return this.store\n            .query('worktime', {\n                date:\n                    moment().subtract(1, 'day').format('YYYY-MM-DD') +\n                    '_' +\n                    moment().format('YYYY-MM-DD'),\n                user: 'self',\n                sideload: true,\n                order: 'date-,endtime-',\n            })\n            .then(function (data) {\n                var project, task, worktime;\n                if (data.get('firstObject')) {\n                    data.forEach(function (worktime) {\n                        if (!worktime.get('endtime')) {\n                            create_new = false;\n                            self.get('store').findRecord('project', worktime.get('project.id'), {\n                                reload: true,\n                            });\n                            return self.set('openWorktime', worktime);\n                        }\n                    });\n                }\n                if (create_new) {\n                    worktime = self.store.createRecord('worktime', {\n                        on_worksite: true,\n                    });\n                    project = self.get('localStorageWrapper').getUserSetting('project');\n                    if (self.get('session.currentUser.currentMySite')) {\n                        project = self.get('session.currentUser.currentMySite.id');\n                    }\n                    if (project && Ember.typeOf(project) !== 'array') {\n                        self.store.findRecord('project', project).then(function (record) {\n                            return worktime.set('project', record);\n                        });\n                    }\n                    if (self.get('Collector').testNeeds(['worktime.task'])) {\n                        task = self.get('localStorageWrapper').getUserSetting('task');\n                        if (task && Ember.typeOf(task) !== 'array') {\n                            self.store.findRecord('task', task).then(function (record) {\n                                return worktime.set('task', record);\n                            });\n                        }\n                    }\n                    self.set('newWorktime', worktime);\n                }\n                return data;\n            });\n    },\n    setupController: function (controller, model) {\n        // if contoller open worktime is removed reset it\n        if (\n            controller.get('openWorktime') &&\n            controller.get('openWorktime').get('currentState.stateName') === 'root.deleted.saved'\n        ) {\n            controller.set('openWorktime', null);\n        }\n        // do not overwrite controller openWorktime if we are refreshing model (screws up gps-calculating etc)\n        if (this.get('openWorktime') && !controller.get('openWorktime')) {\n            controller.set('openWorktime', this.get('openWorktime'));\n        }\n        if (this.get('newWorktime') && !controller.get('openWorktime')) {\n            controller.set('openWorktime', this.get('newWorktime'));\n        }\n        controller.set('model', model);\n        return controller.setMySitesProject();\n    },\n    resetController: function (controller, isExiting, transition) {\n        this._super.apply(this, arguments);\n        if (isExiting) {\n            controller.set('started_worktime', false);\n            return this.set('gui.hideMobileHeader', false);\n        }\n    },\n    actions: {\n        endWork: function () {},\n        refreshModel: function () {\n            return this.refresh();\n        },\n    },\n});\n\nexport default TimecardAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"EXDiSHrI\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"gps-icon\\\",null,[[\\\"position\\\"],[\\\"left\\\"]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.timecard\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"timetracker.week-report\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[5,\\\"form-error-message\\\",[],[[\\\"@hasError\\\"],[[23,0,[\\\"hasError\\\"]]]]],[0,\\\"\\\\n\\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-horizontal timecard\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time small\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"timecard.time_tracked\\\"],null],false],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-numbers\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"worktimeDuration\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"slim\\\"],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Marker small\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[1,[24,[\\\"projectField\\\",\\\"translated_name\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"projectIsMandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"openWorktime\\\",\\\"starttime\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"collector-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"model\\\"],[\\\"worktime\\\",\\\"project\\\",[24,[\\\"openWorktime\\\",\\\"project\\\"]]]]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentMySiteTooFar\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"gps.mysites.too_far\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"openWorktime\\\",\\\"starttime\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"openWorktime\\\",\\\"project\\\",\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"timecard.no_project\\\"],null],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"or\\\",[[24,[\\\"hasError\\\"]],[24,[\\\"projectMissing\\\"]],[24,[\\\"isForcedAndNotCloseEnough\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"validForm\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 text-right\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"change-button-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.change_project\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"circle-button-smaller\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"stopWorkAndSave\\\",\\\"project\\\"]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-refresh smaller-button\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"model\\\",\\\"change\\\"],[[24,[\\\"projectField\\\"]],\\\"form-control add-fields\\\",[24,[\\\"openWorktime\\\"]],\\\"emptyMySites\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showTasks\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"slim\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checklist small\\\"],[8],[9],[0,\\\" \\\"],[1,[24,[\\\"taskField\\\",\\\"translated_name\\\"]],false],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"openWorktime\\\",\\\"starttime\\\"]]],null,{\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[24,[\\\"openWorktime\\\",\\\"task\\\",\\\"name\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"openWorktime\\\",\\\"starttime\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"or\\\",[[24,[\\\"hasError\\\"]],[24,[\\\"projectMissing\\\"]],[24,[\\\"isForcedAndNotCloseEnough\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"validForm\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 text-right\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"change-button-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"timecard.change_task\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"circle-button-smaller\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"stopWorkAndSave\\\",\\\"task\\\"]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-refresh smaller-button\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"taskField\\\"]],\\\"form-control add-fields\\\",[24,[\\\"openWorktime\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"openWorktime\\\",\\\"starttime\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"slim\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Comments small pr-1\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[1,[24,[\\\"commentField\\\",\\\"translated_name\\\"]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"commentField\\\"]],\\\"form-control add-fields\\\",[24,[\\\"openWorktime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"openWorktime\\\",\\\"project\\\",\\\"help\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-info-sign\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[24,[\\\"openWorktime\\\",\\\"project\\\",\\\"help\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"location\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Marker small\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"timecard.gps\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"openWorktime\\\",\\\"starttime\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showEndLocation\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"gps-location\\\",null,[[\\\"value\\\",\\\"model\\\"],[[24,[\\\"openWorktime\\\",\\\"end_location\\\"]],[24,[\\\"openWorktime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"gps-location\\\",null,[[\\\"value\\\",\\\"model\\\"],[[24,[\\\"openWorktime\\\",\\\"location\\\"]],[24,[\\\"openWorktime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"gps-location\\\",null,[[\\\"value\\\",\\\"model\\\"],[[24,[\\\"openWorktime\\\",\\\"location\\\"]],[24,[\\\"openWorktime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"openWorktime\\\",\\\"isSaving\\\"]],[24,[\\\"refreshing\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"class\\\"],[\\\"overlay_loader_icon\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"or\\\",[[24,[\\\"hasError\\\"]],[24,[\\\"projectMissing\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"startWasClicked\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"class\\\"],[\\\"overlay_loader_icon\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"openWorktime\\\",\\\"starttime\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"isForcedAndNotCloseEnough\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.gps.too_far\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"google-map\\\",null,[[\\\"center\\\",\\\"markers\\\"],[[24,[\\\"latlng\\\"]],[24,[\\\"projectMarker\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"circle-button stop\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"endWork\\\"]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Stop huge-button stop-action\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"isForcedAndNotCloseEnough\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"timecard.gps.too_far\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"circle-button start\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"startWork\\\"]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Play huge-button start-action\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Play small\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[\\\"starttime\\\",\\\"worktime\\\"]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[1,[22,\\\"dayStart\\\"],false],[0,\\\"\\\\n                \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Time small\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"timecard.time_today\\\"],null],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[1,[22,\\\"totalWorkHours\\\"],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"apiError\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.error_prefix\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"small\\\",true],[8],[1,[22,\\\"apiError\\\"],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showExtrainfoModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"timecard.extra_info\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"cancelExtrainfoModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"timetracker/timecard/add/timecard-record-comp\\\",null,[[\\\"form\\\",\\\"fields\\\",\\\"record\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"worktime\\\",[24,[\\\"modalFields\\\"]],[24,[\\\"openWorktime\\\"]],\\\"saveExtrainfoModal\\\",\\\"cancelExtrainfoModal\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/timecard/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/timecard/add/timecard-record-comp/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimecardRecordCompComponent;\n\nimport Ember from 'ember';\n\nimport recordComp from '../../../../collector/record-custom-comp/component';\n\nTimecardRecordCompComponent = recordComp.extend({\n    layoutName: 'collector/record-comp',\n});\n\nexport default TimecardRecordCompComponent;\n","export default Ember.HTMLBars.template({\"id\":\"6/uRqo5w\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/timecard/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/week-report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerWeekReportController;\n\nimport Ember from 'ember';\n\nimport filterModel from '../../../mixins/filter-model';\n\nTimetrackerWeekReportController = Ember.Controller.extend(filterModel, {\n    intl: Em.inject.service(),\n    queryParams: ['date'],\n    startDate: moment().startOf('isoWeek'),\n    week: Em.computed('date', function () {\n        try {\n            return moment(this.get('date').substr(0, 10)).isoWeek();\n        } catch (error) {\n            return moment(this.get('startDate')).isoWeek();\n        }\n    }),\n    actions: {\n        changeWeek: function (value) {\n            var date, queryParam;\n            date = this.get('date')\n                ? moment(this.get('date').substr(0, 10))\n                : this.get('startDate');\n            if (value === 'plus') {\n                this.set('startDate', date.add(1, 'week').startOf('isoWeek'));\n            } else {\n                this.set('startDate', date.subtract(1, 'week').startOf('isoWeek'));\n            }\n            queryParam =\n                date.format('YYYY-MM-DD') + '_' + date.endOf('isoWeek').format('YYYY-MM-DD');\n            return this.set('date', queryParam);\n        },\n        rowClicked: function (row) {\n            if (row.abcensetype) {\n                return this.transitionToRoute('abcenses.edit', row.id);\n            } else {\n                return this.transitionToRoute('timetracker.edit', row.id);\n            }\n        },\n    },\n});\n\nexport default TimetrackerWeekReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/week-report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerWeekReportRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nTimetrackerWeekReportRoute = Ember.Route.extend({\n    Collector: Em.inject.service('collector-service'),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n    },\n    currentWeek:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    model: function (params) {\n        var c, date, sideloaded, split_date, worktime_params, worktimesArr;\n        c = this.get('Collector');\n        //params = @._super(params)\n        date = params.date || this.currentWeek;\n        worktime_params = {};\n        worktime_params.sideload = true;\n        worktime_params.user = 'self'; // get only own worktimes\n        worktime_params.date = date;\n        worktime_params.order = 'date-,starttime-';\n        split_date = date.split('_');\n        sideloaded = [];\n        sideloaded.push('abcensetype.name');\n        worktimesArr = [];\n        return this.store.query('worktime', worktime_params).then((worktimes) => {\n            var absPromise;\n            worktimes.forEach((row) => {\n                return worktimesArr.push(row);\n            });\n            absPromise = new Em.RSVP.Promise((resolve, reject) => {\n                var absences;\n                if (c.testNeedsOne('abcense')) {\n                    absences = this.get('Collector').ttapi({\n                        url: 'absence/split',\n                        data: {\n                            startdate: split_date[0],\n                            enddate: split_date[1],\n                            sideload: sideloaded,\n                            order: 'startdate-',\n                            tt3flag: collector.get('tt3flag'),\n                            user: 'self',\n                        },\n                    });\n                    return absences.then((abs) => {\n                        return resolve(abs);\n                    });\n                } else {\n                    return resolve([]);\n                }\n            });\n            return absPromise.then((abs) => {\n                var model;\n                //model = worktimesArr.concat(abs).sortBy(\"date\")\n                model = abs.concat(worktimesArr).sortBy('date');\n                return Em.RSVP.hash({\n                    combined: model,\n                });\n            });\n        });\n    },\n});\n\n//worktimes: @store.query('worktime', worktime_params)\n//absences: abs\nexport default TimetrackerWeekReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"daWPUaNY\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"week-report\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"week-display text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default\\\"],[12,\\\"style\\\",\\\"margin-right: 10px;\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeek\\\",\\\"minus\\\"]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-arrow-left\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"general.week\\\"],null],false],[0,\\\" \\\"],[1,[22,\\\"week\\\"],false],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default\\\"],[12,\\\"style\\\",\\\"margin-left: 10px;\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeWeek\\\",\\\"plus\\\"]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-arrow-right\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"week-report2\\\",null,[[\\\"model\\\",\\\"rowClicked\\\"],[[24,[\\\"model\\\",\\\"combined\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"rowClicked\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/week-report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/worktime-list/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerWorktimeListController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport collector from '../../../classes/collector';\n\nTimetrackerWorktimeListController = GeneralReportController.extend({\n    session: Ember.inject.service(),\n    form: 'worktime',\n    localStorageKey: 'worktime-list',\n    showColumns: [\n        'date',\n        'status',\n        'user',\n        'employer',\n        'project',\n        'starttime',\n        'endtime',\n        'work_hours',\n        'pause',\n        'description',\n    ],\n    limit: 25,\n    Collector: Em.inject.service('collector-service'),\n    filters: Ember.computed(function () {\n        var c, filter_fields;\n        c = this.get('Collector');\n        filter_fields = Em.A([\n            Em.Object.create(\n                {\n                    field: 'date',\n                    type: 'date',\n                },\n                {\n                    wagePeriods: true,\n                },\n            ),\n            Em.Object.create({\n                field: 'project',\n                value: this.get('project'),\n            }),\n            Em.Object.create({\n                field: 'employer',\n            }),\n            Em.Object.create({\n                field: 'user',\n            }),\n            Em.Object.create({\n                field: 'groupBy',\n                type: 'groupByFilter',\n            }),\n            Em.Object.create({\n                type: 'searchbox',\n                bindto: 'q',\n            }),\n        ]);\n        // hardcoded for delete for now..\n        // should make nicer\n        if (c.testNeedsOne('user.costcenter')) {\n            filter_fields.pushObject(\n                Em.Object.create({\n                    extra: true,\n                    type: 'search',\n                    field: 'costcenter',\n                    bindto: 'costcenter',\n                    sideload: 'user',\n                    form: 'user',\n                }),\n            );\n        }\n        return filter_fields;\n    }),\n    filterReport: Ember.computed('filters.@each.value', function () {\n        var filters;\n        filters = {};\n        this.get('filters').forEach((item) => {\n            return (filters[item.name] = item.value);\n        });\n        return filters;\n    }),\n    getAdditionalFilters: Ember.computed(function () {\n        if (this.session.currentUser.userlevel !== '1') {\n            return 'user.worktimegroup';\n        }\n        return null;\n    }),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: 'timetracker.edit',\n            historyRoute: 'timetracker.history',\n        }),\n        massedit: true,\n        inlineEdit: true,\n        sortByColumn: 'date-,starttime-',\n    }),\n    init_functions: function () {\n        this._super();\n        return this.hideColumns();\n    },\n    hideColumns: function () {\n        var fields;\n        fields = collector.getFormObjects('worktime');\n        if (\n            fields.starttime.features.hide &&\n            fields.endtime.features.hide &&\n            fields.work_hours.features.mandatory\n        ) {\n            return this.set('settings.hideColumns', ['starttime', 'endtime']);\n        }\n    },\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        closeEditModal: function () {\n            this.editRecord.rollbackAttributes();\n            return this.set('editRecord', null);\n        },\n    },\n    queryParams: [\n        'project',\n        'date',\n        'user',\n        'status',\n        'employer',\n        'customer',\n        'task',\n        'group',\n        'typeofwork',\n        'project_owner',\n        'groupBy',\n        'q',\n    ],\n    //    order: 'date-,starttime-'\n    customer: null,\n    project: null,\n    group: null,\n    typeofwork: null,\n    project_owner: null,\n    user: [],\n    employer: null,\n    status: 'all',\n    dateSelector: true,\n    userSelector: true,\n    statusSelector: true,\n    task: null,\n    groupBy: null,\n    date:\n        moment().startOf('isoweek').subtract(1, 'week').format('YYYY-MM-DD') +\n        '_' +\n        moment().format('YYYY-MM-DD'),\n});\n\nexport default TimetrackerWorktimeListController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/timetracker/worktime-list/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TimetrackerWorktimeListRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nTimetrackerWorktimeListRoute = GeneralReportRoute.extend({\n    collector: Ember.inject.service('collector-service'),\n    capi: Ember.inject.service(),\n    flags: Ember.inject.service(),\n    form: 'worktime',\n    localStorageKey: 'worktime-list',\n    queryParams: {\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        typeofwork: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n        groupBy: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        if (!this.get('flags').test('form-report-worktimes')) {\n            if (Ember.isPresent(params.groupBy)) {\n                params.sideload = true;\n                // This can be moved to mixin when wanted in other places also\n                params.order = params.groupBy;\n                return this.get('capi').findAll('worktime', params);\n            } else {\n                params.sideload = true;\n                return this.store.query('worktime', params);\n            }\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('timetracker.worktime-list').set('qParams', params);\n        }\n    },\n});\n\nexport default TimetrackerWorktimeListRoute;\n","export default Ember.HTMLBars.template({\"id\":\"N4iQBJ3N\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"form-report-worktimes\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"worktime\\\",[22,\\\"qParams\\\"],\\\"date,user,project,employer,status,q,groupBy\\\",[22,\\\"getAdditionalFilters\\\"],[28,\\\"hash\\\",null,[[\\\"date\\\",\\\"order\\\"],[[24,[\\\"date\\\"]],\\\"date-,starttime-\\\"]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,5,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/timetracker/edit/\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"TemplateSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Gps\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"editRecord\\\"]]],null]],null],\\\"remove,history,overview,edit\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],\\\"worktime\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"localStorageKey\\\",\\\"status\\\",\\\"filters\\\",\\\"count\\\"],[\\\"bubbleTransition\\\",\\\"worktime\\\",[28,\\\"if\\\",[[28,\\\"is-array\\\",[[24,[\\\"model\\\"]]],null],[24,[\\\"model\\\"]],[24,[\\\"model\\\",\\\"content\\\"]]],null],[24,[\\\"showColumns\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"localStorageKey\\\"]],[24,[\\\"status\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"model\\\",\\\"meta\\\",\\\"count\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"editRecord\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.add_worktime\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"collector/form-add/forms/worktime\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\",\\\"@showSaved\\\"],[\\\"worktime\\\",[23,0,[\\\"editRecord\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeEditModal\\\"],null],true]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/timetracker/worktime-list/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/trnotices/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TrnoticesEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nTrnoticesEditController = GeneralAddController.extend({\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n});\n\nexport default TrnoticesEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/trnotices/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TrnoticesEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nTrnoticesEditRoute = GeneralAddRoute.extend({\n    modelName: 'trnotice',\n    controllerName: 'trnotices.edit',\n    edit: true,\n    afterModel: function (model, transition) {\n        var page, type;\n        type = model.get('type');\n        if (type === 'tr') {\n            page = 'site_safety.report.tr.notices';\n        } else if (type === 'mvr') {\n            page = 'site_safety.report.mvr.notices';\n        } else {\n            page = 'index';\n        }\n        return this.set('afterSave', page);\n    },\n});\n\nexport default TrnoticesEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"CniT3IQc\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/trnotices/edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/trnotices/history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TrnoticesHistoryRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nTrnoticesHistoryRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default TrnoticesHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"MIBFf1Oh\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"trnotice\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/trnotices/history/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/trnotices/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TrnoticesRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nTrnoticesRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default TrnoticesRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/add/builder/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersAddBuilderController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport config from '../../../../config/environment';\n\n// veronumero for testing 100011258537\nUsersAddBuilderController = Ember.Controller.extend({\n    //    needs: [\"employers/add\"]\n    session: Em.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    addController: Ember.inject.controller('employers/add'),\n    capi: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    cc: Ember.inject.service(),\n    store: Ember.inject.service(),\n    vastuuGroup: Ember.inject.service('vastuu-group'),\n    found_employers: [],\n    not_found_employers: [],\n    empArr: Em.A([]),\n    no_employers: false,\n    userAlreadyExists: false,\n    veroApiInfoExists: false,\n    birthday: null,\n    birthdateField: null,\n    obs: function () {\n        this.set('messageStatus', null);\n        this.set('message', null);\n        this.set('create', false);\n        this.set('users', null);\n        this.set('noEmployer', false);\n        this.set('userAlreadyExists', false);\n        this.set('activeUser', null);\n        this.set('found_employers', []);\n        this.set('not_found_employers', []);\n        this.set('no_employers', false);\n        if (this.get('taxnumber.length') === 12) {\n            return this.send('fetchTax');\n        } else if (this.get('cardnumber.length') === 12) {\n            return this.send('fetchCard');\n        } else if (this.get('taxnumber.length') === 14) {\n            return this.send('fetchCardWithUID');\n        }\n    }.observes('taxnumber', 'cardnumber'),\n    setModel: function (data, skip) {\n        var k, model, results, v;\n        model = this.get('model');\n        results = [];\n        for (k in data) {\n            v = data[k];\n            if (indexOf.call(skip, k) < 0) {\n                results.push(model.set(k, v));\n            } else {\n                results.push(void 0);\n            }\n        }\n        return results;\n    },\n    //    setUserInfo: (data, skip) ->\n    //        intl = @get 'intl'\n    //        if !data.error\n    //            @setModel(data,skip)\n    //            if data.cardStatus == 'closed' && data.status == 'verified'\n    //                @set 'messageStatus', 'alert-warning'\n    //            else if data.status == 'verified'\n    //                @set 'messageStatus', 'alert-success'\n    //            else\n    //                @set 'messageStatus', 'alert-danger'\n    //            string = ''\n    //            if data.status\n    //                string += '<div><h3>'+intl.t('user.add.status.taxnumber')+': <b>'+intl.t('user.add.status.'+data.status)+'</b></h3></div>'\n\n    //            if data.cardStatus == 'closed'\n    //               string += '<div><h3><b>'+intl.t('user.add.card.closed')+'</b></h3><b>'+intl.t('user.add.card.reason')+': '+data.cardReason+'</b></div>'\n    //            message = Ember.String.htmlSafe(string)\n    //        else\n    //            @set 'messageStatus', 'alert-danger'\n    //            message = Ember.String.htmlSafe('<div>'+\n    //                '<h3><b>'+intl.t('user.add.status.notfound')+'</b></h3></div>')\n    //        @set 'message', message\n    setUserData: function (data) {\n        var user_record;\n        if (data.names) {\n            user_record = {\n                firstname: data.names[0].given_names[0],\n                lastname: data.names[0].surnames.join(' '),\n                birthdate: data.date_of_birth,\n                taxnumber: data.gov_ids[0].gov_id,\n                homecountry: data.residences != null ? data.residences[0].toLowerCase() : 'fi',\n            };\n            if (this.get('cardUidUsed')) {\n                user_record.rfid_tag_id = this.get('cardUidUsed');\n            }\n            return this.set('user', user_record);\n        }\n    },\n    checkIfUserExists: function (taxnumber) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            return this.get('capi')\n                .request('/users?validation_only=taxnumber', {\n                    method: 'POST',\n                    data: {\n                        user: {\n                            taxnumber: taxnumber,\n                        },\n                    },\n                })\n                .then(\n                    () => {\n                        return resolve(false);\n                    },\n                    (reason) => {\n                        if (\n                            reason.payload.error_msg ===\n                            'user with this ' + taxnumber + ' taxnumber already exists!'\n                        ) {\n                            return resolve(true);\n                        } else {\n                            return resolve(false);\n                        }\n                    },\n                );\n        });\n    },\n    queryVeroApi: function (number, birthday) {\n        var isNumber, query;\n        isNumber = /^\\d+$/.test(number);\n        if (!number || !isNumber || number.length !== 12) {\n            return;\n        }\n        query = '/veroapi-veronumero?taxnumber=' + number;\n        if (birthday) {\n            query += '&birthday=' + birthday;\n        }\n        return $.ajax({\n            url: this.get('cc').host + query,\n            headers: {\n                Authorization: 'Bearer ' + this.session.data.authenticated.access_token,\n            },\n            success: (data) => {\n                this.set('veroApiInfoExists', data.InfoExists);\n                if (data.InfoExists) {\n                    this.set('veroApiUser', data);\n                }\n                if (data.InfoExists && birthday && !data.TaxNumberMatchBirthday) {\n                    return this.set('fetchedWithWrongBirthday', true);\n                }\n            },\n        });\n    },\n    getImage: function (field) {\n        var emp_id, taxnumber;\n        //        @set 'loading', true\n        taxnumber = this.get('model.taxnumber');\n        emp_id = this.get('model.employer.emp_id');\n        return $.ajax({\n            url: this.get('cc').host + config.APP.CC_TVCARDIMAGE,\n            data: {\n                taxnumber: taxnumber,\n                emp_id: emp_id,\n            },\n            success: (data) => {\n                //                @set 'loading', false\n                if (data != null && !data.error) {\n                    this.set('model.image', [\n                        {\n                            file: 'data:image/png;base64,' + data,\n                            name: 'profile.png',\n                        },\n                    ]);\n                    return this.set('fetchedImage', 'data:image/png;base64,' + data);\n                }\n            },\n        });\n    },\n    setMessage: function (status, messageKey) {\n\n        this.set('messageStatus', status);\n\n        const message = Ember.String.htmlSafe(\n            '<div>' +\n                '<h3><b>' +\n                this.intl.t(messageKey) +\n                '</b></h3></div>',\n        );\n\n        this.set('message', message);\n    },\n    actions: {\n        setInitialValue: function () {\n            if (!this.get('birthday')) {\n                return this.set('birthday', '1980-06-01');\n            }\n        },\n        fetchPersonFromTaxApi: function () {\n            //            console.log(@get('taxnumber'), @get('birthday'))\n            this.set('fetchedWithWrongBirthday', false);\n            return this.queryVeroApi(this.get('taxnumber'), this.get('birthday'));\n        },\n        // fetch card taxnumber from vgpersonapi integration and if card is found\n        // replace the taxnumber and taxnumber search starts automatically\n        fetchCardWithUID: async function () {\n            try {\n                this.set('loading', true);\n                this.set('cardUidUsed', null);\n                const uid = this.get('taxnumber');\n\n                const response = await this.vastuuGroup.request('vgpersonapi',\n                    {\n                        country: 'FI',\n                        'id-country': 'FI',\n                        'id-type': 'card_uid',\n                        'id-value': uid,\n                    },\n                );\n\n                if (response.length > 0 && response[0].taxnumber) {\n                    this.set('cardUidUsed', uid);\n                    this.set('taxnumber', response[0].taxnumber);\n                } else {\n                    this.set('loading', false);\n                }\n            } catch (e) {\n                console.error(e);\n                this.set('loading', false);\n            }\n        },\n        fetchTax: async function () {\n            const c = this.get('Collector');\n            this.set('empArr', Em.A([]));\n\n            if (this.get('taxnumber') && this.get('taxnumber.length') === 12) {\n                const value = this.get('taxnumber');\n                this.set('loading', true);\n\n                try {\n\n                    const users = await this.store.query('user', {\n                        taxnumber: value,\n                    });\n\n                    const veroapipromise = this.queryVeroApi(value);\n\n                    if (users.get('length') === 0) {\n                        const userExists = await this.checkIfUserExists(value);\n\n                        if (userExists) {\n                            this.set('loading', false);\n                            return this.set('userAlreadyExists', true);\n                        } else {\n                            this.set('userAlreadyExists', false);\n\n                            try {\n                                const data = await this.vastuuGroup.request(config.APP.CC_TVPERAPI,\n                                    {\n                                        country: 'FI',\n                                        'id-country': 'FI',\n                                        'id-type': 'tax_number',\n                                        'id-value': value,\n                                    }\n                                );\n\n                                if (data.message) {\n                                    this.set('loading', false);\n                                    this.setMessage('alert-danger', 'user.add.status.notfound');\n                                } else if (!data.error) {\n                                    if (Em.isEmpty(data.employers)) {\n                                        this.set('loading', false);\n                                        this.setMessage('alert-danger', 'user.add.no_employers');\n                                    } else {\n                                        this.setUserData(data);\n                                        let accessError = false;\n                                        const promises = data.employers.map(async (emp) => {\n                                            const found = [];\n                                            const not_found = [];\n                                            let emp_id = emp.gov_org_ids[0].gov_org_id;\n\n                                            if (emp.country !== 'FI' && emp.gov_org_ids[1]) {\n                                                emp_id = emp.gov_org_ids[1].gov_org_id;\n                                            }\n\n                                            if (c.testNeeds(['employer@access'])) {\n                                                await Promise.all(\n                                                    emp.gov_org_ids.map(async (gov_ids) => {\n                                                        const employers = await this.get('store').query(\n                                                            'employer',\n                                                            { emp_id: gov_ids.gov_org_id },\n                                                        );\n                                                        if (employers.get('length') > 0) {\n                                                            found.pushObject(gov_ids);\n                                                        } else {\n                                                            not_found.pushObject(gov_ids);\n                                                        }\n                                                    }),\n                                                );\n\n                                                this.get('empArr').pushObject({\n                                                    employer: emp,\n                                                    found,\n                                                    not_found,\n                                                });\n                                            } else if (\n                                                this.get('session.currentUser.employer.emp_id') === emp_id\n                                            ) {\n                                                emp.gov_org_id = emp_id;\n                                                this.get('empArr').pushObject({\n                                                    employer: emp,\n                                                    found: [\n                                                        emp.gov_org_ids.find(\n                                                            (item) => item.gov_org_id === emp_id,\n                                                        ),\n                                                    ],\n                                                    not_found: [],\n                                                });\n                                            } else {\n                                                accessError = true;\n                                            }\n                                        });\n\n                                        if (accessError && this.get('found_employers').length === 0) {\n                                            this.set('messageStatus', 'alert-danger');\n                                            this.setMessage('alert-danger', 'user.add.no_employer_access');\n                                        }\n\n                                        await Promise.all(promises);\n                                        this.set('loading', false);\n                                    }\n                                } else {\n                                    this.set('loading', false);\n                                }\n                            } catch (error) {\n                                this.set('loading', false);\n                                this.setMessage('alert-danger', 'user.add.status.failed');\n                            }\n                        }\n                    } else {\n                        this.set('loading', false);\n                        this.setMessage('alert-danger', 'user.add.exists');\n                    }\n                } catch (error) {\n                    this.set('loading', false);\n                    this.setMessage('alert-danger', 'user.add.status.failed');\n                }\n            }\n        },\n        createUser: function (user, employer, found_employer) {\n            var c, intl, self;\n            self = this;\n            if (\n                user.homecountry !== 'fi' &&\n                employer.employment_periods[0].address_in_home_country\n            ) {\n                user.address = employer.employment_periods[0].address_in_home_country.address[0];\n                user.zip = employer.employment_periods[0].address_in_home_country.post_code;\n                user.city = employer.employment_periods[0].address_in_home_country.post_area;\n                user.contract_type = employer.employment_periods[0].contract_type;\n                user.workpass = employer.employment_periods[0].documentation_of_sent_employee;\n            }\n            this.set('activeUser', user);\n            this.set('users', null);\n            this.set('message', null);\n            intl = this.get('intl');\n            c = this.get('Collector');\n            if (c.testNeeds(['employer@access'])) {\n                return self.store\n                    .query('employer', {\n                        emp_id: found_employer.gov_org_id,\n                    })\n                    .then(function (employers) {\n                        var message;\n                        if (employers.get('length') > 0) {\n                            user.employer = employers.get('firstObject');\n                            self.setModel(user, ['status', 'vatin']);\n                            self.set('message', null);\n                            self.set('users', null);\n                            return self.transitionToRoute('users.add.index');\n                        } else {\n                            self.set('messageStatus', 'alert-warning');\n                            self.set('noEmployer', true);\n                            message = Ember.String.htmlSafe(\n                                '<div>' +\n                                    '<h3><b>' +\n                                    intl.t('user.add.status.employer.notfound') +\n                                    '</b></h3><h4>' +\n                                    user.employer +\n                                    ', ' +\n                                    user.vatin +\n                                    '</h4></div>',\n                            );\n                            return self.set('message', message);\n                        }\n                    });\n            } else {\n                user.employer = self.get('session.currentUser.employer');\n                self.setModel(user, ['status', 'vatin']);\n                self.set('message', null);\n                self.set('users', null);\n                return self.transitionToRoute('users.add.index');\n            }\n        },\n        addEmployer: function (employer, id) {\n            var emp, emp_obj, user;\n            user = this.get('user');\n            emp_obj = {\n                emp_id: id.gov_org_id,\n                name: employer.name,\n                emp_firstname: employer.employers_contact_person.contact_first_name,\n                emp_lastname: employer.employers_contact_person.contact_last_name,\n                emp_phone: employer.employers_contact_person.contact_phone,\n                emp_email: employer.employers_contact_person.contact_email,\n            };\n            if (employer.country !== 'FI') {\n                //if employer.gov_org_ids[1]\n                //    emp_obj.emp_id = employer.gov_org_ids[1].gov_org_id\n                if (id.gov_org_id === 'vat_number') {\n                    emp_obj.emp_id_type = '1';\n                } else {\n                    emp_obj.emp_id_type = '2';\n                }\n                emp_obj.emp_homecountry = employer.country.toLowerCase();\n                if (employer.address) {\n                    emp_obj.emp_address = employer.address.address.toString();\n                    emp_obj.emp_zip = employer.address.post_code;\n                    emp_obj.emp_city = employer.address.post_area;\n                    emp_obj.emp_country = employer.address.country.toLowerCase();\n                }\n            }\n            emp = this.store.createRecord('employer', emp_obj);\n            Em.set(user, 'employer', emp);\n            this.store.createRecord('user', user);\n            this.set('addController.afterSave', 'users.add.index');\n            this.transitionToRoute('employers.add');\n            return this.set('noEmployer', false);\n        },\n        addUserToGroup: function (taxnumber) {\n            this.set('loading', true);\n            return this.get('ttapi')\n                ._post('addusertogroup', {\n                    taxnumber: taxnumber,\n                })\n                .then(() => {\n                    this.set('loading', false);\n                    return this.transitionToRoute('users.index');\n                });\n        },\n        setUserTaxnumber: function (taxnumber) {\n            var user;\n            user = {\n                taxnumber: taxnumber,\n            };\n            if (this.veroApiUser) {\n                user.firstname = this.veroApiUser.FirstName;\n                user.lastname = this.veroApiUser.LastName;\n                user.birthdate = this.birthday;\n            }\n            this.setModel(user, ['status', 'vatin']);\n            return this.transitionToRoute('users.add.index');\n        },\n    },\n});\n\nexport default UsersAddBuilderController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/add/builder/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersAddBuilderRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nUsersAddBuilderRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    actions: {\n        willTransition: function (transition) {\n            this.controller.set('create', false);\n            this.controller.set('users', null);\n            this.controller.set('message', null);\n            this.controller.set('taxnumber', null);\n            this.controller.set('cardnumber', null);\n            this.controller.set('noEmployer', false);\n            this.controller.set('activeUser', null);\n            return true;\n        },\n    },\n});\n\nexport default UsersAddBuilderRoute;\n","export default Ember.HTMLBars.template({\"id\":\"NKshqTuf\",\"block\":\"{\\\"symbols\\\":[\\\"empObj\\\",\\\"not_found_employer\\\",\\\"found_employer\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-offset-3 col-md-6 col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"user.add.by_tax\\\"],null],false],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[24,[\\\"taxnumber\\\"]],\\\"form-control\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[1,[22,\\\"loader-icon\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"veroApiInfoExists\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row alert alert-success pb-3 \\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12 col-xs-12\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder.taxnumber_found\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-5\\\"],[8],[1,[28,\\\"date-input\\\",null,[[\\\"max\\\",\\\"class\\\",\\\"click\\\",\\\"value\\\"],[\\\"9999-12-31\\\",\\\"form-control add-fields date-input-component ember-text-field ember-view\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setInitialValue\\\"],null],[24,[\\\"birthday\\\"]]]]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-4\\\"],[8],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"fetchPersonFromTaxApi\\\"]],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder.fetch\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12 col-xs-12 mt-2\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"fetchedWithWrongBirthday\\\"]]],null,{\\\"statements\\\":[[0,\\\"                       \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well alert-danger\\\"],[8],[0,\\\"\\\\n                           \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder.taxnomatch1\\\"],null],false],[9],[0,\\\"\\\\n                           \\\"],[1,[28,\\\"t\\\",[\\\"user.birthdate\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[22,\\\"birthday\\\"],false],[9],[0,\\\" \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                           \\\"],[1,[28,\\\"t\\\",[\\\"report.avi.taxnumber\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[22,\\\"taxnumber\\\"],false],[9],[0,\\\"\\\\n                         \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"veroApiUser\\\",\\\"TaxNumberMatchBirthday\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder.taxandbirthdaymatch\\\"],null],false],[0,\\\" \\\"],[7,\\\"b\\\",true],[8],[1,[24,[\\\"veroApiUser\\\",\\\"FirstName\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"veroApiUser\\\",\\\"LastName\\\"]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"message\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"row alert \\\",[22,\\\"messageStatus\\\"],\\\" text-center\\\"]]],[8],[0,\\\"\\\\n                \\\"],[1,[22,\\\"message\\\"],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"empArr\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h2\\\",true],[8],[1,[23,1,[\\\"employer\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"found\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder.create\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"list-group-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"createUser\\\",[24,[\\\"user\\\"]],[23,1,[\\\"employer\\\"]],[23,3,[]]]],[8],[1,[24,[\\\"user\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"user\\\",\\\"lastname\\\"]],false],[0,\\\",\\\\n                            \\\"],[1,[23,1,[\\\"employer\\\",\\\"name\\\"]],false],[0,\\\",\\\\n                            \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"employer.identifier_type.\\\",[23,3,[\\\"org_id_type\\\"]]],null]],null],false],[0,\\\": \\\"],[1,[23,3,[\\\"gov_org_id\\\"]],false],[0,\\\",\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"employer.country\\\"],null],false],[0,\\\": \\\"],[1,[23,3,[\\\"country\\\"]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"not_found\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning text-center\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.status.employer.notfound\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"list-group-item\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addEmployer\\\",[23,1,[\\\"employer\\\"]],[23,2,[]]]],[8],[1,[24,[\\\"user\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"user\\\",\\\"lastname\\\"]],false],[0,\\\",\\\\n                        \\\"],[1,[23,1,[\\\"employer\\\",\\\"name\\\"]],false],[0,\\\",\\\\n                        \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"employer.identifier_type.\\\",[23,2,[\\\"org_id_type\\\"]]],null]],null],false],[0,\\\": \\\"],[1,[23,2,[\\\"gov_org_id\\\"]],false],[0,\\\",\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"employer.country\\\"],null],false],[0,\\\": \\\"],[1,[23,2,[\\\"country\\\"]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[4,\\\"if\\\",[[28,\\\"await\\\",[[24,[\\\"userAlreadyExists\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addUserToGroup\\\",[24,[\\\"taxnumber\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"user.add.user_to_group\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"create\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"btn btn-primary btn-block btn-lg\\\",\\\"users.add.index\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"user.add.builder.create\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[12,\\\"name\\\",\\\"addUserManually\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setUserTaxnumber\\\",[24,[\\\"taxnumber\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"user.add.builder.manually\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/add/builder/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersAddController;\n\nimport Ember from 'ember';\n\nUsersAddController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    saved: Ember.inject.controller(),\n});\n\nexport default UsersAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/add/id06/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersAddId06Controller;\n\nimport Ember from 'ember';\n\nimport config from '../../../../config/environment';\n\nUsersAddId06Controller = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    session: Ember.inject.service(),\n    countryLists: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    call_cc: function () {\n        var model;\n        model = this.get('model');\n        return this.get('Collector').ccapi({\n            url: config.APP.ID06_VERIFY_URL,\n            timeout: 10000,\n            data: {\n                card: model.get('id06kort'),\n                personid: model.get('personid'),\n                nationality: model.get('homecountry').toUpperCase(),\n                emp_id: model.get('employer.emp_id'),\n                emp_nationality: model.get('employer.country').toUpperCase(),\n            },\n        });\n    },\n    search_user_with_id06card: function () {\n        var model;\n        model = this.get('model');\n        return this.get('Collector').ttapi({\n            url: 'searchid06',\n            dataType: 'text',\n            data: {\n                card: model.get('id06kort'),\n                personid: model.get('personid'),\n                nationality: model.get('homecountry').toUpperCase(),\n            },\n        });\n    },\n    create_user_with_id06card: function () {\n        var model;\n        model = this.get('model');\n        return this.get('Collector').ttapi({\n            url: 'createid06linkeduser',\n            method: 'post',\n            data: {\n                card: model.get('id06kort'),\n                personid: model.get('personid'),\n                nationality: model.get('homecountry').toUpperCase(),\n                employerid: model.get('employer.id'),\n            },\n        });\n    },\n    //    setModel: (data, skip) ->\n    //        model = @get 'model'\n    //        for k,v of data\n    //            unless k in skip\n    //                model.set k, v\n\n    //    addEmployerIfNotExist: (name, id) ->\n    //        new Ember.RSVP.Promise (resolve, reject) =>\n    //            store = @get 'store'\n    //            store.query('employer', {emp_id: id}).then (employers) =>\n    //                console.log \"employers\", employers\n    //                if employers.get('length') > 0\n    //                    resolve employers.get 'firstObject'\n    //                else\n    //                    record = store.createRecord 'employer',\n    //                        name: name\n    //                        emp_id: id\n    //                    record.save().then =>\n    //                        resolve record\n    id06kortErrors: Em.computed('model.errors.[]', function () {\n        return this.get('model.errors').errorsFor('id06kort');\n    }),\n    personidErrors: Em.computed('model.errors.[]', function () {\n        return this.get('model.errors').errorsFor('personid');\n    }),\n    homecountryErrors: Em.computed('model.errors.[]', function () {\n        return this.get('model.errors').errorsFor('homecountry');\n    }),\n    employerErrors: Em.computed('model.errors.[]', function () {\n        return this.get('model.errors').errorsFor('employer');\n    }),\n    // TODO stuff like default values should be set in models\n    // moved to routes afterModel\n    //    setCountry: Em.observer('model', ->\n    //        c = @get('Collector')\n    //        if @get('model.homecountry') == undefined\n    //            @set 'model.homecountry', c.field('user', 'homecountry').features.default_value\n    //    )\n\n    //    setEmployer: Em.observer('model','session.currentUser', ->\n    //        if not @get('model') then return\n    //        if not @get('session.currentUser.employer') then return\n    //        @set 'model.employer', @get(\"session.currentUser.employer\")\n    //    )\n    actions: {\n        transitionToUserform: function (param) {\n            this.set('linkUser', false);\n            if (!param) {\n                this.set('model.id06kort', void 0);\n                this.set('model.personid', void 0);\n                return this.transitionToRoute('users.add.index').then((newRoute) => {\n                    return newRoute.controller.set('no_id06', true);\n                });\n            } else if (param === 'linkUser') {\n                this.set('loading', true);\n                return this.create_user_with_id06card().then((back) => {\n                    this.set('loading', false);\n                    return this.transitionToRoute('users.edit', back.user.user.id);\n                });\n            } else if (param === 'not_verified') {\n                this.set('model.status', 'not_verified');\n                return this.transitionToRoute('users.add.index');\n            } else {\n                return this.send('fetchID06Card');\n            }\n        },\n        fetchID06Card: function () {\n            this.set('loading', true);\n            this.set('errorMessage', false);\n            this.set('emp_link', false);\n            this.set('error500', false);\n            return this.get('model')\n                .validate(['id06kort', 'personid', 'homecountry', 'employer'])\n                .then(() => {\n                    if (Ember.isEmpty(this.get('model.id06kort'))) {\n                        this.get('model.errors').add(\n                            'id06kort',\n                            this.get('intl').t('validation.error.mandatory'),\n                        );\n                    }\n                    if (this.get('model.isValid')) {\n                        return this.search_user_with_id06card().then((response) => {\n                            if (response !== 'notfound') {\n                                this.set('linkUser', true);\n                                this.set(\n                                    'linkUserTitle',\n                                    this.get('intl').t('user.add.id06_link_user', {\n                                        lastname: response.lastname,\n                                        firstname: response.firstname,\n                                    }),\n                                );\n                                this.set('loading', false);\n                                return;\n                            }\n                            return this.store\n                                .findRecord('employer', this.get('model.employer.id'), {\n                                    reload: true,\n                                })\n                                .then(() => {\n                                    if (this.get('model.employer.country') === null) {\n                                        // Häx because all employers might not have the field filled\n                                        this.set(\n                                            'errorMessage',\n                                            this.get('intl').t('user.add.id06.emp_no_nationality'),\n                                        );\n                                        this.set('emp_link', true);\n                                        return this.set('loading', false);\n                                    } else if (this.get('model.employer.emp_id') === null) {\n                                        // Häx because all employers might not have the field filled\n                                        this.set(\n                                            'errorMessage',\n                                            this.get('intl').t('user.add.id06.emp_no_id'),\n                                        );\n                                        this.set('emp_link', true);\n                                        return this.set('loading', false);\n                                    } else {\n                                        return this.call_cc().then(\n                                            (response) => {\n                                                if (typeof response === 'string') {\n                                                    response = JSON.parse(response);\n                                                }\n                                                this.set('loading', false);\n                                                if (response.error) {\n                                                    return this.set(\n                                                        'errorMessage',\n                                                        this.get('intl').t('user.add.id06.cc_fail'),\n                                                    );\n                                                } else if (response.reason !== 'verified') {\n                                                    this.set(\n                                                        'errorMessage',\n                                                        this.get('intl').t(\n                                                            'user.add.id06.card_status.' +\n                                                                response.reason,\n                                                        ),\n                                                    );\n                                                    return this.set('error500', true);\n                                                } else {\n                                                    return this.transitionToRoute(\n                                                        'users.add.index',\n                                                    );\n                                                }\n                                            },\n                                            (error) => {\n                                                this.set('loading', false);\n                                                this.set(\n                                                    'errorMessage',\n                                                    this.get('intl').t('user.add.id06.cc_fail'),\n                                                );\n                                                if (error.statusText === 'timeout') {\n                                                    return this.set('error500', true);\n                                                }\n                                            },\n                                        ).catch((e) => {\n                                            this.set('loading', false);\n                                            this.set(\n                                                'errorMessage',\n                                                this.get('intl').t('user.add.id06.cc_fail'),\n                                            );\n                                            this.set('error500', true);\n                                        });\n                                    }\n                                });\n                        });\n                    } else {\n                        return this.set('loading', false);\n                    }\n                });\n        },\n        valueChanged: function (value, field) {\n            if (field) {\n                if (value && value !== 'null') {\n                    this.set('model.' + field, value);\n                    return this.get('model').validate([field]);\n                } else {\n                    if (value === 'null') {\n                        this.set('model.' + field, null);\n                    }\n                    return this.get('model').validate([field]);\n                }\n            } else {\n                this.set('model.homecountry', value.id);\n                return this.get('model').validate(['homecountry']);\n            }\n        },\n        validateField: function (field) {\n            return this.get('model').validate([field]);\n        },\n    },\n});\n\nexport default UsersAddId06Controller;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/add/id06/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersAddId06Route;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nUsersAddId06Route = Ember.Route.extend(AuthenticatedRouteMixin, {\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    afterModel: function (model, transition) {\n        var c;\n        c = this.get('Collector');\n        if (model.get('homecountry') === void 0) {\n            model.set('homecountry', c.field('user', 'homecountry').features.default_value);\n        }\n        if (this.get('session.currentUser.employer')) {\n            model.set('employer', this.get('session.currentUser.employer'));\n        }\n        return this._super(model, transition);\n    },\n    resetController: function (controller, isExiting, transition) {\n        this._super(controller, isExiting, transition);\n        if (isExiting) {\n            controller.set('error', false);\n            return controller.set('error500', false);\n        }\n    },\n});\n\nexport default UsersAddId06Route;\n","export default Ember.HTMLBars.template({\"id\":\"fj/qIMZE\",\"block\":\"{\\\"symbols\\\":[\\\"error\\\",\\\"error\\\",\\\"error\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-offset-3 col-md-6 col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.add.id06\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"id06kortErrors\\\",\\\"length\\\"]],0],null],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"user.id06kort\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"id06kortErrors\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"id06kortErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[23,3,[\\\"message\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"focus-out\\\"],[\\\"text\\\",[24,[\\\"model\\\",\\\"id06kort\\\"]],\\\"form-control add-fields\\\",[28,\\\"action\\\",[[23,0,[]],\\\"validateField\\\",\\\"id06kort\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"id06kortErrors\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"personidErrors\\\",\\\"length\\\"]],0],null],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"user.personid\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"personidErrors\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"personidErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[23,2,[\\\"message\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"focus-out\\\"],[\\\"text\\\",[24,[\\\"model\\\",\\\"personid\\\"]],\\\"form-control add-fields\\\",[28,\\\"action\\\",[[23,0,[]],\\\"validateField\\\",\\\"personid\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"personidErrors\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"homecountryErrors\\\",\\\"length\\\"]],0],null],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"user.homecountry\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"homecountryErrors\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"homecountryErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[23,1,[\\\"message\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"drop-down-search\\\",null,[[\\\"input\\\",\\\"options\\\",\\\"prompt\\\",\\\"bubbleChange\\\",\\\"classes\\\"],[[24,[\\\"model\\\",\\\"homecountry\\\"]],[24,[\\\"countryLists\\\",\\\"fullList\\\"]],[28,\\\"t\\\",[\\\"select.country\\\"],null],\\\"valueChanged\\\",\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"homecountryErrors\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"employerErrors\\\",\\\"length\\\"]],0],null],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"user.employer\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"employerErrors\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"employerErrors\\\",\\\"firstObject\\\",\\\"message\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],\\\"4\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[24,[\\\"model\\\",\\\"employer\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"user.employer\\\"],[[\\\"model\\\",\\\"change\\\",\\\"class\\\"],[[24,[\\\"model\\\"]],\\\"valueChanged\\\",\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"employerErrors\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[1,[22,\\\"loader-icon\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[22,\\\"errorMessage\\\"],false],[4,\\\"if\\\",[[24,[\\\"emp_link\\\"]]],null,{\\\"statements\\\":[[0,\\\" - \\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\",\\\"model\\\"],[\\\"employers.edit\\\",[24,[\\\"model\\\",\\\"employer\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"user.add.id06.fix_employer\\\"],[[\\\"htmlSafe\\\"],[true]]],false]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"error500\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionToUserform\\\",\\\"not_verified\\\"]],[8],[1,[28,\\\"t\\\",[\\\"user.add.id06_continue\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"linkUser\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"linkUserTitle\\\"],false],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionToUserform\\\",\\\"linkUser\\\"]],[8],[1,[28,\\\"t\\\",[\\\"user.add.id06_link_user_button\\\"],null],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionToUserform\\\",\\\"not_verified\\\"]],[8],[1,[28,\\\"t\\\",[\\\"user.add.id06_dont_link_user_button\\\"],null],false],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionToUserform\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"user.add.id06\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"user.add.info_text\\\"],null],false],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionToUserform\\\"]],[8],[1,[28,\\\"t\\\",[\\\"user.add.without_id06\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/add/id06/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Ev4SCPbF\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"model\\\",\\\"image\\\",\\\"0\\\",\\\"file\\\"]],[28,\\\"not\\\",[[24,[\\\"value\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-profile-circle-image img-circle\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[24,[\\\"model\\\",\\\"image\\\",\\\"0\\\",\\\"file\\\"]],\\\"');\\\"]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"remove\\\",\\\"change\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"fieldRoute\\\"]],\\\"removeFile\\\",\\\"customChangeValue\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"value\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"employer\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"taxnumber\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"data-anchor\\\",\\\"get-image-button\\\"],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"getImage\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"employer.get_tilaajavastuu_image\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/add/image/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/add/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersAddIndexController,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nimport pdf from '../../../../mixins/pdf-export';\n\nimport config from '../../../../config/environment';\n\nimport workPermitUtils from '../../../../utils/work-permit';\n\nUsersAddIndexController = GeneralAddController.extend(pdf, {\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    cc: Ember.inject.service(),\n    savedController: Ember.inject.controller('users/saved'),\n    notifications: Ember.inject.service(),\n    vastuuGroup: Ember.inject.service('vastuu-group'),\n    addGetImageTilaajavastuu: Em.on('init', function () {\n        var c, customization;\n        c = this.get('Collector');\n        if (c.fieldExists('user', 'taxnumber')) {\n            customization = this.get('customization');\n            customization.image = {\n                template: 'users/add/image',\n                features: {\n                    hide_preview: true,\n                },\n            };\n            return this.set('customization', customization);\n        }\n    }),\n    getStatusFieldDefaultValue: function() {\n        // Fallback value used if default_value is not set in field settings\n        const DEFAULT_STATUS = 'ok';\n        let statusDefaultValue = DEFAULT_STATUS;\n\n        if (this.Collector.testNeedsOne('user.status')) {\n            const statusFieldSettings = Ember.get(\n                this.get('Collector').formField('user', 'status'),\n                'features',\n            );\n\n            // Use the settings default_value if it exists\n            statusDefaultValue = statusFieldSettings?.default_value ?? DEFAULT_STATUS;\n        }\n\n        return statusDefaultValue;\n    },\n    customization: Em.computed('model', {\n        set: function (key, value) {\n            return (this._value = value);\n        },\n        get: function () {\n            var country, cust, userlevels;\n            if (this._value) {\n                return this._value;\n            }\n            cust = {\n                setting_wap_font_size: {\n                    hide: true,\n                },\n                language: {\n                    hide: true,\n                },\n                ea1card: {\n                    type: 'date',\n                },\n                ea2card: {\n                    type: 'date',\n                },\n                firecard: {\n                    type: 'date',\n                },\n                safetycard: {\n                    type: 'date',\n                },\n                birthdate: {\n                    type: 'date',\n                    features: {},\n                },\n                userlevel: {\n                    features: {\n                        default_value: '1',\n                    },\n                },\n                username: {\n                    features: {\n                        validate_check: ['minLength:6', 'maxLength:80', 'remote:username'],\n                    },\n                },\n                status: {\n                    features: {\n                        default_value: this.getStatusFieldDefaultValue(),\n                    },\n                },\n                phone: {\n                    template: 'users/add/phone',\n                },\n                password: {\n                    features: {\n                        validate_check: ['password'],\n                    },\n                    default: null,\n                },\n            };\n            if (\n                parseInt(this.get('session.currentUser.userlevel')) < 5 ||\n                parseInt(this.get('session.currentUser.userlevel')) === 6\n            ) {\n                // allow adding roles 1-3 and own roles\n                userlevels = Ember.get(\n                    this.get('Collector').formField('user', 'userlevel'),\n                    'options',\n                );\n                cust.userlevel.options = userlevels\n                    .filter(function (userlevel) {\n                        return !(userlevel === '5' || userlevel === '6');\n                    })\n                    .join(',');\n            } else if (parseInt(this.get('session.currentUser.userlevel')) === 8) {\n                // allow adding roles 7 and 8\n                userlevels = Ember.get(\n                    this.get('Collector').formField('user', 'userlevel'),\n                    'options',\n                );\n                cust.userlevel.options = userlevels\n                    .filter(function (userlevel) {\n                        return userlevel === '7' || userlevel === '8';\n                    })\n                    .join(',');\n            }\n            // special feature used for date-input\n            // inserts default-value only after user has clicked date-input\n            if (Modernizr.inputtypes.date) {\n                cust.birthdate.features.onclick_default_value =\n                    moment('19800101').format('YYYY-MM-DD');\n            } else {\n                cust.birthdate.features.onclick_default_value = '01/01/1980';\n            }\n            if (this.get('model') && this.get('session.currentUser.userlevel') === '4') {\n                this.set('model.employer', this.get('session.currentUser.employer'));\n            }\n            //cust.password.default = @generatePassword()\n\n            //set phone by country\n            country = this.get('session.currentUser.company_info.country');\n            switch (country) {\n                case 'fi':\n                    cust.phone.default = '+358';\n                    break;\n                case 'se':\n                    cust.phone.default = '+46';\n            }\n            return cust;\n        },\n    }),\n    generatePassword: function () {\n        var chars, generated_password, i, rnum, string_length;\n        chars = '23456789abcdefghkmnpqrstuvwxyz';\n        string_length = 6;\n        generated_password = '';\n        i = 0;\n        while (i < string_length) {\n            rnum = Math.floor(Math.random() * chars.length);\n            generated_password += chars.substring(rnum, rnum + 1);\n            i++;\n        }\n        return generated_password;\n    },\n    countryLists: Ember.inject.service(),\n    setCountryCode: function () {\n        var code, codes, codesByNumber, j, len, model, ref, results;\n        model = this.get('model');\n        codes = this.get('countryLists.phoneList');\n        codesByNumber = codes.mapBy('number');\n        if (\n            !model.get('phone') ||\n            (((ref = model.get('phone')), indexOf.call(codesByNumber, ref) >= 0) &&\n                model.get('homecountry') &&\n                !this.get('countryCodeSetManually'))\n        ) {\n            results = [];\n            for (j = 0, len = codes.length; j < len; j++) {\n                code = codes[j];\n                if (code.id === model.get('homecountry')) {\n                    results.push(model.set('phone', code.number));\n                } else {\n                    results.push(void 0);\n                }\n            }\n            return results;\n        }\n    },\n    actions: {\n        FieldValueUpdated: function (field, value) {\n            // set default work permit type, when nationality is changed to something else than fi\n            if (field === 'nationality' && value != 'fi') {\n                this.set('model.work_permit_type', workPermitUtils.getDefaultWorkPermitType(value));\n            }\n        },\n        generalAddAction: async function (type, param) {\n            if (type === 'getImage') {\n                this.set('loading', true);\n                await this.getImage(this.get('model'));\n                this.set('loading', false);\n            }\n            if (type === 'changeCountry') {\n                return this.changeCountry(param);\n            }\n            if (type === 'setCountryCode') {\n                return this.setCountryCode();\n            }\n        },\n    },\n    changeCountry: function (countrycode) {\n        this.set('countryCodeSetManually', true);\n        return this.set('model.phone', countrycode);\n    },\n    getImage: async function (model) {\n        // Skip rest of the function and show warning if no employer set\n        if (!model.get('employer.id')) {\n            this.get('notifications').warning(this.get('intl').t('employer.add.emp_id_missing'), {\n                autoClear: true,\n            });\n            return;\n        }\n        var emp_id, intl, taxnumber;\n        intl = this.get('intl');\n\n        taxnumber = model.get('taxnumber');\n        // try to fetch emp_id of employer if it is not loaded yet (this is case when editing user)\n        if (!model.get('employer.emp_id')) {\n            let employer = await this.store.findRecord('employer', model.get('employer.id'), {\n                reload: true,\n            });\n            emp_id = employer.emp_id;\n        } else {\n            emp_id = model.get('employer.emp_id');\n        }\n        try {\n            const response = await this.vastuuGroup.request(config.APP.CC_TVCARDIMAGE,\n                {\n                    taxnumber: taxnumber,\n                    emp_id: emp_id,\n                }\n            );\n\n            let message;\n            if (response != null && !response.error) {\n                model.set('image', [\n                    {\n                        file: 'data:image/png;base64,' + response,\n                        name: 'naama.png',\n                    },\n                ]);\n                this.set('fetchedImage', 'data:image/png;base64,' + response);\n            } else {\n                message = Ember.String.htmlSafe(\n                    '<div>' +\n                        '<h3><b>' +\n                        intl.t('employer.add.status.notfound') +\n                        '</b></h3>' +\n                        intl.t('employer.add.status.marketing') +\n                        '</div>',\n                );\n            }\n            this.set('message', message);\n        } catch (error) {\n            this.get('notifications').warning(intl.t('employer.add.status.failed'), {\n                autoClear: true,\n            });\n        }\n    },\n    disable_username_generation: false,\n    username_observer: Em.observer('model.username', function () {\n        if (this.get('model.username')) {\n            return this.generateUsername().then((test) => {\n                if (test !== this.get('model.username')) {\n                    // User entered input so disable generating..\n                    return this.set('disable_username_generation', true);\n                }\n            });\n        } else {\n            return this.set('disable_username_generation', false);\n        }\n    }),\n    email_observer: Em.observer('model.email', function () {\n        var email, username;\n        if (!this.get('model.isNew')) {\n            return;\n        }\n        username = this.get('model.username');\n        email = this.get('model.email');\n        if (username && email) {\n            if (\n                username === email.substring(0, username.length) ||\n                email === username.substring(0, email.length)\n            ) {\n                return this.set('model.username', email);\n            }\n        } else if (email) {\n            return this.set('model.username', email);\n        } else if (username && username.length === 1 && !email) {\n            return this.set('model.username', email);\n        }\n    }),\n    employerPromise: Em.computed('model.employer', function () {\n        return new Ember.RSVP.Promise((resolve) => {\n            if (!this.get('model.employer.domain')) {\n                return this.get('store')\n                    .query('employer', {\n                        id: this.get('model.employer.id'),\n                    })\n                    .then(() => {\n                        return resolve();\n                    });\n            } else {\n                return resolve();\n            }\n        });\n    }),\n    generateUsername: function () {\n        return new Ember.RSVP.Promise((resolve) => {\n            var generatedUsername;\n            if (\n                this.get('model.lastname') &&\n                this.get('model.firstname') &&\n                this.get('model.employer.id') &&\n                this.get('model.homecountry')\n            ) {\n                return this.get('employerPromise').then(() => {\n                    var company_domain, domain, generatedUsername;\n                    company_domain = this.get('model.employer.domain');\n                    domain = company_domain\n                        ? company_domain\n                        : this.removeCompanyType(this.get('model.employer.name')) +\n                          '.' +\n                          this.get('model.homecountry');\n                    generatedUsername =\n                        this.get('model.firstname') +\n                        '.' +\n                        this.get('model.lastname') +\n                        '@' +\n                        domain;\n                    generatedUsername = this.convertAccentedCharacters(generatedUsername);\n                    generatedUsername = generatedUsername.replace(/\\s+/g, '');\n                    generatedUsername = generatedUsername.replace(/[&]+/g, '');\n                    generatedUsername = generatedUsername.toLowerCase();\n                    return resolve(generatedUsername);\n                });\n            } else if (this.get('model.lastname') && this.get('model.firstname')) {\n                generatedUsername = this.get('model.firstname') + '.' + this.get('model.lastname');\n                generatedUsername = this.convertAccentedCharacters(generatedUsername);\n                generatedUsername = generatedUsername.replace(/\\s+/g, '');\n                generatedUsername = generatedUsername.replace(/[&]+/g, '');\n                generatedUsername = generatedUsername.toLowerCase();\n                return resolve(generatedUsername);\n            } else {\n                return resolve(null);\n            }\n        });\n    },\n    validateAndGenerateUsername: Em.observer(\n        'model.lastname',\n        'model.firstname',\n        'model.employer',\n        'model.homecountry',\n        function () {\n            var employer_field_is_in_use;\n            if (!this.get('model.isNew')) {\n                return;\n            }\n            employer_field_is_in_use = this.get('Collector').testNeeds(['user.employer']);\n            if (employer_field_is_in_use) {\n                if (\n                    this.get('model.lastname') &&\n                    this.get('model.firstname') &&\n                    this.get('model.employer') &&\n                    this.get('model.homecountry') &&\n                    !this.get('disable_username_generation')\n                ) {\n                    return this.generateUsername().then((username) => {\n                        return this.set('model.username', username);\n                    });\n                }\n            } else {\n                if (this.get('model.lastname') && !this.get('disable_username_generation')) {\n                    return this.generateUsername().then((username) => {\n                        return this.set('model.username', username);\n                    });\n                }\n            }\n        },\n    ),\n    removeCompanyType: function (company) {\n        var arr, type;\n        if (!company) {\n            return '';\n        }\n        arr = company.split(' ');\n        type = arr[arr.length - 1].toLowerCase();\n        if (type === 'oy' || type === 'oyj' || type === 'ltd' || type === 'ab') {\n            arr.pop();\n        }\n        return arr.join(' ');\n    },\n    convertAccentedCharacters: function (str) {\n        var conversions, i, re;\n        conversions = {};\n        conversions['A'] = 'À|Á|Â|Ã|Ä|Å|Ǻ|Ā|Ă|Ą|Ǎ|Ä';\n        conversions['a'] = 'à|á|â|ã|å|ǻ|ā|ă|ą|ǎ|ªä|æ|ǽ|ä';\n        conversions['C'] = 'Ç|Ć|Ĉ|Ċ|Č';\n        conversions['c'] = 'ç|ć|ĉ|ċ|č';\n        conversions['D'] = 'Ð|Ď|Đ';\n        conversions['d'] = 'ð|ď|đ';\n        conversions['E'] = 'È|É|Ê|Ë|Ē|Ĕ|Ė|Ę|Ě';\n        conversions['e'] = 'è|é|ê|ë|ē|ĕ|ė|ę|ě';\n        conversions['G'] = 'Ĝ|Ğ|Ġ|Ģ';\n        conversions['g'] = 'ĝ|ğ|ġ|ģ';\n        conversions['H'] = 'Ĥ|Ħ';\n        conversions['h'] = 'ĥ|ħ';\n        conversions['I'] = 'Ì|Í|Î|Ï|Ĩ|Ī|Ĭ|Ǐ|Į|İ';\n        conversions['i'] = 'ì|í|î|ï|ĩ|ī|ĭ|ǐ|į|ı';\n        conversions['J'] = 'Ĵ';\n        conversions['j'] = 'ĵ';\n        conversions['K'] = 'Ķ';\n        conversions['k'] = 'ķ';\n        conversions['L'] = 'Ĺ|Ļ|Ľ|Ŀ|Ł';\n        conversions['l'] = 'ĺ|ļ|ľ|ŀ|ł';\n        conversions['N'] = 'Ñ|Ń|Ņ|Ň';\n        conversions['n'] = 'ñ|ń|ņ|ň|ŉ';\n        conversions['O'] = 'Ò|Ó|Ô|Õ|Ō|Ŏ|Ǒ|Ő|Ơ|Ø|Ǿ|Ö';\n        conversions['o'] = 'ò|ó|ô|õ|ō|ŏ|ǒ|ő|ơ|ø|ǿ|ºö|œ|ö';\n        conversions['R'] = 'Ŕ|Ŗ|Ř';\n        conversions['r'] = 'ŕ|ŗ|ř';\n        conversions['S'] = 'Ś|Ŝ|Ş|Š';\n        conversions['s'] = 'ś|ŝ|ş|š|ſ';\n        conversions['T'] = 'Ţ|Ť|Ŧ';\n        conversions['t'] = 'ţ|ť|ŧ';\n        conversions['U'] = 'Ù|Ú|Û|Ũ|Ū|Ŭ|Ů|Ű|Ų|Ư|Ǔ|Ǖ|Ǘ|Ǚ|Ǜ|Ü';\n        conversions['u'] = 'ù|ú|û|ũ|ū|ŭ|ů|ű|ų|ư|ǔ|ǖ|ǘ|ǚ|ǜ|ü';\n        conversions['Y'] = 'Ý|Ÿ|Ŷ';\n        conversions['y'] = 'ý|ÿ|ŷ';\n        conversions['W'] = 'Ŵ';\n        conversions['w'] = 'ŵ';\n        conversions['Z'] = 'Ź|Ż|Ž';\n        conversions['z'] = 'ź|ż|ž';\n        conversions['ss'] = 'ß';\n        conversions['f'] = 'ƒ';\n        for (i in conversions) {\n            re = new RegExp(conversions[i], 'g');\n            str = str.replace(re, i);\n        }\n        return str;\n    },\n});\n\nexport default UsersAddIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/add/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\n//import collector from '../../../classes/collector'\nUsersAddRoute = GeneralAddRoute.extend({\n    modelName: 'user',\n    controllerName: 'users.add.index',\n    savedRoute: 'users.saved',\n    afterModel: function (model, transition) {\n        var controller;\n        controller = this.controllerFor('users/add/index');\n        return model.set('password', controller.generatePassword());\n    },\n});\n\nexport default UsersAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"KvWnTNqR\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/users/add/index/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"wCS0LG8G\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-phone-field\\\"],[8],[0,\\\"\\\\n    \\\"],[5,\\\"bs-dropdown\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"button\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-toggle form-control add-fields\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[28,\\\"country-flag\\\",[[24,[\\\"model\\\",\\\"phone\\\"]],\\\"number\\\"],null],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+358\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-fi\\\"],[8],[9],[0,\\\" +358\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+46\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-se\\\"],[8],[9],[0,\\\" +46\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+371\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-lv\\\"],[8],[9],[0,\\\" +371\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+372\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-ee\\\"],[8],[9],[0,\\\" +372\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+48\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-pl\\\"],[8],[9],[0,\\\" +48\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+44\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-gb\\\"],[8],[9],[0,\\\" +44\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+49\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-de\\\"],[8],[9],[0,\\\" +49\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+33\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-fr\\\"],[8],[9],[0,\\\" +33\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+36\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-hu\\\"],[8],[9],[0,\\\" +36\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+34\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-es\\\"],[8],[9],[0,\\\" +34\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+31\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-nl\\\"],[8],[9],[0,\\\" +31\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+47\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-no\\\"],[8],[9],[0,\\\" +47\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+370\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-lt\\\"],[8],[9],[0,\\\" +370\\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"changeCountry\\\",\\\"+1\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"flag-icon flag-icon-us\\\"],[8],[9],[0,\\\" +1\\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\",\\\"focus-in\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"field\\\",\\\"ext\\\"]],[24,[\\\"placeholder\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"setCountryCode\\\"],null]]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/add/phone/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nimport collector from '../../../classes/collector';\n\nUsersAddRoute = GeneralAddRoute.extend({\n    Collector: Ember.inject.service('collector-service'),\n    modelName: 'user',\n    controllerName: 'users.add',\n    beforeModel: function (transition) {\n        var c, records;\n        c = this.get('Collector');\n        records = this.store.peekAll(this.get('modelName')).filterBy('isNew', true);\n        if (collector.getFormObject('user.taxnumber') && records.get('length') < 1) {\n            return this.transitionTo('users.add.builder');\n        } else if (c.testNeeds(['user.id06kort']) && records.get('length') < 1) {\n            return this.transitionTo('users.add.id06');\n        }\n    },\n});\n\nexport default UsersAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"t6d+mCOS\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/card/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersCardController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nUsersCardController = GeneralReportController.extend({\n    form: 'user',\n    showColumns: ['lastname', 'firstname', 'employer', 'id06kort', 'id06valid', 'status'],\n    queryParams: ['page', 'employer'],\n    filters: Em.A([\n        Em.Object.create({\n            field: 'employer',\n        }),\n    ]),\n    employer: null,\n    id06valid:\n        moment().subtract(1, 'year').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    settings: Em.Object.create({\n        localStorageKey: 'user_id06card',\n        sortByColumn: 'lastname',\n    }),\n});\n\nexport default UsersCardController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/card/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersCardRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nUsersCardRoute = GeneralReportRoute.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        id06valid: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('user', params);\n    },\n});\n\nexport default UsersCardRoute;\n","export default Ember.HTMLBars.template({\"id\":\"ekn2+2Y+\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\"],[[24,[\\\"filters\\\"]],\\\"user\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"limit\\\",\\\"offset\\\"],[\\\"bubbleTransition\\\",\\\"user\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/card/template.hbs\"}});","import Controller from '@ember/controller';\nimport { set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    store: service(),\n    capi: service(),\n\n    init() {\n        this._super(...arguments);\n        set(this, 'qParams', []);\n        set(this, 'reportIsEmpty', true);\n        set(this, 'loading', false);\n        set(this, 'show_removed', true);\n    },\n\n    dummy: alias('model'),\n\n    actions: {\n        async setEmployer(employer) {\n            set(this, 'employer', employer);\n            this.filterReport();\n        },\n        async setUser(user) {\n            try {\n                if(user && user?.id) {\n                    const userResult = await this.capi.findAll('users', { id: user.id });\n                    set(this, 'user', userResult.content[0]);\n                } else {\n                    set(this, 'user', user);\n                }\n            } catch(err) {\n                set(this, 'user', user);\n            }\n            this.filterReport();\n        },\n\n        showCard(row) {\n            set(this, 'cardRow', row);\n            set(this, 'showModal', true);\n        },\n    },\n    async filterReport() {\n        if (this.user?.id || this.employer?.id) {\n            set(this, 'showReport', true);\n            return;\n        }\n        set(this, 'showReport', false);\n        return [];\n    },\n});\n","import Route from '@ember/routing/route';\n\nexport default Route.extend({});\n","export default Ember.HTMLBars.template({\"id\":\"/fP2X6W1\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"field\\\",\\\"value\\\",\\\"unformatted\\\",\\\"row\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"employer\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25 pr-5\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"form-report-filter-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"defaults.field.employer\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"user.employer\\\"],[[\\\"useAsFilter\\\",\\\"value\\\",\\\"usePowerDropdown\\\",\\\"change\\\"],[true,[24,[\\\"employer\\\",\\\"id\\\"]],true,\\\"setEmployer\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-25\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"form-report-filter-label\\\"],[8],[1,[28,\\\"t\\\",[\\\"defaults.field.user\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"worktime.user\\\"],[[\\\"useAsFilter\\\",\\\"value\\\",\\\"usePowerDropdown\\\",\\\"change\\\"],[true,[24,[\\\"user\\\",\\\"id\\\"]],true,\\\"setUser\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"presence.user\\\"],[[\\\"useAsFilter\\\",\\\"value\\\",\\\"usePowerDropdown\\\",\\\"change\\\"],[true,[24,[\\\"user\\\",\\\"id\\\"]],true,\\\"setUser\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showReport\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"collector/form-report\\\",[],[[\\\"@form\\\",\\\"@rowActions\\\",\\\"@showColumns\\\",\\\"@updateOnDidReceiveAttrs\\\",\\\"@filterByValues\\\",\\\"@localStorageKey\\\",\\\"@jsonapi\\\",\\\"@hideCreatedColumn\\\"],[\\\"card\\\",\\\"\\\",\\\"name,taxnumber,type,date,image\\\",true,[28,\\\"hash\\\",null,[[\\\"employer\\\",\\\"taxnumber\\\"],[[23,0,[\\\"employer\\\"]],[23,0,[\\\"user\\\",\\\"taxnumber\\\"]]]]],\\\"cards\\\",true,true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"filters\\\"]],[],[[\\\"@showColumns\\\"],[\\\"date,type,name\\\"]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"table\\\"]],[],[[\\\"@selectable\\\",\\\"@formatCells\\\"],[false,true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[]],\\\"image\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,4,[]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"showCard\\\",[23,6,[]]]],[8],[0,\\\"\\\\n                            \\\"],[5,\\\"user-competences/card\\\",[],[[\\\"@width\\\",\\\"@record\\\"],[50,[23,6,[]]]]],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,4,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"]],\\\"parameters\\\":[3,4,5,6]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.cardregister.add_employer_or_user_filter\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"modal-container\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showModal\\\"]]],null]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup modal-image-popup\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"user-competences/card\\\",[],[[\\\"@width\\\",\\\"@record\\\"],[450,[22,\\\"cardRow\\\"]]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-overlay\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/cardregister/template.hbs\"}});","import { computed, get } from '@ember/object';\nimport Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    queryParams: ['date'],\n    activitycontroller: alias('model'),\n\n    date: computed(function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n\n    ago: computed('date', function () {\n        let date = moment(get(this, 'date'));\n\n        if (moment().diff(date, 'days') > 1) {\n            return date.add(1, 'day').fromNow(); // '2 days ago' etc.\n        }\n        return date.calendar().split(' ')[0]; // 'Today', 'yesterday', 'tomorrow'\n    }),\n});\n","import { inject as service } from '@ember/service';\nimport Route from '@ember/routing/route';\nimport { get } from '@ember/object';\n\nexport default Route.extend({\n    ttapi2: service(),\n    session: service(),\n\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n    },\n\n    model(params) {\n        return get(this, 'ttapi2')._get(\n            '/getUserActivity?userid=' +\n                get(this.modelFor('users.edit'), 'id') +\n                '&date=' +\n                moment(params.date).format('YYYY-MM-DD'),\n        );\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"tHoxhuXL\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"index\\\",\\\"action\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-md-3\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"date\\\",\\\"form-control\\\",[24,[\\\"date\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[22,\\\"ago\\\"],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"eq\\\",[[23,2,[]],0],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[1,[28,\\\"user\\\",[[23,1,[\\\"_id\\\",\\\"user\\\"]],\\\"icon\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"from\\\"]],\\\"HH:mm\\\"],null],false],[0,\\\" - \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"to\\\"]],\\\"HH:mm\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"actions\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[8],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[\\\"action\\\"]],\\\"insertRow\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"user.activity.user_added\\\"],[[\\\"form\\\"],[[28,\\\"collector-form-name\\\",[[23,3,[\\\"form\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[\\\"action\\\"]],\\\"updateRow\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"user.activity.user_edited\\\"],[[\\\"form\\\"],[[28,\\\"collector-form-name\\\",[[23,3,[\\\"form\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,3,[\\\"action\\\"]],\\\"findAll\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"user.activity.user_wathed\\\"],[[\\\"form\\\"],[[28,\\\"collector-form-name\\\",[[23,3,[\\\"form\\\"]]],null]]]],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"user.activity.no_actions\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/activity/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/changepassword/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditChangepasswordController;\n\nimport Ember from 'ember';\n\nimport ChangePasswordController from '../../../../controllers/changepassword';\n\nUsersEditChangepasswordController = ChangePasswordController.extend({\n    password_changed: false,\n});\n\nexport default UsersEditChangepasswordController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/changepassword/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditChangepasswordRoute;\n\nimport Ember from 'ember';\n\nimport ChangePasswordRoute from '../../../../routes/changepassword';\n\nUsersEditChangepasswordRoute = ChangePasswordRoute.extend({\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting) {\n            controller.set('password_changed', false);\n            controller.set('currentPassword', null);\n            controller.set('password', null);\n            controller.set('passwordAgain', null);\n        }\n        return this._super;\n    },\n});\n\nexport default UsersEditChangepasswordRoute;\n","export default Ember.HTMLBars.template({\"id\":\"30BNsFdJ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"password_changed\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"changepassword.password_changed\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"changeusername.returning_to_edit\\\"],null],false],[0,\\\" \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"general.returning\\\"],null]],[8],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"form\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"changePassword\\\"],[[\\\"on\\\"],[\\\"submit\\\"]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.username\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[24,[\\\"session\\\",\\\"currentUser\\\",\\\"username\\\"]],false],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.currentpassword\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\"],[\\\"password\\\",\\\"form-control add-fields\\\",\\\"currentpassword\\\",[24,[\\\"currentPassword\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.newpassword\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\"],[\\\"password\\\",\\\"form-control add-fields\\\",\\\"password\\\",[24,[\\\"password\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.newpasswordagain\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\"],[\\\"password\\\",\\\"form-control add-fields\\\",\\\"passwordagain\\\",[24,[\\\"passwordAgain\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showTitle\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"changepassword.set_info_for_password_retrieval\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showEmail\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"user.email\\\"],[[\\\"model\\\",\\\"errors\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],[24,[\\\"emailErrors\\\"]],\\\"change\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showPhone\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"user.phone\\\"],[[\\\"model\\\",\\\"errors\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],[24,[\\\"phoneErrors\\\"]],\\\"change\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"validation_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[8],[1,[22,\\\"validation_error\\\"],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changePassword\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/changepassword/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/changeusername/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditChangeusernameController;\n\nimport Ember from 'ember';\n\nUsersEditChangeusernameController = Ember.Controller.extend({\n    router: Em.inject.service(),\n    session: Em.inject.service(),\n    validated: Em.computed.and('model.isValid', 'new_username'),\n    username_changed: false,\n    old_username: null,\n    //    setOldUsername: Em.on 'init', Em.observer 'model.username', ->\n    //        username = @get 'model.username'\n    //        if username and not @get 'old_username'\n    //            @set 'old_username', username\n    editingCurrentUser: Em.computed('model.username', function () {\n        return this.get('model.username') === this.get('session.currentUser.username');\n    }),\n    actions: {\n        username_changed: function (value, fieldName) {\n            var model;\n            this.set('new_username', value);\n            model = this.get('model');\n            return model.set('username', value);\n        },\n        // validation is handled by field-comp component\n        //model.validate(['username'])\n        change_username: function (new_username) {\n            var model;\n            model = this.get('model');\n            if (model.get('isSaving')) {\n                return;\n            }\n            return model.validate(['username']).then(() => {\n                if (model.get('isSaving')) {\n                    return;\n                }\n                if (model.get('isValid')) {\n                    return model.save({ adapterOptions: { validation: 'off' } }).then(() => {\n                        this.set('username_changed', true);\n                        if (this.get('editingCurrentUser')) {\n                            return this.get('router').transitionTo('logout');\n                        } else {\n                            return Em.run.later(\n                                this,\n                                function () {\n                                    this.replaceRoute('users.edit', model.get('id'));\n                                    return this.set('username_changed', false);\n                                },\n                                2000,\n                            );\n                        }\n                    });\n                }\n            });\n        },\n    },\n});\n\nexport default UsersEditChangeusernameController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/changeusername/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditChangeusernameRoute;\n\nimport Ember from 'ember';\n\nUsersEditChangeusernameRoute = Ember.Route.extend({\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.set('old_username', model.get('username'));\n    },\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting) {\n            controller.set('username_changed', false);\n            controller.set('new_username', null);\n            controller.set('old_username', null);\n            if (controller.get('model.hasDirtyAttributes')) {\n                controller.get('model').rollbackAttributes();\n            }\n        }\n        return this._super;\n    },\n});\n\nexport default UsersEditChangeusernameRoute;\n","export default Ember.HTMLBars.template({\"id\":\"h7nCOYFG\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"username_changed\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"changeusername.username_changed\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"changeusername.returning_to_edit\\\"],null],false],[0,\\\" \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"general.returning\\\"],null]],[8],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"changeusername.current_username\\\"],null],false],[0,\\\": \\\"],[7,\\\"b\\\",true],[8],[1,[22,\\\"old_username\\\"],false],[9],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"user.username\\\"],[[\\\"fieldLabel\\\",\\\"change\\\",\\\"model\\\"],[[28,\\\"t\\\",[\\\"changeusername.new_username\\\"],null],\\\"username_changed\\\",[24,[\\\"model\\\"]]]]],false],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[4,\\\"if\\\",[[24,[\\\"editingCurrentUser\\\"]]],null,{\\\"statements\\\":[[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"changeusername.notice\\\"],null],false],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\" \\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"validated\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"general.returning\\\"],null]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"change_username\\\",[24,[\\\"new_username\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"changeusername.change\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/changeusername/template.hbs\"}});","import Route from '@ember/routing/route';\n\nexport default Route.extend({\n    model() {\n        return this.modelFor('users.edit');\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"7Dk2/JjK\",\"block\":\"{\\\"symbols\\\":[\\\"cards\\\",\\\"cardComponent\\\",\\\"card\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"user-competences\\\",null,[[\\\"user\\\"],[[24,[\\\"model\\\"]]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4\\\"],[8],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[]],\\\"expected `cardComponent` to be a contextual component but found a string. Did you mean `(component cardComponent)`? ('tt4/pods/users/edit/competence/template.hbs' @ L6:C36) \\\"],null]],[[\\\"record\\\"],[[23,3,[]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"cardregister.nocompetences\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1,2]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/competence/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nimport format from 'ember-moment/computeds/format';\n\nimport momentComputed from 'ember-moment/computeds/moment';\n\nimport config from '../../../config/environment';\n\nimport { isMobile } from 'tt4/ember-movenium/utils/gui';\n\nUsersEditController = GeneralAddController.extend({\n    moment: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    userIsNotAdmin: function () {\n        var ref;\n        return (ref = Number(this.get('model.userlevel'))) !== 5 || Ember.devModeOn === true;\n    },\n    subMenus: Em.computed('model.userlevel', function () {\n        var c, subMenus;\n        c = this.get('Collector');\n        subMenus = [\n            {\n                link: 'users.edit.index',\n                text: 'menu.edit_profile',\n            },\n            {\n                link: 'users.edit.competence',\n                text: 'submenu.user.competences',\n                needs: ['!products.personalliggareandid06', 'employer', 'products.cardregister'],\n            },\n            {\n                link: 'users.edit.id06competence',\n                text: 'submenu.user.id06competences',\n                needs: ['products.personalliggareandid06'],\n            },\n            {\n                link: 'users.edit.orientations',\n                text: 'submenu.user.orientations',\n                needs: ['orientation'],\n            },\n            {\n                link: 'users.edit.permissions',\n                text: 'submenu.user.permissions',\n                needs: ['userlevel=4,5', this.userIsNotAdmin.bind(this)],\n            },\n            {\n                link: 'firecards.index',\n                text: 'report.users.firecard',\n                needs: ['products.firecard', '!userlevel=5'],\n            },\n            {\n                link: 'users.edit.saldo',\n                text: 'submenu.user.saldo',\n                needs: ['products.saldo'],\n            },\n            {\n                link: 'users.edit.saldos_ad',\n                text: 'submenu.user.saldo',\n                needs: ['!products.saldo', 'products.mini_entry'],\n            },\n            {\n                link: 'users.edit.saldohistory',\n                text: 'report.users.saldohistory',\n                needs: ['products.saldo', '!userlevel=5'],\n            },\n            {\n                link: 'users.edit.userdata',\n                text: 'report.users.userdata',\n                needs: ['userlevel=5'],\n            },\n            {\n                link: 'users.edit.superior_replacements',\n                text: 'report.users.superior_replacements',\n                needs: ['!userlevel=1', 'products.superior_replacement'],\n            },\n        ];\n        return subMenus.filter(function (item) {\n            if (item.needs) {\n                return c.testNeeds(item.needs);\n            }\n            return true;\n        });\n    }),\n    user_created: Ember.computed('model', function () {\n        var row_info;\n        row_info = this.get('model').get('row_info');\n        return row_info.created;\n    }),\n    saldosInUse: Ember.computed(function () {\n        return this.get('Collector').testNeeds(['products.saldo']);\n    }),\n    currentSaldo: Ember.computed('model', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                return this.get('Collector')\n                    .ttapi({\n                        url: 'saldo/get_saldo?userid=' + this.get('model.id'),\n                    })\n                    .then((back) => {\n                        return resolve({\n                            value: back['saldo'] / 60,\n                            from: back['from'],\n                            to: back['to'],\n                        });\n                    });\n            }),\n        });\n    }),\n    usersImage: Ember.computed('model.image', function () {\n        var image;\n        image = this.get('model.image');\n        if (image != null && image.length > 0) {\n            if (image[0].url) {\n                return config.APP.COLLECTOR_API_URL + '/' + image[0].url;\n            } else if (image[0].file) {\n                return image[0].file;\n            } else {\n                return 'img/dyn-icon-24-user-placeholder.svg';\n            }\n        } else {\n            return 'img/dyn-icon-24-user-placeholder.svg';\n        }\n    }),\n\n    get isMobile() {\n        return isMobile();\n    },\n\n    actions: {\n        refreshSaldo: function () {\n            return this.notifyPropertyChange('currentSaldo');\n        },\n        sendTestNotification: function () {\n            var c;\n            c = this.get('Collector');\n\n            return c.ttapi({\n                url: 'send_test_notification',\n                data: {\n                    lang: this.get('intl.primaryLocale'),\n                    userid: this.get('session.currentUser.id'),\n                },\n                method: 'post',\n            });\n        },\n    },\n});\n\nexport default UsersEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/id06competence/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditId06competenceController;\n\nimport Ember from 'ember';\n\nUsersEditId06competenceController = Ember.Controller.extend({\n    intl: Ember.inject.service(),\n    errorText: Em.computed('model', function () {\n        var intl;\n        intl = this.get('intl');\n        if (!this.get('model.error')) {\n            return false;\n        }\n        return intl.t('id06competence.error.' + this.get('model.error'));\n    }),\n});\n\nexport default UsersEditId06competenceController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/id06competence/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditId06competenceRoute;\n\nimport Ember from 'ember';\n\nUsersEditId06competenceRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    model: function (params) {\n        var c, id06kort, user;\n        c = this.get('Collector');\n        user = this.modelFor('users.edit');\n        if (!user.get('id06kort')) {\n            return {\n                error: 'id06kort_not_found',\n            };\n        }\n        if (!user.get('employer.id')) {\n            return {\n                error: 'employer_not_found',\n            };\n        }\n        if (!user.get('personid')) {\n            return {\n                error: 'personid_not_found',\n            };\n        }\n        id06kort = user.get('id06kort');\n        //get user employer\n        return this.store\n            .findRecord('employer', user.get('employer.id'), {\n                reload: true,\n            })\n            .then((employer) => {\n                if (!employer.get('emp_id')) {\n                    return {\n                        error: 'employer_id_not_found',\n                    };\n                }\n                //first get cardinfo with taxnumber\n                return c\n                    .ccapi({\n                        url: 'id06-competence',\n                        data: {\n                            id: id06kort,\n                            companyid: employer.get('emp_id'),\n                            personalcode: user.get('personid'),\n                        },\n                    })\n                    .then((data) => {\n                        if (data.length === 0) {\n                            return {\n                                error: 'no_competences',\n                            };\n                        }\n                        return data;\n                    });\n            });\n    },\n});\n\nexport default UsersEditId06competenceRoute;\n","export default Ember.HTMLBars.template({\"id\":\"/+oQYFwh\",\"block\":\"{\\\"symbols\\\":[\\\"competence\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[22,\\\"errorText\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"competences\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-md-4\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbnail\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"caption\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[23,1,[\\\"name\\\"]],false],[0,\\\" (\\\"],[1,[23,1,[\\\"code\\\"]],false],[0,\\\")\\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[8],[1,[23,1,[\\\"issuer_company_name\\\"]],false],[0,\\\" - \\\"],[1,[23,1,[\\\"issuer_company_nationality\\\"]],false],[0,\\\" - \\\"],[1,[23,1,[\\\"issuer_company_registration_number\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"i\\\",true],[8],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"issued_date\\\"]],\\\"L\\\"],null],false],[0,\\\" - \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"valid_until\\\"]],\\\"L\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.nothing_found\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/id06competence/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../../controllers/general-add';\n\nimport $ from 'jquery';\n\nimport workPermitUtils from '../../../../utils/work-permit';\n\nUsersEditIndexController = GeneralAddController.extend({\n    session: Em.inject.service(),\n    Collector: Em.inject.service('collector-service'),\n    notifications: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    showResetDialog: false,\n    UsersAddIndexController: Ember.inject.controller('users/add/index'),\n    customization: Em.computed('model', function () {\n        var cust, userlevels;\n        cust = {\n            phone: {\n                template: 'users/add/phone',\n            },\n            username: {\n                translation: 'user.edit.username',\n            },\n            password: {\n                translation: 'user.edit.password',\n            },\n        };\n        if (this.get('session.currentUser.userlevel') === '1') {\n            cust.password.hide = true;\n        }\n        if (this.get('model.id') === this.get('session.currentUser.id')) {\n            cust.userlevel = {\n                features: {\n                    disabled: true,\n                },\n            };\n        } else if (\n            parseInt(this.get('session.currentUser.userlevel')) < 5 ||\n            parseInt(this.get('session.currentUser.userlevel')) === 6\n        ) {\n            // allow adding roles 1-3 and own roles\n            userlevels = Ember.get(this.get('Collector').formField('user', 'userlevel'), 'options');\n            cust.userlevel = {\n                options: userlevels\n                    .filter(function (userlevel) {\n                        return !(userlevel === '4' || userlevel === '5' || userlevel === '6');\n                    })\n                    .join(','),\n            };\n        } else if (parseInt(this.get('session.currentUser.userlevel')) > 9) {\n            cust.userlevel = {\n                features: {\n                    disabled: false,\n                },\n            };\n        }\n        if (this.get('Collector').fieldExists('user', 'taxnumber')) {\n            cust.image = {\n                template: 'users/add/image',\n                features: {\n                    hide_preview: true,\n                },\n            };\n        }\n        return cust;\n    }),\n    hasEmail: Em.computed('model.email', function () {\n        if (this.get('model.email')) {\n            return true;\n        }\n    }),\n    hasPhone: Em.computed('model.phone', function () {\n        if (this.get('model.phone')) {\n            return true;\n        }\n    }),\n    generatePassword: function () {\n        var chars, generated_password, i, rnum, string_length;\n        chars = '23456789abcdefghkmnpqrstuvwxyz';\n        string_length = 6;\n        generated_password = '';\n        i = 0;\n        while (i < string_length) {\n            rnum = Math.floor(Math.random() * chars.length);\n            generated_password += chars.substring(rnum, rnum + 1);\n            i++;\n        }\n        return generated_password;\n    },\n    actions: {\n        FieldValueUpdated: function (field, value) {\n            // set default work permit type, when nationality is changed to something else than fi\n            if (field === 'nationality' && value != 'fi') {\n                this.set('model.work_permit_type', workPermitUtils.getDefaultWorkPermitType(value));\n            }\n        },\n        clear: function () {\n            $('.modal').modal('hide');\n            return this.set('showResetDialog', false);\n        },\n        generalAddAction: async function (type, param) {\n            if (type === 'getImage') {\n                this.set('loading', true);\n                await this.UsersAddIndexController.getImage(this.model);\n                this.set('loading', false);\n            }\n            if (type === 'changeCountry') {\n                return this.changeCountry(param);\n            }\n            if (type === 'resetPsw') {\n                return this.resetPsw();\n            }\n        },\n        reset_and_send: function () {\n            var company, model, psw, username;\n            this.set('showResetDialog', false);\n            model = this.get('model');\n            psw = this.generatePassword();\n            model.set('password', psw);\n            username = model.get('username');\n            company = this.get('session.currentUser.company');\n            return model.save().then(() => {\n                var email_content, email_title;\n                if (this.get('by_email') && model.get('email')) {\n                    email_title = this.get('intl').t('changepassword.reset_email_title');\n                    email_content = this.get('intl').t('changepassword.reset_email_content', {\n                        psw: psw,\n                        username: username,\n                        company: company,\n                    });\n                    this.get('notifications').success(this.get('intl').t('general.email_sent'), {\n                        autoClear: true,\n                    });\n                    this.Collector.ttapi({\n                        url: 'sendPasswordReset',\n                        data: {\n                            userid: model.get('id'),\n                            title: email_title,\n                            content: email_content,\n                        },\n                        method: 'post',\n                    });\n                }\n                if (this.get('by_sms') && model.get('phone')) {\n                    this.get('notifications').success(this.get('intl').t('general.sms_sent'), {\n                        autoClear: true,\n                    });\n                    return this.Collector.ttapi({\n                        url: 'sendSms',\n                        data: {\n                            phone: model.get('phone'),\n                            messageid: 'password_reset',\n                            values: {\n                                userid: model.get('id'),\n                            },\n                            language: moment.locale(),\n                        },\n                        method: 'post',\n                    });\n                }\n            });\n        },\n        removeModal: function () {\n            $('.modal').modal('hide');\n            return this.set('showResetDialog', false);\n        },\n    },\n    resetPsw: function () {\n        this.set('showResetDialog', true);\n        return false;\n    },\n    changeCountry: function (countrycode) {\n        var phone, val;\n        val = this.get('model.phone');\n        if (!val) {\n            phone = countrycode;\n        } else if (val.slice(0, 1) !== '+') {\n            phone = countrycode + this.get('model.phone');\n        } else {\n            phone = val;\n        }\n        return this.set('model.phone', phone);\n    },\n    fieldSettings: Em.computed('model', function () {\n        var i_am_this_person;\n        if (this.get('session.currentUser.id') === this.get('model.id')) {\n            i_am_this_person = true;\n        } else {\n            i_am_this_person = false;\n        }\n        return Em.A({\n            edit: true,\n            own_profile: i_am_this_person,\n        });\n    }),\n});\n\nexport default UsersEditIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../../routes/general-add';\n\nUsersEditIndexRoute = GeneralAddRoute.extend({\n    edit: true,\n    controllerName: 'users/edit/index',\n    model: function () {\n        return this.modelFor('users.edit');\n    },\n});\n\nexport default UsersEditIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"ODPonwLH\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\"],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"],[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHidden\\\"],[[23,0,[\\\"showResetDialog\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showResetDialog\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"changepassword.reset_dialog_title\\\"],null],false],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"changepassword.reset_dialog_text\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-horizontal\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasEmail\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-2\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"form-control\\\",\\\"checkbox\\\",[24,[\\\"by_email\\\"]],\\\"EmailCheck\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"changepassword.by_email\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasPhone\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-2\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"class\\\",\\\"type\\\",\\\"checked\\\",\\\"id\\\"],[\\\"form-control\\\",\\\"checkbox\\\",[24,[\\\"by_sms\\\"]],\\\"SmsCheck\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"changepassword.by_sms\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"default\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showResetDialog\\\"]]],null],false],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"primary\\\",[28,\\\"action\\\",[[23,0,[]],\\\"reset_and_send\\\"],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/index/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"p3e6WnTE\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/orientations/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersViewOrientationsController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../../controllers/general-report';\n\nimport { alias } from '@ember/object/computed';\n\nUsersViewOrientationsController = GeneralReportController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('orientations/add'),\n    content: alias('model'),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'ori_site',\n        }),\n    ]),\n    ori_site: null,\n    projectObserver: function () {\n        return this.set('page', 1);\n    }.observes('project'),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideEdit: true,\n            hideRemove: true,\n        }),\n    }),\n    queryParams: [\n        'page',\n        'user',\n        {\n            ori_site: {\n                as: 'project',\n            },\n        },\n    ],\n    filter: false,\n    search: false,\n    form: 'orientation',\n    localStorageKey: 'Tt4.Orientation',\n    showColumns: [\n        'ori_date',\n        'special_warning',\n        'ori_place',\n        'ori_user',\n        'ori_site',\n        'ori_employer',\n        'sign_emp_img',\n        'sign_per_img',\n    ],\n    cancelRoute: 'orientations.reports',\n    orientations_on: Ember.computed(function () {\n        return this.get('Collector').testNeeds(['orientation']);\n    }),\n    showOriButton: Em.computed('ori_site', 'content.meta.count', function () {\n        if (\n            this.get('ori_site') &&\n            !this.get('ori_site').includes(',') &&\n            this.get('content.meta.count') === 0\n        ) {\n            return true;\n        }\n    }),\n    actions: {\n        orientate: function () {\n            var addController, userid;\n            userid = [parseInt(this.get('model.query.ori_user'))];\n            addController = this.get('addController');\n            this.get('store')\n                .findRecord('project', this.get('ori_site'))\n                .then((project) => {\n                    addController.set('users', userid);\n                    this.set('session.currentUser.currentMySite', project);\n                    return this.transitionToRoute('orientations.add');\n                });\n        },\n    },\n});\n\nexport default UsersViewOrientationsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/orientations/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditOrientationsRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../../routes/general-report';\n\nUsersEditOrientationsRoute = GeneralReportRoute.extend({\n    Collector: Ember.inject.service('collector-service'),\n    queryParams: {\n        ori_date: {\n            refreshModel: true,\n            replace: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        ori_site: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var user;\n        if (!this.get('Collector').testNeeds(['orientation'])) {\n            return;\n        }\n        params = this._super(params);\n        params.ori_date = params.date;\n        delete params.date;\n        if (params.project) {\n            if (params.project !== 'null') {\n                params.ori_site = params.project;\n            }\n        }\n        delete params.project;\n        params.sideload = true;\n        user = this.modelFor('users.edit');\n        params.ori_user = user.get('id');\n        return this.store.query('orientation', params);\n    },\n});\n\nexport default UsersEditOrientationsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"RFNGEr6g\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"orientations_on\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showOriButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group pull-left report-more\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"orientate\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.actions.orientateUsers\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"formatter\\\",\\\"limit\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"formatter\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/orientations/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/permissions/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditPermissionsRoute;\n\nimport Ember from 'ember';\n\nUsersEditPermissionsRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    model: function () {\n        var c, filteredLinks, links, record;\n        c = this.get('Collector');\n        record = this.modelFor('users.edit');\n        links = [\n            {\n                link: 'user',\n                fields: ['firstname', 'lastname'],\n            },\n            {\n                link: 'project',\n                fields: ['number', 'name'],\n                needs: ['project'],\n            },\n            {\n                link: 'task',\n                fields: ['name'],\n                needs: ['task'],\n            },\n            {\n                link: 'employer',\n                fields: ['name'],\n                needs: ['employer'],\n                disabled: ['!employer@edit'], // skip employer-permissions editing if user doesn't have permissions to edit employers (ie subcontractor user)\n            },\n        ];\n\n        // we can also use forms that have the feature use_linker as a link\n        let forms = this.Collector.forms();\n        for (let form in forms) {\n            if (forms[form].features?.use_linker) {\n                links.push({\n                    link: form,\n                    fields: this.returnLinkableFields(forms[form].objects),\n                    needs: [form],\n                    custom_name: forms[form].name,\n                });\n            }\n        }\n\n        filteredLinks = links.filter((item) => {\n            var ref;\n            if (item.disabled) {\n                item.disabled = c.testNeeds(item.disabled);\n            }\n            if (item.link === 'user' && c.testNeeds(['employer'])) {\n                item.fields.push('employer.name');\n            }\n            if (\n                item.link === 'user' &&\n                (ref = record.get('userlevel')) !== '6' &&\n                ref !== '5' &&\n                ref !== '4' &&\n                ref !== '3'\n            ) {\n                return false;\n            }\n            if (item.needs) {\n                return c.testNeeds(item.needs);\n            }\n            return true;\n        });\n        return Ember.RSVP.hash({\n            record: record,\n            linkers: filteredLinks,\n        });\n    },\n    // goes through the objects in the form and returns the fields that can be used in linker (the fields that have the feature \"show_in_linker\")\n    returnLinkableFields: function (fields) {\n        let linkableFields = [];\n        for (let field in fields) {\n            if (fields[field].features?.show_in_linker) {\n                linkableFields.push(field);\n            }\n        }\n        return linkableFields;\n    },\n});\n\nexport default UsersEditPermissionsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"O/5PSDEG\",\"block\":\"{\\\"symbols\\\":[\\\"link\\\"],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"users.edit.permissions.title\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"users.edit.permissions.description\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"linkers\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[4,\\\"if\\\",[[23,1,[\\\"custom_name\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[23,1,[\\\"custom_name\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"user.edit.permissions.\\\",[23,1,[\\\"link\\\"]]],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info mt-5\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-info-sign\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"user.edit.permissions.no_permission_to_edit\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"collector/linker-comp\\\",null,[[\\\"model\\\",\\\"link\\\",\\\"show_fields\\\",\\\"linkTo\\\"],[[24,[\\\"model\\\",\\\"record\\\"]],[23,1,[\\\"link\\\"]],[23,1,[\\\"fields\\\"]],\\\"user\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/permissions/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditRoute;\n\nimport Ember from 'ember';\n\nimport { scheduleOnce } from '@ember/runloop';\nimport GeneralAddRoute from '../../../routes/general-add';\n\nUsersEditRoute = GeneralAddRoute.extend({\n    modelName: 'user',\n    controllerName: 'users/edit',\n    edit: true,\n    afterSave: 'users',\n\n    queryParams: {\n        anchor: {\n            refreshModel: false,\n            defaultValue: null\n        },\n        profileImgClicked: {\n            refreshModel: false,\n            defaultValue: null\n        }\n    },\n\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        controller.notifyPropertyChange('currentSaldo');\n        this.scrollToAnchor();\n    },\n\n    scrollToAnchor() {\n        scheduleOnce('afterRender', this, function() {\n            const { anchor, profileImgClicked } = this.paramsFor(this.routeName);\n            if (anchor && profileImgClicked) {\n                const element = document.querySelector(`[data-anchor=\"${anchor}\"]`);\n                if (element) {\n                    element.scrollIntoView({ behavior: 'smooth' });\n                }\n            }\n        });\n    }\n});\n\nexport default UsersEditRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/saldo/calendar-card/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditSaldoCalendarCardComponent;\n\nimport Ember from 'ember';\n\nimport { htmlSafe } from '@ember/string';\n\nUsersEditSaldoCalendarCardComponent = Ember.Component.extend({\n    intl: Ember.inject.service(),\n    plus: Ember.computed('day_saldo', function () {\n        if (this.get('day_saldo') > 0) {\n            return '+';\n        }\n    }),\n    positiveornegative: Ember.computed('day_saldo', function () {\n        if (this.get('day_saldo') > 0) {\n            return 'positive';\n        }\n        if (this.get('day_saldo') < 0) {\n            return 'negative';\n        }\n        return '';\n    }),\n    emptyday: Ember.computed('saldo', function () {\n        if (\n            parseInt(this.get('saldo.workday_length'), 10) === 0 &&\n            parseInt(this.get('saldo.workday_hours'), 10) === 0\n        ) {\n            return true;\n        }\n    }),\n    notStarted: Ember.computed('saldo', function () {\n        if (this.get('saldo.saldo') === 'not_started') {\n            return true;\n        }\n    }),\n    notStartedText: Ember.computed(function () {\n        return htmlSafe(this.get('intl').t('saldo.calculation_not_started'));\n    }),\n    notCalculatedYet: Ember.computed('saldo', function () {\n        var diff, today;\n        today = moment().format('YYYY-MM-DD');\n        diff = moment.utc(this.get('saldo.date')).diff(moment.utc(today), 'days');\n        if (diff > 0) {\n            return true;\n        }\n    }),\n    day_saldo: Ember.computed('saldo', function () {\n        var saldo, saldoHours;\n        saldo = this.get('saldo');\n        saldoHours = saldo.saldo / 60;\n        if (saldo.cut) {\n            saldoHours -= saldo.cut / 60;\n        }\n        return saldoHours;\n    }),\n    day_saldo_over_max: Ember.computed('saldo_settings', 'saldo', function () {\n        if (this.saldo.dailySaldoCut) {\n            return this.saldo.dailySaldoCut;\n        } else {\n            return this.saldo.saldo > this.saldo_settings.dailymaximum;\n        }\n    }),\n    workday_length: Ember.computed('saldo', function () {\n        var saldo;\n        saldo = this.get('saldo');\n        return saldo.workday_length / 60;\n    }),\n    workday_hours: Ember.computed('saldo', function () {\n        var saldo;\n        saldo = this.get('saldo');\n        return saldo.workday_hours / 60;\n    }),\n    cumulative: Ember.computed('saldo', function () {\n        var saldo;\n        saldo = this.get('saldo');\n        return saldo.cumulative / 60;\n    }),\n    cumulative_under_min: Ember.computed('saldo_settings', 'saldo', function () {\n        return this.get('saldo.cumulative') < this.get('saldo_settings.minimum') * -1;\n    }),\n    cumulative_over_max: Ember.computed('saldo_settings', 'saldo', function () {\n        return this.get('saldo.cumulative') > this.get('saldo_settings.maximum');\n    }),\n    cut: Ember.computed('saldo', function () {\n        var saldo;\n        saldo = this.get('saldo');\n        if (saldo.cut) {\n            return saldo.cut / 60;\n        } else {\n            return null;\n        }\n    }),\n    actions: {\n        click: function () {\n            if (this.get('click')) {\n                return this.click();\n            }\n        },\n    },\n});\n\nexport default UsersEditSaldoCalendarCardComponent;\n","export default Ember.HTMLBars.template({\"id\":\"l306III+\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[14,1],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"insights-saldo\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"notStarted\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-saldo-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"saldo.daily_saldo_acc\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",false],[12,\\\"class\\\",[22,\\\"positiveornegative\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"click\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"emptyday\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"plus\\\"],false],[1,[28,\\\"format-hours\\\",[[24,[\\\"day_saldo\\\"]],\\\"00:00h\\\",false,true],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"day_saldo_over_max\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Error\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"day_saldo_over_max\\\"]],true],null],\\\"saldo.saldos_over_daily_max_limit.not_cutted\\\",\\\"saldo.saldos_over_daily_max_limit\\\"],null]],[[\\\"hours\\\"],[[28,\\\"format-minutes\\\",[[24,[\\\"day_saldo_over_max\\\"]]],[[\\\"hideIcon\\\",\\\"showLeadingZeros\\\"],[true,true]]]]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                 \\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"big-saldo-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"saldo.cumulative_saldo_acc\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"cumulative-text\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"cumulative\\\"]],\\\"00:00h\\\",false,true],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"cumulative_under_min\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Error\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"saldo.min_saldos_under_limit\\\"],null]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"cumulative_over_max\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Error\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"saldo.max_saldos_over_limit\\\"],null]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"cut\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Error\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"saldo.max_saldos_cut_by\\\"],[[\\\"cut\\\"],[[28,\\\"format-hours\\\",[[24,[\\\"cut\\\"]],\\\"00:00h\\\",false,true],null]]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"not-started-insights\\\"],[8],[1,[22,\\\"notStartedText\\\"],false],[9],[0,\\\" \\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/saldo/calendar-card/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/saldo/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditSaldoController;\n\nimport Controller from '@ember/controller';\n\nimport { inject as service } from '@ember/service';\n\nimport { get, set, computed } from '@ember/object';\n\nimport { alias } from '@ember/object/computed';\n\nUsersEditSaldoController = Controller.extend({\n    Collector: service('collector-service'),\n    session: service(),\n    queryParams: ['date'],\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    saldos: alias('model.list'),\n    showRecalculateButton: computed(function () {\n        if (\n            this.get('session.session.content.authenticated.scope') ||\n            this.get('Collector').testNeeds(['development'])\n        ) {\n            return true;\n        }\n    }),\n    modalTitle: computed('showDate', function () {\n        return moment(this.get('showDate')).format('L');\n    }),\n    actions: {\n        dayClicked: function (date) {\n            return set(this, 'showDate', date);\n        },\n        //@get('Collector').ttapi\n        //    url: \"saldo/calculateSaldos?date=\" + date\n        recalculate: function () {\n            var between, date, enddate, startdate;\n            date = get(this, 'date');\n            startdate = date.split('_')[0];\n            enddate = date.split('_')[1];\n            if (moment().isBefore(enddate)) {\n                enddate = moment().format('YYYY-MM-DD');\n            }\n            between = startdate + '_' + enddate;\n            return this.get('Collector')\n                .ttapi({\n                    url:\n                        'saldo/calculateSaldos?date=' +\n                        between +\n                        '&userid=' +\n                        get(this, 'model.user.id'),\n                })\n                .then(() => {\n                    return this.send('refreshModel');\n                });\n        },\n        closeModal: function () {\n            return set(this, 'showDate', null);\n        },\n    },\n});\n\nexport default UsersEditSaldoController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/saldo/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditSaldoRoute;\n\nimport Ember from 'ember';\n\nUsersEditSaldoRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var enddate, startdate, user;\n        user = this.modelFor('users.edit');\n        startdate = Ember.get(params, 'date').split('_')[0];\n        enddate = Ember.get(params, 'date').split('_')[1];\n        return Ember.RSVP.hash({\n            list: this.get('Collector').ttapi({\n                url:\n                    'saldo/get_saldo_list?startdate=' +\n                    startdate +\n                    '&enddate=' +\n                    enddate +\n                    '&userid=' +\n                    user.get('id'),\n            }),\n            user: user,\n            saldo_settings: this.get('Collector').ttapi({\n                url: 'saldo/saldoSettings?userid=' + user.get('id'),\n            }),\n        });\n    },\n    actions: {\n        refreshModel: function () {\n            return this.refresh();\n        },\n    },\n});\n\nexport default UsersEditSaldoRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/saldo/saldo-deducter/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditSaldoSaldoDeducterComponent;\n\nimport { set, get, computed } from '@ember/object';\n\nimport recordComp from '../../../../collector/record-comp/component';\n\nUsersEditSaldoSaldoDeducterComponent = recordComp.extend({\n    layoutName: 'collector/record-comp',\n    form: 'saldodeducter',\n    showFields: computed('fields', 'record', function () {\n        if (this._super()) {\n            return this._super().filter(function (item) {\n                var ref;\n                return !((ref = get(item, 'name')) === 'addhours');\n            });\n        }\n    }),\n    actions: {\n        save: function () {\n            var record;\n            record = get(this, 'record');\n            set(record, 'addhours', this.get('adding'));\n            return this._super();\n        },\n    },\n});\n\nexport default UsersEditSaldoSaldoDeducterComponent;\n","import Component from '@ember/component';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\nimport { getOwner } from '@ember/application';\n\nexport default Component.extend({\n    ttapi: service(),\n    intl: service(),\n    notifications: service(),\n    tagName: '',\n\n    actions: {\n        openSaldostartModal() {\n            set(this, 'showSaldoStart', true);\n        },\n        closeSaldostartModal() {\n            this.refreshSaldo();\n            set(this, 'showSaldoStart', false);\n        },\n        saveSaldostart() {\n            get(this, 'ttapi')\n                ._post('/saldo/set_saldo_start', {\n                    id: get(this, 'userid'),\n                    startdate: get(this, 'startdate'),\n                })\n                .then((result) => this.showError(result));\n            let enddate = moment().endOf('week').format('YYYY-MM-DD');\n            enddate = moment().isBefore(enddate) ? moment().format('YYYY-MM-DD') : enddate;\n            let between = get(this, 'startdate') + '_' + enddate;\n            get(this, 'Collector')\n                .ttapi({\n                    url: 'saldo/calculateSaldos?date=' + between + '&userid=' + get(this, 'userid'),\n                })\n                .then(this._refreshRoute.bind(this));\n        },\n    },\n    _refreshRoute() {\n        let controller = getOwner(this).lookup('controller:application');\n        let route = getOwner(this).lookup('route:' + get(controller, 'currentRouteName'));\n        route.refresh();\n        this.send('closeSaldostartModal');\n    },\n    showError(result) {\n        if (result.error)\n            this.notifications.error(this.intl.t('saldo_start.date_too_old'), { autoClear: true });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"X30cDqA1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openSaldostartModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"saldo.edit_startdate\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSaldoStart\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"report.saldo.set_start\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"closeSaldostartModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"report.user.set_saldo_start\\\"],null],false],[0,\\\": \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"date\\\",[24,[\\\"startdate\\\"]],\\\"form-control\\\"]]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"name\\\",\\\"save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveSaldostart\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/saldo/saldo-start/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/saldo/show-date/component.coffee.old\n// Generated by CoffeeScript 2.6.1\n\n// TODO: There seems to be a newer SaldoInsights component in app/pods/components/saldo-insights/component.js\n// that might replace this one. It is unclear if things only in this component like \"bankdeducters\", \"halfday_absences\" and\n// \"fullday_absences\" are still needed or can we switch to the newer component entirely and remove this one.\n\nvar UsersEditSaldoShowDateComponent;\n\nimport Ember from 'ember';\n\nUsersEditSaldoShowDateComponent = Ember.Component.extend({\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    bankDeducerColumns: Ember.computed('userid', 'date', function () {\n        var arr, promise;\n        arr = Ember.A([]);\n        if (this.get('Collector').testNeedsOne('products.worktimebank')) {\n            promise = this.get('store').query('bank', {\n                skipsaldo: 'on',\n            });\n            promise.then((banks) => {\n                return banks.forEach((bank) => {\n                    return arr.pushObject(bank.get('column'));\n                });\n            });\n        }\n        return arr;\n    }),\n    userid: Ember.computed('user', function () {\n        if (Ember.typeOf(this.get('user')) === 'instance') {\n            return this.get('user.id');\n        } else {\n            return this.get('user');\n        }\n    }),\n    deducters: Ember.computed('userid', 'date', function () {\n        return this.get('store').query('saldodeducter', {\n            date: this.get('date'),\n            user: this.get('userid'),\n            _v: 2,\n        });\n    }),\n    worktimes: Ember.computed('userid', 'date', function () {\n        var params;\n        params = {\n            date: this.get('date'),\n            user: this.get('userid'),\n            sideload: true,\n        };\n        //if @get('Collector').fieldExists('worktime', 'affects_overtime')\n        //   params['affects_overtime'] = \"off\";\n        return this.get('store').query('worktime', params);\n    }),\n    absences: Ember.computed('userid', 'date', 'saldo_settings', function () {\n        var params;\n        if (!this.get('Collector').testNeeds(['abcense'])) {\n            return [];\n        }\n        params = {\n            startdate_enddate: this.get('date') + '_' + this.get('date'),\n            user: this.get('userid'),\n            sideload: ['abcensetype.name', 'abcensetype.usesholiday'],\n        };\n        return this.get('store').query('abcense', params);\n    }),\n    absences_for_date: Ember.computed('date', 'absences.[]', function () {\n        var date, saldo_absence_id;\n        date = this.get('date');\n        saldo_absence_id = this.get('saldo_settings.saldo_absence_id');\n        return this.get('absences').filter((absence) => {\n            return (\n                absence.get('abcensetype.id') !== saldo_absence_id &&\n                absence.get('abcensetype.usesholiday') !== 'saldo' &&\n                absence.get('startdate') <= date &&\n                absence.get('enddate') >= date\n            );\n        });\n    }),\n    fullday_absences: Ember.computed('absences_for_date.[]', function () {\n        return this.get('absences_for_date').filter((absence) => {\n            return absence.get('dayamount');\n        });\n    }),\n    halfday_absences: Ember.computed('absences_for_date.[]', function () {\n        return this.get('absences_for_date').filter((absence) => {\n            return !absence.get('dayamount');\n        });\n    }),\n    saldo_absences: Ember.computed('date', 'absences.[]', function () {\n        var date, saldo_absence_id;\n        date = this.get('date');\n        saldo_absence_id = this.get('saldo_settings.saldo_absence_id');\n        return this.get('absences').filter((absence) => {\n            return (\n                (absence.get('abcensetype.id') === saldo_absence_id ||\n                    absence.get('abcensetype.usesholiday') === 'saldo') &&\n                absence.get('startdate') <= date &&\n                absence.get('enddate') >= date\n            );\n        });\n    }),\n    hourSum: Ember.computed(\n        'worktimes.[]',\n        'deducters.[]',\n        'fullday_absences.[]',\n        'halfday_absences.[]',\n        'workday_length',\n        'bankDeducerColumns.[]',\n        function () {\n            var bankDeductionsSum,\n                col,\n                i,\n                len,\n                mark_sum_zero,\n                max_saldo_over,\n                ref,\n                sum,\n                tmp_sum,\n                totalsum;\n            sum = 0;\n            bankDeductionsSum = 0;\n            totalsum = 0;\n            max_saldo_over = false;\n            mark_sum_zero = false;\n            if (this.get('workday_length')) {\n                this.get('worktimes').forEach((row) => {\n                    if (row.get('typeofwork') === 'piece') {\n                        return;\n                    }\n                    if (row.get('affects_overtime') && row.get('affects_overtime') !== 'off') {\n                        mark_sum_zero = true;\n                    }\n                    return (sum += row.get('work_hours'));\n                });\n                this.get('deducters').forEach((row) => {\n                    return (sum = row.get('addhours')\n                        ? sum + row.get('hours')\n                        : sum - row.get('hours'));\n                });\n                this.get('fullday_absences').forEach((row) => {\n                    return (sum += this.get('workday_length'));\n                });\n                this.get('halfday_absences').forEach((row) => {\n                    return (sum += row.get('absence_hours'));\n                });\n                ref = this.get('bankDeducerColumns');\n                for (i = 0, len = ref.length; i < len; i++) {\n                    col = ref[i];\n                    this.get('worktimes').forEach((worktime) => {\n                        if (worktime.get(col)) {\n                            sum -= worktime.get(col);\n                            console.log('summing ', worktime.get(col));\n                            return (bankDeductionsSum += worktime.get(col));\n                        }\n                    });\n                }\n                tmp_sum = sum - this.get('workday_length');\n                if (mark_sum_zero && tmp_sum >= 0) {\n                    totalsum = 0;\n                } else if (mark_sum_zero && tmp_sum <= 0) {\n                    totalsum = sum - this.get('workday_length');\n                    mark_sum_zero = false;\n                } else {\n                    totalsum = sum - this.get('workday_length');\n                }\n                if (\n                    this.get('saldo_settings.auto_cut') &&\n                    this.get('saldo_settings.dailymaximum') > 0 &&\n                    totalsum > this.get('saldo_settings.dailymaximum') / 60\n                ) {\n                    totalsum = this.get('saldo_settings.dailymaximum') / 60;\n                    max_saldo_over = true;\n                }\n            }\n            return {\n                sum: totalsum,\n                bank_deductions: bankDeductionsSum,\n                max_saldo_over: max_saldo_over,\n                affects_overtime_info: mark_sum_zero,\n            };\n        },\n    ),\n    plus: Ember.computed('hourSum', function () {\n        if (this.get('hourSum') > 0) {\n            return '+';\n        }\n    }),\n    didReceiveAttrs: function () {\n        if (this.get('workday_list')) {\n            return this.set(\n                'workday_length',\n                this.get('workday_list')[this.get('date')].workday_length / 60,\n            );\n        } else {\n            return this.get('Collector')\n                .ttapi({\n                    url:\n                        'saldo/get_saldo_list?startdate=' +\n                        this.get('date') +\n                        '&enddate=' +\n                        this.get('date') +\n                        '&userid=' +\n                        this.get('user.id'),\n                })\n                .then((back) => {\n                    return this.set('workday_length', back[this.get('date')].workday_length / 60);\n                });\n        }\n    },\n});\n\nexport default UsersEditSaldoShowDateComponent;\n","export default Ember.HTMLBars.template({\"id\":\"0606dvaK\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\",\\\"row\\\",\\\"row\\\",\\\"row\\\",\\\"row\\\",\\\"&default\\\"],\\\"statements\\\":[[14,6],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"or\\\",[[28,\\\"is-pending\\\",[[24,[\\\"worktimes\\\"]]],null],[28,\\\"is-pending\\\",[[24,[\\\"hourSum\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"worktimes\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"typeofwork\\\"]],\\\"piece\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"do-not-sum\\\"],[8],[1,[28,\\\"t\\\",[\\\"saldo.worktime\\\"],null],false],[0,\\\" (\\\"],[1,[28,\\\"t\\\",[\\\"worktime.typeofwork.piece\\\"],null],false],[0,\\\")\\\"],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"do-not-sum\\\"],[8],[1,[23,5,[\\\"project\\\",\\\"name\\\"]],false],[0,\\\" \\\"],[1,[23,5,[\\\"starttime\\\"]],false],[0,\\\"-\\\"],[1,[23,5,[\\\"endtime\\\"]],false],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"hours\\\"],[8],[1,[28,\\\"format-hours\\\",[0],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.worktime\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[23,5,[\\\"project\\\",\\\"name\\\"]],false],[0,\\\" \\\"],[1,[23,5,[\\\"starttime\\\"]],false],[0,\\\"-\\\"],[1,[23,5,[\\\"endtime\\\"]],false],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"hours\\\"],[8],[1,[28,\\\"format-hours\\\",[[23,5,[\\\"work_hours\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.worktime\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"hours\\\"],[8],[1,[28,\\\"format-hours\\\",[0],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"each\\\",[[24,[\\\"fullday_absences\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.absence_fullday\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[23,4,[\\\"abcensetype\\\",\\\"name\\\"]],false],[0,\\\" \\\"],[1,[23,4,[\\\"startdate\\\"]],false],[0,\\\"-\\\"],[1,[23,4,[\\\"enddate\\\"]],false],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"hours\\\"],[8],[1,[28,\\\"format-hours\\\",[[24,[\\\"workday_length\\\"]]],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[4,\\\"each\\\",[[24,[\\\"halfday_absences\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.absence_halfday\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[23,3,[\\\"abcensetype\\\",\\\"name\\\"]],false],[0,\\\" \\\"],[4,\\\"if\\\",[[23,3,[\\\"starttime\\\"]]],null,{\\\"statements\\\":[[1,[23,3,[\\\"starttime\\\"]],false],[0,\\\"-\\\"],[1,[23,3,[\\\"endtime\\\"]],false]],\\\"parameters\\\":[]},null],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"hours\\\"],[8],[1,[28,\\\"format-hours\\\",[[23,3,[\\\"absence_hours\\\"]]],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[4,\\\"each\\\",[[24,[\\\"deducters\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.saldo_deduction\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"description\\\"]],false],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"hours\\\"],[8],[4,\\\"if\\\",[[23,2,[\\\"addhours\\\"]]],null,{\\\"statements\\\":[[0,\\\"+\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"-\\\"]],\\\"parameters\\\":[]}],[1,[28,\\\"format-hours\\\",[[23,2,[\\\"hours\\\"]]],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.workday_length\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"hours\\\"],[8],[0,\\\"-\\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"workday_length\\\"]]],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"hourSum\\\",\\\"bank_deductions\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.bank_deductions\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"hours\\\"],[8],[0,\\\"-\\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"hourSum\\\",\\\"bank_deductions\\\"]]],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[10,\\\"class\\\",\\\"sum\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.workday_sum\\\"],null],false],[9],[7,\\\"td\\\",true],[8],[9],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"hours\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[22,\\\"plus\\\"],false],[1,[28,\\\"format-hours\\\",[[24,[\\\"hourSum\\\",\\\"sum\\\"]]],null],false],[4,\\\"if\\\",[[24,[\\\"hourSum\\\",\\\"max_saldo_over\\\"]]],null,{\\\"statements\\\":[[0,\\\"*\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hourSum\\\",\\\"affects_overtime_info\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"strong\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.calculated_to_overtime\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hourSum\\\",\\\"max_saldo_over\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        * \\\"],[1,[28,\\\"t\\\",[\\\"saldo.daily_max_over\\\"],null],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saldo_absences\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-info-sign\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.saldo_absences\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"saldo_absences\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[23,1,[\\\"abcensetype\\\",\\\"name\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"starttime\\\"]],false],[0,\\\"-\\\"],[1,[23,1,[\\\"endtime\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"format-hours\\\",[[23,1,[\\\"absence_hours\\\"]]],null],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/saldo/show-date/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"dWsuAXE6\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\",\\\"index\\\",\\\"specialDay\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"calendar-report\\\",null,[[\\\"date\\\"],[[24,[\\\"date\\\"]]]],{\\\"statements\\\":[[4,\\\"calendar-report-day\\\",null,[[\\\"day\\\",\\\"specialDay\\\"],[[23,1,[]],[23,3,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"saldos\\\"]],[23,1,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"users/edit/saldo/calendar-card\\\",null,[[\\\"saldo\\\",\\\"click\\\",\\\"saldo_settings\\\"],[[28,\\\"get\\\",[[24,[\\\"saldos\\\"]],[23,1,[]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"dayClicked\\\",[23,1,[]]],null],[24,[\\\"model\\\",\\\"saldo_settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2,3]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRecalculateButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"recalculate\\\"]],[8],[1,[28,\\\"t\\\",[\\\"saldo.recalculate\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showDate\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"modalTitle\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"users/edit/saldo/show-date\\\",null,[[\\\"date\\\",\\\"user\\\",\\\"workday_list\\\",\\\"saldo_settings\\\"],[[24,[\\\"showDate\\\"]],[24,[\\\"model\\\",\\\"user\\\"]],[24,[\\\"model\\\",\\\"list\\\"]],[24,[\\\"model\\\",\\\"saldo_settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/saldo/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/saldohistory/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditSaldohistoryController;\n\nimport Ember from 'ember';\n\nimport { computed } from '@ember/object';\n\nUsersEditSaldohistoryController = Ember.Controller.extend({\n    reportFilter: computed('model', function () {\n        return [\n            {\n                name: 'user',\n                value: this.get('model.id'),\n            },\n        ];\n    }),\n    rowActions: [\n        {\n            action: 'rowHistory',\n            icon: 'move move-Search',\n        },\n    ],\n});\n\nexport default UsersEditSaldohistoryController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/edit/saldohistory/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditSaldohistoryRoute;\n\nimport Ember from 'ember';\n\nUsersEditSaldohistoryRoute = Ember.Route.extend();\n\nexport default UsersEditSaldohistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"NVrZGZu1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row report-main-content\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"form\\\",\\\"rowActions\\\",\\\"query\\\"],[\\\"saldodeducter\\\",[24,[\\\"rowActions\\\"]],[24,[\\\"reportFilter\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/saldohistory/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"1ynvepbj\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"promo-ad\\\",[],[[\\\"@background\\\",\\\"@promoClass\\\",\\\"@product\\\"],[\\\"saldos\\\",\\\"left-align\\\",\\\"saldo\\\"]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/saldos_ad/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"OszqUlDq\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@selectable\\\"],[\\\"superiorreplacement\\\",true]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Add\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Filters\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/superior_replacements/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"MPf5exr9\",\"block\":\"{\\\"symbols\\\":[\\\"sublink\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container-fluid\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-3 col-md-4 col-sm-6 col-xs-6 my-profile-circle-image-div\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"my-profile-circle-image img-circle\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[22,\\\"usersImage\\\"],\\\"');\\\"]]],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-6 col-md-6 col-sm-6 col-xs-8\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[24,[\\\"model\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"model\\\",\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"span\\\",true],[8],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.employee_since\\\"],null],false],[0,\\\": \\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"model\\\",\\\"row_info\\\",\\\"created\\\"]],\\\"LLL\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[8],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.last_logged\\\"],null],false],[0,\\\"\\\\n                : \\\"],[1,[28,\\\"if\\\",[[24,[\\\"model\\\",\\\"row_info\\\",\\\"last_logged\\\"]],[28,\\\"moment-format\\\",[[24,[\\\"model\\\",\\\"row_info\\\",\\\"last_logged\\\"]],\\\"LLL\\\"],[[\\\"allow-empty\\\"],[true]]],[28,\\\"t\\\",[\\\"user.last_logged.never\\\"],null]],null],false],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saldosInUse\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[8],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.usersaldo\\\"],null],false],[0,\\\":\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"currentSaldo\\\",\\\"isPending\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"currentSaldo\\\",\\\"value\\\"]]],null],false],[0,\\\" (\\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"currentSaldo\\\",\\\"from\\\"]],\\\"L\\\"],null],false],[0,\\\"-\\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"currentSaldo\\\",\\\"to\\\"]],\\\"L\\\"],null],false],[0,\\\") \\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"needs\\\",[\\\"userlevel=1?\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"users/edit/saldo/saldo-start\\\",null,[[\\\"userid\\\",\\\"startdate\\\",\\\"refreshSaldo\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],[24,[\\\"currentSaldo\\\",\\\"from\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"refreshSaldo\\\"],null]]]],false],[0,\\\"           \\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"isMobile\\\"]],true],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h5\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"btn btn-secondary btn-xs\\\"],[12,\\\"role\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendTestNotification\\\"],[[\\\"on\\\"],[\\\"click\\\"]]],[8],[1,[28,\\\"t\\\",[\\\"menu.send_test_notification\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"subMenus\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subMenus\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\"],[\\\"div\\\",\\\"submenu-item\\\",[23,1,[\\\"link\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/template.hbs\"}});","import { inject as service } from '@ember/service';\nimport Controller from '@ember/controller';\nimport { alias } from '@ember/object/computed';\n\nexport default Controller.extend({\n    Collector: service('collector-service'),\n    showUserDataRemover: false,\n    showUserRemover: false,\n    userdata: alias('model'),\n});\n","import Route from '@ember/routing/route';\nimport { get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { Promise as EmberPromise } from 'rsvp';\nimport csvExport from '../../../../mixins/csv-export';\n\nexport default Route.extend(csvExport, {\n    Collector: service('collector-service'),\n    intl: service(),\n    startYear: 2006,\n    init() {\n        this._super(...arguments);\n        this.blacklist = ['holiday'];\n    },\n\n    model() {\n        return this.modelFor('users.edit');\n    },\n\n    actions: {\n        get_data() {\n            set(this.controller, 'loadingData', true);\n            let collector = get(this, 'Collector');\n            let all_forms = get(collector, 'forms')();\n            var userid = get(this.modelFor('users.edit'), 'id');\n            var loopYearByYear = [];\n            var formDateFields = [];\n            var loopOnce = [];\n            var startYear = 2006;\n            var endYear = parseInt(moment().format('YYYY'));\n            var formUserFields = {};\n\n            // do not fetch from blacklisted-forms\n            for (let formname in all_forms) {\n                if (get(this, 'blacklist').indexOf(formname) != -1) continue;\n\n                // first we check all forms for user-field\n                if (all_forms[formname]['objects']['user']) {\n                    formUserFields[formname] = 'user';\n                } else {\n                    // take first field that is database-field and has user as form\n                    for (var field in all_forms[formname]['objects']) {\n                        var fieldObj = all_forms[formname]['objects'][field];\n                        if (\n                            fieldObj['type'] == 'database' &&\n                            fieldObj['options']['form'] == 'user'\n                        ) {\n                            formUserFields[formname] = field;\n                            break;\n                        }\n                    }\n                }\n            }\n\n            for (var formname in formUserFields) {\n                var currentForm = all_forms[formname];\n\n                if (currentForm) {\n                    for (let field in currentForm['objects']) {\n                        // if it does have use_index-setting we need to pull data in one year increments\n                        if (\n                            currentForm['objects'][field]['features']['use_index'] &&\n                            currentForm['objects'][field]['features']['use_index'] == 'index1'\n                        ) {\n                            loopYearByYear.push(formname);\n                            formDateFields[formname] = field;\n                            break;\n                        }\n                    }\n                    // if there was not index-setting, push this form to array that doesn't need to be iterated year-by-year\n                    if (loopYearByYear.indexOf(formname) == -1) {\n                        loopOnce.push(formname);\n                    }\n                }\n            }\n\n            var promises = [];\n\n            // a bit of a haxxor, get user-info first from user-form\n            loopOnce.push('user');\n            formUserFields['user'] = 'id';\n\n            // the easy part\n            for (let formname of loopOnce) {\n                var promise = new EmberPromise((resolve) => {\n                    var params = {\n                        limit: 'all',\n                        sideload: true,\n                    };\n                    params[formUserFields[formname]] = userid;\n\n                    this.store\n                        .query(formname, params)\n                        .then((data) => this._setFormObject(data, collector, resolve));\n                });\n                promises.push(promise);\n            }\n\n            // now we need to get those index1-forms and iterate year by year\n            for (let formname of loopYearByYear) {\n                var outer_promise = new EmberPromise((resolve) => {\n                    var translatedColumns = [];\n                    //var formName = get(data, 'modelName');\n                    var columnsObject = collector.fields(formname);\n                    var columns = [];\n\n                    for (var columnName in columnsObject) {\n                        translatedColumns.push(\n                            collector.getTranslationForColumn(formname, columnName),\n                        );\n                        columns.push(columnName);\n                    }\n\n                    var formObject = {\n                        name: formname,\n                        columns: columns,\n                        translated_columns: translatedColumns,\n                    };\n                    var formData = [];\n                    for (var i = startYear; i <= endYear; i++) {\n                        var promise = new EmberPromise((resolve) => {\n                            var start = moment(i + '-01').format('YYYY-MM-DD');\n                            var end = moment(start).add(1, 'year').format('YYYY-MM-DD');\n\n                            var params = {\n                                limit: 'all',\n                                sideload: true,\n                            };\n                            params[formDateFields[formname]] = start + '_' + end;\n                            params[formUserFields[formname]] = userid;\n\n                            this.store.query(formname, params).then((data) => resolve(data));\n                        });\n                        formData.push(promise);\n                        //formObject\n                    }\n                    //console.log(formData);\n                    EmberPromise.all(formData).then((data) =>\n                        this._setFormObjectData(data, formObject, collector, resolve),\n                    );\n                    //\n                });\n                promises.push(outer_promise);\n            }\n            return EmberPromise.all(promises).then((data) => this._createCsv(data));\n        },\n    },\n\n    _setFormObject(data, collector, resolve) {\n        var translatedColumns = [];\n        var formName = get(data, 'modelName');\n        var columnsObject = collector.fields(formName);\n        var columns = [];\n\n        for (var columnName in columnsObject) {\n            translatedColumns.push(collector.getTranslationForColumn(formName, columnName));\n            columns.push(columnName);\n        }\n\n        var rows = [];\n        data.forEach((record) => {\n            var row = [];\n            for (var col of columns) {\n                row[col] = collector._format_(get(record, col), formName, col, 'csv');\n                //console.log(get(record, col));\n            }\n            rows.push(row);\n        });\n\n        var formObject = {\n            name: get(data, 'modelName'),\n            data: rows,\n            columns: columns,\n            translated_columns: translatedColumns,\n        };\n        resolve(formObject);\n    },\n\n    _setFormObjectData(data, formObject, collector, resolve) {\n        for (var recordArr of data) {\n            var rows = [];\n            recordArr.forEach((record) => {\n                var row = [];\n                for (var col of formObject['columns']) {\n                    row[col] = collector._format_(get(record, col), formObject['name'], col, 'csv');\n                    //console.log(get(record, col));\n                }\n                rows.push(row);\n            });\n        }\n        formObject['data'] = rows;\n        resolve(formObject);\n    },\n\n    _createCsv(data) {\n        var csvFull = [];\n        var csvHeaders = [];\n        var name = '';\n        for (var form of data) {\n            const key = 'form.' + form['name'];\n            if (get(this, 'intl').exists(key)) name = get(this, 'intl').t(key).toLowerCase();\n            else name = form['name'];\n\n            csvHeaders.push(name);\n            var element = this.createCsvElement(\n                form['columns'],\n                form['data'],\n                form['translated_columns'],\n            );\n            csvFull.push(element);\n        }\n        set(this.controller, 'loadingData', false);\n        this.createMultiTableCsv(\n            csvFull,\n            csvHeaders,\n            get(this.modelFor('users.edit'), 'firstname') +\n                ' ' +\n                get(this.modelFor('users.edit'), 'lastname'),\n        );\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"xkrPWvRP\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"savingText\\\",\\\"action\\\",\\\"classes\\\",\\\"saveButtonText\\\"],[[24,[\\\"loadingData\\\"]],[28,\\\"t\\\",[\\\"user.edit.fetching_user_data\\\"],null],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"send\\\"]],\\\"get_data\\\"],null],\\\"btn btn-block btn-warning btn-lg\\\",[28,\\\"t\\\",[\\\"user.add.builder\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger btn-block btn-lg save\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showUserDataRemover\\\"]]],null],true]],[8],[1,[28,\\\"t\\\",[\\\"users.terminate_data\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger btn-block btn-lg save\\\"],[12,\\\"data-anchor\\\",\\\"user-delete-modal-button\\\"],[3,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showUserRemover\\\"]]],null],true]],[8],[1,[28,\\\"t\\\",[\\\"user.hard_delete_user\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showUserDataRemover\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"term-inator\\\",null,[[\\\"user\\\",\\\"close\\\"],[[24,[\\\"model\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showUserDataRemover\\\"]]],null],false],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showUserRemover\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"user-deletion\\\",[],[[\\\"@user\\\",\\\"@close\\\"],[[23,0,[\\\"model\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"showUserRemover\\\"]]],null],false],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/edit/userdata/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/history/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UserHistoryRoute;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nUserHistoryRoute = Ember.Route.extend({\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default UserHistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"iqHNlTiZ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"user\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/history/template.hbs\"}});","import Controller from '@ember/controller';\nimport { inject as service } from '@ember/service';\nimport { action, set } from '@ember/object';\n\nexport default class UsersInactiveController extends Controller {\n    @service ttapi;\n\n    days = 7;\n\n    date = moment().subtract(this.days, 'days').format('YYYY-MM-DD');\n\n    constructor() {\n        super(...arguments);\n        this.endpoint = this.ttapi.host + '/inactive_users_v2';\n    }\n\n    @action\n    setDaysAndSendChange (field, sendAction, value) {\n        set(this, field, moment().diff(value, 'days'))\n        sendAction(this.days, field);\n    }\n\n}\n","import Route from '@ember/routing/route';\n\nexport default class UsersInactiveRoute extends Route {}\n","export default Ember.HTMLBars.template({\"id\":\"/4o0/syG\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\",\\\"sendChange\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"users.report.inactive_users_start\\\"],null],false],[0,\\\" \\\"],[1,[23,0,[\\\"days\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"users.report.inactive_users_end\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showFilters\\\",\\\"@blockFilters\\\",\\\"@filter\\\"],[\\\"user\\\",\\\"employer,userlevel,group,worktimegroup\\\",true,[28,\\\"hash\\\",null,[[\\\"days\\\",\\\"endpoint\\\"],[[23,0,[\\\"days\\\"]],[23,0,[\\\"endpoint\\\"]]]]]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"filters\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-filter\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"filter-label\\\"],[10,\\\"data-anchor\\\",\\\"days-filter-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"users.report.inactive_users.days_filter\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[5,\\\"addon/fields/date\\\",[],[[\\\"@value\\\",\\\"@onChange\\\",\\\"@class\\\"],[[23,0,[\\\"date\\\"]],[28,\\\"fn\\\",[[23,0,[\\\"setDaysAndSendChange\\\"]],\\\"days\\\",[23,5,[]]],null],\\\"form-control\\\"]]],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/inactive/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport config from '../../../config/environment';\n\nimport { htmlSafe } from '@ember/string';\n\nUsersIndexController = GeneralReportController.extend({\n    flags: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    cc: Ember.inject.service(),\n    error: Ember.inject.service(),\n    vastuuGroup: Ember.inject.service('vastuu-group'),\n    form: 'user',\n    showColumns: [\n        'lastname',\n        'firstname',\n        'username',\n        'taxnumber',\n        'id06kort',\n        'employer',\n        'userlevel',\n        'password',\n        'email',\n        'phone',\n    ],\n    queryParams: ['page', 'employer', 'q', 'group', 'userlevel'],\n    userStatuses: ['new', 'ok', 'blocked'],\n    employer: null,\n    group: null,\n    userlevel: null,\n    filters: Em.A([\n        Em.Object.create({\n            field: 'employer',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    settings: Em.Object.create({\n        rowActions: [],\n        massedit: true,\n        sortByColumn: 'lastname',\n    }),\n    showUserSmsModal: false,\n    showUserEmailModal: false,\n    userSmsValidPhones: Em.A([]),\n    userSmsNotValidPhones: Em.A([]),\n    userEmailValid: Em.A([]),\n    userEmailNotValid: Em.A([]),\n    showId06Checker: false,\n    userform: 'worktime',\n    init_functions: function () {\n        var c;\n        if (\n            !this.get('flags').test('form-report-users') &&\n            !this.get('flags').test('ember-movenium-form-report-users')\n        ) {\n            this._super();\n        }\n        c = this.get('Collector');\n        if (c.fieldExists('worktime', 'user')) {\n            this.set('userform', 'worktime');\n        } else if (c.fieldExists('presence', 'user')) {\n            this.set('userform', 'presence');\n        }\n        return this.addRowActions();\n    },\n    addRowActions: function () {\n        var c, fields, intl, self2;\n        self2 = this;\n        intl = this.get('intl');\n        c = this.get('Collector');\n        if (!c) {\n            return;\n        }\n        fields = c.fields('user');\n        if (fields) {\n            if ('status' in fields) {\n                this.set('settings.rowActions', [\n                    {\n                        text: 'status.new_text',\n                        action: function (self, items) {\n                            return items.forEach(function (row) {\n                                if (row.get('status') === 'new') {\n                                    return;\n                                }\n                                row.set('status', 'new');\n                                return row.save();\n                            });\n                        },\n                    },\n                    {\n                        text: 'status.ok_text',\n                        action: function (self, items) {\n                            return items.forEach(function (row) {\n                                if (row.get('status') === 'ok') {\n                                    return;\n                                }\n                                row.set('status', 'ok');\n                                return row.save();\n                            });\n                        },\n                    },\n                    {\n                        text: 'status.blocked_text',\n                        action: function (self, items) {\n                            return items.forEach(function (row) {\n                                if (row.get('status') === 'blocked') {\n                                    return;\n                                }\n                                row.set('status', 'blocked');\n                                return row.save();\n                            });\n                        },\n                    },\n                ]);\n            }\n        }\n        this.get('settings.rowActions').push({\n            text: this.get('intl').t('user.action.sendsms'),\n            action: (self, users) => {\n                this.set('userSmsModalTitle', htmlSafe(intl.t('user.action.sendsms.modal_title')));\n                this.set('userSmsModalText', htmlSafe(intl.t('user.action.sendsms.modal_text')));\n                this.set('showUserSmsModal', true);\n                return this.set('smsUsers', users);\n            },\n        });\n        this.get('settings.rowActions').push({\n            text: this.get('intl').t('user.action.sendemail'),\n            action: (self, users) => {\n                this.set('userEmailModalTitle', intl.t('user.action.email.modal_title'));\n                this.set('userEmailModalText', htmlSafe(intl.t('user.action.email.modal_text')));\n                this.set('showUserEmailModal', true);\n                return this.set('emailUsers', users);\n            },\n        });\n        if (c.fieldExists('employer', 'tv_status') && c.fieldExists('user', 'image')) {\n            this.get('settings.rowActions').push({\n                text: this.get('intl').t('user.action.fetch_tv_image'),\n                action: (self, users) => {\n                    this.send('fetchImagesFromTv', users);\n                },\n            });\n        }\n        this.addRowActionSetUserPrivileges();\n        if (c.testNeeds(['user.taxnumber', 'employer.tv_status'])) {\n            this.addRowActionCheckWithTaxnumber();\n        }\n        return this.addRowActionCheckID06();\n    },\n    sendUserSms: function (users) {\n        var c, intl, promises;\n        intl = this.get('intl');\n        promises = [];\n        c = this.get('Collector');\n        users.forEach((user) => {\n            //send only to users without secured password\n            if (user.get('password') !== 'secured') {\n                if (\n                    !/\\+(9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[^0]\\d{1,14}$/i.test(\n                        user.get('phone'),\n                    )\n                ) {\n                    return this.get('userSmsNotValidPhones').pushObject(user);\n                } else {\n                    return this.get('userSmsValidPhones').pushObject(user);\n                }\n            }\n        });\n        this.set('userSmsModalTitle', intl.t('user.action.sendsms.modal_title'));\n        //if nothing selected\n        if (\n            this.get('userSmsValidPhones.length') === 0 &&\n            this.get('userSmsNotValidPhones.length') === 0\n        ) {\n            this.set('userSmsModalText', intl.t('user.action.sendsms.nothing_found'));\n            //                @set(\"showUserSmsModal\", true)\n            return promises;\n        }\n        //if only not valid phones\n        if (this.get('userSmsValidPhones.length') === 0) {\n            this.set('userSmsModalSent', true);\n            //                @set(\"showUserSmsModal\", true)\n            return promises;\n        }\n        //send sms to valid phone numbers\n        this.get('userSmsValidPhones').forEach((user) => {\n            promises.push(\n                c.ttapi({\n                    url: 'sendSms',\n                    data: {\n                        phone: user.get('phone'),\n                        messageid: 'new_user_added',\n                        values: {\n                            userid: user.get('id'),\n                            product: config.brand === 'otta' ? 'Otta' : 'Visma Movenium',\n                        },\n                        language: moment.locale(),\n                    },\n                    method: 'post',\n                }),\n            );\n            return this.set('userSmsModalSent', true);\n        });\n        return promises;\n    },\n    //            self2.set \"showUserSmsModal\", true\n    sendUserEmail: function (users) {\n        var c, intl, promises;\n        intl = this.get('intl');\n        promises = [];\n        c = this.get('Collector');\n        users.forEach((user) => {\n            //send only to users without secured password\n            if (user.get('password') !== 'secured') {\n                if (\n                    !/^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i.test(\n                        user.get('email'),\n                    )\n                ) {\n                    return this.get('userEmailNotValid').push(user);\n                } else {\n                    return this.get('userEmailValid').push(user);\n                }\n            }\n        });\n        this.set('userEmailModalTitle', intl.t('user.action.email.modal_title'));\n        //if nothing selected\n        if (this.get('userEmailValid.length') === 0 && this.get('userEmailNotValid.length') === 0) {\n            this.set('userEmailModalText', intl.t('user.action.email.nothing_found'));\n            this.set('showUserEmailModal', true);\n            return promises;\n        }\n        //if only not valid emails\n        if (this.get('userEmailValid.length') === 0) {\n            this.set('userEmailModalSent', true);\n            this.set('showUserEmailModal', true);\n            return promises;\n        }\n        //send credentials to valid email\n        this.get('userEmailValid').forEach((user) => {\n            var content;\n            content =\n                this.get('intl').t('user.action.email.email_content', {\n                    company: this.get('session.currentUser.company'),\n                    username: user.get('username'),\n                    psw: user.get('password'),\n                    url: window.location.origin,\n                }) +\n                '<br><br>' +\n                this.get('intl').t('user.action.email.email_username') +\n                ': ' +\n                user.get('username') +\n                '<br>' +\n                this.get('intl').t('user.action.email.email_password') +\n                ': ' +\n                user.get('password') +\n                '<br>';\n            promises.push(\n                c.ttapi({\n                    url: 'sendEmail',\n                    data: {\n                        email: user.get('email'),\n                        title:\n                            this.get('session.currentUser.company') +\n                            ' - ' +\n                            this.get('intl').t('user.action.email.email_title'),\n                        content: content.replace(/<br ?\\/?>/g, '\\n'),\n                    },\n                    method: 'post',\n                }),\n            );\n            return this.set('userEmailModalSent', true);\n        });\n        return promises;\n    },\n    selectProjectsModalTitle: Em.computed(function () {\n        return this.get('intl').t('user.action.invite.title');\n    }),\n    selectedProject: null,\n    sendInvitationTo: null,\n    addRowActionSetUserPrivileges: function () {\n        if (!this.get('Collector').testNeeds(['presence'])) {\n            return;\n        }\n        return this.get('settings.rowActions').push({\n            text: this.get('intl').t('user.action.invite'),\n            action: (self, users) => {\n                this.set('sendInvitationTo', users);\n                return this.set('showSelectProjects', true);\n            },\n        });\n    },\n    addRowActionCheckWithTaxnumber: function () {\n        return this.get('settings.rowActions').push({\n            text: this.get('intl').t('user.action.tvcheck'),\n            action: (self, users) => {\n                this.send('verifyUsersTaxnumbers', users);\n            },\n        });\n    },\n    setUserInfoFromTilaajavastuu: function (user) {\n        var c;\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var promise;\n            if (!user.get('taxnumber')) {\n                return resolve(null);\n            }\n            promise = this.vastuuGroup.request(config.APP.CC_TVPERAPI,\n                {\n                    country: 'FI',\n                    'id-country': 'FI',\n                    'id-type': 'tax_number',\n                    'id-value': user.get('taxnumber'),\n                },\n            );\n            return promise.then((back) => {\n                var empId;\n                if (back.message === 'no person found') {\n                    return resolve({\n                        not_found_user: user,\n                    });\n                }\n                if (back.length < 1) {\n                    return resolve(null);\n                }\n                empId = user.get('employer.id');\n                return this.get('store')\n                    .query('employer', {\n                        emp_id: back.employers[0].gov_org_ids[0].gov_org_id,\n                    })\n                    .then((employers) => {\n                        if (back.date_of_birth) {\n                            user.set('birthdate', back.date_of_birth);\n                        }\n                        if (back.names[0].given_names[0]) {\n                            user.set('firstname', back.names[0].given_names[0]);\n                        }\n                        if (back.names[0].surnames[0]) {\n                            user.set('lastname', back.names[0].surnames[0]);\n                        }\n                        if (back.residences && back.residences[0]) {\n                            user.set('homecountry', back.residences[0].toLowerCase());\n                        }\n                        if (employers.get('firstObject')) {\n                            // user.set(\"phone\", back[0].phone) if back[0].phone\n                            user.set('employer', employers.get('firstObject'));\n                        }\n                        if (back.employers.length > 1) {\n                            user.set('status', 'check');\n                        }\n                        if (user.get('hasDirtyAttributes') || user.get('employer.id') !== empId) {\n                            return user.save().then(() => {\n                                return resolve({\n                                    user: user,\n                                });\n                            });\n                        } else {\n                            return resolve(null);\n                        }\n                    });\n            });\n        });\n    },\n    addRowActionCheckID06: function () {\n        var c;\n        if (!this.get('Collector').testNeeds(['modules.id06'])) {\n            return;\n        }\n        c = this.get('Collector');\n        return this.get('settings.rowActions').push({\n            text: this.get('intl').t('user.action.id06check'),\n            action: (self, users) => {\n                this.set('showLoader', true);\n                this.set('showId06Checker', true);\n                // first we need to get all the employers over the api if not found from store already\n                return this.fetchAllNeededEmployers(users).then(() => {\n                    var changes, promises;\n                    promises = [];\n                    changes = [];\n                    users.forEach((user) => {\n                        var promise;\n                        promise = c.ccapi({\n                            url: 'id06cardstatus',\n                            data: {\n                                id: user.get('id06kort'),\n                            },\n                        });\n                        promise.then((back) => {\n                            var status;\n                            status = JSON.parse(back).status_code === '205' ? 'ok' : 'blocked';\n                            console.info(\n                                'status for',\n                                user.get('personid'),\n                                status,\n                                'status was',\n                                user.get('status'),\n                            );\n                            if (status === 'ok' && user.get('status') !== 'ok') {\n                                console.info(\n                                    'change status of user',\n                                    user.get('personid'),\n                                    ':',\n                                    user.get('status'),\n                                    '->',\n                                    'ok',\n                                );\n                                changes.push({\n                                    user: user,\n                                    from_class: 'label-m-' + user.get('status'),\n                                    from_text: this.get('intl').t(\n                                        'status.' + user.get('status') + '_text',\n                                    ),\n                                    to_class: 'label-m-ok',\n                                    to_text: this.get('intl').t('status.ok_text'),\n                                    reason_code: JSON.parse(back).reason_code,\n                                });\n                                user.set('status', 'ok');\n                                return promises.push(user.save());\n                            } else if (status !== 'ok' && user.get('status') !== 'blocked') {\n                                console.info(\n                                    'change status of user',\n                                    user.get('personid'),\n                                    ':',\n                                    user.get('status'),\n                                    '->',\n                                    'blocked',\n                                );\n                                changes.push({\n                                    user: user,\n                                    from_class: 'label-m-' + user.get('status'),\n                                    from_text: this.get('intl').t(\n                                        'status.' + user.get('status') + '_text',\n                                    ),\n                                    to_class: 'label-m-blocked',\n                                    to_text: this.get('intl').t('status.blocked_text'),\n                                    reason_code: JSON.parse(back).reason_code,\n                                });\n                                user.set('status', 'blocked');\n                                return promises.push(user.save());\n                            }\n                        });\n                        return promises.push(promise);\n                    });\n                    return Ember.RSVP.Promise.all(promises).then(() => {\n                        this.set('id06StatusChanges', changes);\n                        return this.set('showLoader', false);\n                    });\n                });\n            },\n        });\n    },\n    fetchAllNeededEmployers: function (users) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var need_to_be_fetched;\n            need_to_be_fetched = [];\n            users.forEach((user) => {\n                if (!user.get('employer.emp_id') || !user.get('employer.country')) {\n                    return need_to_be_fetched.push(user.get('employer.id'));\n                }\n            });\n            if (need_to_be_fetched.length === 0) {\n                resolve();\n                return;\n            }\n            return this.get('store')\n                .query('employer', {\n                    id: need_to_be_fetched.join(','),\n                })\n                .then(function () {\n                    return resolve();\n                });\n        });\n    },\n    projectsmultifield: Em.computed(function () {\n        return Ember.Object.create({\n            type: 'multiselect',\n            features: {},\n            form: this.get('userform'),\n            name: 'project',\n            options: {\n                fields: ['name'],\n            },\n            ext: 'project',\n        });\n    }),\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n        transitionToEditRoute: function (row) {\n            return this.transitionToRoute('users.edit', row);\n        },\n        statusAction: function (status, items) {\n            return items.forEach(function (row) {\n                if (row.get('status') === status) {\n                    return;\n                }\n                row.set('status', status);\n                return row.save();\n            });\n        },\n        openSmsModal: function (users) {\n            this.set(\n                'userSmsModalTitle',\n                htmlSafe(this.get('intl').t('user.action.sendsms.modal_title')),\n            );\n            this.set(\n                'userSmsModalText',\n                htmlSafe(this.get('intl').t('user.action.sendsms.modal_text')),\n            );\n            this.set('showUserSmsModal', true);\n            return this.set('smsUsers', users);\n        },\n        openEmailModal: function (users) {\n            this.set('userEmailModalTitle', this.get('intl').t('user.action.email.modal_title'));\n            this.set(\n                'userEmailModalText',\n                htmlSafe(this.get('intl').t('user.action.email.modal_text')),\n            );\n            this.set('showUserEmailModal', true);\n            return this.set('emailUsers', users);\n        },\n        fetchImagesFromTv: async function (users) {\n            for (const user of users) {\n                let taxnumber = user.get('taxnumber');\n                let employer = user.get('employer');\n\n                if (!taxnumber || !employer) {\n                    continue;\n                }\n\n                try {\n                    if (!user.get('employer.emp_id')) {\n                        employer = await this.store.findRecord('employer', user.get('employer.id'), {\n                            reload: true,\n                        });\n                    }\n\n                    const emp_id = employer.get('emp_id');\n                    if (!taxnumber || !emp_id) {\n                        continue;\n                    }\n\n                    this.set('loading', true);\n\n                    const data = await this.vastuuGroup.request(config.APP.CC_TVCARDIMAGE,\n                        {\n                            taxnumber: taxnumber,\n                            emp_id: emp_id\n                        },\n                    );\n                    if (data && data != null && !data.error) {\n                        user.set('image', 'data:image/png;base64,' + data);\n                        user.set('validation', 'off');\n                        await user.save();\n                    } else {\n                        this.error.notify(data.error);\n                    }\n                } catch (e) {\n                    this.error.notify(e);\n                } finally {\n                    this.set('loading', false);\n                }\n            }\n        },\n        verifyUsersTaxnumbers: function (users) {\n            var promises;\n            this.set('showLoader', true);\n            this.set('showTvcardChecker', true);\n            promises = [];\n            users.forEach((user) => {\n                return promises.push(this.setUserInfoFromTilaajavastuu(user));\n            });\n            return Ember.RSVP.Promise.all(promises).then((changes) => {\n                this.set(\n                    'tvcardChanges',\n                    changes.filter((item) => {\n                        return item !== null && Object.keys(item)[0] === 'user';\n                    }),\n                );\n                this.set(\n                    'notFoundUsers',\n                    changes.filter((item) => {\n                        return item !== null && Object.keys(item)[0] === 'not_found_user';\n                    }),\n                );\n                return this.set('showLoader', false);\n            });\n        },\n        id06CheckAction: function (users) {\n            var c;\n            this.set('showLoader', true);\n            this.set('showId06Checker', true);\n            c = this.get('Collector');\n            // first we need to get all the employers over the api if not found from store already\n            return this.fetchAllNeededEmployers(users).then(() => {\n                var changes, promises;\n                promises = [];\n                changes = [];\n                users.forEach((user) => {\n                    // If user has no card, add error to be displayed and skip check.\n                    // The error is \"bad request\" due to missing card info.\n                    if (!user.get('id06kort')) {\n                        changes.push({\n                            user: user,\n                            error: this.get('intl').t('user.add.id06.card_status.bad_request'),\n                        });\n                        return;\n                    }\n\n                    var promise;\n                    promise = c.ccapi({\n                        url: 'id06cardstatus',\n                        data: {\n                            id: user.get('id06kort'),\n                        },\n                    });\n                    promise.then((back) => {\n                        var status, reasonCode;\n\n                        // If an ok status code isn't returned, set user's status to blocked.\n                        // Here we also catch a malformed response; in this case\n                        // the user will also be blocked.\n                        try {\n                            status = JSON.parse(back).status_code === '205' ? 'ok' : 'blocked';\n                            reasonCode = JSON.parse(back).reason_code;\n                        } catch (error) {\n                            console.error(error);\n                            status = 'blocked';\n                            reasonCode = '300'; // Code 300 - delisted. Applicable enough\n                        }\n\n                        console.info(\n                            'status for',\n                            user.get('personid'),\n                            status,\n                            'status was',\n                            user.get('status'),\n                        );\n                        if (status === 'ok' && user.get('status') !== 'ok') {\n                            console.info(\n                                'change status of user',\n                                user.get('personid'),\n                                ':',\n                                user.get('status'),\n                                '->',\n                                'ok',\n                            );\n                            changes.push({\n                                user: user,\n                                from_class: 'label-m-' + user.get('status'),\n                                from_text: this.get('intl').t(\n                                    'status.' + user.get('status') + '_text',\n                                ),\n                                to_class: 'label-m-ok',\n                                to_text: this.get('intl').t('status.ok_text'),\n                                reason_code: reasonCode,\n                            });\n                            user.set('status', 'ok');\n                            return promises.push(user.save());\n                        } else if (status !== 'ok' && user.get('status') !== 'blocked') {\n                            console.info(\n                                'change status of user',\n                                user.get('personid'),\n                                ':',\n                                user.get('status'),\n                                '->',\n                                'blocked',\n                            );\n                            changes.push({\n                                user: user,\n                                from_class: 'label-m-' + user.get('status'),\n                                from_text: this.get('intl').t(\n                                    'status.' + user.get('status') + '_text',\n                                ),\n                                to_class: 'label-m-blocked',\n                                to_text: this.get('intl').t('status.blocked_text'),\n                                reason_code: reasonCode,\n                            });\n                            user.set('status', 'blocked');\n                            return promises.push(user.save());\n                        }\n                    });\n                    return promises.push(promise);\n                });\n                return Ember.RSVP.Promise.all(promises).then(() => {\n                    this.set('id06StatusChanges', changes);\n                    return this.set('showLoader', false);\n                });\n            });\n        },\n        removeSmsModal: function () {\n            this.set('userSmsModalText', null);\n            this.set('showUserSmsModal', false);\n            this.set('userSmsModalSent', false);\n            this.set('userSmsValidPhones', Em.A([]));\n            this.set('userSmsNotValidPhones', Em.A([]));\n            return this.set('smsUsers', false);\n        },\n        removeEmailModal: function () {\n            this.set('userEmailModalText', null);\n            this.set('showUserEmailModal', false);\n            this.set('userEmailModalSent', false);\n            this.set('userEmailValid', Em.A([]));\n            this.set('userEmailNotValid', Em.A([]));\n            return this.set('emailUsers', false);\n        },\n        removeSelectProjectsModal: function () {\n            this.set('inviteSendDone', false);\n            this.set('showLoader', false);\n            this.set('selectedProject', null);\n            return this.set('showSelectProjects', false);\n        },\n        removeId06CheckerModal: function () {\n            this.set('checkUsersfromId06', Em.A([]));\n            this.set('showLoader', false);\n            this.set('showId06Checker', false);\n            return this.set('id06StatusChanges', Em.A([]));\n        },\n        removeTvcardCheckerModal: function () {\n            this.set('showLoader', false);\n            this.set('showTvcardChecker', false);\n            return this.set('tvcardChanges', Em.A([]));\n        },\n        sendUserSms: function () {\n            var promises;\n            this.set('showLoader', true);\n            if (this.get('sendToAllUsers')) {\n                return this.get('dialogs')\n                    .confirm(this.get('intl').t('users.sms.send_all.confirmation'))\n                    .then((con) => {\n                        if (con) {\n                            return this.get('store')\n                                .query('user', {\n                                    limit: 'all',\n                                })\n                                .then((users) => {\n                                    var promises;\n                                    promises = this.sendUserSms(users);\n                                    return Ember.RSVP.Promise.all(promises).then(() => {\n                                        this.set('sendToAllUsers', false);\n                                        return this.set('showLoader', false);\n                                    });\n                                });\n                        } else {\n                            this.set('showLoader', false);\n                            return this.send('removeSmsModal');\n                        }\n                    });\n            } else {\n                promises = this.sendUserSms(this.get('smsUsers'));\n                console.log(promises);\n                return Ember.RSVP.Promise.all(promises).then(() => {\n                    return this.set('showLoader', false);\n                });\n            }\n        },\n        sendUserEmail: function () {\n            var promises;\n            this.set('showLoader', true);\n            if (this.get('sendToAllUsers')) {\n                return this.get('store')\n                    .query('user', {\n                        limit: 'all',\n                    })\n                    .then((users) => {\n                        var promises;\n                        promises = this.sendUserEmail(users);\n                        return Ember.RSVP.Promise.all(promises).then(() => {\n                            this.set('sendToAllUsers', false);\n                            return this.set('showLoader', false);\n                        });\n                    });\n            } else {\n                promises = this.sendUserEmail(this.get('emailUsers'));\n                return Ember.RSVP.Promise.all(promises).then(() => {\n                    return this.set('showLoader', false);\n                });\n            }\n        },\n        inviteNow: function () {\n            var projects, promises, to;\n            this.set('showLoader', true);\n            to = this.get('sendInvitationTo');\n            projects = this.get('selectedProject');\n            promises = [];\n            projects.forEach((projectid) => {\n                return this.get('store')\n                    .find('project', projectid)\n                    .then((project_info) => {\n                        return to.forEach((user) => {\n                            return promises.push(\n                                this.get('Collector')\n                                    .ttapi({\n                                        url: 'get_linker',\n                                        data: {\n                                            rowid: user.get('id'),\n                                            form: 'project',\n                                        },\n                                        method: 'get',\n                                    })\n                                    .then((data) => {\n                                        if (data['linker']) {\n                                            promises.push(\n                                                this.get('Collector').ajax({\n                                                    url: 'users/' + user.get('id'),\n                                                    method: 'put',\n                                                    data: JSON.stringify({\n                                                        user: {\n                                                            'link.projects': {\n                                                                add: [projectid],\n                                                            },\n                                                        },\n                                                    }),\n                                                }),\n                                            );\n                                            return promises.push(\n                                                this.get('Collector').ttapi({\n                                                    url: 'addmysite/' + user.get('id'),\n                                                    method: 'post',\n                                                    data: {\n                                                        id: project_info.get('id'),\n                                                        name: project_info.get('name'),\n                                                        image: project_info.get('image'),\n                                                        company: this.get(\n                                                            'session.currentUser.company',\n                                                        ),\n                                                        used: moment()\n                                                            .subtract(2, 'days')\n                                                            .format('YYYY-MM-DD HH:mm:ss'),\n                                                    },\n                                                }),\n                                            );\n                                        }\n                                    }),\n                            );\n                        });\n                    });\n            });\n            return Em.RSVP.Promise.all(promises).then(() => {\n                this.set('showLoader', false);\n                return this.set('inviteSendDone', true);\n            });\n        },\n        changeSelectedProject: function (project) {\n            return this.set('selectedProject', project);\n        },\n        setInviteUser: function (users) {\n            this.set('sendInvitationTo', users);\n            return this.set('showSelectProjects', true);\n        },\n    },\n});\n\n//    formatter: (column, value) ->\n\n//        if column == \"password\"\n//            if value == \"secured\"\n//                return new Ember.String.htmlSafe '<span class=\"label-m label-m-approved\">'+value.toUpperCase()+'</span>'\n//            else\n//                return new Ember.String.htmlSafe '<span class=\"label-m label-m-open\">'+value+'</span>'\n//        return @_super column, value\nexport default UsersIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nUsersIndexRoute = GeneralReportRoute.extend({\n    flags: Ember.inject.service(),\n    form: 'user',\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n        userlevel: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        if (\n            !this.get('flags').test('form-report-users') &&\n            !this.get('flags').test('ember-movenium-form-report-users')\n        ) {\n            return this.store.query('user', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('users.index').set('qParams', params);\n        }\n    },\n});\n\nexport default UsersIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"jB1PWi3i\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\",\\\"notFoundUser\\\",\\\"change\\\",\\\"modal\\\",\\\"change\\\",\\\"modal\\\",\\\"user\\\",\\\"user\\\",\\\"user\\\",\\\"user\\\",\\\"report\\\",\\\"table\\\",\\\"row\\\",\\\"tableAction\\\",\\\"more\\\",\\\"userStatus\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\",\\\"userStatus\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-users\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@filterChangeAction\\\"],[\\\"user\\\",[22,\\\"qParams\\\"],\\\"employer,userlevel,group,q\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,17,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,18,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,19,[\\\"More\\\"]],[],[[\\\"@showLoader\\\"],[[23,0,[\\\"loading\\\"]]]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,20,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,20,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,20,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,20,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/users/edit/\\\"]]],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"userStatuses\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,20,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"statusAction\\\",[23,21,[]],[23,18,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"status.\\\",[23,21,[]],\\\"_text\\\"],null]],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[21]},null],[0,\\\"                    \\\"],[6,[23,20,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"openSmsModal\\\",[23,18,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"user.action.sendsms\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,20,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"openEmailModal\\\",[23,18,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"user.action.sendemail\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"user.image\\\",\\\"employer.tv_status\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,20,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"fetchImagesFromTv\\\",[23,18,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"user.action.fetch_tv_image\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"user.taxnumber\\\",\\\"employer.tv_status\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,20,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"verifyUsersTaxnumbers\\\",[23,18,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"user.action.tvcheck\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"presence\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,20,[\\\"Row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"setInviteUser\\\",[24,[\\\"table\\\",\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"user.action.invite\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"modules.id06\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,20,[\\\"Row\\\"]],[],[[\\\"@action\\\",\\\"@dataAnchor\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"id06CheckAction\\\",[23,18,[\\\"selected\\\"]]],null],\\\"report-more-id06-check\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"user.action.id06check\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"]],\\\"parameters\\\":[20]}],[0,\\\"\\\\n                \\\"],[6,[23,19,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,19,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,19,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,19,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,19,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,19,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[19]}],[0,\\\"\\\\n            \\\"],[6,[23,18,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@showActions\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"transitionToEditRoute\\\"],null],\\\"remove,history,overview,edit\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,18,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[18]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[17]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"form-report-users\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"collector/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\"],[\\\"user\\\",[22,\\\"qParams\\\"]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,11,[\\\"filters\\\"]],[],[[\\\"@showColumns\\\",\\\"@filterChangeAction\\\"],[\\\"employer,userlevel,group,q\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]]],[0,\\\"\\\\n        \\\"],[6,[23,11,[\\\"table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,12,[\\\"actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,14,[\\\"more\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,15,[\\\"lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,15,[\\\"massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,15,[\\\"remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,15,[\\\"qrCode\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"userStatuses\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,15,[\\\"row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"statusAction\\\",[23,16,[]],[23,12,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"status.\\\",[23,16,[]],\\\"_text\\\"],null]],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[16]},null],[0,\\\"                    \\\"],[6,[23,15,[\\\"row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"openSmsModal\\\",[23,12,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"user.action.sendsms\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,15,[\\\"row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"openEmailModal\\\",[23,12,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"user.action.sendemail\\\"],null],false],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"user.image\\\",\\\"employer.tv_status\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,15,[\\\"row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"fetchImagesFromTv\\\",[23,12,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"user.action.fetch_tv_image\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"user.taxnumber\\\",\\\"employer.tv_status\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,15,[\\\"row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"verifyUsersTaxnumbers\\\",[23,12,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"user.action.tvcheck\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"presence\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,15,[\\\"row\\\"]],[],[[\\\"@action\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"setInviteUser\\\",[23,12,[\\\"selected\\\"]]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"user.action.invite\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"modules.id06\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[6,[23,15,[\\\"row\\\"]],[],[[\\\"@action\\\",\\\"@dataAnchor\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"id06CheckAction\\\",[23,12,[\\\"selected\\\"]]],null],\\\"report-more-id06-check\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"user.action.id06check\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"]],\\\"parameters\\\":[15]}],[0,\\\"\\\\n                \\\"],[6,[23,14,[\\\"inlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,14,[\\\"pdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,14,[\\\"columnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,14,[\\\"exportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,14,[\\\"refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[14]}],[0,\\\"\\\\n            \\\"],[6,[23,12,[\\\"rowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"remove,history\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionToEditRoute\\\",[23,13,[]]]],[8],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[13]}],[0,\\\"\\\\n            \\\"],[6,[23,12,[\\\"no-content\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[12]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[11]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"user\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"limit\\\",\\\"offset\\\"],[\\\"bubbleTransition\\\",\\\"user\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showUserSmsModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"userSmsModalTitle\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"removeSmsModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"general-nice-popup\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[22,\\\"userSmsModalText\\\"],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"userSmsModalSent\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"userSmsNotValidPhones\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.action.sendsms.these_were_not_sent\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"userSmsNotValidPhones\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item list-group-item-warning\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[23,10,[\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[23,10,[\\\"firstname\\\"]],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ban-circle pull-right\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[10]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"userSmsValidPhones\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.action.sendsms.these_were_sent\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"userSmsValidPhones\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item list-group-item-success\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[23,9,[\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[23,9,[\\\"firstname\\\"]],false],[0,\\\" (\\\"],[1,[23,9,[\\\"phone\\\"]],false],[0,\\\") \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok-circle pull-right\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[9]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"users.sms.to_all\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"class\\\"],[\\\"checkbox\\\",[24,[\\\"sendToAllUsers\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-footer\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendUserSms\\\"]],[8],[1,[28,\\\"t\\\",[\\\"users.send.sms\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeSmsModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showUserEmailModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"userEmailModalTitle\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"removeEmailModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"general-nice-popup\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[22,\\\"userEmailModalText\\\"],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"userEmailModalSent\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"userEmailNotValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.action.sendemail.these_were_not_sent\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"userEmailNotValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item list-group-item-warning\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[23,8,[\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[23,8,[\\\"firstname\\\"]],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ban-circle pull-right\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"userEmailValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[8],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.action.sendemail.these_were_sent\\\"],null],false],[0,\\\":\\\"],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"userEmailValid\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item list-group-item-success\\\"],[8],[0,\\\"\\\\n                                    \\\"],[1,[23,7,[\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[23,7,[\\\"firstname\\\"]],false],[0,\\\" (\\\"],[1,[23,7,[\\\"email\\\"]],false],[0,\\\") \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok-circle pull-right\\\"],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"users.email.to_all\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\",\\\"class\\\"],[\\\"checkbox\\\",[24,[\\\"sendToAllUsers\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-footer\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendUserEmail\\\"]],[8],[1,[28,\\\"t\\\",[\\\"users.send.email\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeEmailModal\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHidden\\\"],[[23,0,[\\\"showSelectProjects\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showSelectProjects\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,6,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[22,\\\"selectProjectsModalTitle\\\"],false],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,6,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"inviteSendDone\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"user.action.invite.done\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"user.action.invite.help\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n                \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"projectsmultifield\\\"]]],[[\\\"_class\\\",\\\"change\\\"],[\\\"add-fields form-control\\\",\\\"changeSelectedProject\\\"]]],false],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"selectedProject\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"primary\\\",[28,\\\"action\\\",[[23,0,[]],\\\"inviteNow\\\"],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"user.action.invite.send\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,6,[\\\"footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"default\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showSelectProjects\\\"]]],null],false],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHidden\\\"],[[23,0,[\\\"showId06Checker\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showId06Checker\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,4,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.action.checkid06.title\\\"],null],false],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,4,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"user.action.checkid06.done\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"id06StatusChanges\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,5,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,5,[\\\"user\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,5,[\\\"user\\\",\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"pt-5\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"pt-5\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[10,\\\"data-anchor\\\",\\\"checkid06-modal-reason\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[23,5,[\\\"error\\\"]],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,5,[\\\"user\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,5,[\\\"user\\\",\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"pt-5\\\"],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"label-m \\\",[23,5,[\\\"from_class\\\"]]]]],[8],[1,[23,5,[\\\"from_text\\\"]],false],[9],[0,\\\" ->\\\\n                                \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"label-m \\\",[23,5,[\\\"to_class\\\"]]]]],[8],[1,[23,5,[\\\"to_text\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[10,\\\"data-anchor\\\",\\\"checkid06-modal-reason\\\"],[8],[0,\\\"\\\\n                                \\\"],[1,[23,5,[\\\"reason_code\\\"]],false],[0,\\\" - \\\"],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"user.action.checkid06.reason_\\\",[23,5,[\\\"reason_code\\\"]]],null]],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[5]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"user.action.checkid06.nochanges\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,4,[\\\"footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"primary\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showId06Checker\\\"]]],null],false],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHidden\\\"],[[23,0,[\\\"showTvcardChecker\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showTvcardChecker\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"header\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"user.action.tvcheck.done\\\"],null],false],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"user.action.tvcheck.done\\\"],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"tvcardChanges\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,3,[\\\"user\\\",\\\"taxnumber\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"td\\\",true],[8],[1,[23,3,[\\\"user\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,3,[\\\"user\\\",\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"user.action.tvcheck.nochanges\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"notFoundUsers\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"user.action.tvcheck.not_found_users\\\"],null],false],[0,\\\"\\\\n                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"notFoundUsers\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"not_found_user\\\",\\\"taxnumber\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[7,\\\"td\\\",true],[8],[1,[23,2,[\\\"not_found_user\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,2,[\\\"not_found_user\\\",\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"primary\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showTvcardChecker\\\"]]],null],false],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/linked/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar LinkedUsersController;\n\nimport Ember from 'ember';\n\nimport collector from '../../../classes/collector';\n\nLinkedUsersController = Ember.Controller.extend({\n    Collector: Em.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    rowActions: [\n        {\n            action: 'editRow',\n            icon: 'move move-Pencil',\n        },\n    ],\n    checkedActions: Ember.computed(function () {\n        return [\n            {\n                name: 'unlinkUsers',\n                func: function (users) {\n                    var callQueue, clearThese, data, form, queue;\n                    form = 'user';\n                    clearThese = ['project', 'user', 'employer'].filter((link_form) => {\n                        return this.get('Collector').testNeeds([link_form]);\n                    });\n                    data = {};\n                    data[form] = {};\n                    clearThese.forEach((link_form) => {\n                        return (data[form]['link.' + this.get('Collector').pluralize(link_form)] =\n                            'clear');\n                    });\n                    queue = users.map(function (user) {\n                        return Ember.get(user, 'id');\n                    });\n                    // requests must be done in queue .. or capi cache makes only first call to work\n                    callQueue = function (self, data, queue, caller) {\n                        return new Ember.RSVP.Promise((resolve) => {\n                            var promise, userid;\n                            userid = queue.pop();\n                            if (!userid) {\n                                resolve();\n                                return;\n                            }\n                            promise = self.get('Collector').ajax({\n                                method: 'put',\n                                url: 'users/' + userid,\n                                data: JSON.stringify(data),\n                            });\n                            return promise.then(function () {\n                                return caller(self, data, queue, caller).then(resolve);\n                            });\n                        });\n                    };\n                    return callQueue(this, data, queue, callQueue).then(() => {\n                        return this.initData();\n                    });\n                },\n            },\n        ];\n    }),\n    path: 'linked_users',\n    rows: 0,\n    getRows: Em.observer('filterValues', function () {\n        var c, promise, query, query_str_arr, url;\n        url = this.get('path');\n        query = this.get('filterValues');\n        if (query) {\n            query_str_arr = [];\n            $.each(query, (key, item) => {\n                if (!item.value) {\n                    return;\n                }\n                return query_str_arr.push(item.name + '=' + item.value);\n            });\n            if (query_str_arr.length === 0) {\n                this.set('rows', 0);\n            }\n            url += '?' + query_str_arr.join('&');\n        }\n        url += '&limit=1&out=(empty)';\n        c = this.get('Collector');\n        promise = c.ttapi({\n            url: url,\n        });\n        return promise.then((data) => {\n            return this.set('rows', data.count);\n        });\n    }),\n    actions: {\n        editRow: function (params) {\n            return this.transitionToRoute('users.edit', params.id).then(function (newRoute) {\n                return newRoute.controller.set('afterSave', 'users.linked');\n            });\n        },\n        removeRow: function (params) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    if (con) {\n                        return this.get('store')\n                            .findRecord('user', params.id)\n                            .then((record) => {\n                                return record.destroyRecord();\n                            });\n                    }\n                });\n        },\n    },\n});\n\nexport default LinkedUsersController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/linked/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar LinkedUsersRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nLinkedUsersRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default LinkedUsersRoute;\n","export default Ember.HTMLBars.template({\"id\":\"vOm8SwAC\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/filters-comp\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"values\\\"],[\\\"employer\\\",\\\"user\\\",[24,[\\\"filterValues\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-main-content\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[1,[28,\\\"api-report\\\",null,[[\\\"filters\\\",\\\"path\\\",\\\"translationPrefix\\\",\\\"pdfSubHeader\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"editRow\\\",\\\"removeRow\\\",\\\"hideExports\\\",\\\"checkable\\\",\\\"checkedActions\\\",\\\"checkedRowsAction_unlinkUsers\\\",\\\"noRowsText\\\"],[[24,[\\\"filterValues\\\"]],\\\"linked_users\\\",\\\"report.linked_users\\\",\\\"linked_users\\\",[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",\\\"editRow\\\",\\\"removeRow\\\",true,true,[24,[\\\"checkedActions\\\"]],\\\"unlinkUsers\\\",[28,\\\"t\\\",[\\\"report.no_rows\\\"],null]]]],false],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/linked/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"8aPFOgSb\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/loading/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/removed/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersRemovedController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nUsersRemovedController = GeneralReportController.extend({\n    flags: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    form: 'user',\n    showColumns: [\n        'lastname',\n        'firstname',\n        'username',\n        'taxnumber',\n        'id06kort',\n        'employer',\n        'userlevel',\n        'password',\n        'email',\n        'phone',\n    ],\n    queryParams: ['page', 'employer', 'q', 'group'],\n    init_functions: function () {\n        if (\n            this.get('flags').test('form-report-users') ||\n            this.get('flags').test('ember-movenium-form-report-users')\n        ) {\n            return null;\n        } else {\n            return this._super();\n        }\n    },\n    filters: Em.A([\n        Em.Object.create({\n            field: 'employer',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    row_info_status: 'removed',\n    employer: null,\n    settings: Em.Object.create({\n        showStatus: 'removed',\n        rowActions: [],\n    }),\n    actions: {\n        filterChangeAction: function (value, field) {\n            if (Ember.typeOf(value) === 'object' || Ember.typeOf(value) === 'instance') {\n                return this.set(field, value.id);\n            } else {\n                return this.set(field, value);\n            }\n        },\n    },\n});\n\nexport default UsersRemovedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/removed/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersRemovedRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nUsersRemovedRoute = GeneralReportRoute.extend({\n    flags: Ember.inject.service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        if (\n            !this.get('flags').test('form-report-users') &&\n            !this.get('flags').test('ember-movenium-form-report-users')\n        ) {\n            params = this._super(params);\n            params.sideload = true;\n            return this.store.query('user', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return this.controllerFor('users.removed').set('qParams', params);\n        }\n    },\n});\n\nexport default UsersRemovedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"b5NM0JSD\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"tableAction\\\",\\\"more\\\",\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"settings\\\",\\\"showStatus\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"users.report.removed_users\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-users\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showRemoved\\\",\\\"@filterByValues\\\",\\\"@showFilters\\\",\\\"@filterChangeAction\\\",\\\"@localStorageKey\\\"],[\\\"user\\\",true,[22,\\\"qParams\\\"],\\\"q,employer\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null],\\\"removed_user\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,5,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,8,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,7,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"form-report-users\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"collector/form-report\\\",[],[[\\\"@form\\\",\\\"@showRemoved\\\",\\\"@filterByValues\\\"],[\\\"user\\\",true,[22,\\\"qParams\\\"]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"filters\\\"]],[],[[\\\"@showColumns\\\",\\\"@filterChangeAction\\\"],[\\\"q,employer\\\",[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"more\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"qrCode\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"inlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"pdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"columnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"exportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"rowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"no-content\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"user\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"limit\\\",\\\"offset\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",\\\"user\\\",[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/removed/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nUsersRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default UsersRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/saldocalendar/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditSaldoController;\n\nimport Ember from 'ember';\n\nconst { get, set } = Ember;\n\nUsersEditSaldoController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    queryParams: ['date', 'user', 'employer'],\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n    user: null,\n    form: 'worktime',\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'date',\n                type: 'date',\n                form: 'worktime',\n                name: 'date',\n                value: this.get('date'),\n            }),\n            Em.Object.create(\n                {\n                    field: 'employer',\n                    type: 'database',\n                    form: 'user',\n                    name: 'employer',\n                },\n                {\n                    singleselect: true,\n                },\n            ),\n            Em.Object.create(\n                {\n                    field: 'user',\n                    type: 'database',\n                    form: 'worktime',\n                    name: 'user',\n                },\n                {\n                    singleselect: true,\n                },\n            ),\n        ]);\n    }),\n    saldos: Ember.computed.alias('model.list'),\n    currentSaldo: Ember.computed.alias('model.currentSaldo'),\n    modalTitle: Ember.computed('showDate', function () {\n        return moment(this.get('showDate')).format('dd L');\n    }),\n    observeFilters: Ember.observer('filters.@each.value', function () {\n        return this.get('filters').forEach((item) => {\n            return this.set(item.name, item.value);\n        });\n    }),\n    insightsData: Ember.computed('showDate', function () {\n        return this.get('Collector').ttapi({\n            url: 'saldo/insight?date=' + this.get('showDate') + '&user=' + this.get('model.user'),\n        });\n    }),\n    actions: {\n        dayClicked: function (date) {\n            if (this.get('model.list.' + date + '.saldo') !== 'not_started') {\n                return this.set('showDate', date);\n            }\n        },\n        closeModal: function () {\n            return this.set('showDate', null);\n        },\n    },\n});\n\nexport default UsersEditSaldoController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/saldocalendar/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersEditSaldoRoute;\n\nimport Ember from 'ember';\n\nUsersEditSaldoRoute = Ember.Route.extend({\n    Collector: Ember.inject.service('collector-service'),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var enddate, promise, startdate, user;\n        if (!Ember.get(params, 'user') || !Ember.get(params, 'date')) {\n            return null;\n        }\n        user = Ember.get(params, 'user');\n        startdate = Ember.get(params, 'date').split('_')[0];\n        enddate = Ember.get(params, 'date').split('_')[1];\n        promise = new Ember.RSVP.Promise((resolve) => {\n            return this.get('Collector')\n                .ttapi({\n                    url: 'saldo/get_saldo?userid=' + user,\n                })\n                .then((back) => {\n                    return resolve({\n                        value: back['saldo'] / 60,\n                        from: back['from'],\n                        to: back['to'],\n                    });\n                });\n        });\n        return promise.then((currentSaldo) => {\n            return Ember.RSVP.hash({\n                currentSaldo: currentSaldo,\n                list: this.get('Collector').ttapi({\n                    url:\n                        'saldo/get_saldo_list?startdate=' +\n                        startdate +\n                        '&enddate=' +\n                        enddate +\n                        '&userid=' +\n                        user,\n                }),\n                user: user,\n                saldo_settings: this.get('Collector').ttapi({\n                    url: 'saldo/saldoSettings?userid=' + user,\n                }),\n            });\n        });\n    },\n    actions: {\n        refreshModel: function () {\n            return this.refresh();\n        },\n    },\n});\n\nexport default UsersEditSaldoRoute;\n","export default Ember.HTMLBars.template({\"id\":\"cbfYNB+A\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\",\\\"index\\\",\\\"specialDay\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\"],[[24,[\\\"filters\\\"]],\\\"worktime\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"user\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[8],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.usersaldo\\\"],null],false],[0,\\\":\\\\n        \\\"],[1,[28,\\\"format-hours\\\",[[24,[\\\"currentSaldo\\\",\\\"value\\\"]]],null],false],[0,\\\" (\\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"currentSaldo\\\",\\\"from\\\"]],\\\"L\\\"],null],false],[0,\\\"-\\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"currentSaldo\\\",\\\"to\\\"]],\\\"L\\\"],null],false],[0,\\\")\\\\n    \\\"],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"calendar-report\\\",null,[[\\\"hideDateRangePicker\\\",\\\"date\\\"],[true,[24,[\\\"date\\\"]]]],{\\\"statements\\\":[[4,\\\"calendar-report-day\\\",null,[[\\\"dateNonBlock\\\",\\\"day\\\",\\\"specialDay\\\"],[true,[23,1,[]],[23,3,[]]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"saldos\\\"]],[23,1,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"users/edit/saldo/calendar-card\\\",null,[[\\\"saldo\\\",\\\"click\\\",\\\"saldo_settings\\\"],[[28,\\\"get\\\",[[24,[\\\"saldos\\\"]],[23,1,[]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"dayClicked\\\",[23,1,[]]],null],[24,[\\\"model\\\",\\\"saldo_settings\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2,3]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saldo.select_user\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[4,\\\"if\\\",[[24,[\\\"showDate\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[24,[\\\"modalTitle\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"saldo-insights\\\",[],[[\\\"@date\\\",\\\"@saldo\\\",\\\"@user\\\",\\\"@data\\\",\\\"@workday_list\\\",\\\"@saldo_settings\\\"],[[22,\\\"showDate\\\"],[28,\\\"get\\\",[[24,[\\\"saldos\\\"]],[24,[\\\"showDate\\\"]]],null],[24,[\\\"model\\\",\\\"user\\\"]],[23,0,[\\\"insightsData\\\"]],[24,[\\\"model\\\",\\\"list\\\"]],[24,[\\\"model\\\",\\\"saldo_settings\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/saldocalendar/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/saldohistory/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSaldohistoryController;\n\nimport Ember from 'ember';\n\nUsersSaldohistoryController = Ember.Controller.extend({\n    queryParams: ['date', 'user', 'employer'],\n    filters: Em.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'employer',\n                type: 'database',\n                form: 'user',\n                name: 'employer',\n                singleselect: true,\n            }),\n            Em.Object.create({\n                field: 'user',\n                type: 'database',\n                form: 'worktime',\n                name: 'user',\n                singleselect: true,\n            }),\n            Em.Object.create({\n                field: 'date',\n                type: 'date',\n                form: 'worktime',\n                name: 'date',\n            }),\n        ]);\n    }),\n    mappedFilters: Em.computed('filters.@each.value', function () {\n        var arr;\n        arr = [];\n        this.get('filters').forEach((filter) => {\n            if (filter.get('field') === 'employer') {\n                if (!this.get('filters').findBy('name', 'user').get('value')) {\n                    return arr.push({\n                        name: 'user.employer',\n                        value: filter.get('value'),\n                    });\n                }\n            } else {\n                return arr.push({\n                    name: filter.get('name'),\n                    value: filter.get('value'),\n                });\n            }\n        });\n        return arr;\n    }),\n    rowActions: [\n        {\n            action: 'rowHistory',\n            icon: 'move move-Search',\n        },\n        {\n            action: 'removeRow',\n            icon: 'move move-Delete',\n        },\n    ],\n});\n\nexport default UsersSaldohistoryController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/saldohistory/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSaldohistoryRoute;\n\nimport Ember from 'ember';\n\nUsersSaldohistoryRoute = Ember.Route.extend();\n\nexport default UsersSaldohistoryRoute;\n","export default Ember.HTMLBars.template({\"id\":\"9FCqamL5\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\",\\\"table\\\",\\\"Report\\\",\\\"Table\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-users\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@showFilters\\\",\\\"@additional\\\",\\\"@useMultiFilter\\\"],[\\\"saldodeducter\\\",\\\"date,user\\\",\\\"user.employer\\\",false]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"Table\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"RowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"history,remove\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"form-report-users\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"collector/form-report\\\",[],[[\\\"@form\\\"],[\\\"saldodeducter\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"filters\\\"]],[],[[\\\"@showColumns\\\",\\\"@additional\\\",\\\"@useMultiFilter\\\"],[\\\"user,date\\\",\\\"user.employer\\\",false]]],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"table\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"rowActions\\\"]],[],[[\\\"@showActions\\\"],[\\\"history,remove\\\"]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"no-content\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterChanged\\\"],[[24,[\\\"filters\\\"]],\\\"user\\\",\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row report-main-content\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/report-comp\\\",null,[[\\\"form\\\",\\\"rowActions\\\",\\\"query\\\",\\\"hideSumRow\\\"],[\\\"saldodeducter\\\",[24,[\\\"rowActions\\\"]],[24,[\\\"mappedFilters\\\"]],true]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/saldohistory/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/saldos/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSaldosController;\n\nimport Ember from 'ember';\n\nimport pdfExport from '../../../mixins/pdf-export';\n\nimport csvExport from '../../../mixins/csv-export';\n\nimport config from '../../../config/environment';\n\nimport { alias } from '@ember/object/computed';\n\nimport { computed } from '@ember/object';\n\nimport { Promise } from 'rsvp';\n\nconst { get, set } = Ember;\n\nUsersSaldosController = Ember.Controller.extend(pdfExport, csvExport, {\n    content: alias('model'),\n    queryParams: [\n        'page',\n        'all_users',\n        'employer',\n        'user',\n        'group',\n        'worktimegroup',\n        'superior',\n        'userlevel',\n        'date',\n    ],\n    all_users: true,\n    values: {},\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    fileExports: Ember.inject.service(),\n    filters: Em.computed(function () {\n        var ref;\n        return Em.A([\n            Em.Object.create({\n                field: 'date',\n                type: 'date',\n                form: 'worktime',\n                name: 'date',\n                defaultValue: null,\n                value: this.date,\n            }),\n            Em.Object.create({\n                field: 'employer',\n                type: 'database',\n                form: 'user',\n                name: 'employer',\n                value: this.employer,\n            }),\n            Em.Object.create({\n                field: 'worktimegroup',\n                type: 'database',\n                form: 'user',\n                name: 'worktimegroup',\n                value: this.worktimegroup,\n            }),\n            Em.Object.create({\n                field: 'user',\n                type: 'database',\n                form: 'worktime',\n                name: 'user',\n                value: this.user,\n            }),\n            Em.Object.create({\n                field: 'group',\n                type: 'database',\n                form: 'user',\n                name: 'group',\n                value: this.group,\n            }),\n            Em.Object.create({\n                field: 'superior',\n                type: 'database',\n                form: 'user',\n                name: 'superior',\n                value: this.superior,\n            }),\n            Em.Object.create({\n                field: 'userlevel',\n                form: 'user',\n                type: 'dropdown_userlevel',\n                options:\n                    (ref = this.Collector.field('user', 'userlevel')) != null\n                        ? ref.options\n                        : void 0,\n                prompt: 'user.all_userlevels',\n                value: this.userlevel,\n            }),\n        ]);\n    }),\n    //form: \"user\"\n    translations: {\n        twentyfive: 25,\n        fifty: 50,\n        hundred: 100,\n    },\n    yesterday: computed(function () {\n        return moment().subtract(1, 'day').format('YYYY-MM-DD');\n    }),\n    dateField: computed(function () {\n        var field;\n        field = this.get('Collector').field('saldodeducter', 'date');\n        field.value = this.get('yesterday');\n        return field;\n    }),\n    columnList: ['lastname', 'firstname', 'saldostart', 'saldo'],\n    translated_columns: Em.computed(function () {\n        return [\n            this.get('intl').t('report.user.lastname'),\n            this.get('intl').t('report.user.firstname'),\n            this.get('intl').t('saldo.calculation_start'),\n            this.get('intl').t('report.saldo.columns.saldo'),\n        ];\n    }),\n    allUserRows: Ember.computed('model.[]', 'saldos.[]', function () {\n        return this.get('model.users').map((user) => {\n            var saldostart;\n            if (\n                get(user, 'saldos.user_startdate') &&\n                get(user, 'saldos.user_startdate') > get(user, 'saldos.startdate')\n            ) {\n                saldostart = moment(get(user, 'saldos.user_startdate')).format('L');\n            } else {\n                saldostart = moment(get(user, 'saldos.startdate')).format('L');\n            }\n            if (!get(user, 'saldos')) {\n                return {\n                    userid: get(user, 'id'),\n                    firstname: get(user, 'firstname'),\n                    lastname: get(user, 'lastname'),\n                    saldo: this.get('intl').t('saldos.no_calculations_yet'),\n                    saldostart: this.get('intl').t('saldos.no_calculations_yet'),\n                };\n            }\n            return {\n                userid: get(user, 'id'),\n                firstname: get(user, 'firstname'),\n                lastname: get(user, 'lastname'),\n                saldostart: saldostart,\n                saldo: this.formatHours(get(user, 'saldos.saldo') / 60),\n                unformattedSaldo: get(user, 'saldos.saldo'),\n            };\n        });\n    }),\n    outOffLimitsUserRows: Ember.computed('model.[]', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                var userids;\n                // Get all userids from the model\n                userids = this.get('model.users').map(function (row) {\n                    if (row.saldos) {\n                        return get(row.saldos, 'userid');\n                    }\n                });\n\n                // Filter out any undefined or null userids\n                userids = userids.filter(function (row) {\n                    if (row) {\n                        return true;\n                    } else {\n                        return false;\n                    }\n                });\n\n                // If no userids, resolve with an empty array\n                if (userids.length < 1) {\n                    resolve({\n                        value: [],\n                    });\n                    return;\n                }\n\n                // Filter users based on the userids\n                let users = this.get('model.users');\n                users = users.filter((user) => {\n                    return userids.includes(get(user, \"saldos.userid\"))\n                });\n                \n                var filtered_users, rows;\n                // Filter users by status 'normal'\n                filtered_users = users.filterBy('row_info.status', 'normal');\n                // Generate rows from filtered users\n                rows = filtered_users.map((user) => {\n                    var model_user, saldostart;\n                    model_user = this.get('model.users').findBy(\n                        'saldos.userid',\n                        get(user, 'id'),\n                    );\n                    model_user = model_user.saldos;\n                    if (model_user['user_startdate']) {\n                        saldostart = moment(model_user['user_startdate']).format('L');\n                    } else {\n                        saldostart = moment(model_user['startdate']).format('L');\n                    }\n                    return {\n                        firstname: get(user, 'firstname'),\n                        lastname: get(user, 'lastname'),\n                        saldostart: saldostart,\n                        saldo: this.formatHours(model_user['saldo'] / 60),\n                        unformattedSaldo: model_user['saldo'] / 60,\n                    };\n                });\n                rows.sortBy('lastname');\n                return resolve({\n                        value: rows?.length > 0 ? rows : [],\n                });\n            }),\n        });\n    }),\n    getSaldoFor: function (userid) {\n        var saldos, saldostart;\n        saldos = this.get('saldos');\n        if (saldos.get('value')) {\n            saldos = saldos.get('value').findBy('userid', userid);\n            if (saldos) {\n                if (saldos.user_startdate && saldos.user_startdate > saldos.startdate) {\n                    saldostart = moment(saldos.user_startdate).format('L');\n                } else {\n                    saldostart = moment(saldos.startdate).format('L');\n                }\n                return {\n                    saldo: this.formatHours(saldos.saldo / 60),\n                    saldostart: saldostart,\n                    unformattedSaldo: saldos.saldo / 60,\n                };\n            } else {\n                return {\n                    saldo: this.get('intl').t('saldos.no_calculations_yet'),\n                    saldostart: this.get('intl').t('saldos.no_calculations_yet'),\n                };\n            }\n        } else {\n            return '';\n        }\n    },\n    formatHours: function (hours) {\n        var minutes, negative;\n        if (hours < 0) {\n            hours = hours * -1;\n            negative = true;\n        } else {\n            negative = false;\n        }\n        minutes = Math.round((hours - Math.floor(hours)) * 60);\n        return (\n            (negative ? '-' : '') +\n            Math.floor(hours) +\n            ':' +\n            (minutes < 10 ? '0' : '') +\n            minutes +\n            'h'\n        );\n    },\n    saldos: Ember.computed('model.[]', 'date', function () {\n        return Ember.ObjectProxy.extend(Ember.PromiseProxyMixin).create({\n            promise: new Ember.RSVP.Promise((resolve) => {\n                var enddate, startdate, url, userids;\n                userids = this.get('model').map(function (user) {\n                    return get(user, 'id');\n                });\n                userids = userids.filter(function (row) {\n                    if (row) {\n                        return true;\n                    } else {\n                        return false;\n                    }\n                });\n                if (userids.length < 1) {\n                    resolve({\n                        value: [],\n                    });\n                    return;\n                }\n                url = 'saldo/get_multiple_saldos?userids=' + userids.join(',');\n                if (this.get('date')) {\n                    startdate = this.get('date').split('_')[0];\n                    enddate = this.get('date').split('_')[1];\n                    url += '&startdate=' + startdate + '&enddate=' + enddate;\n                }\n                return this.get('Collector')\n                    .ttapi({\n                        url: url,\n                    })\n                    .then((back) => {\n                        return resolve({\n                            value: back,\n                        });\n                    });\n            }),\n        });\n    }),\n    pageCount: Ember.computed('content.count', function () {\n        var limit;\n        limit = this.get('limit') ? this.get('limit') : 25;\n        return Math.ceil(this.get('content.count') / limit);\n    }),\n    observeFilters: Ember.observer('filters.@each.value', function () {\n        return this.get('filters').forEach((item) => {\n            return this.set(item.name, item.value);\n        });\n    }),\n    make_pdf_export: function (data) {\n        var element, intl;\n        intl = this.get('intl');\n        element = this.createPdfTableElement(\n            this.get('columnList'),\n            data,\n            this.get('translated_columns'),\n        );\n        return this.createPdfFromElements([element], 'download', '', 16).then((file) => {\n            if (typeof cordova !== 'undefined' && cordova !== null) {\n                return this.get('cordova').openFile(file, 'application/pdf');\n            }\n        });\n    },\n    make_csv_export: function (data) {\n        var element;\n        element = this.createCsvElement(\n            this.get('columnList'),\n            data,\n            this.get('translated_columns'),\n        );\n        return this.createCsvFromElements(element);\n    },\n    make_excel_export: function (data) {\n        var excelHeaders;\n        excelHeaders = [];\n        this.get('translated_columns').forEach((col, index) => {\n            return excelHeaders.pushObject({\n                name: col,\n                key: this.get('columnList')[index],\n            });\n        });\n        return this.get('fileExports').createExcelFromJSON({\n            rows: data,\n            columns: excelHeaders,\n        });\n    },\n    checkedRows: computed('allUserRows.@each.checkedClass', function () {\n        return this.get('allUserRows').filterBy('checkedClass', 'checked');\n    }),\n    get_rows_to_export: function () {\n        return new Ember.RSVP.Promise((resolve) => {\n            var checked_data, data, use_checked_rows;\n            if (this.get('all_users')) {\n                data = this.get('allUserRows');\n            } else {\n                data = this.get('outOffLimitsUserRows.value');\n            }\n            use_checked_rows = false;\n            checked_data = Em.A([]);\n            data.forEach((row) => {\n                if (row.checkedClass === 'checked') {\n                    use_checked_rows = true;\n                    return checked_data.push(row);\n                }\n            });\n            if (use_checked_rows) {\n                return resolve(checked_data);\n            } else {\n                if (this.get('all_users')) {\n                    return this.get_all_users_with_saldos().then((data) => {\n                        return resolve(data);\n                    });\n                } else {\n                    return resolve(data);\n                }\n            }\n        });\n    },\n    // fetches data 100 entries at a time\n    get_all_users_with_saldos: function () {\n        return new Ember.RSVP.Promise((resolve) => {\n            var dataArray, fetchPage, page, params;\n            dataArray = [];\n            page = 0;\n            params = this.getQueryParamsForExport();\n            fetchPage = () => {\n                params.offset = page * 100;\n                return this.ttapi\n                    .request('saldo/usersWithSaldos', {\n                        data: params,\n                    })\n                    .then((data) => {\n                        dataArray = dataArray.concat(data.users);\n                        if (dataArray.length < data.count) {\n                            page++;\n                            return fetchPage();\n                        } else {\n                            dataArray = dataArray.map((el) => {\n                                var ret, saldostart, unformattedSaldo;\n                                if (el.saldos) {\n                                    saldostart = el.saldos.startdate;\n                                    unformattedSaldo = this.formatHours(el.saldos.saldo / 60);\n                                } else {\n                                    saldostart = this.get('intl').t('saldos.no_calculations_yet');\n                                    unformattedSaldo = this.get('intl').t(\n                                        'saldos.no_calculations_yet',\n                                    );\n                                }\n                                ret = {\n                                    firstname: el.firstname,\n                                    lastname: el.lastname,\n                                    saldostart: saldostart,\n                                    saldo: unformattedSaldo,\n                                };\n                                return ret;\n                            });\n                            return resolve(dataArray);\n                        }\n                    });\n            };\n            return fetchPage();\n        });\n    },\n    getQueryParamsForExport: function () {\n        var params;\n        params = {\n            limit: 100,\n            order: 'lastname',\n        };\n        if (this.user) {\n            params.id = this.user;\n        }\n        if (this.employer) {\n            params.employer = this.employer;\n        }\n        if (this.group) {\n            params.group = this.group;\n        }\n        if (this.worktimegroup) {\n            params.worktimegroup = this.worktimegroup;\n        }\n        if (this.superior) {\n            params.superior = this.superior;\n        }\n        if (this.userlevel) {\n            params.userlevel = this.userlevel;\n        }\n        if (this.date) {\n            params.startdate = this.date.split('_')[0];\n            params.enddate = this.date.split('_')[1];\n        }\n        return params;\n    },\n    actions: {\n        moreInfo: function () {\n            if (config.brand === 'otta') {\n                return window.open(\n                    'https://ohjeet.visma.fi/articles/#!otta/saldojen-seuranta',\n                    '_blank',\n                );\n            } else {\n                return window.open(\n                    'https://ohjeet.visma.fi/articles/#!visma-movenium/saldojen-seuranta',\n                    '_blank',\n                );\n            }\n        },\n        catchActions: function (action, params) {\n            return this.send(action, params);\n        },\n        all_users: function (is_on) {\n            this.set('all_users', is_on);\n            return false;\n        },\n        showSaldodeducter: function (type) {\n            this.set('modalHeader', type ? 'saldo.add_saldo_adder' : 'saldo.add_saldo_deduction');\n            this.set('showSaldodeducterType', type);\n            this.set('showSaldodeducter', true);\n            return false;\n        },\n        hideSaldodeducter: function () {\n            this.set('showSaldodeducter', false);\n            return false;\n        },\n        hideandreload: function () {\n            this.set('showSaldodeducter', false);\n            this.send('refreshModel');\n            return false;\n        },\n        changeValue: function (value, field) {\n            return this.set('values.' + field, value);\n        },\n        superMultiSaver: async function () {\n            this.set('saving', true);\n            const allUserRows = this.get('allUserRows');\n            for (const row of allUserRows) {\n                if (row.checkedClass === 'checked') {\n                    let user = this.get('store').peekRecord('user', row.userid);\n                    // first check if user has been loaded to store\n                    if (!user) {\n                        // if not, load user from server\n                        user = await this.get('store').findRecord('user', row.userid);\n                    }\n\n                    await this.get('store')\n                        .createRecord('saldodeducter', {\n                            hours: this.get('values.hours'),\n                            user: user,\n                            description: this.get('values.description'),\n                            date: this.get('values.date')\n                                ? this.get('values.date')\n                                : this.get('yesterday'),\n                            addhours: this.get('showSaldodeducterType'),\n                        })\n                        .save();\n                }\n            }\n            this.set('saving', false);\n            return this.send('hideandreload');\n        },\n        filterChanged: function (value, fieldName) {\n            if (fieldName === 'employer') {\n                if (value == null) {\n                    return this.set('employer', '');\n                } else {\n                    return this.set('employer', value.id);\n                }\n            } else if (fieldName === 'user') {\n                if (value == null) {\n                    return this.set('user', '');\n                } else {\n                    return this.set('user', value.id);\n                }\n            }\n        },\n        export_pdf: function () {\n            return this.get_rows_to_export().then((data) => {\n                return this.make_pdf_export(data);\n            });\n        },\n        export_csv: function (data) {\n            return this.get_rows_to_export().then((data) => {\n                return this.make_csv_export(data);\n            });\n        },\n        export_excel: function (data) {\n            return this.get_rows_to_export().then((data) => {\n                return this.make_excel_export(data);\n            });\n        },\n        setRowsPerPage: function (limit) {\n            this.set('page', 1);\n            this.set('limit', limit);\n            return this.get('localStorageWrapper').setUserSetting('saldo_defaultLimit', limit);\n        },\n    },\n});\n\nexport default UsersSaldosController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/saldos/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSaldosRoute;\n\nimport Ember from 'ember';\n\nUsersSaldosRoute = Ember.Route.extend({\n    localStorageWrapper: Ember.inject.service(),\n    ttapi: Ember.inject.service(),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        all_users: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        limit: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n        worktimegroup: {\n            refreshModel: true,\n        },\n        superior: {\n            refreshModel: true,\n        },\n        userlevel: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        var defaultLimit, offset, param, param_value, qparams, rowsPerPage;\n        for (param in params) {\n            param_value = params[param];\n            if (param_value === null || param_value === 'null' || param_value === 'undefined') {\n                delete params[param];\n            }\n        }\n        if (params.limit > 100) {\n            params.limit = 100;\n        } else if (!params.limit) {\n            defaultLimit = this.get('localStorageWrapper').getUserSetting('saldo_defaultLimit');\n            if (Ember.isPresent(defaultLimit)) {\n                params.limit = defaultLimit;\n            } else {\n                params.limit = 25;\n            }\n        }\n        rowsPerPage = params.limit;\n        offset = params.page != null ? (params.page - 1) * rowsPerPage : 0;\n\n        qparams = {\n            offset: offset,\n            limit: rowsPerPage,\n            order: 'lastname',\n        };\n        if (params.user) {\n            qparams.id = params.user;\n        }\n        if (params.employer) {\n            qparams.employer = params.employer;\n        }\n        if (params.group) {\n            qparams.group = params.group;\n        }\n        if (params.worktimegroup) {\n            qparams.worktimegroup = params.worktimegroup;\n        }\n        if (params.superior) {\n            qparams.superior = params.superior;\n        }\n        if (params.userlevel) {\n            qparams.userlevel = params.userlevel;\n        }\n        if (params.date) {\n            qparams.startdate = params.date.split('_')[0];\n            qparams.enddate = params.date.split('_')[1];\n        }\n        if (params.all_users === false) {\n            qparams.use_limits = true;\n        }\n        //@store.query 'user', qparams\n        return this.ttapi.request('saldo/usersWithSaldos', {\n            data: qparams,\n        });\n    },\n    setupController: function (controller, model) {\n        var defaultLimit;\n        this._super(controller, model);\n        defaultLimit = this.get('localStorageWrapper').getUserSetting('saldo_defaultLimit');\n        if (Ember.isPresent(defaultLimit)) {\n            return controller.set('limit', defaultLimit);\n        }\n    },\n    actions: {\n        refreshModel: function () {\n            return this.refresh();\n        },\n    },\n});\n\nexport default UsersSaldosRoute;\n","export default Ember.HTMLBars.template({\"id\":\"4RzvegnL\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\"],[[24,[\\\"filters\\\"]],\\\"user\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row buttonsRow\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[10,\\\"role\\\",\\\"group\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-default \\\",[28,\\\"if\\\",[[24,[\\\"all_users\\\"]],\\\"btn-primary\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"all_users\\\",true]],[8],[1,[28,\\\"t\\\",[\\\"saldo.list.all_users\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn btn-default \\\",[28,\\\"unless\\\",[[24,[\\\"all_users\\\"]],\\\"btn-primary\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"all_users\\\",false]],[8],[1,[28,\\\"t\\\",[\\\"saldo.list.users_out_of_limits\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"company_info\\\",\\\"country\\\"]],\\\"fi\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"moreInfo\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moreInfo\\\"]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"info-button-md\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"infoText hidden-xs\\\"],[8],[1,[28,\\\"t\\\",[\\\"saldo.more_info_link\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row moreButtonsRow\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 saldoDeducterButtons\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"saldodeducter@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showSaldodeducter\\\",false]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"saldo.add_saldo_deduction\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"showSaldodeducter\\\",true]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"saldo.add_saldo_adder\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 text-right\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more display-menu\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"saldo-page-limit\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.columns.limit\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"dropdown-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"unless\\\",[[24,[\\\"limit\\\"]],\\\"selected-limit\\\"],null],\\\" \\\",[28,\\\"if\\\",[[28,\\\"is-almost-equal\\\",[[24,[\\\"limit\\\"]],\\\"25\\\",true],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",25]],[8],[1,[24,[\\\"translations\\\",\\\"twentyfive\\\"]],false],[9],[0,\\\" |\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"if\\\",[[28,\\\"is-almost-equal\\\",[[24,[\\\"limit\\\"]],\\\"50\\\",true],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",50]],[8],[1,[24,[\\\"translations\\\",\\\"fifty\\\"]],false],[9],[0,\\\" |\\\\n                \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"limit \\\",[28,\\\"if\\\",[[28,\\\"is-almost-equal\\\",[[24,[\\\"limit\\\"]],\\\"100\\\",true],null],\\\"selected-limit\\\"],null]]]],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setRowsPerPage\\\",100]],[8],[1,[24,[\\\"translations\\\",\\\"hundred\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_csv\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_csv\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_excel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_excel\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\" row report-main-content\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"all_users\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"checkable\\\",\\\"hideSort\\\"],[[24,[\\\"columnList\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"allUserRows\\\"]],true,true]]],false],[0,\\\"\\\\n\\\\n        \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\",\\\"checkable\\\",\\\"hideSort\\\"],[[24,[\\\"columnList\\\"]],[24,[\\\"translated_columns\\\"]],[24,[\\\"outOffLimitsUserRows\\\",\\\"value\\\"]],true,true]]],false],[0,\\\"\\\\n        \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showSaldodeducter\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[[24,[\\\"modalHeader\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"hideSaldodeducter\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"checkedRows\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"dateField\\\"]]],[[\\\"change\\\"],[\\\"changeValue\\\"]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"saldodeducter.hours\\\"],[[\\\"change\\\"],[\\\"changeValue\\\"]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"saldodeducter.description\\\"],[[\\\"change\\\"],[\\\"changeValue\\\"]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"strong\\\",true],[8],[1,[24,[\\\"checkedRows\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"messages.add.users_selected\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row record-comp-buttons\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"superMultiSaver\\\",true]],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"hideSaldodeducter\\\"]],[8],[0,\\\"\\\\n                                \\\"],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"             \\\"],[1,[28,\\\"users/edit/saldo/saldo-deducter\\\",null,[[\\\"adding\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"showSaldodeducterType\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"hideandreload\\\"],null],\\\"hideSaldodeducter\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/saldos/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"WvLNwNRw\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[5,\\\"promo-ad\\\",[],[[\\\"@background\\\",\\\"@promoClass\\\",\\\"@product\\\",\\\"@buttonText\\\",\\\"@transitionTarget\\\"],[\\\"saldos\\\",\\\"left-align\\\",\\\"saldo\\\",\\\"ads.activate-saldos\\\",\\\"users.saldos\\\"]]]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/saldos_ad/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/saved/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSavedController;\n\nimport Ember from 'ember';\n\nimport savedController from '../../../controllers/saved';\n\nimport config from '../../../config/environment';\n\nUsersSavedController = savedController.extend({\n    intl: Ember.inject.service(),\n    //    needs: 'orientations/add'\n    orientationAddController: Ember.inject.controller('orientations/add'),\n    hideAddSame: true,\n    showAddOrientation: Ember.computed(function () {\n        return this.Collector.formExists('orientation');\n    }),\n    email: null,\n    email_send_status: null,\n    email_sent: false,\n    email_error: false,\n    phone_error: false,\n    sms_send_status: null,\n    sms_sent: false,\n    reset: function () {\n        this.set('sms_sent', false);\n        return this.set('email_sent', false);\n    },\n    actions: {\n        addOrientation: function () {\n            var controller, user;\n            user = this.get('model.id');\n            controller = this.get('orientationAddController');\n            controller.set('users', Em.A([parseInt(user, 10)]));\n            return this.transitionToRoute('orientations.add');\n        },\n        send_sms: function () {\n            var model, phone, promise, self;\n            model = this.get('model');\n            phone = model.get('phone');\n            if (!/^[+]?[0-9]{10,20}$/i.test(phone)) {\n                this.set('phone_error', this.get('intl').t('field.error.phone'));\n                return;\n            }\n            if (!/^[+]/i.test(phone)) {\n                this.set('phone_error', this.get('intl').t('field.error.country_code'));\n                return;\n            }\n            this.set('phone_error', false);\n            if (model.get('isDirty')) {\n                model.save();\n            }\n            this.set('sms_sent', true);\n            this.set('sms_send_status', this.get('intl').t('general.sending'));\n            self = this;\n            promise = this.Collector.ttapi({\n                url: 'sendSms',\n                data: {\n                    phone: model.get('phone'),\n                    messageid: 'new_user_added',\n                    values: {\n                        userid: model.get('id'),\n                        product: config.brand === 'otta' ? 'Otta' : 'Visma Movenium',\n                    },\n                    language: moment.locale(),\n                },\n                method: 'post',\n            });\n            return promise.then(\n                function (ret) {\n                    return self.set(\n                        'sms_send_status',\n                        self.get('intl').t('users.credentials_sent'),\n                    );\n                },\n                function (ret) {\n                    return self.set('sms_send_status', 'ERROR: ' + ret);\n                },\n            );\n        },\n        sendEmail: function () {\n            var content, email, model, promise;\n            model = this.get('model');\n            email = model.get('email');\n            if (\n                !/^([\\w-]+(?:\\.[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(\\s){0,1}(?:\\.[a-z]{2})?)$/i.test(\n                    email,\n                )\n            ) {\n                this.set('email_error', this.get('intl').t('field.error.email'));\n                return;\n            }\n            this.set('email_error', false);\n            if (model.get('isDirty')) {\n                model.save();\n            }\n            this.set('email_sent', true);\n            this.set('email_send_status', this.get('intl').t('general.sending'));\n            content =\n                this.get('intl').t('user.action.email.email_content', {\n                    url: window.location.origin,\n                }) +\n                '<br><br>' +\n                this.get('intl').t('user.action.email.email_username') +\n                ': ' +\n                model.get('username') +\n                '<br>' +\n                this.get('intl').t('user.action.email.email_password') +\n                ': ' +\n                model.get('password') +\n                '<br>';\n            promise = this.Collector.ttapi({\n                url: 'sendEmail',\n                data: {\n                    email: email,\n                    title:\n                        this.get('session.currentUser.company') +\n                        ' - ' +\n                        this.get('intl').t('user.action.email.email_title'),\n                    content: content.replace(/<br ?\\/?>/g, '\\n'),\n                },\n                method: 'post',\n            });\n            return promise.then(() => {\n                return this.set('email_send_status', this.get('intl').t('users.credentials_sent'));\n            });\n        },\n    },\n});\n\nexport default UsersSavedController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/saved/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSavedRoute;\n\nimport Ember from 'ember';\n\nimport SavedRoute from '../../../routes/saved';\n\nUsersSavedRoute = SavedRoute.extend({\n    templateName: 'users.saved',\n    actions: {\n        didTransition: function () {\n            var controller;\n            controller = this.get('controller');\n            if (!controller) {\n                return;\n            }\n            return controller.reset();\n        },\n    },\n});\n\nexport default UsersSavedRoute;\n","export default Ember.HTMLBars.template({\"id\":\"uLauEAyY\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/saved\\\",[]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"userlevel=4,5\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n            \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"button\\\",\\\"btn btn-m-link btn-lg btn-block\\\",\\\"users.edit.permissions\\\",[24,[\\\"model\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"users.saved.add_restrictions\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAddOrientation\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-lg btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addOrientation\\\"]],[8],[1,[28,\\\"t\\\",[\\\"orientations.add_to_user\\\"],null],false],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"email_sent\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-8\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[24,[\\\"email_error\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"users.send_email\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"email_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[22,\\\"email_error\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"placeholder\\\"],[\\\"text\\\",\\\"form-control\\\",[24,[\\\"model\\\",\\\"email\\\"]],\\\"Type E-mail address\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"email_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"type\\\",\\\"submit\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendEmail\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.send_sms\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"email_send_status\\\"],false],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"sms_sent\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-8\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group \\\",[28,\\\"if\\\",[[24,[\\\"phone_error\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"\\\"],[8],[1,[28,\\\"t\\\",[\\\"users.send_sms\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"phone_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[22,\\\"phone_error\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"placeholder\\\"],[\\\"text\\\",\\\"form-control\\\",[24,[\\\"model\\\",\\\"phone\\\"]],\\\"Type phone number\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"phone_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"type\\\",\\\"submit\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send_sms\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.send_sms\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"sms_send_status\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/users/saved/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/subcontractor/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSubcontractorController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport pdfExport from '../../../mixins/pdf-export';\n\nUsersSubcontractorController = GeneralReportController.extend(pdfExport, {\n    Collector: Ember.inject.service('collector-service'),\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    queryParams: ['project', 'page', 'employer'],\n    filters: Ember.computed(function () {\n        return Em.A([\n            Em.Object.create({\n                field: 'project',\n                type: 'database',\n                form: this.get('Collector').testNeedsOne('worktime.project')\n                    ? 'worktime'\n                    : 'presence',\n                name: 'project',\n            }),\n            Em.Object.create({\n                field: 'employer',\n                type: 'database',\n                form: 'user',\n                name: 'employer',\n            }),\n            Em.Object.create({\n                field: 'date',\n                type: 'date',\n                form: this.get('Collector').testNeedsOne('worktime.project')\n                    ? 'worktime'\n                    : 'presence',\n                name: 'date',\n            }),\n        ]);\n    }),\n    limit: 25,\n    page: 1,\n    editingRow: null,\n    project: [],\n    employer: [],\n    date:\n        moment().startOf('month').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('month').format('YYYY-MM-DD'),\n    showColumns: [\n        'firstname',\n        'lastname',\n        'birthdate',\n        'taxnumber',\n        'employer',\n        'startdate',\n        'enddate',\n        'sent_contact_person',\n        'sent_contact_address',\n        'workpass',\n    ],\n    rowActions: Ember.computed('intl', function () {\n        var arr;\n        arr = [\n            {\n                action: 'removeRow',\n                icon: 'move move-Delete',\n                text: this.get('intl').t('report.delete_rows'),\n            },\n            {\n                action: 'editRow',\n                icon: 'move move-Pencil',\n                text: this.get('intl').t('report.edit_rows'),\n            },\n        ];\n        return arr;\n    }),\n    init_functions: function () {\n        return this._super();\n    },\n    asPdfElement: Ember.computed('model', function () {\n        var params;\n        params = {};\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var data, filter, i, len, ref;\n            ref = this.get('filters');\n            for (i = 0, len = ref.length; i < len; i++) {\n                filter = ref[i];\n                if (filter.value) {\n                    params[filter.field] = filter.value;\n                }\n            }\n            data = this.get('Collector').ttapi({\n                url: 'subcontractor',\n                data: params,\n            });\n            return data.then((return_data) => {\n                var currentData;\n                if (return_data) {\n                    currentData = this.formatData(return_data);\n                    return resolve(\n                        this.createPdfTableElement(\n                            this.get('showColumns'),\n                            currentData,\n                            this.get('translated_columns'),\n                        ),\n                    );\n                } else {\n                    return resolve([]);\n                }\n            });\n        });\n    }),\n    // get translation for every column\n    translated_columns: Em.computed('showColumns', function () {\n        var c, columns, intl, translated_columns;\n        c = this.get('Collector');\n        intl = this.get('intl');\n        columns = this.get('showColumns');\n        translated_columns = [];\n        $.each(columns, (key, item) => {\n            return translated_columns.push(intl.t('report.user.' + item));\n        });\n        return translated_columns;\n    }),\n    formatData: function (model) {\n        var formatted_rows;\n        if (!model) {\n            return;\n        }\n        formatted_rows = [];\n        model['worktimes'].forEach((row) => {\n            var tmp, tmpEmp, tmpuser, userData;\n            tmp = row;\n            tmpuser = model['users'].filterBy('id', tmp.user);\n            for (userData in tmpuser[0]) {\n                if (typeof tmpuser[0][userData] === 'boolean') {\n                    if (tmpuser[0][userData]) {\n                        tmpuser[0][userData] = this.get('intl').t('general.yes');\n                    } else {\n                        tmpuser[0][userData] = this.get('intl').t('general.no');\n                    }\n                }\n                if (userData !== 'id') {\n                    if (userData === 'birthdate') {\n                        Em.set(row, userData, moment(tmpuser[0][userData]).format('L'));\n                    } else {\n                        Em.set(row, userData, tmpuser[0][userData]);\n                    }\n                }\n            }\n            if (row.startdate) {\n                Em.set(row, 'startdate', moment(tmp.startdate).format('L'));\n            }\n            if (row.enddate) {\n                Em.set(row, 'enddate', moment(tmp.enddate).format('L'));\n            }\n            if (row.employer) {\n                tmpEmp = model['employers'].filterBy('id', tmp.employer);\n                if (tmpEmp[0]) {\n                    Em.set(row, 'employer', tmpEmp[0]['emp_id'] + ' ' + tmpEmp[0]['name']);\n                }\n            }\n            return formatted_rows.push(row);\n        });\n        return formatted_rows;\n    },\n    data: Em.computed('model', function () {\n        if (!this.get('model')) {\n            return;\n        }\n        return this.formatData(this.get('model'));\n    }),\n    pageCount: Ember.computed('model.count', function () {\n        return Math.ceil(this.get('model.count') / this.get('limit'));\n    }),\n    changeFormat: function (date) {\n        if (date.indexOf('/') > -1) {\n            return moment(date, 'MM/DD/YYYY').format('YYYY-MM-DD');\n        }\n        if (date.indexOf('.') > -1) {\n            return moment(date, 'DD.MM.YYYY').format('YYYY-MM-DD');\n        }\n        return date;\n    },\n    actions: {\n        catchActions: function (action, params) {\n            return this.send(action, params);\n        },\n        removeRow: function (obj) {\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('report.confirm_delete'))\n                .then((con) => {\n                    var promise;\n                    if (con) {\n                        promise = this.get('Collector').ttapi({\n                            method: 'post',\n                            data: {\n                                userid: obj.user,\n                                startdate: obj.startdate,\n                                enddate: obj.enddate,\n                                projectid: obj.project,\n                            },\n                            url: 'removeFirstWorkLog',\n                        });\n                        return promise.then((back) => {\n                            if (back.msg === 'ok') {\n                                return this.get('data').removeObject(obj);\n                            }\n                        });\n                    }\n                });\n        },\n        closeModal: function () {\n            return this.set('editingRow', null);\n        },\n        editRow: function (obj) {\n            var _enddate, _startdate, newDates;\n            _startdate = this.changeFormat(obj.startdate);\n            _enddate = this.changeFormat(obj.enddate);\n            newDates = {\n                startdate: _startdate,\n                enddate: _enddate,\n            };\n            this.set('editingRow', obj);\n            return this.set('editingRow.newDates', newDates);\n        },\n        newDates: function () {\n            var enddate, promise, startdate;\n            startdate = this.get('editingRow.newDates.startdate');\n            enddate = this.get('editingRow.newDates.enddate');\n            promise = this.get('Collector').ttapi({\n                method: 'post',\n                data: {\n                    userid: this.get('editingRow').user,\n                    newstartdate: startdate,\n                    newenddate: enddate,\n                    oldstartdate: this.changeFormat(this.get('editingRow').startdate),\n                    oldenddate: this.changeFormat(this.get('editingRow').enddate),\n                    projectid: this.get('editingRow').project,\n                },\n                url: 'editFirstWorkLog',\n            });\n            return promise.then((back) => {\n                this.set('editingRow.startdate', startdate);\n                this.set('editingRow.enddate', enddate);\n                return this.set('editingRow', null);\n            });\n        },\n        export_pdf: function () {\n            return this.get('asPdfElement').then((element) => {\n                var elements, pdf_filters_body;\n                elements = [element];\n                if (this.get('filters')) {\n                    pdf_filters_body = this.getPdfFilters(this.get('data'));\n                    if (pdf_filters_body.length > 0) {\n                        elements.unshift({\n                            table: {\n                                body: pdf_filters_body,\n                            },\n                            layout: 'noBorders',\n                        });\n                    }\n                }\n                return this.createPdfFromElements(elements).then((file) => {\n                    if (typeof cordova !== 'undefined' && cordova !== null) {\n                        return this.get('cordova').openFile(file, 'application/pdf');\n                    }\n                });\n            });\n        },\n    },\n});\n\nexport default UsersSubcontractorController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/users/subcontractor/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar UsersSubcontractorRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nimport config from '../../../config/environment';\n\nimport collector from '../../../classes/collector';\n\nUsersSubcontractorRoute = GeneralReportRoute.extend({\n    ttapi: Ember.inject.service(),\n    queryParams: {\n        project: {\n            refreshModel: true,\n            replace: true,\n        },\n        employer: {\n            refreshModel: true,\n            replace: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n            replace: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        return this.get('ttapi').request('/subcontractor', {\n            type: 'GET',\n            data: params,\n        });\n    },\n});\n\nexport default UsersSubcontractorRoute;\n","export default Ember.HTMLBars.template({\"id\":\"T6dmrGLJ\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 text-right\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[5,\\\"bs-dropdown\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\",[24,[\\\"data\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"data\\\",\\\"translationPrefix\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"filters\\\",\\\"skipLocked\\\"],[[24,[\\\"showColumns\\\"]],[24,[\\\"data\\\"]],\\\"report.user\\\",[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",[24,[\\\"filters\\\"]],true]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"editingRow\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null],[28,\\\"t\\\",[\\\"report.user.modal.changedates\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n          \\\"],[7,\\\"div\\\",true],[8],[7,\\\"label\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.user.startdate\\\"],null],false],[9],[0,\\\"\\\\n              \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"type\\\"],[[23,0,[\\\"editingRow\\\",\\\"newDates\\\",\\\"startdate\\\"]],\\\"date\\\"]]],false],[0,\\\"\\\\n          \\\"],[9],[0,\\\"\\\\n          \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mt-4\\\"],[8],[0,\\\"\\\\n             \\\"],[7,\\\"label\\\",true],[8],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.user.enddate\\\"],null],false],[9],[0,\\\"\\\\n\\\\n              \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"type\\\"],[[23,0,[\\\"editingRow\\\",\\\"newDates\\\",\\\"enddate\\\"]],\\\"date\\\"]]],false],[0,\\\"\\\\n          \\\"],[9],[0,\\\"\\\\n\\\\n          \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"ember-movenium-form-button-group\\\"],[8],[0,\\\"\\\\n              \\\"],[7,\\\"button\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"newDates\\\"],null]],[10,\\\"class\\\",\\\"ember-movenium-button ember-movenium-save-button\\\"],[10,\\\"name\\\",\\\"save-button\\\"],[10,\\\"type\\\",\\\"button\\\"],[8],[0,\\\"\\\\n                  \\\"],[1,[28,\\\"t\\\",[\\\"save\\\"],null],false],[0,\\\"\\\\n              \\\"],[9],[0,\\\"\\\\n              \\\"],[7,\\\"button\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]],[10,\\\"class\\\",\\\"ember-movenium-button ember-movenium-cancel-button\\\"],[10,\\\"name\\\",\\\"cancel-button\\\"],[10,\\\"type\\\",\\\"button\\\"],[8],[0,\\\"   \\\"],[1,[28,\\\"t\\\",[\\\"cancel\\\"],null],false],[9],[0,\\\"\\\\n          \\\"],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/subcontractor/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"p2WdJqcM\",\"block\":\"{\\\"symbols\\\":[\\\"report\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\"],[\\\"superiorreplacement\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Add\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Filters\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/superior_replacements/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"jufcVIfr\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/template.hbs\"}});","import { alias } from '@ember/object/computed';\nimport GeneralAddController from 'tt4/controllers/general-add';\nimport { typeOf } from '@ember/utils';\nimport { action } from '@ember/object';\nimport { tracked } from '@glimmer/tracking';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment';\nimport { set } from '@ember/object';\nimport config from 'tt4/config/environment';\n\nexport default class worktimegroupChangeController extends GeneralAddController {\n    @service store;\n    @service dialogs;\n    @service evented;\n    @service cdn;\n    @service intl;\n    @service('collector-service') Collector;\n\n    form = 'worktimegroupchange';\n    @tracked status = 'all';\n    @tracked dateSelector = true;\n    @tracked groupBy = null;\n    @tracked record;\n    @tracked worktypeMappings = {};\n    @tracked saving = false;\n    @tracked alertShown = false;\n    @tracked notification_user = null;\n\n    @alias('args.model') model;\n\n    @action\n    filterChangeAction(value, field) {\n        if (typeOf(value) === 'object' || typeOf(value) == 'instance') {\n            this[field] = value.id;\n        } else {\n            this[field] = value;\n        }\n    }\n\n    @action\n    closeModal() {\n        this.record.isNew ? this.record.deleteRecord() : this.record.rollbackAttributes();\n        this.record = null;\n    }\n\n    @action\n    addRecord() {\n        Notification.requestPermission();\n        let defaults = {};\n        this.record = this.store.createRecord('worktimegroupchange', defaults);\n    }\n\n    @action\n    removeRow(row) {\n        // if row.startdate is in the past, then we cannot delete it\n        if (row.startdate < moment().format('YYYY-MM-DD')) {\n            this.dialogs.alert(this.intl.t('report.worktimegroupchanges.cannot_delete'));\n        } else {\n            this.dialogs\n                .confirm(this.intl.t('report.confirm_delete'))\n                .then(this.removeOrNot.bind(this, row));\n        }\n    }\n\n    async removeOrNot(row, answer) {\n        if (!answer) return;\n        await row.destroyRecord();\n        this.evented.storeEvent('delete', 'worktimegroupchange', null);\n    }\n\n    @action\n    setDestinationWorktype(source, destination) {\n        set(this.worktypeMappings, source.id, destination);\n    }\n\n    showSlowAlert() {\n        this.clearStoredValues();\n        this.alertShown = true;\n        this.dialogs.alert(this.intl.t('report.worktimegroupchanges.saving-is-slow'));\n    }\n\n    showNotification() {\n        new Notification(this.intl.t('report.worktimegroupchanges.notification-header'), {\n            body: this.intl.t('report.worktimegroupchanges.notification-body', {\n                user: this.notification_user.firstname + ' ' + this.notification_user.lastname,\n            }),\n            icon: this.Collector.testNeedsOne('products.timetracker')\n                ? config.APP.CDN_URL + '/images/icons/movenium_filled.png'\n                : config.APP.CDN_URL + '/images/icons/entry_filled.png',\n        });\n    }\n\n    clearStoredValues() {\n        this.record = null;\n        this.alertShown = false;\n        this.saving = false;\n        this.evented.storeEvent('update', 'worktimegroupchange', null);\n    }\n\n    @action\n    async saveMappingsAndForm() {\n        let alertTimeout;\n        this.saving = true;\n        const transformedArray = Object.entries(this.worktypeMappings).map(([source, value]) => ({\n            source,\n            destination: value.id,\n        }));\n        this.record.mappings = JSON.stringify(transformedArray);\n        try {\n            // if request has taken too long, show alert that the changes are being saved and close the modal\n            alertTimeout = setTimeout(() => this.showSlowAlert(), 9000);\n            // store user for notification (cannot use this.record.user because we are clearing the record before the notification is shown)\n            this.notification_user = this.record.user;\n            await this.record.save();\n            clearTimeout(alertTimeout);\n            // if the alert has been shown, show notification\n            if (this.alertShown) {\n                this.showNotification();\n            }\n            this.clearStoredValues();\n        } catch (e) {\n            clearTimeout(alertTimeout);\n            if (e.errors && e.errors[0].status === 504) {\n                this.dialogs.alert(this.intl.t('report.worktimegroupchanges.timeout'));\n            }\n            this.clearStoredValues();\n        }\n    }\n}\n","export default Ember.HTMLBars.template({\"id\":\"ErQMqZRV\",\"block\":\"{\\\"symbols\\\":[\\\"M\\\",\\\"M\\\",\\\"Report\\\",\\\"Table\\\",\\\"field\\\",\\\"value\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@filterChangeAction\\\",\\\"@showFilters\\\"],[\\\"worktimegroupchange\\\",[23,0,[\\\"qParams\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null],\\\"worktimegroup,destination,user,startdate,enddate\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,3,[\\\"Add\\\"]],[],[[\\\"@onClick\\\"],[[23,0,[\\\"addRecord\\\"]]]]],[0,\\\"\\\\n    \\\"],[6,[23,3,[\\\"Table\\\"]],[],[[\\\"@selectable\\\",\\\"@formatCells\\\"],[true,true]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,4,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,8,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[8]}],[0,\\\"\\\\n            \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,7,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[7]}],[0,\\\"\\\\n        \\\"],[6,[23,4,[\\\"RowActions\\\"]],[],[[\\\"@editOverrideAction\\\",\\\"@removeOverrideAction\\\",\\\"@showActions\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[23,0,[\\\"record\\\"]]],null]],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeRow\\\"],null],\\\"remove,history,overview,edit\\\"]]],[0,\\\"\\\\n        \\\"],[6,[23,4,[\\\"Cell\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,5,[]],\\\"state\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,6,[]],\\\"running\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-primary\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"report.ccbuttonexecution.state.running\\\"],null]],[8],[0,\\\"\\\\n                        \\\"],[5,\\\"spinner\\\",[],[[\\\"@size\\\"],[18]]],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,6,[]],\\\"error\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger move move-Error report-icon\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"report.ccbuttonexecution.state.error\\\"],null]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,6,[]],\\\"done\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-success move move-Checkmark report-icon\\\"],[11,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"report.ccbuttonexecution.state.done\\\"],null]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[23,6,[]],\\\"\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-info move move-Time report-icon\\\"],[11,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"report.ccbuttonexecution.state.waiting\\\"],null]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[23,6,[]],false],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[23,6,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[5,6]}],[0,\\\"\\\\n        \\\"],[6,[23,4,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"record\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.add_worktimegroup_change\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[5,\\\"collector/form-add/forms/worktimegroupchange\\\",[],[[\\\"@form\\\",\\\"@record\\\",\\\"@close\\\",\\\"@setDestinationWorktype\\\",\\\"@worktypeMappings\\\",\\\"@saveMappingsAndForm\\\",\\\"@saving\\\"],[\\\"worktimegroupchange\\\",[23,0,[\\\"record\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null],[23,0,[\\\"setDestinationWorktype\\\"]],[23,0,[\\\"worktypeMappings\\\"]],[23,0,[\\\"saveMappingsAndForm\\\"]],[23,0,[\\\"saving\\\"]]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[23,0,[\\\"cannotDelete\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@classes\\\"],[[28,\\\"fn\\\",[[28,\\\"mut\\\",[[24,[\\\"cannotDelete\\\"]]],null],false],null],\\\"ember-movenium-form-report-form-add-modal\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Header\\\"]],[],[[],[]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"menu.cannot_delete_worktimegroup_change\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-column\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-40\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Error\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-60\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktimegroupchange.cannot_delete\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary pull-right mb-5\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"cannotDelete\\\"]]],null],false],null]]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/users/worktimegroup_changes/template.hbs\"}});","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\n\nexport default Route.extend({\n    gui: service(),\n\n    queryParams: {\n        code: {\n            refreshModel: true,\n        },\n    },\n\n    model(params) {\n        set(this, 'gui.saveVismanetCode', params.code);\n        this.transitionTo('salary.export-salary', { queryParams: { wizard: 'vismanet-wizard' } });\n        return { code: params.code };\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"9EtojXCh\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/vismanetsignin/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Wx/S7afs\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[22,\\\"worksite-areas-report/logs\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksite-areas/log-report/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"1ssXYQVX\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[22,\\\"worksite-areas-report/passes\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksite-areas/report/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"jD3ZHCNA\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksite-areas/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryAddController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nimport collector from '../../../classes/collector';\n\nimport config from '../../../config/environment';\n\nWorksitediaryAddController = GeneralAddController.extend({\n    weather: Ember.inject.service(),\n    GpsLocator: Ember.inject.service(),\n    /*\n  GetGPSCoords: ->\n      self = @\n      tmp = Ember.A []\n      @get('GpsLocator').getLocation().then (position) ->\n          $.getJSON config.APP.WEATHER_API+\"?lat=\"+position.coords.latitude+\"&lon=\"+position.coords.longitude, (json) ->\n              dew_point = json.temperature-((100-json.humidity)/5)\n              json.dew_point = Math.round(dew_point * 100) / 100\n              self.set 'model.weather', json\n      , (error) ->\n          self.set 'currentPos', error\n\n  */\n    editNewLink: 'worksitediary.edit',\n    customization: Em.computed(function () {\n        return {\n            rating: {\n                template: 'worksitediary/add/rating',\n            },\n            weather: {\n                template: 'worksitediary/add/weather',\n            },\n        };\n    }),\n    actions: {\n        generalAddAction: function (type, field = null) {\n            switch (type) {\n                case 'giveThumbUp':\n                    return this.giveThumb('up');\n                case 'giveThumbDown':\n                    return this.giveThumb('down');\n            }\n        },\n    },\n    //if field == 'project'\n    //    @get('weather').fetchWeatherPosition(type).then (weather) =>\n    //        @set 'model.weather', weather\n    //    , (reason) ->\n    //        @set 'model.weather', reason\n    giveThumb: function (value) {\n        var model;\n        model = this.get('model');\n        return model.set('rating', value);\n    },\n});\n\nexport default WorksitediaryAddController;\n","export default Ember.HTMLBars.template({\"id\":\"oJ5Wdc45\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[\\\"move move-GoodQuality big-thumb \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"rating\\\"]],\\\"up\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"giveThumbUp\\\"]],[8],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"down\\\"],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[\\\"move move-PoorQuality big-thumb \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"rating\\\"]],\\\"down\\\"],null],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"giveThumbDown\\\"]],[8],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.worksitediary\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"query\\\"],[\\\"button\\\",\\\"btn btn-m-link\\\",[28,\\\"hash\\\",null,[[\\\"modal\\\"],[\\\"diaryreport_other_note\\\"]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"worksitediary.add_other_entry\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"query\\\"],[\\\"button\\\",\\\"btn btn-m-link\\\",[28,\\\"hash\\\",null,[[\\\"modal\\\"],[\\\"diaryreport_note\\\"]]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"worksitediary.add_note\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/add/rating/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryAddRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nWorksitediaryAddRoute = GeneralAddRoute.extend({\n    modelName: 'worksitediary',\n    afterSave: 'worksitediary.events',\n    controllerName: 'worksitediary.add',\n    savedRoute: 'saved',\n    Collector: Ember.inject.service('collector-service'),\n    weather: Ember.inject.service(),\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        return controller.set('model', model);\n    },\n    //@get('weather').fetchWeatherPosition().then (e) ->\n    //    controller.set('model.weather', e)\n    afterModel: function (model) {\n        var controller;\n        controller = this.controllerFor('worksitediary/add');\n        return controller.set('overrideWeather', false);\n    },\n    /*\n  if model.get 'isNew'\n      @get('weather').fetchWeatherPosition(model).then ((weather) ->\n          controller.set('model.weather', weather)\n      ), (reason) ->\n          controller.set('model.weather', reason)\n  else\n      try\n          controller.set 'weather', JSON.parse(model.get('weather'))\n      catch e\n          controller.set 'weather', null\n      controller.set 'editMode', true\n\n  controller = @controllerFor('worksitediary/add')\n  console.log model.get 'project.id'\n  @get('weather').fetchWeatherPosition(model).then ((weather) ->\n      controller.set('model.weather', weather)\n  ), (reason) ->\n      controller.set('model.weather', reason)\n\n  */\n    actions: {\n        save: function () {\n            var json_weather, row, self;\n            self = this;\n            row = this.get('controller.model');\n            if (row.get('weather')) {\n                json_weather = row.get('weather');\n                row.set('weather', JSON.stringify(json_weather));\n            }\n            if (this.get('Collector').formExists('diary')) {\n                this.set('afterSave', 'diary.events');\n            }\n            //hideFields = self.get 'controller.hideFromSaved'\n            this._super();\n        },\n    },\n});\n\n//            row.save().then (saved_row) ->\n//                self.transitionTo('saved').then (newRoute) ->\n//                    newRoute.controller.set 'model', saved_row\n//                    newRoute.controller.set 'afterSave',\n//                    newRoute.controller.set 'hideFields', self.get 'controller.hideFromSaved'\nexport default WorksitediaryAddRoute;\n","export default Ember.HTMLBars.template({\"id\":\"T/eqg2d0\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/add/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"KRDNuBaX\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"components/weather-component\\\",null,[[\\\"value\\\",\\\"project\\\",\\\"date\\\",\\\"isNew\\\"],[[24,[\\\"value\\\"]],[24,[\\\"model\\\",\\\"project\\\"]],[24,[\\\"model\\\",\\\"date\\\"]],[24,[\\\"model\\\",\\\"isNew\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/add/weather/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/automation/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryAutomationController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nWorksitediaryAutomationController = GeneralReportController.extend({\n    Collector: Ember.inject.service('collector-service'),\n    projects: false,\n    addedProjects: Ember.A([]),\n    showTheseColumns: ['number', 'name', 'autodiary'],\n    project: Ember.computed(function () {\n        var project;\n        project = this.get('Collector').fieldArray('diaryreport', ['project'])[0];\n        project.value = void 0;\n        project.filterOptions = {\n            autodiary: 'off',\n        };\n        return project;\n    }),\n    filters: Em.A([\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideEdit: true,\n            hideRemove: true,\n            historyRoute: {\n                modal: true,\n            },\n        }),\n        localStorageKey: 'diaryautomation',\n    }),\n    saveItem: function (items) {\n        var item;\n        item = items.popObject();\n        if (item) {\n            item.set('autodiary', true);\n            return item.save().then(() => {\n                return this.saveItem(items);\n            });\n        } else {\n            this.set('loading', false);\n            this.send('close');\n            return this.send('refreshModel');\n        }\n    },\n    actions: {\n        addProjects: function () {\n            this.set('projects', true);\n            return false;\n        },\n        addProject: function (value) {\n            var projects;\n            projects = this.get('addedProjects');\n            if (projects.filterBy('id', value.get('id')).get('length') > 0) {\n                return;\n            }\n            return this.get('addedProjects').pushObject(value);\n        },\n        save: function () {\n            var add;\n            this.set('loading', true);\n            add = this.get('addedProjects');\n            return this.saveItem(add);\n        },\n        close: function () {\n            this.set('addedProjects', Ember.A([]));\n            return this.set('projects', false);\n        },\n    },\n});\n\nexport default WorksitediaryAutomationController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/automation/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryAutomationRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nWorksitediaryAutomationRoute = GeneralReportRoute.extend({\n    store: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        params.autodiary = 'on';\n        return this.store.query('project', params);\n    },\n    actions: {\n        refreshModel: function () {\n            return this.refresh();\n        },\n    },\n});\n\nexport default WorksitediaryAutomationRoute;\n","export default Ember.HTMLBars.template({\"id\":\"12uAPbRZ\",\"block\":\"{\\\"symbols\\\":[\\\"project\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"projects\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"worksitediary.modal.choose_projects\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"change\\\"],[[24,[\\\"project\\\"]],\\\"addProject\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"addedProjects\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.modal.select_projects\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.modal.add_these\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"addedProjects\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[23,1,[]],\\\"project\\\",\\\"diaryreport\\\"]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.modal.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addProjects\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.add_projects_automation\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.automation.added_projects\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\"],[[24,[\\\"filters\\\"]]]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\"],[\\\"bubbleTransition\\\",\\\"project\\\",[24,[\\\"model\\\"]],[24,[\\\"showTheseColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/automation/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/calendar/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryCalendarController;\n\nimport Ember from 'ember';\n\nWorksitediaryCalendarController = Ember.Controller.extend({\n    queryParams: ['diary_date', 'project'],\n    project: null,\n    diary_date:\n        moment().startOf('month').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('month').format('YYYY-MM-DD'),\n    actions: {\n        projectChanged: function (value) {\n            return this.set('project', value.get('id'));\n        },\n    },\n});\n\nexport default WorksitediaryCalendarController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/calendar/diaryreport-calendar-item/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DiaryreportCalendarItemComponent;\n\nimport Ember from 'ember';\n\nDiaryreportCalendarItemComponent = Ember.Component.extend({\n    rows: Ember.computed('day', 'model.[]', function () {\n        return this.get('model').filterBy('diary_date', this.get('day'));\n    }),\n});\n\nexport default DiaryreportCalendarItemComponent;\n","export default Ember.HTMLBars.template({\"id\":\"6nEwvMPi\",\"block\":\"{\\\"symbols\\\":[\\\"row\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"diaryreport-calendar-day-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"rows\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"diaryreport-calendar-item\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"project\\\",\\\"diaryreport\\\",[23,1,[\\\"project\\\"]]]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"image-and-status\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"calendar-item-status\\\"],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"status\\\",\\\"diaryreport\\\",[23,1,[\\\"status\\\"]]]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"user-image img-circle\\\"],[11,\\\"title\\\",[29,[[23,1,[\\\"user\\\",\\\"firstname\\\"]],\\\" \\\",[23,1,[\\\"user\\\",\\\"lastname\\\"]]]]],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[28,\\\"if\\\",[[23,1,[\\\"user\\\",\\\"image\\\",\\\"firstObject\\\"]],[28,\\\"api-image\\\",[[23,1,[\\\"user\\\",\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],null],\\\"img/user-profile-lg-gray.png\\\"],null],\\\"')\\\"]]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.events_started\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.diaryreport.events_started\\\"],null],false],[0,\\\"\\\\n                    :\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"events_started\\\",\\\"diaryreport\\\",[23,1,[\\\"events_started\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.events_work_in_progress\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.diaryreport.events_work_in_progress\\\"],null],false],[0,\\\"\\\\n                    :\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"events_work_in_progress\\\",\\\"diaryreport\\\",[23,1,[\\\"events_work_in_progress\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.events_finished\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.diaryreport.events_finished\\\"],null],false],[0,\\\"\\\\n                    :\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"events_finished\\\",\\\"diaryreport\\\",[23,1,[\\\"events_finished\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.events_interrupted\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.diaryreport.events_interrupted\\\"],null],false],[0,\\\"\\\\n                    :\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"events_interrupted\\\",\\\"diaryreport\\\",[23,1,[\\\"events_interrupted\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.events_altered\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"p\\\",true],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.diaryreport.events_altered\\\"],null],false],[0,\\\"\\\\n                    :\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"events_altered\\\",\\\"diaryreport\\\",[23,1,[\\\"events_altered\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"query\\\",\\\"route\\\",\\\"model\\\"],[\\\"calendar-plus-button\\\",[28,\\\"hash\\\",null,[[\\\"date\\\"],[[24,[\\\"day\\\"]]]]],\\\"worksitediary.report.add.basic-info\\\",\\\"add\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/calendar/diaryreport-calendar-item/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/calendar/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nWorksitediaryIndexRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    queryParams: {\n        project: {\n            refreshModel: true,\n        },\n        diary_date: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params.sideload = ['user.image', 'user.firstname', 'user.lastname', 'project.name'];\n        return this.store.query('diaryreport', params);\n    },\n});\n\nexport default WorksitediaryIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"qRUIzZWz\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6 col-md-3\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-comp\\\",[\\\"diaryreport.project\\\"],[[\\\"change\\\"],[\\\"projectChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"project\\\"]]],null,{\\\"statements\\\":[[4,\\\"calendar-report\\\",null,[[\\\"date\\\"],[[24,[\\\"diary_date\\\"]]]],{\\\"statements\\\":[[4,\\\"calendar-report-day\\\",null,[[\\\"day\\\"],[[23,1,[]]]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"worksitediary/calendar/diaryreport-calendar-item\\\",null,[[\\\"day\\\",\\\"model\\\"],[[23,1,[]],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"diaryreport.calendar.select_project\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/calendar/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/edit/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryEditController;\n\nimport Ember from 'ember';\n\nimport GeneralAddController from '../../../controllers/general-add';\n\nWorksitediaryEditController = GeneralAddController.extend({\n    fieldSettings: Em.A({\n        edit: true,\n    }),\n    edit: true,\n    customization: Em.computed(function () {\n        return {\n            rating: {\n                template: 'worksitediary/add/rating',\n            },\n            weather: {\n                template: 'worksitediary/add/weather',\n            },\n        };\n    }),\n    weather: null,\n    editNewLink: 'worksitediary.edit',\n    updateRatingVisualization: Em.on('didRender', function () {\n        var model, rating, tmp_weather;\n        model = this.get('model');\n        if (model) {\n            rating = model.get('rating');\n            if (rating) {\n                this.giveThumb(rating);\n            }\n            if (this.get('weather')) {\n                tmp_weather = model.get('weather');\n                if (tmp_weather) {\n                    return this.set('weather', JSON.parse(tmp_weather));\n                }\n            }\n        }\n    }),\n    actions: {\n        generalAddAction: function (type) {\n            switch (type) {\n                case 'giveThumbUp':\n                    return this.giveThumb('up');\n                case 'giveThumbDown':\n                    return this.giveThumb('down');\n            }\n        },\n    },\n    giveThumb: function (value) {\n        var model;\n        model = this.get('model');\n        return model.set('rating', value);\n    },\n});\n\nexport default WorksitediaryEditController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/edit/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryEditRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../../routes/general-add';\n\nWorksitediaryEditRoute = GeneralAddRoute.extend({\n    modelName: 'worksitediary',\n    controllerName: 'worksitediary/edit',\n    edit: true,\n    afterSave: 'worksitediary',\n    hideFromSaved: 'weather',\n    actions: {\n        save: function (row) {\n            var json_weather;\n            row = this.get('controller.model');\n            json_weather = row.get('weather');\n            row.set('weather', JSON.stringify(json_weather));\n            if (this.get('Collector').formExists('diary')) {\n                this.set('afterSave', 'diary.events');\n            }\n            return this._super();\n        },\n    },\n});\n\nexport default WorksitediaryEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"bROu8Sjo\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/edit/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/events/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport localization from '../../../classes/localization';\n\nWorksitediaryIndexController = GeneralReportController.extend({\n    form: 'worksitediary',\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: 'worksitediary.edit',\n            historyRoute: 'worksitediary.history',\n            hideHistory: true,\n        }),\n        sortByColumn: 'date-',\n    }),\n    showColumns: ['date', 'project', 'title', 'description', 'images', 'rating', 'weather'],\n    queryParams: ['project', 'date', 'page', 'status'],\n    status: 'all',\n    date: moment().subtract(1, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'date',\n        }),\n        Em.Object.create({\n            field: 'project',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    formatter: function (column, value, self) {\n        if (column === 'rating' && value) {\n            if (value === 'up') {\n                value = new Ember.String.htmlSafe(\n                    \"<span class='move move-GoodQuality big-thumb report-thumb-up'></span>\",\n                );\n            } else {\n                value = new Ember.String.htmlSafe(\n                    \"<span class='move move-PoorQuality big-thumb report-thumb-down'></span>\",\n                );\n            }\n            return value;\n        }\n    },\n    actions: {\n        catchActions: function (action, params) {\n            return this.send(action, params);\n        },\n        transitionToWizard: function () {\n            return this.transitionToRoute('worksitediary.report.add.basic-info', 'add');\n        },\n        transitionToEvents: function () {\n            return this.transitionToRoute('worksitediary.events');\n        },\n    },\n});\n\nexport default WorksitediaryIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/events/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nWorksitediaryIndexRoute = GeneralReportRoute.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('worksitediary', params);\n    },\n});\n\nexport default WorksitediaryIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"2Swxf0V1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"formatter\\\"],[\\\"bubbleTransition\\\",\\\"worksitediary\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"formatter\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionToWizard\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.link\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/events/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/index/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nimport localization from '../../../classes/localization';\n\nimport pdfmixin from '../../../mixins/worksitediary_pdf';\n\nWorksitediaryIndexController = GeneralReportController.extend(pdfmixin, {\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    cordova: Ember.inject.service('own-cordova-service'),\n    store: Ember.inject.service(),\n    form: 'diaryreport',\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            editRoute: 'worksitediary.report.add.basic-info',\n        }),\n        hideColumns: [\n            'diaryreport_given_offer',\n            'diaryreport_misc',\n            'diaryreport_other_entrie',\n            'diaryreport_required_extra',\n            'diaryreport_supervisor_note',\n            'events_altered',\n            'events_finished',\n            'events_interrupted',\n            'events_started',\n            'events_work_in_progress',\n            'orders_ordered',\n            'orders_received',\n            'notes',\n        ],\n        rowActions: [],\n    }),\n    pdfReport: null,\n    addRowActions: function () {\n        var columns, fields, intl, pdf_output, self2, title_row, widths;\n        self2 = this;\n        intl = this.get('intl');\n        if (this.Collector == null) {\n            return;\n        }\n        pdf_output = [];\n        title_row = [];\n        columns = [];\n        widths = [];\n        widths.push('auto');\n        pdf_output.push(title_row);\n        fields = this.Collector.fields('diaryreport');\n        if ('status' in fields) {\n            columns = fields;\n            return this.set('settings.rowActions', [\n                {\n                    text: 'status.journal_pdf',\n                    action: (self, items) => {\n                        return this.createWorksitediaryPdf(items);\n                    },\n                },\n            ]);\n        }\n    }.on('init'),\n    showColumns: [\n        'project',\n        'status',\n        'diary_date',\n        'work_week',\n        'worksite_number',\n        'supervisor',\n        'overseer',\n    ],\n    status: 'all',\n    //    hideColumns: Em.on('init', ->\n    //        @set('settings.hideColumns', [\n\n    //        ])\n\n    //    )\n    queryParams: ['project', 'diary_date', 'page', 'user'],\n    diary_date:\n        moment().subtract(1, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'diary_date',\n        }),\n        Em.Object.create({\n            field: 'project',\n        }),\n        Em.Object.create({\n            field: 'user',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    actions: {\n        catchActions: function (action, params) {\n            return this.send(action, params);\n        },\n        transitionToWizard: function () {\n            return this.transitionToRoute('worksitediary.report.first');\n        },\n        transitionToEvents: function () {\n            return this.transitionToRoute('worksitediary.events');\n        },\n    },\n});\n\nexport default WorksitediaryIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/index/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryIndexRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nWorksitediaryIndexRoute = GeneralReportRoute.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        diary_date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('diaryreport', params);\n    },\n});\n\nexport default WorksitediaryIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"78rr/tcR\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"filterValueChanged\\\",\\\"status\\\"],[[24,[\\\"filters\\\"]],\\\"filterChanged\\\",[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"formatter\\\"],[\\\"bubbleTransition\\\",\\\"diaryreport\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"formatter\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"transitionToWizard\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.link\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/index/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/notes/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryNotesController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nWorksitediaryNotesController = GeneralReportController.extend({\n    form: 'diaryreport_note',\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n        }),\n    }),\n    //    showColumns: [\"date\", \"project\", \"title\", \"description\", \"images\", \"rating\", \"weather\"]\n    queryParams: ['type', 'responsible'],\n    filters: Em.A([\n        //        Em.Object.create({field: \"date\"})\n        Em.Object.create({\n            field: 'type',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n});\n\nexport default WorksitediaryNotesController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/notes/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryNotesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nWorksitediaryNotesRoute = GeneralReportRoute.extend({\n    form: 'diaryreport_note',\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        type: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('diaryreport-note', params);\n    },\n});\n\nexport default WorksitediaryNotesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"79fTeF6F\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"formatter\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"status\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"formatter\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/notes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/offering-report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OtherEntriesReportController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nOtherEntriesReportController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    form: 'diaryreport_given_offer',\n    showColumns: ['phase', 'status', 'date', 'description'],\n    queryParams: ['date', 'page'],\n    date: moment().subtract(1, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'date',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n        }),\n    }),\n    status: 'all',\n});\n\nexport default OtherEntriesReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/offering-report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OtherEntriesReportRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nOtherEntriesReportRoute = GeneralReportRoute.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('diaryreport_given_offer', params);\n    },\n});\n\nexport default OtherEntriesReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"fDGmcUZn\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"status\\\"],[[24,[\\\"filters\\\"]],\\\"diaryreport_given_offer\\\",[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"limit\\\",\\\"offset\\\"],[\\\"bubbleTransition\\\",\\\"diaryreport_given_offer\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/offering-report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/other-entries-report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OtherEntriesReportController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nOtherEntriesReportController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    form: 'diaryreport_other_note',\n    showColumns: ['phase', 'date', 'status', 'description', 'image', 'responsible'],\n    queryParams: ['date', 'page'],\n    filters: Em.A([\n        Em.Object.create({\n            field: 'date',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    date: moment().subtract(1, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    //status: 'all'\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n        }),\n    }),\n});\n\nexport default OtherEntriesReportController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/other-entries-report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OtherEntriesReportRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nOtherEntriesReportRoute = GeneralReportRoute.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('diaryreport_other_note', params);\n    },\n});\n\nexport default OtherEntriesReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"eHwny5Sf\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"status\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"diaryreport_other_note\\\",[24,[\\\"status\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"limit\\\",\\\"offset\\\"],[\\\"bubbleTransition\\\",\\\"diaryreport_other_note\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/other-entries-report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/at-site/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryAtSiteController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryAtSiteController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    fields: [\n        'diaryreport.foremans_at_site',\n        'diaryreport.workers_at_site',\n        'diaryreport.subcontractors_at_site',\n        'diaryreport.side_contractors_at_site',\n        'diaryreport.other_contractors_at_site',\n        'diaryreport.stock_changes_at_site',\n    ],\n    total_workforce: Ember.computed('work_force', function () {\n        return this.get('work_force.firstObject');\n    }),\n    work_force: Em.computed('model.work_force', function () {\n        var splitted, workforce, workforce_arr;\n        if (this.get('Collector').fieldExists('diaryreport', 'work_force')) {\n            workforce_arr = Em.A([]);\n            workforce = this.get('model.work_force');\n            if (workforce) {\n                splitted = workforce.split(',');\n                splitted.forEach(function (item) {\n                    var splitted_item, this_field;\n                    if (item === '') {\n                        return;\n                    }\n                    splitted_item = item.split(':');\n                    this_field = Ember.Object.create({\n                        name: '',\n                        amount_own: 0,\n                        amount_ue: 0,\n                        input: false,\n                    });\n                    splitted_item.forEach((field) => {\n                        var field_values;\n                        if (field.indexOf('/') !== -1) {\n                            field_values = field.split('/');\n                            this_field.set('amount_own', parseInt(field_values[0], 10));\n                            return this_field.set('amount_ue', parseInt(field_values[1], 10));\n                        } else {\n                            return this_field.set('name', field.trim(' '));\n                        }\n                    });\n                    return workforce_arr.pushObject(this_field);\n                });\n            } else {\n                workforce_arr.pushObject(\n                    Em.Object.create({\n                        name: 'Total',\n                        amount_own: 0,\n                        amount_ue: 0,\n                        input: true,\n                    }),\n                );\n            }\n            return workforce_arr;\n        }\n    }),\n    work_force_rest: Ember.computed('work_force.[]', function () {\n        return this.get('work_force').slice(1);\n    }),\n    actions: {\n        updateField: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n        setValue: function (obj) {\n            return obj.set('input', false);\n        },\n        openEdit: function (obj) {\n            obj.set('input', true);\n        },\n        addWorkforceRow: function () {\n            return this.get('work_force').pushObject(\n                Ember.Object.create({\n                    name: '',\n                    amount_own: 0,\n                    amount_ue: 0,\n                    input: true,\n                }),\n            );\n        },\n    },\n});\n\n//        calculateWorkforce: (field) ->\n//            total = 0\n//            @get('work_force').forEach (item) ->\n//                total += parseInt(item[field], 10)\n\n//            @set('total_workforce.'+field, total)\n//            workforce = @get('total_workforce')\n//            if (workforce.get(field) - total) < 0\n//                workforce.set(field, 0)\n//            else\n//                workforce.set(field, workforce.get(field) - total)\n//            @set('total_workforce', workforce)\nexport default WorksiteDiaryAtSiteController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/at-site/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddAtSiteRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddAtSiteRoute = baseRoute.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    model: function (params) {\n        var c, model;\n        model = this._super(params);\n        c = this.get('Collector');\n        if (\n            c.testNeedsOne('diaryreport.work_force') &&\n            model.get('isNew') &&\n            c.testNeedsOne('employer')\n        ) {\n            return this.get('store')\n                .query('employer', {\n                    main: 'on',\n                })\n                .then((emps) => {\n                    var emp, promises;\n                    if (emps.get('length') === 0) {\n                        return model;\n                    }\n                    emp = emps.get('firstObject');\n                    promises = [];\n                    if (c.testNeedsOne('presence')) {\n                        promises.push(\n                            this.get('store').query('presence', {\n                                project: model.get('project.id'),\n                                date: model.get('diary_date'),\n                                employer: emp.get('id'),\n                                groupBy: 'user',\n                                limit: 1,\n                            }),\n                        );\n                        promises.push(\n                            this.get('store').query('presence', {\n                                project: model.get('project.id'),\n                                date: model.get('diary_date'),\n                                employer: '!' + emp.get('id'),\n                                groupBy: 'user',\n                                limit: 1,\n                            }),\n                        );\n                    }\n                    if (c.testNeedsOne('worktime')) {\n                        promises.push(\n                            this.get('store').query('worktime', {\n                                project: model.get('project.id'),\n                                date: model.get('diary_date'),\n                                employer: emp.get('id'),\n                                groupBy: 'user',\n                                limit: 1,\n                            }),\n                        );\n                        promises.push(\n                            this.get('store').query('worktime', {\n                                project: model.get('project.id'),\n                                date: model.get('diary_date'),\n                                employer: '!' + emp.get('id'),\n                                groupBy: 'user',\n                                limit: 1,\n                            }),\n                        );\n                    }\n                    return Ember.RSVP.Promise.all(promises).then((data) => {\n                        var own, ue;\n                        own = 0;\n                        ue = 0;\n                        if (data[0]) {\n                            if (data[0].get('length') > 0) {\n                                own += data[0].get('meta.count');\n                            }\n                        }\n                        if (data[2]) {\n                            if (data[2].get('length') > 0) {\n                                own += data[2].get('meta.count');\n                            }\n                        }\n                        if (data[1]) {\n                            if (data[1].get('length') > 0) {\n                                ue += data[1].get('meta.count');\n                            }\n                        }\n                        if (data[3]) {\n                            if (data[3].get('length') > 0) {\n                                ue += data[3].get('meta.count');\n                            }\n                        }\n                        model.set('work_force', 'Total: ' + own + '/' + ue);\n                        return model;\n                    });\n                });\n        } else {\n            return model;\n        }\n    },\n    actions: {\n        willTransition: function (transition) {\n            var c, string, workforce;\n            c = this.get('Collector');\n            if (c.fieldExists('diaryreport', 'work_force')) {\n                workforce = this.get('controller.work_force');\n                string = '';\n                workforce.forEach(function (item) {\n                    if (item.get('amount_own') !== 0 || item.get('amount_ue') !== 0) {\n                        return (string +=\n                            item.get('name') +\n                            ': ' +\n                            item.get('amount_own') +\n                            '/' +\n                            item.get('amount_ue') +\n                            ', ');\n                    }\n                });\n                string = string.slice(0, -2);\n                this.set('controller.model.work_force', string);\n            }\n            return this._super(transition);\n        },\n    },\n});\n\nexport default WorksitediaryReportAddAtSiteRoute;\n","export default Ember.HTMLBars.template({\"id\":\"YkzRv717\",\"block\":\"{\\\"symbols\\\":[\\\"obj\\\",\\\"field\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.workforce\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[[23,2,[]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/field-container\\\",[[23,2,[]]],[[\\\"model\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],\\\"updateField\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.work_force\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.report.add.work_force.description\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-inline\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.report.add.total_workforce\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"number\\\",[24,[\\\"total_workforce\\\",\\\"amount_own\\\"]],\\\"add-fields diary_workforce\\\"]]],false],[0,\\\"\\\\n            /\\\\n            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"number\\\",[24,[\\\"total_workforce\\\",\\\"amount_ue\\\"]],\\\"add-fields diary_workforce\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"add-workforce-row\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addWorkforceRow\\\"]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"work_force_rest\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-2 col-sm-4 col-xs-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-inline\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"input\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"disabled\\\",\\\"placeholder\\\",\\\"focusOut\\\"],[\\\"text\\\",[23,1,[\\\"name\\\"]],\\\"add-fields\\\",[24,[\\\"disabled\\\"]],[28,\\\"t\\\",[\\\"diaryreport.workforce.write_title\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\",[23,1,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h4\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"openEdit\\\",[23,1,[]]]],[8],[1,[23,1,[\\\"name\\\"]],false],[0,\\\": \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"disabled\\\"],[\\\"number\\\",[23,1,[\\\"amount_own\\\"]],\\\"add-fields diary_workforce\\\",[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                        /\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"disabled\\\"],[\\\"number\\\",[23,1,[\\\"amount_ue\\\"]],\\\"add-fields diary_workforce\\\",[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/at-site/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/base-route/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddBaseRoute;\n\nimport Ember from 'ember';\n\nWorksitediaryReportAddBaseRoute = Ember.Route.extend({\n    model: function (params) {\n        var model;\n        model = this.modelFor('worksitediary.report.add');\n        if (model.get('project')) {\n            return model;\n        }\n        return this.transitionTo('worksitediary.report.add.basic-info');\n    },\n});\n\nexport default WorksitediaryReportAddBaseRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/basic-info/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryAddBasicInfoController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryAddBasicInfoController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    store: Ember.inject.service(),\n    page: 1,\n    changeThings: function () {\n        var c, i, item, len, link_from_last, model, project;\n        model = this.get('model');\n        project = model.get('project');\n        c = this.get('Collector');\n        link_from_last = [\n            'review_and_inspection',\n            'completion_rate',\n            'orders_ordered',\n            'events_started',\n            'events_interrupted',\n            'events_work_in_progress',\n        ];\n        if (project == null) {\n            this.set('model.worksite_number', null);\n            this.set('model.work_week', null);\n            this.set('model.status', 'open');\n            for (i = 0, len = link_from_last.length; i < len; i++) {\n                item = link_from_last[i];\n                if (c.fieldExists('diaryreport', item)) {\n                    model.set(item, []);\n                }\n            }\n            return;\n        }\n        return this.get('store')\n            .findRecord('project', project.get('id'), {\n                reload: true,\n            })\n            .then(() => {\n                if (this.get('model.isNew')) {\n                    this.get('store')\n                        .query('diaryreport', {\n                            order: 'diary_date-',\n                            limit: 1,\n                            project: project.get('id'),\n                        })\n                        .then((ret) => {\n                            var j, last, last_day, len1, values;\n                            last = ret.get('firstObject');\n                            if (last) {\n                                for (j = 0, len1 = link_from_last.length; j < len1; j++) {\n                                    item = link_from_last[j];\n                                    if (!c.fieldExists('diaryreport', item)) {\n                                        continue;\n                                    }\n                                    values = last.get(item);\n                                    if (values) {\n                                        model.set(item, values);\n                                    } else {\n                                        model.set(item, []);\n                                    }\n                                }\n                                if (\n                                    c.fieldExists('diaryreport', 'work_day') &&\n                                    last.get('work_day')\n                                ) {\n                                    last_day = parseInt(last.get('work_day'), 10);\n                                    model.set('work_day', ++last_day);\n                                }\n                            }\n                            // If we want this done also when editing we can move it to diary-events route\n                            return this.store\n                                .query('worksitediary', {\n                                    sideload: true,\n                                    project: project.get('id'),\n                                    date: model.get('diary_date'),\n                                })\n                                .then(function (events) {\n                                    model\n                                        .get('events_started')\n                                        .pushObjects(events.filterBy('state', 'initiated'));\n                                    if (c.testNeedsOne('diaryreport.events_work_in_progress')) {\n                                        model\n                                            .get('events_work_in_progress')\n                                            .pushObjects(events.filterBy('state', 'started'));\n                                    }\n                                    model\n                                        .get('events_finished')\n                                        .pushObjects(events.filterBy('state', 'finished'));\n                                    model\n                                        .get('events_interrupted')\n                                        .pushObjects(events.filterBy('state', 'interrupted'));\n                                    return model\n                                        .get('events_altered')\n                                        .pushObjects(events.filterBy('state', 'altered'));\n                                });\n                        });\n                }\n                if (project.get('presence_project') && c.testNeeds(['diaryreport.isID06'])) {\n                    model.set('isID06', true);\n                }\n                if (project.get('number')) {\n                    this.set('model.worksite_number', project.get('number'));\n                }\n                this.set('model.work_week', project.get('work_week'));\n                if (!this.get('model.work_week')) {\n                    this.set('model.work_week', 1);\n                }\n                if (project.get('hasDirtyAttributes')) {\n                    return project.save();\n                }\n            });\n    },\n    actions: {\n        updateField: function (value, field) {\n            var project;\n            project = this.get('model.project');\n            if (field === 'project') {\n                this.changeThings();\n            }\n            if (project) {\n                if (field === 'work_week') {\n                    project.set('work_week', value);\n                }\n                if (field === 'diary_date') {\n                    project.set('diary_date', value);\n                }\n                if (project.get('hasDirtyAttributes')) {\n                    return project.save();\n                }\n            }\n        },\n    },\n});\n\nexport default WorksiteDiaryAddBasicInfoController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/basic-info/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddBasicInfoRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nWorksitediaryReportAddBasicInfoRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    model: function () {\n        return this.modelFor('worksitediary.report.add');\n    },\n    afterModel: function (model, transition) {\n        var firstController;\n        firstController = this.controllerFor('worksitediary.report.first');\n        if (firstController.project) {\n            model.set('project', firstController.project);\n        }\n        if (firstController.diary_date) {\n            return model.set('diary_date', firstController.diary_date);\n        }\n    },\n    actions: {\n        didTransition: function () {\n            var basicController;\n            basicController = this.controllerFor('worksitediary.report.add.basic-info');\n            return basicController.changeThings();\n        },\n    },\n});\n\nexport default WorksitediaryReportAddBasicInfoRoute;\n","export default Ember.HTMLBars.template({\"id\":\"cFGd7nnp\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.diaryreport.project\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-control add-fields\\\"],[8],[1,[24,[\\\"model\\\",\\\"project\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.diaryreport.diary_date\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-control add-fields\\\"],[8],[1,[28,\\\"moment-format\\\",[[24,[\\\"model\\\",\\\"diary_date\\\"]],\\\"L\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"diaryreport.worksite_number\\\"],[[\\\"model\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],\\\"updateField\\\"]]],false],[0,\\\"\\\\n        \\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.work_day\\\"],null]],null,{\\\"statements\\\":[[1,[28,\\\"collector/field-container\\\",[\\\"diaryreport.work_day\\\"],[[\\\"model\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],\\\"updateField\\\"]]],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"diaryreport.work_week\\\"],[[\\\"model\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],\\\"updateField\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/basic-info/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/completion-page/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryCompletionController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryCompletionController = Ember.Controller.extend({\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    added_completions: Ember.computed.alias('addController.model.completion_rate'),\n    review_options: Ember.computed(function () {\n        var field;\n        field = this.get('Collector').field('completion_rate', 'type');\n        field = Ember.Object.create(field);\n        field.get('options').forEach((item) => {\n            return (item.name = this.get('intl').t('completion_rate.type.' + item.value));\n        });\n        return field.get('options');\n    }),\n    record: Em.computed(function () {\n        return this.get('store').createRecord('completion_rate');\n    }),\n    ratefield: Em.computed('record', function () {\n        var c, field;\n        c = this.get('Collector');\n        field = c.field('completion_rate', 'rate');\n        return field;\n    }),\n    phaseField: Ember.computed('record', function () {\n        var c, field;\n        c = this.get('Collector');\n        field = c.field('completion_rate', 'phasetitle');\n        return field;\n    }),\n    title: '',\n    actions: {\n        update_reviews: function (title) {\n            return this.set('record.title', title);\n        },\n        update_rate: function (rate) {\n            return this.set('record.rate', rate);\n        },\n        setField: function (value, field) {\n            return this.set('record.' + field, value);\n        },\n        add_item: function () {\n            var record;\n            record = this.get('record');\n            this.set('record', record);\n            this.get('added_completions').pushObject(record);\n            record.save();\n            this.set('record', this.get('store').createRecord('completion_rate'));\n            return this.set('title', '');\n        },\n        remove_item: function (record) {\n            this.set('record', null);\n            this.get('added_completions').removeObject(record);\n            record.destroyRecord();\n            return this.set('record', this.get('store').createRecord('completion_rate'));\n        },\n    },\n});\n\nexport default WorksiteDiaryCompletionController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/completion-page/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddReviewPageRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddReviewPageRoute = baseRoute.extend();\n\nexport default WorksitediaryReportAddReviewPageRoute;\n","export default Ember.HTMLBars.template({\"id\":\"oPBmbYW7\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.completion-page\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"completion_rate@add\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"completion_rate.phasetitle\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"phaseField\\\"]],\\\"completion_rate.phasetitle\\\"],[[\\\"change\\\",\\\"model\\\"],[\\\"setField\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"completion_rate.title\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"drop-down-search-input\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"classes\\\",\\\"change\\\"],[[24,[\\\"review_options\\\"]],[24,[\\\"title\\\"]],\\\"form-control add-fields\\\",\\\"update_reviews\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"ratefield\\\"]]],[[\\\"value\\\",\\\"change\\\",\\\"model\\\"],[[24,[\\\"rate\\\"]],\\\"update_rate\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add_item\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.completion_rate\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"added_completions\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-8\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"completion_rate.phasetitle\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[23,1,[\\\"phasetitle\\\"]],\\\"phasetitle\\\",\\\"completion_rate\\\"]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[23,1,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-3\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[23,1,[\\\"rate\\\"]],false],[0,\\\" %\\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-1 pull-right\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success trash-icon-size \\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove_item\\\",[23,1,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/completion-page/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryAddController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryAddController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    queryParams: ['date'],\n    page: 1,\n    display_previous: false,\n    router: Ember.inject.service(),\n    enable_next: Ember.computed.alias('model.project.id'),\n    applicationController: Ember.inject.controller('application'),\n    pages: [\n        {\n            link: 'worksitediary.report.add.basic-info',\n            needs: [],\n        },\n        {\n            link: 'worksitediary.report.add.at-site',\n            needs: [],\n        },\n        {\n            link: 'worksitediary.report.add.diary-events',\n            needs: [],\n        },\n        {\n            link: 'worksitediary.report.add.extra',\n            needs: ['diaryreport.egen_kontrol'],\n        },\n        {\n            link: 'worksitediary.report.add.notes-direktiv',\n            needs: ['diaryreport_note'],\n        },\n        {\n            link: 'worksitediary.report.add.notes-anmalan',\n            needs: ['diaryreport_note'],\n        },\n        {\n            link: 'worksitediary.report.add.notes-besiktningar',\n            needs: ['diaryreport_note'],\n        },\n        {\n            link: 'worksitediary.report.add.notes-ritningar',\n            needs: ['diaryreport_note'],\n        },\n        {\n            link: 'worksitediary.report.add.material',\n            needs: ['material'],\n        },\n        {\n            link: 'worksitediary.report.add.review-page',\n            needs: ['review_and_inspection'],\n        },\n        {\n            link: 'worksitediary.report.add.ordered-changes',\n            needs: ['diaryreport_misc'],\n        },\n        {\n            link: 'worksitediary.report.add.offering',\n            needs: ['diaryreport_given_offer'],\n        },\n        {\n            link: 'worksitediary.report.add.required-extra',\n            needs: ['diaryreport_required_extra'],\n        },\n        {\n            link: 'worksitediary.report.add.supervisor-note',\n            needs: ['diaryreport_supervisor_note'],\n        },\n        {\n            link: 'worksitediary.report.add.other-entries',\n            needs: ['diaryreport_other_note'],\n        },\n        {\n            link: 'worksitediary.report.add.signature',\n            string: 'orientations.breadcrumb.signatures',\n            icon: 'move move-Signature',\n            needs: [],\n        },\n        {\n            link: 'worksitediary.report.add.completion-page',\n            needs: ['completion_rate'],\n        },\n        {\n            link: 'worksitediary.report.add.summary-page',\n            needs: [],\n        },\n    ],\n    filteredPages: Ember.computed(function () {\n        var c;\n        c = this.get('Collector');\n        return this.get('pages').filter(function (item) {\n            if (item.needs && c.testNeeds(item.needs)) {\n                return item;\n            }\n        });\n    }),\n    hide_previous: Em.computed.equal(\n        'router.currentRouteName',\n        'worksitediary.report.add.basic-info',\n    ),\n    hide_next: Em.computed.equal(\n        'router.currentRouteName',\n        'worksitediary.report.add.summary-page',\n    ),\n    actions: {\n        next: function () {\n            var page, pages;\n            this.set('model.status', 'saved');\n            if (this.get('model.isNew')) {\n                this.set('model.user', this.get('session.currentUser'));\n            }\n            pages = this.get('filteredPages').mapBy('link');\n            page = pages.indexOf(this.get('router.currentRouteName'));\n            return this.transitionToRoute(pages[page + 1]);\n        },\n        previous: function () {\n            var page, pages;\n            this.set('model.status', 'saved');\n            if (this.get('model.isNew')) {\n                this.set('model.user', this.get('session.currentUser'));\n            }\n            pages = this.get('filteredPages').mapBy('link');\n            page = pages.indexOf(this.get('router.currentRouteName'));\n            return this.transitionToRoute(pages[page - 1]);\n        },\n        updateField: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n    },\n});\n\nexport default WorksiteDiaryAddController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/diary-events/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryEventsController;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nWorksiteDiaryEventsController = Ember.Controller.extend(AuthenticatedRouteMixin, {\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    show_modal: false,\n    started_event_list: Ember.computed.alias('model.parent.events_started'),\n    current_event_list: Ember.computed.alias('model.parent.events_work_in_progress'),\n    completed_event_list: Ember.computed.alias('model.parent.events_finished'),\n    interrupted_event_list: Ember.computed.alias('model.parent.events_interrupted'),\n    additional_event_list: Ember.computed.alias('model.parent.events_altered'),\n    project: Ember.computed.alias('model.parent.project'),\n    event_type: 'event',\n    filteredEvents: Ember.computed('model.events.[]', function () {\n        return this.get('model.events').filterBy('project', this.get('model.parent.project'));\n    }),\n    actions: {\n        addStatusToRecord: function (status, event_id) {\n            var diary;\n            diary = this.get('store').peekRecord('worksitediary', event_id);\n            this.get('started_event_list').removeObject(\n                this.get('started_event_list').findBy('id', diary.get('id')),\n            );\n            if (this.get('Collector').fieldExists('diaryreport', 'events_work_in_progress')) {\n                this.get('current_event_list').removeObject(\n                    this.get('current_event_list').findBy('id', diary.get('id')),\n                );\n            }\n            this.get('completed_event_list').removeObject(\n                this.get('completed_event_list').findBy('id', diary.get('id')),\n            );\n            this.get('interrupted_event_list').removeObject(\n                this.get('interrupted_event_list').findBy('id', diary.get('id')),\n            );\n            this.get('additional_event_list').removeObject(\n                this.get('additional_event_list').findBy('id', diary.get('id')),\n            );\n            if (status !== 'returnToStore') {\n                diary.set('state', status);\n                diary.save();\n                if (status === 'initiated') {\n                    return this.get('started_event_list').pushObject(diary);\n                } else if (status === 'started') {\n                    return this.get('current_event_list').pushObject(diary);\n                } else if (status === 'finished') {\n                    return this.get('completed_event_list').pushObject(diary);\n                } else if (status === 'interrupted') {\n                    return this.get('interrupted_event_list').pushObject(diary);\n                } else if (status === 'altered') {\n                    return this.get('additional_event_list').pushObject(diary);\n                }\n            } else {\n                return diary.set('state', null);\n            }\n        },\n        updateField: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n        edit_event: function (event) {\n            this.set('record', event);\n            this.set('show_modal', true);\n            return false;\n        },\n        show_add_event_popup: function () {\n            this.set('show_modal', true);\n            return false;\n        },\n        closeModal: function (settings, record) {\n            this.set('show_modal', false);\n            return this.send('addStatusToRecord', record.get('state'), record.get('id'));\n        },\n        removeField: function (id) {\n            var event, record;\n            this.set('show_modal', false);\n            record = this.get('record');\n            this.set('record', null);\n            event = this.store.peekRecord('worksitediary', id);\n            if (event) {\n                return event.destroyRecord();\n            }\n        },\n        closeModalNotes: function (settings, record) {\n            var list;\n            list = this.get('addController.model.diaryreport_other_note');\n            list.pushObject(record);\n            return this.set('show_modal', false);\n        },\n    },\n});\n\nexport default WorksiteDiaryEventsController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/diary-events/event-component/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddEventComponentComponent;\n\nimport Ember from 'ember';\n\nimport collectorField from '../../../../../collector/record-comp/component';\n\nimport config from '../../../../../../config/environment';\n\nimport $ from 'jquery';\n\nWorksitediaryReportAddEventComponentComponent = collectorField.extend({\n    intl: Ember.inject.service(),\n    store: Ember.inject.service(),\n    GpsLocator: Ember.inject.service(),\n    setup: Em.on('init', function () {\n        var model;\n        model = this.get('record');\n        if (model !== null) {\n            if (!model.get('id')) {\n                this.GetGPSCoords();\n            }\n            model.set('date', moment().format('YYYY-MM-DD'));\n            return model.set('project', this.get('project'));\n        }\n    }),\n    weather: null,\n    skip: ['rating', 'project', 'weather'],\n    updateRatingVisualization: Em.on('didRender', function () {\n        var model, rating, tmp_weather;\n        model = this.get('record');\n        if (model) {\n            rating = model.get('rating');\n            if (rating) {\n                this.giveThumb(rating);\n            }\n            if (this.get('weather') === null) {\n                tmp_weather = model.get('weather');\n                if (tmp_weather) {\n                    return this.set('weather', JSON.parse(tmp_weather));\n                }\n            }\n        }\n    }),\n    actions: {\n        giveThumbUp: function () {\n            return this.giveThumb('up');\n        },\n        giveThumbDown: function () {\n            return this.giveThumb('down');\n        },\n        save: function () {\n            if (!this.get('record.project')) {\n                this.set('record.project', this.get('project'));\n            }\n            return this._super();\n        },\n    },\n    GetGPSCoords: function () {\n        var self, tmp;\n        self = this;\n        tmp = Ember.A([]);\n        return this.get('GpsLocator')\n            .getLocation()\n            .then(\n                function (position) {\n                    return $.getJSON(\n                        config.APP.WEATHER_API +\n                            '?lat=' +\n                            position.coords.latitude +\n                            '&lon=' +\n                            position.coords.longitude,\n                        function (json) {\n                            var dew_point;\n                            dew_point = json.temperature - (100 - json.humidity) / 5;\n                            json.dew_point = Math.round(dew_point * 100) / 100;\n                            if (self.get('weather')) {\n                                self.set('weather', json);\n                            }\n                            json = JSON.stringify(json);\n                            if (self.get('record')) {\n                                return self.set('record.weather', json);\n                            }\n                        },\n                    );\n                },\n                function (error) {\n                    return self.set('currentPos', error);\n                },\n            );\n    },\n    giveThumb: function (value) {\n        var model;\n        model = this.get('record');\n        model.set('rating', value);\n        if (value === 'up') {\n            $('.thumbs span:eq(0)').addClass('active');\n            return $('.thumbs span:eq(1)').removeClass('active');\n        } else {\n            $('.thumbs span:eq(1)').addClass('active');\n            return $('.thumbs span:eq(0)').removeClass('active');\n        }\n    },\n});\n\nexport default WorksitediaryReportAddEventComponentComponent;\n","export default Ember.HTMLBars.template({\"id\":\"lQIxuTsG\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"showFields\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,1,[\\\"name\\\"]],[24,[\\\"skip\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-container\\\",[[23,1,[]]],[[\\\"change\\\",\\\"model\\\"],[\\\"setValue\\\",[24,[\\\"record\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"rating\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-GoodQuality big-thumb\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"giveThumbUp\\\"]],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"down\\\"],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-PoorQuality big-thumb\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"giveThumbDown\\\"]],[8],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"name\\\"]],\\\"weather\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-10\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"record\\\",\\\"weather\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"weather-info\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move move-\\\",[24,[\\\"weather\\\",\\\"weather\\\"]],\\\" weather-icon\\\"]]],[8],[9],[0,\\\"\\\\n                                    \\\"],[1,[24,[\\\"weather\\\",\\\"temperature\\\"]],false],[0,\\\"°C, \\\"],[1,[24,[\\\"weather\\\",\\\"windspeed\\\"]],false],[0,\\\"m/s, \\\"],[1,[24,[\\\"weather\\\",\\\"humidity\\\"]],false],[0,\\\"\\\\n                                %, \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.abbr_dew_point\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"weather\\\",\\\"dew_point\\\"]],false],[0,\\\"°C\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"weather-brand pull-right\\\"],[8],[0,\\\"—\\\"],[1,[28,\\\"t\\\",[\\\"general.weather_provider\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"t\\\",[\\\"worksitediary.getting_weather_info\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/diary-events/event-component/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/diary-events/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddDiaryEventsRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddDiaryEventsRoute = baseRoute.extend({\n    model: function () {\n        var model;\n        model = this._super();\n        this.store.query('worksitediary', {\n            sideload: true,\n            project: model.get('project.id'),\n        });\n        return Ember.RSVP.hash({\n            events: this.store.peekAll('worksitediary'),\n            parent: model,\n        });\n    },\n});\n\nexport default WorksitediaryReportAddDiaryEventsRoute;\n","export default Ember.HTMLBars.template({\"id\":\"/ieLDZTA\",\"block\":\"{\\\"symbols\\\":[\\\"event\\\",\\\"event\\\",\\\"event\\\",\\\"event\\\",\\\"event\\\",\\\"event\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worksitediary@add\\\"],null]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_add_event_popup\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksite.add_event\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-danger pull-left\\\"],[10,\\\"onclick\\\",\\\"alert('Don\\\\\\\\'t click this. Drag fields here')\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"worksite.remove_field\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"scrollable-worksitediary\\\"],[8],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-4 worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.events\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\",\\\"classNames\\\",\\\"data-field\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"addStatusToRecord\\\",\\\"returnToStore\\\"],null],\\\"outlined\\\",[24,[\\\"event\\\"]]]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row draggable-event-library\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"filteredEvents\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,6,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[23,6,[\\\"state\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,6,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,6,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,6,[]]]],[8],[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb-pic\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[28,\\\"api-image\\\",[[23,6,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n\\\\n\\\\n                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,6,[]]]],[8],[0,\\\"\\\\n                                                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,6,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,6,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,6,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,6,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,6,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,6,[]]]],[8],[0,\\\"\\\\n                                                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,6,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,6,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,6,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,6,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,6,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[6]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-8\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default panel-size worksitediary-state-box\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.operation\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"value\\\"],[\\\"4\\\",[24,[\\\"model\\\",\\\"parent\\\",\\\"events_started_freetext\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\",\\\"classNames\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"addStatusToRecord\\\",\\\"initiated\\\"],null],\\\"outlined\\\"]],{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"started_event_list\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.drag_event_here\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"started_event_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,5,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,5,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,5,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,5,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb-pic\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[28,\\\"api-image\\\",[[23,5,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n\\\\n\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,5,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,5,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,5,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,5,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,5,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,5,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,5,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,5,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,5,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[5]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.events_work_in_progress\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default panel-size worksitediary-state-box\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.started_operations\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"value\\\"],[\\\"4\\\",[24,[\\\"model\\\",\\\"parent\\\",\\\"events_work_in_progress_freetext\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"classNames\\\",\\\"dropped\\\",\\\"data-field\\\"],[\\\"outlined\\\",[28,\\\"action\\\",[[23,0,[]],\\\"addStatusToRecord\\\",\\\"started\\\"],null],[24,[\\\"event\\\"]]]],{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"current_event_list\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.drag_event_here\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"current_event_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,4,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,4,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,4,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,4,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb-pic\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[28,\\\"api-image\\\",[[23,4,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n\\\\n\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,4,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,4,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,4,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,4,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,4,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,4,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,4,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,4,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,4,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[4]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default panel-size worksitediary-state-box\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.finished_operations\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"value\\\"],[\\\"4\\\",[24,[\\\"model\\\",\\\"parent\\\",\\\"events_finished_freetext\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"classNames\\\",\\\"dropped\\\",\\\"data-field\\\"],[\\\"outlined\\\",[28,\\\"action\\\",[[23,0,[]],\\\"addStatusToRecord\\\",\\\"finished\\\"],null],[24,[\\\"event\\\"]]]],{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"completed_event_list\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.drag_event_here\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"completed_event_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,3,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,3,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb-pic\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[28,\\\"api-image\\\",[[23,3,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n\\\\n\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,3,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,3,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default panel-size worksitediary-state-box\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.interrupted_operations\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"value\\\"],[\\\"4\\\",[24,[\\\"model\\\",\\\"parent\\\",\\\"events_interrupted_freetext\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"classNames\\\",\\\"dropped\\\",\\\"data-field\\\"],[\\\"outlined\\\",[28,\\\"action\\\",[[23,0,[]],\\\"addStatusToRecord\\\",\\\"interrupted\\\"],null],[24,[\\\"event\\\"]]]],{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"interrupted_event_list\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.drag_event_here\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"interrupted_event_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,2,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb-pic\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[28,\\\"api-image\\\",[[23,2,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n\\\\n\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default panel-size worksitediary-state-box\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.alteration_operations\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"value\\\"],[\\\"4\\\",[24,[\\\"model\\\",\\\"parent\\\",\\\"events_altered_freetext\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"classNames\\\",\\\"dropped\\\",\\\"data-field\\\"],[\\\"outlined\\\",[28,\\\"action\\\",[[23,0,[]],\\\"addStatusToRecord\\\",\\\"altered\\\"],null],[24,[\\\"event\\\"]]]],{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"additional_event_list\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.drag_event_here\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"additional_event_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,1,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb-pic\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[28,\\\"api-image\\\",[[23,1,[\\\"images\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n\\\\n\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n                                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"rating\\\"]],\\\"up\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-up pull-right move move-GoodQuality active\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"rating\\\"]],\\\"down\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"worksitediary-thumb-down pull-right move move-PoorQuality \\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                                                    \\\"],[9],[0,\\\"\\\\n                                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"menu.add_worksitediary\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"worksitediary/report/add/diary-events/event-component\\\",null,[[\\\"form\\\",\\\"recordSaved\\\",\\\"record_id\\\",\\\"cancelClicked\\\",\\\"project\\\"],[\\\"worksitediary\\\",[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null],[24,[\\\"record\\\",\\\"id\\\"]],\\\"removeField\\\",[24,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/diary-events/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/diary-modal/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MyModalComponent;\n\nimport Ember from 'ember';\n\nMyModalComponent = Ember.Component.extend({\n    hideCloseButtons: false,\n    okButtonText: null,\n    backdrop: 'static',\n    actions: {\n        ok: function () {\n            $('.modal', this.element).modal('hide');\n            return this.sendAction('ok');\n        },\n        clear: function () {\n            return this.sendAction('clear');\n        },\n    },\n    show: function () {\n        this.sendAction('didinsert');\n        return $('.modal', this.element)\n            .modal()\n            .on(\n                'hidden.bs.modal',\n                function () {\n                    return this.sendAction('close');\n                }.bind(this),\n            );\n    }.on('didInsertElement'),\n    hide: Em.on('willDestroyElement', function () {\n        return $('.modal', this.element).modal('hide');\n    }),\n});\n\nexport default MyModalComponent;\n","export default Ember.HTMLBars.template({\"id\":\"7vPKZ2Hy\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal fade\\\"],[11,\\\"data-backdrop\\\",[29,[[22,\\\"backdrop\\\"]]]],[8],[0,\\\"\\\\n  \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-dialog\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-content\\\"],[8],[0,\\\"\\\\n      \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-header\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hideCloseButtons\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"close\\\"],[12,\\\"data-dismiss\\\",\\\"modal\\\"],[12,\\\"aria-hidden\\\",\\\"true\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"test\\\"]],[8],[0,\\\"×\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"modal-title\\\"],[8],[1,[22,\\\"title\\\"],false],[9],[0,\\\"\\\\n      \\\"],[9],[0,\\\"\\\\n      \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-body\\\"],[8],[0,\\\"\\\\n        \\\"],[14,1],[0,\\\"\\\\n      \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hide_buttons\\\"]]],null,{\\\"statements\\\":[[0,\\\"      \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-footer\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hideCloseButtons\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"clear\\\"]],[8],[1,[28,\\\"t\\\",[\\\"modal.clear\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"ok\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"okButtonText\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[22,\\\"okButtonText\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"modal.ok\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n      \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n  \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/diary-modal/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/extra/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddExtraRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddExtraRoute = baseRoute.extend();\n\nexport default WorksitediaryReportAddExtraRoute;\n","export default Ember.HTMLBars.template({\"id\":\"So05ijLD\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"collector/field-container\\\",[\\\"diaryreport.egen_kontrol\\\"],[[\\\"model\\\"],[[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"collector/field-container\\\",[\\\"diaryreport.files\\\"],[[\\\"model\\\"],[[24,[\\\"model\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/extra/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/material/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryAddMaterialInfoController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryAddMaterialInfoController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    show_modal: false,\n    ordered_material_list: Ember.computed.alias('addController.model.orders_ordered'),\n    received_material_list: Ember.computed.alias('addController.model.orders_received'),\n    event_type_options: null,\n    material_settings: Ember.computed(function () {\n        return {\n            form: 'material',\n            defaultValues: {\n                order_date: moment().format('YYYY-MM-DD'),\n            },\n        };\n    }),\n    actions: {\n        addMaterialToRecord: function (status, event_id) {\n            var material;\n            material = this.get('store').peekRecord('material', event_id);\n            this.get('ordered_material_list').removeObject(\n                this.get('ordered_material_list').findBy('id', material.get('id')),\n            );\n            this.get('received_material_list').removeObject(\n                this.get('received_material_list').findBy('id', material.get('id')),\n            );\n            if (status !== 'returnToStore') {\n                material.set('order_state', status);\n                material.save();\n                //console.log status\n                if (status === 'ordered') {\n                    return this.get('ordered_material_list').pushObject(material);\n                } else if (status === 'received') {\n                    return this.get('received_material_list').pushObject(material);\n                }\n            } else {\n                return material.set('order_state', null);\n            }\n        },\n        edit_event: function (event) {\n            event.set('order_date', moment().format('YYYY-MM-DD'));\n            this.set('record', event);\n            this.set('show_modal', true);\n            return false;\n        },\n        show_add_event_popup: function () {\n            this.set('show_modal', true);\n            return false;\n        },\n        closeModal: function (settings, record) {\n            this.set('show_modal', false);\n            return this.send('addMaterialToRecord', record.get('order_state'), record.get('id'));\n        },\n        removeField: function (id) {\n            var mat;\n            this.set('show_modal', false);\n            this.set('record', null);\n            mat = this.store.peekRecord('material', id);\n            if (mat) {\n                return mat.destroyRecord();\n            }\n        },\n    },\n});\n\nexport default WorksiteDiaryAddMaterialInfoController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/material/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddMaterialRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddMaterialRoute = baseRoute.extend({\n    Collector: Em.inject.service('collector-service'),\n    session: Em.inject.service(),\n    model: function () {\n        return this.store.findAll('material');\n    },\n});\n\nexport default WorksitediaryReportAddMaterialRoute;\n","export default Ember.HTMLBars.template({\"id\":\"G6Y0mqOM\",\"block\":\"{\\\"symbols\\\":[\\\"material\\\",\\\"material\\\",\\\"material\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"material@add\\\"],null]],null,{\\\"statements\\\":[[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_add_event_popup\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksite.material.add\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-danger\\\"],[10,\\\"onclick\\\",\\\"alert('Don\\\\\\\\'t click this!!! Drag fields here')\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"form_editor.remove_field\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-8\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default panel-size\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.ordered.materials\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\",\\\"classNames\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"addMaterialToRecord\\\",\\\"ordered\\\"],null],\\\"outlined\\\"]],{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"ordered_material_list\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.drag_event_here\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"ordered_material_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,3,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,3,[\\\"image\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,3,[]]]],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb-pic\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[28,\\\"api-image\\\",[[23,3,[\\\"image\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n\\\\n\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,3,[]]]],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"arrival_date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n\\\\n                                    \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,3,[]]]],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                        \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,3,[\\\"arrival_date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[3]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.arrived.materials\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"classNames\\\",\\\"classNames\\\",\\\"dropped\\\",\\\"data-field\\\"],[\\\"list-wrapper\\\",\\\"outlined\\\",[28,\\\"action\\\",[[23,0,[]],\\\"addMaterialToRecord\\\",\\\"received\\\"],null],[24,[\\\"material\\\"]]]],{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"received_material_list\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.drag_event_here\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"received_material_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[\\\"id\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,2,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[\\\"image\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb-pic\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[28,\\\"api-image\\\",[[23,2,[\\\"image\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n\\\\n\\\\n                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                                                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"arrival_date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n\\\\n                                            \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                                                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                                \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,2,[\\\"arrival_date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                            \\\"],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 uncategorized-div-size\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.materials\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\",\\\"classNames\\\",\\\"data-field\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"addMaterialToRecord\\\",\\\"returnToStore\\\"],null],\\\"outlined\\\",[24,[\\\"material\\\"]]]],{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"model\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[23,1,[\\\"order_state\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,1,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"image\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb-pic\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url(\\\",[28,\\\"api-image\\\",[[23,1,[\\\"image\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n\\\\n\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"arrival_date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n\\\\n                                        \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"arrival_date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"title\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"worksite.material.add\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"settings\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[[24,[\\\"material_settings\\\"]],[24,[\\\"record\\\",\\\"id\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null],\\\"removeField\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\" \\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/material/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/notes-anmalan/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryNotesAnmalanController;\n\nimport Ember from 'ember';\n\nimport direktivController from '../notes-direktiv/controller';\n\nWorksiteDiaryNotesAnmalanController = direktivController.extend({\n    type: 'anmalan',\n});\n\nexport default WorksiteDiaryNotesAnmalanController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/notes-anmalan/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddNotesAnmalanRoute;\n\nimport Ember from 'ember';\n\nimport direktivRoute from '../notes-direktiv/route';\n\nWorksitediaryReportAddNotesAnmalanRoute = direktivRoute.extend();\n\nexport default WorksitediaryReportAddNotesAnmalanRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/notes-besiktningar/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryNotesBesiktningarController;\n\nimport Ember from 'ember';\n\nimport direktivController from '../notes-direktiv/controller';\n\nWorksiteDiaryNotesBesiktningarController = direktivController.extend({\n    type: 'besiktningar',\n    intl: Ember.inject.service(),\n    options: Ember.computed(function () {\n        var intl;\n        intl = this.get('intl');\n        return [\n            intl.t('diaryreport.notes.options.byggnadsnamnd'),\n            intl.t('diaryreport.notes.options.arbetsmiljo'),\n            intl.t('diaryreport.notes.options.elinspektion'),\n            intl.t('diaryreport.notes.options.anlaggnprovning'),\n            intl.t('diaryreport.notes.options.miljo'),\n        ];\n    }),\n});\n\nexport default WorksiteDiaryNotesBesiktningarController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/notes-besiktningar/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddNotesBesiktningarRoute;\n\nimport Ember from 'ember';\n\nimport direktivRoute from '../notes-direktiv/route';\n\nWorksitediaryReportAddNotesBesiktningarRoute = direktivRoute.extend();\n\nexport default WorksitediaryReportAddNotesBesiktningarRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/notes-direktiv/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryNotesDirektivController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryNotesDirektivController = Ember.Controller.extend({\n    Collector: Ember.inject.service('collector-service'),\n    intl: Ember.inject.service(),\n    type: 'direktiv',\n    records: Ember.computed('model.notes.[]', function () {\n        return this.get('model.notes').filterBy('type', this.get('type'));\n    }),\n    fields: Ember.computed(function () {\n        var c;\n        c = this.get('Collector');\n        return [\n            c.field('diaryreport_note', 'title'),\n            c.field('diaryreport_note', 'desc'),\n            c.field('diaryreport_note', 'responsible'),\n        ];\n    }),\n    options: Ember.computed(function () {\n        var intl;\n        intl = this.get('intl');\n        return [\n            intl.t('diaryreport.notes.options.bestallare'),\n            intl.t('diaryreport.notes.options.kontrollant'),\n            intl.t('diaryreport.notes.options.byggnadsnamnd'),\n            intl.t('diaryreport.notes.options.miljo'),\n        ];\n    }),\n    actions: {\n        pushToModel: function (form, record) {\n            return this.get('model.notes').pushObject(record);\n        },\n        removeFromModel: function (record) {\n            return this.get('model.notes').removeObject(record);\n        },\n    },\n});\n\nexport default WorksiteDiaryNotesDirektivController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/notes-direktiv/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddNotesDirektivRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddNotesDirektivRoute = baseRoute.extend({\n    templateName: 'worksitediary/report/add/notes-direktiv',\n});\n\nexport default WorksitediaryReportAddNotesDirektivRoute;\n","export default Ember.HTMLBars.template({\"id\":\"eqYMxz79\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[1,[28,\\\"worksitediary/report/add/notes-page-component\\\",null,[[\\\"form\\\",\\\"type\\\",\\\"recordAdded\\\",\\\"recordDeleted\\\",\\\"fields\\\",\\\"records\\\",\\\"options\\\"],[\\\"diaryreport_note\\\",[24,[\\\"type\\\"]],\\\"pushToModel\\\",\\\"removeFromModel\\\",[24,[\\\"fields\\\"]],[24,[\\\"records\\\"]],[24,[\\\"options\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/notes-direktiv/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/notes-page-component/component.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddNotesPageComponent;\n\nimport Ember from 'ember';\n\nWorksitediaryReportAddNotesPageComponent = Ember.Component.extend({\n    session: Ember.inject.service(),\n    store: Ember.inject.service(),\n    setField: function (field) {\n        if (field.name === 'type') {\n            field.features.hide = true;\n        }\n        return field;\n    },\n    show_modal: false,\n    actions: {\n        updateField: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n        edit_record: function (record) {\n            this.set('record', record);\n            this.set('show_modal', true);\n            return false;\n        },\n        removeRecord: function (id) {\n            var record;\n            record = this.get('store').peekRecord(this.get('form'), id);\n            this.sendAction('recordDeleted', record);\n            return record.destroyRecord();\n        },\n        add_record: function () {\n            var record;\n            record = this.get('store').createRecord(this.get('form').dasherize(), {\n                type: this.get('type'),\n            });\n            this.set('record', record);\n            return this.set('show_modal', true);\n        },\n        closeModal: function () {\n            this.set('show_modal', false);\n            return this.set('record', null);\n        },\n        recordAdded: function (settings, record) {\n            this.sendAction('recordAdded', this.get('form'), record);\n            this.set('show_modal', false);\n            return this.set('record', null);\n        },\n        setSearchOption: function (option) {\n            return this.set('record.title', option.string);\n        },\n    },\n});\n\nexport default WorksitediaryReportAddNotesPageComponent;\n","export default Ember.HTMLBars.template({\"id\":\"a5HBPfSi\",\"block\":\"{\\\"symbols\\\":[\\\"component\\\",\\\"field\\\",\\\"record\\\",\\\"containerComp\\\",\\\"field\\\",\\\"model\\\",\\\"record\\\",\\\"field\\\",\\\"field\\\"],\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add_record\\\"]],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"diaryreport.add.\\\",[24,[\\\"form\\\"]],\\\".\\\",[24,[\\\"type\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"removeRecord\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-danger\\\"],[11,\\\"onclick\\\",[29,[\\\"alert(\\\",[28,\\\"t\\\",[\\\"diaryreport.dumpster.drag_alert\\\"],null],\\\")\\\"]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"diaryreport.dumpster.drag_here\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-offset-2 col-md-8\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"diaryreport.header.\\\",[24,[\\\"form\\\"]],\\\".\\\",[24,[\\\"type\\\"]]],null]],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-striped\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"report.\\\",[24,[\\\"form\\\"]],\\\".\\\",[23,9,[\\\"name\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[9]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"records\\\"]]],null,{\\\"statements\\\":[[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"tagName\\\",\\\"onClick\\\"],[[23,7,[\\\"id\\\"]],\\\"tr\\\",[28,\\\"action\\\",[[23,0,[]],\\\"edit_record\\\",[23,7,[]]],null]]],{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[[23,8,[]],[24,[\\\"form\\\"]],[23,7,[]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[8]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[7]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"worksitediary/report/add/diary-modal\\\",null,[[\\\"title\\\",\\\"hideCloseButtons\\\",\\\"hide_buttons\\\"],[[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"diaryreport.modal.title.\\\",[24,[\\\"form\\\"]],\\\".\\\",[24,[\\\"type\\\"]]],null]],null],true,true]],{\\\"statements\\\":[[4,\\\"collector/record-custom-comp\\\",null,[[\\\"record\\\",\\\"form\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\",\\\"returnField\\\"],[[24,[\\\"record\\\"]],[24,[\\\"form\\\"]],\\\"recordAdded\\\",\\\"closeModal\\\",[24,[\\\"setField\\\"]]]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"name\\\"]],\\\"title\\\"],null]],null,{\\\"statements\\\":[[4,\\\"collector/field-container\\\",[[23,2,[]]],[[\\\"change\\\",\\\"model\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\"],[[\\\"target\\\"],[[23,1,[]]]]],[23,3,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"drop-down-search-input\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"bubbleChange\\\"],[[24,[\\\"options\\\"]],\\\"add-fields form-control\\\",[28,\\\"mut\\\",[[28,\\\"get\\\",[[23,6,[]],[23,5,[\\\"name\\\"]]],null]],null],[28,\\\"action\\\",[[23,0,[]],\\\"setSearchOption\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4,5,6]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector/field-container\\\",[[23,2,[]]],[[\\\"change\\\",\\\"model\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"setValue\\\"],[[\\\"target\\\"],[[23,1,[]]]]],[23,3,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1,2,3]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/notes-page-component/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/notes-ritningar/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryReportAddNotesRitningarController;\n\nimport Ember from 'ember';\n\nimport direktivController from '../notes-direktiv/controller';\n\nWorksiteDiaryReportAddNotesRitningarController = direktivController.extend({\n    type: 'ritningar',\n    intl: Ember.inject.service(),\n    options: Ember.computed(function () {\n        var intl;\n        intl = this.get('intl');\n        return [\n            intl.t('diaryreport.notes.options.arkitekt'),\n            intl.t('diaryreport.notes.options.konstruktor'),\n            intl.t('diaryreport.notes.options.ror'),\n            intl.t('diaryreport.notes.options.ventilation'),\n            intl.t('diaryreport.notes.options.el'),\n            intl.t('diaryreport.notes.options.nyritning'),\n        ];\n    }),\n});\n\nexport default WorksiteDiaryReportAddNotesRitningarController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/notes-ritningar/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddNotesRitningarRoute;\n\nimport Ember from 'ember';\n\nimport direktivRoute from '../notes-direktiv/route';\n\nWorksitediaryReportAddNotesRitningarRoute = direktivRoute.extend();\n\nexport default WorksitediaryReportAddNotesRitningarRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/offering/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryOfferController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryOfferController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    given_offers_list: Ember.computed.alias('addController.model.diaryreport_given_offer'),\n    show_modal: false,\n    actions: {\n        updateField: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n        edit_event: function (event) {\n            this.set('record', event);\n            this.set('show_modal', true);\n            return false;\n        },\n        removeField: function (id) {\n            var mat;\n            this.set('show_modal', false);\n            this.set('record', null);\n            mat = this.store.peekRecord('diaryreport_given_offer', id);\n            if (mat) {\n                return mat.destroyRecord();\n            }\n        },\n        show_add_event_popup: function () {\n            var record;\n            record = this.get('store').createRecord('diaryreport_given_offer');\n            this.set('record', record);\n            this.set('show_modal', true);\n            return false;\n        },\n        closeModal: function (settings, record) {\n            this.get('given_offers_list').pushObject(record);\n            return this.set('show_modal', false);\n        },\n    },\n});\n\nexport default WorksiteDiaryOfferController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/offering/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddOffersRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddOffersRoute = baseRoute.extend();\n\nexport default WorksitediaryReportAddOffersRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Lw00XCID\",\"block\":\"{\\\"symbols\\\":[\\\"event\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport_given_offer@add\\\"],null]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_add_event_popup\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksite.offers\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-danger\\\"],[10,\\\"onclick\\\",\\\"alert('Don\\\\\\\\'t click this!!! Drag fields here')\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"form_editor.remove_field\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.offers\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"given_offers_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,1,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\\n                                    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[1,[23,1,[\\\"phase\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"title\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"worksite.offers\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"diaryreport_given_offer\\\",[24,[\\\"record\\\",\\\"id\\\"]],\\\"closeModal\\\",\\\"removeField\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/offering/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/ordered-changes/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryReviewController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryReviewController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    store: Ember.inject.service(),\n    ordered_changes_list: Ember.computed.alias('addController.model.diaryreport_misc'),\n    show_modal: false,\n    actions: {\n        updateField: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n        edit_event: function (event) {\n            this.set('record', event);\n            this.set('show_modal', true);\n            return false;\n        },\n        removeField: function (id) {\n            var mat;\n            this.set('show_modal', false);\n            this.set('record', null);\n            mat = this.store.peekRecord('diaryreport_misc', id);\n            if (mat) {\n                return mat.destroyRecord();\n            }\n        },\n        show_add_event_popup: function () {\n            var record;\n            record = this.store.createRecord('diaryreport_misc');\n            this.set('record', record);\n            this.set('show_modal', true);\n            return false;\n        },\n        closeModal: function (settings, record) {\n            this.get('ordered_changes_list').pushObject(record);\n            return this.set('show_modal', false);\n        },\n    },\n});\n\nexport default WorksiteDiaryReviewController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/ordered-changes/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddOrderedChangesRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddOrderedChangesRoute = baseRoute.extend();\n\nexport default WorksitediaryReportAddOrderedChangesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"du403Q93\",\"block\":\"{\\\"symbols\\\":[\\\"event\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport_misc@add\\\"],null]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_add_event_popup\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksite.ordered-changes\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-danger\\\"],[10,\\\"onclick\\\",\\\"alert('Don\\\\\\\\'t click this!!! Drag fields here')\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"form_editor.remove_field\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.ordered_changes\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"ordered_changes_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,1,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\\n                                    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[1,[23,1,[\\\"phase\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                               \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"title\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"worksite.ordered-changes\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"diaryreport_misc\\\",[24,[\\\"record\\\",\\\"id\\\"]],\\\"closeModal\\\",\\\"removeField\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/ordered-changes/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/other-entries/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryExtraController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryExtraController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    other_entries_list: Ember.computed.alias('addController.model.diaryreport_other_note'),\n    show_modal: false,\n    actions: {\n        updateField: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n        edit_event: function (event) {\n            this.set('record', event);\n            this.set('show_modal', true);\n            return false;\n        },\n        removeField: function (id) {\n            var mat;\n            this.set('show_modal', false);\n            this.set('record', null);\n            mat = this.store.peekRecord('diaryreport_other_note', id);\n            if (mat) {\n                return mat.destroyRecord();\n            }\n        },\n        show_add_event_popup: function () {\n            var record;\n            record = this.get('store').createRecord('diaryreport_other_note');\n            this.set('record', record);\n            this.set('show_modal', true);\n            return false;\n        },\n        closeModal: function (settings, record) {\n            this.get('other_entries_list').pushObject(record);\n            return this.set('show_modal', false);\n        },\n    },\n});\n\nexport default WorksiteDiaryExtraController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/other-entries/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddExtrasRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddExtrasRoute = baseRoute.extend();\n\nexport default WorksitediaryReportAddExtrasRoute;\n","export default Ember.HTMLBars.template({\"id\":\"0HhWEqa6\",\"block\":\"{\\\"symbols\\\":[\\\"event\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport_other_note@add\\\"],null]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_add_event_popup\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksite.other_entries\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-danger\\\"],[10,\\\"onclick\\\",\\\"alert('Don\\\\\\\\'t click this!!! Drag fields here')\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"form_editor.remove_field\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.other_entries\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"other_entries_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,1,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"image\\\",\\\"0\\\",\\\"thumb\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-2 worksitediary-image-div-size\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary-img-thumb\\\"],[11,\\\"style\\\",[29,[\\\"background: url(\\\",[28,\\\"api-image\\\",[[23,1,[\\\"image\\\",\\\"0\\\",\\\"thumb\\\"]]],null],\\\")\\\"]]],[8],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"empty-image-div-size\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"phase\\\"]],false],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12\\\"],[8],[0,\\\"\\\\n\\\\n                                        \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n                                            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"phase\\\"]],false],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n                                        \\\"],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"title\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"worksite.other_entries\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"diaryreport_other_note\\\",[24,[\\\"record\\\",\\\"id\\\"]],\\\"closeModal\\\",\\\"removeField\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/other-entries/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/required-extra/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryRequiredExtraController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryRequiredExtraController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    required_extra_list: Ember.computed.alias('addController.model.diaryreport_required_extra'),\n    show_modal: false,\n    actions: {\n        updateField: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n        edit_event: function (event) {\n            this.set('record', event);\n            this.set('show_modal', true);\n            return false;\n        },\n        removeField: function (id) {\n            var mat;\n            this.set('show_modal', false);\n            this.set('record', null);\n            mat = this.store.peekRecord('diaryreport_required_extra', id);\n            if (mat) {\n                return mat.destroyRecord();\n            }\n        },\n        show_add_event_popup: function () {\n            var record;\n            record = this.get('store').createRecord('diaryreport_required_extra');\n            this.set('record', record);\n            this.set('show_modal', true);\n            return false;\n        },\n        closeModal: function (settings, record) {\n            this.get('required_extra_list').pushObject(record);\n            return this.set('show_modal', false);\n        },\n    },\n});\n\nexport default WorksiteDiaryRequiredExtraController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/required-extra/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportRequiredAddExtrasRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportRequiredAddExtrasRoute = baseRoute.extend({\n    Collector: Em.inject.service('collector-service'),\n    session: Em.inject.service(),\n});\n\nexport default WorksitediaryReportRequiredAddExtrasRoute;\n","export default Ember.HTMLBars.template({\"id\":\"95UyyZnj\",\"block\":\"{\\\"symbols\\\":[\\\"event\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport_required_extra@add\\\"],null]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_add_event_popup\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksite.required_extras\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-danger\\\"],[10,\\\"onclick\\\",\\\"alert('Don\\\\\\\\'t click this!!! Drag fields here')\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"form_editor.remove_field\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.required_extras\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"required_extra_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,1,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\\n                                    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[1,[23,1,[\\\"phase\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"worksitediary/report/add/diary-modal\\\",null,[[\\\"title\\\",\\\"hideCloseButtons\\\",\\\"hide_buttons\\\"],[[24,[\\\"event_modal_title\\\"]],true,true]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"diaryreport_required_extra\\\",[24,[\\\"record\\\",\\\"id\\\"]],\\\"closeModal\\\",\\\"removeField\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/required-extra/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/review-page/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryReviewController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryReviewController = Ember.Controller.extend({\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    review_options: Ember.computed(function () {\n        var field;\n        field = this.get('Collector').field('review_and_inspection', 'type');\n        field = Ember.Object.create(field);\n        field.get('options').forEach((item) => {\n            return (item.name = this.get('intl').t('review_and_inspection.type.' + item.value));\n        });\n        return field.get('options');\n    }),\n    currentdate: Em.computed(function () {\n        return moment().format('YYYY-MM-DD');\n    }),\n    datefield: Em.computed(function () {\n        var c, field;\n        c = this.get('Collector');\n        field = c.field('review_and_inspection', 'date');\n        field.value = this.get('date');\n        return field;\n    }),\n    initData: Ember.on('init', function () {\n        var currentdate;\n        currentdate = moment().format('YYYY-MM-DD');\n        return this.set('date', currentdate);\n    }),\n    date: '',\n    title: '',\n    added_reviews_and_inspections: Ember.computed.alias(\n        'addController.model.review_and_inspection',\n    ),\n    actions: {\n        update_reviews: function (title) {\n            return this.set('title', title);\n        },\n        update_date: function (date) {\n            return this.set('date', date);\n        },\n        add_item: function () {\n            var date, record;\n            if (this.get('title') === '' && this.get('value') === void 0) {\n                return;\n            }\n            record = this.get('store').createRecord('review_and_inspection');\n            if (this.get('title') !== '') {\n                record.set('title', this.get('title'));\n            } else {\n                record.set('title', this.get('value.string'));\n            }\n            date = this.get('date') || this.get('currentdate');\n            record.set('date', date);\n            this.set('record', record);\n            this.get('added_reviews_and_inspections').pushObject(record);\n            record.save();\n            return this.set('value', '');\n        },\n        remove_item: function (record) {\n            this.set('record', null);\n            this.get('added_reviews_and_inspections').removeObject(record);\n            return record.destroyRecord();\n        },\n    },\n});\n\nexport default WorksiteDiaryReviewController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/review-page/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddReviewPageRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddReviewPageRoute = baseRoute.extend();\n\nexport default WorksitediaryReportAddReviewPageRoute;\n","export default Ember.HTMLBars.template({\"id\":\"9srmT6Hb\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.review-page\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"review_and_inspection@add\\\"],null]],null,{\\\"statements\\\":[[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"review_and_inspection.reviews\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"drop-down-search-input\\\",null,[[\\\"options\\\",\\\"value\\\",\\\"classes\\\",\\\"change\\\"],[[24,[\\\"review_options\\\"]],[24,[\\\"value\\\"]],\\\"form-control add-fields\\\",\\\"update_reviews\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"collector/field-container\\\",[[24,[\\\"datefield\\\"]]],[[\\\"change\\\"],[\\\"update_date\\\"]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add_item\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.related_reviews_and_inspections\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"added_reviews_and_inspections\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worksitediary\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-8\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[23,1,[\\\"title\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-3\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"date\\\"]],\\\"MM/DD/YYYY\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-1 pull-right\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-success trash-icon-size \\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove_item\\\",[23,1,[]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/review-page/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddRoute;\n\nimport Ember from 'ember';\n\nWorksitediaryReportAddRoute = Ember.Route.extend({\n    store: Ember.inject.service(),\n    model: function (params) {\n        var date;\n        date = moment().format('YYYY-MM-DD');\n        if (params.date && moment(params.date).isValid()) {\n            date = params.date;\n        }\n        if (params.id === 'add') {\n            return this.get('store').createRecord('diaryreport', {\n                diary_date: date,\n            });\n        } else {\n            return this.get('store').findRecord('diaryreport', params.id, {\n                include: true,\n            });\n        }\n    },\n    actions: {\n        willTransition: function (transition) {\n            if (transition.targetName.substring(0, 25) === 'worksitediary.report.add.') {\n                return this.get('controller.model').save();\n            }\n        },\n    },\n});\n\nexport default WorksitediaryReportAddRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/signature/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiarySignatureController;\n\nimport Ember from 'ember';\n\nWorksiteDiarySignatureController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    actions: {\n        changeOverseerSignature: function (sig) {\n            this.set('addController.model.overseer', sig);\n            return this.set('addController.model.status', 'Approved');\n        },\n        changeSupervisorSignature: function (sig) {\n            this.set('addController.model.supervisor', sig);\n            return this.set('addController.model.status', 'Approved');\n        },\n    },\n});\n\nexport default WorksiteDiarySignatureController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/signature/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddSignatureRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddSignatureRoute = baseRoute.extend();\n\nexport default WorksitediaryReportAddSignatureRoute;\n","export default Ember.HTMLBars.template({\"id\":\"LEt4jYb/\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"diaryreport.supervisor\\\"],[[\\\"model\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],\\\"changeSupervisorSignature\\\"]]],false],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"diaryreport.overseer\\\"],[[\\\"model\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],\\\"changeOverseerSignature\\\"]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/signature/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/summary-page/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteSummaryController;\n\nimport Ember from 'ember';\n\nWorksiteSummaryController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    work_force: Ember.computed('model.work_force', function () {\n        if (this.get('model.work_force')) {\n            return this.get('model.work_force').split(',');\n        }\n    }),\n    user: Ember.computed(function () {\n        var tmp_user, user;\n        tmp_user = this.get('addController.model.user');\n        if (tmp_user) {\n            user = this.store.peekRecord('user', tmp_user.id);\n            return user.get('firstname') + ' ' + user.get('lastname');\n        } else {\n            return '';\n        }\n    }),\n});\n\nexport default WorksiteSummaryController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/summary-page/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediarySummaryReviewPageRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediarySummaryReviewPageRoute = baseRoute.extend();\n\nexport default WorksitediarySummaryReviewPageRoute;\n","export default Ember.HTMLBars.template({\"id\":\"ltDnJbMi\",\"block\":\"{\\\"symbols\\\":[\\\"force\\\"],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.user\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"user\\\",\\\"lastname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"user\\\",\\\"firstname\\\"]],false],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.work_day\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.diaryreport.work_day\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"work_day\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.week\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"work_week\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.foremans_at_site\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.foremans_at_site\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"foremans_at_site\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.workers_at_site\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"workers_at_site\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.subcontractors_at_site\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"subcontractors_at_site\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.side_contractors_at_site\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"side_contractors_at_site\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.other_contractors_at_site\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"other_contractors_at_site\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.stock_changes_at_site\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"stock_changes_at_site\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.work_force\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.diaryreport.work_force\\\"],null],false],[0,\\\":\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"work_force\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"br\\\",true],[8],[9],[1,[23,1,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.events_started\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"events_started\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n            \\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport.events_work_in_progress\\\"],null]],null,{\\\"statements\\\":[[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.events_work_in_progress\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"events_work_in_progress\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.events_finished\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"events_finished\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.events_interrupted\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"events_interrupted\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.events_altered\\\"],null],false],[0,\\\": \\\"],[1,[24,[\\\"addController\\\",\\\"model\\\",\\\"events_altered\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/summary-page/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/supervisor-note/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksiteDiaryExtraController;\n\nimport Ember from 'ember';\n\nWorksiteDiaryExtraController = Ember.Controller.extend({\n    session: Ember.inject.service(),\n    addController: Ember.inject.controller('worksitediary.report.add'),\n    supervisor_note_list: Ember.computed.alias('addController.model.diaryreport_supervisor_note'),\n    show_modal: false,\n    actions: {\n        updateField: function (value, field) {\n            return this.set('model.' + field, value);\n        },\n        edit_event: function (event) {\n            this.set('record', event);\n            this.set('show_modal', true);\n            return false;\n        },\n        removeField: function (id) {\n            var mat;\n            this.set('show_modal', false);\n            this.set('record', null);\n            mat = this.store.peekRecord('diaryreport_supervisor_note', id);\n            if (mat) {\n                return mat.destroyRecord();\n            }\n        },\n        show_add_event_popup: function () {\n            var record;\n            record = this.get('store').createRecord('diaryreport_supervisor_note');\n            this.set('record', record);\n            this.set('show_modal', true);\n            return false;\n        },\n        closeModal: function (settings, record) {\n            this.get('supervisor_note_list').pushObject(record);\n            return this.set('show_modal', false);\n        },\n    },\n});\n\nexport default WorksiteDiaryExtraController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/add/supervisor-note/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportAddExtrasRoute;\n\nimport Ember from 'ember';\n\nimport baseRoute from '../base-route/route';\n\nWorksitediaryReportAddExtrasRoute = Ember.Route.extend();\n\nexport default WorksitediaryReportAddExtrasRoute;\n","export default Ember.HTMLBars.template({\"id\":\"1Ztm6a2r\",\"block\":\"{\\\"symbols\\\":[\\\"event\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"diaryreport_supervisor_note@add\\\"],null]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_add_event_popup\\\"]],[8],[1,[28,\\\"t\\\",[\\\"worksite.supervisor_notes\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-danger\\\"],[10,\\\"onclick\\\",\\\"alert('Don\\\\\\\\'t click this!!! Drag fields here')\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-trash\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"form_editor.remove_field\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-9\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel panel-default\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"worksite.supervisor_notes\\\"],null],false],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"supervisor_note_list\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[23,1,[\\\"id\\\"]],\\\"div-card-border\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"edit_event\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\\n                                    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"worksitediary-title-label-size overflow-hidden\\\"],[8],[1,[23,1,[\\\"phase\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"description\\\"]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[8],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"worksitediary-desc-div-size overflow-hidden\\\"],[8],[0,\\\" \\\"],[1,[23,1,[\\\"date\\\"]],false],[9],[0,\\\"\\\\n\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"title\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"worksite.supervisor_notes\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeField\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\"],[\\\"diaryreport_supervisor_note\\\",[24,[\\\"record\\\",\\\"id\\\"]],\\\"closeModal\\\",\\\"removeField\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/supervisor-note/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"dgvQJ3z7\",\"block\":\"{\\\"symbols\\\":[\\\"page\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[1,[28,\\\"t\\\",[\\\"header.path.add.diaryreport\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"move move-Cross add-page-cross\\\",\\\"worksitediary.index\\\"]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row hidden-xs hidden-sm\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-lg-12 text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ol\\\",true],[10,\\\"class\\\",\\\"breadcrumb\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"filteredPages\\\"]]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"disabled\\\",\\\"route\\\"],[\\\"li\\\",\\\"link\\\",[28,\\\"if\\\",[[24,[\\\"enable_next\\\"]],false,true],null],[23,1,[\\\"link\\\"]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"i\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[23,1,[\\\"icon\\\"]],[23,1,[\\\"icon\\\"]],\\\"move move-Note\\\"],null]]]],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[[28,\\\"if\\\",[[23,1,[\\\"string\\\"]],[23,1,[\\\"string\\\"]],[23,1,[\\\"link\\\"]]],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hide_previous\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"previous\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-left\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"previous\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"enable_next\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"router\\\",\\\"currentRouteName\\\"]],\\\"worksitediary.report.add.summary-page\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"next\\\"]],[8],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"next\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/add/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/first/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportFirstController;\n\nimport Ember from 'ember';\n\nWorksitediaryReportFirstController = Ember.Controller.extend({\n    dateField: Ember.computed(function () {\n        var field;\n        field = this.get('Collector').fieldArray('diaryreport', ['diary_date'])[0];\n        field.value = moment().format('YYYY-MM-DD');\n        this.send('updateField', field.value, 'diary_date');\n        return field;\n    }),\n    projectField: Ember.computed(function () {\n        var field;\n        field = this.get('Collector').fieldArray('diaryreport', ['project'])[0];\n        this.send('updateField', field.value, 'project');\n        return field;\n    }),\n    actions: {\n        updateField: function (value, fieldname) {\n            var params;\n            if (fieldname === 'diary_date') {\n                this.set('diary_date', value);\n            }\n            if (fieldname === 'project') {\n                this.set('project', value);\n            }\n            if (Em.isEmpty(this.get('project'))) {\n                return;\n            }\n            if (Em.isEmpty(this.get('diary_date'))) {\n                return;\n            }\n            //check if there is already journal for this day\n            params = {};\n            params.diary_date = this.get('diary_date');\n            params.project = this.get('project.id');\n            this.get('store')\n                .query('diaryreport', params)\n                .then((data) => {\n                    if (data.content.length > 0) {\n                        this.set('diaryFound', true);\n                        this.set('diaryRow', data.content[0]);\n                    } else {\n                        this.set('diaryFound', false);\n                    }\n                    return this.set('showNextButton', true);\n                });\n        },\n        goToNext: function () {\n            var id;\n            if (this.get('diaryFound')) {\n                id = this.get('diaryRow.id');\n            } else {\n                id = 'add';\n            }\n            this.set('dateField.value', this.get('diary_date'));\n            this.set('projectField.value', this.get('project'));\n            this.set('showNextButton', false);\n            return this.transitionToRoute('worksitediary.report.add.basic-info', id);\n        },\n    },\n});\n\nexport default WorksitediaryReportFirstController;\n","export default Ember.HTMLBars.template({\"id\":\"bamPoLR+\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worksitediary.report.add.new_journal_entry\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[24,[\\\"dateField\\\",\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"change\\\"],[[24,[\\\"dateField\\\"]],\\\"form-control add-fields\\\",\\\"updateField\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[24,[\\\"projectField\\\",\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"change\\\"],[[24,[\\\"projectField\\\"]],\\\"form-control add-fields\\\",\\\"updateField\\\"]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showNextButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"goToNext\\\"]],[8],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"next\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-chevron-right\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/first/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryReportRoute;\n\nimport Ember from 'ember';\n\nWorksitediaryReportRoute = Ember.Route.extend();\n\nexport default WorksitediaryReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"iMHSWANm\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/report/template.hbs\"}});","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WorksitediaryRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nWorksitediaryRoute = Ember.Route.extend(AuthenticatedRouteMixin);\n\nexport default WorksitediaryRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/supervisor-notes-report/controller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SupervisorNotesIndexController;\n\nimport Ember from 'ember';\n\nimport GeneralReportController from '../../../controllers/general-report';\n\nSupervisorNotesIndexController = GeneralReportController.extend({\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    session: Ember.inject.service(),\n    form: 'diaryreport_supervisor_note',\n    showColumns: ['phase', 'date', 'status', 'description', 'image', 'responsible'],\n    status: 'all',\n    queryParams: ['date', 'page'],\n    date: moment().subtract(1, 'months').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n    filters: Em.A([\n        Em.Object.create({\n            field: 'date',\n        }),\n        Em.Object.create({\n            type: 'searchbox',\n            bindto: 'q',\n        }),\n    ]),\n    settings: Em.Object.create({\n        rowSettings: Em.Object.create({\n            hideActions: true,\n        }),\n    }),\n});\n\nexport default SupervisorNotesIndexController;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/pods/worksitediary/supervisor-notes-report/route.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SupervisorNotesRoute;\n\nimport Ember from 'ember';\n\nimport GeneralReportRoute from '../../../routes/general-report';\n\nSupervisorNotesRoute = GeneralReportRoute.extend({\n    queryParams: {\n        page: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        date: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    model: function (params) {\n        params = this._super(params);\n        params.sideload = true;\n        return this.store.query('diaryreport_supervisor_note', params);\n    },\n});\n\nexport default SupervisorNotesRoute;\n","export default Ember.HTMLBars.template({\"id\":\"0cnNM2NW\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"status\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],\\\"diaryreport_supervisor_note\\\",[24,[\\\"status\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"status\\\",\\\"content\\\",\\\"showColumns\\\",\\\"filters\\\",\\\"page\\\",\\\"settings\\\",\\\"limit\\\",\\\"offset\\\"],[\\\"bubbleTransition\\\",\\\"diaryreport_supervisor_note\\\",[24,[\\\"status\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"filters\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"limit\\\"]],[24,[\\\"offset\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worksitediary/supervisor-notes-report/template.hbs\"}});","import EmberObject from '@ember/object';\nimport GeneralReportController from 'tt4/controllers/general-report';\nimport filterModel from 'tt4/mixins/filter-model';\nimport { computed, get, set } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport { alias } from '@ember/object/computed';\nimport { A } from '@ember/array';\n\nconst WorktaskCalendarController = GeneralReportController.extend(filterModel, {\n    Collector: service('collector-service'),\n    store: service(),\n    localStorageWrapper: service(),\n    intl: service(),\n    dialogs: service(),\n    queryParams: ['project', 'user', 'date', 'q', 'customer'],\n    skip_params: null,\n    date: null, // Route defines default date if not set\n    localStorageKey: 'worktaskcalendar_defaultColumns',\n    form: 'worktask',\n\n    user: null,\n    project: null,\n    // do not use limiting with calender\n    limit: null,\n\n    colorFrom: null,\n    absenceColorFrom: null,\n\n    init() {\n        this._super();\n        this.skip_params = ['page', 'order', 'date'];\n        this.colorFrom = ['project.id', 'user.firstname', 'user.lastname'];\n        this.absenceColorFrom = ['abcensetype.id', 'user.firstname', 'user.lastname'];\n    },\n\n    modelAlias: alias('model'),\n\n    settings: EmberObject.create({\n        sortByColumn: 'user,date',\n    }),\n\n    calFields: computed(function () {\n        const c = this.Collector;\n        const col_arr = ['name', 'project', 'user', 'est_hours', 'hours'];\n        const fields = c.fieldArray(this.form, col_arr);\n        return fields;\n    }),\n\n    multiDayFields: computed(function () {\n        return this.Collector.fieldArray(this.form, ['project', 'name', 'user']);\n    }),\n\n    multiDayAbsenceFields: computed(function () {\n        return this.Collector.fieldArray('abcense', ['user', 'abcensetype', 'description']);\n    }),\n\n    oneDayAbsenceFields: computed(function () {\n        const c = this.Collector;\n        const col_arr = ['abcensetype', 'starttime', 'endtime', 'absence_hours', 'description'];\n        const fields = c.fieldArray('abcense', col_arr);\n        return fields;\n    }),\n\n    filters: computed(function () {\n        return A([\n            EmberObject.create({ field: 'date' }),\n            EmberObject.create({ field: 'project' }),\n            EmberObject.create({ field: 'user', singleselect: true }),\n            EmberObject.create({ field: 'customer' }),\n        ]);\n    }),\n\n    filteredModelOneDay: computed(\n        'filteredModel.{@each.date,filteredModel.@each.enddate}',\n        function () {\n            const c = this.Collector;\n            const model = this.filteredModel;\n            if (!c.fieldExists('worktask', 'enddate')) {\n                return model;\n            }\n\n            return model.filter(function (item) {\n                if (\n                    get(item, 'enddate') === null ||\n                    get(item, 'enddate') === get(item, 'startdate')\n                ) {\n                    return true;\n                }\n                return false;\n            });\n        },\n    ),\n\n    filteredModelManyDays: computed('filteredModel.{@each.date,@each.enddate}', function () {\n        const c = this.Collector;\n        const model = this.filteredModel;\n        if (!c.fieldExists('worktask', 'enddate')) {\n            return;\n        }\n\n        return model.filterBy('enddate').sortBy('date');\n    }),\n\n    allAbsences: computed(function () {\n        return this.store.peekAll('abcense');\n    }),\n\n    filteredAbsences: computed('allAbsences.[]', 'filters.@each.value', function () {\n        return this._filterThese(this.allAbsences, ['page', 'order', 'date', 'project']);\n    }),\n\n    filteredAbsencesOneDay: computed(\n        'filteredAbsences.{[],@each.startdate,@each.enddate}',\n        function () {\n            const model = this.filteredAbsences;\n\n            return model.filter(function (item) {\n                if (\n                    get(item, 'enddate') === null ||\n                    get(item, 'enddate') === get(item, 'startdate')\n                ) {\n                    return true;\n                }\n                return false;\n            });\n        },\n    ),\n\n    filteredAbsencesManyDays: computed(\n        'filteredAbsences.{[],@each.startdate,@each.enddate}',\n        function () {\n            const model = this.filteredAbsences;\n            return model.filter(function (item) {\n                if (\n                    get(item, 'enddate') !== null &&\n                    get(item, 'enddate') !== get(item, 'startdate')\n                ) {\n                    return true;\n                }\n                return false;\n            });\n        },\n    ),\n\n    actions: {\n        openWorktaskModal(day) {\n            const params = { date: day };\n\n            // next two lines is added to make sure new record will be shown on calendar right away\n            // even when filters are used\n            if (this.user) {\n                params.user = this.store.peekRecord('user', this.user);\n            }\n            if (this.project) {\n                params.project = this.store.peekRecord('project', this.project);\n            }\n\n            this.store.createRecord('worktask', params);\n            return this.transitionToRoute({ queryParams: { modal: ['worktask', 'new'] } });\n        },\n\n        openEditor(row) {\n            return this.transitionToRoute({ queryParams: { modal: ['worktask', get(row, 'id')] } });\n        },\n\n        openEditorAbsence(row) {\n            return this.transitionToRoute({ queryParams: { modal: ['abcense', get(row, 'id')] } });\n        },\n\n        catchActions(action, params) {\n            if (action === 'fieldsUpdate') {\n                const c = this.Collector;\n                const cols = [];\n                params.forEach((col) => {\n                    return cols.push(col.ext);\n                });\n                const fields = c.fieldArray(this.form, cols);\n                return set(this, 'calFields', fields);\n            }\n        },\n\n        remove(record) {\n            /* eslint-disable ember/named-functions-in-promises */\n            return this.dialogs.confirm(this.intl.t('general.remove_row')).then(function (con) {\n                if (con) {\n                    return record.destroyRecord();\n                }\n            });\n        },\n\n        eventDropped(day, event) {\n            const c = this.Collector;\n            const [id, model] = Array.from(event.split(':'));\n            const dropped_record = this.store.peekRecord(model, id);\n            if (get(dropped_record, 'date') === day || get(dropped_record, 'startdate') === day) {\n                return;\n            }\n\n            const record = c.copyRecord(dropped_record);\n            if (model === 'abcense') {\n                set(record, 'startdate', day);\n                set(record, 'enddate', day);\n            } else {\n                set(record, 'date', day);\n            }\n            /* eslint-disable ember/named-functions-in-promises */\n            return record\n                .save()\n                .then((row) => {\n                    return row.reload();\n                })\n                .catch((row) => {\n                    let msg = '<h4>' + this.intl.t('worktime.calendar.error') + '</h4><br>';\n                    if (this.intl.exists('worktime.calendar.error_type.' + row.errors.error)) {\n                        msg += this.intl.t('worktime.calendar.error_type.' + row.errors.error);\n                    } else if (this.intl.exists('errors.' + row.errors.error)) {\n                        msg += this.intl.t('errors.' + row.errors.error);\n                    } else {\n                        msg += row.errors.error_msg;\n                    }\n                    record.destroyRecord();\n                    return this.dialogs.alert(msg);\n                });\n        },\n    },\n});\n\nexport default WorktaskCalendarController;\n","import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport Route from '@ember/routing/route';\nimport initRoute from 'tt4/mixins/init-route';\nimport { isEmpty, isPresent } from '@ember/utils';\nimport { inject as service } from '@ember/service';\nimport { set, get } from '@ember/object';\nimport moment from 'moment';\n\nconst WorktaskCalendarRoute = Route.extend(AuthenticatedRouteMixin, initRoute, {\n    tools: service(),\n\n    Collector: service('collector-service'),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        customer: {\n            refreshModel: true,\n        },\n        more: {\n            refreshModel: true,\n        },\n    },\n\n    form: 'worktask',\n    more: null,\n\n    model(params) {\n        if (!params.date) params.date = this._defaultDateRange();\n\n        let split_date = params.date.split('_');\n\n        params.sideload = [\n            'project.name',\n            'project.id',\n            'user.firstname',\n            'user.lastname',\n            'user.image',\n        ];\n\n        delete params.page;\n        // check if more-param is present, parse it correctly and finally remove it from params\n        if (params.more != null) {\n            params.more.split('|').forEach(function (param) {\n                const splitted = param.split(':');\n                if (splitted[0].includes('-')) {\n                    if (isPresent(splitted[1])) {\n                        const split = splitted[0].split('-');\n                        if (isEmpty(params[split[0]])) {\n                            return (params[split[0]] = { [split[1]]: splitted[1] });\n                        }\n                    }\n                } else {\n                    return (params[splitted[0]] = splitted[1]);\n                }\n            });\n            set(this, 'more', params.more);\n        } else {\n            set(this, 'more', null);\n        }\n\n        if (params != null && params['more']) {\n            delete params['more'];\n        }\n\n        params.limit = \"all\";\n\n        this.store.query('worktask', params);\n        if (this.Collector.testNeedsOne('abcense')) {\n            const absenceParams = Object.assign({}, params);\n            if (absenceParams.order != null && absenceParams.order.indexOf('date') > -1) {\n                absenceParams.order = absenceParams.order.replace('date', 'startdate');\n            }\n            delete absenceParams.project;\n            delete absenceParams.customer;\n            for (let param in absenceParams) {\n                if (!this.Collector.fieldExists('abcense', param)) {\n                    delete absenceParams[param];\n                }\n            }\n            absenceParams.sideload = [\n                'user.firstname',\n                'user.lastname',\n                'user.image',\n                'abcensetype.name',\n            ];\n            delete absenceParams.date;\n            absenceParams.startdate =\n                moment(split_date[0]).subtract(36, 'days').format('YYYY-MM-DD') +\n                '_' +\n                split_date[1];\n            this.store.query('abcense', absenceParams);\n        }\n\n        return this.store.peekAll('worktask');\n    },\n\n    setupController(controller, model) {\n        this._super(controller, model);\n\n        // Sync controller.date\n        if (!get(controller, 'date')) {\n                set(controller, 'date', this._defaultDateRange());\n        }\n\n\n        if (get(this, 'more')) {\n            return get(this, 'more')\n                .split('|')\n                .forEach(function (param) {\n                    const splitted = param.split(':');\n                    return set(controller, splitted[0], splitted[1]);\n                });\n        }\n    },\n\n    _defaultDateRange() {\n        const start = moment().startOf('week').format('YYYY-MM-DD');\n        const end = moment().endOf('week').format('YYYY-MM-DD');\n        // two weeks range (Previous week + current week)\n        const previousWeekStart = moment(start).subtract(7, 'days').format('YYYY-MM-DD');\n        return `${previousWeekStart}_${end}`;\n    },\n});\n\nexport default WorktaskCalendarRoute;\n","export default Ember.HTMLBars.template({\"id\":\"Kuk1cYGR\",\"block\":\"{\\\"symbols\\\":[\\\"day\\\",\\\"index\\\",\\\"specialDay\\\",\\\"row\\\",\\\"row\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"form-column-selector\\\",null,[[\\\"form\\\",\\\"shownColumns\\\",\\\"localStorageKey\\\",\\\"bubbleActions\\\"],[[24,[\\\"form\\\"]],[24,[\\\"shownColumns\\\"]],\\\"worktaskcalendar_defaultColumns\\\",\\\"catchActions\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"calendar-report\\\",null,[[\\\"hideDateRangePicker\\\",\\\"date\\\",\\\"user\\\"],[true,[24,[\\\"date\\\"]],[24,[\\\"user\\\"]]]],{\\\"statements\\\":[[4,\\\"draggable-dropzone\\\",null,[[\\\"dropped\\\",\\\"class\\\",\\\"tagName\\\",\\\"data-field\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"eventDropped\\\",[23,1,[]]],null],\\\"draggable-calendar-day\\\",\\\"div\\\",[23,1,[\\\"date\\\"]]]],{\\\"statements\\\":[[4,\\\"calendar-report-day\\\",null,[[\\\"day\\\",\\\"specialDay\\\"],[[23,1,[]],[23,3,[]]]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"calendar-report-add\\\",null,[[\\\"click\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"openWorktaskModal\\\",[23,1,[]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"calendar-card-multi-day\\\",null,[[\\\"index\\\",\\\"date\\\",\\\"data\\\",\\\"day\\\",\\\"fields\\\",\\\"date_field\\\",\\\"classNames\\\",\\\"randomColor\\\",\\\"onclick\\\"],[[23,2,[]],[24,[\\\"date\\\"]],[24,[\\\"filteredModelManyDays\\\"]],[23,1,[]],[24,[\\\"multiDayFields\\\"]],\\\"date\\\",\\\"worktask-calendar-card\\\",[24,[\\\"colorFrom\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"openEditor\\\"],null]]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[4,\\\"calendar-card-multi-day\\\",null,[[\\\"index\\\",\\\"date\\\",\\\"data\\\",\\\"day\\\",\\\"fields\\\",\\\"date_field\\\",\\\"classNames\\\",\\\"randomColor\\\",\\\"onclick\\\"],[[23,2,[]],[24,[\\\"date\\\"]],[24,[\\\"filteredAbsencesManyDays\\\"]],[23,1,[]],[24,[\\\"multiDayAbsenceFields\\\"]],\\\"startdate\\\",\\\"worktask-calendar-card\\\",[24,[\\\"absenceColorFrom\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"openEditorAbsence\\\"],null]]],{\\\"statements\\\":[],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"calendar-card-v2\\\",null,[[\\\"data\\\",\\\"day\\\",\\\"fields\\\",\\\"date_field\\\",\\\"classNames\\\",\\\"topImage\\\",\\\"onclick\\\",\\\"remove\\\"],[[24,[\\\"filteredModelOneDay\\\"]],[23,1,[]],[24,[\\\"calFields\\\"]],\\\"date\\\",\\\"worktask-calendar-card\\\",\\\"user-image\\\",[28,\\\"action\\\",[[23,0,[]],\\\"openEditor\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"remove\\\"],null]]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[28,\\\"concat\\\",[[23,5,[\\\"id\\\"]],\\\":\\\",[23,5,[\\\"_internalModel\\\",\\\"modelName\\\"]]],null],\\\"draggable-calendar-day-item\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,5,[\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[23,5,[]],\\\"status\\\"],null],\\\"fixed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worktask-calendar-status\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CheckedCircle\\\"],[8],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"abcense\\\"],null]],null,{\\\"statements\\\":[[4,\\\"calendar-card-v2\\\",null,[[\\\"data\\\",\\\"day\\\",\\\"fields\\\",\\\"date_field\\\",\\\"classNames\\\",\\\"topImage\\\",\\\"onclick\\\",\\\"remove\\\"],[[24,[\\\"filteredAbsencesOneDay\\\"]],[23,1,[]],[24,[\\\"oneDayAbsenceFields\\\"]],\\\"startdate\\\",\\\"worktask-calendar-card\\\",\\\"user-image\\\",[28,\\\"action\\\",[[23,0,[]],\\\"openEditorAbsence\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"remove\\\"],null]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"draggable-item\\\",null,[[\\\"content\\\",\\\"class\\\"],[[28,\\\"concat\\\",[[23,4,[\\\"id\\\"]],\\\":\\\",[23,4,[\\\"_internalModel\\\",\\\"modelName\\\"]]],null],\\\"draggable-calendar-day-item\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,4,[\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get\\\",[[23,4,[]],\\\"status\\\"],null],\\\"fixed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worktask-calendar-status\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CheckedCircle\\\"],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2,3]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worktasks/calendar/template.hbs\"}});","import { computed, set } from '@ember/object';\nimport { copy } from 'ember-copy';\nimport { isEmpty } from '@ember/utils';\nimport Controller from '@ember/controller';\nimport { later } from '@ember/runloop';\nimport { inject as service } from '@ember/service';\n\nconst WorktasksConfirmController = Controller.extend({\n    Collector: service('collector-service'),\n    gui: service(),\n\n    imagesField: computed('model.photos.[]', function () {\n        const field = this.Collector.field('worktask', 'photos');\n        field.value = this.model.photos;\n        return field;\n    }),\n\n    commentsField: computed(function () {\n        return this.Collector.field('worktask', 'comments');\n    }),\n\n    signatureField: computed(function () {\n        return this.Collector.field('worktask', 'signature');\n    }),\n\n    hoursField: computed('hours', function () {\n        /* eslint-disable ember/no-side-effects */\n        set(this, 'model.hours', this.model.est_hours);\n        const field = this.Collector.field('worktask', 'hours');\n        //field['value'] = @get 'hours'\n        return field;\n    }),\n\n    hasSignature: computed('model.signature', 'signature', function () {\n        if (!isEmpty(this.model.signature) || this.signature) {\n            return true;\n        }\n        return false;\n    }),\n\n    ownFields: computed(function () {\n        const c = this.Collector;\n        return c.fieldArray('worktask').filter((field) => {\n            return field.name.substring(0, 6) === 'addon_';\n        });\n    }),\n\n    actions: {\n        close() {\n            set(this, 'showModal', false);\n            return set(this, 'model.status', 'open');\n        },\n\n        setFixed() {\n            const model = this.model;\n            //model.set 'hours', @get('hours')\n            set(model, 'status', 'fixed');\n            if (this.ownFields.length > 0) {\n                set(this, 'showModal', true);\n                return false;\n            } else {\n                /* eslint-disable */\n                return model.save().then(() => {\n                    return this.send('cleanAndMoveOn');\n                });\n            }\n        },\n\n        cleanAndMoveOn() {\n            set(this, 'showModal', false);\n            set(this, 'comments', false);\n            set(this, 'signature', false);\n            return this.transitionToRoute('worktasks.list');\n        },\n\n        setImages(images) {\n            return set(this, 'model.photos', images);\n        },\n\n        toggleComment() {\n            this.toggleProperty('comments');\n            later(\n                this,\n                () => document.getElementsByClassName('confirm-extra-comments-textarea')[0].focus(),\n                500,\n            );\n            return false;\n        },\n        toggleSignature() {\n            this.toggleProperty('signature');\n            return false;\n        },\n\n        setComment(value) {\n            return set(this, 'model.comments', value);\n        },\n\n        setSignature(value) {\n            return set(this, 'model.signature', value);\n        },\n    },\n    filterOwnFields(field) {\n        if (field.name.substring(0, 6) !== 'addon_') {\n            const features = copy(field.features);\n            features.hide = true;\n            field.features = features;\n        }\n        return field;\n    },\n});\n\nexport default WorktasksConfirmController;\n","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nconst WorktasksConfirmRoute = Route.extend(AuthenticatedRouteMixin, {\n    model(params) {\n        if (params.id) {\n            return this.store.findRecord('worktask', params.id, { include: true });\n        } else {\n            return this.transitionTo('worktask.list');\n        }\n    },\n});\n\nexport default WorktasksConfirmRoute;\n","export default Ember.HTMLBars.template({\"id\":\"BdrYj00M\",\"block\":\"{\\\"symbols\\\":[\\\"component\\\",\\\"type\\\",\\\"photo\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"task-confirm-container \\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"isSafari\\\"]],\\\"isMobileSafari\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-circle-button\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"confirm-text\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktask.confirm.congratulations\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"hours-input\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worktask.confirm.hours_input\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[0,\\\"        \\\"],[1,[28,\\\"collector/field-comp\\\",[[24,[\\\"hoursField\\\"]]],[[\\\"class\\\",\\\"model\\\"],[\\\"add-fields\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra-photos\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"model\\\",\\\"photos\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra-photo\\\"],[11,\\\"style\\\",[29,[\\\"background-image: url('\\\",[28,\\\"if\\\",[[23,3,[\\\"thumb\\\"]],[28,\\\"api-image\\\",[[23,3,[\\\"thumb\\\"]]],null],[23,3,[\\\"preview\\\"]]],null],\\\"')\\\"]]],[8],[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra-buttons\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"collector/fields/fileupload-field-ver3\\\",null,[[\\\"field\\\",\\\"bubbleChange\\\",\\\"model\\\"],[[24,[\\\"imagesField\\\"]],\\\"setImages\\\",[24,[\\\"model\\\"]]]],{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[]],\\\"preview\\\"],null]],null,{\\\"statements\\\":[],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Camera\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"addFile\\\"],[[\\\"target\\\"],[[23,1,[]]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1,2]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Comments\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleComment\\\"]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worktask.signature\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Signature\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleSignature\\\"]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"comments\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra-comments\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"collector/fields/textarea-field\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"bubbleChange\\\",\\\"model\\\"],[[24,[\\\"commentsField\\\"]],\\\"add-fields confirm-extra-comments-textarea\\\",\\\"setComment\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasSignature\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-extra-signature\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/fields/signature-field\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"bubbleChange\\\",\\\"model\\\",\\\"showModal\\\"],[[24,[\\\"signatureField\\\"]],\\\"add-fields\\\",\\\"setSignature\\\",[24,[\\\"model\\\"]],[24,[\\\"signature\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"confirm-buttons\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"setFixed\\\"]],[8],[4,\\\"if\\\",[[24,[\\\"model\\\",\\\"isSaving\\\"]]],null,{\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"worktask.confirm.continue\\\"],null],false]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"route\\\"],[\\\"div\\\",\\\"worktasks.list\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-UndoReturn\\\"],[8],[9],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"worktask.confirm.undo\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"worktasks.modal.header\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"close\\\"],null]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"form\\\",\\\"record_id\\\",\\\"cancelClicked\\\",\\\"recordSaved\\\",\\\"returnField\\\"],[\\\"worktask\\\",[24,[\\\"model\\\",\\\"id\\\"]],\\\"close\\\",\\\"cleanAndMoveOn\\\",[24,[\\\"filterOwnFields\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worktasks/confirm/template.hbs\"}});","import GeneralAddController from 'tt4/controllers/general-add';\nimport { A } from '@ember/array';\n\nconst WorktasksEditController = GeneralAddController.extend({\n    edit: true,\n    fieldSettings: A({\n        edit: true,\n    }),\n});\n\nexport default WorktasksEditController;\n","import GeneralAddRoute from 'tt4/routes/general-add';\n\nconst WorktasksEditRoute = GeneralAddRoute.extend({\n    controllerName: 'worktasks.edit',\n    modelName: 'worktask',\n    edit: true,\n    afterSave: 'worktasks.index',\n});\n\nexport default WorktasksEditRoute;\n","export default Ember.HTMLBars.template({\"id\":\"U4jClvqx\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/pods/worktasks/edit/template.hbs\"}});","import Controller from '@ember/controller';\nimport { set, computed, get } from '@ember/object';\nimport { alias } from '@ember/object/computed';\nimport moment from 'moment';\nimport EmberObject from '@ember/object';\nimport { A } from '@ember/array';\nimport { inject as service } from '@ember/service';\n\nexport default Controller.extend({\n    gui: service(),\n    queryParams: ['date', 'user', 'page', 'group', 'employer', 'worktimegroup', 'project'],\n    form: 'worktask',\n    user: null,\n    limit: 25,\n    page: 1,\n    group: null,\n    employer: null,\n    worktimegroup: null,\n    project: null,\n    localStorageKey: 'worktaskganttcalendar_defaultColumns',\n    users: alias('model.users'),\n    unFilteredModel: alias('model.worktasks'),\n    calendarRows: computed('model.worktasks.@each.{date,est_hours,project}', function () {\n        if (get(this, 'model.users') && get(this, 'model.users').length !== 0) {\n            let mapped = this.mapTasks(get(this, 'model.worktasks'), get(this, 'model.users'));\n            return mapped.tasks;\n        }\n        return null;\n    }),\n    pageCount: computed('users', 'limit', function () {\n        return Math.ceil(get(this, 'users.meta.count') / get(this, 'limit'));\n    }),\n\n    filters: computed(function () {\n        return A([\n            EmberObject.create({\n                field: 'date',\n                type: 'date',\n                form: 'worktask',\n                name: 'date',\n                value: get(this, 'date'),\n            }),\n            EmberObject.create({\n                field: 'user',\n                type: 'database',\n                form: 'worktask',\n                name: 'user',\n                value: get(this, 'user'),\n            }),\n            EmberObject.create({\n                field: 'project',\n                type: 'database',\n                form: 'worktask',\n                name: 'project',\n                value: get(this, 'project'),\n            }),\n\n            EmberObject.create({\n                field: 'group',\n                type: 'database',\n                form: 'user',\n                name: 'group',\n                value: get(this, 'group'),\n                extra: true,\n            }),\n            EmberObject.create({\n                field: 'employer',\n                type: 'database',\n                form: 'user',\n                name: 'employer',\n                value: get(this, 'employer'),\n                extra: true,\n            }),\n            EmberObject.create({\n                field: 'worktimegroup',\n                type: 'database',\n                form: 'user',\n                name: 'worktimegroup',\n                value: get(this, 'worktimegroup'),\n                extra: true,\n            }),\n        ]);\n    }),\n    actions: {\n        filterChanged(value, field) {\n            if (['group', 'employer', 'worktimegroup'].includes(field)) {\n                if (value) {\n                    value = get(value, 'id');\n                } else {\n                    value = null;\n                }\n            }\n            set(this, field, value);\n        },\n\n        catchActions(action, params) {\n            var c, cols, fields;\n            if (action === 'fieldsUpdate') {\n                c = get(this, 'Collector');\n                cols = [];\n                params.forEach(function (col) {\n                    return cols.push(col.ext);\n                });\n                fields = c.fieldArray(get(this, 'form'), cols);\n                return set(this, 'ganttFields', fields);\n            }\n        },\n\n        openWorktaskModal(day, user) {\n            let params = { date: day, user: user };\n            this.store.createRecord('worktask', params);\n            this.transitionToRoute({ queryParams: { modal: ['worktask', 'new'] } });\n        },\n\n        openEditor(row) {\n            this.transitionToRoute({ queryParams: { modal: ['worktask', get(row, 'id')] } });\n        },\n    },\n\n    mapTasks(tasks, users) {\n        let ret = A([]);\n        users.forEach((user) => {\n            //console.log(user);\n            let rows = this.perDate(tasks.filterBy('user.id', get(user, 'id')));\n            ret.push(\n                EmberObject.create({\n                    main: user,\n                    rows: rows,\n                }),\n            );\n        });\n        return { tasks: ret, users: users };\n    },\n\n    perDate(rows) {\n        let perDate = {};\n        rows.forEach((item) => {\n            const date = get(item, 'date');\n            if (!perDate[date]) {\n                perDate[date] = [];\n            }\n            if (get(item, 'enddate')) {\n                let i = 1;\n                const moment_date = moment(date);\n                const diff = moment(get(item, 'enddate')).diff(moment_date, 'day');\n                perDate[date].push(item);\n                while (i <= diff) {\n                    const new_date = moment_date.add(1, 'day').format('YYYY-MM-DD');\n                    if (!perDate[new_date]) {\n                        perDate[new_date] = [];\n                    }\n                    perDate[new_date].push(item);\n                    i++;\n                }\n            } else {\n                perDate[date].push(item);\n            }\n        });\n        return perDate;\n    },\n\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().startOf('week').add(8, 'weeks').format('YYYY-MM-DD'),\n});\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport RSVP from 'rsvp';\n\nexport default Route.extend({\n    store: service(),\n    collector: service('collector-service'),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        page: {\n            refreshModel: true,\n        },\n        group: {\n            refreshModel: true,\n        },\n        employer: {\n            refreshModel: true,\n        },\n        worktimegroup: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n    },\n    model(params) {\n        const c = get(this, 'collector');\n        const userParams = { offset: params.page === 1 ? 0 : 25 * (params.page - 1) };\n        Object.keys(params).forEach((item) => {\n            if (item === 'user' && params.user) {\n                userParams.id = params.user;\n            } else if (c.testNeedsOne('user.' + item)) {\n                userParams[item] = params[item];\n            }\n        });\n        let users = [];\n        let userPromise = get(this, 'store').query(\n            'user',\n            Object.assign({ limit: 25 }, userParams),\n        );\n\n        userPromise.then((queryUsers) => {\n            users = queryUsers;\n        });\n        //.then((tasks) => resolve(this.mapTasks(tasks, users)));\n\n        return RSVP.hash({\n            users: userPromise,\n            worktasks: this.fetchWorktasks(users, params),\n        });\n    },\n    fetchWorktasks(users, params) {\n        return get(this, 'store').query('worktask', {\n            user: users.mapBy('id').join(','),\n            date: params.date,\n            project: params.project,\n            order: 'date',\n        });\n    },\n});\n","export default Ember.HTMLBars.template({\"id\":\"XF6z3Off\",\"block\":\"{\\\"symbols\\\":[\\\"calendar\\\",\\\"row\\\",\\\"cell\\\",\\\"title\\\"],\\\"statements\\\":[[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"customFullScreen\\\"]],\\\"report-main-zoomed\\\"],null],\\\" gantt-calendar\\\"]]],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"form-column-selector\\\",null,[[\\\"form\\\",\\\"shownColumns\\\",\\\"localStorageKey\\\",\\\"fullscreenmode\\\",\\\"bubbleActions\\\"],[[24,[\\\"form\\\"]],[24,[\\\"shownColumns\\\"]],\\\"worktaskganttcalendar_defaultColumns\\\",\\\"custom\\\",\\\"catchActions\\\"]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"calendar-compact\\\",null,[[\\\"data\\\",\\\"range\\\"],[[24,[\\\"calendarRows\\\"]],[24,[\\\"date\\\"]]]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[23,1,[\\\"months-header\\\"]],false],[0,\\\"\\\\n        \\\"],[1,[23,1,[\\\"weeks-header\\\"]],false],[0,\\\"\\\\n        \\\"],[1,[23,1,[\\\"days-header\\\"]],false],[0,\\\"\\\\n\\\"],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,1,[\\\"row\\\"]],\\\"expected `calendar.row` to be a contextual component but found a string. Did you mean `(component calendar.row)`? ('tt4/pods/worktasks/gantt/template.hbs' @ L9:C11) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"title\\\"]],\\\"expected `row.title` to be a contextual component but found a string. Did you mean `(component row.title)`? ('tt4/pods/worktasks/gantt/template.hbs' @ L10:C15) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"user-icon\\\",[[23,4,[\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],[[\\\"size\\\",\\\"inline\\\"],[\\\"sm\\\",true]]],false],[0,\\\" \\\"],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"user\\\",\\\"worktask\\\",[23,4,[]]]]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,2,[\\\"cell\\\"]],\\\"expected `row.cell` to be a contextual component but found a string. Did you mean `(component row.cell)`? ('tt4/pods/worktasks/gantt/template.hbs' @ L13:C15) \\\"],null]],null,{\\\"statements\\\":[[4,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"bar\\\"]],\\\"expected `cell.bar` to be a contextual component but found a string. Did you mean `(component cell.bar)`? ('tt4/pods/worktasks/gantt/template.hbs' @ L14:C19) \\\"],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[4,\\\"if\\\",[[23,3,[\\\"rows\\\",\\\"firstObject\\\",\\\"est_hours\\\"]]],null,{\\\"statements\\\":[[1,[28,\\\"format-hours\\\",[[28,\\\"sum-field\\\",null,[[\\\"field\\\",\\\"rows\\\"],[[28,\\\"hash\\\",null,[[\\\"type\\\",\\\"name\\\"],[\\\"hours\\\",\\\"est_hours\\\"]]],[23,3,[\\\"rows\\\"]]]]]],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"popover-content-fields\\\"]],\\\"expected `cell.popover-content-fields` to be a contextual component but found a string. Did you mean `(component cell.popover-content-fields)`? ('tt4/pods/worktasks/gantt/template.hbs' @ L17:C18) \\\"],null]],[[\\\"fields\\\",\\\"onEdit\\\",\\\"form\\\"],[[24,[\\\"ganttFields\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"openEditor\\\"],null],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[1,[28,\\\"component\\\",[[28,\\\"-assert-implicit-component-helper-argument\\\",[[23,3,[\\\"plus-button\\\"]],\\\"expected `cell.plus-button` to be a contextual component but found a string. Did you mean `(component cell.plus-button)`? ('tt4/pods/worktasks/gantt/template.hbs' @ L18:C18) \\\"],null]],[[\\\"onAdd\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"openWorktaskModal\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n    \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"limit\\\"]],[24,[\\\"page\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worktasks/gantt/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"gHf8XzVh\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/history-comp\\\",null,[[\\\"row\\\",\\\"form\\\"],[[24,[\\\"model\\\",\\\"id\\\"]],\\\"worktasks\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worktasks/history/template.hbs\"}});","import Controller from '@ember/controller';\nimport { computed, get } from '@ember/object';\n\nconst WorktaskListController = Controller.extend({\n    queryParams: ['date'],\n    today_show: true,\n\n    overdueTasks: computed('model', function () {\n        return this.model.filter((task) => {\n            return (\n                get(task, 'date') < moment().format('YYYY-MM-DD') && get(task, 'status') === 'open'\n            );\n        });\n    }),\n\n    todayTasks: computed('model', function () {\n        return this.model.filter((task) => {\n            return get(task, 'date') === moment().format('YYYY-MM-DD');\n        });\n    }),\n\n    futureTasks: computed('model', function () {\n        return this.model.filter((task) => {\n            return get(task, 'date') > moment().format('YYYY-MM-DD');\n        });\n    }),\n\n    actions: {\n        toggle(panel) {\n            if (panel === 'future') {\n                this.toggleProperty('future_show');\n            } else {\n                this.toggleProperty('today_show');\n            }\n            return false;\n        },\n    },\n    date:\n        moment().subtract(1, 'month').format('YYYY-MM-DD') +\n        '_' +\n        moment().add(1, 'month').format('YYYY-MM-DD'),\n});\n\nexport default WorktaskListController;\n","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport { inject as service } from '@ember/service';\n\nconst WorktaskIndexRoute = Route.extend(AuthenticatedRouteMixin, {\n    session: service(),\n    model(params) {\n        params.sideload = true;\n        params.user = this.session.currentUser.id;\n        params.order = 'date';\n        if (this.Collector.fieldExists('worktask', 'starttime')) {\n            params.order = 'date,starttime';\n        }\n        return this.store.query('worktask', params);\n    },\n});\n\nexport default WorktaskIndexRoute;\n","export default Ember.HTMLBars.template({\"id\":\"zbSazL7e\",\"block\":\"{\\\"symbols\\\":[\\\"task\\\",\\\"task\\\",\\\"task\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"task-list-container\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"task-list-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktasks.list.today\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"overdueTasks\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"task-list-item\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"span\\\",[28,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"status\\\"]],\\\"open\\\"],null],\\\"circle-accepted task-list-item-circle-button\\\",\\\"task-list-item-circle-button overdue\\\"],null],\\\"worktasks.confirm\\\",[23,3,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark big-icon\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"div\\\",\\\"task-list-item-content\\\",\\\"worktasks.view\\\",[23,3,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"header\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[23,3,[\\\"name\\\"]],false],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"date\\\",\\\"worktask\\\",[23,3,[\\\"date\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,3,[\\\"starttime\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"starttime\\\",\\\"worktask\\\",[23,3,[\\\"starttime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[23,3,[\\\"project\\\"]],\\\"project\\\",\\\"worktask\\\"]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[23,3,[\\\"est_hours\\\"]],\\\"est_hours\\\",\\\"worktask\\\"]]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"task-list-item-info\\\",\\\"worktasks.view\\\",[23,3,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[4,\\\"each\\\",[[24,[\\\"todayTasks\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"task-list-item\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"span\\\",[28,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"status\\\"]],\\\"open\\\"],null],\\\"circle-accepted task-list-item-circle-button\\\",\\\"task-list-item-circle-button\\\"],null],\\\"worktasks.confirm\\\",[23,2,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark big-icon\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"div\\\",\\\"task-list-item-content\\\",\\\"worktasks.view\\\",[23,2,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"header\\\"],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,2,[\\\"starttime\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"starttime\\\",\\\"worktask\\\",[23,2,[\\\"starttime\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[23,2,[\\\"project\\\"]],\\\"project\\\",\\\"worktask\\\"]]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[23,2,[\\\"est_hours\\\"]],\\\"est_hours\\\",\\\"worktask\\\"]]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"task-list-item-info\\\",\\\"worktasks.view\\\",[23,2,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"    \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"task-list-header\\\"],[8],[1,[28,\\\"t\\\",[\\\"worktasks.list.future\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"futureTasks\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"task-list-item\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"span\\\",[28,\\\"unless\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"status\\\"]],\\\"open\\\"],null],\\\"circle-accepted task-list-item-circle-button\\\",\\\"task-list-item-circle-button\\\"],null],\\\"worktasks.confirm\\\",[23,1,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark big-icon\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"div\\\",\\\"task-list-item-content\\\",\\\"worktasks.view\\\",[23,1,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"header\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"date\\\",\\\"worktask\\\",[23,1,[\\\"date\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"starttime\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[\\\"starttime\\\",\\\"worktask\\\",[23,1,[\\\"starttime\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[23,1,[\\\"project\\\"]],\\\"project\\\",\\\"worktask\\\"]]],false],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"collector-value-format\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"form\\\"],[[23,1,[\\\"est_hours\\\"]],\\\"est_hours\\\",\\\"worktask\\\"]]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"task-list-item-info\\\",\\\"worktasks.view\\\",[23,1,[]]]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Info\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worktasks/list/template.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"4IpXncZ0\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"loader-icon\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worktasks/loading/template.hbs\"}});","import { typeOf } from '@ember/utils';\nimport GeneralReportController from 'tt4/controllers/general-report';\nimport EmberObject from '@ember/object';\nimport { computed, set } from '@ember/object';\nimport { A } from '@ember/array';\n\nconst WorktaskReportController = GeneralReportController.extend({\n    queryParams: ['project', 'user', 'date', 'q'],\n\n    form: 'worktask',\n    status: 'all',\n    showColumns: null,\n\n    init() {\n        this._super(...arguments);\n        this.showColumns = ['date', 'project', 'user', 'est_hours', 'hours', 'notes', 'files'];\n    },\n\n    settings: EmberObject.create({\n        rowSettings: EmberObject.create({\n            //            hideActions: true\n            editRoute: {\n                modal: true,\n            },\n        }),\n        massedit: true,\n        sortByColumn: 'date-',\n    }),\n\n    filters: computed(function () {\n        return A([\n            EmberObject.create({ field: 'date' }),\n            EmberObject.create({ field: 'project' }),\n            EmberObject.create({ field: 'user' }),\n            EmberObject.create({ type: 'searchbox', bindto: 'q' }),\n        ]);\n    }),\n\n    actions: {\n        filterChangeAction(value, field) {\n            if (typeOf(value) === 'object' || typeOf(value) === 'instance') {\n                return set(this, field, value.id);\n            } else {\n                return set(this, field, value);\n            }\n        },\n    },\n    date:\n        moment().startOf('week').format('YYYY-MM-DD') +\n        '_' +\n        moment().endOf('week').format('YYYY-MM-DD'),\n});\n\nexport default WorktaskReportController;\n","import GeneralReportRoute from 'tt4/routes/general-report';\nimport { inject as service } from '@ember/service';\nimport { set } from '@ember/object';\n\nconst WorktaskReportRoute = GeneralReportRoute.extend({\n    flags: service(),\n    queryParams: {\n        date: {\n            refreshModel: true,\n        },\n        status: {\n            refreshModel: true,\n        },\n        project: {\n            refreshModel: true,\n        },\n        user: {\n            refreshModel: true,\n        },\n        q: {\n            refreshModel: true,\n        },\n    },\n    form: 'worktask',\n\n    model(params) {\n        params = this._super(params);\n\n        if (!this.flags.test('ember-movenium-form-report-worktasks')) {\n            params.sideload = true;\n            return this.store.query('worktask', params);\n        } else {\n            if (params.page) {\n                delete params.page;\n            }\n            return set(this.controllerFor('worktasks.report'), 'qParams', params);\n        }\n    },\n});\n\nexport default WorktaskReportRoute;\n","export default Ember.HTMLBars.template({\"id\":\"T5P9/i6V\",\"block\":\"{\\\"symbols\\\":[\\\"Report\\\",\\\"Table\\\",\\\"TableAction\\\",\\\"More\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"ember-movenium-form-report-worktasks\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/form-report\\\",[],[[\\\"@form\\\",\\\"@filterByValues\\\",\\\"@additional\\\",\\\"@filter\\\",\\\"@filterChangeAction\\\"],[\\\"worktask\\\",[23,0,[\\\"qParams\\\"]],\\\"user.worktimegroup,user.employer\\\",[28,\\\"hash\\\",null,[[\\\"date\\\"],[[23,0,[\\\"date\\\"]]]]],[28,\\\"action\\\",[[23,0,[]],\\\"filterChangeAction\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"Table\\\"]],[],[[\\\"@selectable\\\"],[true]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"Actions\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Approve\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"More\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Status\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Lock\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Massedit\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"Remove\\\"]],[],[[],[]]],[0,\\\"\\\\n                    \\\"],[6,[23,4,[\\\"QrCode\\\"]],[],[[\\\"@editRoute\\\"],[\\\"/worktasks/report?modal=worktask%2C\\\"]]],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n                \\\"],[2,\\\"TableAction.TemplateSelector /\\\"],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"InlineEdit\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"PdfExport\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ColumnSelector\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"ExportMore\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Refresh\\\"]],[],[[],[]]],[0,\\\"\\\\n                \\\"],[6,[23,3,[\\\"Info\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"RowActions\\\"]],[],[[],[]]],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"NoContent\\\"]],[],[[],[]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"report-filters\\\",null,[[\\\"filters\\\",\\\"status\\\",\\\"form\\\",\\\"filterValueChanged\\\"],[[24,[\\\"filters\\\"]],[24,[\\\"status\\\"]],[24,[\\\"form\\\"]],\\\"filterChanged\\\"]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"general-report\\\",null,[[\\\"bubbleTransition\\\",\\\"form\\\",\\\"content\\\",\\\"showColumns\\\",\\\"offset\\\",\\\"page\\\",\\\"settings\\\",\\\"status\\\"],[\\\"bubbleTransition\\\",[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"showColumns\\\"]],[24,[\\\"offset\\\"]],[24,[\\\"page\\\"]],[24,[\\\"settings\\\"]],[24,[\\\"status\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worktasks/report/template.hbs\"}});","import Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Route.extend({\n    gui: service(),\n    AuthenticatedRouteMixin,\n\n    beforeModel(transition) {\n        if (transition.targetName === 'worktask.list' && !get(this, 'gui.isBelowMd')) {\n            transition.abort();\n            this.transitionTo('worktask.calendar');\n        }\n    },\n});\n","import Controller from '@ember/controller';\nimport localization from 'tt4/classes/localization';\nimport { inject as service } from '@ember/service';\nimport { computed, set } from '@ember/object';\nimport { alias } from '@ember/object/computed';\n\nconst WorktasksViewController = Controller.extend({\n    Collector: service('collector-service'),\n    gui: service(),\n    manualFormat: null,\n    editable: null,\n    icons: null,\n\n    init() {\n        this._super(...arguments);\n        this.manualFormat = ['date', 'est_hours'];\n        this.editable = ['signature'];\n        this.icons = {\n            date: 'Date',\n            project: 'Project',\n            est_hours: 'Timespan',\n            notes: 'Notes',\n            files: 'Pictures',\n            signature: 'Signature',\n            starttime: 'Time',\n        };\n    },\n\n    modelAlias: alias('model'),\n\n    date_formatted: computed('model.date', function () {\n        return moment(this.modelAlias.date).format('DD MMMM, YYYY');\n    }),\n\n    est_hours_formatted: computed('model.est_hours', function () {\n        return localization.formatHours(this.modelAlias.est_hours);\n    }),\n\n    fields: computed(function () {\n        const c = this.Collector;\n        const fields = c.fieldArray('worktask');\n\n        return fields.reject(\n            (field) =>\n                field.name === 'name' ||\n                field.name === 'user' ||\n                field.name === 'hours' ||\n                (field.features.hide &&\n                    typeof field.features.hide !== 'object' &&\n                    field.features.hide.condition !== 'editing'),\n        );\n    }),\n\n    actions: {\n        setFixed() {\n            set(this.modelAlias, 'status', 'fixed');\n            /* eslint-disable ember/named-functions-in-promises */\n            return this.modelAlias.save().then(() => {\n                return this.transitionToRoute('worktasks.list');\n            });\n        },\n\n        saveField(value, field) {\n            if (field.name !== 'involved') {\n                set(this, 'modelAlias.' + field.name, value);\n            }\n\n            return this.modelAlias.save();\n        },\n    },\n});\n\nexport default WorktasksViewController;\n","import AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport Route from '@ember/routing/route';\nconst WorktasksViewRoute = Route.extend(AuthenticatedRouteMixin, {\n    model(params) {\n        if (params.id) {\n            params.sideload = true;\n            return this.store.findRecord('worktask', params.id, { include: true });\n        } else {\n            return this.transitionTo('worktask.list');\n        }\n    },\n});\n\nexport default WorktasksViewRoute;\n","export default Ember.HTMLBars.template({\"id\":\"cmPsrfgM\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"task-edit-container \\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"isSafari\\\"]],\\\"isMobileSafari\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"header-container\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"header-picture\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url(\\\",[28,\\\"api-image\\\",[[24,[\\\"model\\\",\\\"files\\\",\\\"firstObject\\\",\\\"url\\\"]]],null],\\\")\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"route\\\"],[\\\"back-arrow\\\",\\\"worktasks.list\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Back\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"header-text\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"worktask\\\",\\\"name\\\",[28,\\\"get\\\",[[24,[\\\"model\\\"]],\\\"name\\\"],null]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overlay\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"field-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[24,[\\\"icons\\\"]],[23,1,[\\\"name\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"task-icon\\\"],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move move-\\\",[28,\\\"get\\\",[[23,0,[]],[28,\\\"concat\\\",[\\\"icons.\\\",[23,1,[\\\"name\\\"]]],null]],null]]]],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"label\\\",true],[10,\\\"class\\\",\\\"add-field-title task-label\\\"],[8],[1,[23,1,[\\\"translated_name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[[23,1,[\\\"name\\\"]],[24,[\\\"manualFormat\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"get\\\",[[23,0,[]],[28,\\\"concat\\\",[[23,1,[\\\"name\\\"]],\\\"_formatted\\\"],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"in-array\\\",[[23,1,[\\\"name\\\"]],[24,[\\\"editable\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/field-comp\\\",[[23,1,[]]],[[\\\"model\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],\\\"saveField\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[\\\"databasearray\\\",[23,1,[\\\"type\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\"],[\\\"worktask\\\",[23,1,[\\\"name\\\"]],[28,\\\"get\\\",[[24,[\\\"model\\\"]],[23,1,[\\\"name\\\"]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"form\\\",\\\"field\\\",\\\"value\\\",\\\"formatter\\\"],[\\\"worktask\\\",[23,1,[\\\"name\\\"]],[28,\\\"get\\\",[[24,[\\\"model\\\"]],[23,1,[\\\"name\\\"]]],null],[24,[\\\"formatter\\\"]]]]],false],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"route\\\",\\\"model\\\"],[\\\"button\\\",\\\"btn btn-block btn-m-link\\\",\\\"worktasks.confirm\\\",[24,[\\\"model\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"worktask.view.set_fixed\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/pods/worktasks/view/template.hbs\"}});","import EmberRouter from '@ember/routing/router';\nimport config from './config/environment';\n\nconst Router = EmberRouter.extend({\n    location: config.locationType,\n    rootURL: config.rootURL,\n});\n\nRouter.map(function () {\n    this.route('show', { path: 'show/:form/:id' });\n    this.route('protected');\n    this.route('login');\n    this.route('logout');\n\n    this.route('register', function () {\n        this.route('service', function () {\n            this.route('adddetails');\n            this.route('products');\n            this.route('amounts');\n            this.route('done');\n        });\n\n        this.route('user', function () {\n            this.route('code');\n            this.route('company');\n            this.route('sign-in');\n            this.route('confirm');\n            this.route('id06');\n            this.route('done');\n            this.route('info');\n        });\n    });\n\n    this.route('timetracker', function () {\n        this.route('add');\n        this.route('addsaved');\n        this.route('comp-report');\n        this.route('employer-sums');\n        this.route('timecard', function () {\n            this.route('add');\n            this.route('additional');\n        });\n        this.route('saved');\n        this.route('approval', { path: '/approve' }, function () {\n            this.route('site', { path: '/:project' }, function () {\n                this.route('user', { path: '/:user' });\n            });\n        });\n        this.route('realtime');\n        this.route('worktime-list', { path: '/list' });\n        this.route('anomalies');\n        this.route('edit', { path: 'edit/:id' });\n        this.route('history', { path: 'history/:id' });\n        this.route('week-report');\n        this.route('avi');\n        this.route('calendar');\n        this.route('bank');\n        this.route('bank_ad');\n        this.route('aggregated', function () {\n            this.route('rows', { path: '/:date' });\n        });\n        this.route('salary-category');\n    });\n\n    this.route('taxman', function () {\n        this.route('contract-list', function () {\n            this.route('add');\n            this.route('edit', { path: 'edit/:id' });\n            this.route('history', { path: 'history/:id' });\n        });\n        this.route('taxreport', function () {\n            this.route('add', { path: 'add/:month' });\n        });\n        this.route('archive');\n\n        this.route('taxreport-contract', function () {\n            this.route('add', { path: 'add/:month' });\n        });\n    });\n\n    this.route('presences', function () {\n        this.route('add');\n        this.route('accident');\n        this.route('report');\n        this.route('edit', { path: 'edit/:id' });\n        this.route('history', { path: 'history/:id' });\n        this.route('employer-sums');\n        this.route('location');\n        this.route('locationtree');\n        this.route('avi');\n    });\n\n    this.route('users', function () {\n        this.route('add', function () {\n            this.route('builder');\n            this.route('id06');\n        });\n        this.route('edit', { path: 'edit/:id' }, function () {\n            this.route('competence');\n            this.route('id06competence');\n            this.route('orientations');\n            this.route('changeusername');\n            this.route('changepassword');\n            this.route('permissions');\n            this.route('saldo');\n            this.route('saldos_ad');\n            this.route('saldohistory');\n            this.route('userdata');\n            this.route('activity');\n            this.route('superior_replacements');\n        });\n        this.route('saved');\n        this.route('history', { path: 'history/:id' });\n        this.route('card');\n        this.route('subcontractor');\n        this.route('linked');\n        this.route('inactive');\n        this.route('removed');\n        this.route('saldos');\n        this.route('saldos_ad');\n        this.route('saldohistory');\n        this.route('saldocalendar');\n        this.route('cardregister');\n        this.route('superior_replacements');\n        this.route('worktimegroup_changes');\n    });\n\n    this.route('projects', function () {\n        this.route('add');\n        this.route('saved');\n        this.route('edit', { path: 'edit/:id' }, function () {\n            this.route('project-files');\n            this.route('project-users');\n            this.route('add-file');\n            this.route('working-now');\n            this.route('tasks');\n            this.route('linked-users');\n            this.route('overview');\n            this.route('notices');\n            this.route('trnotices');\n            this.route('open_worktimes');\n            this.route('passes');\n            this.route('taxmanerrors');\n            this.route('subprojects');\n            this.route('rollocks');\n            this.route('greenboxes');\n            this.route('tv-status');\n            this.route('contract_report');\n            this.route('card-list');\n        });\n        this.route('history', { path: 'history/:id' });\n        this.route('magickey');\n        this.route('removed');\n        this.route('inactive');\n        this.route('rfiddevices');\n        this.route('report');\n        this.route('tasks');\n    });\n\n    this.route('employers', function () {\n        this.route('add');\n        this.route('edit', { path: 'edit/:id' }, function () {\n            this.route('employer-files');\n            this.route('add-file');\n            this.route('zeckit');\n        });\n\n        this.route('history', { path: 'history/:id' });\n        this.route('saved');\n        this.route('tree');\n        this.route('check');\n        this.route('removed');\n        this.route('inactive');\n    });\n\n    this.route('orientations', function () {\n        this.route('add', function () {\n            this.route('checkboxes', { path: '/checkboxes/:group' });\n            this.route('parent');\n            this.route('confirm');\n            this.route('signatures');\n            this.route('saved');\n            this.route('add-passes');\n        });\n        this.route('reports');\n        this.route('passes');\n        this.route('inactive-passes');\n        this.route('edit', { path: 'edit/:id' });\n        this.route('history', { path: 'history/:id' });\n        this.route('withoutori');\n        this.route('own-orientation', { path: '/own-orientation/:id' });\n        this.route('employeetree');\n    });\n\n    this.route('site_safety', function () {\n        this.route('report', function () {\n            this.route('tr', function () {\n                this.route('graphs');\n                this.route('data');\n                this.route('notices');\n            });\n            this.route('mvr', function () {\n                this.route('graphs');\n                this.route('data');\n                this.route('notices');\n            });\n            this.route('observation');\n            this.route('event');\n        });\n\n        this.route('measurement', { path: 'measurement/:measurement' }, function () {\n            this.route('graphs');\n            this.route('data');\n            this.route('notices');\n            this.route('edit', { path: 'edit/:id' });\n            this.route('history', { path: 'history/:id' });\n        });\n\n        this.route('measurement.add', { path: '/measurement/:id/:measurement' }, function () {\n            this.route('measurement', { path: 'measure/:project' });\n        });\n\n        this.route('addnotice', function () {\n            this.route('tr');\n            this.route('mvr');\n        });\n\n        this.route('saved', { path: '/saved/:type/:id' });\n        this.route('observation', function () {\n            this.route('add');\n            this.route('edit', { path: 'edit/:id' });\n        });\n    });\n\n    this.route('skyddsronds', function () {\n        this.route('add');\n        this.route('report');\n        this.route('edit', { path: 'edit/:id' });\n        this.route('history', { path: 'history/:id' });\n        this.route('notices');\n        this.route('dashboard');\n        this.route('saved', { path: 'saved/:id' });\n    });\n\n    this.route('trnotices', { path: '/notices' }, function () {\n        this.route('edit', { path: '/edit/:id' });\n        this.route('history', { path: '/history/:id' });\n    });\n\n    this.route('abcenses', function () {\n        this.route('holidays');\n        this.route('holidaypays');\n        this.route('gantt');\n        this.route('add');\n        this.route('add-multiple', { path: '/addmultiple' });\n        this.route('edit', { path: 'edit/:id' });\n        this.route('history', { path: 'history/:id' });\n    });\n\n    this.route('changepassword');\n\n    this.route('saved');\n\n    this.route('forms', function () {\n        this.route('customer', function () {\n            this.route('edit', { path: 'edit/:id' });\n        });\n        this.route('form-add', { path: ':form/add' });\n        this.route('form-edit', { path: ':form/edit/:id' });\n        this.route('form-report', { path: ':form/report' });\n        this.route('form-history', { path: ':form/history/:id' });\n        this.route('form-view', { path: ':form/view/:id' });\n        this.route('custom-report', { path: ':form/custom-report' });\n        this.route('information');\n        this.route('report', { path: ':form' });\n    });\n\n    this.route('worksitediary', function () {\n        this.route('add');\n        this.route('events');\n        this.route('edit', { path: 'edit/:id' }, function () {\n            this.route('basic-info');\n        });\n        this.route('supervisor-notes-report');\n        this.route('other-entries-report');\n        this.route('offering-report');\n        this.route('calendar');\n        this.route('notes');\n\n        this.route('history', { path: 'history/:id' });\n        this.route('report', function () {\n            this.route('first');\n            this.route('add', { path: '/:id' }, function () {\n                this.route('basic-info');\n                this.route('at-site');\n                this.route('diary-events');\n                this.route('material');\n                this.route('review-page');\n                this.route('ordered-changes');\n                this.route('offering');\n                this.route('required-extra');\n                this.route('supervisor-note');\n                this.route('other-entries');\n                this.route('signature');\n                this.route('completion-page');\n                this.route('summary-page');\n                this.route('notes-direktiv', { path: 'direktiv' });\n                this.route('notes-anmalan', { path: 'anmalan' });\n                this.route('notes-besiktningar', { path: 'besiktningar' });\n                this.route('notes-ritningar', { path: 'ritningar' });\n                this.route('extra');\n            });\n        });\n        this.route('automation');\n    });\n\n    this.route('diary', function () {\n        this.route('report', function () {\n            this.route('date', { path: ':date' }, function () {\n                this.route('project', { path: ':project' });\n            });\n        });\n        this.route('events');\n        this.route('calendar');\n        this.route('combo');\n    });\n\n    this.route('messageboard', function () {\n        this.route('add');\n        this.route('history', { path: 'history/:id' });\n    });\n\n    this.route('pass', function () {\n        this.route('add');\n    });\n\n    this.route('token', { path: 'token/:token' });\n\n    this.route('settings', function () {\n        this.route('general');\n        this.route('general-v2');\n        this.route('measurement_custom');\n        this.route('forms', function () {\n            this.route('form', { path: ':form' }, function () {\n                this.route('field', { path: ':field' });\n                this.route('removed-fields');\n            });\n        });\n        this.route('products');\n        this.route('notificationpanel');\n        this.route('billing');\n        this.route('company-profile');\n        this.route('integrations');\n        this.route('orientations');\n        this.route('history');\n        this.route('activitylog');\n    });\n\n    this.route('thereport', { path: 'comboreport' }, function () {\n        this.route('page', { path: 'page/:page' });\n        this.route('settings');\n    });\n\n    this.route('invite-users');\n\n    // this.route('invalid', { path: \"/*path\" });\n\n    this.route('my-sites', function () {\n        this.route('add-image-component');\n    });\n    this.route('dashboard');\n    this.route('massedit', { path: '/massedit/:form/:ids' });\n\n    this.route('send_skatteverket');\n\n    this.route('development', function () {\n        this.route('servicevalidator');\n        this.route('cron');\n        this.route('integrations');\n        this.route('datacreator');\n        this.route('react');\n        this.route('ownreports');\n        this.route('notifications');\n        this.route('smslogs');\n        this.route('functions');\n        this.route('products');\n        this.route('rollock');\n        this.route('activitylog');\n        this.route('ownroles', function () {\n            this.route('role', { path: '/:id' });\n        });\n        this.route('import', function () {\n            this.route('index');\n            this.route('map');\n            this.route('create');\n            this.route('save');\n        });\n    });\n\n    this.route('password', function () {\n        this.route('recovery');\n    });\n\n    this.route('services');\n\n    this.route('admintool', function () {\n        this.route('reports', function () {\n            this.route('bi', function () {\n                this.route('timecleanlog');\n                this.route('findtimeclean');\n            });\n            this.route('featureflags');\n        });\n        this.route('customer', { path: '/customer/:id' }, function () {\n            this.route('overview');\n            this.route('details');\n            this.route('reports', function () {\n                this.route('bills');\n                this.route('users');\n            });\n            this.route('devices', function () {\n                this.route('edit');\n            });\n            this.route('tt3tott4');\n            this.route('charts');\n            this.route('history');\n        });\n        this.route('createservice');\n        this.route('billing');\n    });\n\n    this.route('groups');\n\n    this.route('worktasks', function () {\n        this.route('list');\n        this.route('edit', { path: 'edit/:id' });\n        this.route('history', { path: 'history/:id' });\n        this.route('view', { path: 'view/:id' });\n        this.route('confirm', { path: 'confirm/:id' });\n        this.route('calendar');\n        this.route('report');\n        this.route('gantt');\n    });\n\n    this.route('messages', function () {\n        this.route('add', function () {\n            this.route('message');\n        });\n        this.route('list');\n        this.route('email-approvals');\n    });\n\n    this.route('mapon');\n\n    this.route('drivinglog', function () {\n        this.route('toggle', function () {\n            this.route('confirm');\n        });\n        this.route('edit', { path: 'edit/:id' });\n    });\n\n    this.route('materiallog', function () {\n        this.route('report');\n        this.route('list');\n        this.route('groups');\n    });\n\n    this.route('multitask', function () {\n        this.route('report');\n    });\n\n    this.route('gpslocation');\n\n    this.route('machines', function () {\n        this.route('transactions');\n        this.route('transactions-history');\n        this.route('transaction', function () {\n            this.route('add');\n            this.route('tooltype', function () {\n                this.route('selected', { path: ':tooltype' });\n            }),\n                this.route('project', function () {\n                    this.route('selected', { path: ':project' });\n                }),\n                this.route('move', { path: 'move/:tooltype/:project' });\n        });\n        this.route('machine');\n        this.route('map');\n        this.route('prices');\n    });\n\n    this.route('salary', function () {\n        this.route('workday-calendar', { path: 'workday' });\n        this.route('export-salary', function () {\n            this.route('add');\n        });\n\n        this.route('custom-export', function () {\n            this.route('edit', { path: ':id' });\n        });\n\n        this.route('custom-export-ad');\n        this.route('salarytypes');\n        this.route('salaryperiods');\n        this.route('export-abcense', function () {\n            this.route('add');\n        });\n    });\n\n    this.route('firecards', function () {\n        this.route('add');\n        this.route('edit', { path: 'edit/:id' });\n    });\n    this.route('test');\n    this.route('vismanetsignin');\n\n    this.route('worksite-areas', function () {\n        this.route('report');\n        this.route('log-report');\n    });\n\n    this.route('nova_costcenters');\n\n    this.route('integrations', function () {\n        this.route('list');\n        this.route('report');\n        this.route('fondionerrors');\n    });\n    this.route('resource-planning', function () {\n        this.route('gantt');\n        this.route('week');\n    });\n    this.route('shift-planning', function () {\n        this.route('gantt');\n        this.route('week');\n    });\n});\n\nexport default Router;\n","import { allSettled } from 'rsvp';\nimport { inject as service } from '@ember/service';\nimport { run } from '@ember/runloop';\nimport Route from '@ember/routing/route';\nimport ApplicationRouteMixin from 'ember-simple-auth/mixins/application-route-mixin';\nimport config from '../config';\nimport { get, set } from '@ember/object';\n\nexport default Route.extend(ApplicationRouteMixin, {\n    analytics: service(),\n    initapp: service(),\n    session: service(),\n    tools: service(),\n    loadTranslations: service(),\n    Collector: service('collector-service'),\n    moment: service(),\n    intl: service(),\n    gps: service(),\n    cordova: service('own-cordova-service'),\n    customerSettings: service(),\n    PushNotification: service(),\n    localStorageWrapper: service(),\n    router: service(),\n    metaService: service('meta'),\n\n    queryParams: {\n        modal: {\n            replace: true,\n        },\n    },\n\n    alldone: false,\n\n    init() {\n        this._super(...arguments);\n\n        //set last used page to ls on transition\n        this.router.on('routeWillChange', (transition) => {\n            if (!get(this, 'session.currentUser.id')) return;\n            let { to: toRouteInfo } = transition;\n            if (toRouteInfo) {\n                if (!get(this, 'session.currentUser.id')) return;\n                let page = toRouteInfo.name;\n                if (Object.keys(toRouteInfo.params).length > 0) {\n                    page = { page: page, param: Object.values(toRouteInfo.params).firstObject };\n                }\n                if (page && config.possibleFirstPages.indexOf(toRouteInfo.name) !== -1) {\n                    get(this, 'localStorageWrapper').setUserSetting('last_page', page);\n                }\n                if (transition.targetName == 'forms.form-report') {\n                    const self = this;\n                    transition.finally(function () {\n                        get(self, 'controller').notifyPropertyChange('path');\n                    });\n                }\n            }\n        });\n\n        this.router.on('routeDidChange', () => {\n            if (this.router.currentRouteName) {\n                // Current route is redirecting from index and will be null on first load\n                if (this.router.currentRouteName === 'login') {\n                    // Translate the meta title and description in login route\n                    get(this, 'metaService').translateMetaTags();\n                } else {\n                    // Overwrite Meta Description to empty and set title to brand name\n                    get(this, 'metaService').updateDescription();\n                    get(this, 'metaService').updateTitle();\n                }\n            }\n        });\n    },\n\n    beforeModel: function (transition) {\n        let cordova = get(this, 'cordova').setup();\n\n        if (!Modernizr.localstorage) {\n            this.transitionTo('error');\n        }\n\n        if (get(this, 'alldone') === false) {\n            transition.abort();\n\n            get(this, 'initapp')\n                .start()\n                .then(() => this._returnAllSettled(transition, cordova))\n                .then(() => this._setThings(transition));\n        }\n    },\n\n    afterModel: function () {\n        if (document.querySelector('#first-time-loader') !== null) {\n            document.querySelector('#first-time-loader').remove();\n        }\n        return set(this, 'intl.locale', moment.locale());\n    },\n\n    actions: {\n        changeLanguage: function (lang) {\n            var self = this;\n            moment.locale(lang);\n            localStorage['lang'] = lang;\n            return get(this, 'loadTranslations')\n                .fetch()\n                .then(() => this._setLang(lang, self));\n        },\n        showModal: function (name, model, variable) {\n            return this.render(name, {\n                into: 'application',\n                outlet: 'modal',\n                model: {\n                    object: model,\n                    variable: variable,\n                },\n            });\n        },\n        removeModal: function () {\n            return run(() =>\n                this.disconnectOutlet({\n                    outlet: 'modal',\n                    parentView: 'application',\n                }),\n            );\n        },\n        bubbleTransition: function (to, params) {\n            this.transitionTo(to, params);\n        },\n    },\n\n    save_first_time_loader_text: function (firstname, lastname) {\n        // while we are here let's save greetings for loading page\n\n        let name = firstname || lastname;\n\n        let str = get(this, 'intl').t('general.welcome');\n        let aphorisms = get(this, 'intl').t('general.aphorisms');\n        if (!str || !aphorisms || !name) {\n            return;\n        }\n        let greeting_arr = str.split('\\n');\n        let aphorisms_arr = aphorisms.split('\\n');\n\n        localStorage['first-time-loader-greeting'] = JSON.stringify({\n            greetings: greeting_arr,\n            name: name,\n            aphorism: aphorisms_arr,\n        });\n    },\n\n    getUserServices: function () {\n        let self = this;\n        let c = get(this, 'Collector');\n        let promise = c.ajax({\n            url: 'me?linkings',\n            headers: {\n                Authorization: 'Bearer ' + get(self, 'session.session.authenticated.access_token'),\n            },\n        });\n        promise.then(function (data) {\n            set(self, 'session.currentUser.services', data);\n        });\n        return promise;\n    },\n\n    sessionInvalidated: function () {\n        if (get(this, 'router.currentRouteName') === 'register.user.confirm') {\n            this.transitionTo('register.user.sign-in');\n        } else {\n            this._super();\n        }\n    },\n    sessionAuthenticated: function () {\n        if (get(this, 'router.currentRouteName') === 'register.user.sign-in') {\n            this.transitionTo('register.user.confirm');\n        } else if (get(this, 'session.modelscreated')) {\n            this._super();\n        } else {\n            this.transitionTo('index');\n        }\n    },\n\n    _returnAllSettled(transition, cordova) {\n        this._super(transition);\n\n        return allSettled([cordova]);\n    },\n    _setThings(transition) {\n        get(this, 'tools').initCurrentMySite();\n        set(this, 'alldone', true);\n        set(this, 'intl.locale', moment.locale());\n\n        if (get(this, 'session.session.authenticated.access_token')) {\n            this.save_first_time_loader_text(\n                get(this, 'session.currentUser.firstname'),\n                get(this, 'session.currentUser.lastname'),\n            );\n            //get(this, \"initapp\").firstPageTransition();\n        }\n        //else\n        transition.retry();\n    },\n    _setLang(lang, self) {\n        return set(get(self, 'intl'), 'locale', lang);\n    },\n});\n\n//export default ApplicationRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/changepassword.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ChangepasswordRoute;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport configurations from '../config';\n\nChangepasswordRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    session: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    mySites: Ember.inject.service(),\n    localStorageWrapper: Ember.inject.service(),\n    welcomeTour: Ember.inject.service(),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    resetController: function (controller, isExiting, transition) {\n        controller.set('showModal', true);\n\n        if (isExiting) {\n            controller.set('password_changed', false);\n            controller.set('currentPassword', null);\n            controller.set('password', null);\n            controller.set('passwordAgain', null);\n        }\n\n        return this._super;\n    },\n    startTour: function () {\n        if (!Em.isEmpty(this.get('localStorageWrapper').getUserSetting('tourShown'))) {\n            return;\n        }\n        if (this.get('session.currentUser.password') === 'secured') {\n            return;\n        }\n        return this.get('welcomeTour').start();\n    },\n    actions: {\n        changePassword: function () {\n            var again, c, currentPassword, model, password, promise, userid;\n            currentPassword = this.get('controller.securedPassword')\n                ? this.get('controller.currentPassword')\n                : this.get('session.currentUser.password');\n            password = this.get('controller.password');\n            again = this.get('controller.passwordAgain');\n            if (!currentPassword) {\n                this.set(\n                    'controller.validation_error',\n                    this.get('intl').t('validation.currentpasswordempty'),\n                );\n                return;\n            }\n            if (!password || !again) {\n                this.set(\n                    'controller.validation_error',\n                    this.get('intl').t('validation.passwordempty'),\n                );\n                return;\n            }\n            if (password.length < 8) {\n                this.set(\n                    'controller.validation_error',\n                    this.get('intl').t('validation.passwordlength'),\n                );\n                return;\n            }\n            if (password !== again) {\n                this.set(\n                    'controller.validation_error',\n                    this.get('intl').t('validation.passwordagain'),\n                );\n                return;\n            }\n            this.set('controller.validation_error', null);\n            //everything is ok so let's change the password over api\n            userid = this.get('session.saveUserId');\n            if (userid == null) {\n                alert('changePassword: current user not found');\n                return;\n            }\n            model = this.get('controller.user');\n            model.set('password', password);\n            c = this.get('Collector');\n            this.set('controller.password_changed', true);\n            promise = c.ajax({\n                method: 'POST',\n                url: 'changePassword',\n                data: {\n                    currentPassword: currentPassword,\n                    newPassword: password,\n                },\n            });\n            promise.then(() => {\n                this.set('controller.password_changed', false);\n                this.set('controller.securedPassword', true);\n                model.set('password', 'secured');\n                return this.transitionTo('my-sites').then(() => {\n                    return this.startTour();\n                });\n            });\n            return promise.catch((err) => {\n                this.set('controller.password_changed', false);\n                if (err.payload.error_msg) {\n                    return this.set('controller.validation_error', 'general.error.passwordchanged');\n                } else {\n                    return alert('changePassword: fail ' + err);\n                }\n            });\n        },\n        change: function (value, field) {\n            var model;\n            model = this.get('controller.user');\n            model.set(field, value);\n            return Ember.run.debounce(\n                this,\n                function () {\n                    return model.validate([field]).then(() => {\n                        return this.set(\n                            'controller.' + field + 'Errors',\n                            model.get('errors').errorsFor(field),\n                        );\n                    });\n                },\n                150,\n            );\n        },\n    },\n});\n\nexport default ChangepasswordRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/general-add.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GeneralAddRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport config from '../config/environment';\n\nimport collector from '../classes/collector';\n\nimport toTop from '../mixins/reset-scroll';\n\nimport jQuery from 'jquery';\n\nGeneralAddRoute = Ember.Route.extend(AuthenticatedRouteMixin, toTop, {\n    dialogs: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    controllerName: 'general-add',\n    savedRoute: 'saved',\n    additional_fields: Em.A([]),\n    CollectorService: Ember.inject.service('collector-service'),\n    scroller: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    beforeModel: function () {\n        this._super(...arguments);\n        return this.set('gui.hideMobileHeader', true);\n    },\n    model: function (params) {\n        var records;\n        if (!this.get('modelName')) {\n            return Ember.Object.create({\n                objects: this.get('objects'),\n                values: {},\n                saveAction: this.get('saveAction'),\n            });\n        }\n        if (this.get('edit')) {\n            return this.store.findRecord(this.get('modelName'), params.id, {\n                include: true,\n            });\n        } else {\n            records = this.store.peekAll(this.get('modelName')).filterBy('isNew', true);\n            if (records.get('length') > 0) {\n                return records.get('firstObject');\n            }\n            return this.store.createRecord(this.get('modelName'));\n        }\n    },\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        // Reset controller properties'\n        controller.set('errors', Em.A([]));\n        controller.set('spinIsLoading', false);\n        return controller.set('submitted', false);\n    },\n    //        controller.set('fieldSettings.title', true)\n    rowSaved: function (row) {},\n    save_record: function (row) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var children, field, fields, name, obj, promises;\n            promises = [];\n            fields = this.get('Collector').fields(this.get('controller.form'));\n            children = [];\n            for (name in fields) {\n                field = fields[name];\n                if (field.type === 'databasearray' || field.type === 'work_permit_attachment') {\n                    obj = Ember.Object.extend({\n                        fieldsInCommon: Ember.computed.intersect('parentFields', 'childFields'),\n                    }).create({\n                        parentFields: Object.keys(fields),\n                        childFields: Object.keys(this.get('Collector').fields(field.options.form)),\n                    });\n                    row.get(name).forEach((child) => {\n                        obj.get('fieldsInCommon').forEach(function (commonfield) {\n                            return child.set(commonfield, row.get(commonfield));\n                        });\n                        return children.push(child);\n                    });\n                }\n            }\n            if (children.length > 0) {\n                return this.get('CollectorService')\n                    .checkRowValidation(this.get('controller.form'), row, this.get('edit'))\n                    .then(\n                        (resp) => {\n                            promises = children.map(function (child) {\n                                return child.save();\n                            });\n                            return Ember.RSVP.Promise.all(promises).then(() => {\n                                return row.save().then(resolve, reject);\n                            }, reject);\n                        },\n                        (e) => {\n                            this.set('controller.validationMessageData', e.payload);\n                            return reject(e);\n                        },\n                    );\n            } else {\n                return row.save().then(resolve, reject);\n            }\n        });\n    },\n    scrollIfErrors: function () {\n        return Em.run.next(this, function () {\n            if (document.querySelector('.has-error')) {\n                return this.get('scroller').scrollVertical(document.querySelector('.has-error'), {\n                    offset: -70,\n                });\n            }\n        });\n    },\n    actions: {\n        save: function () {\n            var promise, row, self;\n            this.scrollIfErrors();\n            row = this.get('controller.model');\n            if (collector.hasErrors(row.get('constructor.modelName'))) {\n                this.set('controller.spinIsLoading', false);\n                return;\n            }\n            //            if row.saveAction?\n            //                row.saveAction @, row\n            //#                @transitionTo('index')\n            //                return\n            this.set('controller.submitted', false);\n            self = this;\n            if (!this.get('controller.errors') || this.get('controller.errors.length') < 1) {\n                this.set('controller.submitted', true);\n                if (row.saveAction != null) {\n                    row.saveAction(this, row);\n                    return;\n                }\n                //                @transitionTo('index')\n                promise = this.save_record(row);\n                return promise.then(\n                    function () {\n                        var after_save;\n                        self.set('controller.validationMessage', null);\n                        self.rowSaved(row);\n                        after_save = self.get('controller.afterSave');\n                        if (!after_save) {\n                            after_save = self.get('afterSave');\n                        }\n                        if (config.APP.KIOSK) {\n                            after_save = self.get('sharedAfterSave');\n                        }\n                        self.set('controller.spinIsLoading', false);\n                        //savedController = self.get 'savedController'\n\n                        //savedController.set 'model', row\n                        //savedController.set 'afterSave', after_save\n                        return self.transitionTo(self.get('savedRoute')).then(function (newRoute) {\n                            if (self.get('hideFromSaved')) {\n                                newRoute.controller.set('hideFields', self.get('hideFromSaved'));\n                            }\n                            newRoute.controller.set('model', row);\n                            newRoute.controller.set(\n                                'additional_fields',\n                                self.get('additional_fields'),\n                            );\n                            newRoute.controller.set('afterSave', after_save);\n                            if (self.get('controller.addNewLink')) {\n                                newRoute.controller.set(\n                                    'addPageLink',\n                                    self.get('controller.addNewLink'),\n                                );\n                            }\n                            if (self.get('controller.editNewLink')) {\n                                newRoute.controller.set(\n                                    'editPageLink',\n                                    self.get('controller.editNewLink'),\n                                );\n                            }\n                            if (self.get('controller.hideSavedAddLinks')) {\n                                return newRoute.controller.set('hideAddLinks', true);\n                            }\n                        });\n                    },\n                    (back) => {\n                        this.set('controller.submitted', true);\n                        this.set('controller.spinIsLoading', false);\n                        return this.set('controller.validationMessageData', back.errors);\n                    },\n                );\n            } else {\n                self.set('controller.submitted', true);\n                //put button to normal state after error\n                return self.set('controller.spinIsLoading', false);\n            }\n        },\n        cancel: function () {\n            var self;\n            self = this;\n            return this.get('dialogs')\n                .confirm(this.get('intl').t('general.confirm.cancel'))\n                .then((con) => {\n                    if (con) {\n                        this.get('controller.model').rollbackAttributes();\n                        return window.history.back(-1);\n                    }\n                });\n        },\n        //                if self.get('afterSave') then self.transitionTo(self.get('afterSave')) else self.transitionTo('index')\n        willTransition: function (transition) {\n            if (\n                transition.targetName !== 'users.add.index' &&\n                transition.targetName !== 'register.service.products' &&\n                transition.targetName.substring(0, 9) !== 'users.add'\n            ) {\n                if (\n                    this.get('controller.model') &&\n                    typeof this.get('controller.model').rollbackAttributes === 'function'\n                ) {\n                    this.get('controller.model').rollbackAttributes();\n                }\n                return true;\n            }\n        },\n    },\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting) {\n            controller.set('message', null);\n            controller.set('validationMessage', null);\n            controller.set('showMessageButton', false);\n            this.set('gui.hideMobileHeader', false);\n        }\n        return this._super(controller, isExiting, transition);\n    },\n});\n\nexport default GeneralAddRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/general-report.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GeneralReportRoute,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport collector from '../classes/collector';\n\nimport initRoute from '../mixins/init-route';\n\nGeneralReportRoute = Ember.Route.extend(AuthenticatedRouteMixin, initRoute, {\n    localStorageWrapper: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    init: function () {\n        var queryParams;\n        this._super();\n        queryParams = this.get('queryParams');\n        queryParams.page = {\n            refreshModel: true,\n        };\n        queryParams.order = {\n            refreshModel: true,\n        };\n        queryParams.limit = {\n            refreshModel: true,\n        };\n        queryParams.row_info_status = {\n            refreshModel: true,\n        };\n        queryParams.more = {\n            refreshModel: true,\n        };\n        return this.set('queryParams', queryParams);\n    },\n    offset: 0,\n    //    renderTemplate: ->\n    //        @render 'general-report', {controller: @get('parentController')}\n    paramsSet: false,\n    more: null,\n    model: function (params) {\n        var c, fields, form, ls_key_name, page, param, queryParams, split, v, valuefromLS;\n        if (params.limit > 100) {\n            params.limit = 100;\n        } else if (!params.limit) {\n            params.limit = 25;\n        }\n        if (this.get('localStorageKey')) {\n            ls_key_name = this.get('localStorageKey') + '_defaultLimit';\n        } else {\n            ls_key_name = this.get('form') + '_defaultLimit';\n        }\n        valuefromLS = this.get('localStorageWrapper').getUserSetting(ls_key_name);\n        if (!Em.isEmpty(valuefromLS)) {\n            params.limit = valuefromLS;\n        }\n        if (!this.get('paramsSet')) {\n            queryParams = this.get('queryParams');\n            c = this.get('Collector');\n            form = this.get('form');\n            fields = c.fieldArray(form);\n            fields.forEach(function (field) {\n                var ref;\n                if (\n                    (ref = field.type) === 'date' ||\n                    ref === 'database' ||\n                    ref === 'option_values'\n                ) {\n                    return (queryParams[field.name] = {\n                        refreshModel: true,\n                    });\n                }\n            });\n            this.set('queryParams', queryParams);\n            this.set('paramsSet', true);\n        }\n        page = params.page;\n        page = isNaN(page) || page <= 0 ? 1 : Math.floor(page);\n        //        if @get('controller.content.meta.count') > @get('limit')\n        this.set('offset', (page - 1) * params.limit);\n        params.offset = this.get('offset');\n        delete params.page;\n        if (params.status === 'all') {\n            delete params.status;\n        }\n        for (param in params) {\n            v = params[param];\n            if (param.includes('-')) {\n                if (Ember.isPresent(v)) {\n                    split = param.split('-');\n                    if (Ember.isEmpty(params[split[0]])) {\n                        params[split[0]] = {\n                            [`${split[1]}`]: v,\n                        };\n                    }\n                }\n                delete params[param];\n            }\n            if (v === 'null' || v === null || v === 'undefined') {\n                delete params[param];\n            }\n        }\n        if (params.more != null) {\n            params.more.split('|').forEach(function (param) {\n                var splitted;\n                splitted = param.split(':');\n                if (splitted[0].includes('-')) {\n                    if (Ember.isPresent(splitted[1])) {\n                        split = splitted[0].split('-');\n                        if (Ember.isEmpty(params[split[0]])) {\n                            return (params[split[0]] = {\n                                [`${split[1]}`]: splitted[1],\n                            });\n                        }\n                    }\n                } else {\n                    return (params[splitted[0]] = splitted[1]);\n                }\n            });\n            this.set('more', params.more);\n        } else {\n            this.set('more', null);\n        }\n        delete params.more; // just to make sure this doesn't bleed into capi\n        return params;\n    },\n    setupController: function (controller, model) {\n        this._super(controller, model);\n        this.set('localStorageKey', controller.localStorageKey);\n        if (this.get('more')) {\n            this.get('more')\n                .split('|')\n                .forEach(function (param) {\n                    var splitted;\n                    splitted = param.split(':');\n                    return controller.set(splitted[0], splitted[1]);\n                });\n        }\n        // there is a high probability that this doesn't work on some report/s\n        /*\n    if controller.get('filters') && Ember.typeOf(controller.get('filters')) is \"array\"\n        for filter in controller.get 'filters'\n            if filter.type != \"searchbox\" && (!controller.get(filter.field) || controller.get(filter.field) == \"null\")\n                if controller.get(filter.field) != null\n                    controller.set filter.field, undefined\n\n    */\n        return controller.setProperties({\n            offset: this.get('offset'),\n        });\n    },\n    actions: {\n        next_date: function () {\n            return this.set(\n                'controller.date',\n                moment(this.get('controller.date')).add(1, 'days').format('YYYY-MM-DD'),\n            );\n        },\n        prev_date: function () {\n            return this.set(\n                'controller.date',\n                moment(this.get('controller.date')).subtract(1, 'days').format('YYYY-MM-DD'),\n            );\n        },\n        showColumn: function (col) {\n            var arr, field, i, key, len, ref, ref1;\n            key = this.get('controller.model').type + '_defaultColumns';\n            this.get('controller.defaultColumns').pushObject(col);\n            this.get('controller.extraColumns').removeObject(col);\n            if (localStorage) {\n                if (localStorage[key]) {\n                    arr = JSON.parse(localStorage[key]);\n                    if (((ref = col.ext), indexOf.call(arr, ref) < 0)) {\n                        arr.push(col.ext);\n                    }\n                    return (localStorage[key] = JSON.stringify(arr));\n                } else {\n                    arr = [];\n                    ref1 = this.get('controller.defaultColumns');\n                    for (i = 0, len = ref1.length; i < len; i++) {\n                        field = ref1[i];\n                        arr.push(field.ext);\n                    }\n                    return (localStorage[key] = JSON.stringify(arr));\n                }\n            }\n        },\n        hideColumn: function (col) {\n            var arr, field, i, key, len, ref;\n            key = this.get('controller.model').type + '_defaultColumns';\n            this.get('controller.defaultColumns').removeObject(col);\n            this.get('controller.extraColumns').pushObject(col);\n            if (localStorage) {\n                arr = [];\n                ref = this.get('controller.defaultColumns');\n                for (i = 0, len = ref.length; i < len; i++) {\n                    field = ref[i];\n                    arr.push(field.ext);\n                }\n                return (localStorage[key] = JSON.stringify(arr));\n            }\n        },\n        status: function (status) {\n            return this.set('controller.status', status);\n        },\n        toggleCalender: function () {\n            return this.toggleProperty('controller.showCalender');\n        },\n    },\n});\n\n//        willTransition: (transition)->\n//            @get('controller.model').every (row) =>\n//                if !row.get('isValid') || row.get('isError') || row.get('hasDirtyAttributes')\n//                    transition.abort()\n//                    @get('dialogs').alert(@get('intl').t('report.alert_unsaved'))\n//                    return\n//            return true\nexport default GeneralReportRoute;\n","/*\n * decaffeinate suggestions:\n * DS102: Remove unnecessary code created because of implicit returns\n * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md\n */\nimport { typeOf, isEmpty } from '@ember/utils';\n\nimport Route from '@ember/routing/route';\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\nimport configurations from '../config';\nimport menu from 'tt4/mixins/menu';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport Ember from 'ember';\n\nconst indexRoute = Route.extend(menu, AuthenticatedRouteMixin, {\n    session: service(),\n    initapp: service(),\n    router: service('router'),\n    localStorageWrapper: service(),\n    PushNotification: service(),\n\n    beforeModel() {\n        get(this, 'PushNotification').setupPermission();\n\n        const isLogged = get(this, 'session.isAuthenticated') ? true : false;\n\n        if (!isLogged) {\n            get(this, 'router').transitionTo('login');\n            return;\n        }\n\n        get(this, 'PushNotification').register();\n\n        // right after login tt4 is logged but not ready .. then we wait that appReady is triggered\n        if (!get(this, 'initapp.appReady')) {\n            return get(this, 'initapp').on('appReady', () => {\n                //console.log(\"ok app now ready .. lets transit\")\n                return this.firstPageTransition();\n            });\n        } else {\n            return this.firstPageTransition();\n        }\n    },\n\n    firstPageTransition() {\n        this.initapp.clearInit();\n\n        if (\n            get(this, 'session.currentUser.password') &&\n            get(this, 'session.currentUser.password') !== 'secured' &&\n            !this.session.session.content.authenticated.scope\n        ) {\n            get(this, 'router').transitionTo('changepassword');\n            return;\n        }\n\n        const firstPage = get(this, 'localStorageWrapper').getUserSetting('last_page');\n        if (Ember.testing && (isEmpty(firstPage) || firstPage === 'dashboard'))\n            return get(this, 'router').transitionTo('my-sites');\n        if (\n            firstPage &&\n            firstPage.length !== 0 &&\n            firstPage !== 'index' &&\n            this.pageInPossibleFirstPages(firstPage)\n        ) {\n            if (typeOf(firstPage) === 'object') {\n                return get(this, 'router').transitionTo(firstPage.page, firstPage.param);\n            } else {\n                return get(this, 'router').transitionTo(firstPage);\n            }\n        } else {\n            return get(this, 'router').transitionTo(this.getMenus()[0].link[0]);\n        }\n    },\n\n    pageInPossibleFirstPages(page) {\n        const searchPage = typeOf(page) === 'object' ? page.page : page;\n        return configurations.possibleFirstPages.indexOf(searchPage) !== -1;\n    },\n});\n\nexport default indexRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/invalid.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar InvalidRoute;\n\nimport Ember from 'ember';\n\nInvalidRoute = Ember.Route.extend({\n    redirect: function () {\n        console.warn('No route for given URL found, redirecting to index route.');\n        return this.transitionTo('index');\n    },\n});\n\nexport default InvalidRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/login/register.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar LoginRegisterRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../general-add';\n\nLoginRegisterRoute = GeneralAddRoute.extend({\n    controllerName: 'login/register',\n    beforeModel: function () {},\n    // overriding beforeModel so authenticatedMixin doesn't move as to /login\n    objects: {\n        firstname: {\n            translation: 'register.firstname',\n            type: 'textbox',\n            features: {},\n        },\n        lastname: {\n            translation: 'register.lastname',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        email: {\n            translation: 'register.email',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n                validate_check: ['email', 'remote:username'],\n            },\n        },\n        password: {\n            translation: 'register.password',\n            type: 'password',\n            features: {\n                mandatory: true,\n                validate_check: ['minLength:8'],\n            },\n        },\n        password_confirm: {\n            translation: 'register.password_confirmation',\n            type: 'password',\n            features: {\n                mandatory: true,\n                validate_check: ['minLength:8', 'match:password'],\n            },\n        },\n        text1: {\n            translation: 'register.company_name',\n            type: 'textbox',\n            features: {},\n        },\n        company: {\n            translation: 'register.company_name',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        vatin: {\n            translation: 'register.company_id',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        phone: {\n            translation: 'register.telephone',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n    },\n    saveAction: function (self, values) {\n        var controller;\n        controller = self.get('controller');\n        return controller.createService(values);\n    },\n    actions: {\n        cancel: function () {\n            return this.transitionTo('index');\n        },\n        willTransition: function () {\n            return true;\n        },\n    },\n});\n\nexport default LoginRegisterRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/massedit.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MasseditRoute;\n\nimport Ember from 'ember';\n\nimport getBack from '../mixins/get-back';\n\nMasseditRoute = Ember.Route.extend(getBack, {\n    model: function (params) {\n        return params;\n    },\n});\n\nexport default MasseditRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/my-sites.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar mySitesRoute;\n\nimport Ember from 'ember';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nimport collector from '../classes/collector';\n\nimport config from '../config/environment';\n\nmySitesRoute = Ember.Route.extend(AuthenticatedRouteMixin, {\n    beforeModel: function (transition) {\n        this._super(transition);\n        if (config.APP.KIOSK) {\n            return this.transitionTo('my-sites');\n        }\n    },\n});\n\nexport default mySitesRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/register/service.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterServiceRoute;\n\nimport Ember from 'ember';\n\nimport initmixin from 'tt4/mixins/init-route';\n\nRegisterServiceRoute = Ember.Route.extend(initmixin, {\n    beforeModel: function () {\n        return this.transitionTo('register.service.adddetails');\n    },\n});\n\nexport default RegisterServiceRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/register/service/adddetails.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterAdddetailsRoute;\n\nimport Ember from 'ember';\n\nimport GeneralAddRoute from '../../general-add';\n\nRegisterAdddetailsRoute = GeneralAddRoute.extend({\n    controllerName: 'register/service/adddetails',\n    session: Em.inject.service(),\n    beforeModel: function () {\n        // overriding beforeModel so authenticatedMixin doesn't move as to /login\n        if (this.get('session.isAuthenticated')) {\n            this.get('session').invalidate();\n        }\n    },\n    objects: {\n        firstname: {\n            translation: 'register.firstname',\n            type: 'textbox',\n            features: {},\n        },\n        lastname: {\n            translation: 'register.lastname',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        email: {\n            translation: 'register.email',\n            type: 'username',\n            features: {\n                mandatory: true,\n                validate_check: ['email', 'remote:username'],\n            },\n            validateOnInit: true,\n        },\n        domain: {\n            translation: 'register.domain',\n            type: 'textbox',\n            features: {},\n            validateOnInit: true,\n        },\n        text1: {\n            translation: 'register.company_name',\n            type: 'textbox',\n            features: {},\n        },\n        company: {\n            translation: 'register.company_name',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        vatin: {\n            translation: 'register.company_id',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        phone: {\n            translation: 'register.telephone',\n            type: 'textbox',\n            features: {\n                mandatory: true,\n            },\n        },\n        country: {\n            name: '',\n            translation: 'register.country',\n            type: 'dropdown_values',\n            features: {\n                mandatory: true,\n            },\n            options: [\n                {\n                    id: 'fi',\n                    value: 'Finland',\n                },\n                {\n                    id: 'se',\n                    value: 'Sweden',\n                },\n                {\n                    id: 'no',\n                    value: 'Norway',\n                },\n                {\n                    id: 'dk',\n                    value: 'Denmark',\n                },\n                {\n                    id: 'uk',\n                    value: 'UK',\n                },\n                {\n                    id: 'us',\n                    value: 'US',\n                },\n            ],\n        },\n        text2: {\n            translation: 'register.promo_title',\n            type: 'textbox',\n            features: {},\n        },\n        promocode: {\n            translation: 'register.promocode',\n            type: 'textbox',\n            features: {},\n        },\n    },\n    saveAction: function (self, values) {\n        var controller;\n        controller = self.get('controller');\n        controller.convertZohoLead(values);\n        return controller.next(values);\n    },\n    resetController: function (controller, transition) {\n        return controller.set('validationstate', Em.Object.create());\n    },\n});\n\nexport default RegisterAdddetailsRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/register/service/amounts.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterAmountsRoute;\n\nimport Ember from 'ember';\n\nRegisterAmountsRoute = Ember.Route.extend();\n\nexport default RegisterAmountsRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/register/service/done.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterDoneRoute;\n\nimport Ember from 'ember';\n\nRegisterDoneRoute = Ember.Route.extend();\n\nexport default RegisterDoneRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/register/service/products.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar RegisterProductsRoute;\n\nimport Ember from 'ember';\n\nRegisterProductsRoute = Ember.Route.extend();\n\nexport default RegisterProductsRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/saved.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SavedRoute;\n\nimport Ember from 'ember';\n\nimport toTop from '../mixins/reset-scroll';\n\nSavedRoute = Ember.Route.extend(toTop, {\n    //setupController: (controller, model) ->\n    //    unless controller.get('model')\n    //        @transitionTo('index')\n    resetController: function (controller, isExiting, transition) {\n        if (isExiting) {\n            return controller.set('hideAddLinks', false);\n        }\n    },\n});\n\n//controller.set 'afterSave', false\nexport default SavedRoute;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/send-skatteverket.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SendSkatteverketRoute;\n\nimport Ember from 'ember';\n\nimport pdfExport from '../mixins/pdf-export';\n\nimport formReport from '../pods/collector/report-comp/component';\n\nimport AuthenticatedRouteMixin from 'ember-simple-auth/mixins/authenticated-route-mixin';\n\nSendSkatteverketRoute = Ember.Route.extend(pdfExport, AuthenticatedRouteMixin, {\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    afterModel: function () {\n        return this.sendReport();\n    },\n    sendReport: function () {\n        var c;\n        c = this.get('Collector');\n        return this.getReport().then((report) => {\n            var header, promise;\n            header = this.get('intl').t('pl.skatteverket_emailheader');\n            promise = c.ttapi({\n                url: 'sendReportAsEmail',\n                data: {\n                    to_address: this.get('session.currentUser.email'),\n                    email: report,\n                    header: header.toString(),\n                },\n                method: 'post',\n            });\n            return promise.then(function (ret) {\n                return console.log('done', ret);\n            });\n        });\n    },\n    getReport: function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var report;\n            report = formReport.create({\n                store: this.get('store'),\n                Collector: this.get('Collector'),\n                intl: this.get('intl'),\n                rowsPerPage: 'all',\n                form: 'presence',\n                query: [\n                    {\n                        name: 'date',\n                        value:\n                            moment().subtract(3, 'months').format('YYYY-MM-DD') +\n                            '_' +\n                            moment().format('YYYY-MM-DD'),\n                    },\n                ],\n                order: 'date-,out',\n                show_columns:\n                    'date,employer.name,project.name,user.lastname,user.firstname,user.personid,in,out',\n            });\n            return report.get('asPdfElement').then((pdf) => {\n                return this.createPdfFromElements([pdf], 'base64').then((report) => {\n                    return resolve(report);\n                });\n            });\n        });\n    },\n});\n\nexport default SendSkatteverketRoute;\n","import Route from '@ember/routing/route';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\n\nexport default Route.extend({\n    router: service(),\n    store: service(),\n\n    async model(params) {\n        let data = await get(this, 'store').query(params.form, {\n            id: params.id,\n            sideload: true,\n            'row_info.status': 'all',\n        });\n        return get(data, 'firstObject');\n    },\n\n    setupController(controller, model) {\n        set(controller, 'model', model);\n    },\n\n    actions: {\n        cancel() {\n            window.history.back();\n        },\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/routes/token.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar TokenRoute;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nTokenRoute = Ember.Route.extend({\n    queryParams: {\n        url: true,\n    },\n    session: Em.inject.service(),\n    initapp: Em.inject.service(),\n    model: function (params) {\n        var secure;\n        this.get('initapp').clearInit();\n        secure = {\n            authenticated: {\n                authenticator: 'authenticator:collector-auth',\n                access_token: params.token,\n                expires_in: 3600,\n                token_type: 'Bearer',\n                scope: null,\n                expires_at: new Date(new Date().getTime()).getTime(),\n                refresh_token: params.token,\n            },\n        };\n        localStorage['ember_simple_auth-session'] = JSON.stringify(secure);\n        this.transitionTo('loading');\n        // HÄX for refreshing page after we refreshed correct auth in localstorage\n        return Em.run.later(\n            this,\n            function () {\n                this.get('initapp').clearInit();\n                if (params.url) {\n                    location.href = params.url;\n                    return location.reload();\n                } else {\n                    return (location.href = config.rootURL);\n                }\n            },\n            1000,\n        );\n    },\n});\n\nexport default TokenRoute;\n","import { init, BrowserTracing } from '@sentry/browser';\nimport { Ember as EmberIntegration } from '@sentry/integrations/esm/ember';\nimport config from 'tt4/config/environment';\nimport { isArray } from '@ember/array';\n\nexport function startSentry() {\n    if (config.environment !== 'development') {\n        init({\n            ...config.sentry,\n\n            release: config.APP.version,\n\n            integrations: [\n                new EmberIntegration({\n                    onerror: true,\n                    onunhandledrejection: true,\n                }),\n                new BrowserTracing(),\n            ],\n\n            tracesSampleRate: 0.2,\n\n            beforeSend(event, hint) {\n                /*\n                 * if flag sentry-enabled is false, don't send events to sentry\n                 * this is done through event.extra because we cannot access the services/flags from the sentry.js\n                 */\n                if (event && event.extra && !event.extra.sentryIsEnabled) {\n                    return null;\n                }\n\n                const error = hint.originalException;\n                if (error && error.errors && error.errors.error === 'overlap') {\n                    return null;\n                }\n                // https://github.com/emberjs/ember.js/issues/5566\n                if (error && error.message === 'TransitionAborted') {\n                    return null;\n                }\n                if (error && error.error === 'invalid_grant') {\n                    return null;\n                }\n                if (\n                    error &&\n                    error.message ===\n                        'a glimmer transaction was begun, but one already exists. You may have a nested transaction'\n                ) {\n                    return null;\n                }\n                if (\n                    error &&\n                    hint.originalException.payload &&\n                    hint.originalException.payload.error === 'username_in_use'\n                ) {\n                    return null;\n                }\n                if (\n                    error &&\n                    hint.originalException.payload &&\n                    hint.originalException.payload.error === 'username_contains_illegal_characters'\n                ) {\n                    return null;\n                }\n\n                const normalize = (filename) =>\n                    config.sentry.publicUrl + '/assets/' + filename.split('/www/', 2)[1];\n\n                if (\n                    event.exception &&\n                    event.exception.values &&\n                    event.exception.values[0] &&\n                    event.exception.values[0].stacktrace &&\n                    isArray(event.exception.values[0].stacktrace.frames)\n                ) {\n                    event.exception.values[0].stacktrace.frames.forEach((frame) => {\n                        if (frame.filename.includes('/www/')) {\n                            frame.filename = normalize(frame.filename);\n                        }\n                    });\n                    event.culprit = event.exception.values[0].stacktrace.frames[0].filename;\n                }\n\n                return event;\n            },\n        });\n    }\n}\n","define(\"tt4/serializers/-default\", [\"exports\", \"@ember-data/serializer/json\"], function (_exports, _json) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _json.default;\n    }\n  });\n});\n","define(\"tt4/serializers/-json-api\", [\"exports\", \"@ember-data/serializer/json-api\"], function (_exports, _jsonApi) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _jsonApi.default;\n    }\n  });\n});\n","define(\"tt4/serializers/-rest\", [\"exports\", \"@ember-data/serializer/rest\"], function (_exports, _rest) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _rest.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/serializers/application.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ApplicationSerializer;\n\nimport RESTSerializer from 'ember-data/serializers/rest';\n\nimport DS from 'ember-data';\n\nimport { pluralize } from 'ember-inflector';\n\nApplicationSerializer = RESTSerializer.extend(DS.EmbeddedRecordsMixin, {\n    attrs: {\n        row_info: {\n            embedded: 'always',\n            serialize: false,\n            deserialize: 'records',\n        },\n    },\n    isNewSerializerAPI: true,\n    extractMeta: function (store, type, payload) {\n        payload.meta = {\n            count: payload.count,\n            additional_meta: payload.meta,\n        };\n        delete payload.count;\n        return this._super(store, type, payload);\n    },\n    serializeIntoHash: function (hash, type, snapshot, options) {\n        var record;\n        this._super(hash, type, snapshot, options);\n        record = snapshot.record;\n        if (record.get('validation') === 'off') {\n            Ember.assign(hash, {\n                validation: record.get('validation'),\n            });\n        }\n        if (record.get('metadata')) {\n            Ember.assign(hash, {\n                meta: record.get('metadata'),\n            });\n            record.set('metadata', null);\n        }\n    },\n    serialize: function (snapshot, options) {\n        var json;\n        json = this._super(snapshot, options);\n        return json;\n    },\n    normalizeQueryResponse: function (store, primaryModelClass, payload, id, requestType) {\n        var camelized, data, i, inPayload, item, len, main, r, record, value;\n        camelized = Ember.String.camelize(primaryModelClass.modelName);\n        main = pluralize(camelized);\n        inPayload = payload[Object.keys(payload)[0]];\n        if (\n            inPayload &&\n            inPayload.length > 0 &&\n            inPayload[0].values &&\n            Object.keys(payload).length === 2\n        ) {\n            data = {};\n            for (item in payload) {\n                value = payload[item];\n                if (item === 'count') {\n                    data[item] = value;\n                    continue;\n                }\n                data[main] = [];\n                for (i = 0, len = value.length; i < len; i++) {\n                    record = value[i];\n                    r = record.values;\n                    r.id = record.id;\n                    data[main].push(r);\n                }\n            }\n            return this._super(store, primaryModelClass, data, id, requestType);\n        } else if (!payload[main]) {\n            data = {};\n            data[main] = [];\n            return this._super(store, primaryModelClass, data, id, requestType);\n        }\n        return this._super(...arguments);\n    },\n});\n\nexport default ApplicationSerializer;\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import RESTSerializer from 'ember-data/serializers/rest';\n\nexport default RESTSerializer.extend();\n","import RESTSerializer from 'ember-data/serializers/rest';\n\nexport default RESTSerializer.extend();\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({\n    keyForAttribute(key) {\n        return key;\n    },\n});\n","import RESTSerializer from 'ember-data/serializers/rest';\n\nexport default RESTSerializer.extend();\n","import RESTSerializer from 'ember-data/serializers/rest';\n\nexport default RESTSerializer.extend();\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","import DS from 'ember-data';\nimport { camelize } from '@ember/string';\n\nexport default DS.JSONAPISerializer.extend({\n    keyForAttribute(key) {\n        return camelize(key);\n    },\n});\n","import DS from 'ember-data';\n\nexport default DS.RESTSerializer.extend();\n","import DS from 'ember-data';\n\nexport default DS.JSONAPISerializer.extend({});\n","define(\"tt4/services/-ensure-registered\", [\"exports\", \"@embroider/util/services/ensure-registered\"], function (_exports, _ensureRegistered) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _ensureRegistered.default;\n    }\n  });\n});\n","import { merge, assign as _assign } from '@ember/polyfills';\nimport config from '../config/environment';\nimport Service from 'ember-gestures/services/-gestures';\n\nconst assign = _assign || merge;\n\nlet gestures = assign({}, {\n  useCapture: false\n});\ngestures = assign(gestures, config.gestures);\n\nexport default Service.extend({\n  useCapture: gestures.useCapture\n});\n","import Service, { inject as service } from '@ember/service';\nimport FormsService from 'tt4/services/forms';\nimport DS from 'ember-data';\nimport { IRecord } from 'tt4/ember-movenium/interfaces/record';\nimport { assert } from '@ember/debug';\nimport { isEmpty } from '@ember/utils';\nimport { get } from '@ember/object';\n\nexport default class CollectorService extends Service {\n    @service private intl!: any;\n    @service private forms!: FormsService;\n    @service private store!: DS.Store;\n\n    constructor() {\n        super(...arguments);\n    }\n\n    public getTranslationForColumn(form: string, fieldName: string, removed: boolean = false) {\n        if (fieldName === 'id') return 'id';\n\n        if (fieldName.substring(0, 9) === 'row_info.') return this.intl.t('general.' + fieldName);\n\n        if (removed) return this.getBestTranslation(form, fieldName);\n\n        const field = this.forms.fields(form)[fieldName];\n\n        if (!field) assert(\"Field '\" + fieldName + \"' not found for form '\" + form + \"'\");\n\n        if (field.hasOwnProperty('name')) return field.name;\n        else return this.getBestTranslation(form, fieldName);\n    }\n\n    public getBestTranslation(form: string, fieldName: string) {\n        const testKeys: string[] = [\n            'report.' + form + '.' + fieldName,\n            'defaults.field.' + fieldName,\n        ];\n\n        const foundKey: string | undefined = testKeys.find((key) => {\n            return this.intl.exists(key);\n        });\n\n        if (foundKey) return this.intl.t(foundKey);\n        else return testKeys[0];\n    }\n\n    public copyRecord(record: IRecord) {\n        const form = get(record, 'constructor.modelName');\n        const jsonRecord: any = record.toJSON();\n        for (const field of ['status']) {\n            if (!isEmpty(jsonRecord[field])) {\n                jsonRecord[field] = null;\n            }\n        }\n\n        record.eachRelationship((key: string, relationship: { kind: string }) => {\n            const relKind = relationship.kind;\n            if (\n                (relKind === 'belongsTo' || relKind === 'hasMany') &&\n                !['export_salary', 'export_absence', 'row_info'].includes(key)\n            ) {\n                if (this.forms.field(form, key).type === 'databasearray') {\n                    const hasManyArr: any = [];\n                    record[key].forEach((hasManyRecord: IRecord) => {\n                        hasManyArr.push(this.copyRecord(hasManyRecord));\n                    });\n                    jsonRecord[key] = hasManyArr;\n                } else {\n                    jsonRecord[key] = record[key];\n                }\n            }\n        });\n\n        return this.store.createRecord(form, jsonRecord);\n    }\n}\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/admintool.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar AdmintoolService;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport $ from 'jquery';\n\nAdmintoolService = Ember.Service.extend({\n    session: Ember.inject.service(),\n    ajax: function (params) {\n        var self;\n        params.url = config.APP.ADMINTOOLURL + params.url;\n        self = this;\n        params.beforeSend = function (request) {\n            if (Ember.get(self, 'session.session.authenticated.access_token')) {\n                return request.setRequestHeader(\n                    'Authorization',\n                    'Bearer ' + Ember.get(self, 'session.session.authenticated.access_token'),\n                );\n            }\n        };\n        return $.ajax(params);\n    },\n    get: function (path, params) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var promise;\n            if (!params) {\n                params = {};\n            }\n            params.url = path;\n            promise = this.ajax(params);\n            return promise.then(\n                function (data) {\n                    return resolve(data[path] != null ? Em.A(data[path]) : Em.A(data));\n                },\n                function (reason) {\n                    return reject(reason);\n                },\n            );\n        });\n    },\n});\n\nexport default AdmintoolService;\n","define(\"tt4/services/ajax\", [\"exports\", \"ember-ajax/services/ajax\"], function (_exports, _ajax) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _ajax.default;\n    }\n  });\n});\n","import Service, { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nexport default class AnalyticsService extends Service {\n    @service private flags: any;\n    @tracked customData: any[] = [];\n\n    public trackEvent(event: TrackingEvent) {\n        if (typeof window.snowplow === 'function' && this.flags.test('use-snowplow')) {\n            window.snowplow('trackStructEvent', event);\n            // empty customData after tracking\n            this.customData = [];\n        }\n    }\n    // function to init customData (so we can call it from components)\n    public initCustomData() {\n        this.customData = [];\n    }\n}\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport moment from 'moment';\n\n/**\n * Service for handling Android device camera and file operations\n * Provides methods to capture images from camera or gallery and process them\n */\nexport default class AndroidFileService extends Service {\n    @service intl;\n    @service notifications;\n\n    /**\n     * Captures an image from camera or gallery and processes it\n     * @param {string|null} source - 'gallery' for photo library, null for camera\n     * @returns {Promise<Object>} Processed file object ready for upload\n     */\n    async captureImage(source = null) {\n        const options = this.buildCameraOptions(source);\n\n        try {\n            const imageData = await this.getCameraImage(options);\n            return await this.processImageFile(imageData);\n        } catch (error) {\n            // Show error notification to user\n            this.notifications.error(this.intl.t('field.fileupload.camera_error'), {\n                autoClear: true,\n            });\n            throw error;\n        }\n    }\n\n    /**\n     * Builds camera configuration options for Cordova camera plugin\n     * @param {string|null} source - Source type for image capture\n     * @returns {Object} Camera options object\n     * @private\n     */\n    buildCameraOptions(source) {\n        return {\n            allowEdit: false,\n            targetWidth: 1600,\n            targetHeight: 1600,\n            quality: 70, // Image quality 0-100\n            destinationType: window.Camera.DestinationType.FILE_URI,\n            sourceType: source === 'gallery'\n                ? window.Camera.PictureSourceType.PHOTOLIBRARY\n                : window.Camera.PictureSourceType.CAMERA,\n            mediaType: window.Camera.MediaType.PICTURE,\n            correctOrientation: true, // Auto-rotate based on device orientation\n            encodingType: 0, // JPEG format\n        };\n    }\n\n    /**\n     * Captures image using Cordova camera plugin\n     * Wraps callback-based API into Promise for async/await usage\n     * @param {Object} options - Camera configuration options\n     * @returns {Promise<string>} File URI of captured image\n     * @private\n     */\n    async getCameraImage(options) {\n        return new Promise((resolve, reject) => {\n            navigator.camera.getPicture(resolve, reject, options);\n        });\n    }\n\n    /**\n     * Processes the captured image file and prepares it for upload\n     * @param {string} imageData - File URI from camera\n     * @returns {Promise<Object>} File object with blob, name, and type\n     * @private\n     */\n    async processImageFile(imageData) {\n        const fileEntry = await this.resolveFileSystemURL(imageData);\n        const file = await this.getFileFromEntry(fileEntry);\n\n        // Set proper MIME type and generate unique filename\n        file.type = 'image/jpeg';\n        file.name = file.name.replace(\n            'image.',\n            'image' + moment().format('YYYY-MM-DD-HH-mm-ss') + '.'\n        );\n\n        return {\n            blob: file,\n            name: file.name,\n            type: file.type,\n        };\n    }\n\n    /**\n     * Resolves file system URL to file entry\n     * Wraps callback-based API into Promise\n     * @param {string} url - File system URL\n     * @returns {Promise<Object>} File entry object\n     * @private\n     */\n    async resolveFileSystemURL(url) {\n        return new Promise((resolve, reject) => {\n            window.resolveLocalFileSystemURL(url, resolve, reject);\n        });\n    }\n\n    /**\n     * Gets file object from file entry\n     * Wraps callback-based API into Promise\n     * @param {Object} fileEntry - File entry from file system\n     * @returns {Promise<Object>} File object with metadata\n     * @private\n     */\n    async getFileFromEntry(fileEntry) {\n        return new Promise((resolve, reject) => {\n            fileEntry.file(resolve, reject);\n        });\n    }\n}\n\n","// noinspection TypeScriptValidateTypes\n\nimport Service, { inject as service } from '@ember/service';\nimport { assert } from '@ember/debug';\n\n/**\n * Handles all operations that have to do with calling different apis\n *\n * ```js\n * @service apiservice;\n * this.apiservice.request(<backendName>, <url>, <method>, <body>)\n * ```\n *\n * @class ApiserviceService\n * @constructor\n * @public\n */\n\nexport default class ApiserviceService extends Service {\n    @service private session!: any;\n    @service private ttapi!: any;\n    @service private capi!: any;\n\n    /**\n     * Make api request using backendName, url, body and method given\n     * EXAMPLE: await this.apiservice.request('capi', '/worktime/:id', 'PUT', {worktime: {locked: true}})\n     * EXAMPLE2: await this.apiservice.request('ttapi', '/sendReportAsEmail', 'POST', {to: 'test@mail.com', lang: 'fi'})\n     * @method request\n     * @param {String} backendName\n     * @param {String} url\n     * @param {object} data\n     * @param {string} method\n     */\n    public async request(\n        backendName: string,\n        url: string,\n        method: string = 'GET',\n        data: object = {},\n    ) {\n        let callUrl: unknown = '';\n        switch (backendName) {\n            case 'ttapi':\n                callUrl = this.ttapi.host;\n                break;\n            case 'capi':\n                callUrl = this.capi.host;\n                break;\n            default:\n                assert('Invalid backend name (options ttapi, capi)');\n        }\n\n        assert('You need to pass url to request method', url);\n\n        try {\n            const requestData: any = {\n                headers: {\n                    Authorization: 'Bearer ' + this.session.data.authenticated.access_token,\n                    'Content-Type': 'application/json',\n                },\n                method,\n            };\n            if (Object.keys(data).length > 0) requestData.body = JSON.stringify(data);\n            // @ts-ignore: Ignore import of compiled template\n            callUrl = callUrl.slice(-1) === '/' ? callUrl.slice(0, -1) : callUrl;\n            return await fetch(callUrl + url, requestData);\n        } catch (e) {\n            throw new Error(e);\n        }\n    }\n}\n","/* eslint-disable */\nimport Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Service.extend({\n  store: service(),\n  session: service(),\n  Collector: service('collector-service'),\n  ttapi: service(),\n  capi: service(),\n\n  async checkAndSetAutopause() {\n    if (!this.get('Collector').testNeedsOne('products.worktimegroup')) {\n        if (this.get('Collector').testNeedsOne('products.autopause')) {\n            let settings = await this.getSetting(null);\n            if (settings) {\n                settings.set('value', 0);\n                await settings.save();\n            }\n        } else {\n            return;\n        }\n        return;\n    }\n\n    try {\n      // Fetch all worktime groups\n      let response = await get(this, 'capi').request('user/worktimegroups');\n\n      // Extract the worktimegroups array from the response\n      let worktimeGroups = response.worktimegroups;\n\n      // Check if worktimeGroups is an array\n      if (!Array.isArray(worktimeGroups)) {\n        throw new Error('Invalid worktimeGroups format');\n      }\n\n      // Loop through each worktime group\n      for (let worktimeGroup of worktimeGroups) {\n        let worktimeGroupId = worktimeGroup.id;\n\n        // Check if autopause is on for the worktime group\n        const isAutopauseOn = await this.checkIfAutopauseIsOnForWorktimeGroup(worktimeGroupId);\n\n        if (isAutopauseOn) {\n          // Fetch the settings for the current worktime group\n          let settings = await this.getSetting(worktimeGroupId);\n\n          if (settings) {\n            // Set the pause value to 0 if autopause is on\n            settings.set('value', 0);\n            await settings.save();\n          }\n        }\n      }\n\n      // Handle the default case where worktimegroup is not set\n      const isAutopauseOn = await this.checkIfAutopauseIsOnForWorktimeGroup(null);\n      if (isAutopauseOn) {\n        let settings = await this.getSetting(null);\n        if (settings) {\n          settings.set('value', 0);\n          await settings.save();\n        }\n      }\n\n    } catch (error) {\n      console.error('Error checking autopause status:', error);\n    }\n  },\n\n  async checkIfAutopauseIsOnForWorktimeGroup(worktimegroupId) {\n    const url = worktimegroupId ? `forms?user.worktimegroup=${worktimegroupId}` : 'forms?user';\n    const response = await get(this, 'Collector').ajax({ url });\n    return response.updater && Array.isArray(response.updater.products) && response.updater.products.includes('autopause');\n  },\n\n  async getSetting(worktimegroupId) {\n    let condition = worktimegroupId ? `$userProfile->worktimegroup==${worktimegroupId}` : '';\n    let settingParams = {\n      name: 'default_value',\n      value: 0, // Ensure the value is set to 0 by default\n      condition: condition\n    };\n\n\n    if (!worktimegroupId) {\n      settingParams.condition = '';\n    }\n\n    const configs = {\n      form: 'worktime',\n      field: 'pause',\n      setting: settingParams\n    };\n\n    const forms = await this.store.findAll('form', { reload: true });\n    const form = forms.filterBy('external_type', configs.form).get('firstObject');\n    if (form) {\n      const field = form.fields.filterBy('external_type', configs.field).get('firstObject');\n      if (field) {\n        const setting = field.settings.filterBy('name', configs.setting.name).find(item => {\n          if (worktimegroupId) {\n            const arr = item.condition ? item.condition.split('==') : [];\n            return arr.length > 1 && arr[1] == worktimegroupId;\n          } else {\n            return item.condition === '';\n          }\n        });\n\n        return setting || this.store.createRecord('form-field-setting', configs.setting);\n      }\n    }\n    return null;\n  }\n});\n\n\n","import { Promise as EmberPromise } from 'rsvp';\nimport Service, { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\nexport default Service.extend({\n    ajax: service(),\n    capi: service(),\n\n    sendFile(filename, contentType, content) {\n        return new EmberPromise((resolve) => {\n            get(this, 'capi')\n                .request('/awsurl?filename=' + filename + '&contentType=' + contentType)\n                .then((url) => this._ajaxRequest(url, contentType, content))\n                .then(() => resolve());\n        });\n    },\n\n    _ajaxRequest(url, contentType, content) {\n        get(this, 'ajax').request(url, {\n            type: 'put',\n            // Content type must much with the parameter you signed your URL with\n            contentType: contentType,\n            // this flag is important, if not set, it will try to send data as a form\n            processData: false,\n            // the actual file is sent raw\n            data: content,\n            dataType: 'text',\n            beforeSend: function (jqXHR) {\n                jqXHR.overrideMimeType('text/csv;charset=iso-8859-1');\n            },\n        });\n    },\n});\n","import { computed, get } from '@ember/object';\nimport AjaxService from 'ember-ajax/services/ajax';\nimport { inject } from '@ember/service';\nimport config from 'tt4/config/environment';\n\nexport default AjaxService.extend({\n    session: inject(),\n    headers: computed('session.session.authenticated.access_token', {\n        get() {\n            let headers = {};\n            const authToken = get(this, 'session.session.authenticated.access_token');\n            if (authToken) {\n                headers['Authorization'] = 'Bearer ' + authToken;\n            }\n            return headers;\n        },\n    }),\n    host: config.APP.BLOCKS_URL,\n});\n","import { A } from '@ember/array';\nimport { isPresent } from '@ember/utils';\nimport PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\nimport ObjectProxy from '@ember/object/proxy';\nimport EmberObject, { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport AjaxService from 'ember-ajax/services/ajax';\nimport config from 'tt4/config/environment';\n\n// const {inject: {service}, get, Object, ObjectProxy, PromiseProxyMixin, isPresent, A} = Ember;\n\nexport default AjaxService.extend({\n    flags: service(),\n    collector: service('collector-service'),\n    session: service(),\n\n    host: computed('session.currentUser.partnerid', function () {\n        if (config.environment !== 'development' && get(this, 'flags').test('capi_url'))\n            return get(this, 'flags').test('capi_url');\n        else return config.APP.COLLECTOR_API_URL;\n    }),\n\n    headers: computed('session.session.authenticated.access_token', {\n        get() {\n            let headers = {};\n            let token = get(this, 'session.session.authenticated.access_token');\n            headers['Authorization'] = 'Bearer ' + token;\n            return headers;\n        },\n    }),\n    findAll(form, params = {}) {\n        const promiseObject = ObjectProxy.extend(PromiseProxyMixin);\n        const c = get(this, 'collector');\n        const pluralForm = c.pluralize(form);\n        return promiseObject.create({\n            promise: this.request(pluralForm, { data: params }).then((data) =>\n                this._returnData(form, data, params, c, pluralForm),\n            ),\n        });\n    },\n    _returnData(form, data, params, c, pluralForm) {\n        let rows = [];\n        if (isPresent(params.sideload)) {\n            rows = c.injectSideload(pluralForm, data);\n        } else if (isPresent(data[form])) {\n            rows = A(data[form]);\n        } else {\n            rows = A(data[pluralForm]);\n        }\n        const EmberRows = A([]);\n\n        rows.forEach((row) => EmberRows.pushObject(EmberObject.create(row)));\n\n        return {\n            content: EmberRows,\n            meta: { count: get(data, 'count') },\n        };\n    },\n});\n","import { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport AjaxService from 'ember-ajax/services/ajax';\nimport config from 'tt4/config/environment';\n\n// const {inject: {service}, get, Object, ObjectProxy, PromiseProxyMixin, isPresent, A} = Ember;\n\nexport default AjaxService.extend({\n    session: service(),\n    flags: service(),\n\n    host: computed(function () {\n        if (config.environment !== 'development' && get(this, 'flags').test('cc-url'))\n            return get(this, 'flags').test('cc-url') + '/trigger';\n        return config.APP.CC_URL;\n    }),\n\n    headers: computed('session.session.authenticated.access_token', {\n        get() {\n            let headers = {};\n            let token = get(this, 'session.session.authenticated.access_token');\n            headers['Authorization'] = 'Bearer ' + token;\n            return headers;\n        },\n    }),\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/cdn.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CdnService;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nCdnService = Ember.Service.extend({\n    url: function (url) {\n        var base;\n        base = config.APP.CDN_URL;\n        if (\n            base.substring(base.length - 1, base.length) !== '/' &&\n            url.substring(url.length - 1, url.length) !== '/'\n        ) {\n            base += '/';\n        }\n        return base + url;\n    },\n});\n\nexport default CdnService;\n","define(\"tt4/services/clock\", [\"exports\", \"ember-cli-clock/services/clock\"], function (_exports, _clock) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _clock.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/collector-service.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar collectorService,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport localization from '../classes/localization';\n\nimport config from '../config/environment';\n\nimport DS from 'ember-data';\n\nimport validator from '../classes/validations';\n\nimport { get } from '@ember/object';\n\nimport { sanitize } from 'dom-purify';\n\nimport { isArray } from '@ember/array';\n\nimport { getImageFromUrl, resizeImage } from 'tt4/utils/file-util';\n\nimport $ from 'jquery';\n\nimport { singularize, pluralize } from 'ember-inflector';\n\nimport { decamelize } from '@ember/string';\n\ncollectorService = Ember.Service.extend({\n    store: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    session: Ember.inject.service(),\n    admintool: Ember.inject.service(),\n    routing: Ember.inject.service('-routing'),\n    customerSettings: Ember.inject.service(),\n    userSettings: Ember.inject.service(),\n    capi: Ember.inject.service(),\n    ttapiService: Ember.inject.service('ttapi'),\n    flags: Ember.inject.service(),\n    gui: Ember.inject.service(),\n    addProducts: function (products, worktimegroup = null, is_addition_type = false) {\n        var d, params, ret;\n        //if products.get(\"firstObject\") is \"rfid\"\n        //company_name = @get('session.currentUser.company_info.company_name')\n        //email_country = @get('session.currentUser.company_info.country')\n        //email_content = @get('intl').t(\"general.\"+email_country+\"_nfc_content\")+\"<br><br/>\"+@get('intl').t(\"general.\"+email_country+\"_nfc_customer_info\")+\":<br/>\"+@get('session.currentUser.company_info.company_contact_person')+\"<br>\"+@get('session.currentUser.company_info.company_email')+\"<br>\"+@get('session.currentUser.company_info.company_phone');\n        //email_header = @get('intl').t(\"general.\"+email_country+\"_nfc_header\")\n        //promise = @ttapi\n        //    url: \"sendNfcEmail\"\n        //    data:\n        //        content: email_content.replace(\"{customer}\",company_name)\n        //        header: email_header.string.replace(\"{customer}\",company_name)\n        //        country: email_country\n        //    method: 'post'\n        d = $.Deferred();\n        params = {\n            url: 'service/products',\n            data: JSON.stringify({\n                'service/product': {\n                    products: products,\n                },\n                worktimegroup: worktimegroup,\n                is_addition_type: is_addition_type,\n            }),\n            type: 'POST',\n            contentType: 'application/json',\n            headers: {\n                Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n            },\n        };\n        ret = this.ajax(params);\n        ret.then(\n            function (ret) {\n                var j, len, prods, product;\n                console.info('Adding products succeeded with content', ret);\n                if (collector.products) {\n                    prods = collector.products;\n                } else {\n                    prods = [];\n                }\n                for (j = 0, len = products.length; j < len; j++) {\n                    product = products[j];\n                    prods.push(product);\n                }\n                collector.products = prods;\n                return d.resolve(ret);\n            },\n            function (e) {\n                console.error('Adding products failed', e);\n                return d.reject(e);\n            },\n        );\n        return d;\n    },\n    addProduct: function (product, worktimegroup = null, is_addition_type = false) {\n        return this.addProducts([product], worktimegroup, is_addition_type);\n    },\n    removeProduct: function (product, worktimegroup = null, is_addition_type = false) {\n        var d, params, ret;\n        d = $.Deferred();\n        // when removing product without worktimegroup we add ?safe=true param so backend will prevent removing if it is on for some specific worktimegroup\n        params = {\n            url:\n                'service/products/' +\n                product +\n                (worktimegroup ? '?worktimegroup=' + worktimegroup : '?safe=true') +\n                (is_addition_type ? '&is_addition_type=true' : ''),\n            type: 'DELETE',\n            contentType: 'application/json',\n            headers: {\n                Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n            },\n        };\n        ret = this.ajax(params);\n        ret.then(\n            function (ret) {\n                var j, len, old_prod, prods, prods_now;\n                console.info('Removing product succeeded with content', ret);\n                d.resolve(ret);\n                prods = collector.products;\n                prods_now = [];\n                for (j = 0, len = prods.length; j < len; j++) {\n                    old_prod = prods[j];\n                    if (old_prod !== product) {\n                        prods_now.push(old_prod);\n                    }\n                }\n                return (collector.products = prods_now);\n            },\n            function (e) {\n                return console.error('Removing product failed', e);\n            },\n        );\n        return d;\n    },\n    setProducts: function (\n        products,\n        worktimegroup = null,\n        force = false,\n        is_addition_type = false,\n    ) {\n        var j, len, p, product, ret;\n        console.log('setProducts: ', products, worktimegroup, force);\n        ret = [];\n        for (j = 0, len = products.length; j < len; j++) {\n            product = products[j];\n            if (product.substring(0, 1) === '!') {\n                product = product.substring(1);\n                if (this.productExists(product) || force) {\n                    p = this.removeProduct(product.substring(9), worktimegroup, is_addition_type);\n                    ret.push(p);\n                }\n            } else {\n                if (!this.productExists(product) || force) {\n                    console.log('add');\n                    p = this.addProduct(product.substring(9), worktimegroup, is_addition_type);\n                    ret.push(p);\n                }\n            }\n        }\n        return ret;\n    },\n    products: Em.computed(function () {\n        return collector.products;\n    }),\n    fields: function (form) {\n        if (!form) {\n            return;\n        }\n        form = form.decamelize();\n        form = form.underscore();\n        if (collector.forms == null) {\n            return null;\n        }\n        if (!(form in collector.forms)) {\n            throw new Ember.Error(\"collectorService fields: form '\" + form + \"' not found\");\n        }\n        return collector.forms[form].objects;\n    },\n    fieldArray: function (form, filter = false) {\n        var field, fields, j, len, name, ret;\n        fields = this.fields(form);\n        ret = [];\n        if (filter) {\n            for (j = 0, len = filter.length; j < len; j++) {\n                name = filter[j];\n                if (fields[name] == null) {\n                    continue;\n                }\n                field = fields[name];\n                ret.push({\n                    form: form,\n                    name: name,\n                    translated_name: this.getTranslationForColumn(form, name),\n                    type: field.type,\n                    options: field.options,\n                    features: field.features,\n                });\n            }\n        } else {\n            for (name in fields) {\n                field = fields[name];\n                ret.push({\n                    form: form,\n                    name: name,\n                    translated_name: this.getTranslationForColumn(form, name),\n                    type: field.type,\n                    options: field.options,\n                    features: field.features,\n                });\n            }\n        }\n        return ret;\n    },\n    field: function (form, fieldName) {\n        var field, ret;\n        field = this.formField(form, fieldName);\n        ret = {\n            form: form,\n            name: fieldName,\n            translated_name: this.getTranslationForColumn(form, fieldName),\n            type: field.type,\n            options: field.options,\n            features: field.features,\n        };\n        return ret;\n    },\n    formField: function (form, field) {\n        return this.fields(form)[field];\n    },\n    uses_mongo: function (form) {\n        if (!form) {\n            return;\n        }\n        form = form.decamelize();\n        form = form.underscore();\n        if (collector.forms == null) {\n            return null;\n        }\n        if (!(form in collector.forms)) {\n            throw new Ember.Error(\"collectorService fields: form '\" + form + \"' not found\");\n        }\n        return collector.forms[form].uses_mongo;\n    },\n    forms: function () {\n        return collector.forms;\n    },\n    productExists: function (product) {\n        var products, ref, split;\n        products = collector.products;\n        if (products) {\n            if (product === 'products') {\n                return true;\n            }\n            split = product.split('.');\n            return (ref = split[1]), indexOf.call(products, ref) >= 0;\n        }\n        return false;\n    },\n    getProducts: function () {\n        return collector.products;\n    },\n    moduleExists: function (module) {\n        var modules, ref, split;\n        modules = collector.modules;\n        if (modules) {\n            if (module === 'modules') {\n                return true;\n            }\n            split = module.split('.');\n            return (ref = split[1]), indexOf.call(modules, ref) >= 0;\n        }\n        return false;\n    },\n    formExists: function (name) {\n        if (!collector.forms) {\n            return;\n        }\n        return name in collector.forms;\n    },\n    fieldExists: function (form, name) {\n        if (!this.formExists(form)) {\n            return false;\n        }\n        return name in collector.forms[form].objects;\n    },\n    hasErrors: function (form) {\n        if (!this.formExists(form)) {\n            return false;\n        }\n        if (collector.forms[form].errors) {\n            return true;\n        }\n    },\n    feature: function (form, field, name) {\n        var features, fields;\n        if (!this.formExists(form)) {\n            return null;\n        }\n        fields = this.fields(form);\n        if (fields[field] == null) {\n            return false;\n        }\n        if (fields[field].features == null) {\n            return false;\n        }\n        features = fields[field].features;\n        if (!(name in features)) {\n            return false;\n        }\n        return features[name];\n    },\n    privilege: function (form, privilege) {\n        if (!this.formExists(form)) {\n            return null;\n        }\n        return collector.forms[form].privileges[privilege];\n    },\n    inverseNeeds: function (array) {\n        var item, item_arr, j, l, len, len1, need, ret, split_need;\n        ret = [];\n        for (j = 0, len = array.length; j < len; j++) {\n            need = array[j];\n            split_need = need.split('||');\n            item_arr = [];\n            for (l = 0, len1 = split_need.length; l < len1; l++) {\n                item = split_need[l];\n                if (item.substring(0, 1) === '!') {\n                    item = item.substring(1);\n                } else {\n                    item = '!' + item;\n                }\n                item_arr.push(item);\n            }\n            need = item_arr.join('||');\n            ret.push(need);\n        }\n        return ret;\n    },\n    needsOfArray: function (array) {\n        return Em.A(array).filter((item) => {\n            if (!('needs' in item)) {\n                return true;\n            }\n            return this.testNeeds(item.needs);\n        });\n    },\n    testNeeds: function (need_array) {\n        var all_ok, debug, debugText, inverse, j, l, len, len1, need, ok, split_need;\n        if (!Em.isArray(need_array)) {\n            Ember.assert('You need to provide an array to testNeeds function');\n        }\n        // Property for setting the main OK. This is false if atleast ONE need fails.\n        all_ok = true;\n        // If we don't have anything to test then just return all_ok\n        if (Em.isEmpty(need_array)) {\n            return all_ok;\n        }\n        debugText = '';\n        debug = Em.A(need_array).find(function (item) {\n            return item === 'debug';\n        });\n        // Test every need in the array\n        for (j = 0, len = need_array.length; j < len; j++) {\n            need = need_array[j];\n            // We try to split needs because we might have OR (||) needs.\n            // This works because split always returns array.\n            split_need = typeof need === 'string' ? need.split('||') : [need];\n            // We set the initial OK value to false before we start testing the need.\n            // When we loop OR needs we can just check if OK is true and skip checking the rest.\n            ok = false;\n            if (need === 'debug') {\n                continue;\n            }\n            for (l = 0, len1 = split_need.length; l < len1; l++) {\n                need = split_need[l];\n                // If ok is true we don't need to test splitted values anymore\n                if (ok) {\n                    continue;\n                }\n                if (typeof need === 'string') {\n                    // See if we have inverse, ie. the string starts with \"!\" character\n                    inverse = need.substring(0, 1) === '!';\n                    if (inverse) {\n                        // If we have inverse we need to cut the \"!\" from the start of the string\n                        need = need.substring(1);\n                    }\n                }\n                // Test the need\n                ok = this.testNeedsOne(need);\n                if (inverse) {\n                    // If we have inverse (!) we switch the OK statement\n                    ok = !ok;\n                }\n                if (debug) {\n                    debugText += (inverse ? '!' : '') + need + '=' + ok + '||';\n                }\n            }\n            if (debug) {\n                debugText = debugText.substring(0, debugText.length - 2);\n                if (!ok) {\n                    debugText += ' => all_ok to false';\n                }\n                if (debug) {\n                    debugText += '\\n';\n                }\n            }\n            if (!ok) {\n                // Set the main OK to false if THIS need check fails.\n                all_ok = false;\n            }\n        }\n        if (debug) {\n            debugText = debugText + '\\nall_ok => ' + all_ok;\n            console.debug(debugText);\n        }\n        return all_ok;\n    },\n    testNeedsOne: function (need) {\n        var field, fieldandsetting, form, ok, ref, setting, split, userlevels, values;\n        if (need === 'hide') {\n            ok = false;\n        } else if (typeof need === 'function') {\n            ok = need();\n        } else if (need === 'mobileView') {\n            ok = window.innerWidth <= 768;\n        } else if (need.substring(0, 9) === 'userlevel') {\n            split = need.split('=');\n            userlevels = this.addLoadProfilesForUserlevels(split[1].split(','));\n            if (!this.get('session.currentUser')) {\n                console.info(\n                    \"Needs cannot be tested for 'userlevel' because current user isn't loaded\",\n                );\n                ok = indexOf.call(userlevels, '1') >= 0;\n            } else {\n                ok = ((ref = '' + this.getUserlevel()), indexOf.call(userlevels, ref) >= 0);\n            }\n        } else if (need === 'devMode') {\n            ok = config.APP.devMode;\n            // check if we are in devmode\n        } else if (need === 'development') {\n            ok = Ember.devModeOn === true;\n        } else if (need.includes('formFeature')) {\n            values = need.split('.');\n            ok = this.testFormFeature(values[0], values[2]);\n            // check if service has product\n        } else if (need.substring(0, 8) === 'products') {\n            ok = this.productExists(need);\n            // check if service has module\n        } else if (need.substring(0, 7) === 'modules') {\n            ok = this.moduleExists(need);\n            // modulecontrol check\n        } else if (need.substring(0, 14) === 'modulecontrol.') {\n            ok = this.testModuleControl(need.split('.')[1]);\n            // modulecontrol check\n        } else if (need.startsWith('flag.')) {\n            ok = this.testFlag(need.split('.')[1]);\n            // check for session.currentUser.field\n        } else if (need.substring(0, 15) === 'userfieldcheck.') {\n            ok = this.testCurrentUserField(need.split('.')[1]);\n        } else if (need.substring(0, 14) === 'serviceCountry') {\n            ok = this.testServiceCountry(need.split('@')[1]);\n            // customer settings check\n        } else if (need.substring(0, 15) === 'customersetting') {\n            ok = this.get('customerSettings').checkSetting(need.split('.')[1]);\n            // check form field privilege\n        } else if (need.indexOf('@') !== -1 && need.indexOf('.') !== -1) {\n            [form, fieldandsetting] = need.split('.');\n            [field, setting] = fieldandsetting.split('@');\n            ok = this.feature(form, field, setting);\n            // check form privilege\n        } else if (need.indexOf('@') !== -1) {\n            split = need.split('@');\n            split[0] = decamelize(split[0]);\n            if (split[1] === 'errors') {\n                ok = this.hasErrors(split[0]);\n            } else {\n                ok = this.privilege(split[0], split[1]);\n            }\n            // check form field existance\n        } else if (need.indexOf('.') !== -1) {\n            split = need.split('.');\n            ok = this.fieldExists(split[0], split[1]);\n        } else if (need === 'tt3') {\n            return collector.get('tt3flag');\n        } else if (need === 'userHasSaldos') {\n            ok = this.get('userSettings.hasSaldos');\n        } else if (need === 'passwordDisabled') {\n            ok = this.session.currentUser?.disable_login;\n        } else {\n            ok = this.formExists(need);\n        }\n        return ok;\n    },\n    addLoadProfilesForUserlevels: function (userlevels) {\n        var addThese, ret;\n        addThese = [];\n        ret = userlevels.map(function (userlevel) {\n            var trimmed;\n            if (userlevel.substring(userlevel.length - 1, userlevel.length) === '?') {\n                trimmed = userlevel.substring(0, userlevel.length - 1);\n                addThese = trimmed;\n                return trimmed;\n            } else {\n                return userlevel;\n            }\n        });\n        if (addThese.length > 0) {\n            // this should be maybe loaded somehow from other forms also .. but this works for clockcard\n            // which is the only thing using this userlevel=1? syntax for now\n            if (\n                this.feature('worktime', 'user', 'load_profile') ||\n                this.privilege('worktime', 'limited_access')\n            ) {\n                ret.push('' + this.getUserlevel());\n            }\n        }\n        return ret;\n    },\n    testCurrentUserField: function (value) {\n        var session, user_field;\n        if (this.getUserlevel() === 5) {\n            return true;\n        }\n        if (!this.get('session.currentUser')) {\n            Ember.assert(\n                \"Needs cannot be tested for 'userfieldcheck' because current user isn't loaded\",\n            );\n            return false;\n        }\n        session = this.get('session');\n        user_field = session.get('currentUser.' + value);\n        if (user_field) {\n            return true;\n        } else if (!this.fieldExists('user', value)) {\n            return true;\n        }\n    },\n    testModuleControl: function (needed_module) {\n        var module_controls;\n        if (this.getUserlevel() === 5) {\n            return true;\n        }\n        if (!this.fieldExists('user', 'module_controls')) {\n            return true;\n        }\n        module_controls = this.get('session.currentUser.module_controls');\n        if (!module_controls) {\n            return false;\n        }\n        return indexOf.call(module_controls, needed_module) >= 0;\n    },\n    testFlag: function (name) {\n        return this.get('flags').test(name);\n    },\n    testServiceCountry: function (country) {\n        var company_country;\n        company_country = this.get('session.currentUser.company_info.country');\n        if (!company_country) {\n            return false;\n        }\n        return country === company_country;\n    },\n    testFormFeature: function (form, feature) {\n        var arr, formFeatures, invertNeeds;\n        arr = [];\n        invertNeeds = form.includes('!');\n        form = invertNeeds ? form.substr(1) : form;\n        if (!this.forms()[form]) {\n            return false;\n        }\n        formFeatures = this.forms()[form].features;\n        if (!formFeatures) {\n            return false;\n        }\n        Object.values(formFeatures).forEach((values) => {\n            if (!isArray(values)) {\n                return arr.push(values);\n            } else {\n                return values.forEach((value) => {\n                    return arr.push(value);\n                });\n            }\n        });\n        if (invertNeeds) {\n            return !arr.includes(feature);\n        } else {\n            return arr.includes(feature);\n        }\n    },\n    /*\n  Get array of records.\n\n  Returns promise and when resolved array of records.\n\n  form: record type\n  ids: array of row ids\n  preLoad: if you can assume there isn't usually over 100 records this will reduce needed request count\n\n  */\n    getRecordArray: function (form, ids, preLoad = false) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var getRecords, store;\n            store = this.get('store');\n            getRecords = function () {\n                var id, j, len, promise, promises, record, records;\n                promises = [];\n                records = [];\n                for (j = 0, len = ids.length; j < len; j++) {\n                    id = ids[j];\n                    record = store.peekRecord(form, id);\n                    if (record) {\n                        records.push(record);\n                    } else {\n                        promise = store.findRecord(form, id);\n                        promise.then(function (record) {\n                            return records.push(record);\n                        });\n                    }\n                    promises.push(promise);\n                }\n                return Ember.RSVP.Promise.all(promises).then(function () {\n                    return resolve(records);\n                });\n            };\n            // call for preload only if first object is not found from store\n            // (prevents calling server every time this funciton called)\n            if (preLoad && !store.peekRecord(form, ids[0])) {\n                return store.findAll(form).then(() => {\n                    return getRecords();\n                });\n            } else {\n                return getRecords();\n            }\n        });\n    },\n    getProductByName: function (product) {\n        var params, promise;\n        if (this.get('product_list')) {\n            return this.get('product_list').findBy('name', product);\n        }\n        if (this.get('product_list_fetcher')) {\n            return this.get('product_list_fetcher');\n        }\n        params = {\n            data: {\n                country: this.get('session.currentUser.company_info.country'),\n                lang: moment.locale(),\n            },\n        };\n        promise = this.get('admintool')\n            .get('products', params)\n            .then((products) => {\n                this.set('product_list', products);\n                return console.log(products);\n            });\n        return this.set('product_list_fetcher', promise);\n    },\n    database_value: function (record, form, fields) {\n        var field, j, len, val;\n        val = '';\n        if (!record) {\n            return '';\n        }\n        for (j = 0, len = fields.length; j < len; j++) {\n            field = fields[j];\n            if (record.get(field)) {\n                val += this._format_(record.get(field), form, field) + ' ';\n            }\n        }\n        return val;\n    },\n    _format_: function (\n        value,\n        form,\n        fieldName,\n        format = 'html',\n        record = null,\n        isImageModal = false,\n    ) {\n        var field, first, second, values;\n        if (!value && value !== false) {\n            return '';\n        }\n        field = this.formField(form, fieldName);\n        if (fieldName === 'row_info.created') {\n            field = Ember.Object.create();\n            Ember.set(field, 'type', 'row_info');\n        }\n        if (fieldName === 'row_info.modified') {\n            field = Ember.Object.create();\n            Ember.set(field, 'type', 'row_info');\n        }\n        Ember.set(field, 'ext', fieldName);\n        if (fieldName === 'location' || fieldName === 'end_location') {\n            Ember.set(field, 'type', 'gpslocation');\n        }\n        if (field.type === 'database' && Ember.typeOf(value) === 'number') {\n            value = this.get('store').peekRecord(field.options.form, value);\n        }\n        if (field.type === 'date' && value.indexOf('_') !== -1) {\n            values = value.split('_');\n            first = this.format(values[0], field, null, record, format !== 'html', form);\n            second = this.format(values[1], field, null, record, format !== 'html', form);\n            return first + ' - ' + second;\n        } else {\n            return this.format(\n                value,\n                field,\n                null,\n                record,\n                format === 'html' ? false : format,\n                form,\n                true,\n                isImageModal,\n            );\n        }\n    },\n    format: function (\n        value,\n        field,\n        controller,\n        content = null,\n        donotaddHTML = false,\n        form = null,\n        fuckTheseEmptyDivs = false,\n        fuckTheseImageModals = false,\n    ) {\n        var allRecords,\n            base,\n            child_ext,\n            classes,\n            correctFields,\n            d,\n            dew_point,\n            dist_txt,\n            div,\n            e,\n            endHTML,\n            exe_types,\n            ext,\n            fields,\n            file,\n            filethumb,\n            fileurl,\n            formattedHours,\n            formattedStatus,\n            gps,\n            group_by_materialgroup,\n            hours,\n            html,\n            humidity,\n            image_types,\n            item,\n            j,\n            json,\n            l,\n            len,\n            len1,\n            len2,\n            len3,\n            len4,\n            len5,\n            length,\n            minus,\n            minutes,\n            ms,\n            n,\n            name,\n            names,\n            new_val,\n            o,\n            object,\n            plus,\n            q,\n            r,\n            ref,\n            ref1,\n            ref2,\n            ref3,\n            ref4,\n            ref5,\n            ref6,\n            ref7,\n            ret,\n            return_str,\n            right_ext,\n            self,\n            startHTML,\n            statusIcon,\n            storeData,\n            string,\n            target,\n            target_field,\n            temp,\n            temperature,\n            thisIsSignature,\n            thumburl,\n            tmp,\n            tmpFields,\n            translatedStatus,\n            type,\n            unit,\n            url,\n            val,\n            value_arr,\n            weather,\n            windspeed;\n        self = this;\n        if (typeof field === 'string') {\n            field = collector.getFormObject(field);\n        }\n        field = Em.Object.create(field);\n        ext = field.get('ext') || field.get('name');\n        type = field.get('type');\n        if (ext === 'weather') {\n            type = 'weather';\n        }\n        if (ext === 'location' || ext === 'end_location') {\n            type = 'gpslocation';\n        }\n        if (ext === 'location_map') {\n            type = 'gpslocationmap';\n        }\n        if (ext === 'km') {\n            type = 'km';\n        }\n        if (this.unit(field)) {\n            unit = ' ' + this.unit(field);\n        } else {\n            unit = '';\n        }\n        if (!['csv', 'excel', 'serverlessexcel'].includes(donotaddHTML)) {\n            // Don't show tr measurement minus fields, they are formatted into plus rows\n            if (ext.indexOf('_minus', ext.length - 6) !== -1) {\n                return;\n            }\n            // Format measurements plus fields to also show minus value\n            if (ext.indexOf('_plus', ext.length - 5) !== -1) {\n                name = ext.substring(0, ext.length - 5);\n                if (content) {\n                    minus = content.get(name + '_minus');\n                    plus = content.get(name + '_plus');\n                } else if (controller) {\n                    minus = controller.get('content.' + name + '_minus');\n                    plus = controller.get('content.' + name + '_plus');\n                }\n                // If either one has value, we want to show it in report and force 0 if empty (bugfix EP-9036)\n                if (plus != null || minus != null) {\n                    plus = plus ? plus : '0';\n                    minus = minus ? minus : '0';\n                    val = plus + ' / ' + minus;\n                } else {\n                    val = '';\n                }\n                return val;\n            }\n        }\n        if (\n            !fuckTheseEmptyDivs &&\n            !value &&\n            field.get('type') !== 'checkbox' &&\n            field.get('type') !== 'object' &&\n            type !== 'gpslocation' &&\n            value !== false &&\n            value !== 0\n        ) {\n            if (donotaddHTML) {\n                return '';\n            }\n            //put some empty spaces so we can edit empty cells\n            div = document.createElement('div');\n            div.innerHTML = '&nbsp;';\n            div.setAttribute('style', 'width: 100%;cursor:text');\n            return div;\n        }\n        switch (type) {\n            case 'secure_attachment':\n                return this.intl.t('general.attachments_count', { count: value.length });\n            case 'databasearray':\n            case 'work_permit_attachment':\n                // this is to get report databasearray-filters to show correctly when exporting\n                if (Ember.typeOf(value) === 'string') {\n                    tmpFields = this.fields(field.get('options.form'));\n                    correctFields = tmpFields[field.get('options.fields.0')];\n                    allRecords = this.get('store').peekAll(correctFields['options']['form']);\n                    tmp = allRecords.findBy('id', value);\n                    return tmp.get(correctFields['options']['fields'][0]);\n                }\n                // first only testing with worktime materials .. maybe could be used in other databasearrays also later\n                if (\n                    ext === 'material' &&\n                    (donotaddHTML === false ||\n                        donotaddHTML === 'pdf' ||\n                        donotaddHTML === 'excel' ||\n                        donotaddHTML === 'serverlessexcel')\n                ) {\n                    value_arr = [];\n                    if (this.testNeeds(['materialgroup'])) {\n                        group_by_materialgroup = {};\n                        value.forEach((row) => {\n                            if (Ember.typeOf(row.get) !== 'function') {\n                                return;\n                            }\n                            if (group_by_materialgroup[row.get('materialgroup.name')] == null) {\n                                group_by_materialgroup[row.get('materialgroup.name')] = [];\n                            }\n                            return group_by_materialgroup[row.get('materialgroup.name')].push(row);\n                        });\n                        Object.keys(group_by_materialgroup).forEach((materialgroup) => {\n                            if (materialgroup !== 'undefined') {\n                                if (donotaddHTML) {\n                                    value_arr.push(materialgroup);\n                                } else {\n                                    value_arr.push('<b>' + materialgroup + '</b>');\n                                }\n                            }\n                            return group_by_materialgroup[materialgroup].forEach((row) => {\n                                val =\n                                    row.get('type.name') +\n                                    ': ' +\n                                    row.get('amount') +\n                                    ' ' +\n                                    (row.get('type.unit') || '');\n                                if (\n                                    donotaddHTML === 'pdf' ||\n                                    donotaddHTML === 'excel' ||\n                                    donotaddHTML === 'serverlessexcel'\n                                ) {\n                                    return value_arr.push(val);\n                                } else {\n                                    return value_arr.push('&nbsp;&nbsp;&nbsp;' + val);\n                                }\n                            });\n                        });\n                    } else {\n                        value.forEach((row) => {\n                            if (row.get == null) {\n                                return;\n                            }\n                            if (\n                                row.get('type.name') &&\n                                Ember.typeOf(row.get('amount')) !== 'undefined'\n                            ) {\n                                return value_arr.push(\n                                    row.get('type.name') +\n                                        ': ' +\n                                        row.get('amount') +\n                                        ' ' +\n                                        (row.get('type.unit') || ''),\n                                );\n                            }\n                        });\n                    }\n                    if (donotaddHTML) {\n                        return value_arr.join(' / ');\n                    } else {\n                        return new Ember.String.htmlSafe(\n                            '<span class=\"small text-nowrap\">' + value_arr.join('<br>') + '</span>',\n                        );\n                    }\n                } else if (\n                    ext === 'multitask' &&\n                    (donotaddHTML === false ||\n                        donotaddHTML === 'pdf' ||\n                        donotaddHTML === 'excel' ||\n                        donotaddHTML === 'serverlessexcel')\n                ) {\n                    value_arr = [];\n                    value.forEach((row) => {\n                        var formattedHours, hoursWithClock;\n                        if (row.get == null) {\n                            return;\n                        }\n                        if (\n                            row.get('taskname.name') &&\n                            Ember.typeOf(row.get('hours')) !== 'undefined'\n                        ) {\n                            formattedHours = localization.formatHours(row.get('hours'));\n                            hoursWithClock =\n                                '<span class=\"move move-Time\"></span> ' + formattedHours;\n\n                            // if subtask is added to the task, add it to the string also,\n                            // so it can be seen in the report/pdf/csv\n                            const subTask = row.get('subtaskname.name') ?? '';\n\n                            return value_arr.push(\n                                row.get('taskname.name') +\n                                    ': ' +\n                                    (donotaddHTML ? formattedHours : hoursWithClock) +\n                                    ' ' +\n                                    subTask,\n                            );\n                        }\n                    });\n                    if (donotaddHTML) {\n                        return value_arr.join(' / ');\n                    } else {\n                        return new Ember.String.htmlSafe(\n                            '<span class=\"small text-nowrap\">' + value_arr.join('<br>') + '</span>',\n                        );\n                    }\n                } else if (\n                    ext === 'workpermit' &&\n                    (donotaddHTML === false ||\n                        ['pdf', 'csv', 'excel', 'serverlessexcel'].includes(donotaddHTML))\n                ) {\n                    value_arr = [];\n\n                    value.forEach((row) => {\n                        //format attachments\n                        const attachments = this.intl.t('general.attachments_count', {\n                            count: row.attachments.length,\n                        });\n                        // format type\n                        const typeValue = row.id_type || row.type;\n                        const typeKey = row.id_type ? 'id_type' : 'type';\n                        const Type = this.intl.t(`workpermit.${typeKey}.${typeValue}`);\n                        // format valid_until\n                        const formattedValidUntilDate = moment(row.valid_until).format(\n                            'DD.MM.YYYY',\n                        );\n                        const validUntil = this.intl.t('general.expires', {\n                            date: formattedValidUntilDate,\n                        });\n\n                        value_arr.push(`${attachments} ${Type} ${validUntil}`);\n                    });\n\n                    if (donotaddHTML) {\n                        return value_arr.join(' / ');\n                    } else {\n                        return new Ember.String.htmlSafe(\n                            '<span class=\"small text-nowrap\">' + value_arr.join('<br>') + '</span>',\n                        );\n                    }\n                } else {\n                    return value.get('length');\n                }\n                break;\n            case 'hours':\n                // this is some ugly code!!!!\n                if (\n                    donotaddHTML === 'pdf' ||\n                    donotaddHTML === 'sumrow' ||\n                    donotaddHTML === 'calendar' ||\n                    donotaddHTML === 'excel' ||\n                    donotaddHTML === 'serverlessexcel' ||\n                    donotaddHTML === 'salarycategory'\n                ) {\n                    return localization.formatHours(value, donotaddHTML);\n                } else if (donotaddHTML) {\n                    return value;\n                } else {\n                    if (!isNaN(value)) {\n                        if (Ember.typeOf(value) === 'string') {\n                            value = parseFloat(value);\n                        }\n                        value = value.toFixed(2);\n                    }\n                    formattedHours = localization.formatHours(value);\n                    if (field.features.custom === 'format_also_days') {\n                        formattedHours = localization.formatDaysAndHours(value);\n                    }\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"move move-Time\"></span> ' + formattedHours,\n                    );\n                }\n                break;\n            case 'minutes':\n                if (value > 60) {\n                    hours = value / 60;\n                    minutes = Math.round((hours - Math.floor(hours)) * 60);\n                    return Math.floor(hours) + 'h:' + (minutes < 10 ? '0' : '') + minutes + 'min';\n                }\n                return value + 'min';\n            case 'status':\n                translatedStatus = this.get('intl').exists('status.' + value + '_text');\n                if (translatedStatus) {\n                    formattedStatus = this.get('intl').t('status.' + value + '_text');\n                }\n                if (donotaddHTML) {\n                    if (translatedStatus) {\n                        return formattedStatus;\n                    } else {\n                        return value;\n                    }\n                } else {\n                    if (translatedStatus) {\n                        if (value === 'error_in' || value === 'error_out') {\n                            formattedStatus = this.get('intl').t('status.system_edited_text');\n                        }\n                        statusIcon = (function () {\n                            switch (value) {\n                                case 'open':\n                                    return 'Circle';\n                                case 'approved':\n                                case 'ok':\n                                    return 'CheckedCircle';\n                                case 'closed':\n                                case 'invoiced':\n                                    return 'DoubleTick';\n                                case 'saved':\n                                    return 'SaveDisk';\n                                case 'fixed':\n                                    return 'Maintenance';\n                                case 'new':\n                                    return 'Error';\n                                case 'not_verified':\n                                case 'blocked':\n                                    return 'DoNotDisturb';\n                                case 'error_in':\n                                case 'error_out':\n                                case 'system_edited':\n                                    return 'SystemReport';\n                                case 'rejected':\n                                    return 'Rejected';\n                                default:\n                                    return false;\n                            }\n                        })();\n                        if (statusIcon) {\n                            return new Ember.String.htmlSafe(\n                                '<span class=\"' +\n                                    value +\n                                    ' report-status-icon\" title=\"' +\n                                    formattedStatus +\n                                    '\"><span class=\"move move-' +\n                                    statusIcon +\n                                    '\"></span></span>',\n                            );\n                        } else {\n                            string = this.shortFormat(formattedStatus);\n                            return new Ember.String.htmlSafe(\n                                '<span class=\"report-status-icon ' +\n                                    value +\n                                    '\" title=\"' +\n                                    formattedStatus +\n                                    '\">' +\n                                    string.toUpperCase() +\n                                    '</span>',\n                            );\n                        }\n                    } else {\n                        string = this.shortFormat(value);\n                        return new Ember.String.htmlSafe(\n                            '<span class=\"report-status-icon own-status\" title=\"' +\n                                value +\n                                '\">' +\n                                string.toUpperCase() +\n                                '</span>',\n                        );\n                    }\n                }\n                break;\n            case 'dropdown_userlevel':\n                // own userrole\n                if (parseInt(value) > 9) {\n                    field.get('options').forEach(function (option) {\n                        if (option.indexOf(value) === 0) {\n                            return (name = option.substring(2));\n                        }\n                    });\n                    return name;\n                } else {\n                    if (!content && !form) {\n                        if (controller.get('content.length') > 1) {\n                            content = controller.get('content.firstObject');\n                        } else {\n                            content = controller.get('content');\n                        }\n                        form = content.get('constructor.modelName');\n                    } else if (content) {\n                        form = content.get('constructor.modelName');\n                    }\n                    return this.get('intl').t(form + '.' + ext + '.' + value);\n                }\n                break;\n            case 'dropdown_options':\n            case 'dropdown_values':\n            case 'dropdown_language':\n                if (Ember.isArray(value)) {\n                    return this.formatDropdownSums(value, field, form, donotaddHTML);\n                }\n                if (form) {\n                    return this.getDropdownValue(null, value, field, form);\n                }\n                if (!content) {\n                    if (controller.get('content.length') > 1) {\n                        content = controller.get('content.firstObject');\n                    } else {\n                        content = controller.get('content');\n                    }\n                }\n                return this.getDropdownValue(content, value, field);\n            case 'dropdown_country':\n                return value.toUpperCase();\n            case 'timerlink':\n                if (!value) {\n                    return value;\n                }\n                if (value.get == null) {\n                    return value;\n                }\n                if (\n                    Ember.isEmpty(Ember.get(value, 'endtime')) &&\n                    Ember.isEmpty(Ember.get(value, 'starttime'))\n                ) {\n                    return;\n                }\n                if (Ember.isEmpty(Ember.get(value, 'endtime'))) {\n                    return this.get('intl').t('general.timerlink.started');\n                }\n                ms = moment(Ember.get(value, 'endtime')).diff(\n                    moment(Ember.get(value, 'starttime')),\n                );\n                d = moment.duration(ms);\n                hours = Math.floor(d.asHours());\n                if (hours < 10) {\n                    hours = '0' + hours;\n                }\n                return hours + moment.utc(ms).format(':mm:ss');\n            case 'database':\n                val = '';\n                if (!value) {\n                    return value;\n                }\n                if (value.get == null) {\n                    return value;\n                }\n                fields = this.fields(field.get('options.form'));\n                ref = field.get('options.fields');\n                for (j = 0, len = ref.length; j < len; j++) {\n                    field = ref[j];\n                    if (fields[field]) {\n                        type = fields[field].type;\n                    } else {\n                        type = null;\n                    }\n                    if (type === 'hdfile') {\n                        continue;\n                    }\n                    if (value.get(field)) {\n                        temp = value.get(field);\n                        if (type === 'date') {\n                            temp = moment(temp).format('L');\n                        }\n                        val += temp + ' ';\n                    }\n                }\n                return val;\n            case 'month_dropdown':\n                if (value === '0000-00-00') {\n                    return '';\n                }\n                return moment(value).format('MMMM YYYY');\n            case 'date':\n                if (ext === 'valid_until') {\n                    const formattedValidUntilDate = moment(value).format('DD.MM.YYYY');\n                    return this.intl.t('general.expires', { date: formattedValidUntilDate });\n                }\n\n                if (Ember.typeOf(value) === 'string' && value.substring(0, 6) === 'count:') {\n                    return value.substring(6);\n                }\n                if (Ember.typeOf(value) !== 'string') {\n                    return value;\n                }\n                if (value === '0000-00-00') {\n                    return '';\n                }\n                if (donotaddHTML === 'csv' || donotaddHTML === 'serverlessexcel') {\n                    return moment(value).format('L');\n                }\n                return moment(value).format('dd') + ', ' + moment(value).format('L');\n            case 'datetime':\n                if (Ember.typeOf(value) !== 'string') {\n                    return value;\n                }\n                return moment(value).format('L LT');\n            case 'checkbox':\n                if (donotaddHTML === 'salarycategory') {\n                    return value + ' ' + this.get('intl').t('general.pieces');\n                }\n                if (Ember.typeOf(value) === 'string' && value.includes(':')) {\n                    return this.formatCheckboxSums(value);\n                }\n                ret = function () {\n                    switch (value) {\n                        case '1':\n                        case true:\n                        case 'on':\n                            return this.get('intl').t('general.yes');\n                        default:\n                            return this.get('intl').t('general.no');\n                    }\n                }.call(this);\n                return ret;\n            case 'hdfile':\n            case 'fileupload':\n                image_types = ['image/png', 'image/jpeg', 'image/jpg', 'image/gif', 'image/pjpeg'];\n                exe_types = [\n                    'application/octet-stream',\n                    'application/x-msdownload',\n                    'application/exe',\n                    'application/x-exe',\n                    'application/dos-exe',\n                    'vms/exe',\n                    'application/x-winexe',\n                    'application/msdos-windows',\n                    'application/x-msdos-program',\n                ];\n                if (value.length >= 1) {\n                    return_str = '';\n                    for (l = 0, len1 = value.length; l < len1; l++) {\n                        file = value[l];\n                        if (((ref1 = file.type), indexOf.call(exe_types, ref1) >= 0)) {\n                            return file.name;\n                        }\n                        if (((ref2 = file.type), indexOf.call(image_types, ref2) >= 0)) {\n                            if (donotaddHTML) {\n                                return '';\n                            }\n                            // Always prefer signed URLs over traditional URLs\n                            // Fallback to traditional URLs maintains application stability when:\n                            // - S3 service is temporarily unavailable\n                            // - Signed URL generation fails due to configuration issues\n                            // - Network connectivity issues prevent S3 API calls\n                            // Note: Traditional URLs will return 403 errors due to blocked public S3 access,\n                            // but this prevents complete application crashes and maintains UI functionality\n                            fileurl = file.s3url || file.url;\n                            filethumb = file.s3thumb || file.thumb;\n                            if (file.name === 'signature.png') {\n                                file.thumb = fileurl;\n                            }\n                            if (file.name === 'naama.png') {\n                                file.thumb = fileurl;\n                            }\n                            if (filethumb == null) {\n                                return null;\n                            }\n                            url = this.makeFileUrl(collector.api_url() + '/', filethumb);\n                            // super cool way to render signatures differently .. :+1:\n                            thisIsSignature = false;\n                            if (field.ext) {\n                                thisIsSignature = field.ext.search('sign') !== -1;\n                            }\n                            classes = 'img-thumb' + (thisIsSignature ? ' img-thumb-sign' : '');\n                            if (fuckTheseImageModals) {\n                                return {\n                                    isImage: true,\n                                    src: filethumb || fileurl,\n                                    fullSrc: fileurl,\n                                    classes,\n                                };\n                            }\n                            // This is bit ugly to inject router here but what can you do\n                            base = this.getModalUrl('modal=showImage,' + fileurl);\n                            startHTML =\n                                '<a class=\"hidden-print\" href=\"' +\n                                base +\n                                '\"><div class=\"' +\n                                classes +\n                                '\" style=\"background-image:url(\\'';\n                            endHTML =\n                                '\\');\"></div></a><div class=\"visible-print ' +\n                                classes +\n                                '\" style=\"content:url(\\'' +\n                                url +\n                                '\\');\"></div>';\n                            return_str += ' ' + startHTML + url + endHTML;\n                        } else if (file.url || file.s3url) {\n                            if (donotaddHTML) {\n                                return_str += file.name + ' ';\n                            } else {\n                                // Always prefer signed URLs over traditional URLs\n                                // Fallback maintains application stability - see comment above for details\n                                url = this.makeFileUrl(\n                                    collector.api_url() + '/',\n                                    file.s3url || file.url,\n                                );\n                                target = this.get('gui').isIOS\n                                    ? ' target=\"_system\"'\n                                    : ' target=\"_blank\"';\n                                return_str +=\n                                    ' ' +\n                                    '<a href=\"' +\n                                    url +\n                                    '\" ' +\n                                    target +\n                                    '>' +\n                                    file.name +\n                                    '</a>';\n                            }\n                        }\n                    }\n                    if (donotaddHTML) {\n                        return return_str;\n                    }\n                    return new Ember.String.htmlSafe(return_str);\n                } else {\n                    if (((ref3 = value.type), indexOf.call(image_types, ref3) >= 0)) {\n                        if (donotaddHTML) {\n                            return '';\n                        }\n                        // Always prefer signed URLs over traditional URLs\n                        // Fallback maintains application stability - see comment above for details\n                        const thumbUrl = value.s3thumb || value.thumb;\n                        const fileUrl = value.s3url || value.url;\n\n                        if (thumbUrl == null) {\n                            return null;\n                        }\n                        url = this.makeFileUrl(collector.api_url() + '/', thumbUrl);\n                        // super cool way to render signatures differently .. :+1:\n                        thisIsSignature = field.ext.search('sign') !== -1;\n                        classes = 'img-thumb' + (thisIsSignature ? ' img-thumb-sign' : '');\n                        // This is bit ugly to inject router here but what can you do\n                        base = this.getModalUrl('modal=showImage,' + fileUrl);\n                        startHTML =\n                            '<a class=\"hidden-print\" href=\"' +\n                            base +\n                            '\"><div class=\"' +\n                            classes +\n                            '\" style=\"background-image:url(\\'';\n                        endHTML =\n                            '\\');\"></div></a><div class=\"visible-print ' +\n                            classes +\n                            '\" style=\"content:url(\\'' +\n                            url +\n                            '\\');\"></div>';\n                        return new Ember.String.htmlSafe(startHTML + url + endHTML);\n                    } else if (value.s3url || value.url) {\n                        if (donotaddHTML) {\n                            return value.name + ' ';\n                        }\n                        // Always prefer signed URLs over traditional URLs\n                        // Fallback maintains application stability - see comment above for details\n                        url = this.makeFileUrl(collector.api_url() + '/', value.s3url || value.url);\n                        return new Ember.String.htmlSafe(\n                            '<a href=\"' + url + '\" target=\"_blank \">' + value.name + '</a>',\n                        );\n                    } else {\n                        return null;\n                    }\n                }\n                break;\n            case 'signature':\n                if (donotaddHTML) {\n                    return '';\n                }\n                image_types = ['image/png', 'image/jpeg', 'image/jpg', 'image/gif', 'image/pjpeg'];\n                if (value.length > 0 && typeof value !== 'string') {\n                    value = value[0];\n                }\n                if (((ref4 = value.type), indexOf.call(image_types, ref4) >= 0)) {\n                    url = value.s3url ? value.s3url : collector.api_url() + '/' + value.url;\n                    thumburl = value.s3thumb ? value.s3thumb : url;\n                    classes = 'img-thumb img-thumb-sign';\n                    startHTML =\n                        '<a href=\"' +\n                        url +\n                        '\" target=\"_blank \"><div class=\"' +\n                        classes +\n                        '\" style=\"background-image:url(\\'';\n                    endHTML =\n                        '\\');\"></div><style>@media print{div.img-thumb::after{content:url(\"' +\n                        thumburl +\n                        '\");}}</style></a>';\n                    return new Ember.String.htmlSafe(startHTML + thumburl + endHTML);\n                }\n                if (typeof value === 'string') {\n                    //for mongo, signatures are stored directly as a base64 string\n                    type = value.substr(0, value.indexOf(';')).substr(5); //extract image type from \"data:image/png;base64here\"\n                    if (indexOf.call(image_types, type) >= 0) {\n                        classes = 'img-thumb img-thumb-sign';\n                        html =\n                            '<div class=\"' +\n                            classes +\n                            '\" style=\"background-image:url(\\'' +\n                            value +\n                            '\\')\"</div></a>';\n                        return new Ember.String.htmlSafe(html);\n                    } else {\n                        return null;\n                    }\n                } else {\n                    return null;\n                }\n                break;\n            case 'object':\n                if (content != null) {\n                    right_ext = ext.split('_');\n                    object = content[right_ext[0]];\n                    right_ext.shift();\n                    child_ext = right_ext.join('_');\n                    if (object != null) {\n                        target_field = {\n                            type: field.get('target_type'),\n                            ext: child_ext,\n                            features: {},\n                        };\n                        return this.format(\n                            object[child_ext],\n                            target_field,\n                            null,\n                            Em.Object.create(object),\n                            donotaddHTML,\n                        );\n                    }\n                }\n                return '';\n            case 'multiselect':\n                if (Ember.typeOf(value) === 'number') {\n                    value = this.get('store').peekRecord(field.get('options.form'), value);\n                    val = '';\n                    if (!value) {\n                        return value;\n                    }\n                    if (value.get == null) {\n                        return value;\n                    }\n                    fields = this.fields(field.get('options.form'));\n                    ref5 = field.get('options.fields');\n                    for (n = 0, len2 = ref5.length; n < len2; n++) {\n                        field = ref5[n];\n                        if (value.get(field)) {\n                            val += value.get(field);\n                        }\n                    }\n                    return val;\n                }\n                if (ext.includes('_notices') && value.length > 0) {\n                    length = new Set(value).size;\n                    return length;\n                }\n                if (Ember.typeOf(value) === 'array') {\n                    storeData =\n                        (ref6 = this.get('store').peekAll(field.get('options.form'))) != null\n                            ? ref6.map((rec) => {\n                                  return parseInt(rec.id);\n                              })\n                            : void 0;\n                    value = storeData.length\n                        ? value.filter((v) => {\n                              return storeData.includes(v);\n                          })\n                        : value;\n                }\n                if (value.length > 0) {\n                    return value.length + ' ' + this.get('intl').t('report.items_checked');\n                }\n                break;\n            case 'password':\n                if (value === 'secured') {\n                    if (donotaddHTML) {\n                        return '';\n                    }\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"label-m label-m-approved\">' +\n                            this.get('intl').t('status.secured') +\n                            '</span>',\n                    );\n                } else {\n                    if (donotaddHTML) {\n                        return value;\n                    }\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"label-m label-m-open lowercase\">' + value + '</span>',\n                    );\n                }\n                break;\n            case 'embedded':\n                new_val = '';\n                ref7 = field.get('options');\n                for (o = 0, len3 = ref7.length; o < len3; o++) {\n                    field = ref7[o];\n                    if (value[field]) {\n                        new_val += value[field] + ', ';\n                    }\n                }\n                return (value = new_val.slice(0, -2));\n            case 'checkboxgroup':\n                names = [];\n                self = this;\n                value.forEach((sub_value) => {\n                    var addthis;\n                    if (field.options[sub_value] == null) {\n                        return;\n                    }\n                    if (field.options[sub_value].substring(0, 1) !== '$') {\n                        addthis = field.options[sub_value];\n                    } else {\n                        ext = field.ext ? field.ext : field.external_type;\n                        addthis = self.get('intl').t('orientations.' + ext + '.' + sub_value); // need to find better solution for this (works for orientations only now)\n                    }\n                    if (\n                        addthis === field.options[sub_value] &&\n                        this.get('intl').exists(field.options[sub_value])\n                    ) {\n                        addthis = this.get('intl').t(field.options[sub_value]);\n                    }\n                    return names.push(donotaddHTML ? addthis : this.minifyLong(addthis));\n                });\n                if (donotaddHTML) {\n                    return names.join(', ');\n                } else {\n                    return new Ember.String.htmlSafe(names.join('<br>'));\n                }\n                break;\n            case 'gpslocation':\n                if (value) {\n                    try {\n                        gps = JSON.parse(value);\n                    } catch (error1) {\n                        e = error1;\n                        return '';\n                    }\n                    if (gps.distance) {\n                        if (gps.distance > 1000) {\n                            dist_txt = Math.round(gps.distance / 1000) + 'km';\n                        } else {\n                            dist_txt = Math.round(gps.distance) + 'm';\n                        }\n                        if (donotaddHTML) {\n                            return dist_txt;\n                        }\n                        return new Ember.String.htmlSafe(\n                            '<span class=\"label-m label-m-approved\" title=\"Lat: ' +\n                                gps.latitude +\n                                ', Long: ' +\n                                gps.longitude +\n                                ', Dist ' +\n                                dist_txt +\n                                '\">' +\n                                dist_txt +\n                                '</span>',\n                        );\n                    } else {\n                        if (donotaddHTML) {\n                            return this.get('intl').t('general.yes');\n                        }\n                        return new Ember.String.htmlSafe(\n                            '<span class=\"label-m label-m-approved\" title=\"Lat: ' +\n                                gps.latitude +\n                                ', Long: ' +\n                                gps.longitude +\n                                '\"><span class=\"glyphicon glyphicon-ok\"></span></span>',\n                        );\n                    }\n                } else {\n                    if (donotaddHTML) {\n                        return this.get('intl').t('general.no');\n                    }\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"label-m label-m-open\" title=\"' +\n                            this.get('intl').t('field.gps.no_value') +\n                            '\"><span class=\"glyphicon glyphicon-remove\"></span></span>',\n                    );\n                }\n                break;\n            case 'gpslocationmap':\n                if (value) {\n                    let gps = null;\n                    try {\n                        gps = JSON.parse(value);\n                    } catch (e) {\n                        return 'broken coordinates';\n                    }\n\n                    if (donotaddHTML) {\n                        return this.get('intl').t('general.yes');\n                    }\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"label-m label-m-approved\" title=\"Lat: ' +\n                            gps.latitude +\n                            ', Long: ' +\n                            gps.longitude +\n                            '\"><span class=\"glyphicon glyphicon-ok\"></span></span>',\n                    );\n                }\n                break;\n            case 'timeclean_imei':\n                if (!value) {\n                    return '';\n                }\n                try {\n                    value = JSON.parse(value);\n                } catch (error1) {\n                    e = error1;\n                    value = [value];\n                }\n                if (donotaddHTML) {\n                    string = '';\n                    for (q = 0, len4 = value.length; q < len4; q++) {\n                        item = value[q];\n                        string += item + ', ';\n                    }\n                    return string.slice(0, -2);\n                } else {\n                    string = '';\n                    for (r = 0, len5 = value.length; r < len5; r++) {\n                        item = value[r];\n                        string += '<code>' + item + '</code><br>';\n                    }\n                    return new Ember.String.htmlSafe(string.slice(0, -4));\n                }\n                break;\n            case 'password':\n                if (value === 'secured') {\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"label-m label-m-approved\">' + value.toUpperCase() + '</span>',\n                    );\n                } else {\n                    return new Ember.String.htmlSafe(\n                        '<span class=\"label-m label-m-open\">' + value + '</span>',\n                    );\n                }\n                break;\n            case 'weather':\n                if (value === 'null') {\n                    return '';\n                }\n                if (Em.isBlank(value)) {\n                    return '';\n                }\n                if (value && value !== '') {\n                    if (Ember.typeOf(value) === 'string') {\n                        if (value.slice(0, 1) === '\"' && value.slice(-1) === '\"') {\n                            value = value.slice(1, -1);\n                        }\n                        try {\n                            json = JSON.parse(value);\n                        } catch (error1) {\n                            e = error1;\n                            return '';\n                        }\n                    } else {\n                        json = value;\n                    }\n                    if (donotaddHTML) {\n                        temperature = json.temperature ? json.temperature : '-';\n                        windspeed = json.windspeed ? json.windspeed : '-';\n                        humidity = json.humidity ? json.humidity : '-';\n                        dew_point = json.dew_point ? json.dew_point : '-';\n                        weather = temperature + ' °C, ' + windspeed + ' m/s ' + humidity + ' % ';\n                        weather +=\n                            this.get('intl').t('worksitediary.abbr_rel_hum') +\n                            ', ' +\n                            this.get('intl').t('worksitediary.abbr_dew_point') +\n                            ': ' +\n                            dew_point +\n                            ' °C';\n                        return weather;\n                    } else {\n                        string =\n                            \"<span class='weather-icon move move-\" + json.weather + \"'></span> \";\n                        if (json.temperature) {\n                            string += json.temperature + '&deg;C, ';\n                        } else {\n                            string += '- &deg;C, ';\n                        }\n                        if (json.windspeed) {\n                            string += json.windspeed + ' m/s, ';\n                        } else {\n                            string += '- m/s, ';\n                        }\n                        if (json.humidity) {\n                            string +=\n                                json.humidity +\n                                '% ' +\n                                this.get('intl').t('worksitediary.abbr_rel_hum') +\n                                ', ';\n                        } else {\n                            string +=\n                                '- % ' + this.get('intl').t('worksitediary.abbr_rel_hum') + ', ';\n                        }\n                        string += this.get('intl').t('worksitediary.abbr_dew_point') + ': ';\n                        if (json.dew_point) {\n                            string += json.dew_point;\n                        } else {\n                            string += '- &deg;C';\n                        }\n                        return new Ember.String.htmlSafe(string);\n                    }\n                } else {\n                    return '';\n                }\n                break;\n            case 'radio':\n                if (!value) {\n                    return value;\n                }\n                if (value.substring(0, 1) === '$') {\n                    return this.get('intl').t(form + '.option.' + value.substring(1));\n                } else {\n                    return this.get('intl').t(form + '.' + ext + '.' + value);\n                }\n                break;\n            case 'row_info':\n                if ((ext = 'row_info.created' && donotaddHTML !== 'serverlessexcel')) {\n                    return moment(value, 'L LT').format('L LT');\n                } else {\n                    return value;\n                }\n                break;\n            case 'textarea':\n                if (donotaddHTML === 'serverlessexcel') {\n                    return value.replace(/(\\r\\n\\t|\\n|\\r\\t)/gm, ' ');\n                } else if (donotaddHTML) {\n                    return sanitize(value);\n                } else {\n                    return Ember.String.htmlSafe(\n                        \"<span style='white-space: pre-line;'>\" + sanitize(value) + '</span>',\n                    );\n                }\n                break;\n            case 'price':\n                if (!value) {\n                    return value;\n                }\n                return Math.round((value + 0.00001) * 100) / 100;\n            case 'km':\n                if (!['csv', 'excel', 'serverlessexcel'].includes(donotaddHTML)) {\n                    return value + ' km';\n                }\n                return value;\n            default:\n                if (controller && controller.get('parentController')) {\n                    value = controller.get('parentController').formatter(ext, value + unit);\n                }\n                if (donotaddHTML === 'pdf') {\n                    return '' + value;\n                }\n                return value;\n        }\n    },\n    formatDropdownSums: function (values, field, form, donotaddHTML) {\n        var formattedSums, pdfSums;\n        formattedSums = '';\n        pdfSums = '';\n        Object.entries(values).forEach((data) => {\n            var option, translatedValue;\n            if (this.get('intl').exists(form + '.' + field.ext + '.' + data[0])) {\n                translatedValue = this.get('intl').t(form + '.' + field.ext + '.' + data[0]);\n            } else if (this.get('intl').exists(form + '.' + field.external_type + '.' + data[0])) {\n                translatedValue = this.get('intl').t(\n                    form + '.' + field.external_type + '.' + data[0],\n                );\n            } else {\n                option = field.options.find((v) => {\n                    return v.id === data[0];\n                });\n                translatedValue = option && Ember.typeOf(option) === 'object' ? option.value : null;\n            }\n            if (translatedValue) {\n                formattedSums += '<div>' + translatedValue + ': ' + data[1] + '</div>';\n                return (pdfSums += translatedValue + ': ' + data[1] + '\\n');\n            }\n        });\n        if (donotaddHTML === 'sumrow') {\n            return pdfSums;\n        }\n        return Ember.String.htmlSafe(formattedSums);\n    },\n    makeFileUrl: function (url, str) {\n        if (str.startsWith('http')) {\n            return str;\n        } else {\n            return url + str;\n        }\n    },\n    formatCheckboxSums: function (value) {\n        var onoff, ret;\n        onoff = value.split(',');\n        ret = [];\n        onoff.forEach((item) => {\n            var v;\n            v = item.split(':');\n            // If just on or off and value is 1 don't show amounts as capi someone returs these as false/true or on:1 / off:1\n            // trying to be cohesive like this\n            if (onoff.length === 1 && v[1] === '1') {\n                return ret.push(\n                    v[0] === 'on'\n                        ? this.get('intl').t('general.yes')\n                        : this.get('intl').t('general.no'),\n                );\n            } else {\n                return ret.push(\n                    v[0] === 'on'\n                        ? this.get('intl').t('general.yes') + ': ' + v[1]\n                        : this.get('intl').t('general.no') + ': ' + v[1],\n                );\n            }\n        });\n        // Reverse so we have yes first as in report sums\n        return ret.reverse().join(' / ');\n    },\n    minifyLong: function (str, length = 20) {\n        if (str.string != null) {\n            str = str.string;\n        }\n        if (str.length <= length) {\n            return str;\n        }\n        return '<span title=\"' + str + '\">' + str.substring(0, length) + '...</span>';\n    },\n    getModalUrl: function (url) {\n        var base, split;\n        base = this.get('routing.router.location.location.href');\n        split = base.split('?');\n        if (split[1] != null && split[1].substr(0, 6) === 'modal=') {\n            delete split[1];\n        }\n        url = encodeURIComponent(url);\n        url = url.replace('%3D', '=');\n        if (url.startsWith('http')) {\n            console.log('here');\n            return url;\n        }\n        return split[0] + '?' + (split[1] != null ? split[1] + '&' + url : url);\n    },\n    getDropdownValue: function (content, value, field, form = null) {\n        var ext, option, options, ret;\n        ext = Ember.get(field, 'ext');\n        if (Ember.get(field, 'name')) {\n            options = Ember.get(field, 'options');\n            if (form) {\n                ret = this.parseDropdownSums(form, field, value);\n                if (ret) {\n                    return ret;\n                }\n            }\n            option = options.findBy('id', value);\n            if (!option) {\n                return value;\n            }\n            return option.value;\n        } else if (form) {\n            ret = this.parseDropdownSums(form, field, value);\n            if (!ret) {\n                options = Ember.get(field, 'options');\n                option = options.findBy('id', value);\n                if (!option) {\n                    return value;\n                }\n                return option.value;\n            }\n            return ret;\n        } else {\n            return this.get('intl').t(\n                content.get('constructor.modelName') + '.' + ext + '.' + value,\n            );\n        }\n    },\n    parseDropdownSums: function (form, field, value) {\n        var arr, ext, index, is_summing, j, len, m, option, options, str, summing_object, temp_arr;\n        ext = Ember.get(field, 'ext') ? Ember.get(field, 'ext') : Ember.get(field, 'external_type');\n        // test for summing\n        is_summing = true;\n        summing_object = {};\n        if (Ember.typeOf(value) === 'string') {\n            arr = value.split(',');\n            for (j = 0, len = arr.length; j < len; j++) {\n                str = arr[j];\n                m = /(.+):(\\d*)/i.exec(str);\n                if (m === null) {\n                    is_summing = false;\n                } else {\n                    summing_object[m[1]] = m[2];\n                }\n            }\n        }\n        if (is_summing) {\n            options = Ember.get(field, 'options');\n            temp_arr = [];\n            for (index in summing_object) {\n                option = options.findBy('id', index);\n                if (this.get('intl').exists(form + '.' + ext + '.' + index)) {\n                    temp_arr.push(\n                        this.get('intl').t(form + '.' + ext + '.' + index) +\n                            ':' +\n                            summing_object[index],\n                    );\n                } else if (option) {\n                    temp_arr.push(option.value + ':' + summing_object[index]);\n                } else {\n                    temp_arr.push(index + ':' + summing_object[index]);\n                }\n            }\n            return temp_arr.join(', ');\n        } else if (this.get('intl').exists(form + '.' + ext + '.' + value)) {\n            return this.get('intl').t(form + '.' + ext + '.' + value);\n        } else {\n            return false;\n        }\n    },\n    format_export: function (value) {\n        if (value != null && /<[a-z][\\s\\S]*>|{[\\s\\S]*}/i.test(value.string)) {\n            value = '';\n        }\n        if (\n            value instanceof HTMLElement ||\n            value == null ||\n            /<[a-z][\\s\\S]*>|{[\\s\\S]*}/i.test(value)\n        ) {\n            value = '';\n        }\n        return value.toString();\n    },\n    unit: function (field) {\n        switch (field.get('type')) {\n            case 'minutes':\n                return 'min';\n            case 'price':\n                return '€';\n            case 'big_price':\n                return '€';\n            default:\n                return field.get('options');\n        }\n    },\n    isMandatory: function (field, model) {\n        if (field && typeof field.features.mandatory === 'object') {\n            return validator._is_visible(model, field.features.mandatory);\n        } else if (field.features.mandatory) {\n            return true;\n        }\n        return false;\n    },\n    isHidden: function (field, model) {\n        if (field && typeof field.features.hide === 'object') {\n            return !validator._is_visible(model, field.features.hide);\n        } else if (field.features.hide) {\n            return true;\n        }\n        return false;\n    },\n    getFieldName: function (form, field) {\n        var name;\n        if (field.get('translation')) {\n            return this.get('intl').t(field.get('translation'));\n        }\n        form = form.underscore();\n        if (field.get('type') === 'checkboxgroup') {\n            name = field.get('name')\n                ? field.get('name')\n                : this.get('intl').t(form + 's.' + field.get('ext'));\n            return name;\n        }\n        if (form.startsWith('measurement_custom')) {\n            form = 'report.measurement_custom1';\n        }\n        return field.get('name') || this.get('intl').t(form + '.' + field.get('ext'));\n    },\n    getLogo: function () {\n        var d, imageTypes;\n        d = new $.Deferred();\n        imageTypes = ['image/gif', 'image/png', 'image/jpg', 'image/jpeg'];\n        this.get('store')\n            .findAll('logo')\n            .then(function (logo) {\n                var img, url;\n                if (logo.get('length') > 0 && !Ember.isEmpty(logo)) {\n                    logo = logo.get('firstObject.logo');\n                    if (logo.length === 0) {\n                        url = 'img/brand/logo_with_text.png';\n                        return getImageFromUrl(url).then((file) => {\n                            return resizeImage(file, 600, 300, 60).then((resized) => {\n                                return d.resolve(resized);\n                            });\n                        });\n                    } else {\n                        if (logo.length > 0) {\n                            logo = logo[0];\n                        }\n                        if (!imageTypes.includes(logo.type)) {\n                            url = 'img/brand/logo_with_text.png';\n                            getImageFromUrl(url).then((file) => {\n                                return resizeImage(file, 600, 300, 60).then((resized) => {\n                                    return d.resolve(resized);\n                                });\n                            });\n                        }\n                        img = new Image();\n                        img.crossOrigin = 'Anonymous';\n                        img.onload = function () {\n                            var canvas, ctx, dataURL;\n                            canvas = document.createElement('CANVAS');\n                            ctx = canvas.getContext('2d');\n                            canvas.height = this.height;\n                            canvas.width = this.width;\n                            ctx.drawImage(this, 0, 0);\n                            dataURL = canvas.toDataURL();\n                            canvas = null;\n                            return d.resolve(dataURL);\n                        };\n                        return (img.src = config.APP.COLLECTOR_API_URL + '/' + logo.url);\n                    }\n                } else {\n                    url = 'img/brand/logo_with_text.png';\n                    return getImageFromUrl(url).then((file) => {\n                        return resizeImage(file, 600, 300, 60).then((resized) => {\n                            return d.resolve(resized);\n                        });\n                    });\n                }\n            });\n        return d.promise();\n    },\n    getUserlevel: function (session) {\n        var user;\n        if (session == null) {\n            session = this.get('session');\n        }\n        user = session.get('currentUser');\n        if (user != null) {\n            if (typeof user.userlevel === 'string') {\n                return parseInt(user.userlevel);\n            } else {\n                return parseInt(user.get('userlevel'));\n            }\n        }\n    },\n    ttapi: function (params) {\n        return this.get('ttapiService').request(params.url, params);\n    },\n    ttapi_url: function () {\n        return this.get('ttapiService').host;\n    },\n    ccapi: function (params) {\n        if (config.environment !== 'development' && this.get('flags').test('cc-url')) {\n            params.url = this.get('flags').test('cc-url') + '/trigger/' + params.url;\n        } else {\n            params.url = config.APP.CC_URL + '/' + params.url;\n        }\n        if (params.data == null) {\n            params.data = {};\n        }\n        if (config.environment === 'development') {\n            params.data.capi_url = 'http://capi/';\n            params.data.ttapi_url = 'http://ttapi/';\n        } else {\n            params.data.capi_url = config.APP.COLLECTOR_API_URL + '/';\n            params.data.ttapi_url = this.get('ttapiService').host + '/';\n        }\n        params.data.token = this.get('session.session.authenticated.access_token');\n        params.headers = {\n            Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n        };\n        //console.log \"params\", params\n        return $.ajax(params);\n    },\n    getApiUrl: function () {\n        return config.APP.COLLECTOR_API_URL + '/';\n    },\n    ajax: function (params) {\n        return this.get('capi').request(params.url, params);\n    },\n    cget: function (form, params = {}, sideload = false) {\n        var self;\n        self = this;\n        if (sideload && !params.sideload) {\n            params.sideload = true;\n        }\n        return new Ember.RSVP.Promise(function (resolve, reject) {\n            var paramStr, pluralForm, promise, url;\n            pluralForm = self.pluralize(form);\n            url = pluralForm;\n            //paramArr = []\n            //$.each params, (key, value) ->\n            //    paramArr.push key + \"=\" + value\n            //paramStr = paramArr.join '&'\n\n            // remove undefined params\n            Object.keys(params).forEach(function (key) {\n                if (Ember.typeOf(params[key]) === 'undefined') {\n                    return delete params[key];\n                }\n            });\n            paramStr = $.param(params);\n            if (paramStr !== '') {\n                url += '?' + paramStr;\n            }\n            promise = self.ajax({\n                url: url,\n                method: 'get',\n            });\n            promise.then(function (response) {\n                var EmberRows, rows;\n                if (sideload) {\n                    rows = self.injectSideload(pluralForm, response, sideload === 'obj');\n                } else if (response[form]) {\n                    rows = Em.A(response[form]);\n                } else {\n                    rows = Em.A(response[pluralForm]);\n                }\n                EmberRows = Em.A([]);\n                rows.forEach(function (row) {\n                    return EmberRows.pushObject(Ember.Object.create(row));\n                });\n                return Ember.run(null, resolve, EmberRows);\n            });\n            return promise.catch(function (response) {\n                response.then = null;\n                return Ember.run(null, reject, response);\n            });\n        });\n    },\n    injectSideload: function (form, data, asObj = false) {\n        var cell,\n            column,\n            column_name,\n            field,\n            id,\n            item,\n            j,\n            key,\n            l,\n            len,\n            len1,\n            name,\n            row,\n            rows,\n            self,\n            str,\n            subset,\n            subsets;\n        self = this;\n        rows = data[form];\n        subsets = {};\n        for (name in data) {\n            subset = data[name];\n            if (name === form || name === 'count') {\n                continue;\n            }\n            subsets[name] = {};\n            for (j = 0, len = subset.length; j < len; j++) {\n                item = subset[j];\n                if (asObj) {\n                    subsets[name][item.id] = item;\n                } else {\n                    str = '';\n                    for (key in item) {\n                        cell = item[key];\n                        if (key !== 'id' && cell !== null) {\n                            str += cell + ' ';\n                        }\n                    }\n                    subsets[name][item.id] = str.substring(0, str.length - 1);\n                }\n            }\n        }\n        for (id = l = 0, len1 = rows.length; l < len1; id = ++l) {\n            row = rows[id];\n            for (column in row) {\n                cell = row[column];\n                // lets check this fields options.form to match it to sideloaded forms\n                if (column !== 'id') {\n                    field = self.fieldExists(singularize(form), column)\n                        ? self.field(singularize(form), column)\n                        : {};\n                    if (field.options != null) {\n                        column_name = self.pluralize(field.options.form);\n                    } else {\n                        column_name = self.pluralize(column);\n                    }\n                } else {\n                    column_name = self.pluralize(column);\n                }\n                if (column_name in subsets) {\n                    rows[id][column] = subsets[column_name][cell];\n                }\n            }\n        }\n        return rows;\n    },\n    // used for filter dropdowns. ie. when employer is changed reload user dropdown\n    getDropdownDepency: function (field) {\n        if (field === 'employer') {\n            return [\n                {\n                    field: 'user',\n                    filter: 'employer',\n                },\n            ];\n        } else if (\n            field === 'project' &&\n            this.testNeedsOne('task') &&\n            collector.forms['task'].features != null &&\n            collector.forms['task'].features.link === 'project'\n        ) {\n            return [\n                {\n                    field: 'task',\n                    filter: 'project',\n                },\n            ];\n        } else if (field === 'worktimegroup' && this.testNeedsOne('products.salarytype_v2')) {\n            // salarytypesv2 is a special case\n            return [\n                {\n                    field: 'abcensetype',\n                    filter: 'worktimegroup',\n                },\n                {\n                    field: 'worktype',\n                    filter: 'worktimegroup',\n                },\n            ];\n        }\n        return [];\n    },\n    findFormRelations: function (form, type, params = {}) {\n        var pluralForm, self, url;\n        self = this;\n        pluralForm = pluralize(form).camelize();\n        url = pluralForm + '/' + type;\n        return DS.PromiseArray.create({\n            promise: new Ember.RSVP.Promise(function (resolve, reject) {\n                return self\n                    .ajax({\n                        url: url,\n                        method: 'GET',\n                        data: params,\n                    })\n                    .then(\n                        function (data) {\n                            var formattedData;\n                            formattedData = self.formatParentFormResponse(data, form, type);\n                            return Ember.run(null, resolve, formattedData);\n                        },\n                        function (jqXHR) {\n                            jqXHR.then = null;\n                            return Ember.run(null, reject, jqXHR);\n                        },\n                    );\n            }),\n        });\n    },\n    formatParentFormResponse: function (response, form, type) {\n        var index, j, key, len, modelName, row, rows, self;\n        self = this;\n        modelName = collector.getFormObject(form + '.' + type).options.form;\n        for (key in response) {\n            rows = response[key];\n            if (!(key !== 'count')) {\n                continue;\n            }\n            // If model isn't same as gotten type name we have to set response content to right name\n            // Like in orientation projects are named ori_sites and fetched from /orinentations/ori_sites\n            // but model name is still project and needs to be renamed\n            response[modelName] = [];\n            // Convert from the {id: id, values: {field1: value, field2: value} format that\n            // /:form/:field fetch returns to ember format for pushing to store\n            for (index = j = 0, len = rows.length; j < len; index = ++j) {\n                row = rows[index];\n                row.attributes = row.values;\n                delete row.values;\n                row.type = modelName;\n                response[modelName][index] = row;\n            }\n            response[modelName] = self.get('store').push({\n                data: response[modelName],\n            });\n        }\n        return response[modelName];\n    },\n    pushToStore: function (response) {\n        delete response.count;\n        return this.get('store').pushPayload(response);\n    },\n    pluralize: function (str) {\n        return pluralize(str);\n    },\n    get_greeting: function () {\n        var greeting_arr, str, time;\n        time = parseInt(moment().format('HH'), 10);\n        str = this.get('intl').t('general.welcome');\n        if (str == null) {\n            return '...';\n        }\n        greeting_arr = str.split('\\n');\n        if (time < 2) {\n            return greeting_arr[0];\n        } else if (time >= 2 && time < 5) {\n            return greeting_arr[1];\n        } else if (time >= 5 && time < 10) {\n            return greeting_arr[2];\n        } else if (time >= 10 && time < 12) {\n            return greeting_arr[3];\n        } else if (time >= 12 && time < 17) {\n            return greeting_arr[4];\n        } else if (time >= 17 && time < 19) {\n            return greeting_arr[5];\n        } else if (time >= 19 && time < 22) {\n            return greeting_arr[6];\n        } else if (time >= 22) {\n            return greeting_arr[7];\n        }\n    },\n    parseFormErrors: function (errors) {\n        var error, error_name, error_types, j, len, ref, type;\n        error_types = [];\n        for (j = 0, len = errors.length; j < len; j++) {\n            error = errors[j];\n            error_name = error.substring(30);\n            type = (function () {\n                switch (error_name) {\n                    case 'calculate_saldo_worktime':\n                    case 'remove_saldorow':\n                    case 'calculate_new_saldo':\n                    case 'update_saldo_group':\n                        return 'saldo';\n                    default:\n                        return false;\n                }\n            })();\n            if (\n                type &&\n                ((ref = this.get('intl').t('form.errors.type.' + type)),\n                indexOf.call(error_types, ref) < 0)\n            ) {\n                error_types.push(this.get('intl').t('form.errors.type.' + type));\n            }\n        }\n        return error_types;\n    },\n    // get translation for one column\n    getTranslationForColumn: function (form, fieldName, removed = false) {\n        var field, intl;\n        if (fieldName === 'id') {\n            return 'id';\n        }\n        intl = this.get('intl');\n        if (fieldName.substring(0, 9) === 'row_info.') {\n            return intl.t('general.' + fieldName);\n        }\n        if (removed) {\n            return this.getBestTranslation(form, fieldName);\n        }\n        field = this.fields(form)[fieldName];\n        if (!field) {\n            Ember.assert(\"Field '\" + fieldName + \"' not found for form '\" + form + \"'\");\n        }\n        if ('name' in field) {\n            return field.name;\n        } else {\n            return this.getBestTranslation(form, fieldName);\n        }\n    },\n    getBestTranslation: function (form, fieldName) {\n        var found_key, intl, test_keys;\n        intl = this.get('intl');\n        test_keys = ['report.' + form + '.' + fieldName, 'defaults.field.' + fieldName];\n        found_key = null;\n        test_keys.some((key) => {\n            if (intl.exists(key)) {\n                found_key = key;\n                return true;\n            }\n        });\n        if (found_key) {\n            return intl.t(found_key);\n        } else {\n            return test_keys[0];\n        }\n    },\n    customizeField: function (field, custom) {\n        var feature, item, k, value;\n        for (k in custom) {\n            item = custom[k];\n            if (typeof item === 'object') {\n                for (feature in item) {\n                    value = item[feature];\n                    if (typeof value === 'object') {\n                        // TODO Make better so we can merge unlimited\n                        if (!field[k][feature]) {\n                            field[k][feature] = value;\n                        }\n                    } else {\n                        field[k][feature] = value;\n                    }\n                }\n            } else {\n                field[k] = item;\n            }\n        }\n        return field;\n    },\n\n    // Get row linker links\n    //   ex. kohdekohtaset tehtävät\n\n    //   id: id of record to fetch links to, ex project record id\n    //   form: form name to get the links for, ex \"project\"\n    //   link: name of the link target, ex \"task\"\n    getLinks: function (id, form, link) {\n        var params;\n        params = {\n            url: this.pluralize(form) + '/' + id + '/' + this.pluralize(link),\n        };\n        return this.ajax(params);\n    },\n\n    //   Save row linker links\n    //   ex. kohdekohtaset tehtävät\n\n    //   id: id of record to fetch links to, ex project record id\n    //   form: form name to get the links for, ex \"project\"\n    //   link: name of the link target, ex \"task\"\n    //   links: array of record ids that should be linked to this id\n    saveLinks: function (id, form, link, links) {\n        var data, params;\n        data = {};\n        data[form] = {};\n        data[form]['link.' + this.pluralize(link)] = links;\n        params = {\n            url: this.pluralize(form) + '/' + id + '?validation=off',\n            data: JSON.stringify(data),\n            type: 'PUT',\n        };\n        return this.ajax(params);\n    },\n    canAddWorktime: function (date) {\n        var date_interval, interval_arr;\n        date_interval = this.field('worktime', 'date')['features']['date_interval'];\n        if (date_interval && date_interval === 'locked') {\n            //allow today\n            if (moment().format('YYYY-MM-DD') === date) {\n                return true;\n            }\n            return false;\n        } else if (date_interval) {\n            if (typeof date_interval === 'string') {\n                interval_arr = date_interval.split(',');\n                if (interval_arr.length > 1) {\n                    return (\n                        moment()\n                            .startOf('day')\n                            .subtract(interval_arr[0], 'days')\n                            .isBefore(moment(date, 'YYYY-MM-DD')) &&\n                        moment()\n                            .startOf('day')\n                            .add(interval_arr[1], 'days')\n                            .isAfter(moment(date, 'YYYY-MM-DD'))\n                    );\n                }\n            } else {\n                return (\n                    moment()\n                        .startOf('day')\n                        .subtract(date_interval, 'days')\n                        .isBefore(moment(date, 'YYYY-MM-DD')) &&\n                    moment().startOf('day').add(1, 'days').isAfter(moment(date, 'YYYY-MM-DD'))\n                );\n            }\n        } else {\n            return true;\n        }\n    },\n    shortFormat: function (value, length = 2) {\n        var j, key, len, split, string, val;\n        split = value.split(' ');\n        string = '';\n        if (split.length > 1) {\n            for (key = j = 0, len = split.length; j < len; key = ++j) {\n                val = split[key];\n                if (key + 1 > length) {\n                    continue;\n                }\n                string += val.slice(0, 1);\n            }\n        } else {\n            string = value.slice(0, length);\n        }\n        return string.toUpperCase();\n    },\n    // returns all userlevels in neat array with ids and names\n    // input: array skip_levels - skip these levels\n    getUserlevels: function (skip_levels) {\n        var j, len, lvl, ref, ret, userlevels;\n        userlevels = this.field('user', 'userlevel');\n        ret = [];\n        if (!skip_levels) {\n            skip_levels = [];\n        }\n        ref = userlevels.options;\n        for (j = 0, len = ref.length; j < len; j++) {\n            lvl = ref[j];\n            if (skip_levels.indexOf(parseInt(lvl)) < 0) {\n                if (lvl < 9) {\n                    ret.push({\n                        id: lvl,\n                        name: this.get('intl').t('user.userlevel.' + lvl),\n                    });\n                } else {\n                    ret.push({\n                        id: lvl.substring(0, 2),\n                        name: lvl.substring(2),\n                    });\n                }\n            }\n        }\n        return ret;\n    },\n    randomizeColor: function (value) {\n        var c, hash, i, j, k, len, string;\n        if (value.constructor === Array) {\n            string = value.join('');\n        } else {\n            string = value;\n        }\n        hash = 0;\n        for (i = j = 0, len = string.length; j < len; i = ++j) {\n            k = string[i];\n            hash = string.charCodeAt(i) + ((hash << 5) - hash);\n        }\n        c = (hash & 0x00ffffff).toString(16).toUpperCase();\n        return '#' + '00000'.substring(0, 6 - c.length) + c;\n    },\n    copyRecord: function (record) {\n        var field, form, j, json_record, len, ref;\n        form = record.get('constructor.modelName');\n        json_record = record.serialize();\n        ref = ['status'];\n        for (j = 0, len = ref.length; j < len; j++) {\n            field = ref[j];\n            if (!Ember.isEmpty(json_record[field])) {\n                json_record[field] = null;\n            }\n        }\n        record.eachRelationship((key, relationship) => {\n            var hasManyArr, ref1;\n            if (\n                ((ref1 = relationship.kind) === 'belongsTo' || ref1 === 'hasMany') &&\n                key !== 'export_salary' &&\n                key !== 'export_absence' &&\n                key !== 'row_info'\n            ) {\n                if (\n                    this.field(form, key).type === 'databasearray' ||\n                    this.field(form, key).type === 'work_permit_attachment'\n                ) {\n                    hasManyArr = [];\n                    record.get(key).forEach((hasManyRecord) => {\n                        return hasManyArr.push(this.copyRecord(hasManyRecord));\n                    });\n                    return Ember.set(json_record, key, hasManyArr);\n                } else {\n                    return Ember.set(json_record, key, record.get(key));\n                }\n            }\n        });\n        return this.get('store').createRecord(form, json_record);\n    },\n    getSideloads: function (form) {\n        var fields, sideloads;\n        fields = this.fieldArray(form);\n        sideloads = [];\n        fields.forEach(function (field) {\n            var ref;\n            if (\n                (ref = field.type) === 'database' ||\n                ref === 'databasearray' ||\n                ref === 'multiselect' ||\n                ref === 'work_permit_attachment'\n            ) {\n                return field.options.fields.forEach(function (option) {\n                    return sideloads.push(field.options.form + '.' + option);\n                });\n            }\n        });\n        return sideloads.uniq();\n    },\n    checkRowValidation: function (form, record, edit_mode = false) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var data, form_plural, json, json_str, params, ret;\n            if (edit_mode) {\n                resolve();\n                return;\n            }\n            form_plural = this.pluralize(form);\n            json = record.serialize();\n            data = {};\n            data[form] = json;\n            json_str = JSON.stringify(data);\n            params = {};\n            params.url = form_plural + '?validation=only';\n            params.data = json_str;\n            params.method = 'POST';\n            ret = this.ajax(params);\n            return ret.then(\n                function (ret) {\n                    return resolve(ret);\n                },\n                function (e) {\n                    return reject(e);\n                },\n            );\n        });\n    },\n});\n\nexport default collectorService;\n","define(\"tt4/services/collector\", [\"exports\", \"@movenium/ember-movenium/services/collector\"], function (_exports, _collector) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _collector.default;\n    }\n  });\n});\n","import CookiesService from 'ember-cookies/services/cookies';\n\nexport default CookiesService;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/country-lists.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CountryListsService,\n    indexOf = [].indexOf;\n\nimport Ember from 'ember';\n\nconst { computed, get } = Ember;\n\nCountryListsService = Ember.Service.extend({\n    countries: [\n        {\n            id: 'af',\n            name: 'Afghanistan',\n        },\n        {\n            id: 'ax',\n            name: 'Aland Islands',\n        },\n        {\n            id: 'al',\n            name: 'Albania',\n        },\n        {\n            id: 'dz',\n            name: 'Algeria',\n        },\n        {\n            id: 'as',\n            name: 'American Samoa',\n        },\n        {\n            id: 'ad',\n            name: 'Andorra',\n        },\n        {\n            id: 'ao',\n            name: 'Angola',\n        },\n        {\n            id: 'ai',\n            name: 'Anguilla',\n        },\n        {\n            id: 'aq',\n            name: 'Antarctica',\n        },\n        {\n            id: 'ag',\n            name: 'Antigua And Barbuda',\n        },\n        {\n            id: 'ar',\n            name: 'Argentina',\n        },\n        {\n            id: 'am',\n            name: 'Armenia',\n        },\n        {\n            id: 'aw',\n            name: 'Aruba',\n        },\n        {\n            id: 'au',\n            name: 'Australia',\n        },\n        {\n            id: 'at',\n            name: 'Austria',\n        },\n        {\n            id: 'az',\n            name: 'Azerbaijan',\n        },\n        {\n            id: 'bs',\n            name: 'Bahamas',\n        },\n        {\n            id: 'bh',\n            name: 'Bahrain',\n        },\n        {\n            id: 'bd',\n            name: 'Bangladesh',\n        },\n        {\n            id: 'bb',\n            name: 'Barbados',\n        },\n        {\n            id: 'by',\n            name: 'Belarus',\n        },\n        {\n            id: 'be',\n            name: 'Belgium',\n        },\n        {\n            id: 'bz',\n            name: 'Belize',\n        },\n        {\n            id: 'bj',\n            name: 'Benin',\n        },\n        {\n            id: 'bm',\n            name: 'Bermuda',\n        },\n        {\n            id: 'bt',\n            name: 'Bhutan',\n        },\n        {\n            id: 'bo',\n            name: 'Bolivia, Plurinational State Of',\n        },\n        {\n            id: 'bq',\n            name: 'Bonaire, Sint Eustatius And Saba',\n        },\n        {\n            id: 'ba',\n            name: 'Bosnia And Herzegovina',\n        },\n        {\n            id: 'bw',\n            name: 'Botswana',\n        },\n        {\n            id: 'bv',\n            name: 'Bouvet Island',\n        },\n        {\n            id: 'br',\n            name: 'Brazil',\n        },\n        {\n            id: 'io',\n            name: 'British Indian Ocean Territory',\n        },\n        {\n            id: 'bn',\n            name: 'Brunei Darussalam',\n        },\n        {\n            id: 'bg',\n            name: 'Bulgaria',\n        },\n        {\n            id: 'bf',\n            name: 'Burkina Faso',\n        },\n        {\n            id: 'bi',\n            name: 'Burundi',\n        },\n        {\n            id: 'kh',\n            name: 'Cambodia',\n        },\n        {\n            id: 'cm',\n            name: 'Cameroon',\n        },\n        {\n            id: 'ca',\n            name: \"Canada\",\n        },\n        {\n            id: 'cv',\n            name: 'Cape Verde',\n        },\n        {\n            id: 'ky',\n            name: 'Cayman Islands',\n        },\n        {\n            id: 'cf',\n            name: 'Central African Republic',\n        },\n        {\n            id: 'td',\n            name: 'Chad',\n        },\n        {\n            id: 'cl',\n            name: 'Chile',\n        },\n        {\n            id: 'cn',\n            name: 'China',\n        },\n        {\n            id: 'cx',\n            name: 'Christmas Island',\n        },\n        {\n            id: 'cc',\n            name: 'Cocos (keeling) Islands',\n        },\n        {\n            id: 'co',\n            name: 'Colombia',\n        },\n        {\n            id: 'km',\n            name: 'Comoros',\n        },\n        {\n            id: 'cg',\n            name: 'Congo',\n        },\n        {\n            id: 'cd',\n            name: 'Congo, The Democratic Republic Of The',\n        },\n        {\n            id: 'ck',\n            name: 'Cook Islands',\n        },\n        {\n            id: 'cr',\n            name: 'Costa Rica',\n        },\n        {\n            id: 'ci',\n            name: \"Cote D'ivoire\",\n        },\n        {\n            id: 'hr',\n            name: 'Croatia',\n        },\n        {\n            id: 'cu',\n            name: 'Cuba',\n        },\n        {\n            id: 'cw',\n            name: 'Curacao',\n        },\n        {\n            id: 'cy',\n            name: 'Cyprus',\n        },\n        {\n            id: 'cz',\n            name: 'Czech Republic',\n        },\n        {\n            id: 'dk',\n            name: 'Denmark',\n        },\n        {\n            id: 'dj',\n            name: 'Djibouti',\n        },\n        {\n            id: 'dm',\n            name: 'Dominica',\n        },\n        {\n            id: 'do',\n            name: 'Dominican Republic',\n        },\n        {\n            id: 'ec',\n            name: 'Ecuador',\n        },\n        {\n            id: 'eg',\n            name: 'Egypt',\n        },\n        {\n            id: 'sv',\n            name: 'El Salvador',\n        },\n        {\n            id: 'gq',\n            name: 'Equatorial Guinea',\n        },\n        {\n            id: 'er',\n            name: 'Eritrea',\n        },\n        {\n            id: 'ee',\n            name: 'Estonia',\n            number: '+372',\n        },\n        {\n            id: 'et',\n            name: 'Ethiopia',\n        },\n        {\n            id: 'fk',\n            name: 'Falkland Islands (malvinas)',\n        },\n        {\n            id: 'fo',\n            name: 'Faroe Islands',\n        },\n        {\n            id: 'fj',\n            name: 'Fiji',\n        },\n        {\n            id: 'fi',\n            name: 'Finland',\n            number: '+358',\n        },\n        {\n            id: 'fr',\n            name: 'France',\n            number: '+33',\n        },\n        {\n            id: 'gf',\n            name: 'French Guiana',\n        },\n        {\n            id: 'pf',\n            name: 'French Polynesia',\n        },\n        {\n            id: 'tf',\n            name: 'French Southern Territories',\n        },\n        {\n            id: 'ga',\n            name: 'Gabon',\n        },\n        {\n            id: 'gm',\n            name: 'Gambia',\n        },\n        {\n            id: 'ge',\n            name: 'Georgia',\n        },\n        {\n            id: 'de',\n            name: 'Germany',\n            number: '+49',\n        },\n        {\n            id: 'gh',\n            name: 'Ghana',\n        },\n        {\n            id: 'gi',\n            name: 'Gibraltar',\n        },\n        {\n            id: 'gr',\n            name: 'Greece',\n        },\n        {\n            id: 'gl',\n            name: 'Greenland',\n        },\n        {\n            id: 'gd',\n            name: 'Grenada',\n        },\n        {\n            id: 'gp',\n            name: 'Guadeloupe',\n        },\n        {\n            id: 'gu',\n            name: 'Guam',\n        },\n        {\n            id: 'gt',\n            name: 'Guatemala',\n        },\n        {\n            id: 'gg',\n            name: 'Guernsey',\n        },\n        {\n            id: 'gn',\n            name: 'Guinea',\n        },\n        {\n            id: 'gw',\n            name: 'Guinea-bissau',\n        },\n        {\n            id: 'gy',\n            name: 'Guyana',\n        },\n        {\n            id: 'ht',\n            name: 'Haiti',\n        },\n        {\n            id: 'hm',\n            name: 'Heard Island And Mcdonald Islands',\n        },\n        {\n            id: 'va',\n            name: 'Holy See (vatican City State)',\n        },\n        {\n            id: 'hn',\n            name: 'Honduras',\n        },\n        {\n            id: 'hk',\n            name: 'Hong Kong',\n        },\n        {\n            id: 'hu',\n            name: 'Hungary',\n            number: '+36',\n        },\n        {\n            id: 'is',\n            name: 'Iceland',\n        },\n        {\n            id: 'in',\n            name: 'India',\n        },\n        {\n            id: 'id',\n            name: 'Indonesia',\n        },\n        {\n            id: 'ir',\n            name: 'Iran, Islamic Republic Of',\n        },\n        {\n            id: 'iq',\n            name: 'Iraq',\n        },\n        {\n            id: 'ie',\n            name: 'Ireland',\n        },\n        {\n            id: 'im',\n            name: 'Isle Of Man',\n        },\n        {\n            id: 'il',\n            name: 'Israel',\n        },\n        {\n            id: 'it',\n            name: 'Italy',\n        },\n        {\n            id: 'jm',\n            name: 'Jamaica',\n        },\n        {\n            id: 'jp',\n            name: 'Japan',\n        },\n        {\n            id: 'je',\n            name: 'Jersey',\n        },\n        {\n            id: 'jo',\n            name: 'Jordan',\n        },\n        {\n            id: 'kz',\n            name: 'Kazakhstan',\n        },\n        {\n            id: 'ke',\n            name: 'Kenya',\n        },\n        {\n            id: 'ki',\n            name: 'Kiribati',\n        },\n        {\n            id: 'kp',\n            name: \"Korea, Democratic People's Republic Of\",\n        },\n        {\n            id: 'kr',\n            name: 'Korea, Republic Of',\n        },\n        {\n            id: 'xk',\n            name: 'Kosovo',\n        },\n        {\n            id: 'kw',\n            name: 'Kuwait',\n        },\n        {\n            id: 'kg',\n            name: 'Kyrgyzstan',\n        },\n        {\n            id: 'la',\n            name: \"Lao People's Democratic Republic\",\n        },\n        {\n            id: 'lv',\n            name: 'Latvia',\n            number: '+371',\n        },\n        {\n            id: 'lb',\n            name: 'Lebanon',\n        },\n        {\n            id: 'ls',\n            name: 'Lesotho',\n        },\n        {\n            id: 'lr',\n            name: 'Liberia',\n        },\n        {\n            id: 'ly',\n            name: 'Libyan Arab Jamahiriya',\n        },\n        {\n            id: 'li',\n            name: 'Liechtenstein',\n        },\n        {\n            id: 'lt',\n            name: 'Lithuania',\n        },\n        {\n            id: 'lu',\n            name: 'Luxembourg',\n        },\n        {\n            id: 'mo',\n            name: 'Macao',\n        },\n        {\n            id: 'mk',\n            name: 'Macedonia, The Former Yugoslav Republic Of',\n        },\n        {\n            id: 'mg',\n            name: 'Madagascar',\n        },\n        {\n            id: 'mw',\n            name: 'Malawi',\n        },\n        {\n            id: 'my',\n            name: 'Malaysia',\n        },\n        {\n            id: 'mv',\n            name: 'Maldives',\n        },\n        {\n            id: 'ml',\n            name: 'Mali',\n        },\n        {\n            id: 'mt',\n            name: 'Malta',\n        },\n        {\n            id: 'mh',\n            name: 'Marshall Islands',\n        },\n        {\n            id: 'mq',\n            name: 'Martinique',\n        },\n        {\n            id: 'mr',\n            name: 'Mauritania',\n        },\n        {\n            id: 'mu',\n            name: 'Mauritius',\n        },\n        {\n            id: 'yt',\n            name: 'Mayotte',\n        },\n        {\n            id: 'mx',\n            name: 'Mexico',\n        },\n        {\n            id: 'fm',\n            name: 'Micronesia, Federated States Of',\n        },\n        {\n            id: 'md',\n            name: 'Moldova, Republic Of',\n        },\n        {\n            id: 'mc',\n            name: 'Monaco',\n        },\n        {\n            id: 'mn',\n            name: 'Mongolia',\n        },\n        {\n            id: 'me',\n            name: 'Montenegro',\n        },\n        {\n            id: 'ms',\n            name: 'Montserrat',\n        },\n        {\n            id: 'ma',\n            name: 'Morocco',\n        },\n        {\n            id: 'mz',\n            name: 'Mozambique',\n        },\n        {\n            id: 'mm',\n            name: 'Myanmar',\n        },\n        {\n            id: 'na',\n            name: 'Namibia',\n        },\n        {\n            id: 'nr',\n            name: 'Nauru',\n        },\n        {\n            id: 'np',\n            name: 'Nepal',\n        },\n        {\n            id: 'nl',\n            name: 'Netherlands',\n            number: '+31',\n        },\n        {\n            id: 'nc',\n            name: 'New Caledonia',\n        },\n        {\n            id: 'nz',\n            name: 'New Zealand',\n        },\n        {\n            id: 'ni',\n            name: 'Nicaragua',\n        },\n        {\n            id: 'ne',\n            name: 'Niger',\n        },\n        {\n            id: 'ng',\n            name: 'Nigeria',\n        },\n        {\n            id: 'nu',\n            name: 'Niue',\n        },\n        {\n            id: 'nf',\n            name: 'Norfolk Island',\n        },\n        {\n            id: 'mp',\n            name: 'Northern Mariana Islands',\n        },\n        {\n            id: 'no',\n            name: 'Norway',\n            number: '+47',\n        },\n        {\n            id: 'om',\n            name: 'Oman',\n        },\n        {\n            id: 'pk',\n            name: 'Pakistan',\n        },\n        {\n            id: 'pw',\n            name: 'Palau',\n        },\n        {\n            id: 'ps',\n            name: 'Palestinian Territory, Occupied',\n        },\n        {\n            id: 'pa',\n            name: 'Panama',\n        },\n        {\n            id: 'pg',\n            name: 'Papua New Guinea',\n        },\n        {\n            id: 'py',\n            name: 'Paraguay',\n        },\n        {\n            id: 'pe',\n            name: 'Peru',\n        },\n        {\n            id: 'ph',\n            name: 'Philippines',\n        },\n        {\n            id: 'pn',\n            name: 'Pitcairn',\n        },\n        {\n            id: 'pl',\n            name: 'Poland',\n            number: '+48',\n        },\n        {\n            id: 'pt',\n            name: 'Portugal',\n        },\n        {\n            id: 'pr',\n            name: 'Puerto Rico',\n        },\n        {\n            id: 'qa',\n            name: 'Qatar',\n        },\n        {\n            id: 're',\n            name: 'Reunion',\n        },\n        {\n            id: 'ro',\n            name: 'Romania',\n        },\n        {\n            id: 'ru',\n            name: 'Russian Federation',\n        },\n        {\n            id: 'rw',\n            name: 'Rwanda',\n        },\n        {\n            id: 'bl',\n            name: 'Saint Barthelemy',\n        },\n        {\n            id: 'sh',\n            name: 'Saint Helena, Ascension And Tristan Da Cunha',\n        },\n        {\n            id: 'kn',\n            name: 'Saint Kitts And Nevis',\n        },\n        {\n            id: 'lc',\n            name: 'Saint Lucia',\n        },\n        {\n            id: 'mf',\n            name: 'Saint Martin (french Part)',\n        },\n        {\n            id: 'pm',\n            name: 'Saint Pierre And Miquelon',\n        },\n        {\n            id: 'vc',\n            name: 'Saint Vincent And The Grenadines',\n        },\n        {\n            id: 'ws',\n            name: 'Samoa',\n        },\n        {\n            id: 'sm',\n            name: 'San Marino',\n        },\n        {\n            id: 'st',\n            name: 'Sao Tome And Principe',\n        },\n        {\n            id: 'sa',\n            name: 'Saudi Arabia',\n        },\n        {\n            id: 'sn',\n            name: 'Senegal',\n        },\n        {\n            id: 'rs',\n            name: 'Serbia',\n        },\n        {\n            id: 'sc',\n            name: 'Seychelles',\n        },\n        {\n            id: 'sl',\n            name: 'Sierra Leone',\n        },\n        {\n            id: 'sg',\n            name: 'Singapore',\n        },\n        {\n            id: 'sx',\n            name: 'Sint Maarten (dutch Part)',\n        },\n        {\n            id: 'sk',\n            name: 'Slovakia',\n        },\n        {\n            id: 'si',\n            name: 'Slovenia',\n        },\n        {\n            id: 'sb',\n            name: 'Solomon Islands',\n        },\n        {\n            id: 'so',\n            name: 'Somalia',\n        },\n        {\n            id: 'za',\n            name: 'South Africa',\n        },\n        {\n            id: 'gs',\n            name: 'South Georgia And The South Sandwich Islands',\n        },\n        {\n            id: 'es',\n            name: 'Spain',\n            number: '+34',\n        },\n        {\n            id: 'lk',\n            name: 'Sri Lanka',\n        },\n        {\n            id: 'sd',\n            name: 'Sudan',\n        },\n        {\n            id: 'sr',\n            name: 'Suriname',\n        },\n        {\n            id: 'sj',\n            name: 'Svalbard And Jan Mayen',\n        },\n        {\n            id: 'sz',\n            name: 'Swaziland',\n        },\n        {\n            id: 'se',\n            name: 'Sweden',\n            number: '+46',\n        },\n        {\n            id: 'ch',\n            name: 'Switzerland',\n        },\n        {\n            id: 'sy',\n            name: 'Syrian Arab Republic',\n        },\n        {\n            id: 'tw',\n            name: 'Taiwan, Province Of China',\n        },\n        {\n            id: 'tj',\n            name: 'Tajikistan',\n        },\n        {\n            id: 'tz',\n            name: 'Tanzania, United Republic Of',\n        },\n        {\n            id: 'th',\n            name: 'Thailand',\n        },\n        {\n            id: 'tl',\n            name: 'Timor-leste',\n        },\n        {\n            id: 'tg',\n            name: 'Togo',\n        },\n        {\n            id: 'tk',\n            name: 'Tokelau',\n        },\n        {\n            id: 'to',\n            name: 'Tonga',\n        },\n        {\n            id: 'tt',\n            name: 'Trin{idad And Tobago',\n        },\n        {\n            id: 'tn',\n            name: 'Tunisia',\n        },\n        {\n            id: 'tr',\n            name: 'Turkey',\n        },\n        {\n            id: 'tm',\n            name: 'Turkmenistan',\n        },\n        {\n            id: 'tc',\n            name: 'Turks And Caicos Islands',\n        },\n        {\n            id: 'tv',\n            name: 'Tuvalu',\n        },\n        {\n            id: 'ug',\n            name: 'Uganda',\n        },\n        {\n            id: 'ua',\n            name: 'Ukraine',\n        },\n        {\n            id: 'ae',\n            name: 'United Arab Emirates',\n        },\n        {\n            id: 'gb',\n            name: 'United Kingdom',\n            number: '+44',\n        },\n        {\n            id: 'us',\n            name: 'United States',\n        },\n        {\n            id: 'um',\n            name: 'United States Minor Outlying Islands',\n        },\n        {\n            id: 'uy',\n            name: 'Uruguay',\n        },\n        {\n            id: 'uz',\n            name: 'Uzbekistan',\n        },\n        {\n            id: 'vu',\n            name: 'Vanuatu',\n        },\n        {\n            id: 'va',\n            name: 'Vatican City State',\n        },\n        {\n            id: 've',\n            name: 'Venezuela, Bolivarian Republic Of',\n        },\n        {\n            id: 'vn',\n            name: 'Viet Nam',\n        },\n        {\n            id: 'vg',\n            name: 'Virgin Islands, British',\n        },\n        {\n            id: 'vi',\n            name: 'Virgin Islands, U.s.',\n        },\n        {\n            id: 'wf',\n            name: 'Wallis And Futuna',\n        },\n        {\n            id: 'eh',\n            name: 'Western Sahara',\n        },\n        {\n            id: 'ye',\n            name: 'Yemen',\n        },\n        {\n            id: 'zm',\n            name: 'Zambia',\n        },\n        {\n            id: 'zw',\n            name: 'Zimbabwe',\n        },\n    ],\n    shortNordic: ['se', 'fi', 'pl', 'ee', 'lv', 'lt', 'no', 'dk', 'cz'],\n    shortList: computed(function () {\n        var filterBy;\n        filterBy = this.get('shortNordic');\n        return this.get('countries').filter((country) => {\n            var ref;\n            if (((ref = country.id), indexOf.call(filterBy, ref) >= 0)) {\n                return true;\n            }\n        });\n    }),\n    fullList: computed(function () {\n        return this.get('countries');\n    }),\n    phoneList: computed.filterBy('countries', 'number'),\n});\n\nexport default CountryListsService;\n","define(\"tt4/services/csv\", [\"exports\", \"ember-cli-data-export/services/csv\"], function (_exports, _csv) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _csv.default;\n    }\n  });\n  Object.defineProperty(_exports, \"initialize\", {\n    enumerable: true,\n    get: function get() {\n      return _csv.initialize;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/customer-settings.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar CustomerSettingsService;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nCustomerSettingsService = Ember.Service.extend({\n    ttapi: Ember.inject.service(),\n    settings: Em.A([]),\n    getSettings: function () {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return this.get('ttapi')\n                ._get('/settings')\n                .then((data) => {\n                    this.set('settings', data);\n                    return resolve(data);\n                })\n                .catch((reason) => {\n                    return reject(reason);\n                });\n        });\n    },\n    /*\n  return new Em.RSVP.Promise( (resolve, reject) =>\n      url = config.APP.TTAPI+'/settings'\n      $.ajax(\n          url: url\n          type: 'GET'\n\n          success: (data) =>\n              @set \"settings\", data\n              resolve(data)\n\n          error: (reason) ->\n              reject(reason)\n      )\n  )\n  */\n    checkSetting: function (name) {\n        if (!this.get('settings')) {\n            return false;\n        }\n        if (Em.isEmpty(this.get('settings'))) {\n            return false;\n        }\n        if (!this.get('settings').findBy('key', name)) {\n            return false;\n        }\n        if (this.get('settings').findBy('key', name).value === 'on') {\n            return true;\n        } else if (\n            this.get('settings').findBy('key', name).value &&\n            this.get('settings').findBy('key', name).value !== 'off'\n        ) {\n            return this.get('settings').findBy('key', name).value;\n        } else {\n            return false;\n        }\n    },\n    setSetting: function (name, value, worktimegroup) {\n        var obj, settingsArr, url;\n        // do not change sessions settings if changing state of worktimegroup specific setting\n        if (!worktimegroup) {\n            if (this.get('settings') && !Em.isEmpty(this.get('settings'))) {\n                if (this.get('settings').findBy('key', name)) {\n                    //save new value and push to settings property\n                    obj = this.get('settings').findBy('key', name);\n                    obj.value = value;\n                    this.get('settings').removeObject(this.get('settings').findBy('key', name));\n                    this.get('settings').pushObject(obj);\n                } else {\n                    this.get('settings').pushObject({\n                        key: name,\n                        value: value,\n                    });\n                }\n            } else {\n                settingsArr = Em.A([]);\n                settingsArr.pushObject({\n                    key: name,\n                    value: value,\n                });\n                this.set('settings', settingsArr);\n            }\n        }\n        //save setting to the ttapi\n        url = '/settings/save';\n        return this.get('ttapi').request(url, {\n            type: 'POST',\n            dataType: 'text',\n            data: {\n                key: name,\n                value: value,\n                worktimegroup: worktimegroup,\n            },\n        });\n    },\n});\n\nexport default CustomerSettingsService;\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport config from '../config/environment';\nimport { get } from '@ember/object';\n/* global cordova */\n\nexport default Service.extend({\n    session: service(),\n    moment: service(),\n    flags: service(),\n    //initapp: service(),\n    collector: service('collector-service'),\n\n    // This would IMO be the more elegant solution but did not trigger at any point. Dunno why...\n    // init() {\n    //     this._super(...arguments)\n    //     this.initapp.one('appReady', this.start())\n    // },\n    start() {\n        this.setContext();\n    },\n\n    setContext() {\n        window.dap = {};\n        this.setLanguageMethod();\n        this.setUserContext();\n        this.setCompanyContext();\n        this.getCustomerProduct();\n    },\n\n    setLanguageMethod() {\n        if (!window.get_language) {\n            window.get_language = function () {\n                const lang = localStorage.getItem('lang')\n                    ? localStorage.getItem('lang')\n                    : moment.locale();\n                if (lang === 'en' || !lang) {\n                    return '';\n                } else {\n                    return lang;\n                }\n            };\n        }\n    },\n\n    getCustomerProduct() {\n        if (!window.getProduct) {\n            window.getProduct = function (product) {\n                return window.dap.company.products.indexOf(product) != -1 ? true : false;\n            };\n        }\n    },\n\n    async setUserContext() {\n        const userData = this.session.currentUser;\n\n        const userParsedData = {\n            key: userData.partnerid + '' + userData.id,\n            id: userData.id,\n            userlevel: parseInt(userData.userlevel),\n            application: window.cordova ? true : false,\n            version: config.APP.version,\n            userCreated: moment(get(userData.row_info, 'created')).valueOf(),\n            flags: this.flags.allFlags(),\n            firstname: userData.firstname,\n            lastname: userData.lastname,\n            language: localStorage.getItem('lang') ? localStorage.getItem('lang') : moment.locale(),\n        };\n\n        if (window.cordova) {\n            userParsedData.appVersion = await cordova.getAppVersion.getVersionNumber();\n        }\n\n        window.dap.user = userParsedData;\n\n        return;\n    },\n\n    setCompanyContext() {\n        const userData = this.session.currentUser;\n\n        let customProducts = {};\n        const companyParsedData = {\n            partnerid: userData.partnerid,\n            company_name: userData.company,\n            vatin: userData.company_info.company_vatin,\n            country: userData.company_info.country,\n            serviceType: config.brand,\n            serviceCreated: moment(get(userData.company_info.row_info, 'created')).valueOf(),\n            products: this.collector.products,\n        };\n        for (var product of this.collector.products) {\n            customProducts[product] = 1;\n        }\n        window.dap.product_objects = customProducts;\n        window.dap.company = companyParsedData;\n\n        return;\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/dialogs.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar DialogsService;\n\nimport Ember from 'ember';\n\nimport { alertify } from '@labeg/alertify.js';\n\nDialogsService = Ember.Service.extend({\n    intl: Ember.inject.service(),\n    confirm: function (message) {\n        if ('function' !== typeof Promise) {\n            return new Ember.RSVP.Promise((resolve, reject) => {\n                var val;\n                val = confirm(message);\n                return resolve(val);\n            });\n        } else {\n            return alertify\n                .okBtn(this.get('intl').t('general.yes'))\n                .cancelBtn(this.get('intl').t('general.no'))\n                .confirm(message)\n                .then(function (resolvedValue) {\n                    resolvedValue.event.preventDefault();\n                    if (resolvedValue.buttonClicked === 'ok') {\n                        return true;\n                    } else {\n                        return false;\n                    }\n                });\n        }\n    },\n    alert: function (message) {\n        return alertify.okBtn('OK').alert(message);\n    },\n    prompt: function (message, def) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            return alertify\n                .defaultValue(def)\n                .okBtn(this.get('intl').t('general.save'))\n                .cancelBtn(this.get('intl').t('general.cancel'))\n                .prompt(\n                    message,\n                    (str, e) => {\n                        e.preventDefault();\n                        return resolve(str);\n                    },\n                    (e) => {\n                        e.preventDefault();\n                        return resolve(false);\n                    },\n                );\n        });\n    },\n});\n\nexport default DialogsService;\n","import Service, { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport { isArray } from '@ember/array';\n\n/**\n * Handles all operations that have to do with errors\n *\n * ```js\n * @service errorHandler;\n * this.errorHandler.notify(<yourError>)\n * ```\n *\n * @class ErrorHandlerService\n * @constructor\n * @public\n */\n\nexport default class ErrorHandlerService extends Service {\n    @service private intl: any;\n    @service private notifications: any;\n\n    public toError(error: any) {\n        if (this._capiError(error)) return this._capiError(error);\n        if (this._networkError(error)) return this._networkError(error);\n\n        let message = JSON.stringify(error);\n        if (get(error, 'payload.message')) message = get(error, 'payload.message');\n        else if (error.message) message = error.message;\n        return {\n            type: 'unknown',\n            error,\n            message: this.tryToTranslateMessage(message),\n            meta: null,\n        };\n    }\n\n    /**\n     * Use notifications to show user to error. Can be used directly in promise fail\n     * EXAMPLE: promise.then(..., (reason) => get(this, 'error').notify(reason)))\n     * @method notify\n     * @param {*} error\n     */\n    public notify(error: any) {\n        this.notifications.error(this.errorToString(error), { autoClear: true });\n    }\n\n    public errorToString(error: any) {\n        if (!error) return;\n        // try to get message first from .message and if not found check also .error\n        return this.toError(error)!.message\n            ? this.toError(error)!.message\n            : this.toError(error)!.error;\n    }\n\n    private tryToTranslateMessage(message: any) {\n        if (typeof message !== 'string') return message;\n        const strippedMessage = message.toLowerCase().replace(/ /g, ' ');\n        if (this.intl.exists('error.' + strippedMessage)) {\n            return this.intl.t('error.' + strippedMessage);\n        }\n        return message;\n    }\n\n    /**\n     * FORMAT EXAMPLE\n     *  if application adapter has normalized error it looks like this\n     *  {\n     *      message: 'Request was rejected because user is not permitted to perform this operation.'\n     *      name: 'Error'\n     *      payload: {\n     *          error: 'overlap',\n     *          error_msg: 'two or more rows have overlapping dates'\n     *          meta: {hits: 'worktime', ids: Array(1)\n     *      }\n     *      stack: ....\n     *  }\n     *\n     *  OR\n     *  if application adapter has not normalized error it looks like this\n     *  {\n     *      errors: [\n     *          {\n     *              error: 'overlap'\n     *              errorMeta: {hits: 'absence', ids: Array(1)}\n     *              error_msg: 'two or more rows have overlapping dates'\n     *          }\n     *      ]\n     *      message: 'Ember Data Request POST http://localhost:30001/abcenses returned a 403 .....\n     *      name: 'Error'\n     *\n     *  @method _capiError\n     *  @param {any} error\n     *  @return {object}\n     */\n    private _capiError(error: any) {\n        if (typeof error !== 'object') return null;\n        let ret = null;\n        let errors = 'errors';\n        if (isArray(get(error, 'errors'))) {\n            errors = 'errors.0';\n        }\n\n        if (get(error, 'payload.error')) {\n            ret = {\n                type: 'capi',\n                error: get(error, 'payload.error'),\n                message: get(error, 'payload.error_msg'),\n                meta: get(error, 'payload.meta'),\n            };\n        } else if (get(error, errors + '.error')) {\n            ret = {\n                type: 'capi',\n                error: get(error, errors + '.error'),\n                message: get(error, errors + '.error_msg'),\n                meta: get(error, errors + '.errorMeta'),\n            };\n        } else {\n            return null;\n        }\n\n        switch (ret.error) {\n            case 'overlap':\n                if (ret.meta.hits === 'absence')\n                    ret.message = this.intl.t('validation.absence_overlap');\n                else if (ret.meta.hits === 'comp')\n                    ret.message = this.intl.t('validation.comp_overlap');\n                else ret.message = this.intl.t('validation.worktime_overlap');\n                break;\n            case 'no_holidays':\n                ret.message = this.intl.t('validation.no_holidays', {\n                    daysleft: ret.meta.daysleft,\n                });\n                break;\n            case 'no_holidaypays':\n                ret.message = this.intl.t('validation.no_holidaypays', {\n                    daysleft: ret.meta.daysleft,\n                });\n                break;\n            case 'id06checkfailed':\n                const errorCode = ret.meta.message;\n\n                if (errorCode === 'not found') {\n                    ret.message = this.intl.t('validation.error.id06_not_found');\n                } else if (errorCode) {\n                    const translationKey = `user.action.checkid06.reason_${errorCode}`;\n                    if (this.intl.exists(translationKey)) ret.message = this.intl.t(translationKey);\n                    else ret.message = this.intl.t('user.action.id06check');\n                }\n                break;\n            case 'not_only_row':\n                ret.message = this.intl.t('validation.worktime_not_only_row');\n                break;\n            case 'not_found':\n                ret.message = this.intl.t('validation.not_found.general');\n                break;\n            case 'validation_error':\n                ret.message = this.intl.exists('validation.' + ret.message)\n                    ? this.intl.t('validation.' + ret.message)\n                    : ret.message;\n                break;\n            case 'not_allowed':\n                ret.message = this.intl.exists('validation_error.' + ret.error)\n                    ? this.intl.t('validation_error.' + ret.error)\n                    : ret.message;\n        }\n\n        return ret;\n    }\n\n    /**\n     * FORMAT EXAMPLE\n     *  {\n     *      message: 'The ajax operation was aborted'\n     *      name: 'Error'\n     *      payload: null\n     *      stack: ....\n     *  @method _networkError\n     *  @param {any} error\n     *  @return {object}\n     */\n    private _networkError(error: any) {\n        if (typeof error !== 'object') return null;\n        if (error.message !== 'The ajax operation was aborted') return null;\n\n        return {\n            type: 'network',\n            error: error.message,\n            message: this.intl.t('validation.network_error'),\n            meta: null,\n        };\n    }\n}\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport { isArray } from '@ember/array';\nimport { htmlSafe } from '@ember/template';\n\nexport default Service.extend({\n    intl: service(),\n    notifications: service(),\n    store: service(),\n\n    toString(error) {\n        // try to get message first from .message and if not found check also .error\n        return this.toError(error).message\n            ? this.toError(error).message\n            : this.toError(error).error;\n    },\n\n    /**\n     * Same as toString but async so this is able to add meta.hits info also to response string\n     * return string as safeHtml\n     * @param {*} error\n     */\n    async toStringAsyncHTML(error) {\n        const errorObj = this.toError(error);\n\n        await this.addPossibleHitsToMessage(errorObj);\n\n        // try to get message first from .message and if not found check also .error\n        const message = errorObj.message ? errorObj.message : errorObj.error;\n\n        return htmlSafe(message.replace(/\\n/g, '<br>'));\n    },\n\n    toError(error) {\n        if (this._vastuuGroupError(error)) return this._vastuuGroupError(error);\n        if (this._capiError(error)) return this._capiError(error);\n        if (this._networkError(error)) return this._networkError(error);\n\n        let message = JSON.stringify(error);\n        if (get(error, 'payload.message')) message = get(error, 'payload.message');\n        else if (error.message) message = error.message;\n\n        return {\n            type: 'unknown',\n            error: error,\n            message: this.tryToTranslateMessage(message),\n            meta: null,\n        };\n    },\n\n    /**\n     * Use notifications to show user to error. Can be used directly in promise fail\n     * EXAMPLE: promise.then(..., (reason) => get(this, \"error\").notify(reason)))\n     * @param {*} error\n     */\n    async notify(error) {\n        const message = await this.toStringAsyncHTML(error);\n        get(this, 'notifications').error(message, { autoClear: true });\n    },\n\n    tryToTranslateMessage(message) {\n        if (typeof message !== 'string') return message;\n        const stripped_message = message.toLowerCase().replace(/ /g, '_');\n        if (get(this, 'intl').exists('error.' + stripped_message))\n            return get(this, 'intl').t('error.' + stripped_message);\n        return message;\n    },\n\n    /**\n     * FORMAT EXAMPLE\n     *  if application adapter has normalized error it looks like this\n     *  {\n     *      message: \"Request was rejected because user is not permitted to perform this operation.\"\n     *      name: \"Error\"\n     *      payload: {\n     *          error: \"overlap\",\n     *          error_msg: \"two or more rows have overlapping dates\"\n     *          meta: {hits: \"worktime\", ids: Array(1)\n     *      }\n     *      stack: ....\n     *  }\n     *\n     *  OR\n     *  if application adapter has not normalized error it looks like this\n     *  {\n     *      errors: [\n     *          {\n     *              error: \"overlap\"\n     *              errorMeta: {hits: \"absence\", ids: Array(1)}\n     *              error_msg: \"two or more rows have overlapping dates\"\n     *          }\n     *      ]\n     *      message: \"Ember Data Request POST http://localhost:30001/abcenses returned a 403 .....\n     *      name: \"Error\"\n     */\n    _capiError(error) {\n        if (typeof error !== 'object') return null;\n        let ret = null;\n        let errors = 'errors';\n        if (isArray(get(error, 'errors'))) {\n            errors = 'errors.0';\n        }\n        if (get(error, 'payload.error')) {\n            ret = {\n                type: 'capi',\n                error: get(error, 'payload.error'),\n                message: get(error, 'payload.error_msg'),\n                meta: get(error, 'payload.meta'),\n            };\n        } else if (get(error, errors + '.error')) {\n            ret = {\n                type: 'capi',\n                error: get(error, errors + '.error'),\n                message: get(error, errors + '.error_msg'),\n                meta: get(error, errors + '.errorMeta'),\n            };\n        } else {\n            return null;\n        }\n\n        switch (ret.error) {\n            case 'overlap':\n                if (ret.meta.hits == 'absence')\n                    ret.message = get(this, 'intl').t('validation.absence_overlap');\n                else if (ret.meta.hits == 'comp')\n                    ret.message = get(this, 'intl').t('validation.comp_overlap');\n                else ret.message = get(this, 'intl').t('validation.worktime_overlap');\n                break;\n            case 'not_only_row':\n                ret.message = get(this, 'intl').t('validation.worktime_not_only_row');\n                break;\n            case 'not_found':\n                ret.message = get(this, 'intl').t('validation.not_found.general');\n                break;\n            case 'validation_error':\n                ret.message = this.intl.exists('validation.' + ret.message)\n                    ? this.intl.t('validation.' + ret.message)\n                    : ret.message;\n                break;\n            case 'form_field_exists':\n                ret.message = get(this, 'intl').t('formeditor.field_exists');\n                break;\n        }\n\n        return ret;\n    },\n\n    /**\n     * FORMAT EXAMPLE\n     *  {\n     *      message: \"The ajax operation was aborted\"\n     *      name: \"Error\"\n     *      payload: null\n     *      stack: ....\n     */\n    _networkError(error) {\n        if (typeof error !== 'object') return null;\n        if (error.message !== 'The ajax operation was aborted') return null;\n\n        return {\n            type: 'network',\n            error: error.message,\n            message: get(this, 'intl').t('validation.network_error'),\n            meta: null,\n        };\n    },\n\n    /**\n     * FORMAT EXAMPLE for VastuuGroup Reliable Partner API errors\n     * Error object structure:\n     * {\n     *     message: \"Request failed with status code 403\"\n     *     payload: {\n     *         response_body: \"{\\\"detail\\\":\\\"No active license.\\\",\\\"error\\\":\\\"license_missing\\\",\\\"product_plan_id\\\":\\\"\\\",\\\"product_family_id\\\":\\\"Valvoja\\\",\\\"product_name\\\":\\\"Valvoja rajapinta\\\"}\"\n     *     }\n     * }\n     *\n     * Parsed response_body contains:\n     * - detail: Human-readable error message (required)\n     * - error: Error code for programmatic handling (optional)\n     * - product_name: Name of the product/service (optional)\n     * - product_family_id: Product family identifier (optional)\n     * - product_plan_id: Product plan identifier (optional)\n     *\n     * @see https://api.vastuugroup.fi/api-docs#tag/Luotettava-Kumppani-API-v1.1\n     */\n\n    _vastuuGroupError(error) {\n        // Validate error structure - must have response body\n        if (!error?.payload?.response_body) return null;\n\n        try {\n            // Parse JSON response body\n            const body = JSON.parse(error.payload.response_body);\n\n            // Detail field is required for vastuugroup errors\n            if (!body?.detail) return null;\n\n            // error message prefix\n            const errorPrefix = this.intl.t('general.error_prefix');\n\n            // Build error message, append product name if available\n            const message = body.product_name\n            ? `${errorPrefix} ${body.detail} (${body.product_name})`\n            : `${errorPrefix} ${body.detail}`;\n\n            // Return normalized error object\n            return {\n            type: 'vastuugroup',\n            error: body.error || 'unknown_error',\n            message,\n            meta: {\n                product_name: body.product_name,\n                product_family_id: body.product_family_id,\n                product_plan_id: body.product_plan_id,\n            },\n            };\n        } catch {\n            // Invalid JSON in response body\n            return error;\n        }\n    },\n\n    async addPossibleHitsToMessage(error) {\n        if (!error.meta) return;\n\n        if (error.meta.hits === 'absence') {\n            const absences = await this.store.query('abcense', {\n                id: error.meta.ids.join(','),\n                sideload: true,\n            });\n            absences.forEach((item) => {\n                error.message += `\\n - ${get(item, 'abcensetype.name')} ${moment(get(item, 'startdate')).format('L')} - ${moment(get(item, 'enddate')).format('L')}`;\n            });\n        }\n\n        if (error.meta.hits === 'worktime') {\n            const worktimes = await this.store.query('worktime', {\n                id: error.meta.ids.join(','),\n                sideload: true,\n            });\n            worktimes.forEach((item) => {\n                error.message += `\\n - ${moment(get(item, 'date')).format('L')} ${get(item, 'project.name')} ${get(item, 'starttime')} - ${get(item, 'endtime')}`;\n            });\n        }\n\n        if (error.meta.hits === 'comp') {\n            const worktimes = await this.store.query('worktime', {\n                id: error.meta.ids.join(','),\n                sideload: true,\n            });\n            worktimes.forEach((item) => {\n                error.message += `\\n - ${get(item, 'project.name')} ${moment(get(item, 'date')).format('L')}`;\n            });\n        }\n    },\n});\n","import Service from '@ember/service';\nimport Evented from '@ember/object/evented';\nimport { inject as service } from '@ember/service';\n\nexport default Service.extend(Evented, {\n    lastTimeResumed: null,\n    started: null,\n    sessionhelper: service(),\n\n    init() {\n        this._super();\n        this.lastTimeResumed = new Date();\n        this.started = new Date();\n    },\n\n    storeEvent(action, type, record) {\n        this.trigger('storeEvent', { action: action, type: type, record: record });\n    },\n\n    resumed(params = {}) {\n        // if token will expire in 5 minutes, do not trigger onResumed\n        // application-controller should handle token-refresh if token is about to expire\n        // also if app is in offline-mode do not trigger onResumed\n        if (this.sessionhelper.tokenWillExpireIn(5) || this.sessionhelper.isOffline()) {\n            // eslint-disable-next-line no-console\n            console.log('evented.resumed.tokenHasExpired'); // debugging why users are being logged off from dashboard, we should see this debugging-line in sentry if dashboard doesn't trigger onResumed when token was expired\n            return;\n        } else {\n            // eslint-disable-next-line no-console\n            console.log('evented.resumed triggering onResumed'); // if token wasn't expired, we should see this debugging-line in sentry\n        }\n\n        // duration is time from last event in seconds .. first resume is calculated from initilization\n        params.duration = (new Date() - this.lastTimeResumed) / 1000;\n        this.lastTimeResumed = new Date();\n        params.ontime = (new Date() - this.started) / 1000;\n        this.trigger('onResumed', params);\n    },\n\n    getOntime() {\n        return (new Date() - this.started) / 1000;\n    },\n\n    dashboardProjectChanged(project) {\n        this.trigger('dashboardProjectChanged', { project });\n    },\n\n    // this is triggered in components/collector/form-add/component.js\n    // when onChange action is called in form-add\n    // why? because we need to know when user has changed fields in form-add\n    // ie. when user has changed project, we need to know that so we can update distance to project\n    formAddFieldChanged(fieldName, value) {\n        this.trigger('formAddFieldChanged', { fieldName, value });\n    },\n\n    // this is triggered in services/gps2.js\n    // when gps position is changed or reset\n    // why? because we need to know when users gps position has changed\n    gpsLockedPositionChanged(lockedPosition) {\n        this.trigger('gpsLockedPositionChanged', { lockedPosition });\n    },\n});\n","define(\"tt4/services/excel\", [\"exports\", \"ember-cli-data-export/services/excel\"], function (_exports, _excel) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _excel.default;\n    }\n  });\n  Object.defineProperty(_exports, \"initialize\", {\n    enumerable: true,\n    get: function get() {\n      return _excel.initialize;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/export-file.coffee.old\n// Generated by CoffeeScript 2.6.1\nimport Service from '@ember/service';\n\nexport default Service.extend({\n    exportFile: function (content, filename = 'export', type = 'txt', base64 = false) {\n        var fullFileName;\n        fullFileName = filename + '.' + type;\n        if (typeof LocalFileSystem !== 'undefined' && LocalFileSystem !== null) {\n            return this._exportLocalFile(content, fullFileName, 'text/' + type);\n        } else {\n            //download file for desktop\n            return this._createExportLink(content, fullFileName, 'attachment/' + type, base64);\n        }\n    },\n    _exportLocalFile: function (content, fullFileName, mime) {\n        return window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fileSystem) {\n            return fileSystem.root.getFile(\n                fullFileName,\n                {\n                    create: true,\n                },\n                function (entry) {\n                    var fileEntry;\n                    fileEntry = entry;\n                    return entry.createWriter(function (writer) {\n                        //write file and open\n                        writer.onwrite = function (evt) {\n                            return cordova.plugins.fileOpener2.open(fileEntry.toURL(), mime);\n                        };\n                        return writer.write(encodeURIComponent(content));\n                    });\n                },\n            );\n        });\n    },\n    _createExportLink: function (content, fullFileName, mime, base64) {\n        var a;\n        a = document.createElement('a');\n        if (base64) {\n            a.href = 'data:' + mime + ';base64,' + encodeURIComponent(content);\n        } else {\n            a.href = 'data:' + mime + ',' + encodeURIComponent(content);\n        }\n        a.target = '_blank';\n        a.download = fullFileName;\n        document.body.appendChild(a);\n        return a.click();\n    },\n});\n","/* eslint-disable ember/named-functions-in-promises */\nimport Service, { inject as service } from '@ember/service';\nimport { set, get } from '@ember/object';\nimport formReport from '../pods/collector/report-comp/component';\nimport { getSums } from 'tt4/utils/sumrow-util';\n\n/*\nThis service transforms json to excel via ttapi2\n\nfor createExcelFromJSON(json), the JSON should be like this:\nnote: only ROWS are required\n\n{\n\"filters\":[\n        [\"project:\", \"test project\"]\n        [\"date\", \"Ke, 1.5.2019 - Ti, 10.9.2019\"]\n    ],\n\"columns\":[\n        { \"name\": \"Name\", \"key\": \"name\"},\n        { \"name\": \"Other\", \"key\": \"key_other\"}\n    ],\n\"rows\":[\n        { \"name\": \"John Doe\", \"key_other\": \"other info\"},\n        { \"name\": \"Harry Barry\", \"key_other\": \"extra info\"}\n    ],\n\"name\": \"file name .xlsx extension is optional\"\n}\n\n*/\n\nexport default Service.extend({\n    ttapi2: service(),\n    collector: service('collector-service'),\n    session: service(),\n    sessionGlobals: service(),\n    store: service(),\n    intl: service(),\n    flags: service(),\n    dialogs: service(),\n\n    createExcelJSONFromForm(form, model, columns, filters = [], sumRow = false) {\n        let excelJSON = {};\n        const formatAsNumbers = ['hours'];\n\n        let excelColumns = columns.map((column) => {\n            const ret = {\n                name: get(column, 'name.string') || get(column, 'name'),\n                key: get(column, 'ext'),\n            };\n            if (\n                formatAsNumbers.includes(column.obj.type) &&\n                this.flags.test('excel-hours-with-decimals')\n            )\n                ret.numFmt = '0.000';\n            return ret;\n        });\n\n        let rows = this.formatModelToJSON(form, model, columns);\n\n        excelJSON['filters'] = filters;\n        excelJSON['columns'] = excelColumns;\n        excelJSON['rows'] = rows;\n        if (sumRow) {\n            excelJSON['sumrow'] = sumRow;\n        }\n\n        return excelJSON;\n    },\n\n    /*\n        Give this function the form, the model, and the columns/fields on the form (@get('defaultcolumns') or similar\n        It will format this information to be displayed properly in an excel, and return it as json\n    */\n    formatModelToJSON(form, model, columns) {\n        let formattedJSON = model.map((row) => {\n            let formattedRow = {};\n            columns.forEach((column) => {\n                let ext = get(column, 'ext');\n                let obj = get(column, 'obj');\n                let cell = get(row, ext);\n                let formatted = get(this, 'collector').format(\n                    cell,\n                    obj,\n                    null,\n                    row,\n                    'serverlessexcel',\n                    form,\n                );\n\n                // do not convert numbers to strings\n                let exportFormatted = null;\n                if (typeof formatted === 'number') {\n                    exportFormatted = formatted;\n                } else if (\n                    ['row_info.created', 'row_info.modified'].includes(ext) &&\n                    row.row_info\n                ) {\n                    exportFormatted = formatted\n                        ? moment(formatted).format('YYYY-MM-DD HH:mm')\n                        : null;\n                } else {\n                    exportFormatted = get(this, 'collector').format_export(formatted);\n                }\n\n                formattedRow[ext] = exportFormatted;\n            });\n            return formattedRow;\n        });\n\n        return formattedJSON;\n    },\n\n    /*\n        Give this function some json and an optional file name, it will call ttapi2 and return a presigned s3 url for the file\n        See json examples from the top\n        Now returns promise so we can close excel-modal when exporting is done\n    */\n    async createExcelFromJSON(json, fileName = null) {\n        return this.createExportFromJSON('excel', json, fileName);\n    },\n\n    async createCsv(form, data, columns) {\n        const json = this.createExcelJSONFromForm(form, data, columns);\n        return this.createExportFromJSON('csv', json);\n    },\n\n    async createExportFromJSON(type, json, fileName = null) {\n        if (!fileName) {\n            const name = get(this, 'session.currentUser.company') || 'movenium_export';\n            json['name'] = name;\n        }\n\n        try {\n            let payload = JSON.stringify(json);\n            let url = `export?type=${type}`;\n\n            // If the payload is larger than 5MB, use compression\n            // This is a workaround for 10MB limit on APIGateway for POST requests\n            // that might be encountered when trying to export large amounts of data.\n            if (payload.length > 5 * 1024 * 1024) {\n                const compressed = await this.compressAndEncodeBase64(json);\n                payload = { data: compressed };\n                url += '&compression=true';\n            }\n\n            const res = await get(this, 'ttapi2').request(url, {\n                data: payload,\n                dataType: 'json',\n                contentType: 'application/json',\n                method: 'POST',\n            });\n\n            this.handleResponse(res);\n        } catch (error) {\n            this.handleError(error);\n        }\n    },\n\n    /**\n     * Takes a JSON object, compresses it using GZIP, and encodes it as Base64\n     * @param {Object} obj Object to be compressed and encoded\n     * @returns {string} Base64 encoded string\n     */\n    async compressAndEncodeBase64(obj) {\n        // Convert the object to a JSON string\n        const jsonString = JSON.stringify(obj);\n\n        // Convert the JSON string to a Uint8Array\n        const encoder = new TextEncoder();\n        const uint8Array = encoder.encode(jsonString);\n\n        // Create a GZIP compression stream\n        const compressionStream = new window.CompressionStream('gzip');\n\n        // Stream the uint8Array through the compression stream\n        const compressedStream = new Blob([uint8Array]).stream().pipeThrough(compressionStream);\n\n        // Collect the compressed chunks into a single Uint8Array\n        const reader = compressedStream.getReader();\n        const chunks = [];\n        let done, value;\n        while ((({ done, value } = await reader.read()), !done)) {\n            chunks.push(value);\n        }\n\n        // Concatenate all chunks into a single Uint8Array\n        const compressedArray = new Uint8Array(\n            chunks.reduce((sum, chunk) => sum + chunk.length, 0),\n        );\n        let offset = 0;\n        for (const chunk of chunks) {\n            // eslint-disable-next-line ember/use-ember-get-and-set\n            compressedArray.set(chunk, offset);\n            offset += chunk.length;\n        }\n\n        // Encode the compressed Uint8Array as Base64\n        // Process the array in chunks to avoid \"too many arguments\" error that would occur with large data\n        let binary = '';\n        const chunkSize = 8192;\n        for (let i = 0; i < compressedArray.length; i += chunkSize) {\n            binary += String.fromCharCode.apply(null, compressedArray.subarray(i, i + chunkSize));\n        }\n        const base64String = window.btoa(binary);\n\n        return base64String;\n    },\n\n    async createBase64ExcelFromJSON(json, fileName = null) {\n        if (!fileName) {\n            let name = get(this, 'session.currentUser.company') || 'movenium_export';\n            json['name'] = name;\n        }\n        try {\n            const response = await get(this, 'ttapi2').request('export?type=excel', {\n                data: JSON.stringify(json),\n                dataType: 'json',\n                contentType: 'application/json',\n                method: 'POST',\n            });\n            if (!response.url) throw new Error('Url not found from response');\n            return await this.getBase64(response);\n        } catch (e) {\n            this.handleError(e);\n        }\n    },\n\n    async getBase64(response) {\n        const resp = await fetch(response.url);\n        const blob = await resp.blob();\n        const reader = new FileReader();\n        const base64 = await new Promise((resolve) => {\n            reader.onload = () => {\n                resolve(reader.result);\n            };\n            reader.readAsDataURL(blob);\n        });\n        return base64.split(',')[1];\n    },\n\n    handleResponse(res) {\n        if (res.url) {\n            const target = window.cordova ? '_system' : undefined;\n            window.open(res.url, target);\n        }\n    },\n\n    handleError(e) {\n        this.dialogs.alert(e.message || e);\n    },\n\n    async createPdfElement(data, selected, settings, columns, params = {}, includeAllRows = false) {\n        const rows = selected.length > 0 && !includeAllRows ? selected : await data;\n        let component = this.createComponent(rows, settings);\n        if (params.statusInfo)\n            await set(\n                component,\n                'statusInfoRows',\n                await this.getStatusInfoRows(settings.form, await data),\n            );\n        set(component, 'data', data);\n        set(component, 'pdfSettings', params);\n        let formattedSumrow = getSums(\n            rows,\n            columns,\n            settings.form,\n            this.collector,\n            'sumrow',\n        ).firstObject;\n        set(component, 'pdf_formatted_sumRow', formattedSumrow);\n        return await get(component, 'asPdfElement');\n    },\n\n    async createPdfFull(form, selected, filters, showColumns, params = {}, format = null) {\n        let type = form === 'diary' ? 'diary' : 'row';\n        // This is used to create a new stylish pdf with headers on side\n        if (params.layoutOption === 'sideHeaders') type = 'horizontal';\n\n        let url = 'pdf/' + type;\n\n        let postParams = {\n            form: form,\n            lang: moment.locale(),\n            filters: JSON.stringify(filters),\n        };\n\n        if (selected.length !== 0) {\n            postParams.id = selected.mapBy('id').join(',');\n        }\n\n        if (showColumns) {\n            postParams.showColumns = showColumns;\n        }\n\n        if (params.template) {\n            postParams.template = get(params, 'template.id');\n        }\n\n        if (params.signature) {\n            postParams.signature = params.signature;\n        }\n\n        if (params.dateAndPlace) {\n            postParams.dateAndPlace = params.dateAndPlace;\n        }\n\n        if (format) {\n            postParams.type = format;\n        }\n\n        let request = await this.collector.ttapi({\n            dataType: 'text',\n            url: url,\n            data: postParams,\n        });\n\n        if (format === 'base64') {\n            return request;\n        } else {\n            let data = JSON.parse(request);\n            if (data.url) {\n                if (window.cordova) {\n                    window.open(\n                        data.url,\n                        '_system',\n                        'location=yes,enableViewportScale=yes,hidden=no,usewkwebview=yes',\n                    );\n                } else {\n                    window.open(data.url);\n                }\n            }\n        }\n    },\n\n    createComponent(selected, settings) {\n        return formReport.create({\n            store: this.store,\n            intl: this.intl,\n            Collector: this.collector,\n            sessionGlobals: this.sessionGlobals,\n            rowsPerPage: 'all',\n            renderer: this,\n            checked_rows: selected ? selected.map((item) => get(item, 'id')) : [],\n            settings: settings,\n        });\n    },\n\n    async getStatusInfoRows(form, data) {\n        const row_ids = data.mapBy('id');\n        return this.collector.ttapi({\n            url: 'get_status_info',\n            method: 'post',\n            data: {\n                ids: row_ids,\n                form: form,\n            },\n        });\n    },\n});\n","define(\"tt4/services/file-queue\", [\"exports\", \"ember-file-upload/services/file-queue\"], function (_exports, _fileQueue) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _fileQueue.default;\n    }\n  });\n});\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\nimport config from '../config/environment';\nimport RSVP from 'rsvp';\nimport { run } from '@ember/runloop';\nimport { getOwner } from '@ember/application';\nimport { warn, assert } from '@ember/debug';\nimport * as LDClient from 'launchdarkly-js-client-sdk';\n/* global cordova */\n\nconst NON_EXISTANT_FLAG_VALUE = 'LD_FLAG_NON_EXISTANT';\n\nexport default Service.extend({\n    session: service(),\n    collector: service('collector-service'),\n\n    test: function (name) {\n        if (window.overrideFlags && window.overrideFlags[name] !== undefined) {\n            return window.overrideFlags[name];\n        }\n\n        const flags = [\n            {\n                name: 'test',\n                filters: ['beta'],\n            },\n        ];\n\n        const flag = flags.findBy('name', name);\n\n        if (!flag) {\n            return this.variation(name, false);\n        }\n\n        return this.testFlagFilters(flag);\n    },\n\n    testFlagFilters(flag) {\n        if (!flag.filters) return true;\n\n        let all_ok = true;\n        flag.filters.forEach((filter) => {\n            if (filter === 'beta') {\n                if (!this.isBetaService()) all_ok = false;\n            }\n            if (filter === 'A/B') {\n                if (!this.isABtesting()) all_ok = false;\n            }\n        });\n\n        return all_ok;\n    },\n\n    isBetaService() {\n        const betaServices = {\n            dev: [30416],\n            next: [30559, 30547],\n            production: [100132],\n        };\n\n        if (betaServices[this.getENV()].includes(get(this, 'session.currentUser.partnerid')))\n            return true;\n        else return false;\n    },\n\n    /**\n     * A/B testing service list in production\n        100132  Pääurakoitsija\n        102051\tMaanrakennusliike Vähätalo Oy       20\n        101940\tKaivinpalvelu J.Saarinen Oy         27\n        101852\tNetcontrol Oy                       37\n        101759\tKymen STG Oy                        20\n        101548\tSuomen Meriittirakennus Oy\t        28\n        101100\tGles Lahti Oy                       21\n        100925\tPähkinähoito Oy                     21\n        100475\tMaanrakennus Esa Aaltonen Oy\t    32\n        84285  \tOvitek Oy                           15\n        86547\tPSK Group Oy                        9\n        30665\tAb Sparal Oy                        17\n        83003\tTiiko Oy                            26\n        102120\tMaanrakennus P Örn Oy               20\n        102033\tSuomen kaasuenergia Oy\t            15\n        102013\tMaanrakennus Kivelä Oy              16\n        31620\tRestart Oy                          25\n        86022\tTeam Juntunen Oy                    19\n        82776\tConsti Korjausurakointi Oy          24\n        86043\tItä-Suomen Julkisivumaalaus Oy      10\n        30684\tTampereen Taloteko Oy               12\n        82564\tWesain Oy                           19\n        82313\tVarsinaisbitumi Oy                  26\n        82373\tRauno Saari Oy                      16\n        31808\tRakennusliike Vaasan Rakennusk...   23\n        31139\tVeljet Mäkilä Oy                    16\n     */\n    isABtesting() {\n        const ABServices = {\n            dev: [],\n            next: [],\n            production: [\n                100132, 102051, 101940, 101852, 101759, 101548, 101100, 100925, 100475, 84285,\n                86547, 30665, 83003, 102120, 102033, 102013, 31620, 86022, 82776, 86043, 30684,\n                82564, 82313, 82373, 31808, 31139,\n            ],\n        }[this.getENV()];\n\n        if (ABServices.includes(get(this, 'session.currentUser.partnerid'))) return true;\n        else return false;\n    },\n\n    getENV() {\n        if (config.target === 'development') return 'dev';\n        if (config.target === 'release-next' || config.target === 'next') return 'next';\n        return 'production';\n    },\n\n    /* LaunchDarkly stuff from here, the above can be removed when old flags are not needed anymore */\n\n    async initialize(data = {}) {\n        let { clientSideId, streaming = false } = this._config();\n\n        const NullClient = {\n            initialize() {},\n            allFlags() {\n                return {};\n            },\n            variation(_, defaultValue) {\n                if (defaultValue !== undefined) {\n                    return defaultValue;\n                }\n\n                return false;\n            },\n        };\n\n        if (!Array.isArray(data['userrow'].user) || !data['userrow'].user.length) {\n            // no need to write logs full of these on tests\n            //warn('data.userrow not specified. Defaulting all feature flags to \"false\"', false, { id: 'launch-darkly.user-data-not-specified' });\n\n            set(this, '_client', NullClient);\n\n            return RSVP.resolve();\n        }\n        // parse partnerid to int if it seems to be numeric\n        const partnerid = isNaN(data.partnerid) ? data.partnerid : parseInt(data.partnerid, 10);\n        const userrow = data['userrow'].user[0];\n        const context = {\n            kind: 'user',\n            key: partnerid + '' + userrow.id,\n            userid: userrow.id,\n            country: data.country,\n            partnerid: partnerid,\n            serviceType: config.brand,\n            userlevel: parseInt(userrow.userlevel, 10),\n            application: window.cordova ? true : false,\n            version: config.APP.version,\n            serviceCreated: moment(data.company_info.row_info.created).valueOf(),\n            products: this.collector.getProducts().join(','),\n        };\n\n        if (window.cordova) {\n            context.custom = {\n                appVersion: await cordova.getAppVersion.getVersionNumber(),\n            };\n        }\n\n        assert(\n            'ENV.launchDarkly.clientSideId must be specified in config/environment.js',\n            clientSideId,\n        );\n\n        if (!clientSideId) {\n            warn(\n                'ENV.launchDarkly.clientSideId not specified. Defaulting all feature flags to \"false\"',\n                false,\n                { id: 'launch-darkly.client-id-not-specified' },\n            );\n\n            set(this, '_client', NullClient);\n\n            return RSVP.resolve();\n        }\n\n        assert('user.key must be specified in initilize payload', context.key);\n\n        if (!context.key) {\n            warn(\n                'user.key not specified in initialize payload. Defaulting all feature flags to \"false\"',\n                false,\n                { id: 'launch-darkly.user-key-not-specified' },\n            );\n\n            set(this, '_client', NullClient);\n\n            return RSVP.resolve();\n        }\n\n        if (!LDClient) {\n            warn(\n                'Launch Darkly JS client not found. Defaulting all feature flags to \"false\"',\n                false,\n                { id: 'launch-darkly.client-not-found' },\n            );\n\n            set(this, '_client', NullClient);\n\n            return RSVP.resolve();\n        }\n\n        if (sessionStorage.overrideFlags) {\n            window.overrideFlags = JSON.parse(sessionStorage.overrideFlags);\n        }\n\n        return this._initialize(clientSideId, context, streaming);\n    },\n\n    _config() {\n        let appConfig = getOwner(this).resolveRegistration('config:environment');\n\n        return appConfig.launchDarkly || {};\n    },\n\n    _initialize(id, context) {\n        return new RSVP.Promise((resolve, reject) => {\n            let client = LDClient.initialize(id, context, {\n                bootstrap: 'localStorage',\n            });\n\n            client.on('ready', () => {\n                set(this, '_client', client);\n                run(null, resolve);\n            });\n\n            // NOTE: Not following changes on flags currently, can be implemented later if we think we need them\n            //   client.on('change', settings => {\n            //     Object.keys(settings).forEach(key => {\n            //         this.trigger(key);\n            //     });\n            //   });\n\n            run.later(\n                this,\n                () => {\n                    if (!get(this, '_client')) {\n                        run(null, reject);\n                    }\n                },\n                5000,\n            );\n        });\n    },\n\n    allFlags() {\n        return get(this, '_client').allFlags();\n    },\n\n    variation(key, defaultValue = false) {\n        if (!get(this, '_client')) {\n            //warn(`client is not initialized. Defaulting feature flag to '${defaultValue}'`, false, { id: 'launch-darkly.client-not-initialized' });\n            return defaultValue;\n        }\n        let nonExistantFlagValue = `${NON_EXISTANT_FLAG_VALUE}: ${key}`;\n        let value = get(this, '_client').variation(key, nonExistantFlagValue);\n\n        if (value === nonExistantFlagValue) {\n            // no need to write logs full of these on tests\n            //warn(`Feature flag with key '${key}' has not been defined. Returning default value of '${defaultValue}'`, false, { id: 'launch-darkly.feature-flag-not-defined' });\n\n            return defaultValue;\n        }\n\n        return value;\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/form-json.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormJsonService;\n\nimport Ember from 'ember';\n\nFormJsonService = Ember.Service.extend({\n    store: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    _validateErrors: [],\n    /*\n  export form as json .. format example\n\n  {\n    \"formname\": {\n      \"objects\": {\n        \"fieldname\": {\n          \"type\": \"date\",\n          \"features\": {\n            \"mandatory\": true\n          }\n        },\n          \"user\": {\n              \"type\": \"database\",\n              \"options\": {\n                \"form\": \"user\",\n                \"fields\": [\n                  \"lastname\",\n                  \"firstname\",\n                  \"number\"\n                ]\n              },\n      },\n      \"features\": {\n          \"mandatory\": true\n      }\n    }\n\n  */\n    exportForm: function (form) {\n        var form_array, json_array;\n        form_array = this._getForm(form);\n        if (form_array) {\n            json_array = {};\n            json_array[form] = form_array;\n            return json_array;\n        }\n    },\n    /*\n  import form or multiple forms from json array\n  */\n    import: function (json) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var form, form_array, promises;\n            promises = [];\n            for (form in json) {\n                form_array = json[form];\n                promises.push(this._importForm(form, form_array));\n            }\n            return Ember.RSVP.Promise.all(promises).then((results) => {\n                var saved;\n                saved = results.filter(function (item) {\n                    return item === 'saved';\n                });\n                return resolve(saved.length > 0);\n            }, reject);\n        });\n    },\n    /*\n  Find changes that are needed and add all fields and settings that aren't found yet\n  */\n    _importForm: function (form, form_array) {\n        return new Ember.RSVP.Promise((resolve) => {\n            var changes, existing_form_array, message, this_is_a_new_form;\n            this.set('_validateErrors', []);\n            existing_form_array = this._getForm(form);\n            changes = this._getNeededChanges(form_array, existing_form_array);\n            this_is_a_new_form = existing_form_array === null;\n            if (!this_is_a_new_form && changes.add.length < 1) {\n                this.get('dialogs').alert('file did not contain anything new');\n                resolve('no_changes');\n                return;\n            }\n            if (this.get('_validateErrors.length') > 0) {\n                this.get('dialogs').alert(\n                    '<b>Importing cannot be done because of these errors:</b><br><br>' +\n                        this.get('_validateErrors').join('<br>'),\n                );\n                resolve('errors');\n                return;\n            }\n            message = this._getConfirmMessage(this_is_a_new_form, form, changes.add);\n            return this.get('dialogs')\n                .confirm(message)\n                .then((ret) => {\n                    var form_name, form_record;\n                    if (!ret) {\n                        resolve('cancelled');\n                        return;\n                    }\n                    console.info('Importing', form);\n                    // form does not exist .. let's create it\n                    if (this_is_a_new_form) {\n                        form_name = form_array.name != null ? form_array.name : '$lang(10)';\n                        form_record = this.get('store').createRecord('form', {\n                            name: form_name,\n                            external_type: form,\n                        });\n                    } else {\n                        form_record = this.get('store')\n                            .peekAll('form')\n                            .findBy('external_type', form);\n                    }\n                    this._addNeededRecords(\n                        form_record,\n                        changes.add,\n                        this._normalizeForm(form_array),\n                    );\n                    return this._saveAllDirtyFormRecords().then(() => {\n                        this.get('dialogs').alert('Form ' + form + ' added and saved to backend');\n                        return resolve('saved');\n                    });\n                });\n        });\n    },\n    // when called all dirty form, form-setting,form-field and form-field-detting records are saved.\n    // records are saved in given order by calling this function recursively\n    _saveAllDirtyFormRecords: function (type = 'form') {\n        return new Ember.RSVP.Promise((resolve) => {\n            var dirtyRecords, promises, save_order;\n            save_order = ['form', 'form-setting', 'form-field', 'form-field-setting'];\n            promises = [];\n            dirtyRecords = this.get('store')\n                .peekAll(type)\n                .filter(function (record) {\n                    return record.get('hasDirtyAttributes');\n                });\n            dirtyRecords.forEach(function (record) {\n                return promises.push(record.save());\n            });\n            return Ember.RSVP.Promise.all(promises).then(() => {\n                var save_next_index;\n                save_next_index = save_order.indexOf(type) + 1;\n                if (save_next_index >= save_order.length) {\n                    resolve();\n                    return;\n                }\n                return this._saveAllDirtyFormRecords(save_order[save_next_index]).then(function () {\n                    return resolve();\n                });\n            });\n        });\n    },\n    // make confirmation message for user to decide whether to import given file or not\n    _getConfirmMessage: function (new_form, form, addChanges) {\n        var message, new_features, new_fields;\n        if (!new_form) {\n            message = 'Add these to exiting form <b>' + form + '</b>?';\n        } else {\n            message = 'Add new form named <b>' + form + '</b>?';\n        }\n        new_fields = addChanges.filter((item) => {\n            return this._testType(item) === 'form-field';\n        });\n        if (new_fields.length > 0) {\n            message += '<br><br><b>Fields:</b> <br>' + new_fields.join('<br>');\n        }\n        new_features = addChanges.filter((item) => {\n            return this._testType(item) === 'form-setting';\n        });\n        new_features = new_features.map(function (item) {\n            return item.split('@')[1].split(':')[0];\n        });\n        if (new_features.length > 0) {\n            message += '<br><br><b>Settings:</b> <br>' + new_features.join('<br>');\n        }\n        return message;\n    },\n    // go through every needed add and create correct type record for it\n    _addNeededRecords: function (form_record, adds, values) {\n        var add, j, len, results1, type;\n        results1 = [];\n        for (j = 0, len = adds.length; j < len; j++) {\n            add = adds[j];\n            type = this._testType(add);\n            results1.push(\n                this.get('store').createRecord(\n                    type,\n                    this._createRecordParams(form_record, add, values[add]),\n                ),\n            );\n        }\n        return results1;\n    },\n    // from key test what is the type of object: form-setting, form-field-setting or form-field\n    _testType: function (key) {\n        if (key.substring(0, 1) === '@') {\n            return 'form-setting';\n        } else if (key.indexOf('@') !== -1) {\n            return 'form-field-setting';\n        } else {\n            return 'form-field';\n        }\n    },\n    // get all the needed parameters to create a record of needed type\n    _createRecordParams: function (form_record, key, values) {\n        var feature_name, field_name, field_record, form_fields, type;\n        type = this._testType(key);\n        if (type === 'form-field') {\n            field_name = values.name || '$lang(10)';\n            return {\n                form: form_record,\n                type: values.type,\n                name: field_name,\n                external_type: key,\n                options: values.options,\n                nro: values.nro,\n            };\n        }\n        if (type === 'form-field-setting') {\n            field_name = key.split('@')[0];\n            feature_name = key.split('@')[1].split(':')[0];\n            form_fields = this.get('store')\n                .peekAll('form-field')\n                .filter(function (item) {\n                    return item.get('form.id') === form_record.get('id');\n                });\n            field_record = form_fields.findBy('external_type', field_name);\n            return {\n                field: field_record,\n                name: feature_name,\n                value: values.value,\n                userlevel: values.userlevel,\n            };\n        }\n        if (type === 'form-setting') {\n            feature_name = key.split('@')[1].split(':')[0];\n            return {\n                form: form_record,\n                name: feature_name,\n                value: values.value,\n                userlevel: values.userlevel,\n            };\n        }\n    },\n    // normalize current forms and needed forms and diff those to get what needs to added and removed\n    _getNeededChanges: function (new_form, old_form) {\n        var add, normalizedCurrent, normalizedNeeded, remove;\n        if (old_form) {\n            normalizedCurrent = this._normalizeForm(old_form);\n        } else {\n            normalizedCurrent = {};\n        }\n        normalizedNeeded = this._normalizeForm(new_form);\n        add = this._array_diff(Object.keys(normalizedNeeded), Object.keys(normalizedCurrent));\n        remove = this._array_diff(Object.keys(normalizedCurrent), Object.keys(normalizedNeeded));\n        return {\n            add: add,\n            remove: remove,\n        };\n    },\n    _array_diff: function (arr1, arr2) {\n        return arr1.filter(function (i) {\n            return arr2.indexOf(i) < 0;\n        });\n    },\n    // get json array and normalize it to array format:\n    // field: <values>\n    // field2: <values>\n    // field2@mandatory: <values>\n    // @somefature: <values>\n    _normalizeForm: function (form_array) {\n        var feature, field_name, field_object, key, normalized, options, ref, ref1, ref2, values;\n        normalized = {};\n        ref = form_array.objects;\n        for (field_name in ref) {\n            field_object = ref[field_name];\n            key = field_name;\n            options = this._encodeOptions(field_object.type, field_object.options, field_name);\n            normalized[key] = {\n                type: field_object.type,\n                name: field_object.name,\n                options: options,\n                nro: field_object.nro,\n            };\n            ref1 = field_object.features;\n            for (feature in ref1) {\n                values = ref1[feature];\n                key =\n                    field_name + '@' + feature + ':' + 'u' + values.userlevel + 'v' + values.value;\n                normalized[key] = values;\n            }\n        }\n        ref2 = form_array.features;\n        for (feature in ref2) {\n            values = ref2[feature];\n            key = '@' + feature + ':' + 'u' + values.userlevel + 'v' + values.value;\n            normalized[key] = values;\n        }\n        return normalized;\n    },\n    // fetch form from store and return it as array\n    _getForm: function (form) {\n        var formRecord, form_array;\n        formRecord = this.get('store').peekAll('form').findBy('external_type', form);\n        if (!formRecord) {\n            return null;\n        }\n        form_array = {};\n        if (formRecord.get('name') !== '$lang(10)') {\n            form_array.name = formRecord.get('name');\n        }\n        form_array.objects = this._getFormFields(formRecord.get('id'));\n        form_array.features = this._getFormFeatures(formRecord.get('id'));\n        return form_array;\n    },\n    _getFormFields: function (formid) {\n        var field_json, formFields, store;\n        store = this.get('store');\n        formFields = store.peekAll('form-field').filter(function (item) {\n            return item.get('form.id') === formid;\n        });\n        field_json = {};\n        formFields.forEach((formField) => {\n            var formname;\n            formname = formField.get('external_type');\n            field_json[formname] = {\n                type: formField.get('type'),\n                features: this._getFormFieldFeatures(formField),\n                options: this._decodeOptions(formField.get('type'), formField.get('options')),\n                nro: formField.get('nro'),\n            };\n            if (formField.get('name') !== '$lang(10)') {\n                return (field_json[formname].name = formField.get('name'));\n            }\n        });\n        return field_json;\n    },\n    // decode field options to form and fields. options are list of ids in database but we want external_types\n    _decodeOptions: function (type, options) {\n        var fields, id, j, len, options_arr, parsed_options;\n        if (type !== 'database') {\n            return options;\n        }\n        options_arr = options.split(/\\r\\n|\\r|\\n/);\n        if (options_arr.lenght < 1) {\n            return '';\n        }\n        fields = [];\n        for (j = 0, len = options_arr.length; j < len; j++) {\n            id = options_arr[j];\n            fields.push(this.get('store').peekRecord('form-field', id));\n        }\n        parsed_options = {\n            form: fields[0].get('form.external_type'),\n            fields: fields.map(function (item) {\n                return item.get('external_type');\n            }),\n        };\n        return parsed_options;\n    },\n    // encode external_type options back to list of object ids. Add errors to _validateErrors if some linkings cannot\n    // be satisfied\n    _encodeOptions: function (type, options, field_name = '') {\n        var all_form_fields, field, fieldRecord, field_ids, j, len, ref;\n        if (type !== 'database') {\n            return options;\n        }\n        if (!options || options.form == null) {\n            this.get('_validateErrors').push('Field ' + field_name + \" doesn't have link options\");\n            return '';\n        }\n        all_form_fields = this.get('store')\n            .peekAll('form-field')\n            .filter(function (item) {\n                return item.get('form.external_type') === options.form;\n            });\n        if (all_form_fields.length < 1) {\n            this.get('_validateErrors').push(\n                'Field ' +\n                    field_name +\n                    ' has link to form ' +\n                    options.form +\n                    ' which does not exist',\n            );\n            return '';\n        }\n        field_ids = [];\n        ref = options.fields;\n        for (j = 0, len = ref.length; j < len; j++) {\n            field = ref[j];\n            fieldRecord = all_form_fields.findBy('external_type', field);\n            if (!fieldRecord) {\n                this.get('_validateErrors').push(\n                    'Field ' +\n                        field_name +\n                        ' has link to form field ' +\n                        options.form +\n                        '.' +\n                        field +\n                        ' which does not exist',\n                );\n            } else {\n                field_ids.push(fieldRecord.get('id'));\n            }\n        }\n        return field_ids.join('\\n');\n    },\n    _getFormFeatures: function (formid) {\n        var feature_json, formFeatures;\n        formFeatures = this.get('store')\n            .peekAll('form-setting')\n            .filter(function (item) {\n                return item.get('form.id') === formid;\n            });\n        feature_json = {};\n        formFeatures.forEach((formFeature) => {\n            return (feature_json[formFeature.get('name')] = {\n                value: formFeature.get('value'),\n                userlevel: formFeature.get('userlevel'),\n            });\n        });\n        return feature_json;\n    },\n    _getFormFieldFeatures: function (field) {\n        var feature_json, formFieldFeatures;\n        formFieldFeatures = this.get('store')\n            .peekAll('form-field-setting')\n            .filter(function (item) {\n                return item.get('field.id') === field.get('id');\n            });\n        feature_json = {};\n        formFieldFeatures.forEach((formFieldFeature) => {\n            return (feature_json[formFieldFeature.get('name')] = {\n                value: formFieldFeature.get('value'),\n                userlevel: formFieldFeature.get('userlevel'),\n            });\n        });\n        return feature_json;\n    },\n});\n\nexport default FormJsonService;\n","import { isEmpty, isPresent } from '@ember/utils';\nimport Service, { inject as service } from '@ember/service';\nimport { decamelize, underscore } from '@ember/string';\nimport { assert } from '@ember/debug';\nimport EmberError from '@ember/error';\nimport {\n    IFormsInterface,\n    IForms,\n    IField,\n    IFormField,\n    IFormObjects,\n} from 'tt4/ember-movenium/interfaces/forms';\nimport CollectorService from 'tt4/injections/services/collector-service';\n\n/**\n * Handles all operations that have to do with collector forms\n *\n * <strong>Forms must be set for this service to function</strong>\n *\n * From your application, assign your forms to this service's forms property\n * ```js\n * @service forms;\n * this.forms.forms = <yourForms>\n * ```\n *\n * @class FormsService\n * @constructor\n * @public\n */\nexport default class FormsService extends Service implements IForms {\n    @service private intl: any;\n    @service('collector-service' as any) protected Collector: CollectorService;\n\n    /**\n     * Internal property to store the forms for future use.\n     * To get or set forms use `this.forms`\n     * @property { object } _forms\n     * @private\n     */\n    private _forms = {};\n\n    constructor() {\n        super(...arguments);\n    }\n\n    get forms(): IFormsInterface {\n        return this._forms;\n    }\n\n    /**\n     * Forms must be set for this service to function\n     * From your application, assign your forms to this property\n     * ```js\n     * @service forms;\n     * this.forms.forms = <yourForms>\n     * ```\n     * @property { object } forms\n     */\n    set forms(forms: IFormsInterface) {\n        this._forms = forms;\n    }\n\n    /**\n     * Returns all fields of a form\n        @method fields\n        @param {string} form\n        @return {object}\n    */\n    public fields(form: string): IFormObjects {\n        if (isEmpty(this.forms)) {\n            return {};\n        }\n        if (!form) {\n            {\n                return {};\n            }\n        }\n\n        form = decamelize(form);\n        form = underscore(form);\n\n        if (!this.forms.hasOwnProperty(form)) {\n            throw new EmberError(\"forms service fields: form '\" + form + \"' not found\");\n        }\n\n        return this.forms[form].objects;\n    }\n\n    /**\n     * Returns the field of a form with additional properties\n     * @method field\n     * @param {string} form\n     * @param {string} fieldName\n     * @return {object}\n     */\n    public field(form: string, fieldName: string): IFormField {\n        form = decamelize(underscore(form));\n        const field = this.formField(form, fieldName);\n        assert('Field ' + fieldName + ' is not found from form ' + form, field);\n        return {\n            form,\n            name: fieldName,\n            type: field.type,\n            translated_name: this.Collector.getTranslationForColumn(form, fieldName),\n            options: field.options,\n            features: field.features,\n        };\n    }\n\n    /**\n     * Returns the <strong>raw, unaltered</strong> field of a form\n     * @method formField\n     * @param {string} form\n     * @param {string} field\n     * @return {object}\n     */\n    public formField(form: string, field: string): IField {\n        return this.fields(form)[field];\n    }\n\n    public fieldArray(form: string): IFormField[] {\n        form = decamelize(underscore(form));\n        const fields: IFormObjects = this.fields(form);\n        const ret: IFormField[] = [];\n        Object.keys(fields).forEach((key) => {\n            const field = fields[key];\n            ret.push({\n                form,\n                name: key,\n                translated_name: this.Collector.getTranslationForColumn(form, key),\n                type: field.type,\n                options: field.options,\n                features: field.features,\n            });\n        });\n        return ret;\n    }\n\n    public formExists(name: string) {\n        if (!this.forms) return;\n        return this.forms[name];\n    }\n\n    public fieldExists(form: string, name: string): boolean {\n        if (!this.formExists(form)) return false;\n        return isPresent(this.forms[form].objects[name]);\n    }\n}\n","define(\"tt4/services/google-charts\", [\"exports\", \"ember-google-charts/services/google-charts\"], function (_exports, _googleCharts) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _googleCharts.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/google.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GoogleService;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport { computed } from '@ember/object';\n\nimport $ from 'jquery';\n\nGoogleService = Ember.Service.extend({\n    directionsService: computed(function () {\n        if (Em.testing) {\n            return;\n        }\n        return new window.google.maps.DirectionsService();\n    }),\n    key: config.APP.GM_KEY,\n    // this tries to fetch metadata from streetview\n    // and use that data to determine if streetview-image is available or not\n    getMetadata: function (lat, lon) {\n        return new Em.RSVP.Promise((resolve) => {\n            return $.ajax({\n                beforeSend: function (request) {},\n                //request.setRequestHeader 'Authorization', ' '\n                url:\n                    'https://maps.googleapis.com/maps/api/streetview/metadata?size=600x300&location=' +\n                    lat +\n                    ',' +\n                    lon +\n                    '&heading=0&pitch=-0.76&key=' +\n                    this.get('key'),\n                type: 'GET',\n                success: (metadata) => {\n                    return resolve(metadata);\n                },\n            });\n        });\n    },\n    streetViewUrl: function (coords) {\n        var lat, lon, url;\n        lat = coords.latitude;\n        lon = coords.longitude;\n        url =\n            'https://maps.googleapis.com/maps/api/streetview?size=600x300&location=' +\n            lat +\n            ',' +\n            lon +\n            '&heading=0&pitch=-0.76';\n        if (this.get('key')) {\n            url += '&key=' + this.get('key');\n        }\n        return url;\n    },\n    routeDistance: function (from, to) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var request;\n            request = {\n                origin: from,\n                destination: to,\n                travelMode: 'DRIVING',\n                provideRouteAlternatives: true,\n            };\n            return this.get('directionsService').route(request, (response, status) => {\n                var minDist;\n                if (status === 'OK') {\n                    minDist = 1000000000;\n                    response.routes.forEach((route) => {\n                        var dist;\n                        dist = route.legs[0].distance.value / 1000;\n                        if (dist < minDist) {\n                            return (minDist = dist);\n                        }\n                    });\n                    return resolve(minDist.toFixed(0));\n                } else {\n                    return reject();\n                }\n            });\n        });\n    },\n    routeDistanceAndTime: function (from, to) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            var date, request;\n            // google directions do not like dates in past\n            // so we must make sure to use date in future\n            if (moment().isAfter(moment().format('YYYY-MM-DD 03:00'))) {\n                date = moment().add(1, 'day').hour(3);\n            } else {\n                date = moment().hour(3);\n            }\n            request = {\n                origin: from,\n                destination: to,\n                travelMode: 'DRIVING',\n                provideRouteAlternatives: true,\n                drivingOptions: {\n                    departureTime: date.toDate(),\n                },\n            };\n            return this.get('directionsService').route(request, (response, status) => {\n                var minDist, time;\n                if (status === 'OK') {\n                    minDist = 1000000000;\n                    time = 0;\n                    response.routes.forEach((route) => {\n                        var dist;\n                        dist = route.legs[0].distance.value / 1000;\n                        if (dist < minDist) {\n                            minDist = dist;\n                            return (time = route.legs[0].duration.value / 60);\n                        }\n                    });\n                    return resolve({\n                        dist: minDist.toFixed(0),\n                        time: time.toFixed(0),\n                    });\n                } else {\n                    return reject();\n                }\n            });\n        });\n    },\n});\n\nexport default GoogleService;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/gps-locator.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GpsLocatorService;\n\nimport Ember from 'ember';\n\nGpsLocatorService = Ember.Service.extend({\n    getLocation: function (options = {}) {\n        return new Em.RSVP.Promise(function (resolve, reject) {\n            if (navigator.geolocation) {\n                return navigator.geolocation.getCurrentPosition(\n                    function (position) {\n                        return resolve(position);\n                    },\n                    function (error) {\n                        return reject(error);\n                    },\n                    options,\n                );\n            } else {\n                return reject('Geolocation is not supported by this browser.');\n            }\n        });\n    },\n    GetLocationByAddress: function (address) {\n        return new Em.RSVP.Promise(function (resolve, reject) {\n            var geocoder;\n            geocoder = new google.maps.Geocoder();\n            //address = document.getElementById('txtAddress').value\n            return geocoder.geocode(\n                {\n                    address: address,\n                },\n                function (results, status) {\n                    if (status === google.maps.GeocoderStatus.OK) {\n                        return resolve({\n                            latitude: results[0].geometry.location.lat(),\n                            longitude: results[0].geometry.location.lng(),\n                        });\n                    } else {\n                        return resolve({\n                            error: 'could not get address-info',\n                        });\n                    }\n                },\n            );\n        });\n    },\n});\n\nexport default GpsLocatorService;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/gps.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Service;\n\nimport Ember from 'ember';\n\nService = Ember.Service.extend(Ember.Evented, {\n    customerSettings: Ember.inject.service(),\n    lockAccuracy: 200,\n    intl: Ember.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    inUse: false,\n    startIfGpsIsOn: function () {\n        if (this.get('Collector').testNeeds(['modules.gps||modules.plgps||project.location_map'])) {\n            return this.start();\n        }\n    },\n    start: function () {\n        if (this.get('inUse')) {\n            return;\n        }\n        this.set('inUse', true);\n        this.set('status', 'searching');\n        this.set('lastError', null);\n        this.set(\n            'allowed_distance',\n            this.get('customerSettings').checkSetting('gps_distance') || 700,\n        );\n        Ember.run.later(\n            this,\n            function () {\n                if (!this.get('lockedPosition')) {\n                    return this.setLastError('CUSTOMTIMEOUT');\n                }\n            },\n            8000,\n        );\n        if (navigator.geolocation) {\n            navigator.geolocation.getCurrentPosition(\n                this.showPosition.bind(this),\n                this.positionError.bind(this),\n            );\n            return navigator.geolocation.watchPosition(\n                this.showPosition.bind(this),\n                this.positionError.bind(this),\n                {\n                    enableHighAccuracy: true,\n                },\n            );\n        } else {\n            return alert('Geolocation is not supported by this browser.');\n        }\n    },\n    getCurrentPosition: function () {},\n    getLockedPosition: Ember.computed('lockedPosition', function () {\n        if (this.get('lockedLatitude') && this.get('lockedLongitude')) {\n            return {\n                latitude: this.get('lockedLatitude'),\n                longitude: this.get('lockedLongitude'),\n            };\n        }\n    }),\n    searchingLocation: Ember.computed('status', function () {\n        if (this.get('status') === 'searching') {\n            return true;\n        }\n    }),\n    debug: 'start searching gps',\n    counter: 0,\n    status: 'searching',\n    lastError: null,\n    currentLatitude: null,\n    currentLongitude: null,\n    currentAccuracy: null,\n    lockedLatitude: null,\n    lockedLongitude: null,\n    lockedAccuracy: null,\n    lockedPosition: Ember.computed('lockedLatitude', 'lockedLongitude', function () {\n        return this.get('lockedLatitude') && this.get('lockedLongitude');\n    }),\n    resetPosition: function () {\n        this.setProperties({\n            currentLatitude: null,\n            currentLongitude: null,\n            lockedLatitude: null,\n            lockedLongitude: null,\n        });\n        return this.trigger('lockedPositionChanged');\n    },\n    positionError: function (error) {\n        this.resetPosition();\n        if (error.code === error.PERMISSION_DENIED) {\n            return this.setLastError('PERMISSION_DENIED');\n        } else if (error.code === error.POSITION_UNAVAILABLE) {\n            return this.setLastError('POSITION_UNAVAILABLE');\n        } else if (error.code === error.TIMEOUT) {\n            return this.setLastError('TIMEOUT');\n        } else {\n            return this.setLastError('UNKNOWN_ERROR');\n        }\n    },\n    setLastError: function (error) {\n        this.set('lastError', error);\n        return this.set('status', 'error');\n    },\n    showErrorTooltip: function (message) {\n        return this.set('errorTooltipText', message);\n    },\n    lastErrorHeader: Ember.computed('lastError', function () {\n        return (\n            'gps.errors.' +\n            function () {\n                switch (this.get('lastError')) {\n                    case 'PERMISSION_DENIED':\n                        return 'permissiondenied';\n                    case 'TIMEOUT':\n                    case 'CUSTOMTIMEOUT':\n                        return 'timeout';\n                    default:\n                        return 'unknownerror';\n                }\n            }.call(this)\n        );\n    }),\n    lastErrorMessage: Ember.computed('lastError', function () {\n        return (\n            'gps.errorhelpers.' +\n            function () {\n                switch (this.get('lastError')) {\n                    case 'PERMISSION_DENIED':\n                        return 'permissiondenied';\n                    case 'TIMEOUT':\n                    case 'CUSTOMTIMEOUT':\n                        return 'timeout';\n                    default:\n                        return 'unknownerror';\n                }\n            }.call(this)\n        );\n    }),\n    showPosition: function (position) {\n        var counter;\n        counter = this.get('counter');\n        this.set('lastError', null);\n        if (this.get('status') === 'error') {\n            this.set('status', 'searching');\n        }\n        this.set('counter', counter + 1);\n        this.set(\n            'debug',\n            '[' +\n                position.coords.latitude +\n                ',' +\n                position.coords.longitude +\n                '] - ' +\n                position.coords.accuracy +\n                ' #' +\n                counter,\n        );\n        this.set('currentAccuracy', position.coords.accuracy);\n        this.set('currentLongitude', position.coords.longitude);\n        this.set('currentLatitude', position.coords.latitude);\n        return this.tryToLockLocation(\n            position.coords.accuracy,\n            position.coords.latitude,\n            position.coords.longitude,\n        );\n    },\n    tryToLockLocation: function (accuracy, lat, lon) {\n        if (!this.isMapsLoaded()) {\n            Ember.run.later(\n                this,\n                () => {\n                    return this.tryToLockLocation(accuracy, lat, lon);\n                },\n                3000,\n            );\n            return;\n        }\n        if (accuracy < this.get('lockAccuracy')) {\n            if (this.checkLocationChange(lat, lon, 50)) {\n                this.set('lockedLatitude', lat);\n                this.set('lockedLongitude', lon);\n                this.set('lockedAccuracy', this.get('currentAccuracy'));\n                this.trigger('lockedPositionChanged');\n            }\n            return this.set('status', 'located');\n        }\n    },\n    checkLocationChange: function (lat, lon, change) {\n        var dist;\n        if (!this.get('lockedLatitude') || !this.get('lockedLongitude')) {\n            return true;\n        }\n        dist = this.getDistance(\n            {\n                lat: this.get('lockedLatitude'),\n                lon: this.get('lockedLongitude'),\n            },\n            {\n                lat: lat,\n                lon: lon,\n            },\n        );\n        return dist > change;\n    },\n    isMapsLoaded: function () {\n        if (window.google && window.google.maps) {\n            return true;\n        } else {\n            return false;\n        }\n    },\n    getDistance: function (loc1, loc2) {\n        var distance, gloc1, gloc2;\n        gloc1 = new window.google.maps.LatLng(loc1.lat, loc1.lon);\n        gloc2 = new window.google.maps.LatLng(loc2.lat, loc2.lon);\n        distance = window.google.maps.geometry.spherical.computeDistanceBetween(gloc1, gloc2);\n        return distance;\n    },\n    withinAcceptedDistance: function (loc1, loc2) {\n        return this.getDistance(loc1, loc2) < this.get('allowed_distance');\n    },\n    haversine: function (...args) {\n        var R, a, dLat, dLon, lat1, lat2, lon1, lon2, radians;\n        R = 6372.8;\n        radians = args.map(function (deg) {\n            return (deg / 180.0) * Math.PI;\n        });\n        lat1 = radians[0];\n        lon1 = radians[1];\n        lat2 = radians[2];\n        lon2 = radians[3];\n        dLat = lat2 - lat1;\n        dLon = lon2 - lon1;\n        a =\n            Math.sin(dLat / 2) * Math.sin(dLat / 2) +\n            Math.sin(dLon / 2) * Math.sin(dLon / 2) * Math.cos(lat1) * Math.cos(lat2);\n        return R * 2 * Math.asin(Math.sqrt(a));\n    },\n    iconClass: Ember.computed('searchingLocation', function () {\n        if (this.get('searchingLocation')) {\n            return 'searching';\n        }\n    }),\n    GetLocationByAddress: function (address) {\n        return new Em.RSVP.Promise(function (resolve, reject) {\n            var geocoder;\n            geocoder = new google.maps.Geocoder();\n            //address = document.getElementById('txtAddress').value\n            return geocoder.geocode(\n                {\n                    address: address,\n                },\n                function (results, status) {\n                    if (status === google.maps.GeocoderStatus.OK) {\n                        return resolve({\n                            latitude: results[0].geometry.location.lat(),\n                            longitude: results[0].geometry.location.lng(),\n                        });\n                    } else {\n                        return resolve({\n                            error: 'could not get address-info',\n                        });\n                    }\n                },\n            );\n        });\n    },\n    GetLocationByLatLng: function (latlng) {\n        return new Em.RSVP.Promise(function (resolve, reject) {\n            var geocoder;\n            geocoder = new google.maps.Geocoder();\n            //address = document.getElementById('txtAddress').value\n            return geocoder.geocode(\n                {\n                    location: latlng,\n                },\n                function (results, status) {\n                    if (status === google.maps.GeocoderStatus.OK) {\n                        return resolve(results[0].formatted_address);\n                    } else {\n                        return resolve({\n                            error: 'could not get address-info',\n                        });\n                    }\n                },\n            );\n        });\n    },\n    GetFullObjectByAddress: function (address) {\n        return new Em.RSVP.Promise(function (resolve, reject) {\n            var geocoder;\n            geocoder = new google.maps.Geocoder();\n            //address = document.getElementById('txtAddress').value\n            return geocoder.geocode(\n                {\n                    address: address,\n                },\n                function (results, status) {\n                    if (status === google.maps.GeocoderStatus.OK) {\n                        return resolve(results[0]);\n                    } else {\n                        return reject();\n                    }\n                },\n            );\n        });\n    },\n});\n\nexport default Service;\n","import Service, { inject as service } from '@ember/service';\nimport { tracked } from '@glimmer/tracking';\nimport { later } from '@ember/runloop';\nimport { htmlSafe } from '@ember/template';\n\ninterface IGpsService {\n    inUse: boolean;\n    allowedDistance: number;\n    mapsLoaded: boolean;\n    status: string;\n    errorTooltipText: SafeString | null;\n    lockAccuracy: number;\n    lockedLatitude: string | null;\n    lockedLongitude: string | null;\n    lockedAccuracy: number | null;\n    lockedPosition: IPosition | null;\n    intl: any;\n    start(): void;\n}\n\ninterface IPosition {\n    longitude: string;\n    latitude: string;\n    distance?: number | null;\n    coords?: any;\n}\n\ninterface IGpsWindow {\n    google: any;\n}\n\ndeclare const window: IGpsWindow;\n\n/**\n * This service handles the application's gps.\n *\n * @class GpsService\n * @public\n */\nexport default class GpsService extends Service implements IGpsService {\n    @service public intl!: any;\n    @service public evented!: any;\n    @service public customerSettings!: any;\n\n    public allowedDistance: number = this.customerSettings.checkSetting('gps_distance') || 700;\n    public lockAccuracy: number = 200;\n    public inUse: boolean = false;\n\n    public errorTooltipText: SafeString | null = null;\n    public lockedLatitude: string | null = null;\n    public lockedLongitude: string | null = null;\n    public lockedAccuracy: number | null = null;\n    public notSupported: boolean = false;\n    // @tracked public notAccurateEnough: boolean = false\n    @tracked public lockedPosition: IPosition | null = null;\n    @tracked public distanceToProject: number | null = null;\n    @tracked public errorMsg: string | null = null;\n    @tracked public status: string = 'unknown';\n\n    protected currentLatitude: string | null = null;\n    protected currentLongitude: string | null = null;\n    protected currentAccuracy: number | null = null;\n\n    private errorShown: boolean = false;\n    private _lastError: string | null = null;\n\n    /**\n     * Call this method to fetch the user's initlal location and to set up location watching. <br>\n     * This method will check if GPS service is already in use so it will not start twice. <br>\n     * Uses `navigator.geolocation`\n     *\n     * @method start\n     * @public\n     * @return {void}\n     */\n    /* istanbul ignore next */\n    public start(): void {\n        if (this.inUse) return;\n        this.inUse = true;\n\n        later(\n            this,\n            () => {\n                if (!this.lockedPosition) {\n                    this.lastError = 'CUSTOMTIMEOUT';\n                    if (this.currentAccuracy && this.currentAccuracy > this.lockAccuracy)\n                        this.setLastError('NOT_ACCURATE_ENOUGH');\n                }\n            },\n            8000,\n        );\n\n        if (navigator.geolocation) {\n            // we have to fetch initial position with getCurrentPosition\n            // if we just used watchPosition on its own, it would might not set the position because gps1 service might have already fetched the position\n            // and watchPosition would not trigger the callback (because the position has not changed)\n            // we also use maximumAge option to get the last known position from cache\n            // otherwise getCurrentPosition might only return timeout if watchPosition is running (because watchPosition is somehow blocking the getCurrentPosition from getting the actual position)\n            navigator.geolocation.getCurrentPosition(\n                this.setPosition.bind(this),\n                this.positionError.bind(this),\n                { enableHighAccuracy: true, timeout: 20000, maximumAge: 20000 },\n            );\n            navigator.geolocation.watchPosition(\n                this.setPosition.bind(this),\n                this.positionError.bind(this),\n                { enableHighAccuracy: true },\n            );\n        } else {\n            this.notSupported = true;\n        }\n\n        // this.allowedDistance = this.customerSettings.checkSetting('gps_distance') || 700\n    }\n\n    /**\n     * Get the distance between two `location: IPosition` objects.\n     * @method getDistance\n     * @param {IPosition} loc1\n     * @param {IPosition} loc2\n     * @public\n     * @return {Number}\n     */\n    /* istanbul ignore next */\n    public getDistance(loc1: IPosition, loc2: IPosition): number {\n        const gloc1 = new window.google!.maps.LatLng(loc1.latitude, loc1.longitude);\n        const gloc2 = new window.google!.maps.LatLng(loc2.latitude, loc2.longitude);\n\n        return window.google!.maps.geometry.spherical.computeDistanceBetween(gloc1, gloc2);\n    }\n\n    /**\n     * Success Callback for navigator.geolocation <br>\n     * Sets user's current location, and calls lockLocation to lock the user's current position.\n     * @method setPosition\n     * @param {IPosition} position\n     * @private\n     * @return {Void}\n     */\n    private setPosition(position: IPosition): void {\n        this.lastError = null;\n\n        if (this.status === 'error') {\n            this.status = 'searching';\n        }\n        this.currentAccuracy = position.coords.accuracy;\n        this.currentLongitude = position.coords.longitude;\n        this.currentLatitude = position.coords.latitude;\n\n        this.lockLocation(\n            position.coords.latitude,\n            position.coords.longitude,\n            position.coords.accuracy,\n        );\n    }\n\n    /**\n     * Error Callback for navigator.geolocation. <br>\n     * Sets this service's last seen error message\n     * @method positionError\n     * @param {any} error\n     * @private\n     * @return {Void}\n     */\n    private positionError(error: any) {\n        // positionError may be called after gps2 service has already been destroyed.\n        // That would cause \"Can not call `.lookup` after the owner has been destroyed\"\n        // errors in this.resetPosition and this.setLastError calls.\n        if (this.isDestroyed) {\n            return;\n        }\n        this.resetPosition();\n        if (error.code === error.PERMISSION_DENIED) this.setLastError('PERMISSIONDENIED');\n        else if (error.code === error.POSITION_UNAVAILABLE)\n            this.setLastError('POSITION_UNAVAILABLE');\n        else if (error.code === error.TIMEOUT) this.setLastError('TIMEOUT');\n        else this.setLastError('UNKNOWN_ERROR');\n    }\n\n    /**\n     * Called by `setPosition`, which is called by `navigator.geolocation.getCurrentPosition` and `navigator.geolocation.watchPosition`\n     *\n     * Sets the following public properties:\n     * ```\n     *  this.lockedLatitude = lat\n     *  this.lockedLongitude = lon\n     *  this.lockedPosition = {latitude: lat, longitude: lon}\n     *  this.lockedAccuracy = this.currentAccuracy\n     * ```\n     * @method lockLocation\n     * @param {String} lat\n     * @param {String} long\n     * @param {Number} accuracy\n     * @private\n     * @return {Void}\n     */\n    private lockLocation(lat: string, lon: string, accuracy: number): void {\n        /* istanbul ignore next */\n        if (!this.mapsLoaded) {\n            later(\n                this,\n                () => {\n                    this.lockLocation(lat, lon, accuracy);\n                },\n                3000,\n            );\n            return;\n        }\n\n        if (accuracy < this.lockAccuracy) {\n            if (this.checkLocationChange(lat, lon, 50)) {\n                this.lockedLatitude = lat;\n                this.lockedLongitude = lon;\n                this.lockedPosition = { latitude: lat, longitude: lon };\n                this.lockedAccuracy = this.currentAccuracy;\n                this.evented.gpsLockedPositionChanged(this.lockedPosition);\n            }\n            this.status = 'located';\n        }\n        if (accuracy > this.lockAccuracy) {\n            this.setLastError('NOT_ACCURATE_ENOUGH');\n            this.lockedPosition = null;\n        }\n    }\n\n    /**\n     * Checks if the gps location has changed enough.\n     * Calls `getDistance`, comparing the method's parameters to lockedLatitude and lockedLongitude\n     * returns true if the distance between is greater than the change param\n     * @method checkLocationChange\n     * @param {String} latitude\n     * @param {String} longitude\n     * @param {Number} change\n     * @private\n     * @return {Boolean}\n     */\n    private checkLocationChange(latitude: string, longitude: string, change: number): boolean {\n        if (!this.lockedLatitude || !this.lockedLongitude) return true;\n\n        const loc1 = { latitude: this.lockedLatitude, longitude: this.lockedLongitude };\n        const loc2 = { latitude, longitude };\n        const dist = this.getDistance(loc1, loc2);\n\n        return dist > change;\n    }\n\n    /**\n     * Rests currentLatitude, currentLongitude, lockedLatitude, and lockedLongitude\n     * @method resetPosition\n     * @private\n     * @return {Void}\n     */\n    private resetPosition(): void {\n        this.currentLatitude =\n            this.currentLongitude =\n            this.lockedLatitude =\n            this.lockedLongitude =\n                null;\n        this.evented.gpsLockedPositionChanged(this.lockedPosition);\n    }\n\n    private setLastError(error: any) {\n        if (!this.errorShown) {\n            this.errorTooltipText = htmlSafe(\n                this.intl.t('gps.errors.general_tooltip').replace(/\\n/g, '<br>'),\n            );\n            this.errorShown = true;\n        }\n        this.lastError = error;\n        this.status = 'error';\n        this.errorMsg = this.intl.t('gps.errors.' + error.toLowerCase());\n    }\n\n    get mapsLoaded(): boolean {\n        return window.google?.maps ? true : false;\n    }\n\n    get lastError(): string | null {\n        return this._lastError;\n    }\n\n    set lastError(error: string | null) {\n        this._lastError = error;\n    }\n}\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/gui.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar GuiService;\n\nimport Ember from 'ember';\n\nimport format from 'ember-moment/computeds/format';\n\nimport $ from 'jquery';\n\nimport config from 'tt4/config/environment';\n\nGuiService = Ember.Service.extend({\n    moment: Ember.inject.service(),\n    fullScreen: false,\n    partialFullScreen: false,\n    overlay_loader: false,\n    breakpoints: {\n        md: 992,\n    },\n    stickyValue: 0,\n    buttonText: 'default',\n    showStickyNote: false,\n    setBreakpointObserver: function (bp) {\n        var breakPointGetter;\n        Ember.assert('Supported breakpoints are md', bp === 'md');\n        breakPointGetter = 'isBelow' + bp.charAt(0).toUpperCase() + bp.slice(1);\n        return $(window).on('resize', () => {\n            return this.set(\n                breakPointGetter,\n                document.documentElement.clientWidth < this.breakpoints[bp],\n            );\n        });\n    },\n    removeBreakpointObserver: function () {\n        return $(window).off('resize');\n    },\n    isBelowMd: Em.computed(function () {\n        return document.documentElement.clientWidth < this.breakpoints.md;\n    }),\n    togglefullScreen: function () {\n        this.toggleProperty('fullScreen');\n        return true;\n    },\n    toggleCustomFullScreen: function () {\n        this.toggleProperty('customFullScreen');\n        return true;\n    },\n    abort: function () {\n        this.get('requestObject').abort();\n        return Em.run.later(\n            this,\n            () => {\n                return this.set('showStickyNote', false);\n            },\n            4000,\n        );\n    },\n    getBrand: function () {\n        return config.brand;\n    },\n    isSafari: !!navigator.userAgent.match(/Version\\/[\\d\\.]+.*Safari/),\n    isIE: Ember.computed(function () {\n        var msie, ua;\n        ua = window.navigator.userAgent;\n        msie = ua.indexOf('MSIE ');\n        if (msie.length > 0 || !!navigator.userAgent.match(/Trident.*rv\\:11\\./)) {\n            return true;\n        }\n        return false;\n    }),\n    isAndroid: Ember.computed(function () {\n        return typeof cordova !== 'undefined' && cordova !== null && device.platform === 'Android';\n    }),\n    isIOS: Ember.computed(function () {\n        return typeof cordova !== 'undefined' && cordova !== null && device.platform === 'iOS';\n    }),\n    platform: Ember.computed(function () {\n        return device.platform;\n    }),\n    isCordova: Ember.computed(function () {\n        return typeof cordova !== 'undefined' && cordova !== null;\n    }),\n    isAndroidBrowser:\n        navigator.userAgent.match(/Android/i) &&\n        (typeof cordova === 'undefined' || cordova === null),\n    // Check is mobile depending on screen width\n    // http://caniuse.com/#feat=matchmedia\n    isMobile: function (width = 760) {\n        return window.matchMedia('only screen and (max-width: ' + width + 'px)').matches;\n    },\n    isMobileComputed: Ember.computed(function () {\n        return this.isMobile();\n    }),\n    tzOffset: format(new Date(), 'Z'),\n    sidebar: Ember.computed(function () {\n        var state;\n        state = localStorage.getItem('sidebar');\n        if (state === null || state === 'open') {\n            return false;\n        } else if (state === 'collapsed' || state === void 0) {\n            return true;\n        }\n    }),\n    resetSidebar: function () {\n        var state;\n        state = localStorage.getItem('sidebar');\n        if (state === null || state === 'open') {\n            return this.set('sidebar', false);\n        } else if (state === 'collapsed' || state === void 0) {\n            return this.set('sidebar', true);\n        }\n    },\n    version: function () {\n        var buildtime, commit;\n        buildtime = moment(config.APP.BUILD_TIMESTAMP).utc().format('YYYY.MM.DD');\n        commit = config.APP.version.split('+')[1];\n        return buildtime + '+' + commit;\n    },\n    version_timestamp: function () {\n        return config.APP.BUILD_TIMESTAMP;\n    },\n});\n\nexport default GuiService;\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport collector from '../classes/collector';\nimport { Promise as EmberPromise, allSettled } from 'rsvp';\nimport Evented from '@ember/object/evented';\nimport { get, set } from '@ember/object';\nimport 'moment-timezone';\nimport config from 'tt4/config/environment';\nimport { configureScope } from '@sentry/browser';\nimport chatBot from 'tt4/utils/chatBot';\nimport snowplowinit from 'tt4/utils/snowplowinit';\nimport initStonly from 'tt4/utils/stonly';\n\n/*global FirebasePlugin*/\n\nexport default Service.extend(Evented, {\n    capi: service(),\n    store: service(),\n    session: service(),\n    Collector: service('collector-service'),\n    moment: service(),\n    loadTranslations: service(),\n    customerSettings: service('customer-settings'),\n    userSettings: service(),\n    router: service(),\n    gps: service(),\n    analytics: service(),\n    flags: service(),\n    modelCreator: service('model-creator'),\n    forms: service(),\n    dap: service(),\n    notifications: service(),\n\n    appReady: false,\n\n    start() {\n        return new EmberPromise(async (resolve) => {\n            const isLogged = get(this, 'session.session.authenticated.access_token') ? true : false;\n            const promises = [];\n            // set default lang by localStorage or browser default lang\n            this.setDefaultLang(isLogged);\n\n            // fetch translations\n            promises.push(this.loadLangs());\n            if (isLogged) {\n                // fetch me2\n                const me2Promise = this.getMe2().then(this.createFromsAndSetInformation.bind(this));\n                promises.push(this.initFlags(me2Promise));\n                promises.push(me2Promise);\n                promises.push(this.getCustomerSettings());\n                promises.push(this.configureSentry(me2Promise));\n                allSettled(promises).then(this.configureChatBot.bind(this, me2Promise));\n                allSettled(promises).then(this.configureSnowPlow.bind(this, me2Promise));\n            }\n            // after /me2 and langs are settled everything is ready for loading first route\n            allSettled(promises).then(this.allDoneMarkAppReady.bind(this, isLogged, resolve));\n            allSettled(promises).then(this.addStonly.bind(this));\n        });\n    },\n\n    configureSnowPlow(me2Promise) {\n        if (this.flags.test('use-snowplow')) {\n            snowplowinit(me2Promise);\n        }\n    },\n\n    configureChatBot(me2Promise) {\n        me2Promise.then((me2) => {\n            const zendesk_key = config.APP.ZENDESK_KEY;\n            chatBot(me2, this.flags, zendesk_key);\n        });\n    },\n\n    addStonly() {\n        if (this.flags.test('stonly-user-guidance')) {\n            initStonly(config.APP.STONLY_WID);\n        }\n    },\n\n    async configureSentry(me2Promise) {\n        const data = await me2Promise;\n\n        return configureScope((scope) => {\n            scope.setUser({\n                id: data.userid,\n                service: data.company_info.company_name,\n            });\n            scope.setTag('environment', config.environment);\n            scope.setExtra('products', JSON.stringify(collector.products));\n            scope.setExtra('sentryIsEnabled', this.flags.test('sentry-enabled'));\n        });\n    },\n    // initialize launch darkly feature flags\n    initFlags(data) {\n        return data.then((userdata) => {\n            return get(this, 'flags').initialize(userdata);\n        });\n    },\n    allDoneMarkAppReady(isLogged, resolve) {\n        if (isLogged) {\n            get(this, 'gps').startIfGpsIsOn();\n            get(this, 'dap').start();\n            set(this, 'appReady', true);\n            this.trigger('appReady');\n        }\n\n        this.handleAppLinks();\n\n        resolve();\n    },\n\n    /**\n     * This is used to handle app links from outside of the app\n     *\n     * there are two possible scenarios:\n     *\n     * 1) app was not runinng before and index.html couldn't use window.globalInitAppServiceGotoRoute\n     *      method .. so index.html just saves the app link url to global globalInitAppServiceGotoUrl\n     *      and this initialization makes the transition to correct route\n     * 2) App Link was used when app was already running .. so index.html could useglobalInitAppServiceGotoRoute\n     *      and nothing more needs to be done\n     */\n    handleAppLinks() {\n        window.globalInitAppServiceGotoRoute = this.gotoRoute.bind(this);\n\n        if (window.globalInitAppServiceGotoUrl) this.gotoRoute(window.globalInitAppServiceGotoUrl);\n    },\n\n    /**\n     * All different kind of app link paths must be registered here\n     * @param {*} urlString\n     * @returns\n     */\n    gotoRoute(urlString) {\n        // cannot use URL class because it works differenty in safari and chrome\n        const splittedUrl = urlString.split(':');\n\n        // Extract components\n        const protocol = splittedUrl[0] + ':';\n        const path = splittedUrl[1].substring(2); // remove leading '//'\n\n        if (protocol !== 'devenor:') {\n            this.notifications.error(`unknown applink protocol: '${protocol}'`, {\n                autoClear: true,\n            });\n            return `unknown applink protocol: '${protocol}'`;\n        }\n\n        const pathParts = path.split('/');\n\n        // different routes needs to be registered here .. reason for this is that\n        // I do not know how to do a general route transition with query params\n        if (pathParts[0] === 'token') {\n            this.router.transitionTo(pathParts[0], pathParts[1]);\n        } else {\n            this.notifications.error(`unknown path: '${urlString}'`, {\n                autoClear: true,\n            });\n            return `unknown path: '${urlString}'`;\n        }\n    },\n\n    createFromsAndSetInformation(data) {\n        function preventMouseWheelScrollOnNumberFields() {\n            document.addEventListener('wheel', function () {\n                if (document.activeElement.type === 'number') {\n                    document.activeElement.blur();\n                }\n            });\n        }\n\n        // Call the function to add the event listener\n        preventMouseWheelScrollOnNumberFields();\n\n        // load forms and create models\n        // this must be always done first so store can be used by other init's\n        this.createForms(data['forms']);\n\n        // push currentUser to store\n        this.pushCurrentUser(data['userrow']);\n\n        // push companyInfo to store\n        this.pushCompanyInfo(data['company_info']);\n\n        // set some session variables to support all kind of legacy code in tt4\n        this.setSessionVariables(data);\n\n        this.setAnalyticsContext();\n\n        // Put trigger on user models didUpdate to update user info to me2 cache\n        if (data['userrow'].user) {\n            this.updateCachedUserOnSave(data['userrow'].user[0].id);\n        }\n\n        // set correct timeZone by service country\n        this.setTimezone(data);\n\n        this.checkCompanyInfo();\n\n        this.userSettings.setUserSettings();\n\n        return data;\n    },\n\n    clearInit() {\n        this.unsetStorage('me2');\n        this.unsetStorage('customerSettings');\n    },\n\n    createForms(data) {\n        get(this, 'modelCreator').createModels(collector.addCommonForms(data));\n        //ember-movenium addon\n        this.forms.forms = collector.addCommonForms(data).forms;\n    },\n\n    getMe2() {\n        return new EmberPromise((resolve) => {\n            let alreadyResolved = false;\n\n            if (this.getStorage('me2')) {\n                resolve(this.getStorage('me2'));\n                alreadyResolved = true;\n            }\n\n            const prevent_caching = '&sid=' + Math.random().toString(36).substring(14);\n\n            get(this, 'capi')\n                .request('me2?get=all' + prevent_caching)\n                .then((data) => this._resolveGetMe2(data, alreadyResolved, resolve));\n        });\n    },\n\n    updateDataFromMe2(data) {\n        // TODO: here is just one of these .. also company_info etc should be updated\n        const currentUser = get(this, 'store').peekRecord('user', data.userid);\n        if (currentUser) {\n            set(currentUser, 'firstname', data['userrow']['user'][0]['firstname']);\n            set(currentUser, 'lastname', data['userrow']['user'][0]['lastname']);\n        }\n\n        // recreate forms\n        this.createForms(data['forms']);\n    },\n\n    updateCachedUserOnSave(id) {\n        get(this, 'store')\n            .peekRecord('user', id)\n            .on('didUpdate', () => {\n                let me2 = this.getStorage('me2');\n                const user = get(this, 'store').peekRecord('user', id);\n                me2.userrow.user = [user.serialize({ includeId: true })];\n                this.setStorage('me2', me2);\n            });\n    },\n    pushCurrentUser(rows) {\n        get(this, 'store').pushPayload(rows);\n    },\n\n    pushCompanyInfo(row) {\n        get(this, 'store').pushPayload({ companyInfo: row });\n    },\n\n    setSessionVariables(data) {\n        set(this, 'session.saveUserId', data.userid);\n        set(this, 'session.currentUser', get(this, 'store').peekRecord('user', data.userid));\n        // signed_token is not used any more because all tokens are jwt\n        //set(this, \"session.signed_token\", data.signed_token)\n        // parse partnerid to int if it seems to be numeric\n        const partnerid = isNaN(data.partnerid) ? data.partnerid : parseInt(data.partnerid, 10);\n        set(this, 'session.currentUser.partnerid', partnerid);\n\n        set(\n            this,\n            'session.currentUser.company',\n            get(get(this, 'store').peekAll('companyInfo'), 'firstObject.company_name'),\n        );\n        set(\n            this,\n            'session.currentUser.company_info',\n            get(get(this, 'store').peekAll('companyInfo'), 'firstObject'),\n        );\n\n        set(this, 'session.currentUser.services', {\n            linkings: data.linkings,\n            partnerid: partnerid,\n        });\n\n        set(this, 'session.modelscreated', true);\n        set(this, 'session.session.alldone', true);\n    },\n\n    setTimezone(data) {\n        if (data.country == 'se') get(this, 'moment').changeTimeZone('Europe/Stockholm');\n        else get(this, 'moment').changeTimeZone('Europe/Helsinki');\n    },\n\n    /**\n     * 1) call ttapi to get saved language\n     * 2) if lang type is not \"saved\" in response -> user does not have saved lang yet .. so send users lang to ttapi .. then return\n     * 3) if lang type is saved and saved lang is different that in localstorage -> change tt4 lang\n     */\n    async fetchSavedLanguageFromTtapi(lang) {\n        // 1.\n        const ttapiLang = await this.Collector.ttapi({\n            url: 'api/getUserLang',\n            method: 'get',\n        });\n        // 2.\n        if (ttapiLang.type != 'saved') {\n            return this.Collector.ttapi({\n                url: 'api/setUserLang?lang=' + lang,\n                method: 'post',\n            });\n        }\n        // 3.\n        // TODO\n    },\n\n    async setDefaultLang(isLogged) {\n        let defaultLang = 'en';\n        const acceptedLangs = ['en', 'fi', 'sv'];\n        let setLang = null;\n        if (Modernizr.localstorage && localStorage.getItem('lang')) {\n            setLang = localStorage.getItem('lang');\n        } else {\n            const browser = window.navigator.userLanguage || window.navigator.language;\n            setLang = browser.substring(0, 2).toLowerCase();\n        }\n        if (acceptedLangs.indexOf(setLang) !== -1) {\n            moment.locale(setLang);\n            get(this, 'moment').setLocale(setLang);\n        } else {\n            moment.locale(defaultLang);\n            get(this, 'moment').setLocale(defaultLang);\n        }\n\n        if (isLogged) this.fetchSavedLanguageFromTtapi(moment.locale());\n    },\n\n    loadLangs() {\n        return get(this, 'loadTranslations').fetch(true);\n    },\n\n    getCustomerSettings() {\n        if (this.getStorage('customerSettings')) {\n            get(this, 'customerSettings').settings = this.getStorage('customerSettings');\n            let promise = get(this, 'customerSettings').getSettings();\n            promise.then(() => {\n                this.setStorage('customerSettings', get(this, 'customerSettings').settings);\n            });\n            return new EmberPromise((resolve) => {\n                resolve();\n            });\n        } else {\n            let promise = get(this, 'customerSettings').getSettings();\n            promise.then(() => {\n                this.setStorage('customerSettings', get(this, 'customerSettings').settings);\n            });\n            return promise;\n        }\n    },\n\n    getStorage(key) {\n        if (!Modernizr.localstorage) return null;\n\n        if (localStorage.getItem(key)) {\n            return JSON.parse(localStorage.getItem(key));\n        }\n\n        return null;\n    },\n\n    setStorage(key, object) {\n        if (!Modernizr.localstorage) return;\n        localStorage.setItem(key, JSON.stringify(object));\n    },\n\n    unsetStorage(key) {\n        if (!Modernizr.localstorage) return;\n        localStorage.removeItem(key);\n    },\n\n    setAnalyticsContext() {\n        const currentUser = get(this, 'session.currentUser');\n        if (window.cordova && FirebasePlugin) {\n            FirebasePlugin.setAnalyticsCollectionEnabled(true);\n            FirebasePlugin.setUserProperty('brand', config.brand);\n            FirebasePlugin.setUserProperty('partnerid', get(currentUser, 'partnerid').toString());\n            FirebasePlugin.setUserProperty(\n                'company_name',\n                get(currentUser, 'company_info.company_name'),\n            );\n            FirebasePlugin.setUserProperty('userlevel', get(currentUser, 'userlevel').toString());\n        }\n    },\n\n    checkCompanyInfo() {\n        if (get(this, 'session.currentUser.userlevel') === '5') {\n            //check that company country is not null\n            const companyInfo = get(get(this, 'store').peekAll('companyInfo'), 'firstObject');\n            if (companyInfo && !get(companyInfo, 'country')) {\n                set(companyInfo, 'country', 'fi');\n                companyInfo.save();\n            }\n        }\n    },\n\n    _resolveGetMe2(data, alreadyResolved, resolve) {\n        this.setStorage('me2', data);\n\n        // if there is differences in /me request response and ls .. we make updates\n        if (alreadyResolved) this.updateDataFromMe2(data);\n\n        if (!alreadyResolved) resolve(data);\n    },\n});\n","define(\"tt4/services/intl\", [\"exports\", \"ember-intl/services/intl\"], function (_exports, _intl) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _intl.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/load-translations.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar LoadTranslationsService;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nLoadTranslationsService = Ember.Service.extend({\n    intl: Ember.inject.service(),\n    cdn: Ember.inject.service(),\n    customerSettings: Ember.inject.service(),\n    ajax: Ember.inject.service(),\n    fetch: function (use_cache = false) {\n        var lang, lang_cache, path, promise;\n        lang = moment.locale();\n        if (config.environment === 'test') {\n            return;\n        }\n        path = this.get('cdn').url('crowdin/tt4/' + lang + '.json');\n        promise = this.get('ajax').request(path, {\n            dataType: 'json',\n        });\n        promise.then((trans) => {\n            this.makeWordChanges(trans);\n            this.makeBrandingWordChanges(trans, config.brand);\n            this.formatTranslations(trans);\n            if (trans) {\n                localStorage.setItem('lang_cache', JSON.stringify(trans));\n            }\n            return this._addTranslations(trans);\n        });\n        lang_cache = localStorage.getItem('lang_cache');\n        if (use_cache && lang_cache) {\n            return this._addTranslations(JSON.parse(lang_cache));\n        } else {\n            return promise;\n        }\n    },\n    termsSettingStr: Ember.computed('intl.locale', function () {\n        return 'terms_' + moment.locale();\n    }),\n    getTermsIndex: function () {\n        var saved;\n        saved = this.get('customerSettings').checkSetting(this.get('termsSettingStr'));\n        if (!saved) {\n            return localStorage.getItem(this.get('termsSettingStr'));\n        } else {\n            localStorage.setItem(this.get('termsSettingStr'), saved);\n            return saved;\n        }\n    },\n    saveTermsIndex: function (index) {\n        this.get('customerSettings').setSetting(this.get('termsSettingStr'), index);\n        return localStorage.setItem(this.get('termsSettingStr'), index);\n    },\n\n    /**\n     * This method is used to make branding changes to translations\n     * @param {*} translations\n     * @param {string} brand\n     */\n    makeBrandingWordChanges(translations, brand) {\n        if (brand === 'default' && translations['user.userlevel.6.movenium']) {\n            translations['user.userlevel.6'] = translations['user.userlevel.6.movenium'];\n        }\n    },\n\n    makeWordChanges: function (arr) {\n        var change, changeCounter, changes, changesArr, keys, skipThese, term;\n        change = {};\n        term = this.getTermsIndex();\n\n        // we default to 0 if we are in finnish and brand is default ... this makes old fi-CON lang obsolete\n        if (config.brand === 'default' && moment.locale() === 'fi' && term === null) {\n            term = 0;\n        }\n\n        skipThese = ['terms.project'];\n        if (term === null) {\n            return;\n        }\n        changes = arr['terms.project'];\n        if (!changes) {\n            return;\n        }\n        changesArr = changes.split(/\\n/g);\n        changesArr.forEach((item) => {\n            var termList;\n            termList = item.split(/,/g);\n\n            // terms 2...6 will translate both terms työmaa and projekti because there are both in translations.. but this is only for finnish\n            if (term !== 0) change[termList[0]] = termList[term];\n            if (term !== 1 && moment.locale() === 'fi') change[termList[1]] = termList[term];\n        });\n        changeCounter = 0;\n        keys = Object.keys(arr);\n        return keys.forEach((key) => {\n            var str;\n            str = arr[key];\n            if (skipThese.indexOf(key) !== -1) {\n                return;\n            }\n            if (Ember.typeOf(str) !== 'string') {\n                return;\n            }\n            return (arr[key] = str.replace(\n                new RegExp('\\\\b(' + Object.keys(change).join('|') + ')\\\\b', 'gi'),\n                (item) => {\n                    var replaceWith, startsWithUppercase;\n                    changeCounter++;\n                    startsWithUppercase = item[0] === item[0].toUpperCase();\n                    replaceWith = change[item.toLowerCase()];\n                    if (startsWithUppercase) {\n                        replaceWith = replaceWith.charAt(0).toUpperCase() + replaceWith.slice(1);\n                    }\n                    return replaceWith;\n                },\n            ));\n        });\n    },\n    // console.log \"Changed \" + changeCounter + \" strings\"\n    formatTranslations: function (json) {\n        var keys;\n        keys = Object.keys(json);\n        keys.forEach((key) => {\n            var newStr, str;\n            str = json[key];\n            if (!str) return; // continue if translated text is null\n            newStr = str.replace(new RegExp(/\\{{(.*?)\\}}/g), (item) => {\n                return item.slice(1, -1);\n            });\n            return (json[key] = newStr);\n        });\n        return json;\n    },\n    _addTranslations: function (json) {\n        var intl;\n        intl = this.get('intl');\n        return intl.addTranslations(moment.locale(), json);\n    },\n});\n\nexport default LoadTranslationsService;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/local-storage-wrapper.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar localStorageWrapper;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nimport $ from 'jquery';\n\nlocalStorageWrapper = Ember.Service.extend({\n    session: Em.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    ttapi: Ember.inject.service(),\n    // this is true when syncing is under way\n    syncing: false,\n    namespace: 'movenium',\n    getUserSetting: function (key, defaultValue) {\n        var hashed, setting;\n        hashed = this.getHashedKey(key);\n        setting = this.getItem(hashed, defaultValue);\n        return setting;\n    },\n    setUserSetting: function (key, value) {\n        var hashed;\n        hashed = this.getHashedKey(key);\n        return this.setItems(hashed, value);\n    },\n    removeUserSetting: function (key) {\n        var hashed;\n        hashed = this.getHashedKey(key);\n        return localStorage.removeItem(this._namespacedKey(hashed));\n    },\n    getHashedKey: function (key) {\n        var combined, id;\n        id = this.get('session.currentUser.id');\n        combined = id + '_' + key;\n        //TODO: Could actually create a hash out of the key\n        return combined;\n    },\n    createId: function (length = 32) {\n        var id;\n        id = '';\n        while (id.length < length) {\n            id += Math.random().toString(36).substr(2);\n        }\n        return id.substr(0, length);\n    },\n    setItem: function (key, object) {\n        var objects;\n        object.id = this.createId();\n        objects = this.getItem(key);\n        if (objects == null) {\n            objects = [];\n        }\n        objects.push(object);\n        this.setItems(key, objects);\n        return object.id;\n    },\n    getItem: function (key, defaultValue) {\n        var item;\n        item = localStorage.getItem(this._namespacedKey(key));\n        if (!item && defaultValue) {\n            return Em.A(defaultValue);\n        } else if (item === 'undefined') {\n            return Em.A([]);\n        } else {\n            return Em.A(JSON.parse(item));\n        }\n    },\n    setItemsWithBackend: function (key, object) {\n        var data;\n        this.setItems(key, object);\n        data = {};\n        data[key] = object;\n        return this.get('ttapi')._post('lssave', data);\n    },\n    getItemWithBackend: function (key, object) {\n        return {\n            local: this.getItem(key, object),\n            backend: this.get('ttapi')._get('lssave?key=' + key, []),\n        };\n    },\n    setSavedUsername: function (username) {\n        return localStorage.setItem('username_save', username);\n    },\n    getSavedUsername: function () {\n        return localStorage.getItem('username_save');\n    },\n    // Does not work with async\n    //    deleteItem: (key, index) ->\n    //        objects = @getItem(key)\n    //        if !objects?\n    //            return false\n    //        objects.splice(index,1)\n    //        console.log objects\n    //        @setItems(key, objects)\n\n    //find objects with object name and value\n    find: function (key, obj_key, value) {\n        var i, item, items, len, re, return_items;\n        //console.log \"finding \" + key + \" with \" + obj_key + \" = \" + value\n        items = this.getItem(key);\n        return_items = Em.A([]);\n        if (items != null) {\n            for (i = 0, len = items.length; i < len; i++) {\n                item = items[i];\n                re = new RegExp(value);\n                if (item[obj_key] != null) {\n                    if (item[obj_key].search(re) !== -1) {\n                        return_items.push(item);\n                    }\n                }\n            }\n        }\n        //console.log \"found\", return_items\n        return return_items;\n    },\n    findBelongsTo: function (belongsToId) {\n        var arr;\n        if (belongsToId.substring == null) {\n            return null;\n        }\n        if (belongsToId.substring(0, 10) !== 'belongsTo:') {\n            return null;\n        }\n        arr = belongsToId.substring(10).split('#');\n        if (arr.length < 2) {\n            return null;\n        }\n        return this.find(arr[0], 'id', arr[1])[0];\n    },\n    update: function (key, updated) {\n        var i, item, items, len, new_items;\n        items = this.getItem(key);\n        new_items = [];\n        for (i = 0, len = items.length; i < len; i++) {\n            item = items[i];\n            if (item.id === updated.id) {\n                if (!updated.remove_flag) {\n                    new_items.push(updated);\n                }\n            } else {\n                new_items.push(item);\n            }\n        }\n        return this.setItems(key, new_items);\n    },\n    setItems: function (key, objects) {\n        var stringified;\n        stringified = JSON.stringify(objects);\n        return localStorage.setItem(this._namespacedKey(key), stringified);\n    },\n    _namespacedKey: function (key) {\n        return this.get('namespace') + '_' + key;\n    },\n    getBelongsToId: function (model, id) {\n        return 'belongsTo:' + model + '#' + id;\n    },\n    synchronize: function (keys) {\n        var promiseArray, self;\n        if (this.get('syncing')) {\n            return;\n        }\n        this.set('syncing', true);\n        self = this;\n        promiseArray = [];\n        $.each(keys, function () {\n            var items, param;\n            items = self.getItem(this.key);\n            //console.log items\n            param = this;\n            return items.forEach(function (item) {\n                return promiseArray.push(self.synchronizeItem(item, param));\n            });\n        });\n        return $.when(promiseArray).done(function () {\n            return self.set('syncing', false);\n        });\n    },\n    synchronizeItem: function (item, param) {\n        var data_to_server, self, to;\n        self = this;\n        //delete item if synced and 3 days old\n        if (item.sync === 'ok') {\n            //check if 3 days old or older\n            if (moment().diff(item.date, 'days') >= 3) {\n                //set remove flag\n                item.remove_flag = true;\n                //and update items\n                self.update(param.key, item);\n            }\n            return;\n        }\n        self = this;\n        to = param.to != null ? param.to : param.key;\n        if (!self.isFilter(item, param.filter)) {\n            return;\n        }\n        //console.log param.key + ' #'+ item.id + \" sync state \" + item.sync\n        // this would be needed if we wanted to check if item already exists in backend\n        //                if @pairing?\n        //                    self.getId to, @pairing, item[@pairing], (id) ->\n        //                        item.backend = id\n        //                        item.sync = 'ok'\n        //                        self.update key, item\n        //                        return\n        //                    , ->\n        //                        self.send to, item\n        //                else\n\n        //console.log \"item before \",item\n        data_to_server = this.resolveBelongsTo(item);\n        //console.log \"item after \",item\n        return self.send(to, data_to_server, item, param.key, item.sync === 'dirty');\n    },\n    resolveBelongsTo: function (item) {\n        var ret, self;\n        self = this;\n        ret = {};\n        $.each(item, function (key, value) {\n            var belongsToItem;\n            if (typeof value === 'object') {\n                return (ret[key] = parseInt(value.id));\n            } else {\n                belongsToItem = self.findBelongsTo(value);\n                return (ret[key] = belongsToItem ? belongsToItem.backend : value);\n            }\n        });\n        return ret;\n    },\n    isFilter: function (item, filter_array) {\n        var ret, self;\n        if (!filter_array) {\n            return true;\n        }\n        ret = true;\n        self = this;\n        $.each(filter_array, function (key, value) {\n            if (!self.isOneFilter(item, key, value)) {\n                return (ret = false);\n            }\n        });\n        return ret;\n    },\n    isOneFilter: function (item, key, value) {\n        var a, id, key_arr, test;\n        key_arr = key.split('.');\n        if (key_arr.length > 1) {\n            id = item[key_arr[0]];\n            if (!id) {\n                return false;\n            }\n            a = this.findBelongsTo(id);\n            test = a ? a[key_arr[1]] : null;\n        } else {\n            //console.log \"testing: \" + key_arr[0] + \" id: \" + id + \" test = \" + test + \" == \" + value,a\n            test = item[key];\n        }\n        if (value === true) {\n            return test;\n        } else {\n            return test === value;\n        }\n    },\n    getId: function (form, field, value, found, notfound) {\n        var json_data, realdata, type, url;\n        //console.log \"finding \"+form + \" where \" + field + \" = \" + value\n        url = collector.api_url() + '/' + form + 's?validation=off';\n        type = 'POST';\n        realdata = {};\n        realdata[form] = data;\n        json_data = JSON.stringify(realdata);\n        return $.ajax(url, {\n            contentType: 'application/json',\n            data: json_data,\n            type: type,\n            error: function (err) {\n                console.log('could not send stamp, trying later again');\n                return console.log(err);\n            },\n            success: function (ret) {\n                return success(ret[form].id);\n            },\n        });\n    },\n    send: function (form, data, item, key, update) {\n        var json_data, realdata, self, type, url;\n        self = this;\n        //console.log \"sending\", data\n        if (update && item.backend) {\n            url = collector.api_url() + '/' + form + 's/' + item.backend + '?validation=off';\n            type = 'PUT';\n        } else {\n            url = collector.api_url() + '/' + form + 's?validation=off';\n            type = 'POST';\n        }\n        realdata = {};\n        realdata[form] = data;\n        json_data = JSON.stringify(realdata);\n        return $.ajax(url, {\n            contentType: 'application/json',\n            data: json_data,\n            type: type,\n            error: function (err) {\n                return self.set('syncing', false);\n            },\n            success: function (ret) {\n                //console.log 'stamp sent succesfully, setting stamp id', ret\n                item.backend = ret[form].id;\n                item.sync = 'ok';\n                return self.update(key, item);\n            },\n        });\n    },\n});\n\nexport default localStorageWrapper;\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport Ember from 'ember';\n\nexport default Service.extend({\n    namespace: 'tt4',\n    session: service(),\n\n    setItem(key, value) {\n        localStorage.setItem(this.createKey(key), JSON.stringify(value));\n    },\n\n    getItem(key) {\n        const str = localStorage.getItem(this.createKey(key));\n        if (str === 'undefined') return null;\n        return JSON.parse(str);\n    },\n\n    removeItem(key) {\n        localStorage.removeItem(this.createKey(key));\n    },\n\n    createKey(str) {\n        const currentuser = Ember.testing ? 'testid' : get(this, 'session.currentUser.id');\n        if (!currentuser)\n            throw new Error('Cannot use localstorage service because currentUser is not set');\n        return this.namespace + '.' + currentuser + '.' + str;\n    },\n});\n","import Service, { inject as service } from '@ember/service';\nimport { computed, action } from '@ember/object';\nimport { A } from '@ember/array';\nimport config from '../config';\nimport { singularize, pluralize } from 'ember-inflector';\nimport { tracked } from '@glimmer/tracking';\n\nexport default class MenuService extends Service {\n    @service('collector-service') Collector;\n    @service session;\n    @service intl;\n    @service localStorageWrapper;\n    @service flags;\n    @service router;\n    @tracked path;\n    @tracked visibleItems = [];\n    @tracked hiddenItems = [];\n    @tracked moreIsActive = false;\n    @tracked paddingPlusMarginForItem = 0;\n\n    containerWidth = 0;\n\n    // Desired order for the menu items for diffrerent brands\n    // the rest of the items will be appended to the end of the menu as they are in the config.staticMenus\n    ottaMenuOrder = [\n        'dashboard',\n        'worktime',\n        'my-sites',\n        'users',\n        'absence',\n        'projects',\n        'resource-planning',\n        'own-report',\n        'material',\n        'drivinglog',\n        'messages',\n        'settings',\n    ];\n    moveMenuOrder = [\n        'dashboard',\n        'worktime',\n        'presence',\n        'my-sites',\n        'projects',\n        'users',\n        'diary',\n        'resource-planning',\n        'absence',\n        'site-safety',\n        'orientation',\n        'worktask',\n        'own-report',\n        'taxman',\n        'salary',\n        'material',\n        'employers',\n        'drivinglog',\n        'messages',\n        'settings',\n    ];\n\n    constructor() {\n        super(...arguments);\n        this.path = this.router.currentRouteName.split('.');\n        this.router.on('routeDidChange', this.regenerateMenu);\n    }\n\n    // can be called from the outside to regenerate the menu\n    // for example when screen size changes\n    regenerateMenu = () => {\n        this.path = this.router.currentRouteName.split('.');\n        this.getMenus();\n    };\n\n    // returns the visible and hidden items based on the current container width\n    @action\n    getMenus() {\n        let visibleItems = [];\n        let hiddenItems = [];\n        let elementSizeWithWithPaddingAndMargin = 0;\n        let restToHidden = false;\n        let menuObject = this.getMenuObject();\n        if (this.containerWidth) {\n            let menuWidth = 0;\n            // we calculate the width of the \"more\" button here manually\n            const moreWidth = this.getTextWidth(\n                this.intl.t('report.more_button'),\n                config.brand === 'otta' ? '16px OttaRaisonne' : '16px Open sans',\n            );\n            // go through the menu items and calculate the width of the menu\n            for (let item of menuObject) {\n                // try to calculate the width of the item\n                elementSizeWithWithPaddingAndMargin = item.width + this.paddingPlusMarginForItem;\n                if (\n                    menuWidth + elementSizeWithWithPaddingAndMargin + moreWidth <=\n                        this.containerWidth &&\n                    !restToHidden\n                ) {\n                    menuWidth += elementSizeWithWithPaddingAndMargin;\n                    visibleItems.push(item);\n                    if (item.active) {\n                        this.moreIsActive = false;\n                    }\n                } else {\n                    restToHidden = true;\n                    if (item.active) {\n                        this.moreIsActive = true;\n                    }\n                    hiddenItems.push(item);\n                }\n            }\n        }\n        return { visibleItems: visibleItems, hiddenItems: hiddenItems, allItems: menuObject };\n    }\n\n    // used for getting static menu-items (tems that are common for all the customers)\n    @computed\n    get staticMenu() {\n        let staticMenuItems = [];\n        let ref = config.staticMenus;\n\n        // Desired order for the new menu\n        const newMenuOrder = config.brand === 'otta' ? this.ottaMenuOrder : this.moveMenuOrder;\n\n        // Reorder based on the new menu order\n        let reorderedItems = [];\n\n        // Add items that are explicitly ordered\n        newMenuOrder.forEach((orderId) => {\n            // use filter to get the item(s) with the correct id\n            let menuItems = ref.filter((item) => item.id === orderId);\n            if (menuItems.length > 0) {\n                reorderedItems.push(...menuItems);\n            }\n        });\n\n        // Append the rest of the items (those not explicitly ordered)\n        ref.forEach((item) => {\n            if (!newMenuOrder.includes(item.id)) {\n                reorderedItems.push(item);\n            }\n        });\n        staticMenuItems = reorderedItems;\n        return staticMenuItems;\n    }\n    translate(menus) {\n        let form, name, split;\n        return menus.map((item) => {\n            if (typeof item.text !== 'string') {\n                return item;\n            }\n            split = item.text.split('.');\n            form = false;\n            name = split[1];\n            if (typeof name === 'string') {\n                if (name.startsWith('add_')) {\n                    name = name.slice(4);\n                }\n                if (this.Collector.formExists(name)) {\n                    form = this.Collector.forms()[name];\n                } else if (this.Collector.formExists(singularize(name))) {\n                    form = this.Collector.forms()[singularize(name)];\n                }\n            }\n            item.name = item.text;\n            if (form && form.name) {\n                item.translated = form.name;\n            } else {\n                item.translated = this.intl.t(item.text);\n            }\n            return item;\n        });\n    }\n\n    // generates the menu object from the static menus and the user forms\n    getMenuObject() {\n        let collector = this.Collector;\n        let menus = A(this.translate(this.staticMenu).concat(this.getOwnForms()));\n        let active = this.active_menu;\n        menus = menus.map((item) => {\n            let current = item.link[0].split('.')[0];\n            if (current === 'site_safety') {\n                current = item.link.length === 2 ? item.link[1] : item.link[0].split('.')[1];\n            }\n            if (current === 'forms') {\n                current = item.link[1];\n            }\n            item.active = active === current;\n            item.width = Math.floor(\n                this.getTextWidth(\n                    item.translated,\n                    config.brand === 'otta' ? '16px OttaRaisonne' : '16px Open sans',\n                ),\n            );\n            return item;\n        });\n        let ret = collector.needsOfArray(menus.map((item) => Object.assign({}, item)));\n\n        return ret;\n    }\n\n    // returns the active menu based on the current route\n    get active_menu() {\n        let custom, split, toppath;\n        if (!this.path) {\n            return '';\n        }\n        toppath = this.path[0];\n        if (location.href.includes('custom')) {\n            custom = location.href.split('/').filter((item) => {\n                return item.includes('custom');\n            });\n            return custom[0];\n        }\n        if (toppath === 'workday') {\n            return 'worktimes';\n        }\n        if (toppath === 'site_safety') {\n            return this.path[1];\n        }\n        if (toppath === 'forms') {\n            split = location.href.split('/');\n            return split[split.indexOf('forms') + 1];\n        } else {\n            return toppath;\n        }\n    }\n\n    // Get the width of a text in a specific font\n    getTextWidth(text, font) {\n        // Create a temporary element\n        const canvas = document.createElement('canvas');\n        const context = canvas.getContext('2d');\n\n        // Set the font style to match the target element\n        context.font = font;\n\n        // Measure the width of the text\n        const metrics = context.measureText(text);\n        return metrics.width;\n    }\n\n    // fetches the customer own forms\n    getOwnForms(asAddingLinks) {\n        let ret = [];\n        let forms = this.Collector.forms();\n        // map staticMenu to mappedMenu so it can be used in includes\n        const mappedMenu = this.staticMenu.map((item) => (item.link?.[0] ? item.link[0] : item.id));\n\n        Object.keys(forms).forEach((key) => {\n            let item = forms[key];\n            let name = this.parseMeasurementName(key, item);\n\n            if (item.privileges && item.privileges.access !== true) {\n                return; // Skip rest of the loop if access is not true.\n            }\n\n            // Skip if item is already included based on staticMenu\n            if (mappedMenu.includes(pluralize(key)) || mappedMenu.includes(key)) {\n                return;\n            }\n\n            if (name) {\n                let short_key = key.substring(12).toLowerCase();\n\n                let menuItem = {\n                    needs: [`${key}@add`],\n                    text: name,\n                    translated: name,\n                    icon: 'move move-Length',\n                    id: key,\n                };\n\n                if (asAddingLinks) {\n                    menuItem.link = ['site_safety.measurement.add', 'add', short_key];\n                } else {\n                    menuItem.link = ['site_safety.measurement.graphs', short_key];\n                    menuItem.submenus = [\n                        { text: 'own_measurement.graphs', link: 'site_safety.measurement.graphs' },\n                        { text: 'own_measurement.data', link: 'site_safety.measurement.data' },\n                        {\n                            text: 'own_measurement.notices',\n                            link: 'site_safety.measurement.notices',\n                        },\n                    ];\n                }\n\n                ret.push(menuItem);\n            } else if (item.name) {\n                let menuItem = {\n                    text: item.name.toLowerCase(),\n                    translated: item.name,\n                    icon: 'move move-CopyRow',\n                    id: key,\n                };\n                if (asAddingLinks) {\n                    menuItem.link = ['forms.form-add', key];\n                    menuItem.needs = [`${key}@add`]; // needs should be only for adding links\n                } else {\n                    menuItem.link = ['forms.form-report', key];\n                }\n\n                ret.push(menuItem);\n            }\n        });\n        return ret;\n    }\n\n    parseMeasurementName(key, item) {\n        if (key.substring(0, 11) !== 'measurement') {\n            return;\n        }\n        let name = key.substring(12).toLowerCase();\n        if (item.name != null) {\n            name = item.name;\n        }\n        return name;\n    }\n}\n","/* eslint-disable no-irregular-whitespace */\nimport Service from '@ember/service';\nimport config from '../config/environment';\n\nexport default class MetaService extends Service {\n    updateDescription(content) {\n        // When calling from translateMetaTags, content is passed as a parameter\n        // If content is not passed, then we are calling from application route and content is set empty.\n        if (!content) {\n            content = '';\n        }\n        let metaDescription = document.querySelector('meta[name=\"description\"]');\n        if (metaDescription) {\n            metaDescription.setAttribute('content', content);\n        }\n    }\n\n    updateTitle(title) {\n        // When calling from translateMetaTags, title is passed as a parameter\n        // If title is not passed, then we are calling from application route\n        if (title) {\n            document.querySelector('title').textContent = title;\n            return;\n        }\n        // Change Page title according the brand\n        if (config.brand === 'default') {\n            title = 'Movenium';\n        } else if (config.brand === 'otta') {\n            title = 'Otta';\n        }\n        document.querySelector('title').textContent = title;\n    }\n\n    translateMetaTags() {\n        // Get browser language\n        let browser = window.navigator.userLanguage || window.navigator.language;\n        let language = browser.substring(0, 2).toLowerCase();\n\n        // If language is not Finnish, then use English as default\n        if (language !== 'fi') {\n            if (config.brand === 'default') {\n                this.updateTitle('Log in to Movenium | Log in');\n                this.updateDescription(\n                    'Log in to the Movenium Site Management System with your credentials or via Visma Connect.',\n                );\n            } else if (config.brand === 'otta') {\n                this.updateTitle('Log in to Otta | Log in');\n                this.updateDescription(\n                    'Log in to the Otta time tracking system with your credentials or via Visma Connect.',\n                );\n            }\n        }\n    }\n}\n","define(\"tt4/services/metrics\", [\"exports\", \"ember-metrics/services/metrics\"], function (_exports, _metrics) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _metrics.default;\n    }\n  });\n});\n","import { computed } from '@ember/object';\nimport Service from '@ember/service';\nimport ENV from '../config/environment';\n\nfunction computedFromConfig(prop) {\n  return computed(function(){\n    return ENV['ember-modal-dialog'] && ENV['ember-modal-dialog'][prop];\n  });\n}\n\nexport default Service.extend({\n  hasEmberTether: computedFromConfig('hasEmberTether'),\n  hasLiquidWormhole: computedFromConfig('hasLiquidWormhole'),\n  hasLiquidTether: computedFromConfig('hasLiquidTether'),\n  destinationElementId: null, // injected by initializer\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/modal-scroller.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ModalScrollerService;\n\nimport Scroller from 'tt4/services/scroller';\n\nimport $ from 'jquery';\n\nModalScrollerService = Scroller.extend({\n    scrollVertical: function () {\n        this.notifyPropertyChange('scrollVerticalCalled');\n        return this._super(...Array.from(arguments));\n    },\n    scrollable: Em.computed('scrollVerticalCalled', function () {\n        return $('.record-comp-content');\n    }),\n});\n\nexport default ModalScrollerService;\n","import Service from '@ember/service';\nimport DS from 'ember-data';\nimport { inject as service } from '@ember/service';\nimport { get, set } from '@ember/object';\nimport { getOwner } from '@ember/application';\nimport { assert } from '@ember/debug';\nimport EmberError from '@ember/error';\nimport { Promise as EmberPromise } from 'rsvp';\n\nimport CollectorModel from 'tt4/models/collector';\nimport CollectorValidationMixin from 'tt4/mixins/collector-validation';\n\n//importing the old collector class for now because of legacy support (need to replace everywhere in tt4 otherwise)\n//should move all the functionality from it into this service, but it requires a lot of work in tt4\nimport Collector from 'tt4/classes/collector';\n// import Promise from 'rsvp';\n\nexport default Service.extend({\n    store: service(),\n    capi: service(),\n    forms: service(),\n    collector: service('collector-service'),\n\n    createEmberModels() {\n        //does capi request to get forms and then call createModels to create models\n        return new EmberPromise(async (resolve, reject) => {\n            try {\n                const forms = await get(this, 'capi').request('/forms');\n                this.createModels(forms);\n                resolve();\n            } catch (e) {\n                localStorage.removeItem('ember_simple_auth-session');\n                location.reload();\n                reject(e);\n            }\n        });\n    },\n\n    createModels(data) {\n        assert('Data must have a forms object: data.forms', data.forms);\n\n        //need to set some stuff in collector class because tt4 depends on them,\n        //should move collector class functionality into this service and make tt4 use this instead\n        set(Collector, 'forms', Collector.reparse_dropdown_options(data.forms));\n        if (data.updater) {\n            set(Collector, 'products', data.updater.products);\n            set(Collector, 'modules', data.updater.modules);\n        }\n        set(Collector, 'tt3flag', data.tt3flag);\n\n        const relationFields = ['database', 'databasearray', 'timerlink', \"work_permit_attachment\"];\n        const asyncRelations = [\n            'materiallog.type',\n            'multitask.taskname',\n            'user.employer',\n            'urakkalog.type',\n            'customlog.type',\n            'worktask.project',\n            'holiday.user',\n            'user.worktimegroup',\n            'ccbuttonexecution.ccbutton',\n            'user.superior',\n        ];\n        const attributeNamesWithoutInverse = ['parent', 'superior', 'contact_user', 'workpermit_owner'];\n\n        let allAttributes = {};\n        let relationObjects = {};\n\n        const forms = data.forms;\n\n        //iterate every form and make it into an ember model\n        // forms is json object like\n        for (let form in forms) {\n            //form name must be \"classified\"\n            //because ember model names are like that\n            //e.g. wage_periods => WagePeriods\n            let formName = form.classify();\n            //create new object for the attributes\n            let modelAttributes = {};\n\n            //get form objects\n            let formObjects = forms[form].objects;\n            //iterate every object\n            for (let attributeName in formObjects) {\n                let type = formObjects[attributeName].type;\n                let attr = null;\n                //check if attribute has a type that indicates a relation to another model\n                if (relationFields.includes(type) && formObjects[attributeName].options) {\n                    //the other model that this relation is related to\n                    let relation = formObjects[attributeName].options.form;\n\n                    //if array does not exist, create empty array so that push method works\n                    if (typeof relationObjects[relation] === 'undefined') {\n                        relationObjects[relation] = [];\n                    }\n                    //put relation to helper array\n                    relationObjects[relation].push = formName;\n\n                    // make sure async is always boolean ..\n                    const async =\n                        asyncRelations.includes(formName.toLowerCase() + '.' + attributeName) ||\n                        (formObjects[attributeName].async ? true : false);\n\n                    //add belongs-to relation to attibute\n                    if (type === 'databasearray' || type === 'work_permit_attachment') attr = DS.hasMany(relation, { async: true });\n                    else if (attributeNamesWithoutInverse.includes(attributeName))\n                        attr = DS.belongsTo(relation, { inverse: null, async: async });\n                    else attr = DS.belongsTo(relation, { async: async });\n                } else {\n                    //otherwise just create a normal attribute\n                    attr = DS.attr();\n                }\n                //put the attribute into the modelAttributes object\n                modelAttributes[attributeName] = attr;\n            }\n            //put model attributes object into the allattributes object\n            allAttributes[formName] = modelAttributes;\n        }\n\n        //add workday models to allattributes\n        allAttributes = this.createWorkdayModels(allAttributes, forms);\n\n        //iterate over relations\n        for (let relation in relationObjects) {\n            let formName = relation.classify();\n            //create a dummy model if not already found (has only name field and relations)\n            if (!allAttributes[formName]) {\n                //create only name field for empty model\n                let attributes = {};\n                attributes.name = DS.attr();\n                allAttributes[formName] = attributes;\n            }\n        }\n\n        //iterate over all attribute objects and create Ember Data Models from them\n        for (let object in allAttributes) {\n            let model = 'model:' + object;\n\n            let modelAttributes = allAttributes[object];\n            try {\n                getOwner(get(this, 'store')).register(\n                    model,\n                    CollectorModel.extend(CollectorValidationMixin, modelAttributes),\n                );\n            } catch (e) {\n                if (e.message && e.message.includes('Cannot re-register: ')) continue;\n\n                let error = e.message || e;\n                throw new EmberError(error);\n            }\n        }\n\n        // ember-movenium addon\n        // this needs to be redone always when models are recreated ... initapp also sets this.forms.forms but this is the only place where this\n        // set should be needed to be done\n        this.forms.forms = data.forms;\n    },\n\n    createWorkdayModels(allAttributes, forms) {\n        allAttributes['WorkdayDay'] = {\n            date: DS.attr('string'),\n            minutes: DS.attr('number'),\n            own: DS.attr('boolean'),\n            desc: DS.attr('string'),\n            country: DS.attr('string'),\n            absence_minutes: DS.attr('number'),\n        };\n\n        allAttributes['WorkdayWeek'] = {\n            day: DS.attr('string'),\n            starttime: DS.attr('string'),\n            endtime: DS.attr('string'),\n            minutes: DS.attr('number'),\n            own: DS.attr('boolean'),\n            overtimerule: DS.belongsTo('WorkdayOvertimeRule'),\n            max_minutes: DS.attr('number'),\n            absence_minutes: DS.attr('number'),\n        };\n\n        allAttributes['WorkdayOvertimeRule'] = {\n            name: DS.attr('string'),\n            rules: DS.attr('string'),\n            workdayWeeks: DS.hasMany('WorkdayWeek'),\n        };\n\n        if (forms.worktimegroup) {\n            (allAttributes['WorkdayDay'].worktimegroup = DS.belongsTo('worktimegroup')),\n                (allAttributes['WorkdayWeek'].worktimegroup = DS.belongsTo('worktimegroup'));\n        }\n\n        if (this.collector.testNeedsOne('products.midweek_holiday_pay')) {\n            allAttributes['WorkdayDay'].midweek_holiday_pay = DS.attr('boolean');\n            allAttributes['WorkdayDay'].midweek_holiday_length = DS.attr('number');\n        }\n\n        return allAttributes;\n    },\n});\n","import Ember from 'ember';\nimport MomentService from 'ember-moment/services/moment';\nimport config from '../config/environment';\n\nconst { get } = Ember;\n\nexport default MomentService.extend({\n  defaultFormat: get(config, 'moment.outputFormat')\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/my-sites.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar MySitesService;\n\nimport Ember from 'ember';\n\nimport { getImageFromUrl, resizeImage } from 'tt4/utils/file-util';\n\nMySitesService = Ember.Service.extend({\n    localStorageWrapper: Em.inject.service(),\n    google: Em.inject.service(),\n    session: Em.inject.service(),\n    store: Em.inject.service(),\n    Collector: Ember.inject.service('collector-service'),\n    ttapi: Ember.inject.service(),\n    saveToLocalStorage: function (mySitesArray) {\n        return this.get('localStorageWrapper').setItemsWithBackend('mySites', mySitesArray);\n    },\n    loadFromLocalStorage: function () {\n        return this.get('localStorageWrapper').getItem('mySites');\n    },\n    loadFromLocalStorageWithBackend: function () {\n        return this.get('localStorageWrapper').getItemWithBackend('mySites');\n    },\n    hasMySites: function () {\n        return this.loadFromLocalStorage().length > 0;\n    },\n    /*\n  project: project record\n  item: if given item is modified\n  */\n    getMySiteObject: function (project, item) {\n        var company, image, partnerid, projectimage;\n        projectimage = project.get('image');\n        // show projects image or if not set get url for google streetview\n        if (projectimage != null && projectimage.length > 0) {\n            image = projectimage[0].s3url || projectimage[0].url;\n        } else if (project.get('image.url')) {\n            image = project.get('image.url');\n        } else if (project.get('location_map')) {\n            // save this image to db so we don't have to call streetview-api everytime\n            image = this.get('google').streetViewUrl(JSON.parse(project.get('location_map')));\n            new Ember.RSVP.Promise((resolve) => {\n                return getImageFromUrl(image).then((file) => {\n                    var file_data;\n                    file_data = {};\n                    file_data.name = 'file';\n                    return resizeImage(file, 600, 300, 60).then((resized) => {\n                        file_data.file = resized;\n                        return resizeImage(resized, 200, 100, 60).then((resized) => {\n                            file_data.preview = resized;\n                            return resolve(file_data);\n                        });\n                    });\n                });\n            })\n                .then((file) => {\n                    return this.get('ttapi').request('/save_project_image', {\n                        type: 'POST',\n                        dataType: 'text',\n                        data: {\n                            projectid: project.get('id'),\n                            image: file,\n                        },\n                    });\n                })\n                .catch((err) => {\n                    return console.log(err);\n                });\n        } else {\n            image = null;\n        }\n        if (!item) {\n            item = {\n                id: project.get('id'),\n            };\n        }\n        partnerid = this.get('session.currentUser.services.partnerid');\n        company = this.get('session.currentUser.company_info.company_name');\n        Em.assert(partnerid, 'currentUser.services.partnerid was empty');\n        Em.set(item, 'name', project.get('name'));\n        Em.set(item, 'number', project.get('number'));\n        Em.set(item, 'image', image);\n        Em.set(item, 'partnerid', partnerid);\n        Em.set(item, 'company', company);\n        Em.set(item, 'used', moment().format('YYYY-MM-DD HH:mm:ss'));\n        return item;\n    },\n    addSite: function (projectid, setToDefault) {\n        return this.get('store')\n            .findRecord('project', projectid)\n            .then((record) => {\n                this.addSiteObject(this.getMySiteObject(record));\n                if (setToDefault) {\n                    return this.setCurrentSite(record);\n                }\n            });\n    },\n    addSiteObject: function (object) {\n        var mySites;\n        mySites = this.loadFromLocalStorage();\n        if (mySites.findBy('id', object.id)) {\n            return;\n        }\n        mySites.push(object);\n        return this.saveToLocalStorage(mySites);\n    },\n    // projects can be added with only projectid.. all the other data is loaded when mysites is loading\n    addSiteWithJustId: function (projectid) {\n        var mySites;\n        mySites = this.loadFromLocalStorage();\n        if (mySites.findBy('id', projectid)) {\n            return;\n        }\n        mySites.push({\n            id: '' + projectid,\n        });\n        return this.saveToLocalStorage(mySites);\n    },\n    setCurrentSite: function (siteRecord) {\n        this.get('localStorageWrapper').setUserSetting(\n            'currentMySite',\n            parseInt(siteRecord.get('id'), 10),\n        );\n        return this.set('session.currentUser.currentMySite', siteRecord);\n    },\n    removeAllSites: function () {\n        return this.get('Collector').ttapi({\n            method: 'post',\n            url: 'empty_mysites',\n        });\n    },\n});\n\nexport default MySitesService;\n","// noinspection TypeScriptValidateTypes\nimport Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { isArray } from '@ember/array';\n\nimport FormsService from 'tt4/injections/services/forms';\nimport { decamelize } from '@ember/string';\n\ninterface ICurrentUser {\n    [key: string]: string;\n}\n\nexport default class NeedsService extends Service {\n    @service private session: any;\n    @service private forms: FormsService;\n\n    public test(needs: string | string[]): boolean {\n        if (!needs) return true;\n        if (!isArray(needs)) needs = [needs];\n\n        for (let need of needs) {\n            let inverse = false;\n            if (need.substring(0, 1) === '!') {\n                inverse = true;\n                need = need.substring(1);\n            }\n            const ok = inverse ? !this.testOne(need) : this.testOne(need);\n            if (!ok) return false;\n        }\n\n        return true;\n    }\n\n    public testOne(need: string): boolean {\n        if (need.substring(0, 9) === 'userlevel') return this.testUserlevel(need.split('=')[1]);\n        if (need.includes('@')) return this.testFormPrivilege(need);\n        if (need.includes('.')) return this.testFieldExistance(need);\n\n        return false;\n    }\n\n    private testUserlevel(userlevels: string): boolean {\n        const splitUserlevels = userlevels.split(',');\n\n        return splitUserlevels.includes(\n            (this.session.currentUser as ICurrentUser).userlevel.toString(),\n        );\n    }\n\n    private testFormPrivilege(need: string): boolean {\n        const split = need.split('@');\n        const form = decamelize(split[0]);\n        const privilege = split[1];\n\n        if (!this.forms.formExists(form)) return false;\n\n        if (privilege === 'errors') return this.forms.forms[form].errors ? true : false;\n        if (!this.forms.forms[form].privileges) return false;\n\n        return !!this.forms.forms[form].privileges![privilege];\n    }\n\n    private testFieldExistance(need: string): boolean {\n        const split = need.split('.');\n        return this.forms.fieldExists(split[0], split[1]);\n    }\n}\n","import Service, { inject as service } from '@ember/service';\nimport { isArray } from '@ember/array';\n\nexport default Service.extend({\n    collector: service('collector-service'),\n    test(need) {\n        if (!isArray(need)) {\n            need = [need];\n        }\n        return this.collector.testNeeds(need);\n    },\n});\n","define(\"tt4/services/notifications\", [\"exports\", \"ember-cli-notifications/services/notifications\"], function (_exports, _notifications) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _notifications.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/online-checker.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OnlineChecker;\n\nimport Ember from 'ember';\n\nimport collector from '../classes/collector';\n\nOnlineChecker = Ember.Service.extend({\n    is_online: true,\n    check: function () {\n        var self, url;\n        //checking connection..\n        url = collector.api_url() + '/status';\n        self = this;\n        return $.get(url, function (data) {\n            return self.set('is_online', true);\n        }).fail(function (err) {\n            return self.set('is_online', false);\n        });\n    },\n});\n\nexport default OnlineChecker;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/own-cordova-service.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar OwnCordovaService;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\n//import cordova from 'ember-cli-cordova/services/cordova'\nOwnCordovaService = Ember.Service.extend({\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    moment: Ember.inject.service(),\n    ajax: Ember.inject.service(),\n    hasBeenCalled: false,\n    setup: function () {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            if (window.cordova) {\n                if (this.get('hasBeenCalled')) {\n                    resolve();\n                    return;\n                }\n                this.set('hasBeenCalled', true);\n                return document.addEventListener(\n                    'deviceready',\n                    () => {\n                        //                    cordova.plugins.Keyboard.disableScroll(true);\n                        //                    cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);\n\n                        //                    window.addEventListener('native.keyboardshow', keyboardShowHandler);\n                        //                    window.addEventListener('native.keyboardhide', keyboardHideHandler);\n                        StatusBar.backgroundColorByHexString(config.statusBarColor);\n                        StatusBar.overlaysWebView(false);\n                        StatusBar.styleLightContent();\n                        StatusBar.show();\n                        this.checkAppVersion();\n                        this.createFolder('Movenium');\n                        window.open = cordova.InAppBrowser.open;\n\n                        // Catch links that are supposed to open in system browser\n                        // and explicitly open them in the system browser using JS\n                        $ = jQuery;\n                        $(document).on('click', 'a[target=_system]', function (event) {\n                            event.preventDefault();\n                            return window.open($(this).attr('href'), '_system');\n                        });\n\n                        return resolve();\n                    },\n                    false,\n                );\n            } else {\n                return resolve();\n            }\n        });\n    },\n    createFolder: function (name) {\n        return window.requestFileSystem(\n            LocalFileSystem.PERSISTENT,\n            1,\n            (fileSys) => {\n                return fileSys.root.getDirectory(\n                    name,\n                    {\n                        create: true,\n                        exclusive: false,\n                    },\n                    (directory) => {\n                        return this.set('folder', directory);\n                    },\n                    (e) => {\n                        console.log(e);\n                        return this.get('dialogs').alert(\n                            this.get('intl').t('cordova.error.folder_create_failed'),\n                        );\n                    },\n                );\n            },\n            (e) => {\n                console.log(e);\n                return this.get('dialogs').alert(\n                    this.get('intl').t('cordova.error.folder_create_failed'),\n                );\n            },\n        );\n    },\n    // Takes binary data and a name\n    saveFile: function (data, name, type) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var appDir;\n            appDir = this.get('folder');\n            name = (name + ' ' + moment().format('YYYYMMDDhmmss') + '.' + type).replace(\n                new RegExp(' ', 'gi'),\n                '_',\n            );\n            return appDir.getFile(\n                name,\n                {\n                    create: true,\n                    exclusive: false,\n                },\n                (fileEntry) => {\n                    return fileEntry.createWriter(\n                        (writer) => {\n                            return this.fileWrite(writer, data).then(function (retWriter) {\n                                return resolve(fileEntry.toURL());\n                            });\n                        },\n                        (e) => {\n                            reject(e);\n                            this.get('dialogs').alert(\n                                this.get('intl').t('cordova.error.file_create_failed'),\n                            );\n                            return console.log(e);\n                        },\n                    );\n                },\n                (e) => {\n                    reject(e);\n                    this.get('dialogs').alert(\n                        this.get('intl').t('cordova.error.file_create_failed'),\n                    );\n                    return console.log(e);\n                },\n            );\n        });\n    },\n    fileWrite: function (writer, data) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            writer.onwriteend = function (evt) {\n                if (writer.length === 0) {\n                    writer.write(data);\n                } else {\n                    resolve(writer);\n                }\n                return writer;\n            };\n            writer.onerror = (e) => {\n                this.get('dialogs').alert(this.get('intl').t('cordova.error.file_create_failed'));\n                return reject(e);\n            };\n            return writer.truncate(0);\n        });\n    },\n    openFile: function (url, mime) {\n        var self;\n        self = this;\n        return cordova.plugins.fileOpener2.open(url, mime, {\n            error: (e) => {\n                self.get('dialogs').alert(self.get('intl').t('cordova.error.file_open_failed'));\n                return console.log(e);\n            },\n            success: () => {\n                return console.log('opening file url');\n            },\n        });\n    },\n    checkAppVersion: function () {\n        if (device.platform === 'Android') {\n            return cordova.getAppVersion.getVersionNumber().then((version) => {\n                return this.get('ajax')\n                    .request(config.APP.ADMINTOOLURL + 'app_version', {\n                        'Content-Type': 'application/json',\n                    })\n                    .then((data) => {\n                        var conf, intl;\n                        if (data && data[0] && data[0].version && data[0].version > version) {\n                            intl = this.get('intl');\n                            conf = config.mobile_links.Android;\n                            return this.get('dialogs').alert(\n                                '<h4>' +\n                                    intl.t('cordova.old_version_text') +\n                                    '</h4><br><a href=\"https://play.google.com/store/apps/details?id=fi.movenium.app\">' +\n                                    intl.t('cordova.download_app') +\n                                    '<br><img class=\"app-icon app-icon-popup\" alt=' +\n                                    conf.img_alt +\n                                    ' src=' +\n                                    conf.img +\n                                    ' ></a>',\n                            );\n                        }\n                    });\n            });\n        }\n    },\n});\n\nexport default OwnCordovaService;\n","define(\"tt4/services/power-calendar\", [\"exports\", \"ember-power-calendar/services/power-calendar\"], function (_exports, _powerCalendar) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerCalendar.default;\n    }\n  });\n});\n","import Service, { inject as service } from '@ember/service';\n\nexport default Service.extend({\n    admintool: service(),\n    flags: service(),\n\n    async getMessages(data) {\n        const messages = await this.admintool.ajax({\n            url: 'promoMessages',\n            method: 'get',\n            data: data,\n        });\n\n        messages.data = messages.data.filter((message) => {\n            return this.testFlags(message.flags);\n        });\n        messages.count = messages.data.length;\n\n        return messages;\n    },\n\n    //check that user has all the same flags as the message\n    testFlags(msgFlags) {\n        if (!msgFlags) return true;\n        return msgFlags.split(',').every((flag) => {\n            flag = flag.replace(/\\s/g, ''); // remove all whitespace\n            const negation = flag.substring(0, 1) == '!';\n            if (negation) flag = flag.substring(1);\n            return negation ? !this.flags.test(flag) : this.flags.test(flag);\n        });\n    },\n});\n","import Service, { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\n\n/*eslint-disable no-console*/\n/*global FirebasePlugin*/\n\nexport default Service.extend({\n    ttapi: service(),\n    router: service(),\n    session: service(),\n\n    permission: false,\n\n    setupPermission() {\n        if (!window.cordova || !FirebasePlugin) return;\n\n        FirebasePlugin.hasPermission((permission) => {\n            if (permission) {\n                this.permission = true;\n            } else {\n                FirebasePlugin.grantPermission((permission) => {\n                    this.permission = permission;\n                    // Try to register immediately after obtaining permission\n                    // May fail if the user has not yet logged in\n                    if (permission) {\n                        this.register();\n                    }\n                });\n            }\n        });\n    },\n\n    register() {\n        if (!window.cordova) return;\n        if (!FirebasePlugin) return;\n\n        get(this, 'ttapi').request('/user', {\n            method: 'post',\n            data: {\n                lang: moment.locale(),\n            },\n        });\n\n        FirebasePlugin.onTokenRefresh(\n            (token) => {\n                let currentAcceesToken = get(this, 'session.session.authenticated.access_token');\n                if (!currentAcceesToken) return; // Not logged in\n\n                get(this, 'ttapi').request('/saveFCMid', {\n                    method: 'post',\n                    data: {\n                        id: token,\n                    },\n                });\n            },\n            (error) => {\n                console.error(error);\n            },\n        );\n\n        //register the messageReceived listener\n        FirebasePlugin.onMessageReceived(\n            (notification) => {\n                //If the notification is tapped and it has redirection info, we need to redirect\n                if (notification.tap && notification.redirectRoute) {\n                    let route = notification.redirectRoute;\n                    let params = notification.redirectParams;\n                    if (params) {\n                        get(this, 'router').transitionTo(route, {\n                            queryParams: JSON.parse(params),\n                        });\n                    } else {\n                        get(this, 'router').transitionTo(route);\n                    }\n                }\n            },\n            (error) => {\n                console.error(error);\n            },\n        );\n    },\n\n    unregister() {\n        return new Promise((resolve) => {\n            if (!window.cordova) resolve();\n            if (!FirebasePlugin) resolve();\n\n            FirebasePlugin.getToken(\n                (token) => {\n                    console.log('Sending token to ttapi for unregistering');\n                    get(this, 'ttapi').request('/removeFCMid', {\n                        method: 'post',\n                        data: {\n                            id: token,\n                        },\n                    });\n                    FirebasePlugin.unregister();\n                    localStorage.removeItem('tt4-push-token');\n                    resolve();\n                },\n                (error) => {\n                    console.error(error);\n                    resolve();\n                },\n            );\n        });\n    },\n});\n","import Em from 'ember';\nimport { get } from '@ember/object';\nconst DURATION = 750;\n\nexport default Em.Service.extend({\n    animateElement(element, from, to) {\n        return new Promise((resolve) => {\n            const easeOutQuad = (x, t, b, c, d) => {\n                return -c * (t /= d) * (t - 2) + b;\n            };\n\n            const start = new Date().getTime();\n\n            // animation\n            (function animate() {\n                var now = new Date().getTime() - start;\n                var ease = easeOutQuad(0, now, 0, 1, DURATION);\n                element.scrollTop = from + (to - from) * ease;\n                if (now < DURATION) {\n                    setTimeout(animate, 1000 / 60);\n                } else {\n                    resolve();\n                }\n            })();\n        });\n    },\n\n    getScrollableTop() {\n        // because the target elements top is calculated relative to the document,\n        // and if the scrollable container is not the document,\n        // we need to normalize the target elements top based on the top and current scrolled position of the scrollable\n\n        if (document.querySelector('html').offsetTop) {\n            return document.querySelector('html').offsetTop - get('scrollable', this).offsetTop;\n        } else {\n            return 0;\n        }\n    },\n\n    getVerticalCoord(target, offset = 0) {\n        return this.getScrollableTop() + target.offsetTop + offset;\n    },\n\n    scrollVertical(target, opts = {}) {\n        return new Em.RSVP.Promise((resolve, reject) => {\n            this.animateElement(\n                document.querySelector('html'),\n                document.querySelector('html').scrollTop,\n                this.getVerticalCoord(target, opts.offset),\n            ).then(resolve, reject);\n        });\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/servicehandler.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Service;\n\nimport Ember from 'ember';\n\nService = Ember.Service.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    /*\n  Manipulate service to have or to remove fields\n\n  Adding example:\n  {\"worktime.field\": {type: \"hours\", name: \"ownhoursfield\"}}\n\n  Removing example:\n  {\"!worktime.field\": {}}\n\n  */\n    manipulateService: function (fieldList) {\n        console.log('manipulaitn', fieldList);\n        return this.get('store')\n            .findAll('form')\n            .then(() => {\n                var keyList;\n                keyList = Object.keys(fieldList);\n                return this.traverseList(keyList, fieldList);\n            });\n    },\n    traverseList: function (keyList, fieldList) {\n        var firstKey, promise;\n        if (keyList.length < 1) {\n            return;\n        }\n        firstKey = keyList.shift();\n        promise = this._modify(firstKey, fieldList[firstKey]);\n        if (promise) {\n            return promise.then(() => {\n                return this.traverseList(keyList, fieldList);\n            });\n        } else {\n            return this.traverseList(keyList, fieldList);\n        }\n    },\n    _getKeyType: function (key) {\n        var splitted;\n        splitted = key.split('.');\n        if (splitted.length === 1) {\n            return 'form';\n        } else if (splitted.length === 2) {\n            return 'field';\n        } else if (splitted.length === 3) {\n            return 'fieldSetting';\n        }\n    },\n    _parseKey: function (key) {\n        var splitted;\n        key = this._cleanKey(key);\n        splitted = key.split('.');\n        switch (this._getKeyType(key)) {\n            case 'field':\n                return {\n                    form: splitted[0],\n                    field: splitted[1],\n                };\n            case 'fieldSetting':\n                return {\n                    form: splitted[0],\n                    field: splitted[1],\n                    setting: splitted[2].substring(1),\n                };\n        }\n    },\n    _isKeyNegation: function (key) {\n        return key.substring(0, 1) === '!';\n    },\n    _cleanKey: function (key) {\n        if (this._isKeyNegation(key)) {\n            return key.substring(1);\n        } else {\n            return key;\n        }\n    },\n    _modify: function (key, fieldobj) {\n        var isKeyOn;\n        switch (this._getKeyType(key)) {\n            case 'fieldSetting':\n                isKeyOn = this.isFieldSettingOn(this._cleanKey(key));\n                break;\n            default:\n                isKeyOn = this.get('Collector').testNeeds([this._cleanKey(key)]);\n        }\n        if (!isKeyOn && !this._isKeyNegation(key)) {\n            // needs to be turned on\n            return this._turnOn(this._cleanKey(key), fieldobj);\n        } else if (isKeyOn && this._isKeyNegation(key)) {\n            return this._turnOff(this._cleanKey(key), fieldobj);\n        }\n    },\n    _turnOn: function (key, fieldobj) {\n        var func;\n        console.log('turn on', key);\n        func = '_turnOn_' + this._getKeyType(key);\n        return this[func](key, fieldobj);\n    },\n    _turnOff: function (key, fieldobj) {\n        var func;\n        console.log('turn off', key);\n        func = '_turnOff_' + this._getKeyType(key);\n        return this[func](key, fieldobj);\n    },\n    _turnOn_field: function (key, fieldobj) {\n        var field, form, nro, parsed;\n        parsed = this._parseKey(key);\n        form = this.get('store').peekAll('form').findBy('external_type', parsed.form);\n        Ember.assert(\"Form id for form '\" + parsed.form + \"' not found\", form.get('id'));\n        nro =\n            this.get('store')\n                .peekAll('form-field')\n                .filterBy('form.id', form.get('id'))\n                .sortBy('nro')\n                .get('lastObject.nro') + 1;\n        field = this.get('store').createRecord('form-field', {\n            form: form,\n            nro: nro,\n            type: fieldobj.type,\n            external_type: parsed.field,\n            name: fieldobj.name,\n        });\n        return field.save();\n    },\n    _turnOff_field: function (key, fieldobj) {\n        var field, form, parsed;\n        parsed = this._parseKey(key);\n        form = this.get('store').peekAll('form').findBy('external_type', parsed.form);\n        Ember.assert(\"Form id for form '\" + parsed.form + \"' not found\", form.get('id'));\n        field = this.get('store')\n            .peekAll('form-field')\n            .filterBy('form.id', form.get('id'))\n            .findBy('external_type', parsed.field);\n        return field.destroyRecord();\n    },\n    _turnOn_fieldSetting: function (key, fieldobj) {\n        var field, fieldSetting, form, parsed, promise;\n        parsed = this._parseKey(key);\n        form = this.get('store').peekAll('form').findBy('external_type', parsed.form);\n        Ember.assert(\"Form id for form '\" + parsed.form + \"' not found\", form.get('id'));\n        field = this.get('store')\n            .peekAll('form-field')\n            .filterBy('form.id', form.get('id'))\n            .findBy('external_type', parsed.field);\n        Ember.assert(\"Field id for field '\" + parsed.field + \"' not found\", field.get('id'));\n        fieldSetting = this.get('store').createRecord('form-field-setting', {\n            field: field,\n            name: parsed.setting,\n            value: fieldobj,\n        });\n        promise = fieldSetting.save();\n        return promise;\n    },\n    _turnOff_fieldSetting: function (key, fieldobj) {\n        var field, fieldSetting, form, parsed;\n        parsed = this._parseKey(key);\n        form = this.get('store').peekAll('form').findBy('external_type', parsed.form);\n        Ember.assert(\"Form id for form '\" + parsed.form + \"' not found\", form.get('id'));\n        field = this.get('store')\n            .peekAll('form-field')\n            .filterBy('form.id', form.get('id'))\n            .findBy('external_type', parsed.field);\n        Ember.assert(\"Field id for field '\" + parsed.field + \"' not found\", field.get('id'));\n        fieldSetting = this.get('store')\n            .peekAll('form-field-setting')\n            .filterBy('field.id', field.get('id'))\n            .findBy('name', parsed.setting);\n        return fieldSetting.destroyRecord();\n    },\n    isFieldSettingOn: function (key) {\n        var field, fieldSetting, form, parsed;\n        parsed = this._parseKey(key);\n        form = this.get('store').peekAll('form').findBy('external_type', parsed.form);\n        if (!form.get('id')) {\n            return false;\n        }\n        field = this.get('store')\n            .peekAll('form-field')\n            .filterBy('form.id', form.get('id'))\n            .findBy('external_type', parsed.field);\n        if (!field.get('id')) {\n            return false;\n        }\n        fieldSetting = this.get('store')\n            .peekAll('form-field-setting')\n            .filterBy('field.id', field.get('id'))\n            .findBy('name', parsed.setting);\n        return fieldSetting != null;\n    },\n});\n\nexport default Service;\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/session-globals.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar SessionGlobalsService;\n\nimport Ember from 'ember';\n\nSessionGlobalsService = Ember.Service.extend({\n    set: function (name, value) {\n        if (window.globals == null) {\n            window.globals = {};\n        }\n        return (window.globals[name] = value);\n    },\n    get: function (name) {\n        if (window.globals == null) {\n            return null;\n        }\n        if (!window.globals[name]) {\n            return null;\n        }\n        return JSON.parse(JSON.stringify(window.globals[name]));\n    },\n});\n\nexport default SessionGlobalsService;\n","import SessionService from 'ember-simple-auth/services/session';\n\nexport default SessionService;\n","import Service from '@ember/service';\nimport { get, set } from '@ember/object';\nimport { later } from '@ember/runloop';\nimport { captureMessage } from '@sentry/browser';\nimport { inject as service } from '@ember/service';\nimport Evented from '@ember/object/evented';\n\nexport default Service.extend(Evented, {\n    session: service(),\n    router: service(),\n\n    refreshing: false,\n    refreshPromise: null,\n    expiredRecoveryStarted: false,\n\n    tokenHasExpired() {\n        return new Date().getTime() > get(this, 'session.data.authenticated.expires_at');\n    },\n\n    /**\n     * HELPER TO TEST OLD TOKENS IN TT4\n     *\n     * NOTE: the hardcoded access token is only for testing purposes and can be replaved with your own expired token when testing\n     *\n     * Usage:\n     *  1. go to /development and click \"sessionhelper to console\"\n     *  2. execute in console: `setTimeout(() => {$E.makeTokenOld();console.log(\"token is now old\")}, 3000)`\n     *  3. click tt4 so onResume action is called before token is old\n     *\n     */\n    makeTokenOld() {\n        const expiresIn = -3600;\n        set(\n            this.session,\n            'session.authenticated.access_token',\n            'eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvYXBpLm1vdmVuaXVtLmNvbSIsImF1ZCI6Imh0dHBzOlwvXC9hcGkubW92ZW5pdW0uY29tIiwiZXhwIjoxNjQxMzgyNDU0LCJpYXQiOjE2NDEzODYwNTQsInVzZXJuYW1lIjoiZ2NmcmNsQG1haWwuY29tIiwidXNlcmlkIjoiMjMyNjgxIiwicGFydG5lcmlkIjoiMzA1MDYiLCJjbGllbnRfaWQiOiJlbWJlcl9hcHAiLCJ1c2VybGV2ZWwiOiI1IiwiY291bnRyeSI6ImZpIn0.MyV_VmCa2zyMZ3lVyL3z9llJLM6ysjQIb4RC-XHbdA4ze9fvwZDgLyXQSN0avZ4S0HOkPkNwrXY4MkGpMG9TUWDf0uhM2lWRWeQq3-4Du8aP7opS-nJHiNoTvZSz5i12KPyrzwY1BADUKBprEjUci8N3nuTi7aIrTKZ_pzxl58U'\n        );\n        //set(this.session, \"session.authenticated.refresh_token\", \"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvYXBpLm1vdmVuaXVtLmNvbSIsImF1ZCI6Imh0dHBzOlwvXC9hcGkubW92ZW5pdW0uY29tIiwiZXhwIjoxNjQxNTM2NDE4LCJpYXQiOjE2NDE1NDAwMTgsInVzZXJuYW1lIjoiZ2NmcmNsQG1haWwuY29tIiwidXNlcmlkIjoiMjMyNjgxIiwicGFydG5lcmlkIjoiMzA1MDYiLCJjbGllbnRfaWQiOiJlbWJlcl9hcHAiLCJ0eXBlIjoicmVmcmVzaCJ9.UcRJBL7hhSu1nqGy6DJGr1aP8B-2fnZkwReHT7Z-m-OUBRaKT5B_HOi_gOvfC8Yu3ZJJ_KS85LbjqFdLZ9xyIwOfxbG-QTlKiAwf2Ezon_Y-nGjCwhpIl4u8kMExtdJqW-tAxvMsqiebXAgz4hV-sRKqrNZSfqNQJmBRL-eSMqI\")\n        set(this.session, 'session.authenticated.expires_in', expiresIn);\n        set(\n            this.session,\n            'session.authenticated.expires_at',\n            new Date(new Date().getTime() + expiresIn * 1000).getTime()\n        );\n\n        localStorage.setItem(\n            'ember_simple_auth-session',\n            JSON.stringify({\n                alldone: true,\n                authenticated: get(this.session, 'session.authenticated'),\n            })\n        );\n    },\n\n    refresh() {\n        this.refreshing = true;\n        this.refreshPromise = get(this, 'session').session.restore({\n            refresh_token: get(this, 'session.session.authenticated.refresh_token'),\n            expires_at: get(this, 'session.data.authenticated.expires_at'),\n        });\n\n        this.refreshPromise.then(() => {\n            this.refreshing = false;\n        });\n\n        return this.refreshPromise;\n    },\n\n    resumed() {\n        if (!this.tokenHasExpired()) this.trigger('resumed');\n    },\n\n    tokenWillExpireIn(minutes) {\n        return (\n            new Date().getTime() + minutes * 60000 >\n            get(this, 'session.data.authenticated.expires_at')\n        );\n    },\n    isOffline() {\n        return get(this, 'session.session.authenticated.offline');\n    },\n\n    // This method is called when ember data gets 401 from backend.\n    // Called by capi-3, application and ttapi-base adapters.\n    //\n    // why? onResume calls + simple auth timers should always make sure that token is never old when used ... BUT\n    // in production it happens quite often that the token is old for some reason and user is kicked out.\n    expiredRecovery(expiredRequest) {\n        // if recovery is already started, do nothing\n        if (this.expiredRecoveryStarted) return;\n        this.expiredRecoveryStarted = true;\n\n        // save the current route so we can go back to it after recovery\n        const currentRoute = this.router.currentRouteName;\n\n        // if refreshing is not started from somewhere else, start it now\n        if (!this.refreshing) this.refresh();\n\n        // goto to loading route so the whole route is rerendered after refresh is done\n        this.router.transitionTo('loading');\n\n        // wait for the refresh to complete and then reroute to the route where we were\n        this.refreshPromise.then(() => {\n            // eslint-disable-next-line no-console\n            console.log(\n                `expiredRecovery: failed request '${expiredRequest}' in route '${currentRoute}'`\n            );\n            captureMessage(\n                `expiredRecovery: failed request '${expiredRequest}' in route '${currentRoute}'`\n            );\n            this.router.transitionTo(currentRoute);\n        });\n\n        // wait 15 minutes before resetting the recovery system\n        // reason:\n        //  1) some old requests might resolve after the recovery is already done and recovery is reinitiated unnecessarily\n        //  2) if some problem causes infinite recovery loop .. it initiates max once every 15 minutes\n        later(() => (this.expiredRecoveryStarted = false), 15 * 60 * 1000);\n    },\n});\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\n\nexport default class SettingsService extends Service {\n    @service session;\n    @service('collector-service') Collector;\n\n    _refreshNeeded = false;\n\n    async setProducts(products) {\n        await Promise.all(this.Collector.setProducts(products));\n        await this.clearCacheAndRefreshNeeded();\n    }\n\n    async clearCacheAndRefreshNeeded() {\n        await this.Collector.ajax({\n            url: 'system/clear_memcache?partnerid=' + this.session.currentUser.partnerid,\n        });\n        this._refreshNeeded = true;\n    }\n\n    /**\n     * routes can ask is refresh needed or not by calling this method\n     */\n    refreshNeeded() {\n        return this._refreshNeeded;\n    }\n}\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { computed } from '@ember/object';\n\nexport default class SkvReport extends Service {\n  @service ttapi;\n  @service session;\n\n  @computed('session.currentUser')\n  get skvReportLink() {\n    const currentUser = this.session.currentUser;\n    if (!currentUser) {\n      return null;\n    }\n    return `${this.ttapi.host}/personalliggare?partnerid=${currentUser.partnerid}`;\n  }\n}\n","define(\"tt4/services/store\", [\"exports\", \"ember-data/store\"], function (_exports, _store) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _store.default;\n    }\n  });\n});\n","import config from 'tt4/config/environment';\nimport Service, { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport moment from 'moment';\nimport collector from 'tt4/classes/collector';\nimport getScript from 'tt4/utils/getScript';\n\nexport default class SurveysService extends Service {\n    @service session;\n    @service intl;\n    @service initapp;\n    @service flags;\n    @service router;\n\n    initializeAndRun(surveyType) {\n        // we skip showing if no flag\n        if (!this.flags.test('show-survey')) {\n            return;\n        }\n        const initapp = get(this, 'initapp');\n        if (get(initapp, 'appReady')) {\n            this.initWootric(surveyType);\n        } else {\n            initapp.on('appReady', () => {\n                this.initWootric(surveyType);\n            });\n        }\n    }\n\n    async initWootric(surveyType) {\n        if (!get(this, 'session.session.content.authenticated.scope')) {\n            if (config.environment === 'development' || get(this, 'testMode') === true) {\n                window.wootric_survey_immediately = true;\n                window.wootric_no_surveyed_cookie = true;\n            }\n            const user = get(this, 'session.currentUser');\n            const intl = get(this, 'intl');\n\n            // browser info\n            const { UAParser } = window;\n            const parser = new UAParser();\n            const bo = parser.setUA(navigator.userAgent).getResult();\n\n            // eg. 'Firefox 68.0 / Gecko 68.0 / Windows 10'\n            const browserString = `${bo.browser.name} ${bo.browser.version} / ${bo.engine.name} ${bo.engine.version} / ${bo.os.name} ${bo.os.version}`;\n\n            window.wootricSettings = {\n                email: get(user, 'email'),\n                created_at: moment(get(user, 'row_info.created')).format('X'),\n                language: get(intl, 'primaryLocale'),\n                dashboard_language: get(intl, 'primaryLocale'),\n                modal_footprint: 'compact',\n                disclaimer: {\n                    text: intl.t('wootric.disclamer.text').toString(),\n                    link: 'https://www.visma.com/privacy/customer-feedback/',\n                    link_word: intl.t('wootric.disclamer.link_word').toString(),\n                },\n                properties: {\n                    role: get(user, 'userlevel'),\n                    product: config.brand == 'otta' ? 'Otta' : 'Movenium',\n                    country: get(user, 'company_info.country')\n                        ? get(user, 'company_info.country').toUpperCase()\n                        : 'N/A',\n                    customer: get(user, 'company'),\n                    vatin: get(user, 'company_info.company_vatin'),\n                    partnerid: get(user, 'partnerid'),\n                    modules_array: collector.products.toString(),\n                    platform: typeof cordova !== 'undefined' ? device.platform : browserString, // eslint-disable-line\n                    page: this.router.currentRouteName,\n                },\n            };\n\n            if (this.WootricSurvey) {\n                this.run(surveyType);\n            } else {\n                await getScript('https://cdn.wootric.com/wootric-sdk.js');\n                this.WootricSurvey = WootricSurvey;\n                this.run(surveyType);\n            }\n        }\n    }\n\n    run(type) {\n        if (!type) return;\n        WootricSurvey.stop();\n        window.wootricSettings.account_token = 'NPS-EU-b52c0bfb';\n        window.wootricSettings.event_name = type;\n        window.wootricSettings.product_name = null;\n        WootricSurvey.run(window.wootricSettings);\n    }\n}\n","define(\"tt4/services/text-measurer\", [\"exports\", \"ember-text-measurer/services/text-measurer\"], function (_exports, _textMeasurer) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _textMeasurer.default;\n    }\n  });\n});\n","import Clock from 'ember-cli-clock/services/clock';\n\nexport default Clock.extend({\n    interval: 1000,\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/tools.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar ToolsService;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nToolsService = Ember.Service.extend({\n    routing: Ember.inject.service('-routing'),\n    Collector: Ember.inject.service('collector-service'),\n    localStorageWrapper: Ember.inject.service(),\n    store: Ember.inject.service(),\n    session: Ember.inject.service(),\n    admintool: Ember.inject.service(),\n    change_service: function (username, url) {\n        var c, params;\n        c = this.get('Collector');\n        params = {\n            url: 'login',\n            type: 'POST',\n            data: {\n                change_user: username,\n            },\n        };\n        if (url) {\n            url = window.location.href.split('#')[0] + url;\n        } else {\n            url = window.location.href;\n        }\n        return c.ajax(params).then((data) => {\n            return this.get('routing').transitionTo('token', [data.refresh_token], {\n                url: url,\n            });\n        });\n    },\n    initCurrentMySite: function () {\n        var ls, siteid;\n        ls = this.get('localStorageWrapper');\n        siteid = ls.getUserSetting('currentMySite')[0];\n        if (!siteid) {\n            return;\n        }\n        console.log(siteid);\n        return this.get('store')\n            .findRecord('project', siteid)\n            .then((record) => {\n                return this.set('session.currentUser.currentMySite', record);\n            });\n    },\n    login: function (params, url = null) {\n        var promise;\n        promise = this.get('admintool').ajax({\n            url: 'createToken',\n            method: 'POST',\n            data: {\n                username: params.username,\n                userid: params.userid,\n                partnerid: params.partnerid,\n            },\n            headers: {\n                Authorization: 'Bearer ' + this.get('session.session.authenticated.access_token'),\n            },\n        });\n        return promise.then((token) => {\n            var win;\n            if (!url) {\n                url = config.APP.OWN_URL;\n            }\n            if (url.slice(-1) === '/') {\n                win = window.open(url + '#/token/' + token['token'], '_blank');\n            } else {\n                win = window.open(url + '/#/token/' + token['token'], '_blank');\n            }\n            return win.focus();\n        });\n    },\n    computerizeHumanInput: function (string, minLength = 8, maxLength = 24) {\n        var ref;\n        string = string.toLowerCase();\n        string = string.replace(/ä/g, 'a');\n        string = string.replace(/å/g, 'a');\n        string = string.replace(/ö/g, 'o');\n        string = string.replace(/ü/g, 'u');\n        string = string.replace(/[^a-z0-9]+/g, '');\n        if (string.length < minLength) {\n            string =\n                string +\n                Math.random()\n                    .toString(36)\n                    .substring(2, 2 + minLength - string.length);\n        }\n        if (string.length > maxLength) {\n            string = string.substring(0, maxLength);\n        }\n        if ((ref = string.substring(string.length - 1, 1)) === 's' || ref === 'y') {\n            string = string.substring(0, string.length - 1) + 'k';\n        }\n        return string;\n    },\n    cleanUnneededQueryParams: function (params) {\n        return Object.keys(params).forEach(function (key) {\n            if (Ember.typeOf(params[key]) === 'undefined' || key === 'page' || key === 'more') {\n                return delete params[key];\n            }\n        });\n    },\n});\n\nexport default ToolsService;\n","define(\"tt4/services/tour\", [\"exports\", \"ember-shepherd/services/tour\"], function (_exports, _tour) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _tour.default;\n    }\n  });\n});\n","import Clock from 'ember-cli-clock/services/clock';\n\nexport default Clock.extend({\n    interval: 7200000, // 2 hours should be enough\n});\n","import PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\nimport ObjectProxy from '@ember/object/proxy';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport AjaxService from 'ember-ajax/services/ajax';\nimport config from 'tt4/config/environment';\nimport { resolve } from 'rsvp';\n\n// const {inject: {service}, get, Object, ObjectProxy, PromiseProxyMixin, isPresent, A} = Ember;\n/* eslint-disable */\nexport default AjaxService.extend({\n    session: service(),\n    flags: service(),\n\n    host: computed('session.currentUser.partnerid', 'flags._client', function () {\n        if (config.environment !== 'development' && get(this, 'flags').test('ttapi_url')) {\n            return get(this, 'flags').test('ttapi_url');\n        }\n        return config.APP.TTAPI;\n    }),\n\n    headers: computed('session.session.authenticated.access_token', {\n        get() {\n            let headers = {};\n\n            let token = get(this, 'session.session.authenticated.access_token');\n            headers['Authorization'] = 'Bearer ' + token;\n\n            headers.clientv = config.APP.version;\n            headers['X-brand'] = config.brand;\n            // if (get(Ember, 'devModeOn') === true) headers['devMode'] = true;\n            return headers;\n        },\n    }),\n\n    _get(route, params) {\n        return this._request('get', route, params);\n    },\n\n    _post(route, params) {\n        return this._request('post', route, params);\n    },\n\n    _delete(route, params) {\n        return this._request('delete', route, params);\n    },\n\n    _request(method, route, params = {}) {\n        const promiseObject = ObjectProxy.extend(PromiseProxyMixin);\n\n        return promiseObject.create({\n            promise: this.request(route, { method: method, data: params }).then((data) =>\n                this._returnData(data),\n            ),\n        });\n    },\n\n    request() {\n        //skip ttapi requests if at2\n        if (config.target === 'at2') {\n            return resolve([]);\n        }\n        return this._super(...arguments);\n    },\n\n    _returnData(data) {\n        return data;\n    },\n});\n","import PromiseProxyMixin from '@ember/object/promise-proxy-mixin';\nimport ObjectProxy from '@ember/object/proxy';\nimport { computed, get } from '@ember/object';\nimport { inject as service } from '@ember/service';\nimport AjaxService from 'ember-ajax/services/ajax';\nimport config from 'tt4/config/environment';\n\n// const {inject: {service}, get, Object, ObjectProxy, PromiseProxyMixin, isPresent, A} = Ember;\n\nexport default AjaxService.extend({\n    host: config.APP.TTAPI2,\n\n    session: service(),\n    headers: computed('session.session.authenticated.access_token', {\n        get() {\n            let headers = {};\n            let token = get(this, 'session.session.authenticated.access_token');\n            headers['Authorization'] = 'Bearer ' + token;\n            return headers;\n        },\n    }),\n\n    _get(route, params) {\n        return this._request('get', route, params);\n    },\n\n    _post(route, params) {\n        return this._request('post', route, params);\n    },\n\n    _delete(route, params) {\n        return this._request('delete', route, params);\n    },\n\n    _request(method, route, params = {}) {\n        const promiseObject = ObjectProxy.extend(PromiseProxyMixin);\n\n        return promiseObject.create({\n            promise: this.request(route, { method: method, data: params }).then((data) =>\n                this._returnData(data),\n            ),\n        });\n    },\n\n    _returnData(data) {\n        return data;\n    },\n});\n","define(\"tt4/services/user-agent\", [\"exports\", \"ember-useragent/services/user-agent\"], function (_exports, _userAgent) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _userAgent.default;\n    }\n  });\n});\n","import Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { get } from '@ember/object';\nimport { isEmpty } from '@ember/utils';\n\nexport default Service.extend({\n    collector: service('collector-service'),\n    ttapi: service(),\n    session: service(),\n    localstorage: service(),\n\n    hasSaldos: false,\n\n    async setUserSettings() {\n        this.hasSaldos = this.localstorage.getItem('saldosOn');\n        let hasSaldos = await this.checkIfUserHasSaldos();\n        this.localstorage.setItem('saldosOn', hasSaldos);\n        this.hasSaldos = hasSaldos;\n    },\n\n    checkIfUserHasSaldos() {\n        if (!this.collector.testNeedsOne('products.saldo')) return false;\n        if (!this.collector.testNeedsOne('worktimegroup')) return true;\n\n        const userWorktimegroup = get(this.session, 'currentUser.worktimegroup.id');\n        if (!userWorktimegroup) return true; //user is not in a worktimegroup so calculation is on\n\n        return this.getSaldoSettings(userWorktimegroup);\n    },\n\n    async getSaldoSettings(userWorktimegroup) {\n        const saldoSettings = await this.ttapi._get('saldo/saldoSettings');\n        if (saldoSettings.skip_worktimegroups && !isEmpty(saldoSettings.skip_worktimegroups)) {\n            //safety net\n            //if user's worktimegroup is not included in the list of worktime groups to be skipped\n            return !saldoSettings.skip_worktimegroups.split(',').includes(userWorktimegroup);\n        } else {\n            return true;\n        }\n    },\n});\n","import Service, { inject as service } from '@ember/service';\nimport { htmlSafe } from '@ember/template';\n\nexport default class VastuuGroup extends Service{\n    @service('collector-service') collector;\n    @service store;\n    @service error;\n    @service intl;\n    @service session;\n    @service ttapi;\n    @service notifications;\n\n    /**\n     * Updates reliable partner statuses and reports in batch for the given employers.\n     * @async\n     * @param {Object[]} employers - Array of employer objects to update\n     * @returns {Promise<Object>} The response data from the API\n     */\n    async updateReliablePartnerStatusesAndReports(employers) {\n        try {\n            const response = await this.ttapi.request('api/reliablepartner/updateStatusesAndReports', {\n                method: 'post',\n                data: { employers }\n            });\n\n            return response;\n        } catch (error) {\n            throw error;\n        }\n    }\n\n    /**\n     * Generates a PDF download link for the reliable partner report of a given base64 string.\n     *\n     * @async\n     * @param {string} base64String - The base64-encoded PDF data\n     * @returns {Promise<string|undefined>} Returns an HTML-safe string containing a download link for a PDF report.\n     */\n    getReliablePartnerPdfLink(base64String) {\n\n        const linkToPdf = `data:application/pdf;base64,${base64String}`;\n        const linkText = this.intl.t('vastuu_group.reliable_partner.download_pdf_report');\n\n        return htmlSafe(\n            '<div>' +\n                '<h4>&nbsp;&nbsp;&nbsp;' +\n                '<a href=' + linkToPdf + ' download=\"report.pdf\">' +\n                linkText +\n                '</a>' +\n                '</h4></div>',\n        );\n    }\n\n    /**\n     * Retrieves reliable partner status and report for single business ID.\n     *\n     * @async\n     * @param {string} businessId - The business ID to get partner status and report for\n     * @returns {Promise<Object|undefined>} The partner data object, or undefined if an error occurred\n     */\n    async getReliablePartnerStatusAndReport(businessId) {\n        try {\n            // Ensure businessId is a string\n            if (typeof businessId !== 'string') {\n                businessId = String(businessId);\n            }\n\n            const response = await this.ttapi.request('api/reliablepartner/getStatusAndReport', {\n                method: 'get',\n                data: { businessId }\n            });\n\n            return response;\n\n        } catch (error) {\n            throw error;\n        }\n    }\n\n    //make request to vastuu group api, with the customer id as a parameter\n    async request(url, data, inviteCreator = null) {\n        const vgCustomerId = await this.getCustomerId(inviteCreator);\n        if (!vgCustomerId) {\n            this.error.notify(this.intl.t('general.vastuu_group.customer_id_not_found'));\n            throw new Error('VG_CUSTOMER_ID_NOT_FOUND');\n        }\n\n        return this.collector.ccapi({\n            url: this.formatUrl(url),\n            data: { ...data, 'customer-identifier': vgCustomerId },\n        })\n\n    }\n\n    // get the vastuu group customer id\n    // if the user is not authenticated, and the invite creator is not null, get the customer id from ttapi with the invite creator as a parameter\n    // if the user is authenticated, get the customer id from the store\n    // peek if the customer id is already in the store, if not, fetch the customer id from the store\n    async getCustomerId(inviteCreator) {\n\n        if (!this.session.isAuthenticated && inviteCreator) {\n            return this.getVgCustomerId(inviteCreator);\n        }\n\n        let vgCustomerId = await this.store.peekAll('vastuugroupsetting');\n        if (!vgCustomerId.length) {\n            vgCustomerId = await this.store.findAll('vastuugroupsetting');\n        }\n\n        return vgCustomerId.length ? vgCustomerId.firstObject.customerIdentifier : null;\n    }\n\n    async getVgCustomerId(creator) {\n        return this.collector.ttapi({\n            url: 'getVgCustomerId',\n            method: 'get',\n            dataType: 'text',\n            data: {\n                creator,\n            }\n        });\n    }\n\n    formatUrl(url) {\n        // remove slash from the beginning of the url if it exists\n        return url.startsWith('/') ? url.substring(1) : url;\n    }\n}\n\n\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/weather.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar WeatherService;\n\nimport Ember from 'ember';\n\nimport config from '../config/environment';\n\nimport $ from 'jquery';\n\nWeatherService = Ember.Service.extend({\n    store: Em.inject.service(),\n    gps: Ember.inject.service(),\n    fetchWeatherPosition: function (proj = false, date = false) {\n        if (date) {\n            this.set('date', date);\n        }\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var id;\n            if (proj) {\n                id = proj.get('id');\n                if (proj.get('location_map')) {\n                    return this.fetchWeatherByProject(proj).then((weather) => {\n                        return resolve(weather);\n                    });\n                } else {\n                    return this.get('store')\n                        .findRecord('project', id, {\n                            reload: true,\n                        })\n                        .then((project) => {\n                            var projectLocation;\n                            projectLocation = project.get('location_map');\n                            if (projectLocation) {\n                                return this.fetchWeatherByProject(project).then((weather) => {\n                                    return resolve(weather);\n                                });\n                            } else {\n                                return this.fetchByGPS().then((weather) => {\n                                    return resolve(weather);\n                                });\n                            }\n                        });\n                }\n            } else {\n                return this.fetchByGPS().then((weather) => {\n                    return resolve(weather);\n                });\n            }\n        });\n    },\n    fetchWeatherByProject: function (project, date) {\n        return new Ember.RSVP.Promise((resolve, reject) => {\n            var projectLocation;\n            projectLocation = JSON.parse(project.get('location_map'));\n            return this.fetchWeather(projectLocation.latitude, projectLocation.longitude, date)\n                .then(function (json) {\n                    return resolve(json);\n                })\n                .catch(function (e) {\n                    return reject(e);\n                });\n        });\n    },\n    fetchWeather: function (lat, lon, date) {\n        var url;\n        date = moment(date).format('YYYYMMDD');\n        url = config.APP.WEATHER_HISTORY_API;\n        //test-data\n        /*\n    weather = {\n        temperature: \"8\"\n        humidity: \"95\"\n        windspeed: \"3\"\n        weather: \"Clouds\"\n        dew_point: 7\n    }\n    #@set 'value', weather\n    new Ember.RSVP.Promise (resolve,reject) =>\n        console.log weather\n        resolve weather\n\n     */\n        if (date === moment().format('YYYYMMDD')) {\n            url = config.APP.WEATHER_API;\n        }\n        return $.getJSON(\n            url + '?lat=' + lat + '&lon=' + lon + '&date=' + date + '&hour=12',\n            (json) => {\n                var dew_point;\n                dew_point = json.temperature - (100 - json.humidity) / 5;\n                json.dew_point = Math.round(dew_point * 100) / 100;\n                return json;\n            },\n        );\n    },\n    fetchByGPS: function (position, date) {\n        return this.fetchWeather(position.latitude, position.longitude, date)\n            .then(function (json) {\n                return json;\n            })\n            .catch(function (e) {\n                return e;\n            });\n    },\n    calcDewPoint: function (temp, humidity) {\n        var dew_point;\n        dew_point = temp - (100 - humidity) / 5;\n        return Math.round(dew_point * 100) / 100;\n    },\n});\n\nexport default WeatherService;\n","/* eslint-disable no-unreachable */\nimport Service from '@ember/service';\nimport { inject as service } from '@ember/service';\nimport { computed, get, set } from '@ember/object';\n\nexport default Service.extend({\n    tour: service(),\n    intl: service(),\n    gui: service(),\n    collector: service('collector-service'),\n    localStorageWrapper: service(),\n    screenLimit: 768,\n\n    isMobile: computed(function () {\n        if (window.innerWidth >= get(this, 'screenLimit')) {\n            return false;\n        } else {\n            return true;\n        }\n    }),\n\n    plusButton: computed(function () {\n        return window.innerWidth >= this.screenLimit ? '#add-menu-desktop' : '#add-menu-button';\n    }),\n\n    async start() {\n        // 🚫 Welcome-tour is currently disabled!! 🚫\n        // Reason: The tour is currently incompatible with the new menu design.\n        // Action needed: Update the tour steps to align with the new menu structure before re-enabling.\n        return;\n        // skip this if mobile\n        const hasRequiredElements =\n            document.querySelector(this.plusButton) !== null &&\n            document.querySelector('.hamburger-link') !== null;\n        if (\n            hasRequiredElements &&\n            !get(this, 'isMobile') &&\n            !this.collector.testNeedsOne('products.mini_entry')\n        ) {\n            await this.createTourSteps();\n            this.tour.start();\n            this.localStorageWrapper.setUserSetting('tourShown', true);\n            return document.addEventListener('keydown', (e) => {\n                if (e.keyCode === 13) {\n                    return this.tour.next();\n                } else if (e.keyCode === 27) {\n                    return this.tour.cancel();\n                }\n            });\n        } else if (get(this, 'isMobile')) {\n            return set(this.gui, 'mobileWelcomeTour', true);\n        }\n    },\n\n    async createTourSteps() {\n        set(this.tour, 'defaultStepOptions', {\n            scrollTo: false,\n            showCancelLink: true,\n        });\n        let steps = [];\n        steps.push({\n            id: 'plus',\n            attachTo: { element: this.plusButton, on: 'bottom' },\n            buttons: [\n                {\n                    classes: 'shepherd-button-secondary',\n                    text: this.intl.t('tour.exit'),\n                    type: 'cancel',\n                },\n                {\n                    classes: 'shepherd-button-primary',\n                    text: this.intl.t('tour.next'),\n                    type: 'next',\n                },\n            ],\n            classes: 'shepherd-plus-button',\n            highlightClass: 'highlight',\n            scrollTo: true,\n            title: this.intl.t('tour.headers.first_time'),\n            text: this.intl.t('tour.steps.plus'),\n        });\n        if (window.innerWidth >= get(this, 'screenLimit')) {\n            steps.push({\n                id: 'left-menu',\n                attachTo: { element: '.sidebar', on: 'right' },\n                buttons: [\n                    {\n                        classes: 'shepherd-button-secondary',\n                        text: this.intl.t('tour.exit'),\n                        type: 'cancel',\n                    },\n                    {\n                        classes: 'shepherd-button-primary',\n                        text: this.intl.t('tour.back'),\n                        type: 'back',\n                    },\n                    {\n                        classes: 'shepherd-button-primary',\n                        text: this.intl.t('tour.next'),\n                        type: 'next',\n                    },\n                ],\n                classes: 'shepherd-side-menu',\n                highlightClass: 'highlight',\n                showCancelLink: true,\n                title: this.intl.t('tour.headers.first_time'),\n                text: this.intl.t('tour.steps.left_menu'),\n            });\n        }\n        steps.push({\n            id: 'hamburger',\n            attachTo: { element: '.hamburger-link span', on: 'right' },\n            buttons: [\n                {\n                    classes: 'shepherd-button-primary',\n                    text: this.intl.t('tour.exit'),\n                    type: 'cancel',\n                },\n                {\n                    classes: 'shepherd-button-secondary',\n                    text: this.intl.t('tour.back'),\n                    type: 'back',\n                },\n            ],\n            classes: 'shepherd-hamburger-menu',\n            copyStyles: false,\n            highlightClass: 'highlight',\n            showCancelLink: true,\n            title: this.intl.t('tour.headers.first_time'),\n            text: this.intl.t('tour.steps.hamburger'),\n        });\n        set(this.tour, 'modal', true);\n        return this.tour.addSteps(steps);\n    },\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/services/wt-service.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar Service;\n\nimport Ember from 'ember';\n\nService = Ember.Service.extend({\n    Collector: Ember.inject.service('collector-service'),\n    store: Ember.inject.service(),\n    dialogs: Ember.inject.service(),\n    intl: Ember.inject.service(),\n    params: {\n        date:\n            moment().subtract(1, 'day').format('YYYY-MM-DD') + '_' + moment().format('YYYY-MM-DD'),\n        endtime: '(empty)',\n        user: 'self',\n        sideload: true,\n    },\n    unlessOpenWt: function (site) {\n        if (this.get('Collector').testNeedsOne('products.timetracker_clockcard')) {\n            return this.get('store')\n                .query('worktime', this.params)\n                .then((data) => {\n                    var openWt;\n                    openWt = data.get('firstObject');\n                    this.set('openWt', openWt);\n                    if (openWt) {\n                        if (site) {\n                            site = Em.Object.create(site);\n                            if (openWt.get('project.id') !== site.get('id')) {\n                                return Em.RSVP.Promise.reject();\n                            }\n                        } else {\n                            return Em.RSVP.Promise.reject();\n                        }\n                    }\n                });\n        } else {\n            return Em.RSVP.Promise.resolve();\n        }\n    },\n    showOpenWtError: function (msg) {\n        var message;\n        message =\n            msg ||\n            this.get('intl').t('mysites.open_worktime_error') +\n                ' ' +\n                this.get('openWt.project.name');\n        return this.get('dialogs').alert(message);\n    },\n});\n\nexport default Service;\n","import Adaptive from 'ember-simple-auth/session-stores/adaptive';\n\nexport default Adaptive.extend();\n","export default Ember.HTMLBars.template({\"id\":\"3JsyBfih\",\"block\":\"{\\\"symbols\\\":[\\\"sublink\\\",\\\"menu\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"id\\\",\\\"sb-site\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"no-print \\\",[28,\\\"if\\\",[[24,[\\\"hide_topbar\\\"]],\\\"hidden\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"session\\\",\\\"isAuthenticated\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[15,\\\"header\\\",[]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flexcontainer\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[2,\\\" mainmenu in left side shown in desktop mode \\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"session\\\",\\\"isAuthenticated\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"not\\\",[[28,\\\"flag\\\",[\\\"top-header-menu\\\"],null]],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"hide_sidebar\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"sidebar \\\",[28,\\\"if\\\",[[24,[\\\"sidebar\\\"]],\\\"collapseSidebar\\\",\\\"openSidebar\\\"],null]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"sidebarWrapper\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"ul\\\",true],[11,\\\"class\\\",[29,[\\\"nav nav-sidebar \\\",[28,\\\"if\\\",[[24,[\\\"sidebar\\\"]],\\\"nav-sidebar-collapsed\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"sidemenuCheck\\\"]],\\\"shorter-list\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"sideMenus\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[23,2,[\\\"hide_leftmenu\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"sidebar\\\"]],\\\"menucontainer-sm-collapsed\\\",\\\"menucontainer-sm-open\\\"],null]]]],[11,\\\"title\\\",[29,[[23,2,[\\\"translated\\\"]]]]],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,2,[\\\"id\\\"]],\\\"-side-menu\\\"],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"params\\\",\\\"classNames\\\"],[\\\"link-to\\\",[23,2,[\\\"link\\\"]],[28,\\\"if\\\",[[23,2,[\\\"active\\\"]],\\\"active-nav menucontainer-sm\\\",\\\"menucontainer-sm\\\"],null]]],{\\\"statements\\\":[[0,\\\"                                        \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[[23,2,[\\\"icon\\\"]],\\\" left-menu menu-icon\\\"]]],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"sidebar\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"menu-text\\\"],[8],[1,[23,2,[\\\"translated\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"sidebar\\\"]],\\\"menu-sm-collapse\\\",\\\"menu-sm-open\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"toggleSidebar\\\"]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move \\\",[28,\\\"if\\\",[[24,[\\\"sidebar\\\"]],\\\"move-CircledRight2\\\",\\\"move-CircledLeft2\\\"],null]]]],[8],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"hide_sidebar\\\"]],\\\"main-view-full\\\"],null],\\\" col-margin-top-nav main-view \\\",[22,\\\"additionalMainViewClasses\\\"],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"sidebar\\\"]],\\\"main-view-collapse\\\",\\\"main-view-open\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"sessionOutDated\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"off-line\\\",null,[[\\\"reload\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"reloadApp\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"subMenus\\\",\\\"length\\\"]],1],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"subMenus\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"params\\\",\\\"class\\\",\\\"title\\\",\\\"tagName\\\"],[[23,1,[\\\"link\\\"]],[28,\\\"if\\\",[[23,1,[\\\"showMobile\\\"]],\\\"submenu-item hidden-md hidden-lg\\\",\\\"submenu-item\\\"],null],[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],\\\"div\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,1,[\\\"id\\\"]],\\\"-submenu\\\"],null]],[8],[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"error-popup\\\",null,[[\\\"error\\\"],[[24,[\\\"last_error\\\"]]]]],false],[0,\\\"\\\\n\\\"],[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"main-outlet\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[1,[22,\\\"wootric-survey\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[28,\\\"outlet\\\",[\\\"modal\\\"],null],false],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"session\\\",\\\"isAuthenticated\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"hamburgerMenu\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"new-mobile-menu\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"hamburger-menu\\\",[],[[\\\"@closeHamburgerMenu\\\"],[[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"hamburgerMenu\\\"]]],null]],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"side-menu\\\",null,[[\\\"faq\\\",\\\"priceList\\\",\\\"menus\\\",\\\"active\\\",\\\"variables\\\",\\\"settings\\\",\\\"close\\\",\\\"logout\\\",\\\"userImage\\\",\\\"changeLanguage\\\",\\\"transition\\\",\\\"showFeedbackModal\\\"],[[24,[\\\"faq\\\"]],[24,[\\\"priceList\\\"]],[24,[\\\"sideMenus\\\"]],[24,[\\\"active_menu\\\"]],[24,[\\\"menu_variables\\\"]],[24,[\\\"menu_settings\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeHamburger\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"invalidateSession\\\"],null],[24,[\\\"userImage\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeLanguage\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"transition\\\"],null],[24,[\\\"showFeedbackModal\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"impersonate\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"!products.admintool\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"message-board-forced\\\",null,[[\\\"store\\\"],[[24,[\\\"store\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[1,[22,\\\"promo-messages\\\"],false],[0,\\\"\\\\n            \\\"],[1,[28,\\\"mess-ages\\\",null,[[\\\"transition\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"transition\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"dev-helper\\\",null,null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"impersonate\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showBillingTypeSelection\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"hideClose\\\"],[[28,\\\"t\\\",[\\\"settings.billing\\\"],null],true]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.trial_expired\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.type_select\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[5,\\\"settings/general-v2/components/company-info/billing-comp\\\",[],[[\\\"@popup\\\",\\\"@close\\\"],[true,[28,\\\"action\\\",[[23,0,[]],\\\"closeBillingModal\\\"],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"modal\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"modaltype\\\"]],\\\"modalrows\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/rows-modal\\\",null,[[\\\"modal\\\",\\\"modalparams\\\"],[[24,[\\\"modal\\\"]],[24,[\\\"modalparams\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"modaltype\\\"]],\\\"showImage\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector/image-modal\\\",null,[[\\\"modal\\\",\\\"modalparams\\\"],[[24,[\\\"modal\\\"]],[24,[\\\"modalparams\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"modaltype\\\"]],\\\"columns\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"column-editor-modal\\\",null,[[\\\"modal\\\",\\\"modalparams\\\"],[[24,[\\\"modal\\\"]],[24,[\\\"modalparams\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"modal\\\"]],\\\"qrcode\\\"],null]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"menu.add.qrcode\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"modal\\\"]]],null],null],null]]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"qrcode-reader\\\",null,[[\\\"onSuccess\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"qrcoderead\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"modaltype\\\"]],\\\"timecard\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@header\\\",\\\"@close\\\"],[[28,\\\"t\\\",[\\\"menu.clockcard\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"modal\\\"]]],null],null],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"modal-add-form-worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[5,\\\"components/tab-component\\\",[],[[\\\"@form\\\"],[\\\"worktime\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[5,\\\"components/dash-board/widgets/timecard\\\",[],[[\\\"@saveAction\\\",\\\"@additionalClass\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"refreshReport\\\"],null],\\\"modal-timecard\\\"]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[24,[\\\"modaltype\\\"]],\\\"presence\\\"],null],[28,\\\"needs\\\",[\\\"userlevel=1\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@header\\\",\\\"@close\\\"],[[28,\\\"t\\\",[\\\"menu.clockcard\\\"],null],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"modal\\\"]]],null],null],null]]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"modal-add-form-worktime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[5,\\\"components/tab-component\\\",[],[[\\\"@form\\\"],[\\\"presence\\\"]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[5,\\\"components/presence-clockcard\\\",[],[[\\\"@additionalClass\\\",\\\"@close\\\"],[\\\"modal-timecard\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"modal\\\"]]],null],null],null]]]],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"modaltype\\\"]],\\\"billing_ok\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"nice-modal\\\",[],[[\\\"@close\\\",\\\"@header\\\"],[[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"modal\\\"]]],null],null],null],[28,\\\"t\\\",[\\\"billing_info.saved\\\"],null]]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality\\\"],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.saved_ok\\\"],null],false],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"modaltype\\\"]],\\\"workpermit\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[5,\\\"components/workpermit-modal\\\",[],[[\\\"@modal\\\",\\\"@closeModal\\\"],[[22,\\\"modal\\\"],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"modal\\\"]]],null],null],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"useFormAdd\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"form-modal\\\",null,[[\\\"modal\\\",\\\"showSaved\\\"],[[24,[\\\"modal\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"collector/add-modal\\\",null,[[\\\"modal\\\"],[[24,[\\\"modal\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[1,[28,\\\"notification-container\\\",null,[[\\\"position\\\",\\\"zindex\\\"],[\\\"bottom-left\\\",\\\"9999\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"gui\\\",\\\"showStickyNote\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"c-notification__container c-notification__container--bottom-left\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"c-notification c-notification--success c-notification--in\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"c-notification__icon\\\"],[8],[0,\\\"\\\\n              \\\"],[7,\\\"span\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-CheckedCheckbox\\\"],[8],[9],[0,\\\"\\\\n              \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"c-notification__content\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"gui-notification-content\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item-progress\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[24,[\\\"gui\\\",\\\"stickyValue\\\"]],false],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"gui\\\",\\\"rawStickyValue\\\"]],100],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[11,\\\"aria-valuenow\\\",[29,[[24,[\\\"gui\\\",\\\"rawStickyValue\\\"]]]]],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[11,\\\"style\\\",[28,\\\"concat\\\",[\\\"width: \\\",[24,[\\\"gui\\\",\\\"rawStickyValue\\\"]],\\\"%;\\\"],null]],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"sr-only\\\"],[8],[1,[24,[\\\"gui\\\",\\\"rawStickyValue\\\"]],false],[0,\\\"% \\\"],[1,[28,\\\"t\\\",[\\\"general.complete\\\"],null],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-item\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"gui\\\",\\\"rawStickyValue\\\"]],100],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-warning\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"guiAction\\\",\\\"abort\\\"]],[8],[1,[24,[\\\"gui\\\",\\\"buttonText\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-warning\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"guiAction\\\",\\\"close\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.close\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"c-notification__close\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"notification.dismiss\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"guiAction\\\",\\\"close\\\"]],[8],[0,\\\"\\\\n                  \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"move move-Cross\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[1,[22,\\\"file-queue-notification\\\"],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"gui\\\",\\\"overlay_loader\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overlay_loader\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"loader-icon\\\",null,[[\\\"class\\\"],[\\\"overlay_loader_icon\\\"]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"gui\\\",\\\"mobileWelcomeTour\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"components/mobile-welcome-tour\\\",null,[[\\\"close\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"removeTourModal\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showFeedbackModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"general.send_feedback\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"removeFeedbackModal\\\"],null]]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"emailSending\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"email_message_sent\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"thumbs text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"up\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-GoodQuality big-thumb active\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.feedback_sent\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"error_view\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[8],[1,[22,\\\"error\\\"],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"header\\\"],[8],[1,[28,\\\"t\\\",[\\\"feedback.modal.sender\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"text\\\",\\\"form-control input-lg\\\",[24,[\\\"session\\\",\\\"currentUser\\\",\\\"email\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"header\\\"],[8],[1,[28,\\\"t\\\",[\\\"feedback.modal.text\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"class\\\",\\\"value\\\"],[\\\"6\\\",\\\"form-control input-lg\\\",[24,[\\\"feedback_text\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"sendFeedback\\\"]],[8],[1,[28,\\\"t\\\",[\\\"saved.modal.send_email\\\"],null],false],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"isSeasonTheme\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"wizard\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"wizard-builder\\\",null,[[\\\"name\\\",\\\"close\\\"],[[24,[\\\"wizard\\\"]],[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"wizard\\\"]]],null],null],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showAppWarning\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"app-version-dialog\\\",[],[[\\\"@version\\\",\\\"@closeModal\\\"],[[28,\\\"await\\\",[[23,0,[\\\"appVersion\\\"]]],null],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showAppWarning\\\"]]],null],false],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/templates/application.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"wbzFlaLT\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"password_changed\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-4 col-sm-6 col-xs-12 col-sm-offset-3 col-md-offset-4\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-success\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"changepassword.password_changed\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"changeusername.returning_to_edit\\\"],null],false],[0,\\\" \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"general.returning\\\"],null]],[8],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-3\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"old-password-change\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"nice-modal\\\",null,[[\\\"header\\\",\\\"hideClose\\\",\\\"close\\\"],[[28,\\\"t\\\",[\\\"general.change_password\\\"],null],[24,[\\\"hideCross\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null]]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"text-left\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.changepassword\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"form\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"changePassword\\\"],[[\\\"on\\\"],[\\\"submit\\\"]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.username\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[24,[\\\"session\\\",\\\"currentUser\\\",\\\"username\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"securedPassword\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.currentpassword\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\"],[\\\"password\\\",\\\"form-control add-fields\\\",\\\"currentpassword\\\",[24,[\\\"currentPassword\\\"]]]]],false],[0,\\\"\\\\n                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.newpassword\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\"],[\\\"password\\\",\\\"form-control add-fields\\\",\\\"password\\\",[24,[\\\"password\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.newpasswordagain\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\"],[\\\"password\\\",\\\"form-control add-fields\\\",\\\"passwordagain\\\",[24,[\\\"passwordAgain\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showTitle\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"changepassword.set_info_for_password_retrieval\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showEmail\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"user.email\\\"],[[\\\"model\\\",\\\"errors\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],[24,[\\\"emailErrors\\\"]],\\\"change\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showPhone\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"user.phone\\\"],[[\\\"model\\\",\\\"errors\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],[24,[\\\"phoneErrors\\\"]],\\\"change\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"validation_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"p\\\",true],[8],[1,[22,\\\"validation_error\\\"],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changePassword\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.changepassword\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-4 col-sm-6 col-xs-12 col-sm-offset-3 col-md-offset-4\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"form\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"changePassword\\\"],[[\\\"on\\\"],[\\\"submit\\\"]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.username\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[24,[\\\"session\\\",\\\"currentUser\\\",\\\"username\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"securedPassword\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.currentpassword\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\"],[\\\"password\\\",\\\"form-control add-fields\\\",\\\"currentpassword\\\",[24,[\\\"currentPassword\\\"]]]]],false],[0,\\\"\\\\n                        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.newpassword\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\"],[\\\"password\\\",\\\"form-control add-fields\\\",\\\"password\\\",[24,[\\\"password\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.newpasswordagain\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"value\\\"],[\\\"password\\\",\\\"form-control add-fields\\\",\\\"passwordagain\\\",[24,[\\\"passwordAgain\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showTitle\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"changepassword.set_info_for_password_retrieval\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showEmail\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"user.email\\\"],[[\\\"model\\\",\\\"errors\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],[24,[\\\"emailErrors\\\"]],\\\"change\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showPhone\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[28,\\\"collector/field-container\\\",[\\\"user.phone\\\"],[[\\\"model\\\",\\\"errors\\\",\\\"change\\\"],[[24,[\\\"model\\\"]],[24,[\\\"phoneErrors\\\"]],\\\"change\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"validation_error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"p\\\",true],[8],[1,[22,\\\"validation_error\\\"],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changePassword\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-3\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/changepassword.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Vm+Ny3/Z\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-group address-info\\\"],[10,\\\"id\\\",\\\"accordion\\\"],[10,\\\"role\\\",\\\"tablist\\\"],[10,\\\"aria-multiselectable\\\",\\\"false\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"company_info.street\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"street\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"data\\\",\\\"street\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"street\\\",[24,[\\\"data\\\",\\\"street\\\"]]],null]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"company_info.zip\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"zip\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"data\\\",\\\"zip\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"zip\\\",[24,[\\\"data\\\",\\\"zip\\\"]]],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"company_info.town\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"town\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"data\\\",\\\"town\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"town\\\",[24,[\\\"data\\\",\\\"town\\\"]]],null]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"company_info.country\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"country\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.error.mandatory\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"change\\\",\\\"prompt\\\",\\\"disabled\\\"],[[24,[\\\"countryLists\\\",\\\"shortList\\\"]],\\\"form-control add-fields\\\",[24,[\\\"data\\\",\\\"country\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"country\\\",[24,[\\\"data\\\",\\\"country\\\"]]],null],[28,\\\"t\\\",[\\\"general.choose\\\"],null],true]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"company_info.specifier\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"data\\\",\\\"specifier\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"popup\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/address-info.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"/9defyq/\",\"block\":\"{\\\"symbols\\\":[\\\"page\\\",\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"hideExports\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 text-right\\\"],[8],[0,\\\"\\\\n            \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[6,[23,2,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                    \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_csv\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_csv\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"data\\\",\\\"translationPrefix\\\",\\\"rowActions\\\",\\\"bubbleActions\\\",\\\"checkable\\\",\\\"checkedActions\\\",\\\"noRowsText\\\"],[[24,[\\\"columns\\\"]],[24,[\\\"data\\\"]],[24,[\\\"translationPrefix\\\"]],[24,[\\\"rowActions\\\"]],\\\"catchActions\\\",[24,[\\\"checkable\\\"]],[24,[\\\"checkedActions\\\"]],[24,[\\\"noRowsText\\\"]]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"noPagination\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"nav\\\",true],[10,\\\"class\\\",\\\"pagination-lg pagination-centered\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showPagination\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"pagination\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasPreviousPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"hasPreviousPage\\\"]],\\\"\\\",\\\"disabled\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"previousPage\\\"]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"a\\\",true],[10,\\\"aria-label\\\",\\\"Previous\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[0,\\\"«\\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"pages\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[]],[24,[\\\"currentPage\\\"]]],null],\\\"active\\\"],null]]]],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changePage\\\",[23,1,[]]]],[8],[1,[23,1,[]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[4,\\\"if\\\",[[24,[\\\"hasNextPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"hasNextPage\\\"]],\\\"\\\",\\\"disabled\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"nextPage\\\"]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"a\\\",true],[10,\\\"aria-label\\\",\\\"Next\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[0,\\\"»\\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/api-report.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"5YWVRGys\",\"block\":\"{\\\"symbols\\\":[\\\"val\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"array\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\"],[\\\"text\\\",[23,1,[\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"clasS\\\",\\\"input-group-btn\\\"],[8],[0,\\\"\\\\n           \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,1,[]]]],[8],[1,[28,\\\"standard-icon\\\",[\\\"remove\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-4 col-lg-2\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add\\\"]],[8],[1,[28,\\\"t\\\",[[24,[\\\"addText\\\"]]],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/array-input.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"xLET3KsE\",\"block\":\"{\\\"symbols\\\":[\\\"obj\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"placeholderObjects\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"disabled\\\"],[\\\"text\\\",[23,1,[\\\"value\\\"]],\\\"add-fields\\\",[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"input-group-btn\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,1,[]]]],[8],[1,[28,\\\"standard-icon\\\",[\\\"remove\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add\\\"]],[8],[1,[22,\\\"addText\\\"],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[22,\\\"saveText\\\"],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/array-input2.hbs\"}});","define(\"tt4/templates/components/basic-dropdown-content\", [\"exports\", \"ember-basic-dropdown/templates/components/basic-dropdown-content\"], function (_exports, _basicDropdownContent) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _basicDropdownContent.default;\n    }\n  });\n});\n","define(\"tt4/templates/components/basic-dropdown-optional-tag\", [\"exports\", \"ember-basic-dropdown/templates/components/basic-dropdown-optional-tag\"], function (_exports, _basicDropdownOptionalTag) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _basicDropdownOptionalTag.default;\n    }\n  });\n});\n","define(\"tt4/templates/components/basic-dropdown-trigger\", [\"exports\", \"ember-basic-dropdown/templates/components/basic-dropdown-trigger\"], function (_exports, _basicDropdownTrigger) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _basicDropdownTrigger.default;\n    }\n  });\n});\n","define(\"tt4/templates/components/basic-dropdown\", [\"exports\", \"ember-basic-dropdown/templates/components/basic-dropdown\"], function (_exports, _basicDropdown) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _basicDropdown.default;\n    }\n  });\n});\n","export default Ember.HTMLBars.template({\"id\":\"DPMn2J6w\",\"block\":\"{\\\"symbols\\\":[\\\"error\\\",\\\"field\\\",\\\"Acc\\\",\\\"aitem\\\",\\\"aitem\\\",\\\"aitem\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"popup\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.billing_info_header\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[5,\\\"bs-accordion\\\",[],[[\\\"@selected\\\",\\\"@onChange\\\"],[[28,\\\"readonly\\\",[[23,0,[\\\"billingtype\\\"]]],null],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"billingtype\\\"]]],null]],null]]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"item\\\"]],[],[[\\\"@value\\\"],[\\\"email\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,6,[\\\"title\\\"]],[],[[\\\"@class\\\"],[\\\"billing-info\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"billing_info.email\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"icon-big pull-right \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"billingtype\\\"]],\\\"email\\\"],null],\\\"move move-Checkmark\\\"],null]]]],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n            \\\"],[6,[23,6,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"blockquote\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.email_desc\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.email\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"invoicingAddress\\\",\\\"email\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.invoice_ref\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"invoicingAddress\\\",\\\"invoice_ref\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[6]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showEinvoiceOption\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[6,[23,3,[\\\"item\\\"]],[],[[\\\"@value\\\"],[\\\"eInvoice\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[6,[23,5,[\\\"title\\\"]],[],[[\\\"@class\\\"],[\\\"billing-info\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"billing_info.e_invoice\\\"],null],false],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"icon-big pull-right \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"billingtype\\\"]],\\\"eInvoice\\\"],null],\\\"move move-Checkmark\\\"],null]]]],[8],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n                \\\"],[6,[23,5,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"blockquote\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.e_invoice_desc\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.e_invoice_opreator\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"prompt\\\"],[[24,[\\\"eInvoicingOperators\\\"]],\\\"form-control\\\",[24,[\\\"invoicingAddress\\\",\\\"e_invoice_operator\\\"]],[28,\\\"t\\\",[\\\"general.choose\\\"],null]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.e_invoice_address\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"invoicingAddress\\\",\\\"e_invoice_address\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.invoice_ref\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"invoicingAddress\\\",\\\"invoice_ref\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[6,[23,3,[\\\"item\\\"]],[],[[\\\"@value\\\"],[\\\"paper\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,4,[\\\"title\\\"]],[],[[\\\"@class\\\"],[\\\"billing-info\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"panel-title\\\"],[8],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"t\\\",[\\\"billing_info.paper\\\"],null],false],[0,\\\"\\\\n                    \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"icon-big pull-right \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"billingtype\\\"]],\\\"paper\\\"],null],\\\"move move-Checkmark\\\"],null]]]],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n            \\\"],[6,[23,4,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"blockquote\\\",true],[8],[1,[28,\\\"t\\\",[\\\"billing_info.paper_desc\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.use_company_address\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"checked\\\",\\\"click\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"checkbox\\\",\\\"form-control add-fields\\\",[24,[\\\"invoicingAddress\\\",\\\"use_company_address\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"copy_fields\\\"],[[\\\"value\\\"],[\\\"target.checked\\\"]]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.street\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"invoicingAddress\\\",\\\"street\\\"]],[28,\\\"if\\\",[[24,[\\\"invoicingAddress\\\",\\\"use_company_address\\\"]],true,false],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.zip\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"invoicingAddress\\\",\\\"zip\\\"]],[28,\\\"if\\\",[[24,[\\\"invoicingAddress\\\",\\\"use_company_address\\\"]],true,false],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.town\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"invoicingAddress\\\",\\\"town\\\"]],[28,\\\"if\\\",[[24,[\\\"invoicingAddress\\\",\\\"use_company_address\\\"]],true,false],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.e_invoice_country\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\",\\\"prompt\\\",\\\"disabled\\\"],[[24,[\\\"countryLists\\\",\\\"shortList\\\"]],\\\"form-control\\\",[24,[\\\"invoicingAddress\\\",\\\"country\\\"]],[28,\\\"t\\\",[\\\"general.choose\\\"],null],[28,\\\"if\\\",[[24,[\\\"invoicingAddress\\\",\\\"use_company_address\\\"]],true,false],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.invoice_ref\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"invoicingAddress\\\",\\\"invoice_ref\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[1,[28,\\\"t\\\",[\\\"billing_info.paper_notice\\\"],null],false],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n        \\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"popup\\\"]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"company_profile.address_info_header\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"address-info\\\",null,[[\\\"data\\\",\\\"billingData\\\",\\\"billingtype\\\",\\\"popup\\\",\\\"errors\\\"],[[24,[\\\"customerData\\\"]],[24,[\\\"invoicingAddress\\\"]],[24,[\\\"billingtype\\\"]],true,[24,[\\\"errors\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"-each-in\\\",[[24,[\\\"errors\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[]]],null,{\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"settings.companyprofile.\\\",[23,2,[]],\\\"_missing\\\"],null]],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2]},null],[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"edit\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/billing-info.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Hrgpt6r6\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isHtml\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[22,\\\"html\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"isChart\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"api_url\\\",\\\"type\\\"],[[24,[\\\"chartData\\\"]],[24,[\\\"url\\\"]],\\\"table\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content report-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"loading\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-loading-overlay\\\"],[8],[1,[22,\\\"loader-icon\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[1,[28,\\\"table-comp\\\",null,[[\\\"columns\\\",\\\"translated_columns\\\",\\\"data\\\"],[[24,[\\\"columns\\\"]],[24,[\\\"columns\\\"]],[24,[\\\"data\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"pagi-nate\\\",null,[[\\\"rowsPerPage\\\",\\\"currentPage\\\",\\\"pageCount\\\"],[[24,[\\\"rowsPerPage\\\"]],[24,[\\\"currentPage\\\"]],[24,[\\\"pageCount\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/cc-report.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"LBElx5UO\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"export\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"showExport\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"pull-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[4,\\\"if\\\",[[28,\\\"in-array\\\",[\\\"pdf\\\",[24,[\\\"showExport\\\"]]],null]],null,{\\\"statements\\\":[[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"save_pdf\\\"]],[8],[1,[28,\\\"t\\\",[\\\"chart.save_as_pdf\\\"],null],false],[9]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"style\\\",\\\"width:100%\\\"],[10,\\\"class\\\",\\\"chart\\\"],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/chart.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"dR/501w+\",\"block\":\"{\\\"symbols\\\":[\\\"opt\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"ajax-select \\\",[28,\\\"unless\\\",[[24,[\\\"showOptions\\\"]],[24,[\\\"then\\\"]],\\\"active\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"visible-xs-block\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"placeholder\\\",\\\"class\\\",\\\"focus-in\\\",\\\"value\\\"],[\\\"text\\\",[28,\\\"if\\\",[[24,[\\\"placeholder\\\"]],[28,\\\"t\\\",[[24,[\\\"placeholder\\\"]]],null],[28,\\\"t\\\",[\\\"select.search\\\"],null]],null],[24,[\\\"classes\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"focusIn\\\"],null],[24,[\\\"value\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[4,\\\"if\\\",[[24,[\\\"showOptions\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"input-group-addon\\\"],[12,\\\"id\\\",\\\"basic-addon1\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"focusOut\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cross\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"hidden-xs\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"placeholder\\\",\\\"class\\\",\\\"focus-in\\\",\\\"focus-out\\\",\\\"value\\\"],[\\\"text\\\",[28,\\\"if\\\",[[24,[\\\"placeholder\\\"]],[28,\\\"t\\\",[[24,[\\\"placeholder\\\"]]],null],[28,\\\"t\\\",[\\\"select.search\\\"],null]],null],[24,[\\\"classes\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"focusIn\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"focusOut\\\"],null],[24,[\\\"value\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showOptions\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"_options\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"options\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_options\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",[29,[[23,1,[\\\"class\\\"]],\\\" \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"if\\\",[[23,1,[\\\"id\\\"]],[23,1,[\\\"name\\\"]],[23,1,[]]],null],[24,[\\\"value\\\"]]],null],\\\"selected\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"select\\\",[23,1,[]]]],[3,\\\"action\\\",[[23,0,[]],\\\"touched\\\"],[[\\\"on\\\"],[\\\"mouseDown\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"id\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[1,[23,1,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"footer\\\"],[8],[1,[28,\\\"t\\\",[\\\"select.empty\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/drop-down-search.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"hrLGPjRA\",\"block\":\"{\\\"symbols\\\":[\\\"group\\\",\\\"opt\\\",\\\"opt\\\",\\\"@anchorName\\\"],\\\"statements\\\":[[7,\\\"select\\\",true],[11,\\\"name\\\",[28,\\\"or\\\",[[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"name\\\"]]],null]],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"select\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[11,\\\"class\\\",[29,[[22,\\\"classes\\\"]]]],[11,\\\"disabled\\\",[22,\\\"disabled\\\"]],[11,\\\"data-anchor\\\",[23,4,[]]],[8],[0,\\\"\\\\n    \\\"],[4,\\\"if\\\",[[24,[\\\"prompt\\\"]]],null,{\\\"statements\\\":[[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[11,\\\"selected\\\",[28,\\\"unless\\\",[[24,[\\\"value\\\"]],true],null]],[8],[1,[22,\\\"prompt\\\"],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"optionGroups\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,3,[\\\"id\\\"]]],[11,\\\"selected\\\",[28,\\\"is-almost-equal\\\",[[24,[\\\"value\\\"]],[23,3,[\\\"id\\\"]],true],null]],[8],[1,[23,3,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"optionGroups\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"optgroup\\\",true],[11,\\\"label\\\",[23,1,[\\\"label\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,1,[\\\"options\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,2,[\\\"id\\\"]]],[11,\\\"selected\\\",[28,\\\"is-almost-equal\\\",[[24,[\\\"value\\\"]],[23,2,[\\\"id\\\"]],true],null]],[8],[1,[23,2,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[4,\\\"if\\\",[[24,[\\\"useAsFilter\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showEmptySelection\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"(empty)\\\"],[11,\\\"selected\\\",[28,\\\"eq\\\",[[24,[\\\"value\\\"]],\\\"(empty)\\\"],null]],[8],[1,[28,\\\"t\\\",[\\\"general.show_empty\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"showingRemoved\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"hide_removed\\\"],[10,\\\"class\\\",\\\"action-item\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.hide_removed\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"show_removed\\\"],[10,\\\"class\\\",\\\"action-item\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"general.show_removed\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/drop-down.hbs\"}});","define(\"tt4/templates/components/ember-popper-targeting-parent\", [\"exports\", \"ember-popper/templates/components/ember-popper-targeting-parent\"], function (_exports, _emberPopperTargetingParent) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPopperTargetingParent.default;\n    }\n  });\n});\n","define(\"tt4/templates/components/ember-popper\", [\"exports\", \"ember-popper/templates/components/ember-popper\"], function (_exports, _emberPopper) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _emberPopper.default;\n    }\n  });\n});\n","export default Ember.HTMLBars.template({\"id\":\"4rGKz3h9\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"error_msg alert alert-danger alert-dismissable\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"close\\\"],[10,\\\"data-dismiss\\\",\\\"alert\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[10,\\\"type\\\",\\\"button\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.error_prefix\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-thumbs-down\\\"],[8],[9],[9],[0,\\\"\\\\n    \\\"],[1,[22,\\\"error_msg\\\"],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/error-popup.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"uJa/txSO\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"select\\\",true],[11,\\\"class\\\",[29,[[22,\\\"class\\\"]]]],[11,\\\"name\\\",[22,\\\"name\\\"]],[11,\\\"disabled\\\",[22,\\\"disabled\\\"]],[8],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/fast-select.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"PHBDTxA1\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[14,1],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/fileupload-preview.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"ekcciPmA\",\"block\":\"{\\\"symbols\\\":[\\\"message\\\",\\\"@hasError\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"t\\\",[\\\"form.has_error\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"errorMessages\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"form.has_error.settings\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"ul\\\",true],[10,\\\"clas\\\",\\\"list-unstyled\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"errorMessages\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[1,[23,1,[]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/form-error-message.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Pp2xDCgl\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"formatted\\\"],\\\"statements\\\":[[7,\\\"td\\\",true],[11,\\\"class\\\",[29,[\\\"row-status-cell \\\",[28,\\\"if\\\",[[24,[\\\"modified_class\\\"]],[24,[\\\"modified_class\\\"]]],null]]]],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"report.row_modified.tooltip\\\"],[[\\\"date\\\"],[[28,\\\"moment-format\\\",[[24,[\\\"model\\\",\\\"row_info\\\",\\\"modified\\\"]],[24,[\\\"modified_tooltip_format\\\"]]],null]]]]],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"settings\\\",\\\"hideCheckbox\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"td\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"report-row-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"check\\\"]],[8],[1,[28,\\\"standard-icon\\\",[[24,[\\\"checkedClass\\\"]]],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"form\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"td\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"showLock\\\"]],\\\"locked\\\"],null],\\\" \\\",[28,\\\"if\\\",[[23,1,[\\\"clickable\\\"]],\\\"clickable\\\"],null]]]],[11,\\\"onClick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"clicked\\\",[23,1,[]]],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"get\\\",[[28,\\\"get\\\",[[24,[\\\"model\\\"]],[23,1,[\\\"ext\\\"]]],null],\\\"isPending\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                ...\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"let\\\",[[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\",\\\"formatter\\\",\\\"fuckTheseImageModals\\\"],[[23,1,[]],[24,[\\\"form\\\"]],[24,[\\\"model\\\"]],[24,[\\\"formatter\\\"]],[28,\\\"is-equal\\\",[[23,1,[\\\"type\\\"]],\\\"hdfile\\\"],null]]]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[23,2,[\\\"isImage\\\"]],[23,2,[\\\"src\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[[23,2,[\\\"classes\\\"]]]]],[12,\\\"style\\\",[29,[\\\"background-image: url(\\\",[23,2,[\\\"src\\\"]],\\\")\\\"]]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"previewFile\\\"]]],null],[28,\\\"or\\\",[[23,2,[\\\"fullSrc\\\"]],[23,2,[\\\"src\\\"]]],null]],null]]],[3,\\\"on\\\",[\\\"click\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showModal\\\"]]],null]],null]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[1,[23,2,[]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null]],\\\"parameters\\\":[]}],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"td\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"showLock\\\"]],\\\"locked\\\"],null]]]],[8],[1,[28,\\\"collector-field\\\",null,[[\\\"field\\\",\\\"model\\\",\\\"errors\\\",\\\"settings\\\",\\\"formatter\\\"],[[23,1,[]],[24,[\\\"model\\\"]],[24,[\\\"errors\\\"]],[24,[\\\"fieldSettings\\\"]],[24,[\\\"formatter\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null],[4,\\\"if\\\",[[24,[\\\"showLock\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"show-row-lock\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Lock\\\"],[8],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[28,\\\"or\\\",[[24,[\\\"settings\\\",\\\"hideActions\\\"]],[24,[\\\"groupBy\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"report-row-icon \\\",[28,\\\"if\\\",[[24,[\\\"isChecked\\\"]],\\\"\\\",\\\"invisible\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"canRestore\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"restore\\\",[24,[\\\"model\\\"]]],[[\\\"bubbles\\\"],[false]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-ReuseFilled\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"report.restore_rows\\\"],null]],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"canShow\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\",\\\"models\\\"],[\\\"show\\\",[28,\\\"array\\\",[[24,[\\\"form\\\"]],[24,[\\\"model\\\",\\\"id\\\"]]],null]]],{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-View\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"history.action.show_data\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"clickRowAction\\\",\\\"Show\\\"]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"canEdit\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"editRoute\\\",\\\"route\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"editRoute\\\",\\\"dynamic\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[4,\\\"link-to\\\",null,[[\\\"params\\\"],[[24,[\\\"dynamicEditParams\\\"]]]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"general.edit\\\"],null]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\",\\\"models\\\"],[[24,[\\\"editRoute\\\",\\\"route\\\"]],[28,\\\"array\\\",[[24,[\\\"editRoute\\\",\\\"params\\\"]],[24,[\\\"model\\\",\\\"id\\\"]]],null]]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"general.edit\\\"],null]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"editRoute\\\",\\\"modal\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"query\\\"],[[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[24,[\\\"editModal\\\"]]]]]]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"general.edit\\\"],null]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\",\\\"model\\\"],[[24,[\\\"editRoute\\\"]],[24,[\\\"model\\\"]]]],{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Pencil\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"general.edit\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"clickRowAction\\\",\\\"Edit\\\"]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"settings\\\",\\\"hideHistory\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"historyRoute\\\",\\\"route\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\",\\\"models\\\"],[[24,[\\\"historyRoute\\\",\\\"route\\\"]],[28,\\\"array\\\",[[24,[\\\"historyRoute\\\",\\\"params\\\"]],[24,[\\\"model\\\",\\\"id\\\"]]],null]]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Search\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"report.customer.history\\\"],null]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"query\\\"],[[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[24,[\\\"historyModal\\\"]]]]]]],{\\\"statements\\\":[[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Search\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.customer.history\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"clickRowAction\\\",\\\"History\\\"]],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[4,\\\"if\\\",[[24,[\\\"canRemove\\\"]]],null,{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"delete\\\",[24,[\\\"model\\\"]]],[[\\\"bubbles\\\"],[false]]],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Delete\\\"],[12,\\\"title\\\",[28,\\\"t\\\",[\\\"report.delete_rows\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"clickRowAction\\\",\\\"Delete\\\"]],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLock\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openlock\\\",[24,[\\\"model\\\"]]],[[\\\"bubbles\\\"],[false]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Lock\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"general.open_lock\\\"],null]],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"showModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[5,\\\"addon/modal\\\",[],[[\\\"@close\\\",\\\"@outsideClose\\\",\\\"@classes\\\"],[[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"showModal\\\"]]],null],false],null],true,\\\"\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"popup-image-size-limiter\\\"],[11,\\\"src\\\",[23,0,[\\\"previewFile\\\"]]],[8],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/general-report-row.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"/f0hexH5\",\"block\":\"{\\\"symbols\\\":[\\\"project\\\",\\\"index\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"custom_projects\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"general.loading\\\"],null]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"select\\\",true],[11,\\\"disabled\\\",[22,\\\"projectDisabled\\\"]],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],\\\"changeValue\\\"],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[11,\\\"class\\\",[22,\\\"classes\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"custom_projects\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"option\\\",true],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[24,[\\\"model\\\",\\\"project\\\",\\\"id\\\"]],[23,1,[\\\"id\\\"]]],null]],[11,\\\"value\\\",[29,[[23,1,[\\\"id\\\"]]]]],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"force_location\\\"]],true],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,2,[]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"option\\\",true],[10,\\\"disabled\\\",\\\"\\\"],[8],[0,\\\"--------------------\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[1,2]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/gps-forced-dropdown.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"XAGGOLw1\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"map-canvas\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/gps-location-map.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"0iwMRqPk\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"lockedPosition\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showDistanceError\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h5\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"standard-icon\\\",[\\\"warning\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"gps.location.distance_too_big\\\"],null],false],[9],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"distance\\\"]]],null,{\\\"statements\\\":[[0,\\\"(\\\"],[1,[22,\\\"distance\\\"],false],[0,\\\")\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[\\\"gps.location.found\\\"],null],false],[0,\\\" \\\"],[4,\\\"if\\\",[[24,[\\\"distance\\\",\\\"value\\\"]]],null,{\\\"statements\\\":[[0,\\\"(\\\"],[1,[28,\\\"t\\\",[\\\"gps.location.distance\\\"],null],false],[0,\\\" \\\"],[1,[24,[\\\"distance\\\",\\\"value\\\"]],false],[0,\\\")\\\"]],\\\"parameters\\\":[]},null],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-success\\\"],[8],[1,[28,\\\"standard-icon\\\",[\\\"ok\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"notSupported\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"gps.not_supported\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"errorMsg\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h5\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"standard-icon\\\",[\\\"warning\\\"],null],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[[24,[\\\"errorMsg\\\"]]],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/gps-location.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Km2hUNCo\",\"block\":\"{\\\"symbols\\\":[\\\"modal\\\"],\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_help\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-question-sign\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"general.show_additional_help\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[5,\\\"bs-modal\\\",[],[[\\\"@open\\\",\\\"@onHidden\\\"],[[23,0,[\\\"show_dialog\\\"]],[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"show_dialog\\\"]]],null],false],null]]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"body\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[1,[22,\\\"content\\\"],false],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n    \\\"],[6,[23,1,[\\\"footer\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[5,\\\"bs-button\\\",[],[[\\\"@type\\\",\\\"@onClick\\\"],[\\\"primary\\\",[28,\\\"fn\\\",[[28,\\\"mut\\\",[[23,0,[\\\"show_dialog\\\"]]],null],false],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"modal.ok\\\"],null],false]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/help-dialog.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"rv/eyQi/\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"style\\\",\\\"width:100%;text-align: center\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"inner-loader \\\",[28,\\\"if\\\",[[24,[\\\"slim\\\"]],\\\"slim\\\"],null]]]],[8],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/loader-icon.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"B/ruwsiS\",\"block\":\"{\\\"symbols\\\":[\\\"error\\\",\\\"field\\\",\\\"recalculation\\\",\\\"field\\\"],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"inModal\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"massedit.header\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"executing\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"massedit.executing\\\"],[[\\\"rowCount\\\"],[[24,[\\\"rowCount\\\"]]]]],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"progress-bar\\\"],[10,\\\"role\\\",\\\"progressbar\\\"],[10,\\\"aria-valuenow\\\",\\\"20\\\"],[10,\\\"aria-valuemin\\\",\\\"0\\\"],[10,\\\"aria-valuemax\\\",\\\"100\\\"],[11,\\\"style\\\",[22,\\\"progressStyle\\\"]],[8],[0,\\\"\\\\n            \\\"],[1,[22,\\\"progress\\\"],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"alldone\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"back\\\"]],[8],[1,[28,\\\"t\\\",[\\\"massedit.back\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"massedit.cancel\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-12 col-sm-8 col-md-8 col-xs-8 form-group\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"collector/field-container\\\",[[23,4,[]]],[[\\\"change\\\"],[\\\"valueChanged\\\"]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[23,4,[\\\"features\\\",\\\"dontshowCheckbox\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"in-array\\\",[[23,4,[\\\"type\\\"]],[24,[\\\"clearValueArray\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title massedit-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"massedit.clear_value\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",false],[12,\\\"class\\\",\\\"massedit-checkbox\\\"],[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[\\\"massedit-clear-value-\\\",[23,4,[\\\"name\\\"]]],null]],[3,\\\"action\\\",[[23,0,[]],\\\"clearValue\\\",[23,4,[]]]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"glyphicon move \\\",[28,\\\"if\\\",[[23,4,[\\\"features\\\",\\\"selected\\\"]],\\\"move-CheckedCheckbox\\\",\\\"move-UncheckedCheckbox\\\"],null]]]],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"recalculations\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-12 col-sm-8 col-md-8 col-xs-8 form-group\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"form-group report-main \\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"massedit.recalculate\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"select\\\",true],[10,\\\"class\\\",\\\"form-control add-fields\\\"],[10,\\\"data-anchor\\\",\\\"massedit-recalculate\\\"],[11,\\\"onchange\\\",[28,\\\"action\\\",[[23,0,[]],[28,\\\"mut\\\",[[24,[\\\"selectedRecalculation\\\"]]],null]],[[\\\"value\\\"],[\\\"target.value\\\"]]]],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"option\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"recalculations\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[23,3,[\\\"value\\\"]]],[11,\\\"selected\\\",[28,\\\"eq\\\",[[24,[\\\"selectedRecalculation\\\"]],[23,3,[\\\"value\\\"]]],null]],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[\\\"massedit-recalculate-\\\",[23,3,[\\\"value\\\"]]],null]],[8],[1,[28,\\\"t\\\",[[23,3,[\\\"text\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"locked_rows\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[1,[28,\\\"t\\\",[\\\"massedit.locked_rows\\\"],[[\\\"rowCount\\\"],[[24,[\\\"locked_rows\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"rowCount\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"start\\\",[24,[\\\"field\\\",\\\"selected\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"massedit.edit\\\"],[[\\\"rowCount\\\"],[[24,[\\\"rowCount\\\"]]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"inModal\\\"]]],null,{\\\"statements\\\":[[7,\\\"hr\\\",true],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errors\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"massedit.errors\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"errors\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[1,[23,1,[\\\"error\\\",\\\"errors\\\",\\\"0\\\",\\\"error_msg\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"modelFields\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"b\\\",true],[8],[1,[23,2,[\\\"translated_name\\\"]],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[[23,2,[]],[24,[\\\"form\\\"]],[23,1,[\\\"row\\\"]]]]],false],[0,\\\" \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"inModal\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"executing\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"back\\\"]],[8],[1,[28,\\\"t\\\",[\\\"massedit.back\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/mass-edit.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"sqmq/VUB\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"forcedArr\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"modal-array\\\",null,[[\\\"array\\\",\\\"store\\\",\\\"model\\\"],[[24,[\\\"forcedArr\\\"]],[24,[\\\"store\\\"]],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/message-board-forced.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"JzAAt9Wg\",\"block\":\"{\\\"symbols\\\":[\\\"user\\\"],\\\"statements\\\":[[2,\\\" Modal \\\"],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal fade\\\"],[10,\\\"id\\\",\\\"array-modal\\\"],[10,\\\"tabindex\\\",\\\"-1\\\"],[10,\\\"role\\\",\\\"dialog\\\"],[10,\\\"aria-labelledby\\\",\\\"myModalLabel\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-dialog\\\"],[10,\\\"role\\\",\\\"document\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-content\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-header\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"close\\\"],[12,\\\"data-dismiss\\\",\\\"modal\\\"],[12,\\\"aria-label\\\",[28,\\\"t\\\",[\\\"general.close\\\"],null]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeAndMarkAsRead\\\",[24,[\\\"currentMessage\\\"]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"modal-title\\\"],[10,\\\"id\\\",\\\"myModalLabel\\\"],[8],[0,\\\" \\\"],[1,[24,[\\\"currentMessage\\\",\\\"header\\\"]],false],[0,\\\" \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"small\\\",true],[8],[1,[28,\\\"moment-format\\\",[[24,[\\\"currentMessage\\\",\\\"row_info\\\",\\\"created\\\"]],\\\"LL\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-body\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[24,[\\\"currentMessage\\\",\\\"content\\\"]],false],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"to_users\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-footer\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"text-left\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"modal-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"report.messageboard.who_title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"to_users\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[23,1,[\\\"readed\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"text-success\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon move move-CheckedCheckbox\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"p\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon move move-UncheckedCheckbox\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-footer\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-default\\\"],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeAndMarkAsRead\\\",[24,[\\\"currentMessage\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/modal-array.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"lCLDMoxz\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\",\\\"&default\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[10,\\\"role\\\",\\\"group\\\"],[10,\\\"aria-label\\\",\\\"...\\\"],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"content\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[23,1,[\\\"active\\\"]],\\\"btn-primary\\\",\\\"btn-default\\\"],null]]]],[12,\\\"type\\\",\\\"button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"click\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"order\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[23,1,[\\\"order\\\"]],false],[0,\\\".\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[1,[23,1,[\\\"name\\\"]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[14,2],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/multi-buttons.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"+L95S7t8\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"site-safety.overview.notices_chart\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"all\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"notices-graph-none\\\"],[8],[0,\\\"-\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"chart-comp\\\",null,[[\\\"data\\\",\\\"type\\\",\\\"colors\\\",\\\"options\\\"],[[24,[\\\"data\\\"]],\\\"pie\\\",[24,[\\\"colors\\\"]],[24,[\\\"options\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/notices-graph.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"MFTCThxE\",\"block\":\"{\\\"symbols\\\":[\\\"obj\\\"],\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"placeholderObjects\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"        \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"value\\\",\\\"class\\\",\\\"focus-out\\\",\\\"disabled\\\",\\\"key-up\\\"],[\\\"text\\\",[23,1,[\\\"name\\\"]],\\\"add-fields\\\",[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validateKeys\\\",[23,1,[]]],null]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"impersonate\\\"]]],null,{\\\"statements\\\":[[0,\\\"            (\\\"],[1,[23,1,[\\\"id\\\"]],false],[0,\\\")\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"input-group-btn\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-danger\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"remove\\\",[23,1,[]]]],[8],[1,[28,\\\"standard-icon\\\",[\\\"remove\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"add\\\"]],[8],[1,[22,\\\"addText\\\"],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/object-input.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"LrQWxaOQ\",\"block\":\"{\\\"symbols\\\":[\\\"page\\\"],\\\"statements\\\":[[7,\\\"nav\\\",true],[10,\\\"class\\\",\\\"pagination-lg pagination-centered\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showPagination\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"ul\\\",true],[11,\\\"class\\\",[29,[\\\"pagination \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"position\\\"]],\\\"top\\\"],null],\\\"top-pagination justify-content-center\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasPreviousPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"hasPreviousPage\\\"]],\\\"\\\",\\\"disabled\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"previousPage\\\"]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",true],[10,\\\"aria-label\\\",\\\"Previous\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[0,\\\"«\\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"pages\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"li\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-almost-equal\\\",[[23,1,[]],[24,[\\\"currentPage\\\"]],true],null],\\\"active\\\"],null]]]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changePage\\\",[23,1,[]]]],[8],[1,[23,1,[]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[4,\\\"if\\\",[[24,[\\\"showCurrentpageOverLimit\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"active\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",true],[8],[1,[22,\\\"currentPage\\\"],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"queryLimitFull\\\"]],[24,[\\\"hasNextPage\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",[28,\\\"if\\\",[[28,\\\"or\\\",[[24,[\\\"queryLimitFull\\\"]],[24,[\\\"hasNextPage\\\"]]],null],\\\"\\\",\\\"disabled\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"nextPage\\\"]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",true],[10,\\\"aria-label\\\",\\\"Next\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"span\\\",true],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[0,\\\"»\\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/pagi-nate.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"UDqGrhKZ\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\",\\\"link\\\",\\\"dd\\\",\\\"ddm\\\",\\\"link\\\",\\\"plusarray\\\",\\\"link\\\"],\\\"statements\\\":[[5,\\\"bs-dropdown\\\",[],[[\\\"@onShow\\\",\\\"@class\\\"],[[23,0,[\\\"trackDropdownOpen\\\"]],\\\"pull-right hidden-xs plus-menu\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,4,[\\\"toggle\\\"]],[],[[\\\"@class\\\",\\\"@id\\\"],[[29,[\\\"button nav-button add-button \\\",[28,\\\"if\\\",[[23,4,[\\\"isOpen\\\"]],\\\"plusOpen\\\",\\\"plusClose\\\"],null]]],\\\"add-menu-desktop\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9],[0,\\\"\\\\n    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,4,[\\\"menu\\\"]],[],[[\\\"@class\\\",\\\"@align\\\"],[\\\"dropdown-plusmenu\\\",\\\"right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,0,[\\\"plusLinks\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[23,0,[\\\"plusLinks\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,5,[\\\"item\\\"]],[],[[\\\"@class\\\"],[\\\"grid-menu\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,7,[]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,8,[\\\"link\\\"]],\\\"modal\\\"],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"query\\\"],[\\\"li\\\",\\\"grid-button\\\",[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[23,8,[\\\"query\\\"]]]]]]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"button\\\",true],[11,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get-current-brand\\\",null,null],\\\"otta\\\"],null],\\\"btn-secondary\\\",\\\"btn-primary\\\"],null],\\\" wide-button grid-button\\\"]]],[11,\\\"name\\\",[29,[[23,8,[\\\"query\\\"]]]]],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,8,[\\\"id\\\"]],\\\"-plus-button\\\"],null]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[[23,8,[\\\"icon\\\"]],\\\" plus-icon\\\"]]],[8],[9],[1,[23,8,[\\\"translated\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,8,[\\\"link\\\",\\\"length\\\"]],1],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"params\\\",\\\"tagName\\\",\\\"class\\\"],[[23,8,[\\\"link\\\"]],\\\"li\\\",\\\"grid-button\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"button\\\",true],[11,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get-current-brand\\\",null,null],\\\"otta\\\"],null],\\\"btn-secondary\\\",\\\"btn-primary\\\"],null],\\\" wide-button grid-button\\\"]]],[11,\\\"name\\\",[29,[[23,8,[\\\"link\\\"]]]]],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,8,[\\\"id\\\"]],\\\"-plus-button\\\"],null]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[[23,8,[\\\"icon\\\"]],\\\" plus-icon\\\"]]],[8],[9],[1,[23,8,[\\\"translated\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-array\\\",[[23,8,[\\\"link\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"params\\\",\\\"tagName\\\",\\\"class\\\"],[[23,8,[\\\"link\\\"]],\\\"li\\\",\\\"grid-button\\\"]],{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"button\\\",true],[11,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get-current-brand\\\",null,null],\\\"otta\\\"],null],\\\"btn-secondary\\\",\\\"btn-primary\\\"],null],\\\" wide-button grid-button\\\"]]],[11,\\\"name\\\",[29,[[23,8,[\\\"link\\\"]]]]],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,8,[\\\"id\\\"]],\\\"-plus-button\\\"],null]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[[23,8,[\\\"icon\\\"]],\\\" plus-icon\\\"]]],[8],[9],[1,[23,8,[\\\"translated\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"grid-button\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get-current-brand\\\",null,null],\\\"otta\\\"],null],\\\"btn-secondary\\\",\\\"btn-primary\\\"],null],\\\" wide-button grid-button\\\"]]],[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,8,[\\\"id\\\"]],\\\"-plus-button\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"goToSkvLink\\\",[23,8,[\\\"link\\\"]]]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[[23,8,[\\\"icon\\\"]],\\\" plus-icon\\\"]]],[8],[9],[1,[28,\\\"t\\\",[\\\"projects.link_to_skv\\\"],null],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[8]},null],[0,\\\"                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"addLinks\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[6,[23,5,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,6,[\\\"link\\\"]],\\\"modal\\\"],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"class\\\",\\\"query\\\"],[\\\"li\\\",\\\"grid-button\\\",[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[23,6,[\\\"query\\\"]]]]]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"button\\\",true],[11,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get-current-brand\\\",null,null],\\\"otta\\\"],null],\\\"btn-secondary\\\",\\\"btn-primary\\\"],null],\\\" wide-button grid-button\\\"]]],[11,\\\"name\\\",[29,[[28,\\\"concat\\\",[[23,6,[\\\"query\\\"]],\\\".modal\\\"],null]]]],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,6,[\\\"id\\\"]],\\\"-plus-button\\\"],null]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[[23,6,[\\\"icon\\\"]],\\\" plus-icon\\\"]]],[8],[9],[1,[23,6,[\\\"translated\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,6,[\\\"link\\\",\\\"length\\\"]],1],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"params\\\",\\\"tagName\\\",\\\"class\\\"],[[23,6,[\\\"link\\\"]],\\\"li\\\",\\\"grid-button\\\"]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"button\\\",true],[11,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get-current-brand\\\",null,null],\\\"otta\\\"],null],\\\"btn-secondary\\\",\\\"btn-primary\\\"],null],\\\" wide-button grid-button\\\"]]],[11,\\\"name\\\",[29,[[23,6,[\\\"link\\\"]]]]],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,6,[\\\"id\\\"]],\\\"-plus-button\\\"],null]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[[23,6,[\\\"icon\\\"]],\\\" plus-icon\\\"]]],[8],[9],[1,[23,6,[\\\"translated\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-array\\\",[[23,6,[\\\"link\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"params\\\",\\\"tagName\\\",\\\"class\\\"],[[23,6,[\\\"link\\\"]],\\\"li\\\",\\\"grid-button\\\"]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"button\\\",true],[11,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get-current-brand\\\",null,null],\\\"otta\\\"],null],\\\"btn-secondary\\\",\\\"btn-primary\\\"],null],\\\" wide-button grid-button\\\"]]],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,6,[\\\"id\\\"]],\\\"-plus-button\\\"],null]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[[23,6,[\\\"icon\\\"]],\\\" plus-icon\\\"]]],[8],[9],[1,[23,6,[\\\"translated\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"grid-button\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get-current-brand\\\",null,null],\\\"otta\\\"],null],\\\"btn-secondary\\\",\\\"btn-primary\\\"],null],\\\" wide-button grid-button\\\"]]],[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,6,[\\\"id\\\"]],\\\"-plus-button\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"goToSkvLink\\\",[23,6,[\\\"link\\\"]]]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[[23,6,[\\\"icon\\\"]],\\\" plus-icon\\\"]]],[8],[9],[1,[28,\\\"t\\\",[\\\"projects.link_to_skv\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.add.no_permissions\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"    \\\"]],\\\"parameters\\\":[5]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]}],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"isAddPage\\\"]]],null,{\\\"statements\\\":[[5,\\\"bs-dropdown\\\",[],[[\\\"@onShow\\\",\\\"@class\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"toggleScroll\\\"],null],\\\"hidden-lg hidden-md hidden-sm bottom-plus-menu\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"toggle\\\"]],[],[[\\\"@class\\\"],[\\\"button nav-button bottom-plus-menu add-button\\\"]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[8],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu-mobile\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n        \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn wide-button close-button\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeplusMenu\\\"]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"header.close_menu\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cross pull-right header-cross\\\"],[8],[9],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mobile-button-outer\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"mobile-button-inner \\\",[28,\\\"if\\\",[[23,0,[\\\"gui\\\",\\\"isSafari\\\"]],\\\"safari-only\\\"],null],\\\" \\\",[28,\\\"if\\\",[[23,0,[\\\"gui\\\",\\\"isAndroidBrowser\\\"]],\\\"android-only\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"addLinksReversed\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"link\\\"]],\\\"modal\\\"],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"query\\\"],[\\\"li\\\",[28,\\\"hash\\\",null,[[\\\"modal\\\"],[[23,3,[\\\"query\\\"]]]]]]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"button\\\",true],[11,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get-current-brand\\\",null,null],\\\"otta\\\"],null],\\\"btn-secondary\\\",\\\"btn-primary\\\"],null],\\\" wide-button mobile-button\\\"]]],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,3,[\\\"id\\\"]],\\\"-plus-button\\\"],null]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[[23,3,[\\\"icon\\\"]],\\\" plus-icon\\\"]]],[8],[9],[1,[23,3,[\\\"translated\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,3,[\\\"link\\\",\\\"length\\\"]],1],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"params\\\",\\\"tagName\\\"],[[23,3,[\\\"link\\\"]],\\\"li\\\"]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"button\\\",true],[11,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get-current-brand\\\",null,null],\\\"otta\\\"],null],\\\"btn-secondary\\\",\\\"btn-primary\\\"],null],\\\" wide-button mobile-button\\\"]]],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,3,[\\\"id\\\"]],\\\"-plus-button\\\"],null]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[[23,3,[\\\"icon\\\"]],\\\" plus-icon\\\"]]],[8],[9],[1,[23,3,[\\\"translated\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-array\\\",[[23,3,[\\\"link\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"params\\\",\\\"tagName\\\"],[[23,3,[\\\"link\\\"]],\\\"li\\\"]],{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"button\\\",true],[11,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get-current-brand\\\",null,null],\\\"otta\\\"],null],\\\"btn-secondary\\\",\\\"btn-primary\\\"],null],\\\" wide-button mobile-button\\\"]]],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,3,[\\\"id\\\"]],\\\"-plus-button\\\"],null]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[[23,3,[\\\"icon\\\"]],\\\" plus-icon\\\"]]],[8],[9],[0,\\\" \\\"],[1,[23,3,[\\\"translated\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get-current-brand\\\",null,null],\\\"otta\\\"],null],\\\"btn-secondary\\\",\\\"btn-primary\\\"],null],\\\" wide-button\\\"]]],[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,3,[\\\"id\\\"]],\\\"-plus-button\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"goToSkvLink\\\",[23,3,[\\\"link\\\"]]]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[[23,3,[\\\"icon\\\"]],\\\" plus-icon\\\"]]],[8],[9],[1,[28,\\\"t\\\",[\\\"projects.link_to_skv\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[3]},{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,2,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.add.no_permissions\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/plus-menu.hbs\"}});","define(\"tt4/templates/components/power-select-multiple\", [\"exports\", \"ember-power-select/templates/components/power-select-multiple\"], function (_exports, _powerSelectMultiple) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerSelectMultiple.default;\n    }\n  });\n});\n","define(\"tt4/templates/components/power-select-multiple/trigger\", [\"exports\", \"ember-power-select/templates/components/power-select-multiple/trigger\"], function (_exports, _trigger) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _trigger.default;\n    }\n  });\n});\n","define(\"tt4/templates/components/power-select\", [\"exports\", \"ember-power-select/templates/components/power-select\"], function (_exports, _powerSelect) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerSelect.default;\n    }\n  });\n});\n","define(\"tt4/templates/components/power-select/before-options\", [\"exports\", \"ember-power-select/templates/components/power-select/before-options\"], function (_exports, _beforeOptions) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _beforeOptions.default;\n    }\n  });\n});\n","define(\"tt4/templates/components/power-select/options\", [\"exports\", \"ember-power-select/templates/components/power-select/options\"], function (_exports, _options) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _options.default;\n    }\n  });\n});\n","define(\"tt4/templates/components/power-select/placeholder\", [\"exports\", \"ember-power-select/templates/components/power-select/placeholder\"], function (_exports, _placeholder) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _placeholder.default;\n    }\n  });\n});\n","define(\"tt4/templates/components/power-select/power-select-group\", [\"exports\", \"ember-power-select/templates/components/power-select/power-select-group\"], function (_exports, _powerSelectGroup) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _powerSelectGroup.default;\n    }\n  });\n});\n","define(\"tt4/templates/components/power-select/search-message\", [\"exports\", \"ember-power-select/templates/components/power-select/search-message\"], function (_exports, _searchMessage) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _searchMessage.default;\n    }\n  });\n});\n","define(\"tt4/templates/components/power-select/trigger\", [\"exports\", \"ember-power-select/templates/components/power-select/trigger\"], function (_exports, _trigger) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _trigger.default;\n    }\n  });\n});\n","export default Ember.HTMLBars.template({\"id\":\"One/hKbL\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"helptext\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-info\\\"],[10,\\\"role\\\",\\\"alert\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-info-sign\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\" \\\"],[1,[22,\\\"helptext\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/project-help.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"QecK5OIU\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\",\\\"row\\\",\\\"field\\\",\\\"field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup-header\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",true],[8],[1,[28,\\\"t\\\",[\\\"mysites.project.info\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross add-modal-cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"removeProjectModal\\\"]],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"modal-popup-content project-info-content\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"project-info-container\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[1,[24,[\\\"record\\\",\\\"name\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[24,[\\\"record\\\",\\\"address\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[24,[\\\"record\\\",\\\"zip\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"record\\\",\\\"city\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.project.number\\\"],null],false],[9],[9],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[24,[\\\"record\\\",\\\"number\\\"]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"record\\\",\\\"description\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.project.description\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[24,[\\\"record\\\",\\\"description\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"safety-sums\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"tr\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"tr\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"safety-sum-card\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.overview.tr_index.mean\\\"],null],false],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"rating-value \\\",[24,[\\\"tr_mean\\\",\\\"color\\\"]]]]],[8],[1,[24,[\\\"tr_mean\\\",\\\"mean\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"mvr\\\"],null]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"mvr\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"safety-sum-card\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.overview.mvr_index.mean\\\"],null],false],[9],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"rating-value \\\",[24,[\\\"mvr_mean\\\",\\\"color\\\"]]]]],[8],[1,[24,[\\\"mvr_mean\\\",\\\"mean\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"worksitediary\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-events overview-list-container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.overview.title.events\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"events\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"overview-card-item\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card-image hidden-xs\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[28,\\\"if\\\",[[23,1,[\\\"images\\\",\\\"firstObject\\\"]],[28,\\\"api-image\\\",[[23,1,[\\\"images\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],null],\\\"img/placeholder_small.png\\\"],null],\\\"')\\\"]]],[8],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card-content\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"moment-format\\\",[[23,1,[\\\"row_info\\\",\\\"created\\\"]],\\\"LL\\\"],null],false],[0,\\\"\\\\n                            \\\"],[7,\\\"h4\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"event_fields\\\",\\\"first_row\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,4,[]],\\\"worksitediary\\\",[28,\\\"get\\\",[[23,1,[]],[23,4,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"event_fields\\\",\\\"rows\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"h5\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[23,2,[]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"collector-value-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"value\\\"],[[23,3,[]],\\\"worksitediary\\\",[28,\\\"get\\\",[[23,1,[]],[23,3,[]]],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card-status\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"rating\\\"]],\\\"up\\\"],null],\\\"move-GoodQuality\\\",\\\"move-PoorQuality\\\"],null]]]],[8],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"h5\\\",true],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"worksitediary.rating.\\\",[23,1,[\\\"rating\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"user\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"event-creator\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"card-image img-circle\\\"],[11,\\\"style\\\",[29,[\\\"background-image:url('\\\",[28,\\\"if\\\",[[23,1,[\\\"user\\\",\\\"image\\\",\\\"firstObject\\\"]],[28,\\\"api-image\\\",[[23,1,[\\\"user\\\",\\\"image\\\",\\\"firstObject\\\",\\\"thumb\\\"]]],null],\\\"img/user-profile-lg-gray.png\\\"],null],\\\"')\\\"]]],[8],[9],[0,\\\"\\\\n                                    \\\"],[7,\\\"h5\\\",true],[8],[1,[23,1,[\\\"user\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[23,1,[\\\"user\\\",\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"project.overview.no_events\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"project.skv_number\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"text-muted\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"report.project.skv_number\\\"],null],false],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[24,[\\\"record\\\",\\\"skv_number\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"record\\\",\\\"phone\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"a\\\",true],[10,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[11,\\\"href\\\",[29,[\\\"tel:\\\",[24,[\\\"record\\\",\\\"phone\\\"]]]]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"project-info.contact_person.call\\\"],[[\\\"person\\\"],[[24,[\\\"record\\\",\\\"contact_person\\\"]]]]],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"project.skv_number\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openSkvLink\\\"]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"project-info.skv_link\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"record\\\",\\\"location_map\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block map-toggler\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleMap\\\"]],[8],[1,[28,\\\"t\\\",[\\\"project-info.toggle_map\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"show_map\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"gps-location-map\\\",null,[[\\\"value\\\",\\\"model\\\",\\\"projectmode\\\",\\\"zoomLevel\\\"],[[24,[\\\"record\\\",\\\"location_map\\\"]],[24,[\\\"record\\\"]],true,14]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/project-info.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"0eJ6DTE2\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"promomessage\\\"],[8],[0,\\\"\\\\n        \\\"],[14,1],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/promo-component.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"OTzo4zrz\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"forcedArr\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"forcedArr\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"mess-ages/types/promo\\\",null,[[\\\"close\\\",\\\"store\\\",\\\"content\\\"],[[28,\\\"action\\\",[[23,0,[]],\\\"closeModal\\\"],null],[24,[\\\"store\\\"]],[23,1,[]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/promo-messages.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"m7iUJ9GT\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"label\\\",true],[8],[1,[22,\\\"label\\\"],false],[9],[0,\\\"\\\\n\\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"class\\\",\\\"placeholder\\\",\\\"readonly\\\"],[[24,[\\\"rangeText\\\"]],\\\"daterangepicker-input form-control pull-right\\\",[24,[\\\"placeholder\\\"]],true]]],false],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"hide\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\"],[[24,[\\\"start\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"value\\\"],[[24,[\\\"end\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/range-picker.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"oMmpeZTM\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"dd\\\",\\\"ddm\\\",\\\"export\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n        \\\"],[5,\\\"bs-dropdown\\\",[],[[\\\"@class\\\"],[\\\"report-more pull-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showLoader\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"report-loading\\\"],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,2,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu-right\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"exports\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[6,[23,3,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export\\\",[23,4,[\\\"export\\\"]]]],[8],[1,[23,4,[\\\"translation\\\"]],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null],[0,\\\"            \\\"]],\\\"parameters\\\":[3]}],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-bordered table-hover table-rounded\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[28,\\\"filter\\\",[[28,\\\"action\\\",[[23,0,[]],\\\"filterFields\\\"],null],[24,[\\\"fields\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"style\\\",\\\"width:30%;\\\"],[8],[7,\\\"b\\\",true],[8],[1,[28,\\\"collector-field-name\\\",null,[[\\\"field\\\",\\\"form\\\"],[[28,\\\"if\\\",[[23,1,[\\\"ext\\\"]],[23,1,[\\\"ext\\\"]],[23,1,[\\\"name\\\"]]],null],[24,[\\\"currentForm\\\"]]]]],false],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"style\\\",\\\"overflow-wrap: anywhere;\\\"],[8],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[[23,1,[]],[24,[\\\"currentForm\\\"]],[24,[\\\"model\\\"]]]]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/record-list.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"QJH9MKfi\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"record_id\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"submenu-buttons edit-submenu\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"unless\\\",[[24,[\\\"multi\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"setmulti\\\",false]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"salary_period.adder.single\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",[29,[\\\"submenu-item \\\",[28,\\\"if\\\",[[24,[\\\"multi\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"setmulti\\\",true]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"t\\\",[\\\"salary_period.adder.multi\\\"],null],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"multi\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"hasErrors\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"salary_period.adder.amount\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"field\\\",\\\"features\\\",\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"firstError\\\",\\\"message\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\"],[[24,[\\\"amount_options\\\"]],\\\"form-control add-fields\\\",[24,[\\\"amount\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"hasErrors\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"salary_period.adder.from\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"field\\\",\\\"features\\\",\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"firstError\\\",\\\"message\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"value\\\",\\\"class\\\"],[[24,[\\\"from\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"hasErrors\\\"]],\\\"has-error has-feedback\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"salary_period.adder.period\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"field\\\",\\\"features\\\",\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"firstError\\\",\\\"message\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[1,[28,\\\"drop-down\\\",null,[[\\\"options\\\",\\\"classes\\\",\\\"value\\\"],[[24,[\\\"period_options\\\"]],\\\"form-control add-fields\\\",[24,[\\\"period\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"hasErrors\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"saving\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"create\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[28,\\\"t\\\",[\\\"salary_period.adder.create\\\"],null]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"closeEditor\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/record-comp\\\",null,[[\\\"settings\\\",\\\"record_id\\\",\\\"recordSaved\\\",\\\"cancelClicked\\\",\\\"form\\\"],[[24,[\\\"settings\\\"]],[24,[\\\"record_id\\\"]],\\\"recordSaved\\\",\\\"closeEditor\\\",\\\"wage_period\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/salary-period-adder.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"8tBDiPyJ\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[7,\\\"select\\\",false],[12,\\\"name\\\",[28,\\\"or\\\",[[24,[\\\"field\\\",\\\"name\\\"]],[24,[\\\"name\\\"]]],null]],[12,\\\"class\\\",[29,[[22,\\\"classes\\\"]]]],[12,\\\"disabled\\\",[22,\\\"disabled\\\"]],[3,\\\"action\\\",[[23,0,[]],\\\"change\\\"],[[\\\"on\\\"],[\\\"change\\\"]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"prompt\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"option\\\",true],[8],[1,[22,\\\"prompt\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"content\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"relation\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[29,[[23,1,[\\\"id\\\"]]]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[]],[24,[\\\"value\\\"]]],null]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"format-option\\\",[[23,1,[]],[24,[\\\"options\\\"]]],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[29,[[23,1,[\\\"id\\\"]]]]],[11,\\\"selected\\\",[28,\\\"is-equal\\\",[[23,1,[\\\"id\\\"]],[24,[\\\"value\\\"]]],null]],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"format-option\\\",[[23,1,[]],[24,[\\\"options\\\"]]],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/select-comp.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"V9FtmABu\",\"block\":\"{\\\"symbols\\\":[\\\"item\\\"],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"prompt\\\"]]],null,{\\\"statements\\\":[[0,\\\"  \\\"],[7,\\\"option\\\",true],[10,\\\"value\\\",\\\"\\\"],[10,\\\"disabled\\\",\\\"\\\"],[11,\\\"selected\\\",[28,\\\"is-not\\\",[[24,[\\\"selection\\\"]]],null]],[8],[0,\\\"\\\\n    \\\"],[1,[22,\\\"prompt\\\"],false],[0,\\\"\\\\n  \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"content\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[0,\\\"  \\\"],[7,\\\"option\\\",true],[11,\\\"value\\\",[29,[[28,\\\"read-path\\\",[[23,1,[]],[24,[\\\"optionValuePath\\\"]]],null]]]],[11,\\\"selected\\\",[28,\\\"is-equal-by-path\\\",[[23,1,[]],[24,[\\\"value\\\"]],[24,[\\\"optionValuePath\\\"]]],null]],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"read-path\\\",[[23,1,[]],[24,[\\\"optionLabelPath\\\"]]],null],false],[0,\\\"\\\\n  \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/select-list.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"8/TExRB/\",\"block\":\"{\\\"symbols\\\":[\\\"&default\\\"],\\\"statements\\\":[[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[22,\\\"classes\\\"],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"spinIsLoading\\\"]],\\\"is-loading\\\"],null],\\\" save\\\"]]],[12,\\\"id\\\",[22,\\\"id\\\"]],[12,\\\"disabled\\\",[22,\\\"showDisable\\\"]],[12,\\\"name\\\",[22,\\\"name\\\"]],[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-save-button\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"showLoading\\\"]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"spinIsLoading\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"savingText\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"savingText\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[25,1]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[14,1],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.saving\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[14,1],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"saveButtonText\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[22,\\\"saveButtonText\\\"],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"unless\\\",[[25,1]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.save\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/spin-button.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"6ktwp+CP\",\"block\":\"{\\\"symbols\\\":[\\\"column\\\",\\\"row\\\",\\\"button\\\",\\\"button\\\",\\\"button\\\",\\\"column\\\",\\\"column\\\",\\\"index\\\",\\\"dd\\\",\\\"ddm\\\",\\\"type\\\",\\\"checkedAction\\\",\\\"&default\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"rowInfoStatus\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"text-danger\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.report.removed_view\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"outer \\\",[28,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"rowInfoStatus\\\"]],\\\"removed\\\"],null],\\\"general-row-removed\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"export_pdf\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-right\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group report-more text-right\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"dropdown-toggle\\\"],[10,\\\"data-toggle\\\",\\\"dropdown\\\"],[10,\\\"aria-expanded\\\",\\\"false\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"button\\\",true],[10,\\\"class\\\",\\\"btn btn-default\\\"],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"dropdown-menu dropdown-menu-right\\\"],[10,\\\"role\\\",\\\"menu\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"export_pdf\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.actions.export_pdf\\\"],null],false],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"noRows\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"noRowsText\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h3\\\",true],[8],[1,[22,\\\"noRowsText\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"report-placeholder\\\",null,[[\\\"customHeader\\\",\\\"searchIcon\\\",\\\"searchInfoText\\\"],[[28,\\\"t\\\",[\\\"general.no_rows_found\\\"],null],true,[28,\\\"t\\\",[\\\"report.add_filters\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"checked\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"strong\\\",true],[8],[1,[24,[\\\"checked\\\",\\\"length\\\"]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"report.items_checked\\\"],null],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hideCheckedActions\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"checkedActions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"checkedActions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"checkedActionClicked\\\",[23,12,[]]]],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"general.actions.\\\",[23,12,[\\\"name\\\"]]],null]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[12]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"canChangeStatus\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"showDefaultChangeStatus\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"btn-group\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn \\\",[24,[\\\"defaultChangeStatus\\\",\\\"btn_class\\\"]]]]],[3,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\",[24,[\\\"defaultChangeStatus\\\",\\\"action\\\"]]]],[8],[1,[24,[\\\"defaultChangeStatus\\\",\\\"text\\\"]],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[5,\\\"bs-dropdown\\\",[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[6,[23,9,[\\\"button\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-option-horizontal\\\"],[8],[9],[0,\\\"  \\\"],[1,[28,\\\"t\\\",[\\\"report.more_button\\\"],null],false],[0,\\\"\\\\n                        \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                        \\\"],[6,[23,9,[\\\"menu\\\"]],[],[[],[]],{\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"statusTypes\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[6,[23,10,[\\\"item\\\"]],[],[[\\\"@class\\\"],[[29,[[22,\\\"moreLinksClass\\\"]]]]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"changeStatus\\\",[23,11,[\\\"id\\\"]]]],[8],[1,[23,11,[\\\"name\\\"]],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[11]},null],[0,\\\"                            \\\"],[6,[23,10,[\\\"divider\\\"]],[],[[],[]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"canLock\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[6,[23,10,[\\\"item\\\"]],[],[[\\\"@class\\\"],[[22,\\\"moreLinksClass\\\"]]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"lockRows\\\",\\\"unlock\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.unlock_selected_rows\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                                \\\"],[6,[23,10,[\\\"item\\\"]],[],[[\\\"@class\\\"],[[22,\\\"moreLinksClass\\\"]]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"lockRows\\\",\\\"lock\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.lock_selected_rows\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"@remove\\\"],null]],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"rowInfoStatus\\\"]],\\\"removed\\\"],null]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,10,[\\\"item\\\"]],[],[[\\\"@class\\\"],[[22,\\\"moreLinksClass\\\"]]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"mutateRows\\\",\\\"restoreChecked\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.restore_rows\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                    \\\"],[6,[23,10,[\\\"item\\\"]],[],[[\\\"@class\\\"],[[22,\\\"moreLinksClass\\\"]]],{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"mutateRows\\\",\\\"deleteChecked\\\"]],[8],[1,[28,\\\"t\\\",[\\\"report.delete_rows\\\"],null],false],[9]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showMassedit\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[6,[23,10,[\\\"item\\\"]],[],[[],[]],{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"route\\\",\\\"models\\\"],[\\\"massedit\\\",[28,\\\"array\\\",[[24,[\\\"form\\\"]],[24,[\\\"selectedRows\\\"]]],null]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"report.massedit\\\"],null],false]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"]],\\\"parameters\\\":[10]}],[0,\\\"\\\\n                    \\\"]],\\\"parameters\\\":[9]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive table-hover general-report report-forms\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"checkable\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"report-checkbox\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"report-row-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"checkAll\\\"]],[8],[1,[28,\\\"standard-icon\\\",[[24,[\\\"checkClass\\\"]]],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_translatedColumns\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"th\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"columnClicked\\\",[23,8,[]]],null]],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"table-header-wrap\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"table-header-name\\\"],[8],[1,[23,7,[]],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hideSort\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"multiSort\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                        \\\"],[1,[28,\\\"sort-icon\\\",[[24,[\\\"order\\\"]],[28,\\\"get\\\",[[24,[\\\"columns\\\"]],[23,8,[]]],null]],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"order\\\"]],[23,8,[]]],null]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-SortUp\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"order\\\"]],[28,\\\"concat\\\",[[23,8,[]],\\\"-\\\"],null]],null]],null,{\\\"statements\\\":[[0,\\\"                                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-SortDown\\\"],[8],[9],[0,\\\"\\\\n                                        \\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"                                \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[7,8]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"data\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[25,13]],null,{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"tr\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"row_info\\\",\\\"status\\\"]],\\\"locked\\\"],null],[28,\\\"not\\\",[[24,[\\\"skipLocked\\\"]]],null]],null],\\\"show-lock\\\"],null],\\\" \\\",[23,2,[\\\"class\\\"]]]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"checkable\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"td\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[12,\\\"class\\\",\\\"report-row-icon\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"check\\\",[23,2,[]]]],[8],[1,[28,\\\"standard-icon\\\",[[28,\\\"if\\\",[[23,2,[\\\"checkedClass\\\"]],[23,2,[\\\"checkedClass\\\"]],\\\"unchecked\\\"],null]],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"rowAction\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"td\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"rowAction\\\",[24,[\\\"rowAction\\\"]],[23,2,[]]]],[8],[1,[28,\\\"get\\\",[[23,2,[]],[23,6,[]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"get\\\",[[23,2,[]],[23,6,[]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[6]},null],[4,\\\"if\\\",[[24,[\\\"rowActions\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"report-row-icon invisible\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"row_info\\\",\\\"status\\\"]],\\\"locked\\\"],null],[28,\\\"not\\\",[[24,[\\\"skipLocked\\\"]]],null]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"lockedActions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[[23,5,[\\\"icon\\\"]]]]],[12,\\\"title\\\",[23,5,[\\\"text\\\"]]],[3,\\\"action\\\",[[23,0,[]],\\\"rowAction\\\",[23,5,[\\\"action\\\"]],[23,2,[]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[5]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"form\\\"]],[28,\\\"not\\\",[[23,2,[\\\"isEditable\\\"]]],null]],null]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"notEditableActions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[[23,4,[\\\"icon\\\"]]]]],[12,\\\"title\\\",[23,4,[\\\"text\\\"]]],[3,\\\"action\\\",[[23,0,[]],\\\"rowAction\\\",[23,4,[\\\"action\\\"]],[23,2,[]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"rowActions\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",[29,[[23,3,[\\\"icon\\\"]]]]],[12,\\\"title\\\",[23,3,[\\\"text\\\"]]],[3,\\\"action\\\",[[23,0,[]],\\\"rowAction\\\",[23,3,[\\\"action\\\"]],[23,2,[]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                            \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[23,2,[\\\"row_info\\\",\\\"status\\\"]],\\\"locked\\\"],null],[28,\\\"not\\\",[[24,[\\\"skipLocked\\\"]]],null]],null]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"show-row-lock report-row-icon\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"lockRows\\\",\\\"unlock\\\",[23,2,[]]]],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Lock\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"general.open_lock\\\"],null]],[8],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[14,13,[[23,2,[]],[24,[\\\"columns\\\"]],[24,[\\\"rowActions\\\"]],[24,[\\\"rowAction\\\"]],[24,[\\\"checkable\\\"]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[2]},{\\\"statements\\\":[[0,\\\"                    \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"tfoot\\\",true],[8],[0,\\\"\\\\n                \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"checkable\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"td\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"hideSumRow\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"get\\\",[[24,[\\\"sumRow\\\"]],[23,1,[]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\"],[14,13],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/table-comp.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"URgfeLaY\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 col-margin-top\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"previousUser\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-left\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"gotoPreviousUser\\\"]],[8],[1,[28,\\\"standard-icon\\\",[\\\"previous\\\"],null],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"approval-menu pull-right\\\"],[8],[1,[24,[\\\"previousUser\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"previousUser\\\",\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 text-center\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"h2\\\",true],[8],[1,[24,[\\\"currentUser\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"currentUser\\\",\\\"lastname\\\"]],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-4 col-margin-top\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"nextUser\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"clearfix\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"pull-right\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h4\\\",true],[10,\\\"class\\\",\\\"pull-left approval-menu\\\"],[8],[1,[24,[\\\"nextUser\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"nextUser\\\",\\\"lastname\\\"]],false],[0,\\\" \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-default\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"gotoNextUser\\\"]],[8],[1,[28,\\\"standard-icon\\\",[\\\"next\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/user-select.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Llc6fqkn\",\"block\":\"{\\\"symbols\\\":[\\\"wt\\\",\\\"column\\\",\\\"column\\\",\\\"wt\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"content\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"worktimes\\\",\\\"length\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[28,\\\"t\\\",[\\\"report.no_rows\\\"],null],false],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"gui\\\",\\\"isBelowMd\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"worktimes\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 week-report-row\\\"],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"click\\\",[23,4,[]]],null]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"project-image\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"project-icon\\\",null,[[\\\"project\\\"],[[23,4,[\\\"project\\\"]]]]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"worktime-info\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"worktime-info-row\\\"],[8],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[\\\"date\\\",[24,[\\\"form\\\"]],[23,4,[\\\"date\\\"]]]]],false],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"worktime-info-row\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[\\\"work_hours\\\",[24,[\\\"form\\\"]],[23,4,[\\\"work_hours\\\"]]]]],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,4,[\\\"task\\\",\\\"name\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                ,\\\\n                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"task-container\\\"],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checklist\\\"],[8],[9],[0,\\\"  \\\"],[1,[23,4,[\\\"task\\\",\\\"name\\\"]],false],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                        \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"worktime-info-row\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-MySites\\\"],[8],[9],[0,\\\" \\\"],[1,[23,4,[\\\"project\\\",\\\"name\\\"]],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"row-separator\\\"],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[4]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 week-report-row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive table-hover general-report\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"thead\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"th\\\",true],[8],[0,\\\"\\\\n                                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"table-header-wrap\\\"],[8],[0,\\\"\\\\n                                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"table-header-name\\\"],[8],[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"report.worktime.\\\",[23,3,[]]],null]],null],false],[9],[0,\\\"\\\\n                                    \\\"],[9],[0,\\\"\\\\n                                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[3]},null],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"worktimes\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"tr\\\",true],[11,\\\"onclick\\\",[28,\\\"action\\\",[[23,0,[]],\\\"click\\\",[23,1,[]]],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"columns\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"collector-format\\\",null,[[\\\"field\\\",\\\"form\\\",\\\"model\\\"],[[23,2,[]],[24,[\\\"form\\\"]],[28,\\\"get\\\",[[23,1,[]],[23,2,[]]],null]]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"tfoot\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/components/week-report.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"1h/1IsEj\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"array-input\\\",null,[[\\\"value\\\",\\\"addText\\\"],[[24,[\\\"value\\\"]],[24,[\\\"buttonText\\\"]]]]],false],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/array.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"PkZq42Oz\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"focus-out\\\",\\\"change\\\",\\\"placeholder\\\",\\\"checked\\\",\\\"disabled\\\"],[\\\"checkbox\\\",\\\"form-control add-fields inline-input\\\",[24,[\\\"field\\\",\\\"ext\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],\\\"save\\\",[24,[\\\"placeholder\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/fields/toggle-field\\\",null,[[\\\"toggled\\\",\\\"name\\\",\\\"form\\\",\\\"disabled\\\"],[[24,[\\\"value\\\"]],[24,[\\\"field\\\",\\\"ext\\\"]],[24,[\\\"field\\\",\\\"form\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/checkbox.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"TEo8PMMc\",\"block\":\"{\\\"symbols\\\":[\\\"box\\\"],\\\"statements\\\":[[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-unstyled\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"checkboxes\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"disabled\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"checked\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-success\\\"],[8],[1,[28,\\\"standard-icon\\\",[\\\"ok\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                        \\\"],[1,[23,1,[\\\"text\\\"]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"h4\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"\\\"],[12,\\\"class\\\",\\\"nostyle-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"check\\\",[23,1,[\\\"key\\\"]],[23,1,[\\\"checked\\\"]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"checked\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"standard-icon\\\",[\\\"checked\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[1,[28,\\\"standard-icon\\\",[\\\"unchecked\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                            \\\"],[1,[23,1,[\\\"text\\\"]],false],[0,\\\"\\\\n                        \\\"],[9],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/checkboxgroup.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"FPMi0GaS\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"select-comp\\\",null,[[\\\"content\\\",\\\"prompt\\\",\\\"value\\\",\\\"form\\\",\\\"field\\\",\\\"classes\\\",\\\"disabled\\\",\\\"relation\\\"],[[24,[\\\"db_options\\\"]],[24,[\\\"prompt\\\"]],[24,[\\\"value\\\"]],[24,[\\\"model\\\",\\\"constructor\\\",\\\"modelName\\\"]],[24,[\\\"field\\\",\\\"ext\\\"]],\\\"form-control add-fields inline-input\\\",[24,[\\\"disabled\\\"]],true]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"filter\\\",\\\"change\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"fieldRoute\\\"]],[24,[\\\"filter\\\"]],\\\"customChangeValue\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/database.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"SFU3aqre\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"forcetype\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"fieldRoute\\\"]],\\\"databasearray-adder-field\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/databasearray.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"b575WXRv\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"dropdown_date\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"dropdown_date\\\"]],\\\"locked\\\"],null]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"moment-format\\\",[[24,[\\\"value\\\"]],\\\"dddd L\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"select-comp\\\",null,[[\\\"content\\\",\\\"value\\\",\\\"classes\\\"],[[24,[\\\"dropdown_date\\\"]],[24,[\\\"value\\\"]],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"focus-out\\\",\\\"insert-newline\\\",\\\"value\\\",\\\"name\\\",\\\"disabled\\\"],[\\\"form-control add-fields inline-input date-input-component\\\",[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[24,[\\\"value\\\"]],[24,[\\\"field\\\",\\\"ext\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"date-input\\\",null,[[\\\"class\\\",\\\"value\\\",\\\"name\\\",\\\"click\\\",\\\"disabled\\\"],[\\\"form-control add-fields date-input-component\\\",[24,[\\\"value\\\"]],[24,[\\\"field\\\",\\\"ext\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"dateInputClicked\\\",[24,[\\\"value\\\"]]],null],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/date.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"LwG5pWbP\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"eq\\\",[[24,[\\\"field\\\",\\\"type\\\"]],\\\"dropdown_userlevel\\\"],null],[23,0,[\\\"userlevelInfo\\\"]]],null]],null,{\\\"statements\\\":[[5,\\\"field-info-bubble\\\",[],[[\\\"@text\\\"],[[23,0,[\\\"userlevelInfo\\\"]]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[1,[28,\\\"fast-select\\\",null,[[\\\"content\\\",\\\"prompt\\\",\\\"value\\\",\\\"disabled\\\",\\\"class\\\",\\\"name\\\"],[[24,[\\\"static_content\\\"]],[24,[\\\"prompt\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]],\\\"form-control add-fields\\\",[24,[\\\"field\\\",\\\"ext\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/dropdown.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Ev7V5JtP\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,[24,[\\\"mainLayoutName\\\"]],[]]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/field.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"EZ26EYor\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"saving\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"general.saving\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[15,[24,[\\\"innerTemplateName\\\"]],[]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[1,[23,0,[\\\"error\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"hide\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"error\\\"]],\\\"has-error has-feedback\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"wait\\\"]],\\\"has-feedback\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"ok\\\"]],\\\"has-success has-feedback\\\"],null]]]],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,0,[\\\"field\\\",\\\"ext\\\"]],\\\"-field\\\"],null]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"title\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[22,\\\"name\\\"],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"mandatory\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[23,0,[\\\"error\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[15,[24,[\\\"innerTemplateName\\\"]],[]],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"is-equal\\\",[[24,[\\\"field\\\",\\\"type\\\"]],\\\"timeclean_imei\\\"],null]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"error\\\"]]],null,{\\\"statements\\\":[[0,\\\"                 \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"ok\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"wait\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ajax-loader.gif\\\"],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/fields-main.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"o/4bqQlI\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"remove\\\",\\\"change\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"fieldRoute\\\"]],\\\"removeFile\\\",\\\"customChangeValue\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/file.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"vGEaBMje\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"gps-location\\\",null,[[\\\"value\\\",\\\"project\\\",\\\"model\\\",\\\"field\\\",\\\"error_arr\\\",\\\"custom_projects\\\"],[[24,[\\\"value\\\"]],[24,[\\\"model\\\",\\\"project\\\"]],[24,[\\\"model\\\"]],[24,[\\\"field\\\"]],[24,[\\\"external_errors\\\"]],[24,[\\\"custom_projects\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/gpslocation.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Nfagb5rA\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"map_div_size\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_map\\\"]],[8],[1,[28,\\\"t\\\",[\\\"project.show_map\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[24,[\\\"map_visible\\\"]],\\\"show_gps_map\\\",\\\"hide_gps_map\\\"],null]]]],[8],[0,\\\"\\\\n        \\\"],[1,[28,\\\"gps-location-map\\\",null,[[\\\"value\\\",\\\"model\\\",\\\"projectmode\\\"],[[24,[\\\"value\\\"]],[24,[\\\"model\\\"]],true]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"map_visible\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/gpslocationmap.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"hBTqAj9I\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/fields/hours-and-minutes-field\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"change\\\",\\\"class\\\"],[[24,[\\\"value\\\"]],[24,[\\\"fieldRoute\\\"]],\\\"customChangeValue\\\",\\\"form-control add-fields\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/hours.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"fmoiMyNw\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"change\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"fieldRoute\\\"]],\\\"customChangeValue\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/label.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"JjuVzsj/\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"_class\\\",\\\"name\\\",\\\"change\\\"],[[24,[\\\"fieldRoute\\\"]],\\\"add-fields form-control\\\",[24,[\\\"field\\\",\\\"ext\\\"]],\\\"bubbleChange\\\"]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/multiselect.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"0dRreGX8\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[2,\\\" There is a missing field here because it is not supported \\\"],[0,\\\"\\\\n\\\"],[1,[28,\\\"t\\\",[\\\"field.type.not_found\\\"],null],false],[0,\\\" \\\"],[1,[24,[\\\"field\\\",\\\"type\\\"]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/notfound.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"nNRu5Fk0\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/notsupported.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"bogw98Qf\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"plusminus\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"step\\\"],[\\\"number\\\",\\\"form-control add-fields input-sm\\\",[24,[\\\"field\\\",\\\"ext\\\"]],[24,[\\\"placeholder\\\"]],[24,[\\\"plus\\\"]],[24,[\\\"any\\\"]]]]],false],[0,\\\"\\\\n    /\\\\n    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"step\\\"],[\\\"number\\\",\\\"form-control add-fields input-sm\\\",[24,[\\\"field\\\",\\\"ext\\\"]],[24,[\\\"placeholder\\\"]],[24,[\\\"minus\\\"]],[24,[\\\"any\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"unit\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group\\\"],[8],[0,\\\"\\\\n\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"focus-out\\\",\\\"insert-newline\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\",\\\"step\\\"],[\\\"number\\\",\\\"form-control add-fields inline-input\\\",[24,[\\\"field\\\",\\\"ext\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[24,[\\\"placeholder\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]],[24,[\\\"any\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\",\\\"step\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"field\\\",\\\"ext\\\"]],[24,[\\\"placeholder\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]],[24,[\\\"any\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"input-group-addon\\\"],[8],[7,\\\"b\\\",true],[8],[1,[22,\\\"unit\\\"],false],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"focus-out\\\",\\\"insert-newline\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\",\\\"step\\\"],[\\\"number\\\",\\\"form-control add-fields inline-input\\\",[24,[\\\"field\\\",\\\"ext\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[24,[\\\"placeholder\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]],[24,[\\\"any\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\",\\\"step\\\"],[\\\"number\\\",\\\"form-control add-fields\\\",[24,[\\\"field\\\",\\\"ext\\\"]],[24,[\\\"placeholder\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]],[24,[\\\"any\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/number.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"kug54w3M\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"settings\\\",\\\"edit\\\"]]],null,{\\\"statements\\\":[[4,\\\"unless\\\",[[24,[\\\"settings\\\",\\\"own_profile\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"send\\\",\\\"resetPsw\\\"],[[\\\"preventDefault\\\"],[true]]],[8],[1,[28,\\\"t\\\",[\\\"general.reset_password\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagname\\\",\\\"class\\\",\\\"replace\\\",\\\"route\\\"],[\\\"button\\\",\\\"btn btn-primary pull-right\\\",true,\\\"users.edit.changepassword\\\"]],{\\\"statements\\\":[[0,\\\"            \\\"],[1,[28,\\\"t\\\",[\\\"general.change_password\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[7,\\\"h4\\\",true],[8],[1,[22,\\\"value\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\"],[[28,\\\"if\\\",[[24,[\\\"showPassword\\\"]],\\\"text\\\",\\\"password\\\"],null],\\\"form-control add-fields\\\",[24,[\\\"field\\\",\\\"ext\\\"]],[24,[\\\"placeholder\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/password.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"crqtQCLu\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"show\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[4,\\\"if\\\",[[24,[\\\"valuePreview\\\"]]],null,{\\\"statements\\\":[[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[22,\\\"name\\\"],false],[0,\\\":\\\"],[9],[0,\\\" \\\"],[1,[22,\\\"valuePreview\\\"],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[4,\\\"if\\\",[[24,[\\\"value\\\"]]],null,{\\\"statements\\\":[[7,\\\"li\\\",true],[8],[1,[22,\\\"name\\\"],false],[0,\\\": \\\"],[1,[22,\\\"valuePreview\\\"],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/preview.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"5Vlct0Ei\",\"block\":\"{\\\"symbols\\\":[\\\"option\\\",\\\"index\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"flex-button-group-container\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"field\\\",\\\"options\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"eq\\\",[[24,[\\\"field\\\",\\\"ext\\\"]],\\\"affects_overtime\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[\\\"btn-m flex-button-group-item-small \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"value\\\"]],[24,[\\\"value\\\"]]],null],\\\"flex-button-group-item-small-selected\\\"],null]]]],[12,\\\"name\\\",[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"ext\\\"]],\\\"-\\\",[23,2,[]]],null]],[3,\\\"action\\\",[[23,0,[]],\\\"customChangeValue\\\",[23,1,[\\\"value\\\"]]]],[8],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"value\\\"]],[24,[\\\"value\\\"]]],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark radio-button-checkbox hidden-xs hidden-sm\\\"],[8],[9]],\\\"parameters\\\":[]},null],[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",[29,[\\\"btn-m btn-lg flex-button-group-item \\\",[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"value\\\"]],[24,[\\\"value\\\"]]],null],\\\"flex-button-group-selected\\\"],null]]]],[12,\\\"name\\\",[28,\\\"concat\\\",[[24,[\\\"field\\\",\\\"ext\\\"]],\\\"-\\\",[23,2,[]]],null]],[3,\\\"action\\\",[[23,0,[]],\\\"customChangeValue\\\",[23,1,[\\\"value\\\"]]]],[8],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[23,1,[\\\"value\\\"]],[24,[\\\"value\\\"]]],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\" \\\"]],\\\"parameters\\\":[]},null],[1,[28,\\\"t\\\",[[23,1,[\\\"text\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1,2]},null],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/radio.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"wh96CVMk\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"field\\\",\\\"type\\\"]],\\\"hdfile\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",true],[8],[1,[22,\\\"valuePreview\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"field\\\",\\\"type\\\"]],\\\"multiselect\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",true],[8],[0,\\\" \\\\n        \\\"],[1,[22,\\\"valuePreview\\\"],false],[0,\\\"\\\\n        \\\"],[1,[28,\\\"ember-popover\\\",null,[[\\\"delay\\\",\\\"text\\\"],[800,[24,[\\\"popoverContents\\\"]]]]],false],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"span\\\",true],[8],[0,\\\" \\\"],[1,[22,\\\"valuePreview\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/report.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"UehDu4vl\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"change\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"fieldRoute\\\"]],\\\"customChangeValue\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/signature.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"GV0ptQxA\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"gt\\\",[[24,[\\\"value\\\",\\\"length\\\"]],1024],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[28,\\\"t\\\",[\\\"validation.textarea_too_long_text\\\"],null],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"focus-out\\\",\\\"disabled\\\"],[\\\"3\\\",\\\"form-control add-fields inline-edit\\\",[24,[\\\"field\\\",\\\"ext\\\"]],\\\"\\\",[24,[\\\"value\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"textarea\\\",null,[[\\\"rows\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"3\\\",\\\"form-control add-fields\\\",[24,[\\\"field\\\",\\\"ext\\\"]],\\\"\\\",[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/textarea.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"aXdVFfCl\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"focus-out\\\",\\\"insert-newline\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"text\\\",\\\"form-control add-fields inline-input\\\",[24,[\\\"field\\\",\\\"ext\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[24,[\\\"placeholder\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"field\\\",\\\"ext\\\"]],[24,[\\\"placeholder\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/textbox.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Ph4HjQmv\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"edit\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"focus-out\\\",\\\"insert-newline\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\"],[\\\"time\\\",\\\"form-control add-fields inline-input\\\",[24,[\\\"field\\\",\\\"ext\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"save\\\"],null],[24,[\\\"placeholder\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"collector/fields/time-field\\\",null,[[\\\"value\\\",\\\"field\\\",\\\"model\\\",\\\"disabled\\\",\\\"change\\\",\\\"_class\\\"],[[24,[\\\"value\\\"]],[24,[\\\"fieldRoute\\\"]],[24,[\\\"model\\\"]],[24,[\\\"disabled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"changeValueByDOMEvent\\\"],null],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/time.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"aVG96yqa\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"change\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"fieldRoute\\\"]],\\\"customChangeValue\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/timerlink.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"3PAp/h1r\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"settings\\\",\\\"edit\\\"]],[23,0,[\\\"model\\\",\\\"id\\\"]]],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagname\\\",\\\"class\\\",\\\"replace\\\",\\\"route\\\"],[\\\"button\\\",\\\"btn btn-primary pull-right\\\",true,\\\"users.edit.changeusername\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"t\\\",[\\\"general.change_username\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[7,\\\"h4\\\",true],[8],[1,[22,\\\"value\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"class\\\",\\\"name\\\",\\\"placeholder\\\",\\\"value\\\",\\\"disabled\\\",\\\"autocapitalize\\\"],[\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"field\\\",\\\"ext\\\"]],[24,[\\\"placeholder\\\"]],[24,[\\\"value\\\"]],[24,[\\\"disabled\\\"]],\\\"off\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/username.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"MmwxyUoS\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"change\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"fieldRoute\\\"]],\\\"customChangeValue\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/weather.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"E24waKGu\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[1,[28,\\\"collector/field-comp\\\",null,[[\\\"field\\\",\\\"forcetype\\\",\\\"_class\\\",\\\"model\\\"],[[24,[\\\"fieldRoute\\\"]],\\\"work-permit-attachment\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/fields/work_permit_attachment.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"1s/EjR9u\",\"block\":\"{\\\"symbols\\\":[\\\"dd\\\",\\\"ddm\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"topmenu \\\",[28,\\\"if\\\",[[24,[\\\"gui\\\",\\\"hideMobileHeader\\\"]],\\\"hide-mobile-header\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"wrapper \\\",[28,\\\"if\\\",[[24,[\\\"hide_topbar\\\"]],\\\"hidden\\\",\\\"\\\"],null]]]],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"brand \\\",[28,\\\"if\\\",[[28,\\\"flag\\\",[\\\"top-header-menu\\\"],null],\\\"hidden-lg hidden-md hidden-sm\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"link hamburger-link\\\"],[12,\\\"data-anchor\\\",\\\"navigation-hamburger-link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"toggleHamburger\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-menu-hamburger\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"header.actions.hamburger\\\"],null]],[8],[0,\\\" \\\"],[9],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"brandLogo\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"topmenu-branding-logo hidden-xs \\\",[28,\\\"if\\\",[[28,\\\"flag\\\",[\\\"top-header-menu\\\"],null],\\\"topmenu-branding-logo-padding-fix\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[5,\\\"link-to\\\",[],[[\\\"@route\\\"],[\\\"dashboard\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                    \\\"],[7,\\\"img\\\",true],[11,\\\"class\\\",[29,[[28,\\\"if\\\",[[28,\\\"is-equal\\\",[[28,\\\"get-current-brand\\\",null,null],\\\"default\\\"],null],\\\"topmenu-branding-logo-movenium\\\",\\\"\\\"],null]]]],[11,\\\"src\\\",[29,[[22,\\\"brandLogo\\\"]]]],[8],[9],[0,\\\"\\\\n                \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\\n\\\"],[4,\\\"unless\\\",[[28,\\\"flag\\\",[\\\"top-header-menu\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"topmenu-branding-separator\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"mysite-header-container \\\",[28,\\\"if\\\",[[28,\\\"flag\\\",[\\\"top-header-menu\\\"],null],\\\"hidden-lg hidden-md hidden-sm\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"mysite-page-header\\\"],[8],[0,\\\"\\\\n                \\\"],[1,[22,\\\"headerText\\\"],false],[0,\\\" \\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"test\\\"],null]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"badge badge-notify\\\"],[8],[0,\\\"beta\\\"],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"flag\\\",[\\\"top-header-menu\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"hidden-xs\\\"],[8],[0,\\\"\\\\n                \\\"],[5,\\\"top-menu\\\",[],[[],[]]],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"icons-right\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"dropdown profile-menu\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[28,\\\"is-equal\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"userlevel\\\"]],\\\"5\\\"],null],[28,\\\"needs\\\",[\\\"!products.mini_entry\\\"],null]],null]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"class\\\",\\\"tagName\\\",\\\"route\\\"],[\\\"shopping-cart link\\\",\\\"div\\\",\\\"settings.products\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"vismaicon vismaicon-dynamic-24 vismaicon-shopping-cart\\\"],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"header.actions.ShoppingCart\\\"],null]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[0,\\\"            \\\"],[5,\\\"bs-dropdown\\\",[[12,\\\"class\\\",\\\"user-profile-dropdown-menu\\\"]],[[\\\"@closeOnMenuClick\\\"],[false]],{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"toggle\\\"]],[],[[\\\"@class\\\"],[[29,[\\\"button nav-button \\\",[28,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.mini_entry\\\"],null],\\\"ml-0\\\"],null]]]]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"profile-img img-circle \\\",[28,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.mini_entry\\\"],null],\\\"ml-0\\\"],null]]]],[11,\\\"title\\\",[28,\\\"t\\\",[\\\"header.actions.profile\\\"],null]],[11,\\\"style\\\",[23,0,[\\\"userImage\\\"]]],[10,\\\"data-anchor\\\",\\\"navigation-top-profile\\\"],[8],[9],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n            \\\"],[6,[23,1,[\\\"menu\\\"]],[],[[\\\"@class\\\"],[\\\"dropdown-menu-right profile-dropdown\\\"]],{\\\"statements\\\":[[0,\\\"\\\\n                \\\"],[5,\\\"profile-modal\\\",[],[[\\\"@dd\\\",\\\"@items\\\",\\\"@profileImg\\\",\\\"@session\\\",\\\"@copyPartnerId\\\",\\\"@changeLanguage\\\",\\\"@communityLink\\\",\\\"@logout\\\"],[[23,1,[]],[23,1,[\\\"items\\\"]],[23,0,[\\\"userImage\\\"]],[22,\\\"session\\\"],[28,\\\"action\\\",[[23,0,[]],\\\"copyPartnerId\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"changeLanguage\\\"],null],[23,0,[\\\"communityLink\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"invalidateSession\\\"],null]]]],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[2]}],[0,\\\"\\\\n            \\\"]],\\\"parameters\\\":[1]}],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[1,[22,\\\"subtle-notifications\\\"],false],[0,\\\"\\\\n        \\\"],[1,[22,\\\"gps-icon\\\"],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"products.mini_entry\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"upgrade-icon\\\",[],[[],[]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[28,\\\"await\\\",[[23,0,[\\\"trialMode\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[5,\\\"trial-period-icon\\\",[],[[\\\"@daysLeft\\\",\\\"@daysUntilLock\\\",\\\"@trialMode\\\",\\\"@canSubscriptionBeCanceled\\\",\\\"@setTrialStatus\\\"],[[23,0,[\\\"trialDaysLeft\\\"]],30,[28,\\\"await\\\",[[23,0,[\\\"trialMode\\\"]]],null],[23,0,[\\\"canSubscriptionBeCanceled\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"setTrialStatus\\\"],null]]]],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"plus-menu\\\",null,[[\\\"refreshMenus\\\",\\\"path\\\"],[[24,[\\\"refreshMenus\\\"]],[24,[\\\"router\\\",\\\"currentRouteName\\\"]]]]],false],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/header.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"/W5zm50+\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[2,\\\"\\\\n<div class='row'>\\\\n    <div class='col-xs-12 text-center'>\\\\n        <h3>{{welcomeMessage}}</h3>\\\\n    </div>\\\\n</div>\\\\n<br>\\\\n\\\\n<div class='row'>\\\\n    <div class='col-sm-6 col-xs-12'>\\\\n        <div class='hidden-xs'>\\\\n            <ul class=\\\\\\\"list-group\\\\\\\">\\\\n                <li class=\\\\\\\"list-group-item\\\\\\\">\\\\n                    <div class='row'>\\\\n                        <div class='col-sm-3 col-md-2'>\\\\n                            <span class='frontpage-icon move move-Left2Filled'></span>\\\\n                        </div>\\\\n                        <div class='col-sm-9 col-md-10'>\\\\n                            <h4>{{t \\\\\\\"welcome.menu_side\\\\\\\"}}</h4>\\\\n                        </div>\\\\n                    </div>\\\\n                </li>\\\\n                <li class=\\\\\\\"list-group-item\\\\\\\">\\\\n                    <div class='row'>\\\\n                        <div class='col-sm-3 col-md-2'>\\\\n                            <span class='frontpage-icon glyphicon glyphicon-menu-hamburger'></span>\\\\n                        </div>\\\\n                        <div class='col-sm-9 col-md-10'>\\\\n                            <h4>{{t \\\\\\\"welcome.hamburger\\\\\\\"}}</h4>\\\\n                        </div>\\\\n                    </div>\\\\n                </li>\\\\n            </ul>\\\\n        </div>\\\\n        <div class='visible-xs'>\\\\n            <ul class=\\\\\\\"list-group\\\\\\\">\\\\n                <li class=\\\\\\\"list-group-item\\\\\\\">\\\\n                    <div class='row'>\\\\n                        <div class='col-xs-3'>\\\\n                            <span class='frontpage-icon glyphicon glyphicon-menu-hamburger'></span>\\\\n                        </div>\\\\n                        <div class='col-xs-9'>\\\\n                            <h4>{{t \\\\\\\"welcome.hamburger\\\\\\\"}}</h4>\\\\n                        </div>\\\\n                    </div>\\\\n                </li>\\\\n                <li class=\\\\\\\"list-group-item\\\\\\\">\\\\n                    <div class='row'>\\\\n                        <div class='col-xs-9'>\\\\n                            <h4>{{t \\\\\\\"welcome.add\\\\\\\"}}</h4>\\\\n                        </div>\\\\n                        <div class='col-xs-3'>\\\\n                            <span class='frontpage-icon move move-PlusMath pull-right'></span>\\\\n                            <span class='clearfix'></span>\\\\n                        </div>\\\\n                    </div>\\\\n                </li>\\\\n                <li class=\\\\\\\"list-group-item\\\\\\\">\\\\n                    <div class='row'>\\\\n                        <div class='col-xs-9'>\\\\n                            <h4>{{t \\\\\\\"welcome.profile\\\\\\\"}}</h4>\\\\n                        </div>\\\\n                        <div class='col-xs-3'>\\\\n                            <span class='frontpage-icon glyphicon glyphicon-user pull-right'></span>\\\\n                            <span class='clearfix'></span>\\\\n                        </div>\\\\n                    </div>\\\\n                </li>\\\\n            </ul>\\\\n        </div>\\\\n    </div>\\\\n    <div class='col-sm-6 hidden-xs'>\\\\n        <ul class=\\\\\\\"list-group\\\\\\\">\\\\n                <li class=\\\\\\\"list-group-item\\\\\\\">\\\\n                    <div class='row'>\\\\n                        <div class='col-sm-9 col-md-10'>\\\\n                            <h4>{{t \\\\\\\"welcome.add\\\\\\\"}}</h4>\\\\n                        </div>\\\\n                        <div class='col-sm-3 col-md-2'>\\\\n                            <span class='frontpage-icon move move-PlusMath pull-right'></span>\\\\n                            <span class='clearfix'></span>\\\\n                        </div>\\\\n                    </div>\\\\n                </li>\\\\n                <li class=\\\\\\\"list-group-item\\\\\\\">\\\\n                    <div class='row'>\\\\n                        <div class='col-sm-9 col-md-10'>\\\\n                            <h4>{{t \\\\\\\"welcome.profile\\\\\\\"}}</h4>\\\\n                        </div>\\\\n                        <div class='col-sm-3 col-md-2'>\\\\n                            <span class='frontpage-icon glyphicon glyphicon-user pull-right'></span>\\\\n                            <span class='clearfix'></span>\\\\n                        </div>\\\\n                    </div>\\\\n                </li>\\\\n            </ul>\\\\n\\\\n    </div>\\\\n</div>\\\\n\\\\n\\\"],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/index.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"1pDx9Qh0\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"style\\\",\\\"margin-top: 50%;\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[22,\\\"loader-icon\\\"],false],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/loading.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"JTwd/uBh\",\"block\":\"{\\\"symbols\\\":[\\\"device\\\"],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"signin \\\",[28,\\\"if\\\",[[24,[\\\"isSeasonTheme\\\"]],\\\"season-background\\\",\\\"default-background\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"container login\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"popup\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"login_header \\\",[28,\\\"if\\\",[[24,[\\\"isOtta\\\"]],\\\"flex-header\\\",\\\"movenium\\\"],null]]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"logo-image\\\"],[11,\\\"src\\\",[22,\\\"logoUrl\\\"]],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"header.path.login\\\"],null]],[8],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"form\\\",false],[12,\\\"class\\\",\\\"form-signin\\\"],[12,\\\"role\\\",\\\"form\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"authenticate\\\"],[[\\\"on\\\"],[\\\"submit\\\"]]],[8],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"errorMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[1,[22,\\\"errorMessage\\\"],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"capsOn\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[1,[28,\\\"t\\\",[\\\"login.capson\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner-addon left-addon\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-user\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"id\\\",\\\"value\\\",\\\"class\\\",\\\"placeholder\\\",\\\"autocapitalize\\\",\\\"focus-out\\\",\\\"key-down\\\"],[\\\"identification\\\",[24,[\\\"identification\\\"]],\\\"form-control add-fields\\\",[28,\\\"t\\\",[\\\"login.username\\\"],null],\\\"off\\\",[28,\\\"action\\\",[[23,0,[]],\\\"setLowercased\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"testcaps\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner-addon left-addon\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"i\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-lock\\\"],[8],[9],[0,\\\"\\\\n                    \\\"],[1,[28,\\\"input\\\",null,[[\\\"id\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\",\\\"placeholder\\\",\\\"autocapitalize\\\",\\\"key-down\\\"],[\\\"password\\\",\\\"form-control add-fields\\\",\\\"password\\\",[24,[\\\"password\\\"]],[28,\\\"t\\\",[\\\"login.password\\\"],null],\\\"off\\\",[28,\\\"action\\\",[[23,0,[]],\\\"testcaps\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n                \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\"],[[24,[\\\"isAuthenticating\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"authenticate\\\"],null],\\\"btn btn-lg btn-primary btn-block\\\",[24,[\\\"disabled\\\"]],[28,\\\"t\\\",[\\\"login.sign_in\\\"],null]]]],false],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"googlessourl\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.or\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[29,[[22,\\\"googlessourl\\\"]]]],[10,\\\"style\\\",\\\"text-decoration: none; background-color:blue\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"isCordova\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"google-sso-button\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                                \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/btn_google_signin_dark_normal_web.png\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                        \\\"],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"vismassourl\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.or\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isTrackingAllowed\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-lg btn-primary btn-block login\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"vismassologin\\\"]],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"general.vismassologin\\\"],null],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",true],[10,\\\"href\\\",\\\"#\\\"],[10,\\\"class\\\",\\\"disabled btn btn-lg btn-primary btn-block login\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"general.vismassologin\\\"],null],false],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n                      \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.vismassologin.error.tracking\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"login-links-container\\\"],[8],[0,\\\"\\\\n\\\\n                    \\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showRegisterLink\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"login-link\\\"],[8],[0,\\\"\\\\n                            \\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[[24,[\\\"loginLink\\\"]]]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"login.register_link_choose\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"login-link\\\"],[8],[0,\\\"\\\\n                        \\\"],[1,[28,\\\"t\\\",[\\\"login.forgot_password\\\"],null],false],[0,\\\" \\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"password\\\"]],{\\\"statements\\\":[[1,[28,\\\"t\\\",[\\\"login.forgot_password_link\\\"],null],false]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"isTrackingAllowed\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"login-link\\\"],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"login.dont_have_account\\\"],null],false],[0,\\\"\\\\n                            \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[22,\\\"create_account_link\\\"]],[8],[0,\\\"\\\\n                            \\\"],[1,[28,\\\"t\\\",[\\\"login.dont_have_account_link\\\"],null],false],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.error.tracking2\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"app-icons\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"mobile_devices\\\"]]],null,{\\\"statements\\\":[[0,\\\"                            \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[23,1,[\\\"link\\\"]]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"app-icon\\\"],[11,\\\"alt\\\",[23,1,[\\\"img_alt\\\"]]],[11,\\\"src\\\",[23,1,[\\\"img\\\"]]],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"mobile\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"app-icons\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"a\\\",true],[11,\\\"href\\\",[24,[\\\"currentMobile\\\",\\\"link\\\"]]],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"img\\\",true],[10,\\\"class\\\",\\\"app-icon\\\"],[11,\\\"alt\\\",[24,[\\\"currentMobile\\\",\\\"img_alt\\\"]]],[11,\\\"src\\\",[24,[\\\"currentMobile\\\",\\\"img\\\"]]],[8],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"            \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n\\\\n\\\\n\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\" \\\"],[2,\\\" /container \\\"],[0,\\\"\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/login.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"EpWh6DXz\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/login/index.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"+PM9Yqil\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/login/register.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"SRDn8qn8\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.company_information\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/login/register/company-info.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"7ZsDbgGj\",\"block\":\"{\\\"symbols\\\":[\\\"product\\\"],\\\"statements\\\":[[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"form-signin-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.header\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-signin\\\"],[10,\\\"role\\\",\\\"form\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"products\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-sm-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"product row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"image\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"img\\\",true],[11,\\\"src\\\",[29,[[23,1,[\\\"image\\\"]]]]],[8],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"h1\\\",true],[8],[1,[23,1,[\\\"header\\\"]],false],[9],[0,\\\"\\\\n                    \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"purify-dom\\\",[[23,1,[\\\"text\\\"]]],null],false],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"check\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"type\\\",\\\"checked\\\"],[\\\"checkbox\\\",[23,1,[\\\"selected\\\"]]]]],false],[0,\\\" \\\"],[1,[28,\\\"t\\\",[\\\"general.merge_to_service\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"price\\\"],[8],[1,[23,1,[\\\"price\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"next\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.next\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/login/register/products.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"wJFtDtZI\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"b\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.promo_title\\\"],null],false],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/login/register/promo-title.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"mXHARLwp\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[0,\\\"\\\\n\\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-signin\\\"],[10,\\\"role\\\",\\\"form\\\"],[8],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"registered-icon\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"done\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"img\\\",true],[10,\\\"src\\\",\\\"img/ratas_anim.gif\\\"],[11,\\\"alt\\\",[28,\\\"t\\\",[\\\"timecleandevice.type.movenium\\\"],null]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"done\\\"]]],null,{\\\"statements\\\":[[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"form-signin-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.registered_header\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.registered_text\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"loginToService\\\"]],[8],[1,[28,\\\"t\\\",[\\\"register.registered_button\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"form-signin-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.wait_title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.wait_text\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/login/register/registrationdone.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"Q8K93F1j\",\"block\":\"{\\\"symbols\\\":[\\\"product\\\"],\\\"statements\\\":[[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"form-signin-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.header\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-signin\\\"],[10,\\\"role\\\",\\\"form\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"ul\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"selectedProductList\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n            \\\"],[7,\\\"li\\\",true],[8],[1,[23,1,[\\\"header\\\"]],false],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-link btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"next\\\"]],[8],[1,[28,\\\"t\\\",[\\\"register.register\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/login/register/summary.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"jdGHp9Np\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h3\\\",true],[10,\\\"class\\\",\\\"form-signin-heading\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.header\\\"],null],false],[9],[0,\\\" \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"autofill\\\"]],[8],[0,\\\"Autofill\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-signin\\\"],[10,\\\"role\\\",\\\"form\\\"],[8],[0,\\\"\\\\n    \\\"],[15,\\\"partials/general-add\\\",[]],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"register.terms\\\"],null],false],[0,\\\" \\\"],[7,\\\"a\\\",true],[10,\\\"target\\\",\\\"_blank\\\"],[11,\\\"href\\\",[29,[[22,\\\"terms_url\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"register.terms_link\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/templates/login/register/userinfo.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"9sgHv2lU\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[28,\\\"mass-edit\\\",null,[[\\\"form\\\",\\\"idsStr\\\",\\\"getback\\\"],[[24,[\\\"model\\\",\\\"form\\\"]],[24,[\\\"model\\\",\\\"ids\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"send\\\"]],\\\"back\\\"],null]]]],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/massedit.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"wu5DgDRk\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"field\\\"],\\\"statements\\\":[[2,\\\"<div class=\\\\\\\"add-container\\\\\\\">\\\"],[0,\\\"\\\\n\\\"],[2,\\\"<div class=\\\\\\\"add-container-item\\\\\\\">\\\"],[0,\\\"\\\\n\\\\n\\\"],[5,\\\"dump-dev\\\",[],[[\\\"@text\\\"],[\\\"OLD general-add\\\"]]],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[1,[28,\\\"gps-icon\\\",null,[[\\\"position\\\"],[\\\"left\\\"]]],false],[0,\\\"\\\\n\\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general.add\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"lowercase\\\"],[8],[4,\\\"if\\\",[[24,[\\\"formName\\\"]]],null,{\\\"statements\\\":[[1,[22,\\\"formName\\\"],false]],\\\"parameters\\\":[]},{\\\"statements\\\":[[1,[28,\\\"t\\\",[[28,\\\"concat\\\",[\\\"header.path.add.\\\",[24,[\\\"form\\\"]]],null]],null],false]],\\\"parameters\\\":[]}],[9],[9],[0,\\\"\\\\n    \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross add-page-cross\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[5,\\\"form-error-message\\\",[],[[\\\"@hasError\\\"],[[23,0,[\\\"hasError\\\"]]]]],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"pretext\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"well\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[22,\\\"pretext\\\"],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"message\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"alert \\\",[22,\\\"messageStatus\\\"]]]],[8],[0,\\\"\\\\n        \\\"],[1,[22,\\\"message\\\"],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"showMessageButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"messageButtonAction\\\"]],[8],[1,[28,\\\"t\\\",[[24,[\\\"messageButtonText\\\"]]],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[0,\\\"        \\\"],[1,[28,\\\"collector-field\\\",null,[[\\\"field\\\",\\\"model\\\",\\\"errors\\\",\\\"external_errors\\\",\\\"save\\\",\\\"settings\\\",\\\"loading\\\",\\\"generalAddAction\\\",\\\"custom_projects\\\",\\\"action\\\",\\\"wait\\\",\\\"FieldValueUpdated\\\"],[[23,2,[]],[24,[\\\"model\\\"]],[24,[\\\"errors\\\"]],[24,[\\\"external_errors\\\"]],[24,[\\\"submitted\\\"]],[24,[\\\"fieldSettings\\\"]],[24,[\\\"loading\\\"]],\\\"generalAddAction\\\",[24,[\\\"custom_projects\\\"]],\\\"showModal\\\",[24,[\\\"wait\\\"]],\\\"FieldValueUpdated\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"stashed_fields\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"stashed-fields\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"show-stashed-link\\\"],[12,\\\"href\\\",\\\"\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"show_stashed_fields\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.add.hide_stashed\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"t\\\",[\\\"general.add.show_stashed\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"glyphicon \\\",[28,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]],\\\"glyphicon-chevron-up\\\",\\\"glyphicon-chevron-down\\\"],null],\\\" \\\"]]],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"panel panel-default \\\",[28,\\\"if\\\",[[24,[\\\"stashed_visible\\\"]],\\\"show-stashed-div\\\",\\\"hide-stashed-div\\\"],null]]]],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"panel-body\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"stashed_fields\\\"]]],[[\\\"key\\\"],[\\\"@identity\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[1,[28,\\\"collector-field\\\",null,[[\\\"field\\\",\\\"show_stashed\\\",\\\"model\\\",\\\"errors\\\",\\\"external_errors\\\",\\\"save\\\",\\\"settings\\\",\\\"loading\\\",\\\"generalAddAction\\\",\\\"custom_projects\\\",\\\"action\\\",\\\"FieldValueUpdated\\\"],[[23,1,[]],true,[24,[\\\"model\\\"]],[24,[\\\"errors\\\"]],[24,[\\\"external_errors\\\"]],[24,[\\\"submitted\\\"]],[24,[\\\"fieldSettings\\\"]],[24,[\\\"loading\\\"]],\\\"generalAddAction\\\",[24,[\\\"custom_projects\\\"]],\\\"showModal\\\",\\\"FieldValueUpdated\\\"]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"and\\\",[[24,[\\\"errors\\\"]],[24,[\\\"submitted\\\"]]],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-danger\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"general_add.error\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"if\\\",[[24,[\\\"validationMessage\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"alert alert-warning\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[22,\\\"validationMessage\\\"],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"unless\\\",[[24,[\\\"hide_all_buttons\\\"]]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[28,\\\"if\\\",[[24,[\\\"hideCancelButton\\\"]],\\\"col-xs-12\\\",\\\"col-xs-6\\\"],null]],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"spin-button\\\",null,[[\\\"spinIsLoading\\\",\\\"action\\\",\\\"classes\\\",\\\"disabled\\\",\\\"saveButtonText\\\",\\\"form\\\"],[[24,[\\\"spinIsLoading\\\"]],[28,\\\"action\\\",[[23,0,[]],[24,[\\\"send\\\"]],\\\"save\\\"],null],\\\"btn btn-m-link btn-block btn-lg\\\",[24,[\\\"disabled\\\"]],[24,[\\\"saveButtonText\\\"]],[24,[\\\"form\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hideCancelButton\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[12,\\\"data-cancel-button\\\",[28,\\\"concat\\\",[[24,[\\\"form\\\"]],\\\"-cancel-button\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.cancel\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[2,\\\"</div>\\\"],[0,\\\"\\\\n\\\"],[2,\\\"</div>\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/partials/general-add.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"o1G5j4gQ\",\"block\":\"{\\\"symbols\\\":[\\\"field\\\",\\\"field\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"visible-xs general-add-menu-overlay\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saved.title\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"linkParam\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"route\\\",\\\"model\\\"],[\\\"a\\\",[24,[\\\"link\\\"]],[24,[\\\"linkParam\\\"]]]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cross add-page-cross\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"route\\\"],[\\\"a\\\",[24,[\\\"link\\\"]]]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Cross add-page-cross\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row hidden-xs\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"text-center\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saved.title\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-8 col-md-offset-2 col-lg-6 col-lg-offset-3\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"list-group\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"fields\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[23,2,[\\\"title\\\"]],false],[0,\\\": \\\"],[9],[1,[23,2,[\\\"value\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[2]},null],[4,\\\"if\\\",[[24,[\\\"additional_fields\\\"]]],null,{\\\"statements\\\":[[4,\\\"each\\\",[[24,[\\\"additional_fields\\\"]]],[[\\\"key\\\"],[\\\"@index\\\"]],{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"list-group-item\\\"],[8],[7,\\\"b\\\",true],[8],[1,[23,1,[\\\"title\\\"]],false],[0,\\\": \\\"],[9],[1,[23,1,[\\\"value\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"linkParam\\\"]]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\",\\\"model\\\"],[\\\"a\\\",\\\"hidden-xs btn btn-m-link btn-lg btn-block\\\",[24,[\\\"link\\\"]],[24,[\\\"linkParam\\\"]]]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"data-anchor\\\",\\\"saved-button-ok\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"route\\\"],[\\\"a\\\",\\\"hidden-xs btn btn-m-link btn-lg btn-block\\\",[24,[\\\"link\\\"]]]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"data-anchor\\\",\\\"saved-button-ok\\\"],[8],[1,[28,\\\"t\\\",[\\\"general.ok\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[4,\\\"unless\\\",[[24,[\\\"hideAddLinks\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"hr\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"saved.what_next\\\"],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"saved-next-actions\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"addPage\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"title\\\",\\\"route\\\"],[\\\"div\\\",\\\"saved-next-button\\\",[28,\\\"t\\\",[\\\"saved.add_new\\\"],null],[24,[\\\"addPage\\\"]]]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-PlusMath\\\"],[10,\\\"data-anchor\\\",\\\"saved-button-addnew\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[4,\\\"unless\\\",[[24,[\\\"hideAddSame\\\"]]],null,{\\\"statements\\\":[[7,\\\"a\\\",false],[12,\\\"class\\\",\\\"saved-next-button\\\"],[12,\\\"title\\\",[29,[[28,\\\"t\\\",[\\\"saved.add_same\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"addSame\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-CopyRow\\\"],[10,\\\"data-anchor\\\",\\\"saved-button-addsame\\\"],[8],[9],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[4,\\\"if\\\",[[24,[\\\"editRoute\\\"]]],null,{\\\"statements\\\":[[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"title\\\",\\\"route\\\",\\\"model\\\"],[\\\"div\\\",\\\"saved-next-button\\\",[28,\\\"t\\\",[\\\"saved.edit_new\\\"],null],[24,[\\\"editRoute\\\"]],[24,[\\\"model\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Pencil\\\"],[10,\\\"data-anchor\\\",\\\"saved-button-edit\\\"],[8],[9]],\\\"parameters\\\":[]},null]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[4,\\\"link-to\\\",null,[[\\\"tagName\\\",\\\"classNames\\\",\\\"title\\\",\\\"query\\\"],[\\\"div\\\",\\\"saved-next-button\\\",[28,\\\"t\\\",[\\\"saved.send_as_email\\\"],null],[28,\\\"hash\\\",null,[[\\\"action\\\"],[\\\"email\\\"]]]]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Message\\\"],[10,\\\"data-anchor\\\",\\\"saved-button-email\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"hr\\\",true],[10,\\\"class\\\",\\\"normal\\\"],[8],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"is-equal\\\",[[24,[\\\"action\\\"]],\\\"email\\\"],null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"export-modal\\\",null,[[\\\"sendEmailAction\\\",\\\"showEmailModal\\\",\\\"initType\\\",\\\"form\\\",\\\"showApprovalLinkSelection\\\",\\\"count\\\",\\\"emailSent\\\",\\\"loading\\\",\\\"currentTemplate\\\",\\\"action\\\",\\\"pdf_exports\\\"],[\\\"send_email\\\",true,\\\"email\\\",[24,[\\\"form\\\"]],[24,[\\\"showApprovalLinkSelection\\\"]],1,[24,[\\\"emailSent\\\"]],[24,[\\\"loading\\\"]],[24,[\\\"currentTemplate\\\"]],[24,[\\\"action\\\"]],[24,[\\\"pdfExports\\\"]]]]],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/partials/saved.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"1W8tgbuV\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/register/service.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"1KJH7TYO\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.info1\\\"],null],false],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"dev-helper\\\",null,null]],null,{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"autofill\\\"]],[8],[0,\\\"Autofill\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.page1_text\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"form\\\",true],[10,\\\"class\\\",\\\"form-signin\\\"],[10,\\\"role\\\",\\\"form\\\"],[8],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"firstname\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"firstname\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.firstname\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"firstname\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"firstname\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\",\\\"focus-in\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"firstname\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"firstname\\\",[24,[\\\"model\\\",\\\"firstname\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\",\\\"firstname\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"firstname\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"lastname\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"lastname\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.lastname\\\"],null],false],[9],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"lastname\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"lastname\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\",\\\"focus-in\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"lastname\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"lastname\\\",[24,[\\\"model\\\",\\\"lastname\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\",\\\"lastname\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"lastname\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"lastname\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"email\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"email\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.email\\\"],null],false],[9],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"email\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"email\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"focus-out\\\",\\\"focus-in\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"email\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"validateEmail\\\",\\\"email\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\",\\\"email\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"email\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"email\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"inner-addon right-addon\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"login.password\\\"],null],false],[9],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"password\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"password\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"id\\\",\\\"class\\\",\\\"type\\\",\\\"value\\\",\\\"autocapitalize\\\",\\\"focus-out\\\",\\\"focus-in\\\"],[\\\"password\\\",\\\"form-control add-fields\\\",\\\"textfield\\\",[24,[\\\"model\\\",\\\"password\\\"]],\\\"off\\\",[28,\\\"action\\\",[[23,0,[]],\\\"validatePassword\\\",\\\"password\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\",\\\"password\\\"],null]]]],false],[0,\\\"\\\\n\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.company_information\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"company\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"company\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.company\\\"],null],false],[9],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"company\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"company\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\",\\\"focus-out\\\",\\\"focus-in\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"company\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"company\\\",[24,[\\\"model\\\",\\\"company\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"setFilled\\\",\\\"company\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\",\\\"company\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"company\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"company\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"vatin\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"vatin\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.vatin\\\"],null],false],[9],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"vatin\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"vatin\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\",\\\"focus-in\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"vatin\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"vatin\\\",[24,[\\\"model\\\",\\\"vatin\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\",\\\"vatin\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"vatin\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"vatin\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"phone\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"phone\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.phone\\\"],null],false],[9],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"phone\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"phone\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\",\\\"focus-in\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"phone\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"phone\\\",[24,[\\\"model\\\",\\\"phone\\\"]]],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\",\\\"phone\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"phone\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"phone\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"country\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"country\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.country\\\"],null],false],[9],[0,\\\" \\\"],[7,\\\"sup\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-asterisk field-icon\\\"],[8],[9],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"country\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"country\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"fast-select\\\",null,[[\\\"content\\\",\\\"value\\\",\\\"prompt\\\",\\\"class\\\"],[[24,[\\\"countries\\\"]],[24,[\\\"model\\\",\\\"country\\\"]],[28,\\\"t\\\",[\\\"general.select_choose\\\"],null],\\\"form-control add-fields\\\"]]],false],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"country\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"country\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"domain\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"domain\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.domain\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"domain\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"domain\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"focus-out\\\",\\\"focus-in\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"domain\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"domain\\\"],null],[28,\\\"action\\\",[[23,0,[]],\\\"clearErrors\\\",\\\"domain\\\"],null]]]],false],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"domain\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"domain\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.promo_title\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"promocode\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"promocode\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.promocode\\\"],null],false],[9],[0,\\\" \\\"],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"promocode\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"promocode\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"autocapitalize\\\",\\\"autocorrect\\\",\\\"autocomplete\\\",\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"value\\\",\\\"key-up\\\"],[\\\"off\\\",\\\"off\\\",\\\"off\\\",\\\"field\\\",\\\"text\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"promocode\\\"]],[28,\\\"action\\\",[[23,0,[]],\\\"change\\\",\\\"promocode\\\",[24,[\\\"model\\\",\\\"promocode\\\"]]],null]]]],false],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"promocode\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"promocode\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-6\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"form-group report-main \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"skip_trial\\\",\\\"ok\\\"]],\\\"has-success\\\"],null],\\\" \\\",[28,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"skip_trial\\\",\\\"error\\\"]],\\\"has-error\\\"],null],\\\" has-feedback\\\"]]],[8],[0,\\\"\\\\n                \\\"],[7,\\\"label\\\",true],[10,\\\"for\\\",\\\"\\\"],[10,\\\"class\\\",\\\"add-field-title\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.skip_trial\\\"],null],false],[9],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"skip_trial\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"text-danger pull-right\\\"],[8],[1,[24,[\\\"validationstate\\\",\\\"skip_trial\\\",\\\"error\\\"]],false],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[1,[28,\\\"input\\\",null,[[\\\"name\\\",\\\"type\\\",\\\"class\\\",\\\"checked\\\"],[\\\"field\\\",\\\"checkbox\\\",\\\"form-control add-fields\\\",[24,[\\\"model\\\",\\\"skip_trial\\\"]]]]],false],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"skip_trial\\\",\\\"ok\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-ok form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                \\\"],[4,\\\"if\\\",[[24,[\\\"validationstate\\\",\\\"skip_trial\\\",\\\"error\\\"]]],null,{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove form-control-feedback\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"register.terms\\\"],null],false],[0,\\\" \\\"],[7,\\\"a\\\",true],[10,\\\"target\\\",\\\"_blank\\\"],[11,\\\"href\\\",[29,[[22,\\\"terms_url\\\"]]]],[8],[1,[28,\\\"t\\\",[\\\"register.terms_link\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"br\\\",true],[8],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/register/service/adddetails.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"8pG8ajfW\",\"block\":\"{\\\"symbols\\\":[\\\"product\\\"],\\\"statements\\\":[[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.page3\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[7,\\\"table\\\",true],[10,\\\"class\\\",\\\"table table-responsive\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.amounts_productname\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.amounts_price\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.amounts_amount\\\"],null],false],[9],[0,\\\"\\\\n        \\\"],[7,\\\"th\\\",true],[10,\\\"class\\\",\\\"last\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.amounts_total\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"tbody\\\",true],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"product_list\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"first\\\"],[8],[1,[23,1,[\\\"name\\\"]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[1,[28,\\\"currency\\\",[[23,1,[\\\"price\\\"]],[23,1,[\\\"currency\\\"]]],null],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"glyphicon glyphicon-remove\\\"],[10,\\\"aria-hidden\\\",\\\"true\\\"],[8],[9],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"tdinput\\\"],[8],[1,[28,\\\"input\\\",null,[[\\\"value\\\",\\\"class\\\",\\\"placeholder\\\"],[[23,1,[\\\"amount\\\"]],\\\"form-control add-fields\\\",[23,1,[\\\"placeholder\\\"]]]]],false],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"last\\\"],[8],[1,[28,\\\"currency\\\",[[23,1,[\\\"rowprice\\\"]],[23,1,[\\\"currency\\\"]]],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"    \\\"],[9],[0,\\\"\\\\n    \\\"],[7,\\\"tfoot\\\",true],[8],[0,\\\"\\\\n        \\\"],[7,\\\"tr\\\",true],[8],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"td\\\",true],[10,\\\"class\\\",\\\"last\\\"],[8],[1,[28,\\\"t\\\",[\\\"workday.sum\\\"],null],false],[0,\\\"    \\\"],[1,[28,\\\"currency\\\",[[24,[\\\"sum\\\"]],[24,[\\\"sumcurrency\\\"]]],null],false],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/register/service/amounts.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"C09QzvR7\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.page4_header\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"username\\\"]]],null,{\\\"statements\\\":[[0,\\\"\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"bigtext\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.page4_text3\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"bigtext\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.page4_text1\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"highlight\\\"],[8],[1,[22,\\\"username\\\"],false],[9],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"bigtext\\\"],[8],[1,[28,\\\"t\\\",[\\\"register.page4_text2\\\"],null],false],[0,\\\" \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"highlight\\\"],[8],[1,[22,\\\"password\\\"],false],[9],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-primary btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"login\\\"]],[8],[1,[28,\\\"t\\\",[\\\"register.button_login\\\"],null],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"    \\\"],[1,[28,\\\"t\\\",[\\\"general.loading\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/register/service/done.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"x9+c55BZ\",\"block\":\"{\\\"symbols\\\":[\\\"product\\\"],\\\"statements\\\":[[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.info2\\\"],null],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"t\\\",[\\\"register.page2_text\\\"],null],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n\\\"],[4,\\\"promo-component\\\",null,[[\\\"start\\\",\\\"end\\\"],[\\\"2016-11-23\\\",\\\"2016-11-27\\\"]],{\\\"statements\\\":[[0,\\\"    \\\"],[7,\\\"h2\\\",true],[8],[1,[28,\\\"t\\\",[\\\"promomessage.current_header\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[1,[28,\\\"t\\\",[\\\"promomessage.current_text\\\"],null],false],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row product_card_row\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"each\\\",[[24,[\\\"_products\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"col-xs-12 col-sm-6 col-md-4 product_card_holder\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"click\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"product_card \\\",[28,\\\"if\\\",[[23,1,[\\\"selected\\\"]],\\\"selected\\\"],null]]]],[8],[0,\\\"\\\\n\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-1\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"icon\\\"]]],null,{\\\"statements\\\":[[0,\\\"                                    \\\"],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[\\\"move \\\",[23,1,[\\\"icon\\\"]],\\\" left-menu menu-icon\\\"]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6\\\"],[8],[0,\\\"\\\\n                                \\\"],[7,\\\"h3\\\",true],[8],[1,[23,1,[\\\"header\\\"]],false],[9],[0,\\\"\\\\n                            \\\"],[9],[0,\\\"\\\\n                        \\\"],[9],[0,\\\"\\\\n\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-sm-7 col-md-6\\\"],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"texts\\\"],[8],[0,\\\"\\\\n                        \\\"],[7,\\\"p\\\",true],[8],[1,[28,\\\"purify-dom\\\",[[23,1,[\\\"text\\\"]]],null],false],[9],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-6 col-sm-5 col-md-6 product_image\\\"],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"image\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"img\\\",true],[11,\\\"src\\\",[29,[[23,1,[\\\"image\\\"]]]]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[7,\\\"p\\\",true],[10,\\\"class\\\",\\\"price\\\"],[8],[1,[28,\\\"currency\\\",[[23,1,[\\\"price\\\"]],[23,1,[\\\"currency\\\"]]],null],false],[0,\\\"\\\\n                \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"price_type\\\"],[8],[1,[23,1,[\\\"pricetype_text\\\"]],false],[9],[9],[0,\\\"\\\\n\\\\n            \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"select_container\\\"],[8],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"checkbox \\\",[28,\\\"if\\\",[[23,1,[\\\"selected\\\"]],\\\"checked\\\"],null]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"selected\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Checkmark\\\"],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"                \\\"],[9],[0,\\\"\\\\n                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"selected\\\"],[8],[1,[28,\\\"if\\\",[[23,1,[\\\"selected\\\"]],[28,\\\"t\\\",[\\\"register.product_selected\\\"],null],[28,\\\"t\\\",[\\\"register.select_product\\\"],null]],null],false],[9],[0,\\\"\\\\n            \\\"],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"link\\\"]]],null,{\\\"statements\\\":[[0,\\\"                    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"info-button\\\"],[8],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Info\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"moreInfo\\\",[23,1,[\\\"link\\\"]]]],[8],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"            \\\"],[9],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[1]},null],[0,\\\"\\\\n\\\"],[9]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/register/service/products.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"gV50Y9bU\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[15,\\\"partials/saved\\\",[]]],\\\"hasEval\\\":true}\",\"meta\":{\"moduleName\":\"tt4/templates/saved.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"J03iWWQ3\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h3\\\",true],[8],[1,[28,\\\"t\\\",[\\\"pl.skatteverket_sent\\\"],null],false],[9],[0,\\\"\\\\n\\\\n\\\"],[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/send-skatteverket.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"SB6kJUuZ\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[7,\\\"h2\\\",true],[8],[1,[22,\\\"header\\\"],false],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-md-12\\\"],[8],[0,\\\"\\\\n            \\\"],[1,[28,\\\"record-list\\\",null,[[\\\"fields\\\",\\\"model\\\"],[[24,[\\\"fields\\\"]],[24,[\\\"model\\\"]]]]],false],[0,\\\"\\\\n        \\\"],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row\\\"],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"col-xs-12 col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"button\\\",false],[12,\\\"class\\\",\\\"btn btn-m-cancel btn-block btn-lg\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"cancel\\\"]],[8],[1,[28,\\\"t\\\",[\\\"general.back\\\"],null],false],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/show.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"2Tyqg6v3\",\"block\":\"{\\\"symbols\\\":[\\\"menu\\\"],\\\"statements\\\":[[7,\\\"div\\\",true],[11,\\\"class\\\",[29,[\\\"hamburger-menu \\\",[28,\\\"if\\\",[[24,[\\\"animateClose\\\"]],\\\"animateClose\\\"],null]]]],[8],[0,\\\"\\\\n    \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"row header\\\"],[8],[0,\\\"\\\\n        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"move move-Cross pull-right\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[9],[0,\\\"\\\\n\\\\n\\\\n        \\\"],[7,\\\"div\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[0,\\\"\\\\n\\\"],[4,\\\"link-to\\\",null,[[\\\"route\\\",\\\"model\\\"],[\\\"users.edit\\\",[24,[\\\"session\\\",\\\"currentUser\\\"]]]],{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"profile-img img-circle\\\"],[11,\\\"style\\\",[22,\\\"userImage\\\"]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"div\\\",true],[10,\\\"class\\\",\\\"profile-name\\\"],[8],[0,\\\"\\\\n            \\\"],[7,\\\"b\\\",true],[8],[1,[24,[\\\"session\\\",\\\"currentUser\\\",\\\"firstname\\\"]],false],[0,\\\" \\\"],[1,[24,[\\\"session\\\",\\\"currentUser\\\",\\\"lastname\\\"]],false],[9],[7,\\\"br\\\",true],[8],[9],[0,\\\"\\\\n            \\\"],[1,[24,[\\\"session\\\",\\\"currentUser\\\",\\\"company_info\\\",\\\"company_name\\\"]],false],[0,\\\" (\\\"],[1,[24,[\\\"session\\\",\\\"currentUser\\\",\\\"partnerid\\\"]],false],[0,\\\")\\\\n        \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[0,\\\"    \\\"],[9],[0,\\\"\\\\n\\\\n    \\\"],[7,\\\"ul\\\",true],[10,\\\"class\\\",\\\"nav nav-sidebar\\\"],[8],[0,\\\"\\\\n\\\"],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"editmode\\\"]]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"h4\\\",true],[8],[1,[28,\\\"t\\\",[\\\"menu.edit.text\\\"],[[\\\"htmlSafe\\\"],[true]]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[4,\\\"each\\\",[[24,[\\\"menus\\\"]]],null,{\\\"statements\\\":[[4,\\\"if\\\",[[24,[\\\"editmode\\\"]]],null,{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",false],[12,\\\"class\\\",\\\"sidebar-editmode\\\"],[12,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,1,[\\\"id\\\"]],\\\"-hamburger-side-menu\\\"],null]],[3,\\\"action\\\",[[23,0,[]],\\\"toggleMenuVisibility\\\",[23,1,[]]]],[8],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[23,1,[\\\"hide_leftmenu\\\"]]],null,{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",true],[8],[7,\\\"s\\\",true],[8],[1,[23,1,[\\\"translated\\\"]],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                        \\\"],[7,\\\"a\\\",true],[8],[1,[23,1,[\\\"translated\\\"]],false],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"                \\\"],[7,\\\"li\\\",true],[11,\\\"data-anchor\\\",[28,\\\"concat\\\",[[23,1,[\\\"id\\\"]],\\\"-hamburger-side-menu\\\"],null]],[8],[0,\\\"\\\\n                    \\\"],[7,\\\"a\\\",false],[12,\\\"class\\\",[29,[[28,\\\"if\\\",[[23,1,[\\\"active\\\"]],\\\"active\\\"],null]]]],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\",[23,1,[]]]],[8],[7,\\\"span\\\",true],[11,\\\"class\\\",[29,[[23,1,[\\\"icon\\\"]],\\\" left-menu\\\"]]],[8],[9],[0,\\\"\\\\n                        \\\"],[1,[23,1,[\\\"translated\\\"]],false],[0,\\\"\\\\n                    \\\"],[9],[0,\\\"\\\\n                \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}]],\\\"parameters\\\":[1]},null],[4,\\\"if\\\",[[28,\\\"needs\\\",[\\\"project.skv_number\\\"],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"openLink\\\",[24,[\\\"skv_report\\\"]]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Law left-menu\\\"],[8],[9],[1,[28,\\\"t\\\",[\\\"menu.skv_web_report\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"li\\\",true],[10,\\\"class\\\",\\\"divider\\\"],[8],[9],[0,\\\"\\\\n        \\\"],[2,\\\" userprofile-stuff \\\"],[0,\\\"\\\\n        \\\"],[7,\\\"li\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[4,\\\"link-to\\\",null,[[\\\"route\\\",\\\"model\\\"],[\\\"users.edit\\\",[24,[\\\"session\\\",\\\"currentUser\\\",\\\"id\\\"]]]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-User left-menu\\\"],[8],[9],[1,[28,\\\"t\\\",[\\\"menu.my_profile\\\"],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"],[4,\\\"if\\\",[[28,\\\"$-gt\\\",[[24,[\\\"session\\\",\\\"currentUser\\\",\\\"services\\\",\\\"linkings\\\",\\\"length\\\"]],0],null]],null,{\\\"statements\\\":[[0,\\\"            \\\"],[7,\\\"li\\\",false],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[4,\\\"link-to\\\",null,[[\\\"route\\\"],[\\\"services\\\"]],{\\\"statements\\\":[[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Settings left-menu\\\"],[8],[9],[1,[28,\\\"t\\\",[\\\"menu.change_service\\\"],null],false]],\\\"parameters\\\":[]},null],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},null],[0,\\\"        \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"openFeedbackModal\\\"]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Message left-menu\\\"],[8],[9],[1,[28,\\\"t\\\",[\\\"general.open_feedback_modal\\\"],null],false],[9],[9],[0,\\\"\\\\n\\\\n        \\\"],[7,\\\"li\\\",true],[8],[7,\\\"a\\\",false],[12,\\\"href\\\",\\\"#\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"invalidateSession\\\"],[[\\\"on\\\"],[\\\"click\\\"]]],[8],[7,\\\"span\\\",true],[10,\\\"class\\\",\\\"move move-Exit left-menu\\\"],[8],[9],[1,[28,\\\"t\\\",[\\\"general.logout\\\"],null],false],[9],[9],[0,\\\"\\\\n    \\\"],[9],[0,\\\"\\\\n\\\\n\\\"],[4,\\\"if\\\",[[24,[\\\"editmode\\\"]]],null,{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"sidebar-edit-icon move move-Save\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"saveMenuState\\\"],[[\\\"on\\\"],[\\\"click\\\"]]],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]},{\\\"statements\\\":[[0,\\\"        \\\"],[7,\\\"span\\\",false],[12,\\\"class\\\",\\\"sidebar-edit-icon move move-Pencil\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"editmode\\\"],[[\\\"on\\\"],[\\\"click\\\"]]],[8],[0,\\\" \\\"],[9],[0,\\\"\\\\n\\\"]],\\\"parameters\\\":[]}],[0,\\\"\\\\n\\\"],[9],[0,\\\"\\\\n\\\"],[7,\\\"div\\\",false],[12,\\\"class\\\",\\\"side-menu-overlay link\\\"],[3,\\\"action\\\",[[23,0,[]],\\\"close\\\"]],[8],[9],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/side-menu.hbs\"}});","export default Ember.HTMLBars.template({\"id\":\"NPQOyNtg\",\"block\":\"{\\\"symbols\\\":[],\\\"statements\\\":[[1,[22,\\\"outlet\\\"],false],[0,\\\"\\\\n\\\"]],\\\"hasEval\\\":false}\",\"meta\":{\"moduleName\":\"tt4/templates/token.hbs\"}});","define(\"tt4/transforms/boolean\", [\"exports\", \"@ember-data/serializer/-private\"], function (_exports, _private) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _private.BooleanTransform;\n    }\n  });\n});\n","define(\"tt4/transforms/date\", [\"exports\", \"@ember-data/serializer/-private\"], function (_exports, _private) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _private.DateTransform;\n    }\n  });\n});\n","define(\"tt4/transforms/number\", [\"exports\", \"@ember-data/serializer/-private\"], function (_exports, _private) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _private.NumberTransform;\n    }\n  });\n});\n","// app/transforms/obj.js\nimport DS from 'ember-data';\n\nexport default DS.Transform.extend({\n    deserialize(serialized) {\n        return serialized;\n    },\n\n    serialize(deserialized) {\n        return deserialized;\n    },\n});\n","define(\"tt4/transforms/string\", [\"exports\", \"@ember-data/serializer/-private\"], function (_exports, _private) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _private.StringTransform;\n    }\n  });\n});\n","// this tests for finnish hetu format 120988-2345\n// return boolean valid\nexport function hetuvalidation(hetu) {\n    const id = hetu.trim();\n\n    if (id.length !== 11) return false;\n\n    const birthdate = id.substr(0, 6);\n    const month = parseInt(birthdate.substr(2, 2));\n    const day = parseInt(birthdate.substr(0, 2));\n    const uniquenum = parseInt(id.substr(7, 3));\n    const checknum = parseInt(id.substr(10, 1));\n\n    if (month > 12 || day > 31) {\n        return false;\n    }\n\n    const concatted = String(birthdate) + String(uniquenum);\n\n    const checknumClaculated = parseInt(concatted) % 31;\n\n    if (checknum !== checknumClaculated) {\n        return false;\n    }\n\n    return true;\n}\n\n// this tests for finnish y-tunnus format  1234567-8\n// return boolean valid\nexport function validateBusinessId(businessid) {\n    const id = businessid.trim();\n    const check = [7, 9, 10, 5, 8, 4, 2];\n\n    if (id.length > 10) {\n        return false;\n    }\n    // regex for NNNNNNN-N\n    if (!/(\\d+)-(\\d)/.test(id)) {\n        return false;\n    }\n\n    // the last digit is a check\n    var nums = RegExp.$1.split('');\n    let checksum = 0;\n    nums.forEach((num, index) => (checksum += num * check[index]));\n    const checknum = 11 - (checksum % 11);\n    if (checknum !== parseInt(RegExp.$2)) {\n        return false;\n    }\n\n    // all checks paased, must be valid\n    return true;\n}\n","define(\"tt4/utils/calculate-position\", [\"exports\", \"ember-basic-dropdown/utils/calculate-position\"], function (_exports, _calculatePosition) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _calculatePosition.default;\n    }\n  });\n});\n","define(\"tt4/utils/can-use-dom\", [\"exports\", \"ember-metrics/utils/can-use-dom\"], function (_exports, _canUseDom) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _canUseDom.default;\n    }\n  });\n});\n","import getScript from 'tt4/utils/getScript';\n\nexport default function (me2, flags, zendesk_key) {\n    if (!me2.userrow) return;\n    if (!me2.userrow.user) return;\n    const { firstname, lastname, email } = me2.userrow.user[0];\n\n    if (flags.test('chatbot_liveleader')) {\n        window.chat = function chat() {\n            (window.lvchtarr = window.lvchtarr || []).push(arguments);\n        };\n        window.chat('visitor', {\n            name: `${firstname} ${lastname}`,\n            email: email,\n        });\n        getScript('https://client.visma.chat/embed.js', {\n            'data-chat-id': 'LIVuLoXDSxRBqjtaxkuBh92w',\n        });\n    }\n\n    if (flags.test('chatbot_zenddesk')) {\n        window.zESettings = {\n            webWidget: {\n                chat: {\n                    departments: { enabled: [] },\n                },\n            },\n        };\n\n        let prefillChat = () => {\n            // zE is a global that comes with the script, so ESLint no likey\n            // eslint-disable-next-line no-undef\n            zE('webWidget', 'prefill', {\n                name: {\n                    value: `${firstname} ${lastname}`,\n                    readOnly: true,\n                },\n                email: {\n                    value: email,\n                    readOnly: true,\n                },\n            });\n        };\n\n        const url = `https://static.zdassets.com/ekr/snippet.js?key=${zendesk_key}`;\n        getScript(url, { id: 'ze-snippet' }).then(prefillChat);\n    }\n}\n","export function getCommunityLink(brand, companyInfo) {\n    // eslint-disable-next-line no-irregular-whitespace\n    if (brand == 'otta') return 'https://ohjeet.visma.fi/articles/#!otta/k-ytt-ohjeet';\n\n    if (!companyInfo) return false;\n    let country = companyInfo.country;\n\n    switch (country) {\n        case 'se':\n            return 'https://community.visma.com/t5/Support-Visma-Construction/bd-p/SE_SW_Visma_Construction_support';\n        case 'fi':\n            return 'https://ohjeet.visma.fi/articles/#!visma-movenium/k-ytt-ohjeet';\n        default:\n            return 'https://ohjeet.visma.fi/articles/#!visma-movenium/k-ytt-ohjeet';\n    }\n}\nexport default { getCommunityLink };\n","define(\"tt4/utils/country\", [\"exports\", \"@movenium/ember-movenium/utils/country\"], function (_exports, _country) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _country.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/utils/custom-reports.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar reports;\n\nreports = {\n    invoices: {\n        host: 'ADMINTOOLURL',\n        path: 'invoice_export',\n        filters: 'bill.date,customer.country,customer.status',\n        form: 'bill',\n        paginate: false,\n    },\n    comissions: {\n        host: 'ADMINTOOLURL',\n        path: 'comissions_export',\n        filters: 'bill.date,customer.country,customer.status',\n        form: 'bill',\n        paginate: false,\n    },\n    activity: {\n        host: 'ADMINTOOLURL',\n        path: 'BI/activity',\n        filters: 'customer.country,customer.status,customer.salesman',\n        form: 'customer',\n        paginate: true,\n    },\n    billinginfomissing: {\n        host: 'ADMINTOOLURL',\n        path: 'BI/missing_billing_info',\n        filters: 'customer.createddate,customer.country,customer.status,customer.salesman',\n        form: 'customer',\n        paginate: true,\n    },\n    tos: {\n        path: '/customers/tosList',\n        form: 'customer',\n        paginate: false,\n    },\n    invoicesat2Netvisor: {\n        host: 'ADMINTOOLURL',\n        path: 'invoice_export?type=vismaNetvisor&billingversion=at2',\n        filters: 'bill.date,customer.country,customer.status',\n        form: 'bill',\n        paginate: false,\n    },\n    invoicesat2: {\n        host: 'ADMINTOOLURL',\n        path: 'invoice_export?type=visma&billingversion=at2',\n        filters: 'bill.date,customer.country,customer.status',\n        form: 'bill',\n        paginate: false,\n    },\n    invoicesat1: {\n        host: 'ADMINTOOLURL',\n        path: 'invoice_export?type=visma&billingversion=at1',\n        filters: 'bill.date,customer.country,customer.status',\n        form: 'bill',\n        paginate: false,\n    },\n    invoicesat2legacy: {\n        host: 'ADMINTOOLURL',\n        path: 'invoice_export?type=visma&billingversion=at2&legacy=true',\n        filters: 'bill.date,customer.country,customer.status',\n        form: 'bill',\n        paginate: false,\n    },\n    invoicesat1legacy: {\n        host: 'ADMINTOOLURL',\n        path: 'invoice_export?type=visma&billingversion=at1&legacy=true',\n        filters: 'bill.date,customer.country,customer.status',\n        form: 'bill',\n        paginate: false,\n    },\n};\n\nexport default reports;\n","import moment from 'moment';\nimport { get } from '@ember/object';\n\nexport function perDate(rows) {\n    let perDate = {};\n    rows.forEach((item) => {\n        const date = get(item, 'date');\n        if (!perDate[date]) {\n            perDate[date] = [];\n        }\n        if (get(item, 'enddate')) {\n            let i = 1;\n            const moment_date = moment(date);\n            const diff = moment(get(item, 'enddate')).diff(moment_date, 'day');\n            perDate[date].push(item);\n            while (i <= diff) {\n                const new_date = moment_date.add(1, 'day').format('YYYY-MM-DD');\n                if (!perDate[new_date]) {\n                    perDate[new_date] = [];\n                }\n                perDate[new_date].push(item);\n                i++;\n            }\n        } else {\n            perDate[date].push(item);\n        }\n    });\n    return perDate;\n}\n","import { Promise as EmberPromise } from 'rsvp';\n\nconst imageTypes = ['image/gif', 'image/png', 'image/jpg', 'image/jpeg'];\nconst downscaleFactor = 0.6; //default amount to shrink image by.. only if width param is not given\n\n/**\n * Returns a Blob from the given URL\n * @param {string} url - url to fetch file from\n * @param {boolean} resize - whether to resize received image or not\n * @returns {object} - {name: \"file\", \"file\": dataUrl}\n */\nexport function getImageFromUrl(url, responseType = 'blob') {\n    if (!url)\n        throw new Error(\n            'Fetching image from url failed because it did not receive the url parameter',\n        );\n    return new EmberPromise((resolve, reject) => {\n        var xhr = new XMLHttpRequest();\n        xhr.open('GET', url, true);\n\n        xhr.responseType = responseType;\n\n        xhr.onload = async () => {\n            let blob = xhr.response;\n            blob.lastModifiedDate = new Date();\n            blob.name = 'file';\n\n            if (!imageTypes.includes(blob.type))\n                throw new Error(\n                    'Image of type ' + blob.type + ' received from ' + url + ' is not allowed',\n                );\n\n            resolve(blob);\n        };\n\n        xhr.onerror = (error) => {\n            reject(error);\n        };\n\n        xhr.send();\n    });\n}\n\n/**\n * Returns a resized dataUrl from the given File OR Blob\n * @param {file || blob || string} file - Original file as File, Blob or DataURL.\n * @param {int} width - Target image width\n * @param {int} height - Target image height\n * @param {int} quality - Image compression as % 0-100 or decimal 0.0 - 1.0 default 50 (0.5)\n * @param {boolean} keepAspectRatio - Maintain image's aspect ratio on resize - default True\n * @returns {string} - resized dataUrl of the given file\n */\nexport function resizeImage(\n    file,\n    width = null,\n    height = null,\n    quality = 80,\n    keepAspectRatio = true,\n) {\n    return new EmberPromise((resolve, reject) => {\n        // if(!width) throw new Error(\"Image resize failed because it did not receive the width parameter\")\n        if (!keepAspectRatio && !height)\n            throw new Error(\n                'Image resize failed because it wanted to change the aspect ratio, but it did not receive the height parameter',\n            );\n\n        const mime = file.type || 'image/jpeg';\n\n        //we want quality to be decimal (like 0.5 for 50%)\n        if (quality % 1 === 0) quality = (quality / 100).toFixed(2);\n\n        const reader = new FileReader();\n\n        if (typeof file === 'string') {\n            file = dataURLtoBlob(file);\n        }\n\n        reader.readAsDataURL(file);\n\n        reader.onloadend = () => {\n            const img = new Image();\n            img.src = reader.result;\n            img.onload = () => {\n                const canvas = document.createElement('canvas');\n                let finalQuality = quality;\n                let finalDownscaleFactor = downscaleFactor;\n\n                // If image is smaller than 1600px in any dimension, we do not downscale it\n                if (img?.width < 1600 || img?.height < 1600) {\n                    finalQuality = 100;\n                    finalDownscaleFactor = 1;\n                }\n\n                //if we do not have a target width just downscale image by some amount\n                if (!width) width = img.width * finalDownscaleFactor;\n                //we calculate scaleFactor from image width to maintain aspect ratio\n                const scaleFactor = width / img.width;\n\n                if (keepAspectRatio) height = img.height * scaleFactor;\n\n                canvas.width = width;\n                canvas.height = height;\n                const ctx = canvas.getContext('2d');\n\n                ctx.drawImage(img, 0, 0, width, height);\n                //resolve canvas as dataURL\n                resolve(canvas.toDataURL(mime, finalQuality));\n            };\n        };\n\n        reader.onerror = (err) => {\n            reject(err);\n        };\n    });\n}\n\n/**\n * @param {string} dataurl - base64\n * @param {string} filename - wanted filename\n */\nexport function dataURLtoBlob(dataurl, filename = 'file') {\n    var arr = dataurl.split(','),\n        mime = arr[0].match(/:(.*?);/)[1],\n        bstr = atob(arr[1]),\n        n = bstr.length,\n        u8arr = new Uint8Array(n);\n    while (n--) {\n        u8arr[n] = bstr.charCodeAt(n);\n    }\n    let blob = new Blob([u8arr], { type: mime });\n    blob.name = filename;\n    blob.lastModifiedDate = new Date();\n    return blob;\n}\n\nexport default { getImageFromUrl, resizeImage, dataURLtoBlob };\n","define(\"tt4/utils/file\", [\"exports\", \"@movenium/ember-movenium/utils/file\"], function (_exports, _file) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _file.default;\n    }\n  });\n});\n","/* eslint-disable */\n// this was decaffenated 2022-02-25 - linting is disabled because we know that there are a lot of problems\n// You can find the old coffee file from app/utils/format.coffee.old\n// Generated by CoffeeScript 2.6.1\nvar FormatUtil;\n\nimport Ember from 'ember';\n\nFormatUtil = Ember.Object.extend({\n    hours: function (hours) {\n        var minutes, negative;\n        if (hours < 0) {\n            hours = hours * -1;\n            negative = true;\n        } else {\n            negative = false;\n        }\n        minutes = Math.round((hours - Math.floor(hours)) * 60);\n        return (\n            (negative ? '-' : '') +\n            Math.floor(hours) +\n            ':' +\n            (minutes < 10 ? '0' : '') +\n            minutes +\n            'h'\n        );\n    },\n    // check name if it has mileage or kilometrit or other\n    // string that possibly should not be converted to hours eg. 12:32h\n    shouldFormatHours: function (name) {\n        if (!name) {\n            return true;\n        }\n        return !/kilometrit|mileage|^km|kilometer/i.test(name);\n    },\n});\n\nexport default FormatUtil;\n","export function getAssetFolder(name) {\n    if (window.cordova) {\n        return window.cordova.file.applicationDirectory + 'www/' + name + '/';\n    }\n\n    return '/' + name + '/';\n}\n\nexport default function getScript(source, attributes) {\n    let promises = [];\n    window.Tt4.loadedScripts = window.Tt4.loadedScripts || [];\n    let sources = source.split(',');\n    sources.forEach((element) => {\n        promises.push(\n            new Promise((resolve, reject) => {\n                if (window.Tt4.loadedScripts.includes(element)) {\n                    // we already have element\n                    resolve();\n                    return;\n                }\n\n                try {\n                    const el = document.createElement('script');\n                    if (attributes) {\n                        Object.keys(attributes).forEach((key) => {\n                            el.setAttribute(key, attributes[key]);\n                        });\n                    }\n                    el.onload = resolve;\n                    el.src = element;\n                    window.Tt4.loadedScripts.push(element);\n                    document.head.appendChild(el);\n                } catch (error) {\n                    reject(error);\n                }\n            }),\n        );\n    });\n    return Promise.all(promises);\n}\n\n/*\n * If we have to prevent race condition\n * this makes sure, scripts are loaded one\n * at a time\n */\nexport function getScriptsInOrder(array) {\n    return new Promise(async function (resolve) {\n        for (let script of array) {\n            await getScript(script);\n        }\n        resolve();\n    });\n}\n","define(\"tt4/utils/gui\", [\"exports\", \"@movenium/ember-movenium/utils/gui\"], function (_exports, _gui) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _gui.default;\n    }\n  });\n});\n","import { warn } from '@ember/debug';\nimport Ember from 'ember';\n\nexport default function missingMessage(key, locales) {\n    if (key && typeof key === 'string' && key.includes('.') && !Ember.testing && Ember.devModeOn) {\n        warn(`Missing translation for key \"${key}\" in locale \"${locales}\"`, {\n            id: 'missing-translation',\n        });\n    }\n    return key;\n}\n","import { get } from '@ember/object';\n\nexport default function isDisabled(field, model) {\n    if (model && !get(model, 'isNew') && get(field, 'features.lock_value')) {\n        for (let set of Array.from(get(field, 'features.lock_value'))) {\n            for (let k in set) {\n                var needle;\n                const v = set[k];\n                if (((needle = get(model, k)), Array.from(v.split(',')).includes(needle))) {\n                    return true;\n                }\n            }\n        }\n    }\n    if (typeof get(field, 'features.disabled') === 'object') {\n        if (!model) {\n            return false;\n        }\n        const condition = get(field, 'features.disabled.condition');\n        if (\n            condition &&\n            condition.indexOf('$editing') >= 0 &&\n            get(field, 'features.disabled.value') === true &&\n            !get(model, 'isNew') === true &&\n            condition.indexOf('$wap') === -1\n        ) {\n            return true;\n        } else if (\n            get(field, 'features.disabled.value') === true &&\n            !get(field, 'features.disabled.condition')\n        ) {\n            return true;\n        }\n    } else if (get(field, 'form') === 'worktime' && get(field, 'options.form') === 'project') {\n        return false;\n    } else if (get(field, 'features.disabled')) {\n        return true;\n    }\n    return false;\n}\n","define(\"tt4/utils/object-transforms\", [\"exports\", \"ember-metrics/utils/object-transforms\"], function (_exports, _objectTransforms) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _objectTransforms.default;\n    }\n  });\n});\n","define(\"tt4/utils/pdf-export\", [\"exports\", \"@movenium/ember-movenium/utils/pdf-export\"], function (_exports, _pdfExport) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _pdfExport.default;\n    }\n  });\n});\n","import QRCode from 'qrcode-generator';\n\nexport function generateQrCode(url) {\n    const qr = QRCode(0, 'L');\n    qr.addData(url);\n    qr.make();\n    return qr.createDataURL(8);\n}\n","define(\"tt4/utils/remove-from-dom\", [\"exports\", \"ember-metrics/utils/remove-from-dom\"], function (_exports, _removeFromDom) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _removeFromDom.default;\n    }\n  });\n});\n","define(\"tt4/utils/render-classic-chart\", [\"exports\", \"ember-google-charts/utils/render-classic-chart\"], function (_exports, _renderClassicChart) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _renderClassicChart.default;\n    }\n  });\n});\n","define(\"tt4/utils/render-material-chart\", [\"exports\", \"ember-google-charts/utils/render-material-chart\"], function (_exports, _renderMaterialChart) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _renderMaterialChart.default;\n    }\n  });\n});\n","define(\"tt4/utils/save-the-children\", [\"exports\", \"@movenium/ember-movenium/utils/save-the-children\"], function (_exports, _saveTheChildren) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _saveTheChildren.default;\n    }\n  });\n});\n","import config from 'tt4/config/environment';\n\nexport default async function initSnowPlow(me2Promise) {\n    //console.log(ApplicationInstance.lookup('service:customer-settings'))\n    // let owner = getOwner(app);\n    //const customerSettings = app.lookup('service:customer-settings');\n\n    const userdata = await me2Promise;\n\n    (function (p, l, o, w, i, n, g) {\n        if (!p[i]) {\n            p.GlobalSnowplowNamespace = p.GlobalSnowplowNamespace || [];\n            p.GlobalSnowplowNamespace.push(i);\n            p[i] = function () {\n                (p[i].q = p[i].q || []).push(arguments);\n            };\n            p[i].q = p[i].q || [];\n            n = l.createElement(o);\n            g = l.getElementsByTagName(o)[0];\n            n.async = 1;\n            n.src = window.cordova ? 'https:' + w : w; // if using cordova, we have to define protocol otherwise it will try to load file from local file-system file://\n            g.parentNode.insertBefore(n, g);\n        }\n    })(\n        window,\n        document,\n        'script',\n        '//storage.googleapis.com/snowplow-cto-office-tracker-bucket/3.1.1/sp.js',\n        'snowplow',\n    );\n\n    const PLATFORM = window.cordova ? 'app' : 'web';\n\n    // customerSettings.getSettings()\n    //     .then(function(data) {\n    //         console.log(data)\n    //     })\n\n    window.snowplow('newTracker', 'cf', 'https://snowplow.visma.com', {\n        // Initialise a tracker\n        appId: config.snowPlow.app_id,\n        platform: PLATFORM, // possible values (default is web): web, mob, app, pc, srv\n        // anonymousTracking: true, // Use this option in case you want to anonymise your tracking. This will set user_ids and domain ids to 'null'\n        contexts: {\n            webPage: true, // Common id for webpages\n            performanceTiming: true, // Creates performance contexts to create performance metrics of pages\n            //geolocation: true    // Prompts user for geolocation data\n        },\n    });\n\n    // DEFINING CONTEXTS --------------- Check the event dictionary (https://docs.google.com/spreadsheets/d/1G_Xqdj3qo8MqD5T_YAoMjYGPD380FrqkNbvYBlIkF-A/edit?usp=sharing) to understand how each event or context should be used.\n\n    // Each optional field can be removed if not needed\n    var context_customer = {\n        customer_name: userdata.company_info.company_name, // Main company name\n        company_name: userdata.company_info.company_name, // Secondary company name. Set equal to customer_name or leave blank if inapplicable\n        organization_no: userdata.company_info.id.toString(),\n        countryiso: userdata.company_info.country.toUpperCase(), // Must be exactly two string characters. Follows the IBAN ALPHA-2 code https://www.iban.com/country-codes\n        business_unit: 'SW FI',\n        customfield_customer1: new Date(userdata.company_info.row_info.created).toISOString().slice(0, 10), // This works as company registration date, no need update snowplow schemas\n    };\n    var context_product = {\n        r12: config.snowPlow.r12, // Get from column R12 Product Line in https://docs.google.com/spreadsheets/d/1grDHVaMsXXPty9Za9UzI935laWGIqyJntEknstsjMWs/edit?usp=sharing\n        product_name: config.snowPlow.product_name,\n    };\n\n    var context_user = {\n        user_type: userdata.userrow.user[0].userlevel,\n        registration_date : new Date(userdata.userrow.user[0].row_info.created).toISOString().slice(0, 10), // Must follow exact date format \"YYYY-MM-DD\"\n        // \"customfield_user1\" : \"ADD\",\n        // \"customfield_user2\" : \"ADD\",\n        // \"customfield_user3\" : \"ADD\"\n    };\n    // var context_custom = {\n    //     \"custom_name\" : \"ADD\",\n    //     \"customfield_custom1\" : \"ADD\",\n    //     \"customfield_custom2\" : \"ADD\",\n    //     \"customfield_custom3\" : \"ADD\"\n    // };\n    // var context_deletion = {\n    //     \"deletion_id\" : \"ADD\",\n    //     \"deletion_id2\" : \"ADD\"\n    // };\n\n    // Place all contexts in a list. Remove contexts from lists if not used.\n    var contexts = [\n        {\n            schema: 'iglu:com.visma-tech-hubs/context_customer/jsonschema/1-0-0',\n            data: context_customer,\n        },\n        {\n            schema: 'iglu:com.visma-tech-hubs/context_product/jsonschema/1-0-0',\n            data: context_product,\n        },\n        { schema: 'iglu:com.visma-tech-hubs/context_user/jsonschema/1-0-0', data: context_user },\n        // {'schema': 'iglu:com.visma-tech-hubs/context_custom/jsonschema/1-0-0', 'data': context_custom},\n        // {'schema': 'iglu:com.visma-tech-hubs/context_deletion/jsonschema/1-0-0', 'data': context_deletion}\n    ];\n    // DEFINING CONTEXTS END ---------------\n\n    window.snowplow('setUserId', userdata.userrow.user[0].id); // Create a user id. User Id will be anonymized.\n\n    // Add global contexts to all events so those will be sent with custom structured events also\n    const contextGenerator = (args) => {\n        if (args.eventType == 'se') {\n            return contexts;\n        }\n    };\n    window.snowplow('addGlobalContexts', [contextGenerator]);\n\n    // EVENT METHODS ---------------\n\n    // Initialize link click events with contexts. Only works on HTML objects with \"a\" tags\n    window.snowplow('enableLinkClickTracking', {\n        context: contexts,\n        pseudoClicks: true,\n        trackContent: true,\n    });\n    // To track linkclicks on objects (e.g. buttons) other than \"a\" tagged, use following snippet and paste after the content in body/page has been loaded\n    /*\n        buttons = document.querySelectorAll('button')\n\n        buttons.forEach(function(elem) {\n          elem.addEventListener(\"click\", function() {\n            snowplow('trackLinkClick', {\n              targetUrl: 'http://www.example.com',\n              elementId: 'first-link',\n              elementClasses: ['class-1', 'class-2'],\n              elementTarget: '',\n              elementContent: 'this page',\n              context: contexts\n            });\n          });\n        });\n    */\n\n    /*\n    NOTE!! If using Form Tracking, make sure to only track fields with non-sensible information. To do this, add a config variable to the second argument (row 100 for example).\n    Fields labelled password are already excluded by default\n    var opts = {\n          forms: {\n            denylist: []\n          },\n          fields: {\n            denylist: ['password']\n          }\n        };\n    window.snowplow('enableFormTracking', { options: opts, context: contexts });\n    */\n    // window.snowplow('enableFormTracking', { options: {}, context: contexts });\n\n    // Enable page ping events. Contexts are added based on 'trackPageView'. The enableActivityTracking method must be called before the trackPageView method.\n    window.snowplow('enableActivityTracking', {\n        minimumVisitLength: 10,\n        heartbeatDelay: 10,\n    });\n\n    // Initialize page view events. Timer is reset for each time the page is loaded\n    window.snowplow('trackPageView', { title: null, context: contexts });\n    /*\n    // Custom structured event, send in event with up to any 5 values\n    // (OBS! Only if applicable and triggerpoint must be added)\n    // se_category      se_action       se_label        se_property     se_value\n    window.snowplow('trackStructEvent', {\n              category: 'se_category',\n              action: 'se_action',\n              label: 'se_label',\n              property: 'se_property',\n              value: 1.0,\n              context: contexts\n            });\n\n\n    // Self-describing events, send in event for a self-defined event with a published json schema\n    // (OBS! Only applicable if an event json schema has been published and custom event is required. Remove or comment out if not used)\n    var booking_data = {\n        \"booking_no\" : \"NO1323452\",\n        \"date_travel\" : \"2020-04-08\",\n        \"travel_type\" : \"Leisure\",\n        \"destination\" : \"Barcelona, Spain\"\n    };\n\n    window.snowplow('trackSelfDescribingEvent', {\n        event: {\n            schema: 'iglu:com.visma-tech-hubs/create_booking/jsonschema/1-0-0',\n            data: booking_data\n        },\n        context: contexts\n    });\n    */\n\n    // EVENT METHODS END ---------------\n}\n","define(\"tt4/utils/sort\", [\"exports\", \"@movenium/ember-movenium/utils/sort\"], function (_exports, _sort) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _sort.default;\n    }\n  });\n});\n","import EmberObject from '@ember/object';\n\nexport default EmberObject.extend({\n    canChangeStatus(rows, status, field) {\n        let rejected = [];\n        let accepted = [];\n        rows.forEach((row) => {\n            if (this.notEditable(row)) {\n                rejected.push(row);\n            } else if (this.onlyOption(status, field)) {\n                rejected.push(row);\n            } else if (this.readOnly(field)) {\n                rejected.push(row);\n            } else {\n                accepted.push(row);\n            }\n        });\n        return { accepted: accepted, rejected: rejected };\n    },\n\n    notEditable(row) {\n        if ('isEditable' in row && !row.isEditable) {\n            return true;\n        }\n    },\n    onlyOption(status, field) {\n        if (field && field.features.only_options) {\n            let only_options = field.features.only_options.split(',');\n            if (!only_options.includes(status)) {\n                return true;\n            }\n        }\n    },\n    readOnly(field) {\n        if (field && field.features.readonly) {\n            return true;\n        }\n    },\n});\n","// Stonly widget installation script converted with ChatGPT\n// https://app.stonly.com/app/general/39226/widget/WidgetSettings/Installation\nexport default function initStonly(id) {\n    if (id) {\n        window.STONLY_WID = id || '1e6aaf2b-fa22-11ed-871a-0a52ff1ec764'; // Visma Devenor Stonly ID\n        var s = window,\n            t = document,\n            o = 'script',\n            n = 'https://stonly.com/js/widget/v2/',\n            l,\n            y,\n            w,\n            g,\n            d,\n            e;\n        s.StonlyWidget ||\n            (((d = s.StonlyWidget =\n                function () {\n                    d._api ? d._api.apply(d, arguments) : d.queue.push(arguments);\n                }).scriptPath = n),\n            (d.apiPath = l),\n            (d.sPath = y),\n            (d.queue = []),\n            ((g = t.createElement(o)).async = !0),\n            (e = new XMLHttpRequest()).open('GET', n + 'version?v=' + Date.now(), !0),\n            (e.onreadystatechange = function () {\n                4 === e.readyState &&\n                    ((g.src =\n                        n +\n                        'stonly-widget.js?v=' +\n                        (200 === e.status ? e.responseText : Date.now())),\n                    (w = t.getElementsByTagName(o)[0]).parentNode.insertBefore(g, w));\n            }),\n            e.send());\n    } else {\n        // Log an error if id is not provided\n        // eslint-disable-next-line no-console\n        console.error('No widget id parameter provided. Skipping Stonly widget initialization.');\n    }\n}\n","import { typeOf } from '@ember/utils';\n\nexport function getSums(data, columns, form, collector, pdfSumrow = false) {\n    const summableFieldTypes = [\n        'date',\n        'hours',\n        'number',\n        'checkbox',\n        'decimal',\n        'price',\n        'big_price',\n        'minutes',\n        'dropdown_values',\n    ];\n    let summableFields = collector\n        .fieldArray(form)\n        .filter((field) => summableFieldTypes.includes(field.type));\n    if (!summableFields) return;\n\n    let sums = {};\n\n    data.forEach((item) => {\n        summableFields.forEach((field) => {\n            if (!item) return;\n            let cell = item[field.name];\n            switch (field.type) {\n                case 'checkbox':\n                    if (!sums[field.name]) sums[field.name] = [0, 0];\n                    cell ? sums[field.name][0]++ : sums[field.name][1]++;\n                    break;\n                case 'dropdown_values':\n                    if (!sums[field.name]) sums[field.name] = [];\n                    if (cell) sums[field.name].push(cell);\n                    break;\n                case 'date':\n                    if (typeOf(cell) === 'string' && cell.substring(0, 6) === 'count:') {\n                        sums[field.name] += parseInt(cell.substring(6));\n                    } else {\n                        sums[field.name] = '';\n                        return;\n                    }\n                    break;\n                default:\n                    if (!sums[field.name]) sums[field.name] = 0;\n                    sums[field.name] += cell;\n            }\n        });\n    });\n\n    let sumRow = {};\n\n    columns.forEach((column) => {\n        if (column.external_type === 'row_info.created') return;\n        let field = column.external_type;\n\n        let dropdownSums = [];\n        if (sums[field]) {\n            if (column.type === 'checkbox') {\n                sumRow[field] =\n                    collector.format(true, column, null, data) +\n                    ': ' +\n                    sums[field][0] +\n                    ' / ' +\n                    collector.format(false, column, null, data) +\n                    ': ' +\n                    sums[field][1];\n            } else if (\n                column.type === 'number' &&\n                !isNaN(sums[field]) &&\n                !Number.isInteger(sums[field])\n            ) {\n                let sumToFixed = sums[field].toFixed(2);\n                sumRow[field] = collector.format(sumToFixed, column, null, data);\n            } else if (column.type === 'dropdown_values') {\n                sums[field].forEach((opt) => {\n                    dropdownSums[opt] = (dropdownSums[opt] || 0) + 1;\n                });\n                sumRow[field] = collector.format(dropdownSums, column, null, data, pdfSumrow, form);\n            } else {\n                sumRow[field] = collector.format(sums[field], column, null, data, pdfSumrow);\n            }\n        } else {\n            sumRow[field] = '';\n        }\n    });\n\n    return [sumRow];\n}\n","define(\"tt4/utils/sumrow\", [\"exports\", \"@movenium/ember-movenium/utils/sumrow\"], function (_exports, _sumrow) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _sumrow.default;\n    }\n  });\n});\n","define(\"tt4/utils/validations\", [\"exports\", \"@movenium/ember-movenium/utils/validations\"], function (_exports, _validations) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _validations.default;\n    }\n  });\n});\n","/* eslint-disable ember/named-functions-in-promises */\n/* eslint-disable no-undef */\nexport function initializeVersionInfo(component) {\n    component.version = '';\n\n    if (typeof cordova !== 'undefined' && cordova !== null) {\n      cordova.getAppVersion.getVersionNumber().then((version) => {\n        component.version = `${component.intl.t('application.version')}: ${component.gui.version()} APP: ${version}`;\n      });\n    } else {\n      component.version = `${component.intl.t('application.version')}: ${component.gui.version()}`;\n    }\n  }\n","define(\"tt4/utils/weather\", [\"exports\", \"@movenium/ember-movenium/utils/weather\"], function (_exports, _weather) {\n  \"use strict\";\n\n  Object.defineProperty(_exports, \"__esModule\", {\n    value: true\n  });\n  Object.defineProperty(_exports, \"default\", {\n    enumerable: true,\n    get: function get() {\n      return _weather.default;\n    }\n  });\n});\n","// function to get default work permit type for a given country\nexport function getDefaultWorkPermitType(country) {\n    // if country is some eu or eea country, set work permit type to 'identification' else set it to 'residencepermit'\n    const countries = [\n        'at', // Austria\n        'be', // Belgium\n        'bg', // Bulgaria\n        'hr', // Croatia\n        'cy', // Cyprus\n        'cz', // Czech Republic\n        'dk', // Denmark\n        'ee', // Estonia\n        'fi', // Finland\n        'fr', // France\n        'de', // Germany\n        'gr', // Greece\n        'hu', // Hungary\n        'ie', // Ireland\n        'it', // Italy\n        'lv', // Latvia\n        'lt', // Lithuania\n        'lu', // Luxembourg\n        'mt', // Malta\n        'nl', // Netherlands\n        'pl', // Poland\n        'pt', // Portugal\n        'ro', // Romania\n        'sk', // Slovakia\n        'si', // Slovenia\n        'es', // Spain\n        'se', // Sweden\n        'is', // Iceland (eea country)\n        'li', // Liechtenstein (eea country)\n        'no', // Norway (eea country)\n    ];\n\n    return countries.includes(country) ? 'identification' : 'residencepermit';\n}\n","define('tt4/config/environment', [], function() {\n  var prefix = 'tt4';\ntry {\n  var metaName = prefix + '/config/environment';\n  var rawConfig = document.querySelector('meta[name=\"' + metaName + '\"]').getAttribute('content');\n  var config = JSON.parse(decodeURIComponent(rawConfig));\n\n  var exports = { 'default': config };\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n  return exports;\n}\ncatch(err) {\n  throw new Error('Could not read config from meta tag with name \"' + metaName + '\".');\n}\n\n});\n","\n          if (!runningTests) {\n            require(\"tt4/app\")[\"default\"].create({\"defaultLocale\":\"en\",\"CAPI3\":\"https://capi-3.moveniumprod.com\",\"CRM_PATH\":\"crm/registration\",\"BILLING_URL\":\"https://9fvuhya1mg.execute-api.eu-west-1.amazonaws.com/production\",\"STRIPE_KEY\":\"pk_live_y22ZSRKW1lMwpDqcgEQh86xB\",\"COLLECTOR_API_URL\":\"https://api.moveniumprod.com\",\"BEACONBACKENDURL\":\"https://7e4atcva26.execute-api.eu-west-1.amazonaws.com/prod\",\"ONLY_CC_URL\":\"https://cc.moveniumprod.com\",\"CC_URL\":\"https://cc.moveniumprod.com/trigger\",\"CC_TVEMP\":\"/tvemployer\",\"CC_TVREP\":\"/tvreport\",\"CC_URL_TVPER\":\"https://cc.moveniumprod.com/trigger/tvperson\",\"CC_URL_TVCARD\":\"https://cc.moveniumprod.com/trigger/tvcard\",\"CC_TVCARDIMAGE\":\"/tvcardimage\",\"CC_TVPERAPI\":\"/tvpersonapi\",\"TTAPI_HOST\":\"https://api.moveniumprod.com/ttapi\",\"TTAPI_FOLDER\":\"\",\"TTAPI\":\"https://api.moveniumprod.com/ttapi\",\"REALTTAPI\":\"\",\"TTAPI2\":\"https://ttapi2.moveniumprod.com\",\"TT4CAPIURL\":\"http://localhost:30001\",\"ID06_CARD_URL\":\"id06cardstatus\",\"ID06_VERIFY_URL\":\"id06-verify_new\",\"WEATHER_API\":\"https://cc.moveniumprod.com/trigger/foreca\",\"WEATHER_HISTORY_API\":\"https://cc.moveniumprod.com/trigger/foreca-history\",\"CDN_URL\":\"https://cdn.moveniumprod.com\",\"GM_KEY\":\"AIzaSyAs4VICTCYaHFGnkUgd1tCGGn8OktjIFOI\",\"ADMINTOOLURL\":\"https://at2-lambda.moveniumprod.com/\",\"ENTRY_URL\":\"http://localhost:4200/\",\"devMode\":false,\"SELFONBOARDURL\":\"https://api.moveniumprod.com/ttapi/code?code=\",\"password_recovery_callbackurl\":\"https://app.otta.fi/\",\"OWN_URL\":\"https://app.otta.fi\",\"COMMANDS_URL\":\"https://5ss3vkcrn1.execute-api.eu-west-1.amazonaws.com/production\",\"BLOCKS_URL\":\"http://localhost:3000\",\"GOOGLESSOURL\":null,\"VISMASSOURL\":\"https://ttapi.moveniumprod.com/vismasso/otta\",\"PRODUCT_UPDATES_URL\":\"https://hooks.zapier.com/hooks/catch/213559/fom51r\",\"STONLY_WID\":\"1e6aaf2b-fa22-11ed-871a-0a52ff1ec764\",\"ZENDESK_KEY\":\"44ad6b50-e954-4146-be77-d420069e2084\",\"name\":\"tt4\",\"version\":\"1.1.56+34030e7e\",\"BUILD_TIMESTAMP\":\"2026-03-20T11:26:35.994Z\"});\n          }\n        \n"]}